facilitator\(~~~~\) •\(~~~~\) Evaluator \(~~~~\) •\(~~~~\) analyst
Summary
\(~\)
The social and environmental challenges of our world are creating a critical moment in how we choose to value each other. Human rights around freedom of movement and access to basic needs are at the heart of how these challenges intersect and where I direct my work.
In my work, I love advancing artistic interventions and evaluations because they accomplish so much for all involved, and reconnect us to our common humanity and our world.
My many years of experience in technical consulting and cross-cultural teaching combine with my demonstrated and now educated research & evaluation skills to make me an outstanding knowledge creator and communicator.
Work Experience
~ Independent research & evaluation consultant ~
~ self ~
2023 Jun - present
Currently conducting a climate-finance desk investigation towards a first-of-its-kind public education & action resource, for a temporarily undisclosed client
Created options for a creative qualitative research and ecosystem mapping project with Massage Northern Ohio Practice-Based Research Network
Monitoring & Evaluation Assistant
Asylum Access
2024 Jan - present
Helping complete the transfer of evaluation & learning to local offices, including demystifying their unique client management system, defining indicators for large federal grants, and automating periodic reporting processes
VISTA Coordinator & Evaluator
Community Refugee and Immigration Services
2023 Jun - present
Brought forth a challenging qualitative, Principles-Focused evaluation effort aiming to bring the work of this always over-busy refugee services non-profit into a shared focus as well as shape future feedback
Independently managed this solo evaluation project, demonstrating all of my evaluation design, interview design and performance, and project and participant communication skills
Intern - Design, Monitoring, & Evaluation
International Center for Transitional Justice
2022 Jun - 2022 Aug
Independently completed well-received research, analysis, and writing on outcomes of art interventions in transitional justice and other art activism, from academic and applied literature and interviews
Used my report to collaborate with evaluation lead to define recommendations for future evaluation of art interventions, positioning them as justifiable to funders
Helped recreate my report as a simplified guidebook for field staff and as a presentation for headquarters staff, fitting their evaluation familiarity and needs
Contributed to design of ad hoc data collection tools such as surveys as part of unexpected assignments in response to program staff we supported
Research Assistant - Program Evaluation
The Evaluation Center at the University of Kentucky College of Education
2021 Jul - 2022 May
I continued the work that I began as an intern, transitioning to working as a project-based Research Assistant.
Part of evaluation & monitoring design for a successful, multi-million-dollar, safety & health intervention and capacity-building proposal, including the overarching indicator framework, final evaluation plan, and drafting amidst complex requirement details
Introduced our plan to non-evaluator project leads – developing the trainings & materials using iterative feedback from my team and helping deliver them to the varied program leads and earn their buy-in
Developed a general survey quality assessment framework with an equity-first lens, critically examining instrument components, team process, and purpose; included as part of a multipaper discussion at AEA Eval2022
Graduate Student - Research Methods towards Program Evaluation
University of Kentucky
2020 Aug - 2022 May
I now have a strong formal education driven by real-world solo & team practice, in quantitative and qualitative research, analysis, and evaluation with awareness of equity and contemporary approaches – clearly positioning my skills
With an out-of-school education group for oppressed youth, I completed a needs assessment evaluation towards planned program expansion, using interviews, focus groups, and document review with a small team
With an out-of-school YPAR & mentoring program, facilitated discussions to learn of and developed and modeled their theory of change, then provided a Developmental Evaluation plan to fit their dynamic work
In my environmental studies context work, I explored particularly the problems of state ‘securitization’ of the climate crisis and connections to immigration, in this justice-focused program that covered issues, policy, and communications
My capstone paper explained and implemented Developmental Evaluation in a hypothetical participatory journalism project around migration and connections between new and long-time residents in a mid-size US city
Intern - Program Evaluation
The Evaluation Center at the University of Kentucky College of Education
2021 Jan - 2021 Jul
Led research on standards and strategy for the evaluation approach for a highly successful, large non-profit grant, and contributed to designing qualitative & quantitative collection and analysis systems that unified evaluation across the teams
Helped create visuals and models that communicated our plan to the varied evaluator and non-evaluator audiences in the large project
Made a facilitation process to help program leads design abstract program models using natural language
University Language & Culture Instructor
~ three universities in central China
2015 Aug - 2019 Jul
I worked for 4 years as an English language and culture instructor at universities in central China.
I learned to quickly combine best practices with my own experience of my students, making my own curriculum and interactive presentations & activities for challenging classrooms of dozens of 19- and 20-year-olds of and in a different culture.
Working with hundreds of students each term, I created my own student and lesson management data system for tracking lesson progress and student marks, greatly improving my efficiency
Data applications designer and developer
~ Numerous local, regional, national, and global firms
2005 Sep - 2014 Aug
In the past, I have at times been a busy Microsoft applications designer and developer,
mostly full-time and typically a contractor, with some significant breaks around my other careers,
as creating business software was always a backup career and one that I do not seek work in.
I stood out for my technical and process design skills, and for my ability to learn quickly and bring new knowledge into teams and improve processes that smoothed work across collaborating groups.
Working as a short term contractor in many different organizations also provided great exposure to different industries and different sizes and compositions of teams, supporting my strategic thinking with lived experience with a multitude of people and processes.
My ability to take on technology tools, for data, for project management, and for communication, is also at a very high level thanks to years of doing so on a daily basis.
Member - Organizing Committee
Asian Festival Corporation
2009 Mar - 2014 May
I was at times a Member and at times Chair or Co-Chair of the Martial Arts Subcommittee, responsible for the martial arts demonstrations at one main stage and other special performances or media events.
This meant I was involved in many aspects of what is one of the largest outdoor events in Columbus, including volunteer and performer recruitment, marketing, scheduling, and people and venue management – all in service of raising awareness and appreciation of the diverse East and South Asian peoples in Columbus.
Licensed Massage Therapist
TrueMT & The Ohio State University
2007 Jan - 2013 Mar
For several years, I was a massage therapist, committed employee, and business owner,
as a busy part-time massage therapist.
Starting my own business deepened my awareness of what it takes to not only position an organization in a crowded business space but also go beyond engaging to educating partners and clients in a crowded and evolving knowledge space.
Member, Board of Directors / VP, Communications
AMTA Ohio Chapter
2009 May - 2011 May
I was a leader on this working board of a professional society in a time of great change, taking on difficult ethical problems and redirecting our six-figure budget more directly towards our members.
In our weekly operations, I managed all our online & print media, including media creation on my own as well as vendor management for our website and print newsletter.
I also helped extensively with event management, as we produced 4 - 6 smaller continuing education events each year, as well as our large annual conference with ~200 attendees and dozens of presenters and vendors.
This position was a significant learning point in organizational leadership, in a context of very contrasting interests across the leadership team.
There were both successes and setbacks in building bridges across generations and across expectations of ethics and the nature of service in leadership.
\(~\)
\(~\)
\(~\)
Education
\(~\)
M.S. – Research Methods in Education towards Program Evaluation
- also graduate certificate in Applied Statistics
- also graduate certificate in Applied Environmental and Sustainability Studies
\(~~~\) University of Kentucky; Lexington, KY, USA; 2022
\(~\)
\(~\)
additional education . . .
B.S. – Interdisciplinary: Health & Movement Science and Culture
The Ohio State University; Columbus, OH, USA; 2003, Cum Laude
\(~\)
Certificate - Cambridge CELTA – Certificate in English Language Teaching to Adults
Cambridge center US645; Chicago, IL, USA; 2016
\(~\)
Certificate in Massage Therapy
Columbus State Community College; Columbus, OH, USA; 2005
Languages
English – native speaker
Spanish – CEFR B1+
Chinese – CEFR B1
Strengthsfinder strengths
\(~\)
\(~\)
\(~\)
\(~\)
\(~\)
created with RMarkdown in RStudio ~
code download available as single RMD (top of page) as a demonstration :)
\(~\)
LS0tDQp0aXRsZTogIk1pY2hhZWwgTW9vcmUgLSByZXN1bcOpIg0Kb3V0cHV0Og0KICBib29rZG93bjo6aHRtbF9kb2N1bWVudDI6DQogICAgdG9jOiBmYWxzZQ0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KDQoNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQoNCg0KDQojIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSBTb21lIHNldHVwIGJlaGF2aW9yICAtIC0gLSAtIC0gLSAtIC0gLSAtDQoNCiMgISAhICEgISAhICENCg0KIy0tLSBjbGVhciB0aGUgZW52aXJvbm1lbnQgd2hlbiBydW5uaW5nIGludGVyYWN0aXZlbHkgLS0tDQoJIy0tIHdpcGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIC0tDQpybShsaXN0PWxzKCkpDQoJIy0tIHdpcGUgcGxvdCBvdXRwdXQgLS0NCnRyeShkZXYub2ZmKGRldi5saXN0KClbIlJTdHVkaW9HRCJdKSxzaWxlbnQ9VFJVRSkNCnRyeShkZXYub2ZmKCksc2lsZW50PVRSVUUpDQoJIy0tIHdpcGUgY29uc29sZSAtLQ0KY2F0KCJcMDE0IikNCg0KIyAhICEgISAhICEgIQ0KDQoNCg0KYGBgDQoNCg0KDQoNCmBgYHtyIGVjaG89RkFMU0V9DQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMoIGxpYnJhcnkobWFncml0dHIpICkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyggbGlicmFyeShtZXRhdGhpcykgKQ0KYGBgDQoNCg0KYGBge3IgZWNobz1GQUxTRX0NCm1ldGEoKSAlPiUNCiAgbWV0YV90YWcoDQogICAgICAicHJvcGVydHkiPSJvZzp0aXRsZSIsDQogICAgICBjb250ZW50PSJNaWNoYWVsIE1vb3JlIC0gcmVzdW3DqSINCiAgKQ0KDQptZXRhKCkgJT4lDQogIG1ldGFfdGFnKA0KICAgICAgInByb3BlcnR5Ij0ib2c6aW1hZ2UiLA0KICAgICAgY29udGVudD0iaHR0cHM6Ly9yZXN1bWUubWlrZXdtb29yZS5jb20vaW1hZ2VzL3dvcmRDbG91ZE9mTWlrZS5wbmciDQogICkNCg0KbWV0YSgpICU+JQ0KICBtZXRhX3RhZygNCiAgICAgICJwcm9wZXJ0eSI9Im9nOmRlc2NyaXB0aW9uIiwNCiAgICAgIGNvbnRlbnQ9IkkgcHJvZHVjZWQgYSBoeWJyaWQgdHJhZGl0aW9uYWwgJiB3ZWIgcmVzdW1lIHVzaW5nIFJNYXJrZG93biBpbiBSU3R1ZGlvDQphcyBib3RoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYW5kIGEgcHJlc2VudGF0aW9uIHNhbXBsZS4NClNlZSBvbmUgdHlwZSBvZiB3cml0aW5nIGFuZCBzb21lIGNsZWFuLCByZWxldmFudCB2aXN1YWxpemF0aW9ucyAiDQogICkNCg0KbWV0YSgpICU+JQ0KICBtZXRhX3RhZygNCiAgICAgICJwcm9wZXJ0eSI9Im9nOnVybCIsDQogICAgICBjb250ZW50PSJodHRwczovL3Jlc3VtZS5taWtld21vb3JlLmNvbS8iDQogICkNCg0KbWV0YSgpICU+JQ0KICBtZXRhX3RhZygNCiAgICAgICJuYW1lIj0iYXV0aG9yIiwNCiAgICAgIGNvbnRlbnQ9Ik1pa2UgTW9vcmUiDQogICkNCmBgYA0KDQoNCg0KDQo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iPg0KPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1OZXdzcmVhZGVyOndnaHRAMjAwJmZhbWlseT1UYWphd2FsOndnaHRAMzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4NCg0KDQpgYGB7Y3NzLCBlY2hvPUZBTFNFfQ0KDQo6cm9vdCB7DQoNCiAgICAtLW15QWNjZW50Qmx1ZTogIzFGNDk3RDsNCiAgICAgICAgDQp9DQoNCg0KDQoqIHsNCiAgZm9udC1mYW1pbHk6ICdUYWphd2FsJywgc2Fucy1zZXJpZjsNCn0NCg0KDQoNCnByZSB7DQoJb3ZlcmZsb3cteDogYXV0bzsNCiAgICBtYXJnaW4tYm90dG9tOiAyNXB4Ow0KfQ0KICANCnByZSBjb2RlIHsNCgl3b3JkLXdyYXA6IG5vcm1hbDsNCgl3aGl0ZS1zcGFjZTogcHJlOw0KCWZvbnQtc2l6ZTogMTFwdDsNCn0NCg0KcHJlIGNvZGUuaGxqcyB7DQoJZm9udC1zaXplOiAxMXB0Ow0KfQ0KDQp0YWJsZSB7DQogICAgbWFyZ2luLWJvdHRvbTozNXB4Ow0KfQ0KDQpib2R5IC5tYWluLWNvbnRhaW5lciB7DQoJbWFyZ2luLWxlZnQ6NXB4ICFpbXBvcnRhbnQ7DQoJbWFyZ2luLXJpZ2h0OjVweCAhaW1wb3J0YW50Ow0KCW1heC13aWR0aDo5NSUgIWltcG9ydGFudDsNCiAgICBvdmVyZmxvdy14OnNjcm9sbDsNCn0NCg0KDQoNCg0KaDEgew0KCW1hcmdpbi10b3A6MTUwcHg7DQoJbWFyZ2luLWJvdHRvbTowcHg7DQogICAgY29sb3I6IHZhcigtLW15QWNjZW50Qmx1ZSk7DQp9CQ0KDQouc2VjdGlvbi5sZXZlbDEudGFic2V0LnVubnVtYmVyZWQgaDEgew0KCW1hcmdpbi10b3A6NTBweDsNCn0NCg0KDQpoMiB7DQoJbWFyZ2luLXRvcDo4NXB4Ow0KCW1hcmdpbi1ib3R0b206MjVweDsNCglmb250LWZhbWlseTogJ1RhamF3YWwnLCBzYW5zLXNlcmlmOw0KfQ0KDQpoMyB7DQogICAgbWFyZ2luLXRvcDo4NXB4Ow0KICAgIG1hcmdpbi1ib3R0b206MHB4Ow0KICAgIGZvbnQtc2l6ZTogMzBweDsNCiAgICBmb250LWZhbWlseTogJ1RhamF3YWwnLCBzYW5zLXNlcmlmOw0KICAgIGNvbG9yOiB2YXIoLS1teUFjY2VudEJsdWUpOw0KfQ0KaDQgew0KICAgIG1hcmdpbi10b3A6NTVweDsNCiAgICBtYXJnaW4tYm90dG9tOjVweDsNCiAgICBtYXJnaW4tbGVmdDogNTBweDsNCiAgICBmb250LXNpemU6MjZweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogJ1RhamF3YWwnLCBzYW5zLXNlcmlmOw0KfQ0KaDUgewkJCQkJDQoJbWFyZ2luLXRvcDoyNXB4Ow0KCWZvbnQtc2l6ZToxM3B0Ow0KCWZvbnQtZmFtaWx5OiAnVGFqYXdhbCcsIHNhbnMtc2VyaWY7DQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0KfQ0KDQpoNiB7DQoJbWFyZ2luLXRvcDowcHg7DQogICAgbWFyZ2luLWJvdHRvbToyNXB4Ow0KICAgIG1hcmdpbi1sZWZ0OjI1MHB4Ow0KCWZvbnQtc2l6ZToyMHB4Ow0KCWZvbnQtZmFtaWx5OiAnVGFqYXdhbCcsIHNhbnMtc2VyaWY7DQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0KICAgIGNvbG9yOiB2YXIoLS1teUFjY2VudEJsdWUpOw0KfQ0KDQoNCg0KaDEudGl0bGUgew0KICAgIGRpc3BsYXk6IG5vbmU7DQp9DQoubXlUaXRsZSBwIHsNCgltYXJnaW4tdG9wOjI1cHggIWltcG9ydGFudDsNCgltYXJnaW4tYm90dG9tOjBweCAhaW1wb3J0YW50Ow0KCWZvbnQtZmFtaWx5OiAnTmV3c3JlYWRlcicsIHNlcmlmOw0KICAgIGZvbnQtc2l6ZTogNTJweDsNCiAgICBmb250LXdlaWdodDogbm9ybWFsOw0KICAgIGNvbG9yOiB2YXIoLS1teUFjY2VudEJsdWUpOw0KCWJvcmRlci1ib3R0b20tc3R5bGU6c29saWQ7DQogICAgYm9yZGVyLWJvdHRvbS13aWR0aDoxcHg7DQogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tbXlBY2NlbnRCbHVlKTsNCiAgICBwYWRkaW5nLWJvdHRvbTozcHg7DQogICAgd2lkdGg6NDIwcHg7DQogICAgbGluZS1oZWlnaHQ6MTsNCn0NCi5teVN1YnRpdGxlIHAgew0KICAgIGZvbnQtZmFtaWx5OiAnVGFqYXdhbCcsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOjI3cHg7DQogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsNCiAgICBjb2xvcjogdmFyKC0tbXlBY2NlbnRCbHVlKTsNCiAgICBwYWRkaW5nLXRvcDo4cHg7DQogICAgd2lkdGg6IDQ1MHB4Ow0KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgICBtYXJnaW4tYm90dG9tOjBweDsNCiAgICBtYXJnaW4tdG9wOjBweDsNCiAgICBtYXJnaW4tbGVmdDogMHB4Ow0KICAgIGxpbmUtaGVpZ2h0OjE7DQp9DQoubXlIZWFkZXJEYXRlIHAgew0KICAgIGZvbnQtZmFtaWx5OiAnTmV3c3JlYWRlcicsIHNlcmlmOyANCiAgICBmb250LXNpemU6MThweDsNCiAgICBmb250LXdlaWdodDogbm9ybWFsOw0KICAgIG1hcmdpbi10b3A6MTVweDsNCiAgICBtYXJnaW4tbGVmdDogMHB4Ow0KICAgIGxpbmUtaGVpZ2h0OjE7DQp9DQoNCg0KDQoNCg0KDQpwIHsNCglmb250LXNpemU6MjRweDsJDQogICAgbWFyZ2luLXRvcDo4cHgNCiAgICBmb250LWZhbWlseTogJ1RhamF3YWwnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQp9DQoubGluZS1ibG9jayB7DQogICAgZm9udC1zaXplOjIycHg7ICAgDQogICAgbWFyZ2luLXRvcDowcHg7DQogICAgdGV4dC1pbmRlbnQ6IGluaXRpYWw7DQogICAgZm9udC1mYW1pbHk6ICdUYWphd2FsJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KfQ0KbGkgew0KICAgIGZvbnQtc2l6ZToyMnB4Ow0KICAgIGZvbnQtZmFtaWx5OiAnVGFqYXdhbCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCn0NCg0KLmhlYWRlci1zZWN0aW9uLW51bWJlciB7DQogICAgcGFkZGluZy1yaWdodDozMHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAnVGFqYXdhbCcsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCn0NCg0KDQpkaXYucGFnZWR0YWJsZS13cmFwcGVyIHsNCiAgICBtYXJnaW4tYm90dG9tOjI1cHg7DQogICAgd2lkdGg6MTAwJTsNCiAgICBmb250LWZhbWlseTogJ1RhamF3YWwnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQogICAgDQp9DQoNCg0KDQoNCg0KDQoNCg0KLmMgew0KICBkaXNwbGF5OiBmbGV4Ow0KICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCn0NCg0KDQouYmJwIHsNCiAgbWFyZ2luLWxlZnQ6NTBweDsNCiAgcGFkZGluZy1sZWZ0OjI1cHg7DQogIGJvcmRlci1sZWZ0LXN0eWxlOnNvbGlkOw0KICBib3JkZXItbGVmdC13aWR0aDoycHg7DQogIGJvcmRlci1sZWZ0LWNvbG9yOnZhcigtLW15QWNjZW50Qmx1ZSk7DQogIHdpZHRoOjkwJTsNCn0NCi5iYnAgcCB7DQogIGZvbnQtd2VpZ2h0OiA1MDA7DQogIGZvbnQtc2l6ZToyNHB4Ow0KfQ0KDQoNCi5iYnBub2wgew0KICAgIG1hcmdpbi1sZWZ0OjUwcHg7DQogICAgcGFkZGluZy1sZWZ0OjIwcHg7DQogICAgd2lkdGg6OTAlOw0KfQ0KLmJicG5vbCBwIHsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIGZvbnQtc2l6ZTogMjRweDsNCn0NCi5iYnBub2wgdWwgew0KICAgIG1hcmdpbi10b3A6IDIwcHg7ICAgDQp9DQouYmJwbm9sIHVsIGxpIHsNCiAgICBtYXJnaW4tdG9wOiAzcHg7DQogICAgZm9udC13ZWlnaHQ6IDUwMDsNCiAgICBmb250LXNpemU6IDI0cHg7DQp9DQoNCg0KDQoub25ldGFiIHsNCiAgICBtYXJnaW4tbGVmdDo1MHB4Ow0KICAgIG1hcmdpbi10b3A6N3B4Ow0KICAgIGxpbmUtaGVpZ2h0OjIwMCU7DQp9DQoNCi5vbmV0YWJOUyB7DQogICAgbWFyZ2luLWxlZnQ6NTBweDsNCiAgICBtYXJnaW4tdG9wOjBweDsNCiAgICBsaW5lLWhlaWdodDoyMDAlOw0KfQ0KDQoub25ldGFiWFMgew0KICAgIG1hcmdpbi1sZWZ0OjUwcHg7DQogICAgbWFyZ2luLXRvcDoxNXB4Ow0KICAgIGxpbmUtaGVpZ2h0OjIwMCU7DQp9DQoNCi50d290YWIgew0KICAgIG1hcmdpbi1sZWZ0OjEwMHB4Ow0KICAgIG1hcmdpbi10b3A6NXB4Ow0KfQ0KLnR3b3RhYlNlbWlUaWdodCB7DQogICAgbWFyZ2luLWxlZnQ6MTAwcHg7DQogICAgbWFyZ2luLXRvcDowcHg7DQogICAgbWFyZ2luLWJvdHRvbTowcHg7DQogICAgbGluZS1oZWlnaHQ6MjAwJTsNCn0NCg0KDQoudGlnaHQgew0KICAgIG1hcmdpbi10b3A6IDBweDsNCiAgICBtYXJnaW4tYm90dG9tOiAwcHg7DQogICAgcGFkZGluZy10b3A6IDBweDsNCiAgICBwYWRkaW5nLWJvdHRvbTogMHB4Ow0KICAgIGxpbmUtaGVpZ2h0OiAxMDAlOw0KfQ0KLnRpZ2h0IHAgew0KICAgIG1hcmdpbi10b3A6IDBweDsNCiAgICBtYXJnaW4tYm90dG9tOiAwcHg7DQogICAgcGFkZGluZy10b3A6IDBweDsNCiAgICBwYWRkaW5nLWJvdHRvbTogMHB4Ow0KICAgIGxpbmUtaGVpZ2h0OiAxMDAlOw0KfQ0KDQoNCg0KLnRpZ2h0MiB7DQogICAgbWFyZ2luLXRvcDogMHB4Ow0KICAgIG1hcmdpbi1ib3R0b206IDBweDsNCiAgICBwYWRkaW5nLXRvcDogMHB4Ow0KICAgIHBhZGRpbmctYm90dG9tOiAwcHg7DQogICAgbGluZS1oZWlnaHQ6IDc1JTsgIA0KfQ0KLnRpZ2h0MiBwIHsNCiAgICBtYXJnaW4tdG9wOiAwcHg7DQogICAgbWFyZ2luLWJvdHRvbTogMHB4Ow0KICAgIHBhZGRpbmctdG9wOiAwcHg7DQogICAgcGFkZGluZy1ib3R0b206IDBweDsNCiAgICBsaW5lLWhlaWdodDogNzUlOyANCn0NCg0KDQouYml0U21hbGwgcCB7DQogICAgZm9udC1zaXplOiAyMnB4Ow0KfQ0KDQoNCi5qIHsNCiAgICB0ZXh0LWFsaWduOmp1c3RpZnk7DQp9DQoNCg0KZGl2IGRldGFpbHMgc3VtbWFyeSB7DQogICAgZm9udC1zaXplOiAyMnB4Ow0KICAgIG1hcmdpbi1ib3R0b206IDI1cHg7DQogICAgbWFyZ2luLWxlZnQ6IDI1cHg7DQp9DQpkaXYuYmJwbm9sIGRldGFpbHMgc3VtbWFyeSB7DQogICAgZm9udC1zaXplOiAyNHB4Ow0KICAgIGNvbG9yOiB2YXIoLS1teUFjY2VudEJsdWUpOw0KICAgIG1hcmdpbi1ib3R0b206IDI1cHg7DQogICAgbWFyZ2luLWxlZnQ6IDI1cHg7DQp9DQoNCi5uYXYtdGFicyB7DQogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweDsNCn0NCi50YWItY29udGVudCB7DQogICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOw0KICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAycHg7DQogICAgYm9yZGVyLWxlZnQtY29sb3I6ICNkZGQ7DQogICAgcGFkZGluZy1sZWZ0OiAxNXB4Ow0KfQ0KLm5hdi10YWJzIGxpLmFjdGl2ZSB7DQogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweDsNCiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7DQogICAgDQogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoubmF2LXRhYnMgbGkuYWN0aXZlIGEgew0KICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAycHg7DQogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4Ow0KICAgIA0KICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50Ow0KfQ0KLm5hdi10YWJzIGxpLmFjdGl2ZSBhOmZvY3VzIHsNCiAgICBib3JkZXItbGVmdC13aWR0aDogMnB4Ow0KICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDsNCiAgICANCiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCi5uYXYtdGFicyBsaS5hY3RpdmUgYTpob3ZlciB7DQogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweDsNCiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7DQogICAgDQogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoubmF2LXRhYnMgbGkgYSB7DQogICAgYm9yZGVyLWxlZnQtd2lkdGg6IDJweDsNCiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7DQogICAgDQogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoNCg0KYmxvY2txdW90ZSB7DQogICAgbWFyZ2luLWxlZnQ6NTBweDsNCiAgICBtYXJnaW4tdG9wOjdweDsNCiAgICBwYWRkaW5nLXRvcDogMHB4Ow0KICAgIHBhZGRpbmctYm90dG9tOiAwcHg7DQogICAgcGFkZGluZy1yaWdodDogMHB4Ow0KICAgIHBhZGRpbmctbGVmdDogMTVweDsNCiAgICBib3JkZXItbGVmdC13aWR0aDogMnB4Ow0KICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjMzMzOw0KICAgIGxpbmUtaGVpZ2h0OjE3NSU7DQogICAgd2lkdGg6IDc1JTsNCn0NCmJsb2NrcXVvdGUgcCB7DQogICAgY29sb3I6ICMxMTE7DQogICAgZm9udC1zdHlsZTogaXRhbGljOw0KfQ0KDQoNCg0KDQoNCi53b3JkY2xvdWQyLmh0bWwtd2lkZ2V0Lmh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCB7DQogICAgd2lkdGg6IDM1JSAgIA0KfQ0KDQoubWFudWFsRmxleGJveCB7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOw0KICAgIGp1c3RpZnktY29udGVudDpzcGFjZS1ldmVubHk7DQp9DQoNCi5tYW5GbGV4MnN1bW1hcnlMZWZ0IHsNCiAgICB3aWR0aDoxMDAlOw0KfQ0KLm1hbkZsZXgyc3VtbWFyeVJpZ2h0IHsNCiAgICB3aWR0aDoxMDAlOw0KICAgIGp1c3RpZnktY29udGVudDpjZW50ZXI7DQogICAgdGV4dC1hbGlnbjpjZW50ZXI7DQp9DQoNCi5tYW5GbGV4MmNocm9uVGltZWxpbmUgew0KICAgIGZsZXg6IDAgMCAxNzVweDsNCiAgICBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOw0KICAgIHRleHQtYWxpZ246Y2VudGVyOw0KfQ0KLm1hbkZsZXgyY2hyb25UaW1lbGluZSBwIGltZyB7DQogICAgd2lkdGg6IDE3NXB4Ow0KfQ0KLm1hbkZsZXgyY2hyb25SZXN1bWVUZXh0IHsNCiAgICBmbGV4OiAxIDEgMTAwJTsNCn0NCg0KLm1hbnVhbEZsZXhib3hTdHJlbmd0aHNGaW5kZXIgew0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsNCiAgICBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtZXZlbmx5Ow0KICAgIHRleHQtYWxpZ246Y2VudGVyOw0KfQ0KDQoNCg0KLnItY29kZS1jb2xsYXBzZS5jb2xsYXBzZS5pbiB7DQogICAgdGV4dC1hbGlnbjpsZWZ0Ow0KICAgIHdpZHRoOjEwMCU7DQp9DQoNCg0KDQoNCkBtZWRpYShtaW4td2lkdGg6NzY4cHgpIHsNCiAgICANCiAgICBib2R5IC5tYWluLWNvbnRhaW5lciB7DQogICAgCW1hcmdpbi1sZWZ0OjUwcHggIWltcG9ydGFudDsNCiAgICAJbWFyZ2luLXJpZ2h0OjUwcHggIWltcG9ydGFudDsNCiAgICAJbWF4LXdpZHRoOjkwJSAhaW1wb3J0YW50Ow0KICAgICAgICBvdmVyZmxvdy14OnNjcm9sbDsNCiAgICB9DQogICAgICAgIA0KICAgIC5tYW51YWxGbGV4Ym94IHsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgZmxleC1mbG93OiByb3c7DQogICAgICAgIGp1c3RpZnktY29udGVudDpzcGFjZS1ldmVubHk7DQogICAgfQ0KICAgIA0KICAgIC5tYW5GbGV4MnN1bW1hcnlMZWZ0IHsNCiAgICAgICAgd2lkdGg6IDY1JTsNCiAgICB9DQogICAgLm1hbkZsZXgyc3VtbWFyeVJpZ2h0IHsNCiAgICAgICAgd2lkdGg6IDM1JTsgIA0KICAgICAgICBtYXJnaW4tbGVmdDo0MHB4Ow0KICAgIH0NCiAgICANCiAgICAgICAgDQogICAgLm1hbkZsZXgyY2hyb25UaW1lbGluZSB7DQogICAgICAgIGZsZXg6IDAgMCAxNzVweDsNCiAgICB9DQogICAgLm1hbkZsZXgyY2hyb25SZXN1bWVUZXh0IHsNCiAgICAgICAgZmxleDogMTsNCiAgICAgICAgbWFyZ2luLWxlZnQ6MTVweDsNCiAgICB9DQoNCg0KICAgIC5tYW51YWxGbGV4Ym94U3RyZW5ndGhzRmluZGVyIHsNCiAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgZmxleC1mbG93OiByb3c7DQogICAgICAgIGp1c3RpZnktY29udGVudDpzcGFjZS1ldmVubHk7DQogICAgfQ0KICAgICAgDQogICAgDQogICAgLnItY29kZS1jb2xsYXBzZS5jb2xsYXBzZS5pbiB7DQogICAgICAgIHRleHQtYWxpZ246bGVmdDsNCiAgICAgICAgbWF4LXdpZHRoOjMwMHB4Ow0KICAgIH0gDQogICAgDQogICAgDQp9DQoNCg0KYGBgDQoNCg0KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wLCB3aWR0aD1kZXZpY2Utd2lkdGgiPg0KDQoNCjo6OiBteVRpdGxlDQoNCk1pY2hhZWwgTW9vcmUsIE1TDQoNCjo6Og0KDQo6OjogbXlTdWJ0aXRsZQ0KDQpmYWNpbGl0YXRvciR+fn5+JOKAoiR+fn5+JCoqRXZhbHVhdG9yKiokfn5+fiTigKIkfn5+fiRhbmFseXN0DQoNCjo6Og0KDQo6OjogbXlIZWFkZXJEYXRlDQoNCmByIFN5cy5EYXRlKClgDQoNCjo6Og0KDQoNCg0KDQoNCg0KOjo6OiBtYW51YWxGbGV4Ym94DQogIDwhLS0gLS0tIGxldCdzIHVzZSBjb2x1bW5zIC0tLSAtLT4NCg0KOjo6IG1hbkZsZXgyc3VtbWFyeUxlZnQNCg0KDQojIyMgU3VtbWFyeQ0KDQokfiQgIA0KDQoNCjo6Ojogag0KDQo6Ojo6OiBiaXRTbWFsbA0KDQoNClRoZSBzb2NpYWwgYW5kIGVudmlyb25tZW50YWwgY2hhbGxlbmdlcyBvZiBvdXIgd29ybGQgYXJlIGNyZWF0aW5nIGEgY3JpdGljYWwgbW9tZW50IGluIGhvdyB3ZSBjaG9vc2UgdG8gdmFsdWUgZWFjaCBvdGhlci4gIEh1bWFuIHJpZ2h0cyBhcm91bmQgZnJlZWRvbSBvZiBtb3ZlbWVudCBhbmQgYWNjZXNzIHRvIGJhc2ljIG5lZWRzIGFyZSBhdCB0aGUgaGVhcnQgb2YgaG93IHRoZXNlIGNoYWxsZW5nZXMgaW50ZXJzZWN0IGFuZCB3aGVyZSBJIGRpcmVjdCBteSB3b3JrLg0KDQpJbiBteSB3b3JrLCBJIGxvdmUgYWR2YW5jaW5nIGFydGlzdGljIGludGVydmVudGlvbnMgYW5kIGV2YWx1YXRpb25zIGJlY2F1c2UgdGhleSBhY2NvbXBsaXNoIHNvIG11Y2ggZm9yIGFsbCBpbnZvbHZlZCwgYW5kIHJlY29ubmVjdCB1cyB0byBvdXIgY29tbW9uIGh1bWFuaXR5IGFuZCBvdXIgd29ybGQuDQoNCk15IG1hbnkgeWVhcnMgb2YgZXhwZXJpZW5jZSBpbiB0ZWNobmljYWwgY29uc3VsdGluZyBhbmQgY3Jvc3MtY3VsdHVyYWwgdGVhY2hpbmcgY29tYmluZSB3aXRoIG15IGRlbW9uc3RyYXRlZCBhbmQgbm93IGVkdWNhdGVkIHJlc2VhcmNoICYgZXZhbHVhdGlvbiBza2lsbHMgdG8gbWFrZSBtZSBhbiBvdXRzdGFuZGluZyBrbm93bGVkZ2UgY3JlYXRvciBhbmQgY29tbXVuaWNhdG9yLg0KDQoNCjo6Ojo6DQoNCjo6OjoNCg0KOjo6DQoNCg0KDQoNCjo6OiBtYW5GbGV4MnN1bW1hcnlSaWdodA0KDQoNCjo6Ojoge3N0eWxlPSJtYXJnaW4tdG9wOjE1MHB4OyBtYXJnaW4tbGVmdDoyNXB4OyJ9DQoNCg0KIVtdKC4vaW1hZ2VzL3dvcmRjbG91ZF9hc1N0YXRpYy5wbmcpDQoNCg0KDQoNCg0KDQpgYGB7ciBDcmVhdGVXb3JkY2xvdWQsIGV2YWw9RkFMU0UsIGVjaG89RkFMU0UsIGNhY2hlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcud2lkdGg9NC42NSwgZmlnLmhlaWdodD0zLjUsIHNjcmVlbnNob3QuZm9yY2U9VFJVRSwgc2NyZWVuc2hvdC5vcHRzPWxpc3QoY2xpcHJlY3Q9YygwLDAsNDQ2LDMzNikpfQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLg0KIw0KIyA+Pj4+Pj4gVEhJUyBSRUNSRUFURVMgQSBXT1JEQ0xPVUQgQVMgSU4gVEhFIFNUQVRJQyBJTUFHRSBBQk9WRQ0KIw0KIyBUaGlzIGlzIGEgc2ltcGxlIHZpc3VhbGl6YXRpb24gb2Ygd29yZCBjb3VudHMNCiMgICBtYWRlIGZyb20gdGhlIHRleHQgb2YgdGhpcyB2ZXJ5IFJNYXJrZG93biBmaWxlIGl0c2VsZiAtDQojICAgZ2l2aW5nIGEgdmVyeSByb3VnaCBidXQgZnVuIGxvb2sgYXQgaG93IHdlIGNhbiBkZXNjcmliZSBtZS4NCiMNCiMgICBUaGlzIGZpbGUgaXNuJ3QgYSBncmVhdCBzb3VyY2Ugb2YgZGF0YSwgc2luY2UgaXQgaXMNCiMgICAgICAgbm90IHNvbWVob3cgcmVwcmVzZW50YXRpdmUsIGJ1dCBvZiBjb3Vyc2UgbWFudWZhY3R1cmVkDQojICAgICAgIHRvIHRlbGwgYSBzdG9yeS4NCiMNCiMgICBCdXQgaXQgaXMgYSBuaWNlIGV4YW1wbGUgb2YNCiMgICAgICAgcXVhbGl0YXRpdmUgdmlzdWFsaXphdGlvbiAmIGFuYWx5c2lzLA0KIyAgICAgICBhbmQgd2UgY2FuIHNheSBpdCBjZXJ0YWlubHkgc2hvd3MgdGhlIHdvcmRzIEkgaGF2ZQ0KIyAgICAgICB1c2VkIHRvIGRlc2NyaWJlIG15c2VsZiBpbiBhIHJlc3VtZSBvdmVyIHRpbWUuDQojDQojICAgSSdtIHJlYWR5IHRvIGJ1aWxkIHVwIHRoZSBjb3VudCBvZiAiZXZhbHVhdGlvbiIhIQ0KIw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLg0KDQojICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIw0KIy0tLSB0aGlzIHVzZSBvZiB3b3JkY2xvdWQyICYgdG0gJiB0aWR5dGV4dA0KIyAgICAgICAgICAgdGFrZW4gZnJvbSBodHRwczovL2RhdGF0cmlja3MuY28udWsvd29yZGNsb3Vkcy1pbi1yDQojICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIyAjICMgIw0KDQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMobGlicmFyeShyZWFkcikpDQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMobGlicmFyeSh3b3JkY2xvdWQyKSkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KHRtKSkNCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KHRpZHl0ZXh0KSkNCg0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkoaHRtbHdpZGdldHMpKQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkod2Vic2hvdCkpICAgICMgPDw8ICEhISAgYWxzbyByZXF1aXJlcyBwaGFudG9tLmpzIG9uIHRoZSBydW4gbWFjaGluZSAhISENCg0KDQojLS0tIFRha2UgYWxsIHRoZSB0ZXh0IGZyb20gdGhpcyBmaWxlIGl0c2VsZiAtLS0NCm15RmlsZVRleHQgPC0gcmVhZHI6OnJlYWRfZmlsZSgiaW5kZXguUm1kIikNCg0KIy0tLSBUdXJuIGl0IGludG8gYSAiQ29ycHVzIiBvYmplY3QgZm9yIHVzZSB3aXRoIHRtIGFuZCB0aGVuIHdvcmRjbG91ZDIgLS0tDQpwcmVEb2NzIDwtIFZlY3RvclNvdXJjZShteUZpbGVUZXh0KQ0KZG9jcyA8LSBDb3JwdXMocHJlRG9jcykNCg0KDQojLS0tIFdlIHRoZW4gY2xlYW4gb3V0IHVuaGVscGZ1bCBjaGFyYWN0ZXJzIGFuZCB3b3JkcyB3aXRoIHRtIGJlZm9yZSBjb3VudGluZyBmcmVxdWVuY2llcyAtLS0NCg0KICAgICMtLSBVc2UgdG0gdG8gcmVtb3ZlIGNoYXJhY3RlcnMgd2UgZG9uJ3Qgd2FudCB0byBjb3VudCAtLQ0KZG9jcyA8LSB0bV9tYXAoZG9jcywgcmVtb3ZlUHVuY3R1YXRpb24pICNyZW1vdmUgcHVuY3R1YXRpb24NCmRvY3MgPC0gdG1fbWFwKGRvY3MsIHJlbW92ZU51bWJlcnMpICNyZW1vdmUgbnVtYmVycw0KDQogICAgIy0tIFVzZSB0bSB0byBjb252ZXJ0IGFsbCB0byBsb3dlcmNhc2UgYmVjYXVzZSB3ZSB3b24ndCBjb25zaWRlciBjYXBpdGFscyBhcyBzZXBhcmF0aW5nIHdvcmRzIC0tDQpkb2NzIDwtIHRtX21hcChkb2NzLCB0b2xvd2VyKSAjY29udmVydCBhbGwgY2hhcmFjdGVycyB0byBsb3dlciBjYXNlDQoNCg0KICAgICMtLSBHbyBhaGVhZCBhbmQgcmVtb3ZlIHRoZSBzdGFuZGFyZCBleGNsdXNpb24gd29yZHMgLSAic3RvcHdvcmRzIiAtIGFjY29yZGluZyB0byB0bSAtLQ0KZG9jcyA8LSB0bV9tYXAoZG9jcywgcmVtb3ZlV29yZHMsIHN0b3B3b3JkcygiZW5nbGlzaCIpKSAjcmVtb3ZlIGNvbW1vbiB3b3Jkcw0KDQogICAgIy0tIEFuZCB0aGVuIEknbGwgYWxzbyByZW1vdmUgb3RoZXIgd29yZHMgZG9taW5hdGluZyB0aGUgZnJlcXVlbmN5IGNvdW50IHRoYXQgYXJlbid0IGludGVyZXN0aW5nIC0tDQoNCiAgICAgICAgIy0gbWFudWFsbHkgcmVtb3ZlIHRoZXNlIGhpZ2gtZnJlcXVlbmN5IHdvcmRzIHRoYXQgYXJlIGp1c3Qga2V5d29yZHMgZnJvbSB0aGUgbWFya2Rvd24gJiBzdHlsaW5nIC0NCm15TWFudWFsRXhjbHVzaW9ucyA8LSBjKCJ3b3JkY2xvdWQiLCAidGV4dGFsaWduY2VudGVyIiwgImRmb3V0IiwgIm1hbmZsZXhjaHJvbnJlc3VtZXRleHQiLCAibWFudWFsZmxleGJveHN0cmVuZ3Roc2ZpbmRlciIsICJuYnNwbmJzcOKAom5ic3BuYnNwIiwgIm1hbnVhbGZsZXhib3giLCAibWFyZ2lubGVmdCIsICJtYXJnaW5yaWdodCIsICJtYW5mbGV4c3VtbWFyeWxlZnQiLCAibWFuZmxleHN1bW1hcnlyaWdodCIsICJtYW5mbGV4Y2hyb250aW1lbGluZSIsICJ2YXJteWFjY2VudGJsdWUiLCAibGlhY3RpdmUiLCAidHJhbnNwYXJlbnQiLCAiZWxlbWVudGJsYW5rIiwgImNvdW50IiwgImJicCIsICJvbmV0YWIiLCAidHdvdGFiIiwgIm1ldGF0YWciLCAicGFkZGluZ2JvdHRvbSIsICJwYWRkaW5ndG9wIiwgIm1hcmdpbmJvdHRvbSIsICJtYXJnaW50b3AiLCAibXltYW51YWxleGNsdXNpb25zIiwgICJvbmV0YWJ4cyIsIm9uZXRhYm5zIiwiY2xpY2tzdW1tYXJ5Iiwic3VtbWFyeW1vcmUiLCJtYXJnaW50b3BweCIsInNhbnNzZXJpZiIsInRhamF3YWwiLCJzdW1tYXJ5Y2xpY2siLCJmb250c2l6ZSIsIm1hcmdpbmJvdHRvbXB4IiwibWFyZ2lubGVmdHB4Iiwic3R5bGV3aWR0aCIsInRpZ2h0IiwiYm9yZGVybGVmdHdpZHRoIiwiY29sdW1ucyIsImZvbnRzaXplcHgiLCJsaW5laGVpZ2h0Iiwic21hbGwiLCJiYnBub2wiLCJtYXJnaW5ib3R0b20iLCJmb250d2VpZ2h0IiwibWFyZ2ludG9wIiwibmF2dGFicyIsIm5vcm1hbCIsIndpZHRoIiwiYm9yZGVyYm90dG9tY29sb3IiLCJib3JkZXJib3R0b213aWR0aCIsImZsZXgiLCJmb250ZmFtaWx5IiwicGFydCIsIm9uZXRhYiIsInRtbWFwZG9jcyIsImRvY3MiLCJteXBsb3QiLCJzdHlsZWRpc3BsYXkiLCJzaXplIikNCiAgICAgICAgIy0gbWFudWFsbHkgcmVtb3ZlIHRoZXNlIGhpZ2gtZnJlcXVlbmN5IHdvcmRzIHRoYXQgYXJlIHNpbXBseSBub3QgZGVzY3JpcHRpdmUgb3IgcmVkdW5kYW50IHRvIG90aGVycyAtDQpteU1hbnVhbEV4Y2x1c2lvbnMgPC0gYyhteU1hbnVhbEV4Y2x1c2lvbnMsICJzdXBwcmVzc3BhY2thZ2VzdGFydHVwbWVzc2FnZXMiLCAiZWNob2ZhbHNlIiwgImVkdWNhdGlvbiIsICJ1bml2ZXJzaXR5IiwgInR3b3RhYnNlbWl0aWdodCIsICJkaXYiLCAibWFudWFsbHkiLCAibm93IiwgIm9uZSIsICJjaGFyYWN0ZXJzIiwgImdlb21saW5lYWVzeCIsICJqdXN0aWZ5Y29udGVudHNwYWNlZXZlbmx5IiwgIm1vb3JlIiwgInBsYW4iLCAicHJlIiwgInJlc3VtZSIsICJzaW1wbGUiLCAidXNhIiwgImNvbnZlcnQiLCAiZmluYWxseSIsICJmcmVxdWVuY2llcyIsICJncmVhdCIsICJoZWxwZWQiLCAiaW50ZXJuIiwgImtleXdvcmRzIiwgImxhcmdlIiwgImxhc3QiLCAibGluZXMiLCAibWVtYmVyIiwgIm5lZWRzIiwgInBsb3QiLCAicG9zaXRpb24iLCAicHJvY2VzcyIsICJybWFya2Rvd24iLCAic2V0IiwgInN0YWZmIiwgInN0eWxlbWFyZ2ludG9wcHgiLCAidGVybSIsICJ0ZXh0IiwgInRpbWVzIiwgInRvcCIsICJ3aXBlIiwgIuKAkyIsICLilowiLCAiY2FuIiwgIm1ldGEiLCAiZGlzcGxheSIsICJoaWdoZnJlcXVlbmN5IiwgImZyZXFlbmNpZXMiLCAiSSIsImNsaWNrIiwidXNpbmciLCJkZXZlbG9wZWQiLCJkZXNpZ25lZCIsIuKAkyIsIuKAlCIsIuKAkyIsIm5ldyIsImNvbnRyYWN0b3IiLCJqYW4iLCJmZWIiLCJtYXIiLCJhcHIiLCJtYXkiLCJqdW4iLCJqdWwiLCJhdWciLCJzZXAiLCJvY3QiLCJub3YiLCJkZWMiLCJ3b3JrIiwib2hpbyIsImluY2x1ZGluZyIsInByb2dyYW0iLCJzdW1tYXJ5IiwiY2VudGVyIiwiY2hhcHRlciIsIndlbGwiLCJhcm91bmQiLCJmaXJzdCIsInN1Y2Nlc3NmdWxseSIsInRha2UiLCJ0YWtpbmciLCJ5ZWFyIiwiZXZlbnQiLCJpbnN1cmFuY2UiLCJuYXRpb253aWRlIiwic3RhdGUiLCJzdG9yZWQiLCJtYXNzYWdlIiwidHJ1ZW10IiwibWl4IiwicHJlc2VudCIsIm5vcnRoIiwiYnJhbmRzIiwiY29sdW1idXMiLCJjZXJ0aWZpZWQiLCJhbXRhb2hpbyIsImVuZCIsImV4cGVzaXRlIiwiZmlybXMiLCJsZXRzIiwibWFueSIsInR3byIsIndvcmRzIiwidXNlIiwidGltZSIsInJlbW92ZSIsInVzZWQiLCJhY3Jvc3MiLCJhbWVyaWNhIiwiY29sb3IiLCJkaWZmaWN1bHQiLCJldmVyeSIsImRvY3VtZW50Iiwia2VudHVja3kiLCJmdWxsdGltZSIsImFsc28iLCJjYXJlZXIiLCJjbGFzc3Jvb20iLCJjb21taXR0ZWUiLCJ0b3dhcmRzIiwiZ3JvdXBzIiwic2V2ZXJhbCIsImZpbGUiLCJtYWRlIiwidG9vayIsIm91dHB1dCIsInBhcnR0aW1lIiwib2NjYXNpb25hbCIsICJkaWZmZXJlbnQiLCAiaW1wb3J0YW50IiwgImltcGxlbWVudGVkIiwgIm9mZmljZSIsICJ3b3JraW5nIiwgInRoZXJhcHkiLCAidGhlcmFwaXN0IiwgImNlcnRpZmljYXRlIiwgImNvbnRpbnVpbmciLCAiaHViIiwgImFwcHMiKQ0KICAgICAgICAjICEhIC0gbWFudWFsbHkgcmVtb3ZlIHRoZXNlIGhpZ2gtZnJlcXVlbmN5IHdvcmRzIHRoYXQgYXJlIHRlY2hub2xvZ3kga2V5d29yZHMgSSdtIGludGVudGlvbmFsbHkgc2tpcHBpbmcgLQ0KbXlNYW51YWxFeGNsdXNpb25zIDwtIGMobXlNYW51YWxFeGNsdXNpb25zLCAic2VydmVyIiwic3FsIiwiZGF0YSIsInNzaXMiLCJ0c3FsIiwiYXNwIiwid2ViIiwiY29tIiwibmV0IiwiZ29vZ2xlIiwiYXBwbGljYXRpb24iLCJhc3BuZXQiLCJ4bWwiLCJldGwiLCJmb3JtcyIpDQogICAgICAgICAgICAjIF5eXiB0aGlzIGxhc3Qgb25lIGlzIHdoZXJlIEknbSAiY2hlYXRpbmciIGEgbGl0dGxlIHRvIGRyb3AgdGVjaG5vbG9neSBrZXl3b3JkcyBmcm9tIG15IHBhc3QNCg0KICAgICMtLSBBbmQgdXNlIG15IG1hbnVhbCBleGNsdXNpb24gbGlzdCBub3cgYWdhaW5zdCB0aGUgQ29ycHVzIC0tDQpkb2NzIDwtIHRtX21hcChkb2NzLCByZW1vdmVXb3JkcywgbXlNYW51YWxFeGNsdXNpb25zKSAjcmVtb3ZlIGFueSBhZGRpdGlvbmFsIHNwZWNpZmljIHdvcmRzDQoNCiAgICAjLS0gRmluYWxseSwgd2UgYWxzbyByZW1vdmUgd2hpdGVzcGFjZSAtLQ0KZG9jcyA8LSB0bV9tYXAoZG9jcywgc3RyaXBXaGl0ZXNwYWNlKSAjcmVtb3ZlIHdoaXRlc3BhY2VzDQoNCg0KDQojLS0tIFRoZW4gZmluYWxseSB3ZSB1c2UgdG0gdG8gY3JlYXRlIHRoZSBtYXRyaXggb2Ygd29yZHMgYW5kIGZyZXF1ZW5jaWVzIC0tLQ0KZHRtIDwtIERvY3VtZW50VGVybU1hdHJpeChkb2NzKQ0KDQojLS0tIEFuZCB0aGVuIHdpdGggdGlkeSB3ZSBjb252ZXJ0IHRoZSBkb2N1bWVudCB0ZXJtIG1hdHJpeCBpbnRvIGEgZGF0YWZyYW1lIGFuZCBzb3J0IGJ5IGZyZXF1ZW5jeSAtLS0NCmRmIDwtIHRpZHkoZHRtKQ0KZGYgPC0gZGZbb3JkZXIoLWRmJGNvdW50KSxjKDIsMyldDQoNCg0KDQojLS0tIEkgZnVydGhlciByZWZpbmUgdGhlIGxpc3QgdG8gYSByZWFzb25hYmxlIHRvcCBzZXQsIHRvZGF5IHRob3NlIG9mIGF0IGxlYXN0IDMgLS0tDQpkZk91dCA8LSBkZltkZiRjb3VudD4yLF0NCiMgLS0tICBJIGRyb3AgdGhlIHVucHJpbnRhYmxlIGNoYXJhY3RlciBJIGNhbid0IGV4Y2x1ZGUgPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PCBoYXZlIHRvIGtlZXAgdXBkYXRpbmcNCmRmT3V0IDwtIGRmT3V0Wy0oNCksXQ0KIy0tLSBBbmQgSSBkcm9wIHRoZSBjb3VudCBvZiAiRXZhbHVhdGlvbiIgYmVjYXVzZSBpdCBtYWtlcyB0aGUgZGlmZmVyZW5jZSBpbiB3b3JkIHNpemVzIHRvbyBsYXJnZSAtLS0NCmRmT3V0W2RmT3V0JHRlcm0gPT0gImV2YWx1YXRpb24iLF0kY291bnQgPSAxMg0KDQoNCg0KDQojLS0tIE5vdyB3ZSBjcmVhdGUgdGhlIGNsb3VkISAtLS0NCndvcmRjbG91ZDIoZGF0YSA9IGRmT3V0LCBzaGFwZSA9ICdjaXJjbGUnLCBzaXplPS4zLCByb3RhdGVSYXRpbyA9IC4yLCBlbGxpcHRpY2l0eT0uNSwgZ3JpZFNpemUgPSA3KQ0KDQojLS0tIEFuZCBub3cgd2UgQ09VTEQgb3V0cHV0IHRoZSBjbG91ZCBhcyBhbiBodG1sIHdpZGdldCAhISEgLS0tDQojICEhISA8PDw8PDw8ICBidXQgbm90ZSB3ZSBkb24ndCBpbiB0aGUgZmluYWwgb3V0cHV0IGFzIHdlJ3JlIGtlZXBpbmcgYSBzdGF0aWMgb25lIHRoYXQgbG9va3MgYmVzdCA8PDw8PDw8PDw8DQoNCmBgYA0KDQoNCg0KOjo6Og0KDQoNCjo6Og0KDQogIDwhLS0gLS0tICAtLWVuZCBjb2x1bW5zLS0gLS0tICAtLT4NCjo6OjoNCg0KDQoNCg0KDQotLS0NCg0KDQoNCg0KDQoNCiMjIyBXb3JrIEV4cGVyaWVuY2UNCg0KDQo6Ojo6IG1hbnVhbEZsZXhib3ggIA0KICA8IS0tIC0tLSBsZXQncyB1c2UgY29sdW1ucyAtLS0gLS0+ICAgIA0KICANCjo6OiBtYW5GbGV4MmNocm9uVGltZWxpbmUgIA0KDQo6Ojo6IHtzdHlsZT0ibWFyZ2luLXRvcDo2NXB4OyJ9DQogDQpgYGB7ciBUaGVUaW1lbGluZSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgZmlnLmhlaWdodD0yMSwgZmlnLndpZHRoPTMuNzV9DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMuDQojICBXZSBjYW4gYnVpbGQgYSB0aW1lbGluZSB0aGF0IHNob3dzIHdoZW4gbXkgY2FyZWVycyBoYXBwZW5lZCB+DQojDQojICAgTGV0J3MgdXNlIGEgc29saWQgbGluZSBmb3IgZnVsbD10aW1lIGFuZCBkYXNoZWQgZm9yIHBhcnQtdGltZQ0KIyAgIFRoaXMgY2FuIGJlIGJ1aWx0IGJ5IHNpbXBsZSB2ZXJ0aWNhbCBsaW5lcywgDQojICAgICAgIHdoZXJlIE5BcyBicmVhayB1cCB0aGUgbGluZSBmb3IgZGFzaGVkLg0KIw0KIyAgIEkgd2lsbCBtYW51YWxseSBidWlsZCB0aGUgZGF0YSBzZXQgaW4gRXhjZWwsDQojICAgICAgIHRoZW4gcGFzdGUgaXQgaW5saW5lIHdpdGggZGF0YXBhc3RhLA0KIyAgICAgICB0aGVuIG91dHB1dCBhIGdncGxvdCBncmFwaCB3aXRoIHRoZSBsaW5lcy4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMuDQoNCiMtLS0gSGVyZSBpcyB0aGUgZGF0YSwgYnVpbHQgaW4gY29sdW1ucyBpbiBFeGNlbCBhbmQgcGFzdGVkIGhlcmUgd2l0aCBkYXRhcGFzdGENCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFrZSBleHBsb3JpbmcgdGhpcyBmaWxlIHZlcnkgc2ltcGxlIC0tLQ0KY2FyZWVyQXJlYVRpbWVsaW5lcyA8LSB0aWJibGU6OnRyaWJibGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXZhbHVhdGlvbiwgIH5zYWNsLCB+c29mdHdhcmUsIH50ZWFjaGluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyNC4zLCAyMDI0LjMsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDI0LjIsIDIwMjQuMiwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjQuMSwgMjAyNC4xLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyNC4wLCAyMDI0LjAsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIzLjksIDIwMjMuOSwgICAgICAgIE5BLCAgICAgICAgTkEsICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjMuOCwgMjAyMy44LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMy43LCAyMDIzLjcsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIzLjYsIDIwMjMuNiwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjMuNSwgMjAyMy41LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMy40LCAyMDIzLjQsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIzLjMsIDIwMjMuMywgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjMuMiwgMjAyMy4yLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMy4xLCAyMDIzLjEsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIzLjAsIDIwMjMuMCwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjIuOSwgMjAyMi45LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMi44LCAyMDIyLjgsICAgICAgICBOQSwgICAgICAgIE5BLCAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIyLjcsIDIwMjIuNywgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjIuNiwgMjAyMi42LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMi41LCAyMDIyLjUsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIyLjQsIDIwMjIuNCwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjIuMywgMjAyMi4zLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMi4yLCAyMDIyLjIsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIyLjEsIDIwMjIuMSwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjEuOSwgMjAyMS45LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMS44LCAyMDIxLjgsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIxLjcsIDIwMjEuNywgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjEuNiwgMjAyMS42LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMS41LCAyMDIxLjUsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIxLjQsIDIwMjEuNCwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjEuMywgMjAyMS4zLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMS4yLCAyMDIxLjIsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIxLjEsIDIwMjEuMSwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMSwgMjAyMS4wLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMC45LCAyMDIwLjksICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIwLjgsIDIwMjAuOCwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMjAuNywgMjAyMC43LCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMC42LCAyMDIwLjYsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIwLjUsIDIwMjAuNSwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDIwLjMsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMjAuMiwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDIwLjAsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTkuOSwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDE5LjcsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTkuNiwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTkuNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxOS40LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE5LjMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTkuMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxOS4xLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAgIDIwMTksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTguOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxOC44LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE4LjcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTguNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxOC41LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE4LjQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTguMywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxOC4yLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE4LjEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgMjAxOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNy45LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE3LjgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTcuNywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNy42LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE3LjUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTcuNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNy4zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE3LjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTcuMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgICAyMDE3LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE2LjksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTYuOCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNi43LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE2LjYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTYuNSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNi40LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE2LjMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTYuMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNi4xLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAgIDIwMTYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTUuOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgMjAxNS44LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAyMDE1LjcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgIDIwMTUuNiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDE0LjksICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTQuOCwgICAgICAgIE5BLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgICAgTkEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDE0LjYsICAgIDIwMTQuNiwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTQuNSwgICAgMjAxNC41LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDE0LjQsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDE0LjMsICAgIDIwMTQuMywgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTQuMiwgICAgMjAxNC4yLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDE0LjEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgIDIwMTQsICAgICAgMjAxNCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTMuOSwgICAgMjAxMy45LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEzLjgsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEzLjcsICAgIDIwMTMuNywgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTMuNiwgICAgMjAxMy42LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEzLjUsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEzLjQsICAgIDIwMTMuNCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTMuMywgICAgMjAxMy4zLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEzLjIsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEzLjEsICAgIDIwMTMuMSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgMjAxMywgICAgICAyMDEzLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEyLjksICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEyLjgsICAgIDIwMTIuOCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTIuNywgICAgMjAxMi43LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEyLjYsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEyLjUsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTIuNCwgICAgMjAxMi40LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEyLjMsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEyLjIsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTIuMSwgICAgMjAxMi4xLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgIDIwMTIsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDExLjksICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTEuOCwgICAgMjAxMS44LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDExLjcsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDExLjYsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTEuNSwgICAgMjAxMS41LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDExLjQsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDExLjMsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTEuMiwgICAgMjAxMS4yLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDExLjEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgIDIwMTEsICAgICAgICBOQSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTAuOSwgICAgMjAxMC45LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEwLjgsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEwLjcsICAgIDIwMTAuNywgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTAuNiwgICAgMjAxMC42LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEwLjUsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEwLjQsICAgIDIwMTAuNCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMTAuMywgICAgMjAxMC4zLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDEwLjIsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDEwLjEsICAgIDIwMTAuMSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgMjAxMCwgICAgICAyMDEwLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA5LjksICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDA5LjgsICAgIDIwMDkuOCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMDkuNywgICAgMjAwOS43LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA5LjYsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAyMDA5LjUsICAgIDIwMDkuNSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsIDIwMDkuNCwgICAgMjAwOS40LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA5LjMsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDkuMiwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwOS4xLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgIDIwMDksICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDguOSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwOC44LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA4LjcsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDguNiwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwOC41LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA4LjQsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDguMywgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwOC4yLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA4LjEsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgICAgMjAwOCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNy45LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA3LjgsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDcuNywgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNy42LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA3LjUsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDcuNCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNy4zLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA3LjIsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDcuMSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgICAyMDA3LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA2LjksICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDYuOCwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNi43LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA2LjYsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDYuNSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNi40LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA2LjMsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDYuMiwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNi4xLCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAgIDIwMDYsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BLCAgICAgTkEsICAgIDIwMDUuOSwgICAgICAgIE5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEsICAgICBOQSwgICAgMjAwNS44LCAgICAgICAgTkEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwgICAgIE5BLCAgICAyMDA1LjcsICAgICAgICBOQSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCg0KDQoNCiMtLS0gTGV0J3MgaGF2ZSBnZ3Bsb3QgZXhwbGljaXRseSBmb3IgcmVmZXJlbmNlIC0tLQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkoZ2dwbG90MikpDQoNCg0KIy0tLSBUaGVuIGxldCdzIGRlY2xhcmUgb3VyIHNpbXBsZSBwbG90IG9mIHZlcnRpY2FsIGxpbmVzISAtLS0NCm15UGxvdCA8LSBnZ3Bsb3QoZGF0YT1jYXJlZXJBcmVhVGltZWxpbmVzKQ0KbXlQbG90IDwtIG15UGxvdCArIGdlb21fbGluZShhZXMoeD0xLCB5PWV2YWx1YXRpb24pLCBzaXplPTMsIGNvbG9yPSIjMDAzNjlBIikNCm15UGxvdCA8LSBteVBsb3QgKyBnZW9tX2xpbmUoYWVzKHg9MiwgeT1zYWNsKSwgc2l6ZT0zLCBjb2xvcj0iIzlBMzI1OCIpDQpteVBsb3QgPC0gbXlQbG90ICsgZ2VvbV9saW5lKGFlcyh4PTMsIHk9dGVhY2hpbmcpLCBzaXplPTMsIGNvbG9yPSIjNEU4OTJDIikNCm15UGxvdCA8LSBteVBsb3QgKyBnZW9tX2xpbmUoYWVzKHg9NCwgeT1zb2Z0d2FyZSksIHNpemU9MywgY29sb3I9IiNDQkEyNUIiKQ0KDQojLS0tIE5vdyB3ZSdsbCBzZXQgdGhlIGF4aXMgaW5mb3JtYXRpb24gZm9yIHRoZSA1IGNhcmVlciBhcmVhcyAtLS0NCm15UGxvdCA8LSBteVBsb3QgKyBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzPXNlcSgxLDQsYnk9MSksIGxhYmVscz1jKCJldmFsLiAmIHJlc2VhcmNoIiwgInNvY2lhbCBhY3Rpb24iLCAidGVhY2hpbmciLCAiZGF0YSAmIGRlc2lnbiIpLCBsaW1pdHM9YyguNSw0LjUpLCBleHBhbmQgPSBjKDAsMCksIHBvc2l0aW9uID0gInRvcCIpDQojLS0tIEFuZCBhbHNvIHNldCB0aGUgc2NvcGUgb2YgdGhlIHllYXIgYXhpcyAtLS0NCm15UGxvdCA8LSBteVBsb3QgKyBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzPXNlcSgyMDA1LDIwMjQsYnk9MSksIGxpbWl0cz1jKDIwMDUuNCwyMDI0LjYpLCBleHBhbmQ9YygwLDApKQ0KDQojLS0tIEFuZCBsYXN0IHdlJ2xsIGFkanVzdCB0aGUgYXBwZWFyYW5jZSAtLS0NCm15UGxvdCA8LSBteVBsb3QgKyB0aGVtZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICIjZDFlMWViIiksICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5tYXJnaW4gPSBtYXJnaW4odD0xNSxiPTE1LHI9MTUsbD0xNSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0LngudG9wID0gZWxlbWVudF90ZXh0KHNpemU9MzIsIGFuZ2xlPTkwLCBtYXJnaW49bWFyZ2luKGI9MTUpLCB2anVzdD0uMzMsIGhqdXN0PTApLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemU9MjksIG1hcmdpbj1tYXJnaW4ocj0xMCkpDQogICAgICAgICAgICAgICAgICAgICkNCg0KIy0tLSBUaGVuIGZpbmFsbHkgZGlzcGxheSB0aGUgcGxvdCEgLS0tDQpteVBsb3QNCg0KYGBgDQogIA0KOjo6Og0KDQo6OjogIA0KICANCiANCiANCiANCiANCiANCg0KICANCjo6OiBtYW5GbGV4MmNocm9uUmVzdW1lVGV4dCAgDQogIA0KOjo6OiB7c3R5bGU9Im1hcmdpbi10b3A6NjVweDsifQ0KDQoNCg0KDQoNCiMjIyMgfiBJbmRlcGVuZGVudCByZXNlYXJjaCAmIGV2YWx1YXRpb24gY29uc3VsdGFudCB+DQoNCjo6Ojo6IG9uZXRhYk5TDQoNCn4gc2VsZiB+ICANCjIwMjMgSnVuIC0gcHJlc2VudCAgIA0KDQo6Ojo6Og0KDQoNCjo6Ojo6IHR3b3RhYlNlbWlUaWdodA0KDQogLSBDdXJyZW50bHkgY29uZHVjdGluZyBhIGNsaW1hdGUtZmluYW5jZSBkZXNrIGludmVzdGlnYXRpb24gdG93YXJkcyBhIGZpcnN0LW9mLWl0cy1raW5kIHB1YmxpYyBlZHVjYXRpb24gJiBhY3Rpb24gcmVzb3VyY2UsIGZvciBhIHRlbXBvcmFyaWx5IHVuZGlzY2xvc2VkIGNsaWVudCAgDQogLSBDcmVhdGVkIG9wdGlvbnMgZm9yIGEgY3JlYXRpdmUgcXVhbGl0YXRpdmUgcmVzZWFyY2ggYW5kIGVjb3N5c3RlbSBtYXBwaW5nIHByb2plY3Qgd2l0aCBNYXNzYWdlIE5vcnRoZXJuIE9oaW8gUHJhY3RpY2UtQmFzZWQgUmVzZWFyY2ggTmV0d29yayAgDQoNCjo6Ojo6DQoNCg0KDQoNCg0KDQoNCiMjIyMgTW9uaXRvcmluZyAmIEV2YWx1YXRpb24gQXNzaXN0YW50DQoNCjo6Ojo6IG9uZXRhYk5TDQoNCkFzeWx1bSBBY2Nlc3MgIA0KMjAyNCBKYW4gLSBwcmVzZW50ICAgDQoNCjo6Ojo6DQoNCg0KOjo6OjogdHdvdGFiU2VtaVRpZ2h0DQoNCiAtIEhlbHBpbmcgY29tcGxldGUgdGhlIHRyYW5zZmVyIG9mIGV2YWx1YXRpb24gJiBsZWFybmluZyB0byBsb2NhbCBvZmZpY2VzLCBpbmNsdWRpbmcgZGVteXN0aWZ5aW5nIHRoZWlyIHVuaXF1ZSBjbGllbnQgbWFuYWdlbWVudCBzeXN0ZW0sIGRlZmluaW5nIGluZGljYXRvcnMgZm9yIGxhcmdlIGZlZGVyYWwgZ3JhbnRzLCBhbmQgYXV0b21hdGluZyBwZXJpb2RpYyByZXBvcnRpbmcgcHJvY2Vzc2VzICANCg0KOjo6OjoNCg0KDQoNCg0KDQoNCg0KDQojIyMjIFZJU1RBIENvb3JkaW5hdG9yICYgRXZhbHVhdG9yDQoNCjo6Ojo6IG9uZXRhYk5TDQoNCkNvbW11bml0eSBSZWZ1Z2VlIGFuZCBJbW1pZ3JhdGlvbiBTZXJ2aWNlcyAgDQoyMDIzIEp1biAtIHByZXNlbnQgICANCg0KOjo6OjoNCg0KDQo6Ojo6OiB0d290YWJTZW1pVGlnaHQNCg0KIC0gQnJvdWdodCBmb3J0aCBhIGNoYWxsZW5naW5nIHF1YWxpdGF0aXZlLCBQcmluY2lwbGVzLUZvY3VzZWQgZXZhbHVhdGlvbiBlZmZvcnQgYWltaW5nIHRvIGJyaW5nIHRoZSB3b3JrIG9mIHRoaXMgYWx3YXlzIG92ZXItYnVzeSByZWZ1Z2VlIHNlcnZpY2VzIG5vbi1wcm9maXQgaW50byBhIHNoYXJlZCBmb2N1cyBhcyB3ZWxsIGFzIHNoYXBlIGZ1dHVyZSBmZWVkYmFjayAgDQogLSBJbmRlcGVuZGVudGx5IG1hbmFnZWQgdGhpcyBzb2xvIGV2YWx1YXRpb24gcHJvamVjdCwgZGVtb25zdHJhdGluZyBhbGwgb2YgbXkgZXZhbHVhdGlvbiBkZXNpZ24sIGludGVydmlldyBkZXNpZ24gYW5kIHBlcmZvcm1hbmNlLCBhbmQgcHJvamVjdCBhbmQgcGFydGljaXBhbnQgY29tbXVuaWNhdGlvbiBza2lsbHMgICAgICANCg0KOjo6OjoNCg0KDQoNCg0KDQojIyMjIEludGVybiAtIERlc2lnbiwgTW9uaXRvcmluZywgJiBFdmFsdWF0aW9uDQoNCjo6Ojo6IG9uZXRhYk5TDQoNCkludGVybmF0aW9uYWwgQ2VudGVyIGZvciBUcmFuc2l0aW9uYWwgSnVzdGljZSAgDQoyMDIyIEp1biAtIDIwMjIgQXVnICAgDQoNCjo6Ojo6DQoNCg0KOjo6OjogdHdvdGFiU2VtaVRpZ2h0DQoNCiAtIEluZGVwZW5kZW50bHkgY29tcGxldGVkIHdlbGwtcmVjZWl2ZWQgcmVzZWFyY2gsIGFuYWx5c2lzLCBhbmQgd3JpdGluZyBvbiBvdXRjb21lcyBvZiBhcnQgaW50ZXJ2ZW50aW9ucyBpbiB0cmFuc2l0aW9uYWwganVzdGljZSBhbmQgb3RoZXIgYXJ0IGFjdGl2aXNtLCBmcm9tIGFjYWRlbWljIGFuZCBhcHBsaWVkIGxpdGVyYXR1cmUgYW5kIGludGVydmlld3MgIA0KIC0gVXNlZCBteSByZXBvcnQgdG8gY29sbGFib3JhdGUgd2l0aCBldmFsdWF0aW9uIGxlYWQgdG8gZGVmaW5lIHJlY29tbWVuZGF0aW9ucyBmb3IgZnV0dXJlIGV2YWx1YXRpb24gb2YgYXJ0IGludGVydmVudGlvbnMsIHBvc2l0aW9uaW5nIHRoZW0gYXMganVzdGlmaWFibGUgdG8gZnVuZGVycyAgDQogLSBIZWxwZWQgcmVjcmVhdGUgbXkgcmVwb3J0IGFzIGEgc2ltcGxpZmllZCBndWlkZWJvb2sgZm9yIGZpZWxkIHN0YWZmIGFuZCBhcyBhIHByZXNlbnRhdGlvbiBmb3IgaGVhZHF1YXJ0ZXJzIHN0YWZmLCBmaXR0aW5nIHRoZWlyIGV2YWx1YXRpb24gZmFtaWxpYXJpdHkgYW5kIG5lZWRzICANCiAtIENvbnRyaWJ1dGVkIHRvIGRlc2lnbiBvZiBhZCBob2MgZGF0YSBjb2xsZWN0aW9uIHRvb2xzIHN1Y2ggYXMgc3VydmV5cyBhcyBwYXJ0IG9mIHVuZXhwZWN0ZWQgYXNzaWdubWVudHMgaW4gcmVzcG9uc2UgdG8gcHJvZ3JhbSBzdGFmZiB3ZSBzdXBwb3J0ZWQgIA0KICANCjo6Ojo6DQoNCg0KDQoNCg0KDQoNCiMjIyMgUmVzZWFyY2ggQXNzaXN0YW50IC0gUHJvZ3JhbSBFdmFsdWF0aW9uDQoNCjo6Ojo6IG9uZXRhYk5TDQoNClRoZSBFdmFsdWF0aW9uIENlbnRlciBhdCB0aGUgVW5pdmVyc2l0eSBvZiBLZW50dWNreSBDb2xsZWdlIG9mIEVkdWNhdGlvbiAgDQoyMDIxIEp1bCAtIDIwMjIgTWF5ICAgDQoNCjo6Ojo6DQoNCg0KOjo6OjogdHdvdGFiU2VtaVRpZ2h0DQoNCkkgY29udGludWVkIHRoZSB3b3JrIHRoYXQgSSBiZWdhbiBhcyBhbiBpbnRlcm4sIHRyYW5zaXRpb25pbmcgdG8gd29ya2luZyBhcyBhIHByb2plY3QtYmFzZWQgUmVzZWFyY2ggQXNzaXN0YW50LiAgDQogIA0KIC0gUGFydCBvZiBldmFsdWF0aW9uICYgbW9uaXRvcmluZyBkZXNpZ24gZm9yIGEgc3VjY2Vzc2Z1bCwgbXVsdGktbWlsbGlvbi1kb2xsYXIsIHNhZmV0eSAmIGhlYWx0aCBpbnRlcnZlbnRpb24gYW5kIGNhcGFjaXR5LWJ1aWxkaW5nIHByb3Bvc2FsLCBpbmNsdWRpbmcgdGhlIG92ZXJhcmNoaW5nIGluZGljYXRvciBmcmFtZXdvcmssIGZpbmFsIGV2YWx1YXRpb24gcGxhbiwgYW5kIGRyYWZ0aW5nIGFtaWRzdCBjb21wbGV4IHJlcXVpcmVtZW50IGRldGFpbHMgIA0KIC0gSW50cm9kdWNlZCBvdXIgcGxhbiB0byBub24tZXZhbHVhdG9yIHByb2plY3QgbGVhZHMg4oCTIGRldmVsb3BpbmcgdGhlIHRyYWluaW5ncyAmIG1hdGVyaWFscyB1c2luZyBpdGVyYXRpdmUgZmVlZGJhY2sgZnJvbSBteSB0ZWFtIGFuZCBoZWxwaW5nIGRlbGl2ZXIgdGhlbSB0byB0aGUgdmFyaWVkIHByb2dyYW0gbGVhZHMgYW5kIGVhcm4gdGhlaXIgYnV5LWluICANCiAtIERldmVsb3BlZCBhIGdlbmVyYWwgc3VydmV5IHF1YWxpdHkgYXNzZXNzbWVudCBmcmFtZXdvcmsgd2l0aCBhbiBlcXVpdHktZmlyc3QgbGVucywgY3JpdGljYWxseSBleGFtaW5pbmcgaW5zdHJ1bWVudCBjb21wb25lbnRzLCB0ZWFtIHByb2Nlc3MsIGFuZCBwdXJwb3NlOyBpbmNsdWRlZCBhcyBwYXJ0IG9mIGEgbXVsdGlwYXBlciBkaXNjdXNzaW9uIGF0IEFFQSBFdmFsMjAyMiAgDQogIA0KOjo6OjoNCg0KDQoNCg0KDQoNCiMjIyMgR3JhZHVhdGUgU3R1ZGVudCAtIFJlc2VhcmNoIE1ldGhvZHMgdG93YXJkcyBQcm9ncmFtIEV2YWx1YXRpb24NCg0KOjo6Ojogb25ldGFiTlMNCg0KVW5pdmVyc2l0eSBvZiBLZW50dWNreSAgDQoyMDIwIEF1ZyAtIDIwMjIgTWF5DQoNCjo6Ojo6DQoNCg0KOjo6OjogdHdvdGFiU2VtaVRpZ2h0DQoNCiAtIEkgbm93IGhhdmUgYSBzdHJvbmcgZm9ybWFsIGVkdWNhdGlvbiBkcml2ZW4gYnkgcmVhbC13b3JsZCBzb2xvICYgdGVhbSBwcmFjdGljZSwgaW4gcXVhbnRpdGF0aXZlIGFuZCBxdWFsaXRhdGl2ZSByZXNlYXJjaCwgYW5hbHlzaXMsIGFuZCBldmFsdWF0aW9uIHdpdGggYXdhcmVuZXNzIG9mIGVxdWl0eSBhbmQgY29udGVtcG9yYXJ5IGFwcHJvYWNoZXMg4oCTIGNsZWFybHkgcG9zaXRpb25pbmcgbXkgc2tpbGxzICANCiAtIFdpdGggYW4gb3V0LW9mLXNjaG9vbCBlZHVjYXRpb24gZ3JvdXAgZm9yIG9wcHJlc3NlZCB5b3V0aCwgSSBjb21wbGV0ZWQgYSBuZWVkcyBhc3Nlc3NtZW50IGV2YWx1YXRpb24gdG93YXJkcyBwbGFubmVkIHByb2dyYW0gZXhwYW5zaW9uLCB1c2luZyBpbnRlcnZpZXdzLCBmb2N1cyBncm91cHMsIGFuZCBkb2N1bWVudCByZXZpZXcgd2l0aCBhIHNtYWxsIHRlYW0gICAgDQogLSBXaXRoIGFuIG91dC1vZi1zY2hvb2wgWVBBUiAmIG1lbnRvcmluZyBwcm9ncmFtLCBmYWNpbGl0YXRlZCBkaXNjdXNzaW9ucyB0byBsZWFybiBvZiBhbmQgZGV2ZWxvcGVkIGFuZCBtb2RlbGVkIHRoZWlyIHRoZW9yeSBvZiBjaGFuZ2UsIHRoZW4gcHJvdmlkZWQgYSBEZXZlbG9wbWVudGFsIEV2YWx1YXRpb24gcGxhbiB0byBmaXQgdGhlaXIgZHluYW1pYyB3b3JrICANCiAtIEluIG15IGVudmlyb25tZW50YWwgc3R1ZGllcyBjb250ZXh0IHdvcmssIEkgZXhwbG9yZWQgcGFydGljdWxhcmx5IHRoZSBwcm9ibGVtcyBvZiBzdGF0ZSDigJhzZWN1cml0aXphdGlvbuKAmSBvZiB0aGUgY2xpbWF0ZSBjcmlzaXMgYW5kIGNvbm5lY3Rpb25zIHRvIGltbWlncmF0aW9uLCBpbiB0aGlzIGp1c3RpY2UtZm9jdXNlZCBwcm9ncmFtIHRoYXQgY292ZXJlZCBpc3N1ZXMsIHBvbGljeSwgYW5kIGNvbW11bmljYXRpb25zICANCiAtIE15IGNhcHN0b25lIHBhcGVyIGV4cGxhaW5lZCBhbmQgaW1wbGVtZW50ZWQgRGV2ZWxvcG1lbnRhbCBFdmFsdWF0aW9uIGluIGEgaHlwb3RoZXRpY2FsIHBhcnRpY2lwYXRvcnkgam91cm5hbGlzbSBwcm9qZWN0IGFyb3VuZCBtaWdyYXRpb24gYW5kIGNvbm5lY3Rpb25zIGJldHdlZW4gbmV3IGFuZCBsb25nLXRpbWUgcmVzaWRlbnRzIGluIGEgbWlkLXNpemUgVVMgY2l0eSAgDQogIA0KOjo6OjoNCg0KDQoNCg0KDQoNCiMjIyMgSW50ZXJuIC0gUHJvZ3JhbSBFdmFsdWF0aW9uDQoNCjo6Ojo6IG9uZXRhYk5TDQoNClRoZSBFdmFsdWF0aW9uIENlbnRlciBhdCB0aGUgVW5pdmVyc2l0eSBvZiBLZW50dWNreSBDb2xsZWdlIG9mIEVkdWNhdGlvbg0KMjAyMSBKYW4gLSAyMDIxIEp1bA0KDQo6Ojo6Og0KDQoNCjo6Ojo6IHR3b3RhYlNlbWlUaWdodA0KDQogLSBMZWQgcmVzZWFyY2ggb24gc3RhbmRhcmRzIGFuZCBzdHJhdGVneSBmb3IgdGhlIGV2YWx1YXRpb24gYXBwcm9hY2ggZm9yIGEgaGlnaGx5IHN1Y2Nlc3NmdWwsIGxhcmdlIG5vbi1wcm9maXQgZ3JhbnQsIGFuZCBjb250cmlidXRlZCB0byBkZXNpZ25pbmcgcXVhbGl0YXRpdmUgJiBxdWFudGl0YXRpdmUgY29sbGVjdGlvbiBhbmQgYW5hbHlzaXMgc3lzdGVtcyB0aGF0IHVuaWZpZWQgZXZhbHVhdGlvbiBhY3Jvc3MgdGhlIHRlYW1zICANCiAtIEhlbHBlZCBjcmVhdGUgdmlzdWFscyBhbmQgbW9kZWxzIHRoYXQgY29tbXVuaWNhdGVkIG91ciBwbGFuIHRvIHRoZSB2YXJpZWQgZXZhbHVhdG9yIGFuZCBub24tZXZhbHVhdG9yIGF1ZGllbmNlcyBpbiB0aGUgbGFyZ2UgcHJvamVjdCAgDQogLSBNYWRlIGEgZmFjaWxpdGF0aW9uIHByb2Nlc3MgdG8gaGVscCBwcm9ncmFtIGxlYWRzIGRlc2lnbiBhYnN0cmFjdCBwcm9ncmFtIG1vZGVscyB1c2luZyBuYXR1cmFsIGxhbmd1YWdlICANCiAgDQo6Ojo6Og0KDQoNCg0KDQoNCg0KIyMjIyBVbml2ZXJzaXR5IExhbmd1YWdlICYgQ3VsdHVyZSBJbnN0cnVjdG9yDQoNCjo6Ojo6IG9uZXRhYk5TDQoNCn4gdGhyZWUgdW5pdmVyc2l0aWVzIGluIGNlbnRyYWwgQ2hpbmEgIA0KMjAxNSBBdWcgLSAyMDE5IEp1bCAgICANCg0KOjo6OjoNCg0KDQo6Ojo6OiB0d290YWJTZW1pVGlnaHQNCg0KSSB3b3JrZWQgZm9yIDQgeWVhcnMgYXMgYW4gRW5nbGlzaCBsYW5ndWFnZSBhbmQgY3VsdHVyZSBpbnN0cnVjdG9yIGF0IHVuaXZlcnNpdGllcyBpbiBjZW50cmFsIENoaW5hLiAgDQpJIGxlYXJuZWQgdG8gcXVpY2tseSBjb21iaW5lIGJlc3QgcHJhY3RpY2VzIHdpdGggbXkgb3duIGV4cGVyaWVuY2Ugb2YgbXkgc3R1ZGVudHMsIG1ha2luZyBteSBvd24gY3VycmljdWx1bSBhbmQgaW50ZXJhY3RpdmUgcHJlc2VudGF0aW9ucyAmIGFjdGl2aXRpZXMgZm9yIGNoYWxsZW5naW5nIGNsYXNzcm9vbXMgb2YgZG96ZW5zIG9mIDE5LSBhbmQgMjAteWVhci1vbGRzIG9mIGFuZCBpbiBhIGRpZmZlcmVudCBjdWx0dXJlLiAgDQpXb3JraW5nIHdpdGggaHVuZHJlZHMgb2Ygc3R1ZGVudHMgZWFjaCB0ZXJtLCBJIGNyZWF0ZWQgbXkgb3duIHN0dWRlbnQgYW5kIGxlc3NvbiBtYW5hZ2VtZW50IGRhdGEgc3lzdGVtIGZvciB0cmFja2luZyBsZXNzb24gcHJvZ3Jlc3MgYW5kIHN0dWRlbnQgbWFya3MsIGdyZWF0bHkgaW1wcm92aW5nIG15IGVmZmljaWVuY3kgIA0KICANCjo6Ojo6DQoNCg0KDQoNCg0KDQojIyMjIERhdGEgYXBwbGljYXRpb25zIGRlc2lnbmVyIGFuZCBkZXZlbG9wZXINCg0KOjo6Ojogb25ldGFiTlMNCg0KfiBOdW1lcm91cyBsb2NhbCwgcmVnaW9uYWwsIG5hdGlvbmFsLCBhbmQgZ2xvYmFsIGZpcm1zICANCjIwMDUgU2VwIC0gMjAxNCBBdWcNCg0KOjo6OjoNCg0KDQo6Ojo6OiB0d290YWJTZW1pVGlnaHQNCg0KSW4gdGhlIHBhc3QsIEkgaGF2ZSBhdCB0aW1lcyBiZWVuIGEgYnVzeSBNaWNyb3NvZnQgYXBwbGljYXRpb25zIGRlc2lnbmVyIGFuZCBkZXZlbG9wZXIsICANCm1vc3RseSBmdWxsLXRpbWUgYW5kIHR5cGljYWxseSBhIGNvbnRyYWN0b3IsIHdpdGggc29tZSBzaWduaWZpY2FudCBicmVha3MgYXJvdW5kIG15IG90aGVyIGNhcmVlcnMsICAgDQphcyBjcmVhdGluZyBidXNpbmVzcyBzb2Z0d2FyZSB3YXMgYWx3YXlzIGEgYmFja3VwIGNhcmVlciBhbmQgb25lIHRoYXQgSSBkbyBub3Qgc2VlayB3b3JrIGluLiAgDQogIA0KSSBzdG9vZCBvdXQgZm9yIG15IHRlY2huaWNhbCBhbmQgcHJvY2VzcyBkZXNpZ24gc2tpbGxzLCBhbmQgZm9yIG15IGFiaWxpdHkgdG8gbGVhcm4gcXVpY2tseSBhbmQgYnJpbmcgbmV3IGtub3dsZWRnZSBpbnRvIHRlYW1zIGFuZCBpbXByb3ZlIHByb2Nlc3NlcyB0aGF0IHNtb290aGVkIHdvcmsgYWNyb3NzIGNvbGxhYm9yYXRpbmcgZ3JvdXBzLiAgDQpXb3JraW5nIGFzIGEgc2hvcnQgdGVybSBjb250cmFjdG9yIGluIG1hbnkgZGlmZmVyZW50IG9yZ2FuaXphdGlvbnMgYWxzbyBwcm92aWRlZCBncmVhdCBleHBvc3VyZSB0byBkaWZmZXJlbnQgaW5kdXN0cmllcyBhbmQgZGlmZmVyZW50IHNpemVzIGFuZCBjb21wb3NpdGlvbnMgb2YgdGVhbXMsIHN1cHBvcnRpbmcgbXkgc3RyYXRlZ2ljIHRoaW5raW5nIHdpdGggbGl2ZWQgZXhwZXJpZW5jZSB3aXRoIGEgbXVsdGl0dWRlIG9mIHBlb3BsZSBhbmQgcHJvY2Vzc2VzLiAgDQpNeSBhYmlsaXR5IHRvIHRha2Ugb24gdGVjaG5vbG9neSB0b29scywgZm9yIGRhdGEsIGZvciBwcm9qZWN0IG1hbmFnZW1lbnQsIGFuZCBmb3IgY29tbXVuaWNhdGlvbiwgaXMgYWxzbyBhdCBhIHZlcnkgaGlnaCBsZXZlbCB0aGFua3MgdG8geWVhcnMgb2YgZG9pbmcgc28gb24gYSBkYWlseSBiYXNpcy4gIA0KICANCjo6Ojo6DQoNCg0KDQoNCg0KDQojIyMjIE1lbWJlciAtIE9yZ2FuaXppbmcgQ29tbWl0dGVlDQoNCjo6Ojo6IG9uZXRhYk5TDQoNCkFzaWFuIEZlc3RpdmFsIENvcnBvcmF0aW9uDQoyMDA5IE1hciAtIDIwMTQgTWF5DQoNCjo6Ojo6DQoNCg0KOjo6OjogdHdvdGFiU2VtaVRpZ2h0DQoNCkkgd2FzIGF0IHRpbWVzIGEgTWVtYmVyIGFuZCBhdCB0aW1lcyBDaGFpciBvciBDby1DaGFpciBvZiB0aGUgTWFydGlhbCBBcnRzIFN1YmNvbW1pdHRlZSwgcmVzcG9uc2libGUgZm9yIHRoZSBtYXJ0aWFsIGFydHMgZGVtb25zdHJhdGlvbnMgYXQgb25lIG1haW4gc3RhZ2UgYW5kIG90aGVyIHNwZWNpYWwgcGVyZm9ybWFuY2VzIG9yIG1lZGlhIGV2ZW50cy4gIA0KVGhpcyBtZWFudCBJIHdhcyBpbnZvbHZlZCBpbiBtYW55IGFzcGVjdHMgb2Ygd2hhdCBpcyBvbmUgb2YgdGhlIGxhcmdlc3Qgb3V0ZG9vciBldmVudHMgaW4gQ29sdW1idXMsIGluY2x1ZGluZyB2b2x1bnRlZXIgYW5kIHBlcmZvcm1lciByZWNydWl0bWVudCwgbWFya2V0aW5nLCBzY2hlZHVsaW5nLCBhbmQgcGVvcGxlIGFuZCB2ZW51ZSBtYW5hZ2VtZW50IOKAkyBhbGwgaW4gc2VydmljZSBvZiByYWlzaW5nIGF3YXJlbmVzcyBhbmQgYXBwcmVjaWF0aW9uIG9mIHRoZSBkaXZlcnNlIEVhc3QgYW5kIFNvdXRoIEFzaWFuIHBlb3BsZXMgaW4gQ29sdW1idXMuICANCiAgDQo6Ojo6Og0KDQoNCg0KDQoNCg0KIyMjIyBMaWNlbnNlZCBNYXNzYWdlIFRoZXJhcGlzdA0KDQo6Ojo6OiBvbmV0YWJOUw0KDQpUcnVlTVQgJiBUaGUgT2hpbyBTdGF0ZSBVbml2ZXJzaXR5ICAgIA0KMjAwNyBKYW4gLSAyMDEzIE1hciAgIA0KDQo6Ojo6Og0KDQoNCjo6Ojo6IHR3b3RhYlNlbWlUaWdodA0KDQpGb3Igc2V2ZXJhbCB5ZWFycywgSSB3YXMgYSBtYXNzYWdlIHRoZXJhcGlzdCwgY29tbWl0dGVkIGVtcGxveWVlLCBhbmQgYnVzaW5lc3Mgb3duZXIsICANCmFzIGEgYnVzeSBwYXJ0LXRpbWUgbWFzc2FnZSB0aGVyYXBpc3QuICANClN0YXJ0aW5nIG15IG93biBidXNpbmVzcyBkZWVwZW5lZCBteSBhd2FyZW5lc3Mgb2Ygd2hhdCBpdCB0YWtlcyB0byBub3Qgb25seSBwb3NpdGlvbiBhbiBvcmdhbml6YXRpb24gaW4gYSBjcm93ZGVkIGJ1c2luZXNzIHNwYWNlIGJ1dCBhbHNvIGdvIGJleW9uZCBlbmdhZ2luZyB0byBlZHVjYXRpbmcgcGFydG5lcnMgYW5kIGNsaWVudHMgaW4gYSBjcm93ZGVkIGFuZCBldm9sdmluZyBrbm93bGVkZ2Ugc3BhY2UuICANCiAgDQo6Ojo6Og0KDQoNCg0KDQoNCg0KIyMjIyBNZW1iZXIsIEJvYXJkIG9mIERpcmVjdG9ycyAvIFZQLCBDb21tdW5pY2F0aW9ucw0KDQo6Ojo6OiBvbmV0YWJOUw0KDQpBTVRBIE9oaW8gQ2hhcHRlciAgDQoyMDA5IE1heSAtIDIwMTEgTWF5ICAgDQoNCjo6Ojo6DQoNCg0KOjo6OjogdHdvdGFiU2VtaVRpZ2h0DQoNCkkgd2FzIGEgbGVhZGVyIG9uIHRoaXMgd29ya2luZyBib2FyZCBvZiBhIHByb2Zlc3Npb25hbCBzb2NpZXR5IGluIGEgdGltZSBvZiBncmVhdCBjaGFuZ2UsIHRha2luZyBvbiBkaWZmaWN1bHQgZXRoaWNhbCBwcm9ibGVtcyBhbmQgcmVkaXJlY3Rpbmcgb3VyIHNpeC1maWd1cmUgYnVkZ2V0IG1vcmUgZGlyZWN0bHkgdG93YXJkcyBvdXIgbWVtYmVycy4gIA0KSW4gb3VyIHdlZWtseSBvcGVyYXRpb25zLCBJIG1hbmFnZWQgYWxsIG91ciBvbmxpbmUgJiBwcmludCBtZWRpYSwgaW5jbHVkaW5nIG1lZGlhIGNyZWF0aW9uIG9uIG15IG93biBhcyB3ZWxsIGFzIHZlbmRvciBtYW5hZ2VtZW50IGZvciBvdXIgd2Vic2l0ZSBhbmQgcHJpbnQgbmV3c2xldHRlci4gIA0KSSBhbHNvIGhlbHBlZCBleHRlbnNpdmVseSB3aXRoIGV2ZW50IG1hbmFnZW1lbnQsIGFzIHdlIHByb2R1Y2VkIDQgLSA2IHNtYWxsZXIgY29udGludWluZyBlZHVjYXRpb24gZXZlbnRzIGVhY2ggeWVhciwgYXMgd2VsbCBhcyBvdXIgbGFyZ2UgYW5udWFsIGNvbmZlcmVuY2Ugd2l0aCB+MjAwIGF0dGVuZGVlcyBhbmQgZG96ZW5zIG9mIHByZXNlbnRlcnMgYW5kIHZlbmRvcnMuICANCiAgDQpUaGlzIHBvc2l0aW9uIHdhcyBhIHNpZ25pZmljYW50IGxlYXJuaW5nIHBvaW50IGluIG9yZ2FuaXphdGlvbmFsIGxlYWRlcnNoaXAsIGluIGEgY29udGV4dCBvZiB2ZXJ5IGNvbnRyYXN0aW5nIGludGVyZXN0cyBhY3Jvc3MgdGhlIGxlYWRlcnNoaXAgdGVhbS4gIA0KVGhlcmUgd2VyZSBib3RoIHN1Y2Nlc3NlcyBhbmQgc2V0YmFja3MgaW4gYnVpbGRpbmcgYnJpZGdlcyBhY3Jvc3MgZ2VuZXJhdGlvbnMgYW5kIGFjcm9zcyBleHBlY3RhdGlvbnMgb2YgZXRoaWNzIGFuZCB0aGUgbmF0dXJlIG9mIHNlcnZpY2UgaW4gbGVhZGVyc2hpcC4gIA0KICANCjo6Ojo6DQoNCg0KDQoNCg0KDQoNCg0KOjo6Og0KDQo6OjoNCg0KDQoNCjwhLS0gZW5kIHR3by1jb2x1bW4gbGF5b3V0IGZvciBXb3JrIEV4cGVyaWVuY2UgLS0+DQo6Ojo6DQoNCg0KDQokfiQgIA0KJH4kICANCiR+JCAgDQoNCi0tLQ0KDQoNCg0KDQoNCiAgDQogDQogDQoNCg0KDQojIyMgRWR1Y2F0aW9uDQoNCiR+JCAgDQoNCjo6OiBiYnANCg0KDQo6Ojo6IHRpZ2h0DQoNCk0uUy4gLS0gUmVzZWFyY2ggTWV0aG9kcyBpbiBFZHVjYXRpb24gdG93YXJkcyBQcm9ncmFtIEV2YWx1YXRpb24gIA0KDQo6Ojo6OiBvbmV0YWJOUw0KDQo6Ojo6OjogdGlnaHQyDQoNCjxzcGFuIHN0eWxlPSJmb250LXNpemU6MThweDsgbWFyZ2luLXRvcDoxNXB4OyI+DQotIGFsc28gZ3JhZHVhdGUgY2VydGlmaWNhdGUgaW4gQXBwbGllZCBTdGF0aXN0aWNzPC9icj4gDQotIGFsc28gZ3JhZHVhdGUgY2VydGlmaWNhdGUgaW4gQXBwbGllZCBFbnZpcm9ubWVudGFsIGFuZCBTdXN0YWluYWJpbGl0eSBTdHVkaWVzPC9icj4NCjwvc3Bhbj4gIA0KDQo6Ojo6OjoNCg0KOjo6OjogIA0KDQo6Ojo6DQogIA0KJH5+fiRVbml2ZXJzaXR5IG9mIEtlbnR1Y2t5OyBMZXhpbmd0b24sIEtZLCBVU0E7IDIwMjINCg0KDQo6OjoNCiAgDQogIA0KDQoNCiR+JCAgDQokfiQgIA0KDQo6OjogYmJwbm9sDQoNCjxkZXRhaWxzPg0KDQo8c3VtbWFyeT5hZGRpdGlvbmFsIGVkdWNhdGlvbiAuIC4gLjwvc3VtbWFyeT4NCg0KIA0KOjo6OiB0aWdodA0KDQo6Ojo6OiBvbmV0YWINCg0KQi5TLiAtLSBJbnRlcmRpc2NpcGxpbmFyeTogSGVhbHRoICYgTW92ZW1lbnQgU2NpZW5jZSBhbmQgQ3VsdHVyZQ0KDQo6Ojo6OjogdHdvdGFiDQoNClRoZSBPaGlvIFN0YXRlIFVuaXZlcnNpdHk7IENvbHVtYnVzLCBPSCwgVVNBOyAyMDAzLCBDdW0gTGF1ZGUNCg0KOjo6Ojo6DQoNCjo6Ojo6DQoNCjo6OjoNCg0KJH4kICANCg0KOjo6OiB0aWdodA0KDQo6Ojo6OiBvbmV0YWINCg0KQ2VydGlmaWNhdGUgLSBDYW1icmlkZ2UgQ0VMVEEgLS0gIENlcnRpZmljYXRlIGluIEVuZ2xpc2ggTGFuZ3VhZ2UgVGVhY2hpbmcgdG8gQWR1bHRzDQoNCjo6Ojo6OiB0d290YWINCg0KQ2FtYnJpZGdlIGNlbnRlciBVUzY0NTsgICBDaGljYWdvLCBJTCwgVVNBOyAgIDIwMTYNCg0KOjo6Ojo6DQoNCjo6Ojo6DQoNCjo6OjoNCg0KJH4kICANCg0KOjo6OiB0aWdodA0KDQo6Ojo6OiBvbmV0YWINCg0KQ2VydGlmaWNhdGUgaW4gTWFzc2FnZSBUaGVyYXB5DQoNCjo6Ojo6OiB0d290YWINCg0KQ29sdW1idXMgU3RhdGUgQ29tbXVuaXR5IENvbGxlZ2U7ICAgQ29sdW1idXMsIE9ILCBVU0E7ICAgMjAwNQ0KDQo6Ojo6OjoNCg0KOjo6OjoNCg0KOjo6Og0KDQo8L2RldGFpbHM+DQoNCjo6Og0KDQoNCg0KDQoNCiMjIyBMYW5ndWFnZXMgIA0KICANCjo6OiBiYnBub2wNCg0KKiBFbmdsaXNoIOKAkyBuYXRpdmUgc3BlYWtlcg0KKiBTcGFuaXNoIOKAkyBDRUZSIEIxKw0KKiBDaGluZXNlIOKAkyBDRUZSIEIxDQoNCjo6Og0KDQoNCg0KDQoNCiMjIyBTdHJlbmd0aHNmaW5kZXIgc3RyZW5ndGhzDQoNCiR+JCAgDQoNCjo6Ojo6IG1hbnVhbEZsZXhib3hTdHJlbmd0aHNGaW5kZXIgIA0KICA8IS0tIC0tLSBsZXQncyB1c2UgY29sdW1ucyAtLS0gLS0+ICAgIA0KICANCjo6Ojoge30NCg0KU3RyYXRlZ2ljDQoNCjo6OjoNCg0KOjo6OiB7fQ0KDQombmJzcDsmbmJzcDvigKImbmJzcDsmbmJzcDsNCg0KOjo6Og0KDQo6Ojo6IHt9DQoNCkxlYXJuZXINCg0KOjo6Og0KDQo6Ojo6IHt9DQoNCiZuYnNwOyZuYnNwO+KAoiZuYnNwOyZuYnNwOw0KDQo6Ojo6DQoNCjo6Ojoge30NCg0KRnV0dXJpc3RpYw0KDQo6Ojo6DQoNCjo6Ojoge30NCg0KJm5ic3A7Jm5ic3A74oCiJm5ic3A7Jm5ic3A7DQoNCjo6OjoNCg0KOjo6OiB7fQ0KDQpBY2hpZXZlcg0KDQo6Ojo6DQoNCjo6Ojoge30NCg0KJm5ic3A7Jm5ic3A74oCiJm5ic3A7Jm5ic3A7DQoNCjo6OjoNCg0KOjo6OiB7fQ0KDQpJbmRpdmlkdWFsaXphdGlvbg0KDQo6Ojo6DQoNCiAgPCEtLSAtLS0gIC0tZW5kIGNvbHVtbnMtLSAtLS0gIC0tPiAgDQo6Ojo6Og0KDQoNCg0KDQoNCg0KDQoNCg0KJH4kICANCiR+JCAgDQokfiQNCg0KLS0tDQogIA0KPGRpdiBzdHlsZT0id2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7Ij4NCjxwIHN0eWxlPSJtYXJnaW46MHB4OyI+DQpmb3IgZXZlbiBtb3JlLCBbZXhwbG9yZSBteSBMaW5rZWRJbl0oaHR0cHM6Ly9saW5rZWRpbi5jb20vaW4vbWlrZXdtbW9vcmUpDQo8L3A+DQo8L2Rpdj4NCg0KLS0tDQoNCg0KJH4kICANCg0KPGRpdiBzdHlsZT0id2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7Ij4NCjxwIHN0eWxlPSJmb250LXNpemU6MTFwdDsiPg0KKmNyZWF0ZWQgd2l0aCBSTWFya2Rvd24gaW4gUlN0dWRpbyB+KiAgDQpjb2RlIGRvd25sb2FkIGF2YWlsYWJsZSBhcyBzaW5nbGUgUk1EICh0b3Agb2YgcGFnZSkgYXMgYSBkZW1vbnN0cmF0aW9uIDopDQo8L3A+DQokfiQgIA0KDQoNCg0KPC9kaXY+DQoNCg==