﻿<Report Version="1.1">
  <Header>
    <Guid>3fc64678-48f3-4fa3-a3b9-a02d6f58b456</Guid>
    <Name>Ведомость учета параметров потребления: ГВС (ТСРВ-024M,ТС1,Wтс)</Name>
    <IsSystem>false</IsSystem>
    <Description>Ведомости параметров для системы горячего водоснабжения</Description>
    <DataSource>3</DataSource>
    <EquipTypeId>77</EquipTypeId>
  </Header>
  <Template>Ly8vIDxYUlR5cGVJbmZvPg0KLy8vICAgPEFzc2VtYmx5RnVsbE5hbWU+RGV2RXhwcmVzcy5YdHJhUmVwb3J0cy52MTUuMiwgVmVyc2lvbj0xNS4yLjQuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iODhkMTc1NGQ3MDBlNDlhPC9Bc3NlbWJseUZ1bGxOYW1lPg0KLy8vICAgPEFzc2VtYmx5TG9jYXRpb24+QzpcV0lORE9XU1xNaWNyb3NvZnQuTmV0XGFzc2VtYmx5XEdBQ19NU0lMXERldkV4cHJlc3MuWHRyYVJlcG9ydHMudjE1LjJcdjQuMF8xNS4yLjQuMF9fYjg4ZDE3NTRkNzAwZTQ5YVxEZXZFeHByZXNzLlh0cmFSZXBvcnRzLnYxNS4yLmRsbDwvQXNzZW1ibHlMb2NhdGlvbj4NCi8vLyAgIDxUeXBlTmFtZT5EZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlh0cmFSZXBvcnQ8L1R5cGVOYW1lPg0KLy8vICAgPExvY2FsaXphdGlvbj5ydS1SVTwvTG9jYWxpemF0aW9uPg0KLy8vICAgPFZlcnNpb24+MTUuMjwvVmVyc2lvbj4NCi8vLyAgIDxSZXNvdXJjZXM+DQovLy8gICAgIDxSZXNvdXJjZSBOYW1lPSJYdHJhUmVwb3J0U2VyaWFsaXphdGlvbi5NeVJlcG9ydCI+DQovLy8genNydnZnRUFBQUNSQUFBQWJGTjVjM1JsYlM1U1pYTnZkWEpqWlhNdVVtVnpiM1Z5WTJWU1pXRmtaWElzSUcxelkyOXliR2xpTENCV1pYSnphVzl1UFRRdU1DNHdMakFzSUVOMWJIUjFjbVU5Ym1WMWRISmhiQ3dnVUhWaWJHbGpTMlY1Vkc5clpXNDlZamMzWVRWak5UWXhPVE0wWlRBNE9TTlRlWE4wWlcwdVVtVnpiM1Z5WTJWekxsSjFiblJwYldWU1pYTnZkWEpqWlZObGRBSUFBQUFCQUFBQUFBQUFBRkJCUkZCQlJGQklYbkxCQUFBQUFPY0FBQUFtSkFCMEFHZ0FhUUJ6QUM0QVV3QmpBSElBYVFCd0FIUUFjd0JUQUc4QWRRQnlBR01BWlFBQUFBQUFBZHdFY0hKcGRtRjBaU0IyYjJsa0lFVnljbTl5Y3pKZlFtVm1iM0psVUhKcGJuUW9iMkpxWldOMElITmxibVJsY2l3Z1UzbHpkR1Z0TGtSeVlYZHBibWN1VUhKcGJuUnBibWN1VUhKcGJuUkZkbVZ1ZEVGeVozTWdaU2tnRFFwN0RRb2dJQ0FnZFdsdWRDQnBWbUZzTVNBOUlEQTdEUW9nSUNBZ2FXWWdLQ0ZWU1c1ME16SXVWSEo1VUdGeWMyVW8NCi8vLyBSWEp5YjNKek1pNVVaWGgwTENCdmRYUWdhVlpoYkRFcEtRMEtJQ0FnSUhzTkNpQWdJQ0FnSUNBZ1JYSnliM0p6TWk1VVpYaDBJRDBnSWo4aU95QWdJQ0FOQ2lBZ0lDQWdJQ0FnY21WMGRYSnVPdzBLSUNBZ0lIME5DaUFnSUNCRmNuSnZjbk15TGxSbGVIUWdQU0JRWVhKelpVVnljbTl5Y3locFZtRnNNU2s3RFFwOURRb05DbkJ5YVhaaGRHVWdjM1J5YVc1bklGQmhjbk5sUlhKeWIzSnpLSFZwYm5RZ2FWWmhiREVwRFFwN0RRb2dJQ0FnYzNSeWFXNW5JSE4wY2tKcGRITXhJRDBnSWlJN0RRb2dJQ0FnWm05eUlDaHBiblFnYVNBOUlEUWdLaUE0SUMwZ01Uc2dhU0ErUFNBd095QnBMUzBwRFFvZ0lDQWdldzBLSUNBZ0lDQWdJQ0JwWmlBb0tHbFdZV3d4SUNZZ0tERWdQRHdnYVNrcElDRTlJREFwRFFvZ0lDQWdJQ0FnSUNBZ0lDQnpkSEpDYVhSek1TQXJQU0FpMEwzUmdTSXJhU3NpTENBaU93MEtJQ0FnSUgwTkNnMEtJQ0FnSUNBZ0lDQnBaaUFvYzNSeVFtbDBjekV1VEdWdVozUm9JRDRnTXlrTg0KLy8vIENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRISkNhWFJ6TVNBOUlITjBja0pwZEhNeExsSmxiVzkyWlNoemRISkNhWFJ6TVM1TVpXNW5kR2d0TWlrN0RRb2dJQ0FnY21WMGRYSnVJSE4wY2tKcGRITXhPdzBLZlE9PTwvUmVzb3VyY2U+DQovLy8gICA8L1Jlc291cmNlcz4NCi8vLyA8L1hSVHlwZUluZm8+DQpuYW1lc3BhY2UgWHRyYVJlcG9ydFNlcmlhbGl6YXRpb24gew0KICAgIA0KICAgIHB1YmxpYyBjbGFzcyBNeVJlcG9ydCA6IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWHRyYVJlcG9ydCB7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5EZXRhaWxCYW5kIERldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUgdGFibGVEZXRhaWw7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHJvd0RldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9EYXRhRGF0ZTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UX2luOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjg7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfVF9vdXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfTV9pbjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NX291dDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NX2RlbHRhOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX1BfaW47DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUF9vdXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfSF9pbjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX0hfb3V0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX0hfZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfV29ya1RpbWU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBFcnJvcnMyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuVG9wTWFyZ2luQmFuZCB0b3BNYXJnaW5CYW5kMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkJvdHRvbU1hcmdpbkJhbmQgYm90dG9tTWFyZ2luQmFuZDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5SZXBvcnRIZWFkZXJCYW5kIFJlcG9ydEhlYWRlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWw4Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgUGVyaW9kOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBEZXZOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsNzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIEdtYXg7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIEdtaW47DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIERldlR5cGU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIENvbnN1bWVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBIZWFkZXJUZXh0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBBZGRyZXNzOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCBsYWJlbDk7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBDb250cmFjdDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkdyb3VwSGVhZGVyQmFuZCBHcm91cEhlYWRlcjE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgUGFnZUhlYWRlclJvdzE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsVGVtcDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbE1hc3M7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxIZWF0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTA7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwzMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgUGFnZUhlYWRlclJvdzI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxODsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI3Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX1QyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX00xOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX00yOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX01kZWx0YTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDIwOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9RZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw0NzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDMxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCBSZXBvcnRGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlNDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw3Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTc7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDY7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw4Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyB0YWJsZVJvdzM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBkdFN0YXJ0RGF0ZUNlbGw7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNMV9FbmQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNMl9FbmQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxOTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgUV9FbmQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyB0YWJsZVJvdzI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBkdEVuZERhdGVDZWxsOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgTTFfU3RhcnQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNMl9TdGFydDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDIxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBRX1N0YXJ0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93NDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBNX2luX2RlbHRhOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgTTJfZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI2Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgUV9kZWx0YTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDEyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSB0YWJsZUZvb3RlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgcm93Rm9vdGVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgQ2VsbDA7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBhdmdUMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgYXZnVDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1NMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHN1bU0yOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtTTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGF2Z1AxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgYXZnUDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1RMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE2Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtUTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1ROw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtVzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlBhZ2VGb290ZXJCYW5kIFBhZ2VGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlBpY3R1cmVCb3ggcGljdHVyZUJveDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGQgY2FsY3VsYXRlZEZpZWxkMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCBjYWxjdWxhdGVkRmllbGQyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkIGNhbGN1bGF0ZWRGaWVsZDM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBSZXBBcHBsaWNhdGlvblZlcnNpb247DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBBcmNoVHlwZTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyIEVxVHlwZUlkOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgRmxvd1NlbnNvcnNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBUZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBQcmVzc3VyZVNlbnNvcnNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBIZWF0Q2hhbm5lbHNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBIb3RXYXRlckNoYW5uZWxzTnVtYmVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBTdGVhbUNoYW5uZWxzTnVtYmVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIgR2FzQ2hhbm5lbHNOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlciBFbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyOw0KICAgICAgICBwcml2YXRlIFN5c3RlbS5SZXNvdXJjZXMuUmVzb3VyY2VNYW5hZ2VyIF9yZXNvdXJjZXM7DQogICAgICAgIHByaXZhdGUgc3RyaW5nIF9yZXNvdXJjZVN0cmluZzsNCiAgICAgICAgcHVibGljIE15UmVwb3J0KCkgew0KICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlNlcmlhbGl6YXRpb24uWFJSZXNvdXJjZU1hbmFnZXIuR2V0UmVzb3VyY2VGb3IoIlh0cmFSZXBvcnRTZXJpYWxpemF0aW9uLk15UmVwb3J0Iik7DQogICAgICAgICAgICB0aGlzLkluaXRpYWxpemVDb21wb25lbnQoKTsNCiAgICAgICAgfQ0KICAgICAgICBwcml2YXRlIFN5c3RlbS5SZXNvdXJjZXMuUmVzb3VyY2VNYW5hZ2VyIHJlc291cmNlcyB7DQogICAgICAgICAgICBnZXQgew0KICAgICAgICAgICAgICAgIGlmIChfcmVzb3VyY2VzID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuU2VyaWFsaXphdGlvbi5YUlJlc291cmNlTWFuYWdlcih0aGlzLl9yZXNvdXJjZVN0cmluZyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXRpYWxpemVDb21wb25lbnQoKSB7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5NCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnk2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5NyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnk5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkxMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkxNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgdGhpcy5EZXRhaWwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5EZXRhaWxCYW5kKCk7DQogICAgICAgICAgICB0aGlzLnRvcE1hcmdpbkJhbmQxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuVG9wTWFyZ2luQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkJvdHRvbU1hcmdpbkJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0SGVhZGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5Hcm91cEhlYWRlcjEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Hcm91cEhlYWRlckJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUGFnZUZvb3RlckJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlKCk7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLkVycm9yczIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlKCk7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3RlciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5NMl9kZWx0YSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLkNlbGwwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmF2Z1QyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnN1bU0gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmF2Z1AyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnN1bVEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnN1bVcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSUGljdHVyZUJveCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkKCk7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGQoKTsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCgpOw0KICAgICAgICAgICAgdGhpcy5Db25zdW1lciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkFkZHJlc3MgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5Db250cmFjdCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkRldlR5cGUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5EZXZOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5HbWF4ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuR21pbiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLlBlcmlvZCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkhlYWRlclRleHQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5SZXBBcHBsaWNhdGlvblZlcnNpb24gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5BcmNoVHlwZSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlBhcmFtZXRlcnMuUGFyYW1ldGVyKCk7DQogICAgICAgICAgICB0aGlzLkVxVHlwZUlkID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuRmxvd1NlbnNvcnNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5UZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5QcmVzc3VyZVNlbnNvcnNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5IZWF0Q2hhbm5lbHNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5Ib3RXYXRlckNoYW5uZWxzTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5TdGVhbUNoYW5uZWxzTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgIHRoaXMuR2FzQ2hhbm5lbHNOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5QYXJhbWV0ZXJzLlBhcmFtZXRlcigpOw0KICAgICAgICAgICAgdGhpcy5FbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXIoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZURldGFpbCkpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlMykpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlNCkpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlRm9vdGVyKSkuQmVnaW5Jbml0KCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRGV0YWlsDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRGV0YWlsLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWx9KTsNCiAgICAgICAgICAgIHRoaXMuRGV0YWlsLkhlaWdodEYgPSAxNUY7DQogICAgICAgICAgICB0aGlzLkRldGFpbC5OYW1lID0gIkRldGFpbCI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRvcE1hcmdpbkJhbmQxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudG9wTWFyZ2luQmFuZDEuSGVpZ2h0RiA9IDZGOw0KICAgICAgICAgICAgdGhpcy50b3BNYXJnaW5CYW5kMS5OYW1lID0gInRvcE1hcmdpbkJhbmQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYm90dG9tTWFyZ2luQmFuZDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5IZWlnaHRGID0gMThGOw0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5OYW1lID0gImJvdHRvbU1hcmdpbkJhbmQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUmVwb3J0SGVhZGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWw4LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDMsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsNywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWw1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsNiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsOX0pOw0KICAgICAgICAgICAgdGhpcy5SZXBvcnRIZWFkZXIuSGVpZ2h0RiA9IDY4LjAwMDA1RjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyLk5hbWUgPSAiUmVwb3J0SGVhZGVyIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gR3JvdXBIZWFkZXIxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuR3JvdXBIZWFkZXIxLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUzfSk7DQogICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMS5Hcm91cFVuaW9uID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Hcm91cFVuaW9uLldpdGhGaXJzdERldGFpbDsNCiAgICAgICAgICAgIHRoaXMuR3JvdXBIZWFkZXIxLkhlaWdodEYgPSA1MEY7DQogICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMS5OYW1lID0gIkdyb3VwSGVhZGVyMSI7DQogICAgICAgICAgICB0aGlzLkdyb3VwSGVhZGVyMS5SZXBlYXRFdmVyeVBhZ2UgPSB0cnVlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBSZXBvcnRGb290ZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5SZXBvcnRGb290ZXIuQ29udHJvbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJDb250cm9sW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZTQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDExLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDEwfSk7DQogICAgICAgICAgICB0aGlzLlJlcG9ydEZvb3Rlci5IZWlnaHRGID0gMTU5RjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLk5hbWUgPSAiUmVwb3J0Rm9vdGVyIjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLlBhZ2VCcmVhayA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUGFnZUJyZWFrLkFmdGVyQmFuZDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUGFnZUZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXIuQ29udHJvbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJDb250cm9sW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwxMn0pOw0KICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyLkhlaWdodEYgPSAxOEY7DQogICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXIuTmFtZSA9ICJQYWdlRm9vdGVyIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVEZXRhaWwNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZURldGFpbC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuUmVndWxhciwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUpKDIwNCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuTmFtZSA9ICJ0YWJsZURldGFpbCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLlJvd3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvd1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDExMTFGLCAxNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZURldGFpbC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHJvd0RldGFpbA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjgsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4sDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FcnJvcnMyfSk7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5OYW1lID0gInJvd0RldGFpbCI7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0RhdGFEYXRlDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVGltZSIsICJ7MDpkZC5NTS55eXl5fSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuTmFtZSA9ICJ0YWJsZUNlbGxfRGF0YURhdGUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLldlaWdodCA9IDAuMTI3MTAyMTQ3ODkzMjQ4MDZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfVF9pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAudDEzIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLk5hbWUgPSAidGFibGVDZWxsX1RfaW4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4uVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLldlaWdodCA9IDAuMDUzNDgyODU0MDU5ODMzMTQyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjgNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLnQxNCIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5OYW1lID0gInRhYmxlQ2VsbDI4IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LldlaWdodCA9IDAuMDQ1ODU0NzU5MDc2MTQ2MjcyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1Rfb3V0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuY2FsY3VsYXRlZEZpZWxkMyIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0Lk5hbWUgPSAidGFibGVDZWxsX1Rfb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LldlaWdodCA9IDAuMDQ1ODU0NzU5MDc2MTQ2MjcyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX01faW4NCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLk0xMyIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5OYW1lID0gInRhYmxlQ2VsbF9NX2luIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5XZWlnaHQgPSAwLjA3NDU5MjcxNjYzMjY2MDhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfTV9vdXQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5NMTQiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5OYW1lID0gInRhYmxlQ2VsbF9NX291dCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5XZWlnaHQgPSAwLjA4MzUyMTA2NTYyMDU0NDEyMkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9NX2RlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQxIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLk5hbWUgPSAidGFibGVDZWxsX01fZGVsdGEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLldlaWdodCA9IDAuMDk3NjYzMTY5NjcwMTEzMDE1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1BfaW4NCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlAxMyIsICJ7MDpGMX0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5OYW1lID0gInRhYmxlQ2VsbF9QX2luIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uV2VpZ2h0ID0gMC4wNTg5OTU5ODI5NDk1NTAyMTJEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfUF9vdXQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5QMTQiLCAiezA6RjF9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0Lk5hbWUgPSAidGFibGVDZWxsX1Bfb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuV2VpZ2h0ID0gMC4wNTkzNTMzMDk3NDcxNjYzN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9IX2luDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5WMTMiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uTmFtZSA9ICJ0YWJsZUNlbGxfSF9pbiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uV2VpZ2h0ID0gMC4wNzkzNjkyMzkwODQwOTc3NTFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjE0IiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0Lk5hbWUgPSAidGFibGVDZWxsMTQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LldlaWdodCA9IDAuMDc5MzY5MjIzMzMyNjAxMzI0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0hfb3V0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuY2FsY3VsYXRlZEZpZWxkMiIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0Lk5hbWUgPSAidGFibGVDZWxsX0hfb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LldlaWdodCA9IDAuMDgzNTMwNTQyMjQ4OTk0MzExRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0hfZGVsdGENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlfRgtGBMSIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5OYW1lID0gInRhYmxlQ2VsbF9IX2RlbHRhIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5XZWlnaHQgPSAwLjA3NTE5MTkwODE3MjA5NDAzNUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9Xb3JrVGltZQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlTQvdCw0YAxIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuTmFtZSA9ICJ0YWJsZUNlbGxfV29ya1RpbWUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTEuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5TdW1tYXJ5ID0gc3VtbWFyeTE7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLldlaWdodCA9IDAuMDU3NDM4Mzc5NzQ0MDY0NDg4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRXJyb3JzMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkVycm9yczIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC7QndChMSIpfSk7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDZGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuUmVndWxhciwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUpKDIwNCkpKTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5OYW1lID0gIkVycm9yczIiOw0KICAgICAgICAgICAgdGhpcy5FcnJvcnMyLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzMi5TY3JpcHRzLk9uQmVmb3JlUHJpbnQgPSAiRXJyb3JzMl9CZWZvcmVQcmludCI7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLkVycm9yczIuV2VpZ2h0ID0gMC4xMzg5MzM2NzEwNjczMTQ0NEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsOA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsOC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKHRoaXMuUGVyaW9kLCAiVGV4dCIsICIiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDguRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgyLjY0NTAxNkYsIDIwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5OYW1lID0gImxhYmVsOCI7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDguU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMTEwOC4zNTVGLCAxNkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmxhYmVsOC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw4LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcENlbnRlcjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWwzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwzLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5EZXZOdW1iZXIsICJUZXh0IiwgIiIpfSk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwzLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDUzNy42Mjc2RiwgNTIuMDAwMDVGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwzLk5hbWUgPSAibGFiZWwzIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwzLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMy5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigxODYuNTgwN0YsIDE2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWw3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWw3LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5HbWF4LCAiVGV4dCIsICIiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNy5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCg3MjQuMjA4M0YsIDUyLjAwMDA1Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNy5OYW1lID0gImxhYmVsNyI7DQogICAgICAgICAgICB0aGlzLmxhYmVsNy5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDcuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMzg1Ljc5MTdGLCAxNi4wMDAwMUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDcuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsNQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsNS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKHRoaXMuR21pbiwgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw1LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoNzI0LjIwODNGLCAzNi4wMDAwNUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUuTmFtZSA9ICJsYWJlbDUiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDUuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygyLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw1LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDM4NS43OTE3RiwgMTZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw1LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZyh0aGlzLkRldlR5cGUsICJUZXh0IiwgIiIpfSk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwyLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDUzNy42Mjc2RiwgMzZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwyLk5hbWUgPSAibGFiZWwyIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwyLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMi5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigxODYuNTgwOEYsIDE2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWw2DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWw2LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcodGhpcy5Db25zdW1lciwgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw2LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDYuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDM2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNi5OYW1lID0gImxhYmVsNiI7DQogICAgICAgICAgICB0aGlzLmxhYmVsNi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDYuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMjcyLjA4MzNGLCAxNkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDYuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsMS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKHRoaXMuSGVhZGVyVGV4dCwgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgMTJGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMS5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgyLjY0NTAxNkYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLk5hbWUgPSAibGFiZWwxIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMS5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigxMTA4LjM1NUYsIDIwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEuVGV4dCA9ICLQktC10LTQvtC80L7RgdGC0Ywg0L/QvtGC0YDQtdCx0LvQtdC90LjRjyDQs9C+0YDRj9GH0LXQuSDQstC+0LTRiyI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5Ub3BDZW50ZXI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsNC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKHRoaXMuQWRkcmVzcywgIlRleHQiLCAiIil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDQuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDUyRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsNC5OYW1lID0gImxhYmVsNCI7DQogICAgICAgICAgICB0aGlzLmxhYmVsNC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDQuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMjg5LjU4MzNGLCAxNkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDQuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsOQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsOS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKHRoaXMuQ29udHJhY3QsICJUZXh0IiwgIiIpfSk7DQogICAgICAgICAgICB0aGlzLmxhYmVsOS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDI3Mi4wODMzRiwgMzZGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5Lk5hbWUgPSAibGFiZWw5IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWw5LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsOS5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyMDMuMDQ0MUYsIDE2Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsOS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGUzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGUzLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGUzLk5hbWUgPSAidGFibGUzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGUzLlJvd3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvd1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlMy5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigxMTExRiwgNTBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGUzLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBQYWdlSGVhZGVyUm93MQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cxLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwfSk7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cxLk5hbWUgPSAiUGFnZUhlYWRlclJvdzEiOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MS5XZWlnaHQgPSAwLjYwOTc1NjA5NzU2MDk3NTZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBQYWdlSGVhZGVyUm93Mg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLkJhY2tDb2xvciA9IFN5c3RlbS5EcmF3aW5nLkNvbG9yLlRyYW5zcGFyZW50Ow0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5Cb3JkZXJDb2xvciA9IFN5c3RlbS5EcmF3aW5nLlN5c3RlbUNvbG9ycy5Db250cm9sVGV4dDsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuQm9yZGVycyA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTm9uZTsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxfSk7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiVGltZXMgTmV3IFJvbWFuIiwgOS43NUYpOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5Gb3JlQ29sb3IgPSBTeXN0ZW0uRHJhd2luZy5TeXN0ZW1Db2xvcnMuQ29udHJvbFRleHQ7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLk5hbWUgPSAiUGFnZUhlYWRlclJvdzIiOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDAsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5Ub3BMZWZ0Ow0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5XZWlnaHQgPSAwLjYwOTc1NjA5NzU2MDk3NTQ5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5NdWx0aWxpbmUgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLk5hbWUgPSAidGFibGVDZWxsMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuVGV4dCA9ICJcclxu0JTQsNGC0LAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LkJvdHRvbUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5XZWlnaHQgPSAwLjM4MTI3MjI2NzI4Mjk3NDUzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsVGVtcA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5OYW1lID0gInRhYmxlQ2VsbFRlbXAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLlRleHQgPSAi0KLQtdC80L/QtdGA0LDRgtGD0YDQsCAoW1VuaXRHcm91cC5UZW1wZXJhdHVyZV0pIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuV2VpZ2h0ID0gMC40NDIxMDg0MTk0MDgyODgwNEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbE1hc3MNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MuTmFtZSA9ICJ0YWJsZUNlbGxNYXNzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5UZXh0ID0gItCc0LDRgdGB0LAgKFtVbml0R3JvdXAuV2VpZ2h0XSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5XZWlnaHQgPSAwLjc3MjM1MzM2OTc1ODczNzgxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMi5OYW1lID0gInRhYmxlQ2VsbDIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLlRleHQgPSAi0JTQsNCy0LvQtdC90LjQtSAoW1VuaXRHcm91cC5QcmVzc3VyZV0pIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuV2VpZ2h0ID0gMC4zNTg5NTE2MTE1NTgxOTI4OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDEzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLk5hbWUgPSAidGFibGVDZWxsMTMiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLlRleHQgPSAi0J7QsdGK0LXQvCAoW1VuaXRHcm91cC5Wb2x1bWVdKSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuV2VpZ2h0ID0gMC43MzI1ODgwOTM4ODk5NDQyOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbEhlYXQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuTmFtZSA9ICJ0YWJsZUNlbGxIZWF0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5UZXh0ID0gItCi0LXQv9C70L7RgtCwIChbVW5pdEdyb3VwLlRoZXJtYWxFbmVyZ3ldKSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LldlaWdodCA9IDAuMjI3MzcwMDI4OTkyMzIzMTdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxMA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5NdWx0aWxpbmUgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5OYW1lID0gInRhYmxlQ2VsbDEwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuVGV4dCA9ICLQktGA0LXQvNGPIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuQm90dG9tQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5XZWlnaHQgPSAwLjE3MzY4NTQ0MDY2NjE0NDc1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMzANCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuTmFtZSA9ICJ0YWJsZUNlbGwzMCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLlRleHQgPSAi0J7RiNC40LHQutC4IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuQm90dG9tQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5XZWlnaHQgPSAwLjQyMDExNjQxMzU5ODQ3Mjc0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMTgNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTguQ2FuR3JvdyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5DYW5TaHJpbmsgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5OYW1lID0gInRhYmxlQ2VsbDE4IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTguU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5XZWlnaHQgPSAwLjM4MTM0MzYwOTQzMjI1MzgyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1QxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLk5hbWUgPSAidGFibGVDZWxsX1QxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLlRleHQgPSAiVDMiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuV2VpZ2h0ID0gMC4xNjQ4MjI0NDU1ODQ3NDMwNEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDI3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3Lk5hbWUgPSAidGFibGVDZWxsMjciOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5UZXh0ID0gIlQ0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5XZWlnaHQgPSAwLjEzODY4NDM5NDQ4MjE5Nzc3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1QyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLk5hbWUgPSAidGFibGVDZWxsX1QyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLlRleHQgPSAi4oiGVCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5XZWlnaHQgPSAwLjEzODY4NDM5NDQ4MjE5Nzc3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX00xDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLk5hbWUgPSAidGFibGVDZWxsX00xIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLlRleHQgPSAiTTMiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuV2VpZ2h0ID0gMC4yMjU2MDAwMTEyNTQ0MjYwOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9NMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5OYW1lID0gInRhYmxlQ2VsbF9NMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5UZXh0ID0gIk00IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLldlaWdodCA9IDAuMjUyNjAzMzczMjYwMjM0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX01kZWx0YQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5OYW1lID0gInRhYmxlQ2VsbF9NZGVsdGEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLlRleHQgPSAi4oiG0JwiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5XZWlnaHQgPSAwLjI5NTM3NDg3NTg0NTY5ODc3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjANCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5OYW1lID0gInRhYmxlQ2VsbDIwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuVGV4dCA9ICJQMyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuV2VpZ2h0ID0gMC4xNzg0MjkxMTg5OTA2MjMwM0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDQ0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuTmFtZSA9ICJ0YWJsZUNlbGw0NCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LlRleHQgPSAiUDQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LldlaWdodCA9IDAuMTc5NTA5NTk0OTAwNjk1NDlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfUTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuTmFtZSA9ICJ0YWJsZUNlbGxfUTEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuVGV4dCA9ICJWMyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5XZWlnaHQgPSAwLjI0MDA0NjY1NzE0NDQ3ODU5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1EyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLk5hbWUgPSAidGFibGVDZWxsX1EyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLlRleHQgPSAiVjQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuV2VpZ2h0ID0gMC4yNDAwNDY2NDA0ODc4MjE1N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDE1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUuTmFtZSA9ICJ0YWJsZUNlbGwxNSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUuVGV4dCA9ICLiiIZWIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5XZWlnaHQgPSAwLjI1MjYzMTUyNzkwMjA4NzdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfUWRlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLk5hbWUgPSAidGFibGVDZWxsX1FkZWx0YSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuVGV4dCA9ICJRIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuV2VpZ2h0ID0gMC4yMjc0MTI2MjU3NzYzODUwNUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDQ3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LkNhbkdyb3cgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuQ2FuU2hyaW5rID0gdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuTmFtZSA9ICJ0YWJsZUNlbGw0NyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LlRleHQgPSAiINGA0LDQsS4oW1VuaXRHcm91cC5UaW1lU3Bhbl0pXHJcbiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcENlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuV2VpZ2h0ID0gMC4xNzM3MTc5ODI2NzQzNTExNUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDMxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLk5hbWUgPSAidGFibGVDZWxsMzEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5Ub3BDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLldlaWdodCA9IDAuNDIwMTk1NDQzODAzNDQ0MDlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDE0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOS43NUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDMuMTc4OTE0RS0wNUYsIDE3LjAwMDAxRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuTmFtZSA9ICJsYWJlbDE0IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDIyMEYsIDIzLjAwMDAyRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuVGV4dCA9ICLQn9C+0LrQsNC30LDQvdC40Y8g0YHRh9C10YLRh9C40LrQvtCyIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVMZWZ0Ow0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZTQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZTQuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDQzRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5OYW1lID0gInRhYmxlNCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5Sb3dzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3dbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUm93MSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVSb3czLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUm93NH0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoODUwRiwgODIuMDAwMDFGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlRm9vdGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLkJvcmRlcldpZHRoID0gMkY7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5OYW1lID0gInRhYmxlRm9vdGVyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuUm93cy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93W10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dGb290ZXJ9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoOTc3Ljk2MzlGLCAxN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDExDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDMuOTczNjQzRS0wNUYsIDE0MkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLk5hbWUgPSAibGFiZWwxMSI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygyLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyNzguMjA4M0YsIDE3Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuVGV4dCA9ICLQn9GA0LXQtNGB0YLQsNCy0LjRgtC10LvRjCDQvtCx0YHQu9GD0LbQuNCy0LDRjtGJ0LXQuSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4OiAiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUxlZnQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMTANCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMy4xNzg5MTRFLTA1RiwgMTI1Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuTmFtZSA9ICJsYWJlbDEwIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDIsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDI3OC4yMDgzRiwgMTdGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5UZXh0ID0gItCe0YLQstC10YLRgdGC0LLQtdC90L3Ri9C5INC30LAg0YPRh9C10YIg0YLQtdC/0LvQvtCy0L7QuSDRjdC90LXRgNCz0LjQuDoiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUxlZnQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93MQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MS5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MS5OYW1lID0gInRhYmxlUm93MSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MS5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3czDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3czLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk0xX0VuZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTTJfRW5kLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlFfRW5kLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93My5OYW1lID0gInRhYmxlUm93MyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93My5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3cyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cyLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NMV9TdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUV9TdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTF9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cyLk5hbWUgPSAidGFibGVSb3cyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cyLldlaWdodCA9IDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZVJvdzQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzQuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk0yX2RlbHRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlFfZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NC5OYW1lID0gInRhYmxlUm93NCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NC5TY3JpcHRzLk9uQmVmb3JlUHJpbnQgPSAidGFibGVSb3c0X0JlZm9yZVByaW50IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0LldlaWdodCA9IDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMy5OYW1lID0gInRhYmxlQ2VsbDMiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLlRleHQgPSAi0JTQsNGC0LAg0Lgg0LLRgNC10LzRjyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuVG9wQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLldlaWdodCA9IDAuNzgyOTQxMjM1Njk2ODY2MTNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5OYW1lID0gInRhYmxlQ2VsbDUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LlRleHQgPSAi0JwzLCBbVW5pdEdyb3VwLldlaWdodF0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5XZWlnaHQgPSAwLjc4Mjk0MTMxMDM0MzE3NDZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5OYW1lID0gInRhYmxlQ2VsbDciOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LlRleHQgPSAiTTQsIFtVbml0R3JvdXAuV2VpZ2h0XSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LldlaWdodCA9IDAuNzgyOTQxMjMyOTE3NTk4NDNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxNw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE3LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQsIFN5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdC5Qb2ludCwgKChieXRlKSgyMDQpKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE3Lk5hbWUgPSAidGFibGVDZWxsMTciOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE3LlRleHQgPSAiVjMsIFtVbml0R3JvdXAuVm9sdW1lXSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE3LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuV2VpZ2h0ID0gMC43ODI5NDEyNDg2ODI4NzEyOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDIzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUpKDIwNCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMuTmFtZSA9ICJ0YWJsZUNlbGwyMyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMuVGV4dCA9ICJWNCwgW1VuaXRHcm91cC5Wb2x1bWVdIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5XZWlnaHQgPSAwLjc4Mjk0MTI0ODY4Mjg3MTE4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuTmFtZSA9ICJ0YWJsZUNlbGw2IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5UZXh0ID0gIlEsIFtVbml0R3JvdXAuVGhlcm1hbEVuZXJneV0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5XZWlnaHQgPSAwLjc4Mjk0MTI4NzQwNjgxMzEyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsOA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCwgU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0LlBvaW50LCAoKGJ5dGUpKDIwNCkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOC5OYW1lID0gInRhYmxlQ2VsbDgiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4LlRleHQgPSAi0JLRgNC10LzRjyDRgNCw0LEuLCBbVW5pdEdyb3VwLlRpbWVTcGFuXSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4LldlaWdodCA9IDAuODAyMzUzMDU0MjkzOTU3MkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGR0U3RhcnREYXRlQ2VsbA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwRW5kLlRpbWUiLCAiezA6ZGQuTU0ueXl5eSAgIEhIOm1tfSIpfSk7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5OYW1lID0gImR0U3RhcnREYXRlQ2VsbCI7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5TY3JpcHRzLk9uQmVmb3JlUHJpbnQgPSAidGFibGVDZWxsN19CZWZvcmVQcmludCI7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLldlaWdodCA9IDAuNzgyOTQxMTM2OTYzNTE0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gTTFfRW5kDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuTTEzX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5OYW1lID0gIk0xX0VuZCI7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuV2VpZ2h0ID0gMC43ODI5NDE0MDkwNzY1MjY3NkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE0yX0VuZA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLk0yX0VuZC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwRW5kLk0xNF9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuTmFtZSA9ICJNMl9FbmQiOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuTTJfRW5kLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuTTJfRW5kLldlaWdodCA9IDAuNzgyOTQxMTM0MTg0MjQ2MzhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxOQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuVjEzX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5Lk5hbWUgPSAidGFibGVDZWxsMTkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LldlaWdodCA9IDAuNzgyOTQxNjQzNjE2Mjc5NkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDI0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5WMTRfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuTmFtZSA9ICJ0YWJsZUNlbGwyNCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuV2VpZ2h0ID0gMC43ODI5NDE0NDYxNDk1NzUzOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFFfRW5kDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUV9FbmQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5X0YLRgTFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuTmFtZSA9ICJRX0VuZCI7DQogICAgICAgICAgICB0aGlzLlFfRW5kLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNCwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLlFfRW5kLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX0VuZC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLlFfRW5kLldlaWdodCA9IDAuNzgyOTQwODkyNDczNDA0N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDkNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuVNC90LDRgDFfVG90YWwiLCAiezA6RjJ9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5OYW1lID0gInRhYmxlQ2VsbDkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuV2VpZ2h0ID0gMC44MDIzNTI5NTU1NjA2MDVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBkdEVuZERhdGVDZWxsDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuVGltZSIsICJ7MDpkZC5NTS55eXl5ICAgSEg6bW19Iil9KTsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbC5OYW1lID0gImR0RW5kRGF0ZUNlbGwiOw0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbC5XZWlnaHQgPSAwLjc4NzUxMjk4NDgzMTkwOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE0xX1N0YXJ0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0Lk0xM19Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5OYW1lID0gIk0xX1N0YXJ0IjsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuV2VpZ2h0ID0gMC43NzgzNjk0MTMxMDgxMDQ1OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE0yX1N0YXJ0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0Lk0xNF9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5OYW1lID0gIk0yX1N0YXJ0IjsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuV2VpZ2h0ID0gMC43ODI5NDE0Nzk3NTA5Nzg2MUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDIxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0LlYxM19Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5OYW1lID0gInRhYmxlQ2VsbDIxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIxLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5XZWlnaHQgPSAwLjc4Mjk0MTA1MTIxNjE2N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDI1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0LlYxNF9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5OYW1lID0gInRhYmxlQ2VsbDI1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5XZWlnaHQgPSAwLjc4Mjk0MTQ0NjE0OTU3NTM5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUV9TdGFydA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0LlfRgtGBMV9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0Lk5hbWUgPSAiUV9TdGFydCI7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5XZWlnaHQgPSAwLjc4Mjk0MDg5MjQ3MzQwNDdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBTdGFydC5U0L3QsNGAMV9Ub3RhbCIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5OYW1lID0gInRhYmxlQ2VsbDExIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA2LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuV2VpZ2h0ID0gMC44MDIzNTMzNTA0OTQwMTM0NkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Lk5hbWUgPSAidGFibGVDZWxsNCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0LldlaWdodCA9IDAuNzg3NTEyODM2NzMxODc5ODhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBNX2luX2RlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTV9pbl9kZWx0YS5OYW1lID0gIk1faW5fZGVsdGEiOw0KICAgICAgICAgICAgdGhpcy5NX2luX2RlbHRhLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNCwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLk1faW5fZGVsdGEuV2VpZ2h0ID0gMC43NzgzNjk3NTg2NzQ4MzdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBNMl9kZWx0YQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLk0yX2RlbHRhLk5hbWUgPSAiTTJfZGVsdGEiOw0KICAgICAgICAgICAgdGhpcy5NMl9kZWx0YS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDQsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5NMl9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTJfZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX2RlbHRhLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMl9kZWx0YS5XZWlnaHQgPSAwLjc4Mjk0MDk4NjA4NDIxODI1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5OYW1lID0gInRhYmxlQ2VsbDIyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5XZWlnaHQgPSAwLjc4Mjk0MTI0ODY4Mjg3MTE4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjYNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5OYW1lID0gInRhYmxlQ2VsbDI2IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5XZWlnaHQgPSAwLjc4Mjk0MjAzODU0OTY4OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFFfZGVsdGENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5RX2RlbHRhLk5hbWUgPSAiUV9kZWx0YSI7DQogICAgICAgICAgICB0aGlzLlFfZGVsdGEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA0LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuUV9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuUV9kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuUV9kZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuUV9kZWx0YS5XZWlnaHQgPSAwLjc4Mjk0MDQ5NzUzOTk5NjI4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMTINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMi5OYW1lID0gInRhYmxlQ2VsbDEyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA2LCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuV2VpZ2h0ID0gMC44MDIzNTMyNTE3NjA2NjEzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gcm93Rm9vdGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMucm93Rm9vdGVyLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5DZWxsMCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXZnVDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdmdUMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtTTEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bU0yLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1NLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdmdQMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXZnUDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bVExLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtUTIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bVEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bVd9KTsNCiAgICAgICAgICAgIHRoaXMucm93Rm9vdGVyLk5hbWUgPSAicm93Rm9vdGVyIjsNCiAgICAgICAgICAgIHRoaXMucm93Rm9vdGVyLldlaWdodCA9IDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBDZWxsMA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkNlbGwwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5OYW1lID0gIkNlbGwwIjsNCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAwLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuVGV4dCA9ICLQmNGC0L7Qs9C+IjsNCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5XZWlnaHQgPSAwLjEyNjg5NjU0MTc5MDA2MjMyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYXZnVDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5hdmdUMS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLnQxMyIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuTmFtZSA9ICJhdmdUMSI7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTIuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5Mi5GdW5jID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5RnVuYy5Bdmc7DQogICAgICAgICAgICBzdW1tYXJ5Mi5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnkyLlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuU3VtbWFyeSA9IHN1bW1hcnkyOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuV2VpZ2h0ID0gMC4wNTQ4NDY1OTE4ODc2OTUwN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDI5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC50MTQiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuTmFtZSA9ICJ0YWJsZUNlbGwyOSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5My5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkzLkZ1bmMgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlGdW5jLkF2ZzsNCiAgICAgICAgICAgIHN1bW1hcnkzLklnbm9yZU51bGxWYWx1ZXMgPSB0cnVlOw0KICAgICAgICAgICAgc3VtbWFyeTMuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5TdW1tYXJ5ID0gc3VtbWFyeTM7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5XZWlnaHQgPSAwLjA0NjE0ODgzMjk4NDUxODUwOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGF2Z1QyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuYXZnVDIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQzIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5OYW1lID0gImF2Z1QyIjsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5NC5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnk0LkZ1bmMgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlGdW5jLkF2ZzsNCiAgICAgICAgICAgIHN1bW1hcnk0Lklnbm9yZU51bGxWYWx1ZXMgPSB0cnVlOw0KICAgICAgICAgICAgc3VtbWFyeTQuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMi5TdW1tYXJ5ID0gc3VtbWFyeTQ7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMi5XZWlnaHQgPSAwLjA0NjE0ODgzMjk4NDUxODUwOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bU0xDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtTTEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5NMTMiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bU0xLk5hbWUgPSAic3VtTTEiOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnk1LkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTUuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1NMS5TdW1tYXJ5ID0gc3VtbWFyeTU7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1NMS5XZWlnaHQgPSAwLjA3NTA3MTA4Njc2MjEzNDk4OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bU0yDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtTTIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5NMTQiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bU0yLk5hbWUgPSAic3VtTTIiOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bU0yLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnk2LkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTYuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1NMi5TdW1tYXJ5ID0gc3VtbWFyeTY7DQogICAgICAgICAgICB0aGlzLnN1bU0yLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1NMi5XZWlnaHQgPSAwLjA4NDA1NjcxOTU3NjAxMzhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBzdW1NDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtTS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLmNhbGN1bGF0ZWRGaWVsZDEiKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1NLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1NLk5hbWUgPSAic3VtTSI7DQogICAgICAgICAgICB0aGlzLnN1bU0uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTS5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bU0uU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnN1bU0uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5Ny5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnk3LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtTS5TdW1tYXJ5ID0gc3VtbWFyeTc7DQogICAgICAgICAgICB0aGlzLnN1bU0uVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnN1bU0uV2VpZ2h0ID0gMC4wOTgyODk0NDM5MjE4NDQzNDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBhdmdQMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmF2Z1AxLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuUDEzIiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5OYW1lID0gImF2Z1AxIjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTguRm9ybWF0U3RyaW5nID0gInswOkYxfSI7DQogICAgICAgICAgICBzdW1tYXJ5OC5GdW5jID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5RnVuYy5Bdmc7DQogICAgICAgICAgICBzdW1tYXJ5OC5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnk4LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU3VtbWFyeSA9IHN1bW1hcnk4Ow0KICAgICAgICAgICAgdGhpcy5hdmdQMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuV2VpZ2h0ID0gMC4wNTkzNzQzNTU2MDQ2MzYyMzREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBhdmdQMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmF2Z1AyLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuUDE0IiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5OYW1lID0gImF2Z1AyIjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTkuRm9ybWF0U3RyaW5nID0gInswOkYxfSI7DQogICAgICAgICAgICBzdW1tYXJ5OS5GdW5jID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5RnVuYy5Bdmc7DQogICAgICAgICAgICBzdW1tYXJ5OS5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnk5LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU3VtbWFyeSA9IHN1bW1hcnk5Ow0KICAgICAgICAgICAgdGhpcy5hdmdQMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuV2VpZ2h0ID0gMC4wNTk3MzM5MTU1NDM4MDk2MDdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBzdW1RMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnN1bVExLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjEzIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bVExLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5OYW1lID0gInN1bVExIjsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTAuRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICBzdW1tYXJ5MTAuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RMS5TdW1tYXJ5ID0gc3VtbWFyeTEwOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuV2VpZ2h0ID0gMC4wNzk4NzgyNDk5MjMxNjQxNTVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxNg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjE0IiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2Lk5hbWUgPSAidGFibGVDZWxsMTYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMS5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxMS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LlN1bW1hcnkgPSBzdW1tYXJ5MTE7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5XZWlnaHQgPSAwLjA3OTg3ODI3Mzk3OTM0MTY2M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bVEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtUTIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQyIil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDguMjVGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bVEyLk5hbWUgPSAic3VtUTIiOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDIsIDAsIDAsIDEwMEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bVEyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMi5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxMi5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnN1bVEyLlN1bW1hcnkgPSBzdW1tYXJ5MTI7DQogICAgICAgICAgICB0aGlzLnN1bVEyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RMi5XZWlnaHQgPSAwLjA4NDA2NjA4MTU0MDk2ODg4MkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bVENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1RLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuV9GC0YExIil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOC4yNUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5OYW1lID0gInN1bVEiOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLnN1bVEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTEzLkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTEzLlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5TdW1tYXJ5ID0gc3VtbWFyeTEzOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RLldlaWdodCA9IDAuMDc1Njc0Mzg2NzkzMzI5NzE4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gc3VtVw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnN1bVcuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5U0L3QsNGAMSIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1XLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1XLk5hbWUgPSAic3VtVyI7DQogICAgICAgICAgICB0aGlzLnN1bVcuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAyLCAwLCAwLCAxMDBGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bVcuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnN1bVcuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTQuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5MTQuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1XLlN1bW1hcnkgPSBzdW1tYXJ5MTQ7DQogICAgICAgICAgICB0aGlzLnN1bVcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnN1bVcuV2VpZ2h0ID0gMC4wNTc4MDY1MzY0MTU3ODk1ODlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBwaWN0dXJlQm94MQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIkltYWdlIiwgbnVsbCwgIkNvbW1vbi5Db3B5cmlnaHRJbWFnZSIpfSk7DQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAwRik7DQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLk5hbWUgPSAicGljdHVyZUJveDEiOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MS5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigxOEYsIDE4Rik7DQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLlNpemluZyA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkltYWdlU2l6ZU1vZGUuU3RyZXRjaEltYWdlOw0KICAgICAgICAgICAgdGhpcy5waWN0dXJlQm94MS5UYWcgPSAiVnpsam90TG9nbyI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMTINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyLkF1dG9XaWR0aCA9IHRydWU7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuQ2FuU2hyaW5rID0gdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkNvbW1vbi5Db3B5cmlnaHRUZXh0Iil9KTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgyNEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5OYW1lID0gImxhYmVsMTIiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMiwgMiwgMCwgMCwgMTAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoNDIwRiwgMThGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5Xb3JkV3JhcCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBjYWxjdWxhdGVkRmllbGQxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMS5EYXRhTWVtYmVyID0gIkVxdWlwIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMS5FeHByZXNzaW9uID0gIltNMTNdIC0gW00xNF0iOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQxLk5hbWUgPSAiY2FsY3VsYXRlZEZpZWxkMSI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZWRGaWVsZDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyLkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyLkV4cHJlc3Npb24gPSAiW1YxM10gLSBbVjE0XSI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDIuTmFtZSA9ICJjYWxjdWxhdGVkRmllbGQyIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2FsY3VsYXRlZEZpZWxkMw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDMuRGF0YU1lbWJlciA9ICJFcXVpcCI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDMuRXhwcmVzc2lvbiA9ICJbdDEzXS1bdDE0XSI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDMuTmFtZSA9ICJjYWxjdWxhdGVkRmllbGQzIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gQ29uc3VtZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5Db25zdW1lci5EZXNjcmlwdGlvbiA9ICJDb25zdW1lciI7DQogICAgICAgICAgICB0aGlzLkNvbnN1bWVyLk5hbWUgPSAiQ29uc3VtZXIiOw0KICAgICAgICAgICAgdGhpcy5Db25zdW1lci5WYWx1ZUluZm8gPSAi0J/QvtGC0YDQtdCx0LjRgtC10LvRjDogIjsNCiAgICAgICAgICAgIHRoaXMuQ29uc3VtZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBBZGRyZXNzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQWRkcmVzcy5EZXNjcmlwdGlvbiA9ICJBZGRyZXNzIjsNCiAgICAgICAgICAgIHRoaXMuQWRkcmVzcy5OYW1lID0gIkFkZHJlc3MiOw0KICAgICAgICAgICAgdGhpcy5BZGRyZXNzLlZhbHVlSW5mbyA9ICLQkNC00YDQtdGBOiAiOw0KICAgICAgICAgICAgdGhpcy5BZGRyZXNzLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gQ29udHJhY3QNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5Db250cmFjdC5EZXNjcmlwdGlvbiA9ICJDb250cmFjdCI7DQogICAgICAgICAgICB0aGlzLkNvbnRyYWN0Lk5hbWUgPSAiQ29udHJhY3QiOw0KICAgICAgICAgICAgdGhpcy5Db250cmFjdC5WYWx1ZUluZm8gPSAi0J/QvtC00LrQu9GO0YfQtdC9INC6INCw0LHQvtC90LXQvdGC0YM6ICI7DQogICAgICAgICAgICB0aGlzLkNvbnRyYWN0LlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRGV2VHlwZQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkRldlR5cGUuRGVzY3JpcHRpb24gPSAiRGV2VHlwZSI7DQogICAgICAgICAgICB0aGlzLkRldlR5cGUuTmFtZSA9ICJEZXZUeXBlIjsNCiAgICAgICAgICAgIHRoaXMuRGV2VHlwZS5WYWx1ZUluZm8gPSAi0KLQuNC/INC/0YDQuNCx0L7RgNCwOiAiOw0KICAgICAgICAgICAgdGhpcy5EZXZUeXBlLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRGV2TnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRGV2TnVtYmVyLkRlc2NyaXB0aW9uID0gIkRldk51bWJlciI7DQogICAgICAgICAgICB0aGlzLkRldk51bWJlci5OYW1lID0gIkRldk51bWJlciI7DQogICAgICAgICAgICB0aGlzLkRldk51bWJlci5WYWx1ZUluZm8gPSAi0J3QvtC80LXRgCDQv9GA0LjQsdC+0YDQsDogIjsNCiAgICAgICAgICAgIHRoaXMuRGV2TnVtYmVyLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gR21heA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkdtYXguRGVzY3JpcHRpb24gPSAiR21heCI7DQogICAgICAgICAgICB0aGlzLkdtYXguTmFtZSA9ICJHbWF4IjsNCiAgICAgICAgICAgIHRoaXMuR21heC5WYWx1ZUluZm8gPSAi0J3QsNC40LHQvtC70YzRiNC40Lkg0YDQsNGB0YXQvtC0INGC0LXQv9C70L7QvdC+0YHQuNGC0LXQu9GPIEdtYXg6ICI7DQogICAgICAgICAgICB0aGlzLkdtYXguVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBHbWluDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuR21pbi5EZXNjcmlwdGlvbiA9ICJHbWluIjsNCiAgICAgICAgICAgIHRoaXMuR21pbi5OYW1lID0gIkdtaW4iOw0KICAgICAgICAgICAgdGhpcy5HbWluLlZhbHVlSW5mbyA9ICLQndCw0LjQvNC10L3RjNGI0LjQuSDRgNCw0YHRhdC+0LQg0YLQtdC/0LvQvtC90L7RgdC40YLQtdC70Y8gR21pbjogIjsNCiAgICAgICAgICAgIHRoaXMuR21pbi5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFBlcmlvZA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlBlcmlvZC5EZXNjcmlwdGlvbiA9ICJQZXJpb2QiOw0KICAgICAgICAgICAgdGhpcy5QZXJpb2QuTmFtZSA9ICJQZXJpb2QiOw0KICAgICAgICAgICAgdGhpcy5QZXJpb2QuVmFsdWVJbmZvID0gItC30LAg0L/QtdGA0LjQvtC0INGBIDI5LjA4LjIwMTYg0L/QviAyOS4wOC4yMDE2IjsNCiAgICAgICAgICAgIHRoaXMuUGVyaW9kLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gSGVhZGVyVGV4dA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkhlYWRlclRleHQuRGVzY3JpcHRpb24gPSAiSGVhZGVyVGV4dCI7DQogICAgICAgICAgICB0aGlzLkhlYWRlclRleHQuTmFtZSA9ICJIZWFkZXJUZXh0IjsNCiAgICAgICAgICAgIHRoaXMuSGVhZGVyVGV4dC5WYWx1ZUluZm8gPSAi0JLQtdC00L7QvNC+0YHRgtGMINC/0L7RgtGA0LXQsdC70LXQvdC40Y8g0LPQvtGA0Y/Rh9C10Lkg0LLQvtC00YsiOw0KICAgICAgICAgICAgdGhpcy5IZWFkZXJUZXh0LlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUmVwQXBwbGljYXRpb25WZXJzaW9uDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUmVwQXBwbGljYXRpb25WZXJzaW9uLk5hbWUgPSAiUmVwQXBwbGljYXRpb25WZXJzaW9uIjsNCiAgICAgICAgICAgIHRoaXMuUmVwQXBwbGljYXRpb25WZXJzaW9uLlZhbHVlSW5mbyA9ICIwLjAxIjsNCiAgICAgICAgICAgIHRoaXMuUmVwQXBwbGljYXRpb25WZXJzaW9uLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gQXJjaFR5cGUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5BcmNoVHlwZS5OYW1lID0gIkFyY2hUeXBlIjsNCiAgICAgICAgICAgIHRoaXMuQXJjaFR5cGUuVHlwZSA9IHR5cGVvZihpbnQpOw0KICAgICAgICAgICAgdGhpcy5BcmNoVHlwZS5WYWx1ZUluZm8gPSAiMiI7DQogICAgICAgICAgICB0aGlzLkFyY2hUeXBlLlZpc2libGUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRXFUeXBlSWQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5FcVR5cGVJZC5OYW1lID0gIkVxVHlwZUlkIjsNCiAgICAgICAgICAgIHRoaXMuRXFUeXBlSWQuVHlwZSA9IHR5cGVvZihpbnQpOw0KICAgICAgICAgICAgdGhpcy5FcVR5cGVJZC5WYWx1ZUluZm8gPSAiNzciOw0KICAgICAgICAgICAgdGhpcy5FcVR5cGVJZC5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEZsb3dTZW5zb3JzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRmxvd1NlbnNvcnNOdW1iZXIuTmFtZSA9ICJGbG93U2Vuc29yc051bWJlciI7DQogICAgICAgICAgICB0aGlzLkZsb3dTZW5zb3JzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuRmxvd1NlbnNvcnNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBUZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5UZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXIuTmFtZSA9ICJUZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5UZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXIuVmFsdWVJbmZvID0gIjAiOw0KICAgICAgICAgICAgdGhpcy5UZW1wZXJhdHVyZVNlbnNvcnNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBQcmVzc3VyZVNlbnNvcnNOdW1iZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5QcmVzc3VyZVNlbnNvcnNOdW1iZXIuTmFtZSA9ICJQcmVzc3VyZVNlbnNvcnNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5QcmVzc3VyZVNlbnNvcnNOdW1iZXIuVmFsdWVJbmZvID0gIjAiOw0KICAgICAgICAgICAgdGhpcy5QcmVzc3VyZVNlbnNvcnNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBIZWF0Q2hhbm5lbHNOdW1iZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5IZWF0Q2hhbm5lbHNOdW1iZXIuTmFtZSA9ICJIZWF0Q2hhbm5lbHNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5IZWF0Q2hhbm5lbHNOdW1iZXIuVmFsdWVJbmZvID0gIjAiOw0KICAgICAgICAgICAgdGhpcy5IZWF0Q2hhbm5lbHNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBIb3RXYXRlckNoYW5uZWxzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuSG90V2F0ZXJDaGFubmVsc051bWJlci5OYW1lID0gIkhvdFdhdGVyQ2hhbm5lbHNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5Ib3RXYXRlckNoYW5uZWxzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuSG90V2F0ZXJDaGFubmVsc051bWJlci5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIENvbGRXYXRlckNoYW5uZWxzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXIuTmFtZSA9ICJDb2xkV2F0ZXJDaGFubmVsc051bWJlciI7DQogICAgICAgICAgICB0aGlzLkNvbGRXYXRlckNoYW5uZWxzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBTdGVhbUNoYW5uZWxzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuU3RlYW1DaGFubmVsc051bWJlci5OYW1lID0gIlN0ZWFtQ2hhbm5lbHNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5TdGVhbUNoYW5uZWxzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuU3RlYW1DaGFubmVsc051bWJlci5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEdhc0NoYW5uZWxzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuR2FzQ2hhbm5lbHNOdW1iZXIuTmFtZSA9ICJHYXNDaGFubmVsc051bWJlciI7DQogICAgICAgICAgICB0aGlzLkdhc0NoYW5uZWxzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuR2FzQ2hhbm5lbHNOdW1iZXIuVmlzaWJsZSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBFbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRWxlY3RyaWNpdHlDaGFubmVsc051bWJlci5OYW1lID0gIkVsZWN0cmljaXR5Q2hhbm5lbHNOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5FbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyLlZhbHVlSW5mbyA9ICIwIjsNCiAgICAgICAgICAgIHRoaXMuRWxlY3RyaWNpdHlDaGFubmVsc051bWJlci5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE15UmVwb3J0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQmFuZHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQmFuZFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRGV0YWlsLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BNYXJnaW5CYW5kMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tTWFyZ2luQmFuZDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlJlcG9ydEhlYWRlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuR3JvdXBIZWFkZXIxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5SZXBvcnRGb290ZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXJ9KTsNCiAgICAgICAgICAgIHRoaXMuQ2FsY3VsYXRlZEZpZWxkcy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGRbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDN9KTsNCiAgICAgICAgICAgIHRoaXMuRGF0YU1lbWJlciA9ICJFcXVpcCI7DQogICAgICAgICAgICB0aGlzLkRpc3BsYXlOYW1lID0gItCT0JLQoSDRgtGB0YDQsi0yNNCcIjsNCiAgICAgICAgICAgIHRoaXMuRXh0ZW5zaW9ucy5BZGQoIlN0b3JhZ2VJRCIsICIxMyIpOw0KICAgICAgICAgICAgdGhpcy5MYW5kc2NhcGUgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy5NYXJnaW5zID0gbmV3IFN5c3RlbS5EcmF3aW5nLlByaW50aW5nLk1hcmdpbnMoMzksIDE5LCA2LCAxOCk7DQogICAgICAgICAgICB0aGlzLk5hbWUgPSAiTXlSZXBvcnQiOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVpZ2h0ID0gODI3Ow0KICAgICAgICAgICAgdGhpcy5QYWdlV2lkdGggPSAxMTY5Ow0KICAgICAgICAgICAgdGhpcy5QYXBlcktpbmQgPSBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QYXBlcktpbmQuQTQ7DQogICAgICAgICAgICB0aGlzLlBhcmFtZXRlcnMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuUGFyYW1ldGVycy5QYXJhbWV0ZXJbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkNvbnN1bWVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5BZGRyZXNzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Db250cmFjdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRGV2VHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRGV2TnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5HbWF4LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5HbWluLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5QZXJpb2QsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkhlYWRlclRleHQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlJlcEFwcGxpY2F0aW9uVmVyc2lvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQXJjaFR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkVxVHlwZUlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GbG93U2Vuc29yc051bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuVGVtcGVyYXR1cmVTZW5zb3JzTnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5QcmVzc3VyZVNlbnNvcnNOdW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkhlYXRDaGFubmVsc051bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuSG90V2F0ZXJDaGFubmVsc051bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ29sZFdhdGVyQ2hhbm5lbHNOdW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlN0ZWFtQ2hhbm5lbHNOdW1iZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkdhc0NoYW5uZWxzTnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FbGVjdHJpY2l0eUNoYW5uZWxzTnVtYmVyfSk7DQogICAgICAgICAgICB0aGlzLlJlcXVlc3RQYXJhbWV0ZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLlNjcmlwdHNTb3VyY2UgPSByZXNvdXJjZXMuR2V0U3RyaW5nKCIkdGhpcy5TY3JpcHRzU291cmNlIik7DQogICAgICAgICAgICB0aGlzLlN0eWxlU2hlZXRQYXRoID0gbnVsbDsNCiAgICAgICAgICAgIHRoaXMuVmVyc2lvbiA9ICIxNS4yIjsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZURldGFpbCkpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTMpKS5FbmRJbml0KCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMudGFibGU0KSkuRW5kSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlRm9vdGVyKSkuRW5kSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzKSkuRW5kSW5pdCgpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K</Template>
</Report>