﻿<Report Version="1.1">
  <Header>
    <Guid>9ddc8e20-72b7-41da-9822-ba3e8c9467b4</Guid>
    <Name>Ведомость учета параметров потребления: ГВС (ТСРВ-024M,TC2,Wтс)</Name>
    <IsSystem>false</IsSystem>
    <Description>Ведомости параметров для системы горячего водоснабжения</Description>
    <DataSource>3</DataSource>
    <EquipTypeId>77</EquipTypeId>
  </Header>
  <Template>Ly8vIDxYUlR5cGVJbmZvPg0KLy8vICAgPEFzc2VtYmx5RnVsbE5hbWU+RGV2RXhwcmVzcy5YdHJhUmVwb3J0cy52MTUuMiwgVmVyc2lvbj0xNS4yLjQuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iODhkMTc1NGQ3MDBlNDlhPC9Bc3NlbWJseUZ1bGxOYW1lPg0KLy8vICAgPEFzc2VtYmx5TG9jYXRpb24+QzpcV0lORE9XU1xNaWNyb3NvZnQuTmV0XGFzc2VtYmx5XEdBQ19NU0lMXERldkV4cHJlc3MuWHRyYVJlcG9ydHMudjE1LjJcdjQuMF8xNS4yLjQuMF9fYjg4ZDE3NTRkNzAwZTQ5YVxEZXZFeHByZXNzLlh0cmFSZXBvcnRzLnYxNS4yLmRsbDwvQXNzZW1ibHlMb2NhdGlvbj4NCi8vLyAgIDxUeXBlTmFtZT5EZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlh0cmFSZXBvcnQ8L1R5cGVOYW1lPg0KLy8vICAgPExvY2FsaXphdGlvbj5ydS1SVTwvTG9jYWxpemF0aW9uPg0KLy8vICAgPFZlcnNpb24+MTUuMjwvVmVyc2lvbj4NCi8vLyAgIDxSZXNvdXJjZXM+DQovLy8gICAgIDxSZXNvdXJjZSBOYW1lPSJYdHJhUmVwb3J0U2VyaWFsaXphdGlvbi5NeVJlcG9ydCI+DQovLy8genNydnZnRUFBQUNSQUFBQWJGTjVjM1JsYlM1U1pYTnZkWEpqWlhNdVVtVnpiM1Z5WTJWU1pXRmtaWElzSUcxelkyOXliR2xpTENCV1pYSnphVzl1UFRRdU1DNHdMakFzSUVOMWJIUjFjbVU5Ym1WMWRISmhiQ3dnVUhWaWJHbGpTMlY1Vkc5clpXNDlZamMzWVRWak5UWXhPVE0wWlRBNE9TTlRlWE4wWlcwdVVtVnpiM1Z5WTJWekxsSjFiblJwYldWU1pYTnZkWEpqWlZObGRBSUFBQUFCQUFBQUFBQUFBRkJCUkZCQlJGQklYbkxCQUFBQUFPY0FBQUFtSkFCMEFHZ0FhUUJ6QUM0QVV3QmpBSElBYVFCd0FIUUFjd0JUQUc4QWRRQnlBR01BWlFBQUFBQUFBZHdFY0hKcGRtRjBaU0IyYjJsa0lFVnljbTl5Y3pKZlFtVm1iM0psVUhKcGJuUW9iMkpxWldOMElITmxibVJsY2l3Z1UzbHpkR1Z0TGtSeVlYZHBibWN1VUhKcGJuUnBibWN1VUhKcGJuUkZkbVZ1ZEVGeVozTWdaU2tnRFFwN0RRb2dJQ0FnZFdsdWRDQnBWbUZzTVNBOUlEQTdEUW9nSUNBZ2FXWWdLQ0ZWU1c1ME16SXVWSEo1VUdGeWMyVW8NCi8vLyBSWEp5YjNKek1pNVVaWGgwTENCdmRYUWdhVlpoYkRFcEtRMEtJQ0FnSUhzTkNpQWdJQ0FnSUNBZ1JYSnliM0p6TWk1VVpYaDBJRDBnSWo4aU95QWdJQ0FOQ2lBZ0lDQWdJQ0FnY21WMGRYSnVPdzBLSUNBZ0lIME5DaUFnSUNCRmNuSnZjbk15TGxSbGVIUWdQU0JRWVhKelpVVnljbTl5Y3locFZtRnNNU2s3RFFwOURRb05DbkJ5YVhaaGRHVWdjM1J5YVc1bklGQmhjbk5sUlhKeWIzSnpLSFZwYm5RZ2FWWmhiREVwRFFwN0RRb2dJQ0FnYzNSeWFXNW5JSE4wY2tKcGRITXhJRDBnSWlJN0RRb2dJQ0FnWm05eUlDaHBiblFnYVNBOUlEUWdLaUE0SUMwZ01Uc2dhU0ErUFNBd095QnBMUzBwRFFvZ0lDQWdldzBLSUNBZ0lDQWdJQ0JwWmlBb0tHbFdZV3d4SUNZZ0tERWdQRHdnYVNrcElDRTlJREFwRFFvZ0lDQWdJQ0FnSUNBZ0lDQnpkSEpDYVhSek1TQXJQU0FpMEwzUmdTSXJhU3NpTENBaU93MEtJQ0FnSUgwTkNnMEtJQ0FnSUNBZ0lDQnBaaUFvYzNSeVFtbDBjekV1VEdWdVozUm9JRDRnTXlrTg0KLy8vIENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRISkNhWFJ6TVNBOUlITjBja0pwZEhNeExsSmxiVzkyWlNoemRISkNhWFJ6TVM1TVpXNW5kR2d0TWlrN0RRb2dJQ0FnY21WMGRYSnVJSE4wY2tKcGRITXhPdzBLZlE9PTwvUmVzb3VyY2U+DQovLy8gICA8L1Jlc291cmNlcz4NCi8vLyA8L1hSVHlwZUluZm8+DQpuYW1lc3BhY2UgWHRyYVJlcG9ydFNlcmlhbGl6YXRpb24gew0KICAgIA0KICAgIHB1YmxpYyBjbGFzcyBNeVJlcG9ydCA6IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWHRyYVJlcG9ydCB7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5EZXRhaWxCYW5kIERldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUgdGFibGVEZXRhaWw7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHJvd0RldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9EYXRhRGF0ZTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UX2luOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjg7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfVF9vdXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfTV9pbjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NX291dDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NX2RlbHRhOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX1BfaW47DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUF9vdXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfSF9pbjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX0hfb3V0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX0hfZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfV29ya1RpbWU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBFcnJvcnMyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuVG9wTWFyZ2luQmFuZCB0b3BNYXJnaW5CYW5kMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkJvdHRvbU1hcmdpbkJhbmQgYm90dG9tTWFyZ2luQmFuZDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5SZXBvcnRIZWFkZXJCYW5kIFJlcG9ydEhlYWRlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWw4Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgUGVyaW9kOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBEZXZOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsNzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIEdtYXg7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIEdtaW47DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIERldlR5cGU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIENvbnN1bWVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBIZWFkZXJUZXh0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBBZGRyZXNzOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDk7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBDb250cmFjdDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkdyb3VwSGVhZGVyQmFuZCBHcm91cEhlYWRlcjE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgUGFnZUhlYWRlclJvdzE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsVGVtcDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbE1hc3M7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxIZWF0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTA7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwzMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgUGFnZUhlYWRlclJvdzI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxODsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI3Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX1QyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX00xOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX00yOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX01kZWx0YTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDIwOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9RZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw0NzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDMxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCBSZXBvcnRGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlNDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw3Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTc7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDY7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw4Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyB0YWJsZVJvdzM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBkdFN0YXJ0RGF0ZUNlbGw7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNMV9FbmQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNMl9FbmQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxOTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgUV9FbmQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyB0YWJsZVJvdzI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBkdEVuZERhdGVDZWxsOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgTTFfU3RhcnQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNMl9TdGFydDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDIxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBRX1N0YXJ0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93NDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNX2luX2RlbHRhOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgTTJfZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI2Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgUV9kZWx0YTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDEyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSB0YWJsZUZvb3RlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgcm93Rm9vdGVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgQ2VsbDA7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBhdmdUMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgYXZnVDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1NMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHN1bU0yOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtTTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGF2Z1AxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgYXZnUDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1RMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE2Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtUTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1ROw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtVzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlBhZ2VGb290ZXJCYW5kIFBhZ2VGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlBpY3R1cmVCb3ggcGljdHVyZUJveDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGQgY2FsY3VsYXRlZEZpZWxkMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCBjYWxjdWxhdGVkRmllbGQyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkIGNhbGN1bGF0ZWRGaWVsZDM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBSZXBBcHBsaWNhdGlvblZlcnNpb247DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBBcmNoVHlwZTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIEVxVHlwZUlkOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgRmxvd1NlbnNvcnNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBUZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBQcmVzc3VyZVNlbnNvcnNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBIZWF0Q2hhbm5lbHNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBIb3RXYXRlckNoYW5uZWxzTnVtYmVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBTdGVhbUNoYW5uZWxzTnVtYmVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgR2FzQ2hhbm5lbHNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBFbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyOw0KICAgICAgICBwcml2YXRlIFN5c3RlbS5SZXNvdXJjZXMuUmVzb3VyY2VNYW5hZ2VyIF9yZXNvdXJjZXM7DQogICAgICAgIHByaXZhdGUgc3RyaW5nIF9yZXNvdXJjZVN0cmluZzsNCiAgICAgICAgcHVibGljIE15UmVwb3J0KCkgew0KICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlNlcmlhbGl6YXRpb24uWFJSZXNvdXJjZU1hbmFnZXIuR2V0UmVzb3VyY2VGb3IoIlh0cmFSZXBvcnRTZXJpYWxpemF0aW9uLk15UmVwb3J0Iik7DQogICAgICAgICAgICB0aGlzLkluaXRpYWxpemVDb21wb25lbnQoKTsNCiAgICAgICAgfQ0KICAgICAgICBwcml2YXRlIFN5c3RlbS5SZXNvdXJjZXMuUmVzb3VyY2VNYW5hZ2VyIHJlc291cmNlcyB7DQogICAgICAgICAgICBnZXQgew0KICAgICAgICAgICAgICAgIGlmIChfcmVzb3VyY2VzID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuU2VyaWFsaXphdGlvbi5YUlJlc291cmNlTWFuYWdlcih0aGlzLl9yZXNvdXJjZVN0cmluZyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXRpYWxpemVDb21wb25lbnQoKSB7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5NCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnk2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5NyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnk5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkxMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkxNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgdGhpcy5EZXRhaWwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5EZXRhaWxCYW5kKCk7DQogICAgICAgICAgICB0aGlzLnRvcE1hcmdpbkJhbmQxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuVG9wTWFyZ2luQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkJvdHRvbU1hcmdpbkJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0SGVhZGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5Hcm91cEhlYWRlcjEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Hcm91cEhlYWRlckJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUGFnZUZvb3RlckJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlKCk7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLkVycm9yczIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlKCk7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3RlciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5NMl9kZWx0YSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLkNlbGwwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmF2Z1QyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnN1bU0gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmF2Z1AyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnN1bVEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnN1bVcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSUGljdHVyZUJveCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkKCk7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGQoKTsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCgpOw0KICAgICAgICAgICAgdGhpcy5Db25zdW1lciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkFkZHJlc3MgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5Db250cmFjdCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkRldlR5cGUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5EZXZOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5HbWF4ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuR21pbiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLlBlcmlvZCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkhlYWRlclRleHQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5SZXBBcHBsaWNhdGlvblZlcnNpb24gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5BcmNoVHlwZSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkVxVHlwZUlkID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuRmxvd1NlbnNvcnNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5UZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5QcmVzc3VyZVNlbnNvcnNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5IZWF0Q2hhbm5lbHNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5Ib3RXYXRlckNoYW5uZWxzTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5TdGVhbUNoYW5uZWxzTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuR2FzQ2hhbm5lbHNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5FbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZURldGFpbCkpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlMykpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlNCkpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlRm9vdGVyKSkuQmVnaW5Jbml0KCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRGV0YWlsDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRGV0YWlsLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWx9KTsNCiAgICAgICAgICAgIHRoaXMuRGV0YWlsLkhlaWdodEYgPSAxNUY7DQogICAgICAgICAgICB0aGlzLkRldGFpbC5OYW1lID0gIkRldGFpbCI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRvcE1hcmdpbkJhbmQxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudG9wTWFyZ2luQmFuZDEuSGVpZ2h0RiA9IDZGOw0KICAgICAgICAgICAgdGhpcy50b3BNYXJnaW5CYW5kMS5OYW1lID0gInRvcE1hcmdpbkJhbmQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYm90dG9tTWFyZ2luQmFuZDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5IZWlnaHRGID0gMThGOw0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5OYW1lID0gImJvdHRvbU1hcmdpbkJhbmQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUmVwb3J0SGVhZGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWw4LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDMsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsNywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWw1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsNiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsOX0pOw0KICAgICAgICAgICAgdGhpcy5SZXBvcnRIZWFkZXIuSGVpZ2h0RiA9IDY4LjAwMDA1RjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyLk5hbWUgPSAiUmVwb3J0SGVhZGVyIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gR3JvdXBIZWFkZXIxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuR3JvdXBIZWFkZXIxLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUzfSk7DQogICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMS5Hcm91cFVuaW9uID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Hcm91cFVuaW9uLldpdGhGaXJzdERldGFpbDsNCiAgICAgICAgICAgIHRoaXMuR3JvdXBIZWFkZXIxLkhlaWdodEYgPSA1MEY7DQogICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMS5OYW1lID0gIkdyb3VwSGVhZGVyMSI7DQogICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMS5SZXBlYXRFdmVyeVBhZ2UgPSB0cnVlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBSZXBvcnRGb290ZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5SZXBvcnRGb290ZXIuQ29udHJvbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJDb250cm9sW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZTQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDExLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDEwfSk7DQogICAgICAgICAgICB0aGlzLlJlcG9ydEZvb3Rlci5IZWlnaHRGID0gMTU5RjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLk5hbWUgPSAiUmVwb3J0Rm9vdGVyIjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLlBhZ2VCcmVhayA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUGFnZUJyZWFrLkFmdGVyQmFuZDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUGFnZUZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXIuQ29udHJvbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJDb250cm9sW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwxMn0pOw0KICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyLkhlaWdodEYgPSAxOEY7DQogICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXIuTmFtZSA9ICJQYWdlRm9vdGVyIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVEZXRhaWwNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZURldGFpbC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuUmVndWxhciwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUpKDIwNCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuTmFtZSA9ICJ0YWJsZURldGFpbCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLlJvd3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvd1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDExMTFGLCAxNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZURldGFpbC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHJvd0RldGFpbA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjgsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4sDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FcnJvcnMyfSk7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5OYW1lID0gInJvd0RldGFpbCI7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0RhdGFEYXRlDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVGltZSIsICJ7MDpkZC5NTS55eXl5fSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuTmFtZSA9ICJ0YWJsZUNlbGxfRGF0YURhdGUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLldlaWdodCA9IDAuMTI3MTAyMTQ3ODkzMjQ4MDZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfVF9pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAudDIxIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLk5hbWUgPSAidGFibGVDZWxsX1RfaW4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4uVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLldlaWdodCA9IDAuMDUzNDgyODU0MDU5ODMzMTQyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjgNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLnQyMiIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5OYW1lID0gInRhYmxlQ2VsbDI4IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LldlaWdodCA9IDAuMDQ1ODU0NzU5MDc2MTQ2MjcyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1Rfb3V0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuY2FsY3VsYXRlZEZpZWxkMyIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0Lk5hbWUgPSAidGFibGVDZWxsX1Rfb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LldlaWdodCA9IDAuMDQ1ODU0NzU5MDc2MTQ2MjcyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX01faW4NCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLk0yMSIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5OYW1lID0gInRhYmxlQ2VsbF9NX2luIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5XZWlnaHQgPSAwLjA3MzUwNDg0Mzc1MzEwMTM4N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9NX291dA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLk0yMiIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0Lk5hbWUgPSAidGFibGVDZWxsX01fb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0LldlaWdodCA9IDAuMDg0NjA4OTM4NTAwMTAzNTIzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX01fZGVsdGENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLmNhbGN1bGF0ZWRGaWVsZDEiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuTmFtZSA9ICJ0YWJsZUNlbGxfTV9kZWx0YSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuV2VpZ2h0ID0gMC4wOTc2NjMxNjk2NzAxMTMwMTVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfUF9pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuUDIxIiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLk5hbWUgPSAidGFibGVDZWxsX1BfaW4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5XZWlnaHQgPSAwLjA1ODk5NTk4Mjk0OTU1MDIxMkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9QX291dA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlAyMiIsICJ7MDpGMX0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuTmFtZSA9ICJ0YWJsZUNlbGxfUF9vdXQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5XZWlnaHQgPSAwLjA1OTM1MzMwOTc0NzE2NjM3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0hfaW4NCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlYyMSIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbi5OYW1lID0gInRhYmxlQ2VsbF9IX2luIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbi5XZWlnaHQgPSAwLjA3OTM2OTIzOTA4NDA5Nzc1MUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDE0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5WMjIiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQuTmFtZSA9ICJ0YWJsZUNlbGwxNCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQuV2VpZ2h0ID0gMC4wNzkzNjkyMjMzMzI2MDEzMjREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfSF9vdXQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQyIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuTmFtZSA9ICJ0YWJsZUNlbGxfSF9vdXQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuV2VpZ2h0ID0gMC4wODM1MzA1NDIyNDg5OTQzMTFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfSF9kZWx0YQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuV9GC0YEyIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLk5hbWUgPSAidGFibGVDZWxsX0hfZGVsdGEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLldlaWdodCA9IDAuMDc1MTkxOTcxOTEzMTE5NDkzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1dvcmtUaW1lDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVNC90LDRgDIiLCAiezA6RjJ9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5OYW1lID0gInRhYmxlQ2VsbF9Xb3JrVGltZSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MS5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLlN1bW1hcnkgPSBzdW1tYXJ5MTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuV2VpZ2h0ID0gMC4wNTc0MzgxODg1MjA5ODgxNDNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBFcnJvcnMyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLtCd0KEyIil9KTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgNkYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5SZWd1bGFyLCBTeXN0ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQuUG9pbnQsICgoYnl0ZSkoMjA0KSkpOw0KICAgICAgICAgICAgdGhpcy5FcnJvcnMyLk5hbWUgPSAiRXJyb3JzMiI7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5FcnJvcnMyLlNjcmlwdHMuT25CZWZvcmVQcmludCA9ICJFcnJvcnMyX0JlZm9yZVByaW50IjsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5XZWlnaHQgPSAwLjEzODkzMzg2MjI5MDM5MDc2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWw4DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWw4LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5QZXJpb2QsICJUZXh0IiwgIiIpfSk7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw4LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDIuNjQ1MDE2RiwgMjBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw4Lk5hbWUgPSAibGFiZWw4IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWw4LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigxMTA4LjM1NUYsIDE2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw4LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDguVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuVG9wQ2VudGVyOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDMuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZyh0aGlzLkRldk51bWJlciwgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwzLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDMuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoNTM3LjYyNzZGLCA1Mi4wMDAwNUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDMuTmFtZSA9ICJsYWJlbDMiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDMuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygyLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwzLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDE4Ni41ODA3RiwgMTZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwzLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDcuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZyh0aGlzLkdtYXgsICJUZXh0IiwgIiIpfSk7DQogICAgICAgICAgICB0aGlzLmxhYmVsNy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw3LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDcyNC4yMDgzRiwgNTIuMDAwMDVGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw3Lk5hbWUgPSAibGFiZWw3IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWw3LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNy5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigzODUuNzkxN0YsIDE2LjAwMDAxRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWw1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWw1LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5HbWluLCAiVGV4dCIsICIiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNS5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCg3MjQuMjA4M0YsIDM2LjAwMDA1Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNS5OYW1lID0gImxhYmVsNSI7DQogICAgICAgICAgICB0aGlzLmxhYmVsNS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMzg1Ljc5MTdGLCAxNkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsMi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKHRoaXMuRGV2VHlwZSwgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDIuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoNTM3LjYyNzZGLCAzNkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDIuTmFtZSA9ICJsYWJlbDIiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygyLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwyLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDE4Ni41ODA4RiwgMTZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDYNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDYuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZyh0aGlzLkNvbnN1bWVyLCAiVGV4dCIsICIiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDYuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNi5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgMzZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw2Lk5hbWUgPSAibGFiZWw2IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWw2LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNi5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyNzIuMDgzM0YsIDE2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWwxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5IZWFkZXJUZXh0LCAiVGV4dCIsICIiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCAxMkYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDIuNjQ1MDE2RiwgMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEuTmFtZSA9ICJsYWJlbDEiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygyLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDExMDguMzU1RiwgMjBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmxhYmVsMS5UZXh0ID0gItCS0LXQtNC+0LzQvtGB0YLRjCDQv9C+0YLRgNC10LHQu9C10L3QuNGPINCz0L7RgNGP0YfQtdC5INCy0L7QtNGLIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcENlbnRlcjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWw0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWw0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5BZGRyZXNzLCAiVGV4dCIsICIiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNC5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgNTJGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw0Lk5hbWUgPSAibGFiZWw0IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWw0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNC5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyODkuNTgzM0YsIDE2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWw5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWw5LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5Db250cmFjdCwgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDkuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMjcyLjA4MzNGLCAzNkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDkuTmFtZSA9ICJsYWJlbDkiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDkuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygyLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDIwMy4wNDQxRiwgMTZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZTMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZTMuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlMy5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuTmFtZSA9ICJ0YWJsZTMiOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuUm93cy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93W10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzJ9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGUzLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDExMTFGLCA1MEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFBhZ2VIZWFkZXJSb3cxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzEuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzB9KTsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzEuTmFtZSA9ICJQYWdlSGVhZGVyUm93MSI7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cxLldlaWdodCA9IDAuNjA5NzU2MDk3NTYwOTc1NkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFBhZ2VIZWFkZXJSb3cyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuQmFja0NvbG9yID0gU3lzdGVtLkRyYXdpbmcuQ29sb3IuVHJhbnNwYXJlbnQ7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLkJvcmRlckNvbG9yID0gU3lzdGVtLkRyYXdpbmcuU3lzdGVtQ29sb3JzLkNvbnRyb2xUZXh0Ow0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5Cb3JkZXJzID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ob25lOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTgsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzF9KTsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Ljc1Rik7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLkZvcmVDb2xvciA9IFN5c3RlbS5EcmF3aW5nLlN5c3RlbUNvbG9ycy5Db250cm9sVGV4dDsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuTmFtZSA9ICJQYWdlSGVhZGVyUm93MiI7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMCwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcExlZnQ7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLldlaWdodCA9IDAuNjA5NzU2MDk3NTYwOTc1NDlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLk11bHRpbGluZSA9IHRydWU7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuTmFtZSA9ICJ0YWJsZUNlbGwxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5UZXh0ID0gIlxyXG7QlNCw0YLQsCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuQm90dG9tQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLldlaWdodCA9IDAuMzgxMjcyMjY3MjgyOTc0NTNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxUZW1wDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLk5hbWUgPSAidGFibGVDZWxsVGVtcCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuVGV4dCA9ICLQotC10LzQv9C10YDQsNGC0YPRgNCwIChbVW5pdEdyb3VwLlRlbXBlcmF0dXJlXSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5XZWlnaHQgPSAwLjQ0MjEwODQxOTQwODI4ODA0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsTWFzcw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5OYW1lID0gInRhYmxlQ2VsbE1hc3MiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLlRleHQgPSAi0JzQsNGB0YHQsCAoW1VuaXRHcm91cC5XZWlnaHRdKSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLldlaWdodCA9IDAuNzcyMzUzMzY5NzU4NzM3ODFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLk5hbWUgPSAidGFibGVDZWxsMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuVGV4dCA9ICLQlNCw0LLQu9C10L3QuNC1IChbVW5pdEdyb3VwLlByZXNzdXJlXSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMi5XZWlnaHQgPSAwLjM1ODk1MTYxMTU1ODE5Mjg4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMTMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuTmFtZSA9ICJ0YWJsZUNlbGwxMyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuVGV4dCA9ICLQntCx0YrQtdC8IChbVW5pdEdyb3VwLlZvbHVtZV0pIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5XZWlnaHQgPSAwLjczMjU4ODA5Mzg4OTk0NDI4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsSGVhdA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5OYW1lID0gInRhYmxlQ2VsbEhlYXQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LlRleHQgPSAi0KLQtdC/0LvQvtGC0LAgKFtVbml0R3JvdXAuVGhlcm1hbEVuZXJneV0pIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuV2VpZ2h0ID0gMC4yMjczNzAwMjg5OTIzMjMxN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDEwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLk11bHRpbGluZSA9IHRydWU7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLk5hbWUgPSAidGFibGVDZWxsMTAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5UZXh0ID0gItCS0YDQtdC80Y8iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5Cb3R0b21DZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLldlaWdodCA9IDAuMTczNjg1NDQwNjY2MTQ0NzVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwzMA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5OYW1lID0gInRhYmxlQ2VsbDMwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuVGV4dCA9ICLQntGI0LjQsdC60LgiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5Cb3R0b21DZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLldlaWdodCA9IDAuNDIwMTE2NDEzNTk4NDcyNzREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxOA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5DYW5Hcm93ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LkNhblNocmluayA9IHRydWU7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4Lk5hbWUgPSAidGFibGVDZWxsMTgiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LldlaWdodCA9IDAuMzgxMzQzNjA5NDMyMjUzODJEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfVDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuTmFtZSA9ICJ0YWJsZUNlbGxfVDEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuVGV4dCA9ICJUMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5XZWlnaHQgPSAwLjE2NDgyMjQ0NTU4NDc0MzA0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuTmFtZSA9ICJ0YWJsZUNlbGwyNyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LlRleHQgPSAiVDIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LldlaWdodCA9IDAuMTM4Njg0MzQ2Mjg3MTg3MzREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfVDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuTmFtZSA9ICJ0YWJsZUNlbGxfVDIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuVGV4dCA9ICLiiIZUIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLldlaWdodCA9IDAuMTM4Njg0MzQ2Mjg3MTg3MzREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfTTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuTmFtZSA9ICJ0YWJsZUNlbGxfTTEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuVGV4dCA9ICJNMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5XZWlnaHQgPSAwLjIyMjMwOTk5NzI2NTY2OTk3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX00yDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLk5hbWUgPSAidGFibGVDZWxsX00yIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLlRleHQgPSAiTTIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuV2VpZ2h0ID0gMC4yNTU4OTM0ODM2MzkwMTFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfTWRlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLk5hbWUgPSAidGFibGVDZWxsX01kZWx0YSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuVGV4dCA9ICLQnCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLldlaWdodCA9IDAuMjk1Mzc0ODc1ODQ1Njk4NzdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyMA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3AgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLk5hbWUgPSAidGFibGVDZWxsMjAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5UZXh0ID0gIlAxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5XZWlnaHQgPSAwLjE3ODQyOTExODk5MDYyMzAzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5OYW1lID0gInRhYmxlQ2VsbDQ0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuVGV4dCA9ICJQMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuV2VpZ2h0ID0gMC4xNzk1MDk1OTQ5MDA2OTU0OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9RMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5OYW1lID0gInRhYmxlQ2VsbF9RMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5UZXh0ID0gIlYxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLldlaWdodCA9IDAuMjQwMDQ2NjU3MTQ0NDc4NTlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfUTINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuTmFtZSA9ICJ0YWJsZUNlbGxfUTIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuVGV4dCA9ICJWMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5XZWlnaHQgPSAwLjI0MDA0NjY0MDQ4NzgyMTU3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMTUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5OYW1lID0gInRhYmxlQ2VsbDE1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5UZXh0ID0gIlYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LldlaWdodCA9IDAuMjUyNjMxNTI3OTAyMDg3N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9RZGVsdGENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuTmFtZSA9ICJ0YWJsZUNlbGxfUWRlbHRhIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5UZXh0ID0gIlEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5XZWlnaHQgPSAwLjIyNzQxMjYyNTc3NjM4NTA1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuQ2FuR3JvdyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5DYW5TaHJpbmsgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5OYW1lID0gInRhYmxlQ2VsbDQ3IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuVGV4dCA9ICIg0YDQsNCxLihbVW5pdEdyb3VwLlRpbWVTcGFuXSlcclxuIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuVG9wQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5XZWlnaHQgPSAwLjE3MzcxNzk4MjY3NDM1MTE1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMzENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuTmFtZSA9ICJ0YWJsZUNlbGwzMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcENlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuV2VpZ2h0ID0gMC40MjAxOTU0NDM4MDM0NDQwOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMTQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Ljc1Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMy4xNzg5MTRFLTA1RiwgMTcuMDAwMDFGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5OYW1lID0gImxhYmVsMTQiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMjIwRiwgMjMuMDAwMDJGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5UZXh0ID0gItCf0L7QutCw0LfQsNC90LjRjyDRgdGH0LXRgtGH0LjQutC+0LIiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUxlZnQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlNC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgNDNGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0Lk5hbWUgPSAidGFibGU0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGU0LlJvd3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvd1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVSb3cxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzMsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUm93MiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVSb3c0fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRig4NTBGLCA4Mi4wMDAwMUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVGb290ZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuQm9yZGVyV2lkdGggPSAyRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLk5hbWUgPSAidGFibGVGb290ZXIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5Sb3dzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3dbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0Zvb3Rlcn0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRig5NzcuOTYzOUYsIDE3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcldpZHRoID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMy45NzM2NDNFLTA1RiwgMTQyRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuTmFtZSA9ICJsYWJlbDExIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDI3OC4yMDgzRiwgMTdGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5UZXh0ID0gItCf0YDQtdC00YHRgtCw0LLQuNGC0LXQu9GMINC+0LHRgdC70YPQttC40LLQsNGO0YnQtdC5INC+0YDQs9Cw0L3QuNC30LDRhtC40Lg6ICI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlTGVmdDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWwxMA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgzLjE3ODkxNEUtMDVGLCAxMjVGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5OYW1lID0gImxhYmVsMTAiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMjc4LjIwODNGLCAxN0YpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLlRleHQgPSAi0J7RgtCy0LXRgtGB0YLQstC10L3QvdGL0Lkg0LfQsCDRg9GH0LXRgiDRgtC10L/Qu9C+0LLQvtC5INGN0L3QtdGA0LPQuNC4OiI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlTGVmdDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3cxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDh9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxLk5hbWUgPSAidGFibGVSb3cxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxLldlaWdodCA9IDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZVJvdzMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzMuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTTFfRW5kLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NMl9FbmQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUV9FbmQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDl9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3czLk5hbWUgPSAidGFibGVSb3czIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3czLldlaWdodCA9IDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZVJvdzINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NMl9TdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIuTmFtZSA9ICJ0YWJsZVJvdzIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIuV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93NA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NC5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTV9pbl9kZWx0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTTJfZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUV9kZWx0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTJ9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0Lk5hbWUgPSAidGFibGVSb3c0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0LlNjcmlwdHMuT25CZWZvcmVQcmludCA9ICJ0YWJsZVJvdzRfQmVmb3JlUHJpbnQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzQuV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLk5hbWUgPSAidGFibGVDZWxsMyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuVGV4dCA9ICLQlNCw0YLQsCDQuCDQstGA0LXQvNGPIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5Ub3BDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuV2VpZ2h0ID0gMC43ODI5NDEyMzU2OTY4NjYxM0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1Lk5hbWUgPSAidGFibGVDZWxsNSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDUuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDUuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDUuVGV4dCA9ICLQnDEsIFtVbml0R3JvdXAuV2VpZ2h0XSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LldlaWdodCA9IDAuNzgyOTQxMzEwMzQzMTc0NkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3Lk5hbWUgPSAidGFibGVDZWxsNyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuVGV4dCA9ICJNMiwgW1VuaXRHcm91cC5XZWlnaHRdIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuV2VpZ2h0ID0gMC43ODI5NDEyMzI5MTc1OTg0M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDE3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUpKDIwNCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuTmFtZSA9ICJ0YWJsZUNlbGwxNyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE3LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuVGV4dCA9ICJWMSwgW1VuaXRHcm91cC5Wb2x1bWVdIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5XZWlnaHQgPSAwLjc4Mjk0MTI0ODY4Mjg3MTI5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkLCBTeXN0ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQuUG9pbnQsICgoYnl0ZSkoMjA0KSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5OYW1lID0gInRhYmxlQ2VsbDIzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5UZXh0ID0gIlYyLCBbVW5pdEdyb3VwLlZvbHVtZV0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLldlaWdodCA9IDAuNzgyOTQxMjQ4NjgyODcxMThEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw2DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5OYW1lID0gInRhYmxlQ2VsbDYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LlRleHQgPSAiUSwgW1VuaXRHcm91cC5UaGVybWFsRW5lcmd5XSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LldlaWdodCA9IDAuNzgyOTQxMjg3NDA2ODEzMTJEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw4DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkLCBTeXN0ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQuUG9pbnQsICgoYnl0ZSkoMjA0KSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Lk5hbWUgPSAidGFibGVDZWxsOCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguVGV4dCA9ICLQktGA0LXQvNGPINGA0LDQsS4sIFtVbml0R3JvdXAuVGltZVNwYW5dIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguV2VpZ2h0ID0gMC44MDIzNTMwNTQyOTM5NTcyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gZHRTdGFydERhdGVDZWxsDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuVGltZSIsICJ7MDpkZC5NTS55eXl5ICAgSEg6bW19Iil9KTsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLk5hbWUgPSAiZHRTdGFydERhdGVDZWxsIjsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLlNjcmlwdHMuT25CZWZvcmVQcmludCA9ICJ0YWJsZUNlbGw3X0JlZm9yZVByaW50IjsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwuV2VpZ2h0ID0gMC43ODI5NDExMzY5NjM1MTREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBNMV9FbmQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5NMjFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLk5hbWUgPSAiTTFfRW5kIjsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNCwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5XZWlnaHQgPSAwLjc4Mjk0MTQwOTA3NjUyNjc2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gTTJfRW5kDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTTJfRW5kLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuTTIyX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5OYW1lID0gIk0yX0VuZCI7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTJfRW5kLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuV2VpZ2h0ID0gMC43ODI5NDExMzQxODQyNDYzOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDE5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5WMjFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuTmFtZSA9ICJ0YWJsZUNlbGwxOSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuV2VpZ2h0ID0gMC43ODI5NDE2NDM2MTYyNzk2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwRW5kLlYyMl9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNC5OYW1lID0gInRhYmxlQ2VsbDI0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNC5XZWlnaHQgPSAwLjc4Mjk0MTQ0NjE0OTU3NTM5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUV9FbmQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5RX0VuZC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwRW5kLlfRgtGBMl9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5RX0VuZC5OYW1lID0gIlFfRW5kIjsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLlFfRW5kLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX0VuZC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuV2VpZ2h0ID0gMC43ODI5NDA4OTI0NzM0MDQ3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsOQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5U0L3QsNGAMl9Ub3RhbCIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5Lk5hbWUgPSAidGFibGVDZWxsOSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA2LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5XZWlnaHQgPSAwLjgwMjM1Mjk1NTU2MDYwNUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGR0RW5kRGF0ZUNlbGwNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBTdGFydC5UaW1lIiwgInswOmRkLk1NLnl5eXkgICBISDptbX0iKX0pOw0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLk5hbWUgPSAiZHRFbmREYXRlQ2VsbCI7DQogICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLldlaWdodCA9IDAuNzg3NTEyOTg0ODMxOTA4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gTTFfU3RhcnQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuTTIxX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0Lk5hbWUgPSAiTTFfU3RhcnQiOw0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5XZWlnaHQgPSAwLjc3ODM2OTQxMzEwODEwNDU5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gTTJfU3RhcnQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuTTIyX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0Lk5hbWUgPSAiTTJfU3RhcnQiOw0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5XZWlnaHQgPSAwLjc4Mjk0MTQ3OTc1MDk3ODYxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuVjIxX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIxLk5hbWUgPSAidGFibGVDZWxsMjEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIxLldlaWdodCA9IDAuNzgyOTQxMDUxMjE2MTY3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuVjIyX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1Lk5hbWUgPSAidGFibGVDZWxsMjUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1LldlaWdodCA9IDAuNzgyOTQxNDQ2MTQ5NTc1MzlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBRX1N0YXJ0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuV9GC0YEyX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuTmFtZSA9ICJRX1N0YXJ0IjsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LldlaWdodCA9IDAuNzgyOTQwODkyNDczNDA0N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDExDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0LlTQvdCw0YAyX1RvdGFsIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExLk5hbWUgPSAidGFibGVDZWxsMTEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDYsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5XZWlnaHQgPSAwLjgwMjM1MzM1MDQ5NDAxMzQ2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuTmFtZSA9ICJ0YWJsZUNlbGw0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuV2VpZ2h0ID0gMC43ODc1MTI4MzY3MzE4Nzk4OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE1faW5fZGVsdGENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5NX2luX2RlbHRhLk5hbWUgPSAiTV9pbl9kZWx0YSI7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuTV9pbl9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTV9pbl9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTV9pbl9kZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuTV9pbl9kZWx0YS5XZWlnaHQgPSAwLjc3ODM2OTc1ODY3NDgzN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE0yX2RlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTTJfZGVsdGEuTmFtZSA9ICJNMl9kZWx0YSI7DQogICAgICAgICAgICB0aGlzLk0yX2RlbHRhLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNCwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLk0yX2RlbHRhLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMl9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTJfZGVsdGEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLk0yX2RlbHRhLldlaWdodCA9IDAuNzgyOTQwOTg2MDg0MjE4MjVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLk5hbWUgPSAidGFibGVDZWxsMjIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLldlaWdodCA9IDAuNzgyOTQxMjQ4NjgyODcxMThEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyNg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2Lk5hbWUgPSAidGFibGVDZWxsMjYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2LldlaWdodCA9IDAuNzgyOTQyMDM4NTQ5Njg4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUV9kZWx0YQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlFfZGVsdGEuTmFtZSA9ICJRX2RlbHRhIjsNCiAgICAgICAgICAgIHRoaXMuUV9kZWx0YS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhLldlaWdodCA9IDAuNzgyOTQwNDk3NTM5OTk2MjhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEyLk5hbWUgPSAidGFibGVDZWxsMTIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDYsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMi5XZWlnaHQgPSAwLjgwMjM1MzI1MTc2MDY2MTNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyByb3dGb290ZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNlbGwwLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdmdUMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjksDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF2Z1QyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1NMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtTTIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bU0sDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF2Z1AxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdmdQMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtUTEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1RMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtUSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtV30pOw0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIuTmFtZSA9ICJyb3dGb290ZXIiOw0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIuV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIENlbGwwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLkNlbGwwLk5hbWUgPSAiQ2VsbDAiOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDAsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5UZXh0ID0gItCY0YLQvtCz0L4iOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLkNlbGwwLldlaWdodCA9IDAuMTI2ODk2NTQxNzkwMDYyMzJEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBhdmdUMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmF2Z1QxLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAudDIxIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5OYW1lID0gImF2Z1QxIjsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5Mi5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkyLkZ1bmMgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlGdW5jLkF2ZzsNCiAgICAgICAgICAgIHN1bW1hcnkyLklnbm9yZU51bGxWYWx1ZXMgPSB0cnVlOw0KICAgICAgICAgICAgc3VtbWFyeTIuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMS5TdW1tYXJ5ID0gc3VtbWFyeTI7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMS5XZWlnaHQgPSAwLjA1NDg0NjU5MTg4NzY5NTA3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjkNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLnQyMiIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5OYW1lID0gInRhYmxlQ2VsbDI5IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkzLkZvcm1hdFN0cmluZyA9ICJ7MDpGMn0iOw0KICAgICAgICAgICAgc3VtbWFyeTMuRnVuYyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeUZ1bmMuQXZnOw0KICAgICAgICAgICAgc3VtbWFyeTMuSWdub3JlTnVsbFZhbHVlcyA9IHRydWU7DQogICAgICAgICAgICBzdW1tYXJ5My5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlN1bW1hcnkgPSBzdW1tYXJ5MzsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LldlaWdodCA9IDAuMDQ2MTQ4ODMyOTg0NTE4NTA5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYXZnVDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5hdmdUMi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLmNhbGN1bGF0ZWRGaWVsZDMiLCAiezA6RjJ9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLk5hbWUgPSAiYXZnVDIiOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnk0LkZvcm1hdFN0cmluZyA9ICJ7MDpGMn0iOw0KICAgICAgICAgICAgc3VtbWFyeTQuRnVuYyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeUZ1bmMuQXZnOw0KICAgICAgICAgICAgc3VtbWFyeTQuSWdub3JlTnVsbFZhbHVlcyA9IHRydWU7DQogICAgICAgICAgICBzdW1tYXJ5NC5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLlN1bW1hcnkgPSBzdW1tYXJ5NDsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLldlaWdodCA9IDAuMDQ2MTQ4ODMyOTg0NTE4NTA5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gc3VtTTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1NMS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLk0yMSIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEuTmFtZSA9ICJzdW1NMSI7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTUuRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICBzdW1tYXJ5NS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlN1bW1hcnkgPSBzdW1tYXJ5NTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnN1bU0xLldlaWdodCA9IDAuMDczOTc2MjQyMDEyNDY4MzNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBzdW1NMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnN1bU0yLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuTTIyIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bU0yLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5OYW1lID0gInN1bU0yIjsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5Ni5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnk2LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuU3VtbWFyeSA9IHN1bW1hcnk2Ow0KICAgICAgICAgICAgdGhpcy5zdW1NMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuV2VpZ2h0ID0gMC4wODUxNTE1NjQzMjU2ODA0NTREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBzdW1NDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtTS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLmNhbGN1bGF0ZWRGaWVsZDEiKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1NLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1NLk5hbWUgPSAic3VtTSI7DQogICAgICAgICAgICB0aGlzLnN1bU0uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTS5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bU0uU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnN1bU0uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5Ny5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnk3LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtTS5TdW1tYXJ5ID0gc3VtbWFyeTc7DQogICAgICAgICAgICB0aGlzLnN1bU0uVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnN1bU0uV2VpZ2h0ID0gMC4wOTgyODk0NDM5MjE4NDQzNDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBhdmdQMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmF2Z1AxLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuUDIxIiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5OYW1lID0gImF2Z1AxIjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTguRm9ybWF0U3RyaW5nID0gInswOkYxfSI7DQogICAgICAgICAgICBzdW1tYXJ5OC5GdW5jID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5RnVuYy5Bdmc7DQogICAgICAgICAgICBzdW1tYXJ5OC5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnk4LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU3VtbWFyeSA9IHN1bW1hcnk4Ow0KICAgICAgICAgICAgdGhpcy5hdmdQMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuV2VpZ2h0ID0gMC4wNTkzNzQzNTU2MDQ2MzYyMzREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBhdmdQMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmF2Z1AyLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuUDIyIiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5OYW1lID0gImF2Z1AyIjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTkuRm9ybWF0U3RyaW5nID0gInswOkYxfSI7DQogICAgICAgICAgICBzdW1tYXJ5OS5GdW5jID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5RnVuYy5Bdmc7DQogICAgICAgICAgICBzdW1tYXJ5OS5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnk5LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU3VtbWFyeSA9IHN1bW1hcnk5Ow0KICAgICAgICAgICAgdGhpcy5hdmdQMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuV2VpZ2h0ID0gMC4wNTk3MzM5MTU1NDM4MDk2MDdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBzdW1RMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnN1bVExLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjIxIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bVExLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5OYW1lID0gInN1bVExIjsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTAuRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICBzdW1tYXJ5MTAuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RMS5TdW1tYXJ5ID0gc3VtbWFyeTEwOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuV2VpZ2h0ID0gMC4wNzk4NzgyNDk5MjMxNjQxNTVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxNg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjIyIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2Lk5hbWUgPSAidGFibGVDZWxsMTYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMS5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxMS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LlN1bW1hcnkgPSBzdW1tYXJ5MTE7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5XZWlnaHQgPSAwLjA3OTg3ODI3Mzk3OTM0MTY2M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bVEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtUTIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQyIil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bVEyLk5hbWUgPSAic3VtUTIiOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bVEyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMi5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxMi5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnN1bVEyLlN1bW1hcnkgPSBzdW1tYXJ5MTI7DQogICAgICAgICAgICB0aGlzLnN1bVEyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RMi5XZWlnaHQgPSAwLjA4NDA2NjA4MTU0MDk2ODg4MkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bVENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1RLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuV9Cz0LIyIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bVEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bVEuTmFtZSA9ICJzdW1RIjsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMy5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxMy5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnN1bVEuU3VtbWFyeSA9IHN1bW1hcnkxMzsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5XZWlnaHQgPSAwLjA3NTY3NDQ1MDk0MzEzNjMzN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bVcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1XLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVNC90LDRgDIiLCAiezA6RjJ9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5OYW1lID0gInN1bVciOw0KICAgICAgICAgICAgdGhpcy5zdW1XLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnN1bVcuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1XLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1XLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTE0LkZvcm1hdFN0cmluZyA9ICJ7MDpGMn0iOw0KICAgICAgICAgICAgc3VtbWFyeTE0LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5TdW1tYXJ5ID0gc3VtbWFyeTE0Ow0KICAgICAgICAgICAgdGhpcy5zdW1XLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1XLldlaWdodCA9IDAuMDU3ODA2NDcyMjY1OTgyOTU2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gcGljdHVyZUJveDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJJbWFnZSIsIG51bGwsICJDb21tb24uQ29weXJpZ2h0SW1hZ2UiKX0pOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MS5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgMEYpOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MS5OYW1lID0gInBpY3R1cmVCb3gxIjsNCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMThGLCAxOEYpOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MS5TaXppbmcgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5JbWFnZVNpemVNb2RlLlN0cmV0Y2hJbWFnZTsNCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuVGFnID0gIlZ6bGpvdExvZ28iOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5BdXRvV2lkdGggPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyLkNhblNocmluayA9IHRydWU7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJDb21tb24uQ29weXJpZ2h0VGV4dCIpfSk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMjRGLCAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuTmFtZSA9ICJsYWJlbDEyIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDQyMEYsIDE4Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuV29yZFdyYXAgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2FsY3VsYXRlZEZpZWxkMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDEuRGF0YU1lbWJlciA9ICJFcXVpcCI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDEuRXhwcmVzc2lvbiA9ICJbTTIxXSAtIFtNMjJdIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMS5OYW1lID0gImNhbGN1bGF0ZWRGaWVsZDEiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBjYWxjdWxhdGVkRmllbGQyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMi5EYXRhTWVtYmVyID0gIkVxdWlwIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMi5FeHByZXNzaW9uID0gIltWMjFdIC0gW1YyMl0iOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyLk5hbWUgPSAiY2FsY3VsYXRlZEZpZWxkMiI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZWRGaWVsZDMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQzLkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQzLkV4cHJlc3Npb24gPSAiW3QyMV0tW3QyMl0iOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQzLk5hbWUgPSAiY2FsY3VsYXRlZEZpZWxkMyI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIENvbnN1bWVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQ29uc3VtZXIuRGVzY3JpcHRpb24gPSAiQ29uc3VtZXIiOw0KICAgICAgICAgICAgdGhpcy5Db25zdW1lci5OYW1lID0gIkNvbnN1bWVyIjsNCiAgICAgICAgICAgIHRoaXMuQ29uc3VtZXIuVmFsdWVJbmZvID0gItCf0L7RgtGA0LXQsdC40YLQtdC70Yw6ICI7DQogICAgICAgICAgICB0aGlzLkNvbnN1bWVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gQWRkcmVzcw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkFkZHJlc3MuRGVzY3JpcHRpb24gPSAiQWRkcmVzcyI7DQogICAgICAgICAgICB0aGlzLkFkZHJlc3MuTmFtZSA9ICJBZGRyZXNzIjsNCiAgICAgICAgICAgIHRoaXMuQWRkcmVzcy5WYWx1ZUluZm8gPSAi0JDQtNGA0LXRgTogIjsNCiAgICAgICAgICAgIHRoaXMuQWRkcmVzcy5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIENvbnRyYWN0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQ29udHJhY3QuRGVzY3JpcHRpb24gPSAiQ29udHJhY3QiOw0KICAgICAgICAgICAgdGhpcy5Db250cmFjdC5OYW1lID0gIkNvbnRyYWN0IjsNCiAgICAgICAgICAgIHRoaXMuQ29udHJhY3QuVmFsdWVJbmZvID0gItCf0L7QtNC60LvRjtGH0LXQvSDQuiDQsNCx0L7QvdC10L3RgtGDOiAiOw0KICAgICAgICAgICAgdGhpcy5Db250cmFjdC5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIERldlR5cGUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5EZXZUeXBlLkRlc2NyaXB0aW9uID0gIkRldlR5cGUiOw0KICAgICAgICAgICAgdGhpcy5EZXZUeXBlLk5hbWUgPSAiRGV2VHlwZSI7DQogICAgICAgICAgICB0aGlzLkRldlR5cGUuVmFsdWVJbmZvID0gItCi0LjQvyDQv9GA0LjQsdC+0YDQsDogIjsNCiAgICAgICAgICAgIHRoaXMuRGV2VHlwZS5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIERldk51bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkRldk51bWJlci5EZXNjcmlwdGlvbiA9ICJEZXZOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5EZXZOdW1iZXIuTmFtZSA9ICJEZXZOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5EZXZOdW1iZXIuVmFsdWVJbmZvID0gItCd0L7QvNC10YAg0L/RgNC40LHQvtGA0LA6ICI7DQogICAgICAgICAgICB0aGlzLkRldk51bWJlci5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEdtYXgNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5HbWF4LkRlc2NyaXB0aW9uID0gIkdtYXgiOw0KICAgICAgICAgICAgdGhpcy5HbWF4Lk5hbWUgPSAiR21heCI7DQogICAgICAgICAgICB0aGlzLkdtYXguVmFsdWVJbmZvID0gItCd0LDQuNCx0L7Qu9GM0YjQuNC5INGA0LDRgdGF0L7QtCDRgtC10L/Qu9C+0L3QvtGB0LjRgtC10LvRjyBHbWF4OiAiOw0KICAgICAgICAgICAgdGhpcy5HbWF4LlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gR21pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkdtaW4uRGVzY3JpcHRpb24gPSAiR21pbiI7DQogICAgICAgICAgICB0aGlzLkdtaW4uTmFtZSA9ICJHbWluIjsNCiAgICAgICAgICAgIHRoaXMuR21pbi5WYWx1ZUluZm8gPSAi0J3QsNC40LzQtdC90YzRiNC40Lkg0YDQsNGB0YXQvtC0INGC0LXQv9C70L7QvdC+0YHQuNGC0LXQu9GPIEdtaW46ICI7DQogICAgICAgICAgICB0aGlzLkdtaW4uVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBQZXJpb2QNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5QZXJpb2QuRGVzY3JpcHRpb24gPSAiUGVyaW9kIjsNCiAgICAgICAgICAgIHRoaXMuUGVyaW9kLk5hbWUgPSAiUGVyaW9kIjsNCiAgICAgICAgICAgIHRoaXMuUGVyaW9kLlZhbHVlSW5mbyA9ICLQt9CwINC/0LXRgNC40L7QtCDRgSAyMy4wOC4yMDE2INC/0L4gMjMuMDguMjAxNiI7DQogICAgICAgICAgICB0aGlzLlBlcmlvZC5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEhlYWRlclRleHQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5IZWFkZXJUZXh0LkRlc2NyaXB0aW9uID0gIkhlYWRlclRleHQiOw0KICAgICAgICAgICAgdGhpcy5IZWFkZXJUZXh0Lk5hbWUgPSAiSGVhZGVyVGV4dCI7DQogICAgICAgICAgICB0aGlzLkhlYWRlclRleHQuVmFsdWVJbmZvID0gItCS0LXQtNC+0LzQvtGB0YLRjCDQv9C+0YLRgNC10LHQu9C10L3QuNGPINCz0L7RgNGP0YfQtdC5INCy0L7QtNGLIjsNCiAgICAgICAgICAgIHRoaXMuSGVhZGVyVGV4dC5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFJlcEFwcGxpY2F0aW9uVmVyc2lvbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlJlcEFwcGxpY2F0aW9uVmVyc2lvbi5OYW1lID0gIlJlcEFwcGxpY2F0aW9uVmVyc2lvbiI7DQogICAgICAgICAgICB0aGlzLlJlcEFwcGxpY2F0aW9uVmVyc2lvbi5WYWx1ZUluZm8gPSAiMC4wMSI7DQogICAgICAgICAgICB0aGlzLlJlcEFwcGxpY2F0aW9uVmVyc2lvbi5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEFyY2hUeXBlDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQXJjaFR5cGUuTmFtZSA9ICJBcmNoVHlwZSI7DQogICAgICAgICAgICB0aGlzLkFyY2hUeXBlLlR5cGUgPSB0eXBlb2YoaW50KTsNCiAgICAgICAgICAgIHRoaXMuQXJjaFR5cGUuVmFsdWVJbmZvID0gIjIiOw0KICAgICAgICAgICAgdGhpcy5BcmNoVHlwZS5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEVxVHlwZUlkDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRXFUeXBlSWQuTmFtZSA9ICJFcVR5cGVJZCI7DQogICAgICAgICAgICB0aGlzLkVxVHlwZUlkLlR5cGUgPSB0eXBlb2YoaW50KTsNCiAgICAgICAgICAgIHRoaXMuRXFUeXBlSWQuVmFsdWVJbmZvID0gIjc3IjsNCiAgICAgICAgICAgIHRoaXMuRXFUeXBlSWQuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBGbG93U2Vuc29yc051bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkZsb3dTZW5zb3JzTnVtYmVyLk5hbWUgPSAiRmxvd1NlbnNvcnNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5GbG93U2Vuc29yc051bWJlci5WYWx1ZUluZm8gPSAiMCI7DQogICAgICAgICAgICB0aGlzLkZsb3dTZW5zb3JzTnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gVGVtcGVyYXR1cmVTZW5zb3JzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuVGVtcGVyYXR1cmVTZW5zb3JzTnVtYmVyLk5hbWUgPSAiVGVtcGVyYXR1cmVTZW5zb3JzTnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuVGVtcGVyYXR1cmVTZW5zb3JzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuVGVtcGVyYXR1cmVTZW5zb3JzTnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUHJlc3N1cmVTZW5zb3JzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUHJlc3N1cmVTZW5zb3JzTnVtYmVyLk5hbWUgPSAiUHJlc3N1cmVTZW5zb3JzTnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuUHJlc3N1cmVTZW5zb3JzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuUHJlc3N1cmVTZW5zb3JzTnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gSGVhdENoYW5uZWxzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuSGVhdENoYW5uZWxzTnVtYmVyLk5hbWUgPSAiSGVhdENoYW5uZWxzTnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuSGVhdENoYW5uZWxzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuSGVhdENoYW5uZWxzTnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gSG90V2F0ZXJDaGFubmVsc051bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkhvdFdhdGVyQ2hhbm5lbHNOdW1iZXIuTmFtZSA9ICJIb3RXYXRlckNoYW5uZWxzTnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuSG90V2F0ZXJDaGFubmVsc051bWJlci5WYWx1ZUluZm8gPSAiMCI7DQogICAgICAgICAgICB0aGlzLkhvdFdhdGVyQ2hhbm5lbHNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBDb2xkV2F0ZXJDaGFubmVsc051bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkNvbGRXYXRlckNoYW5uZWxzTnVtYmVyLk5hbWUgPSAiQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5Db2xkV2F0ZXJDaGFubmVsc051bWJlci5WYWx1ZUluZm8gPSAiMCI7DQogICAgICAgICAgICB0aGlzLkNvbGRXYXRlckNoYW5uZWxzTnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gU3RlYW1DaGFubmVsc051bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlN0ZWFtQ2hhbm5lbHNOdW1iZXIuTmFtZSA9ICJTdGVhbUNoYW5uZWxzTnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuU3RlYW1DaGFubmVsc051bWJlci5WYWx1ZUluZm8gPSAiMCI7DQogICAgICAgICAgICB0aGlzLlN0ZWFtQ2hhbm5lbHNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBHYXNDaGFubmVsc051bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkdhc0NoYW5uZWxzTnVtYmVyLk5hbWUgPSAiR2FzQ2hhbm5lbHNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5HYXNDaGFubmVsc051bWJlci5WYWx1ZUluZm8gPSAiMCI7DQogICAgICAgICAgICB0aGlzLkdhc0NoYW5uZWxzTnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRWxlY3RyaWNpdHlDaGFubmVsc051bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkVsZWN0cmljaXR5Q2hhbm5lbHNOdW1iZXIuTmFtZSA9ICJFbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuRWxlY3RyaWNpdHlDaGFubmVsc051bWJlci5WYWx1ZUluZm8gPSAiMCI7DQogICAgICAgICAgICB0aGlzLkVsZWN0cmljaXR5Q2hhbm5lbHNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBNeVJlcG9ydA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkJhbmRzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkJhbmRbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkRldGFpbCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9wTWFyZ2luQmFuZDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU1hcmdpbkJhbmQxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5SZXBvcnRIZWFkZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyfSk7DQogICAgICAgICAgICB0aGlzLkNhbGN1bGF0ZWRGaWVsZHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQzfSk7DQogICAgICAgICAgICB0aGlzLkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5EaXNwbGF5TmFtZSA9ICLQk9CS0KEg0LLQviAyINCi0KEg0YLRgdGA0LItMjTQnCI7DQogICAgICAgICAgICB0aGlzLkV4dGVuc2lvbnMuQWRkKCJTdG9yYWdlSUQiLCAiMTIiKTsNCiAgICAgICAgICAgIHRoaXMuTGFuZHNjYXBlID0gdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMuTWFyZ2lucyA9IG5ldyBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5NYXJnaW5zKDM5LCAxOSwgNiwgMTgpOw0KICAgICAgICAgICAgdGhpcy5OYW1lID0gIk15UmVwb3J0IjsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlaWdodCA9IDgyNzsNCiAgICAgICAgICAgIHRoaXMuUGFnZVdpZHRoID0gMTE2OTsNCiAgICAgICAgICAgIHRoaXMuUGFwZXJLaW5kID0gU3lzdGVtLkRyYXdpbmcuUHJpbnRpbmcuUGFwZXJLaW5kLkE0Ow0KICAgICAgICAgICAgdGhpcy5QYXJhbWV0ZXJzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Db25zdW1lciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQWRkcmVzcywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ29udHJhY3QsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkRldlR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkRldk51bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuR21heCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuR21pbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUGVyaW9kLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IZWFkZXJUZXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5SZXBBcHBsaWNhdGlvblZlcnNpb24sDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFyY2hUeXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FcVR5cGVJZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRmxvd1NlbnNvcnNOdW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlRlbXBlcmF0dXJlU2Vuc29yc051bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUHJlc3N1cmVTZW5zb3JzTnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5IZWF0Q2hhbm5lbHNOdW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkhvdFdhdGVyQ2hhbm5lbHNOdW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNvbGRXYXRlckNoYW5uZWxzTnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5TdGVhbUNoYW5uZWxzTnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5HYXNDaGFubmVsc051bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRWxlY3RyaWNpdHlDaGFubmVsc051bWJlcn0pOw0KICAgICAgICAgICAgdGhpcy5SZXF1ZXN0UGFyYW1ldGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5TY3JpcHRzU291cmNlID0gcmVzb3VyY2VzLkdldFN0cmluZygiJHRoaXMuU2NyaXB0c1NvdXJjZSIpOw0KICAgICAgICAgICAgdGhpcy5TdHlsZVNoZWV0UGF0aCA9IG51bGw7DQogICAgICAgICAgICB0aGlzLlZlcnNpb24gPSAiMTUuMiI7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMudGFibGVEZXRhaWwpKS5FbmRJbml0KCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMudGFibGUzKSkuRW5kSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlNCkpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZUZvb3RlcikpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcykpLkVuZEluaXQoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg==</Template>
</Report>