ITSMTicket 1.0.6 OTRS AG http://otrs.org/ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Build for OTRS::ITSM 1.0.6. Build for OTRS::ITSM 1.0.5. Build for OTRS::ITSM 1.0.4. Build for OTRS::ITSM 1.0.3. Build for OTRS::ITSM 1.0.2. Build for OTRS::ITSM 1.0.1. Build for OTRS::ITSM 1.0.0 rc2. Build for OTRS::ITSM 1.0.0 rc1. Build for OTRS::ITSM 1.0.0 beta4. Build for OTRS::ITSM 1.0.0 beta3. Update version number of package. Testbuild for OTRS::ITSM 1.0.0 beta2. Updated "PackageRequired" in sopm file. Improved features. Improved features and updated framework files. Update framework files. Init release. The OTRS::ITSM ticket package. Das OTRS::ITSM Ticket Paket. 2.2.6 <br> WELCOME<br> <br> You are about to install the OTRS module ITSMTicket.<br> <br> <br> REQUIRED OTRS PACKAGES <ul> <li>GeneralCatalog 1.0.6</li> <li>LinkObject 1.0.6</li> <li>ITSMCore 1.0.6</li> <li>ITSMService 1.0.6</li> </ul> <br> ATTENTION<br> <br> Make sure your database accepts packages over 5 MB in size. A MySQL database for example accepts packages up to 1 MB by default. In this case, the value for max_allowed_packet must be increased. The recommended maximum size accepted is 20 MB.<br> <br> <br> ((enjoy))<br> <br> <br> WILLKOMMEN<br> <br> Sie sind im Begriff das OTRS-Modul ITSMTicket zu installieren.<br> <br> <br> BENÖTIGTE OTRS-PAKETE <ul> <li>GeneralCatalog 1.0.6</li> <li>LinkObject 1.0.6</li> <li>ITSMCore 1.0.6</li> <li>ITSMService 1.0.6</li> </ul> <br> ACHTUNG<br> <br> Vergewissern Sie sich, dass ihre Datenbank Pakete mit einer Größe von mehr als 5 MB akzeptiert. Eine MySQL Datenbank akzeptiert beispielsweise standartmäßig Pakete mit einer Größe von maximal 1 MB. In diesem Fall muss der Wert für max_allowed_packet erhöht werden. Empfohlen werden 20 MB.<br> <br> <br> ((enjoy))<br> <br> <br> WELCOME<br> <br> You are about to upgrade the OTRS module ITSMTicket.<br> <br> <br> REQUIRED OTRS PACKAGES <ul> <li>GeneralCatalog 1.0.6</li> <li>LinkObject 1.0.6</li> <li>ITSMCore 1.0.6</li> <li>ITSMService 1.0.6</li> </ul> <br> ATTENTION<br> <br> Make sure your database accepts packages over 5 MB in size. A MySQL database for example accepts packages up to 1 MB by default. In this case, the value for max_allowed_packet must be increased. The recommended maximum size accepted is 20 MB.<br> <br> <br> ((enjoy))<br> <br> <br> WILLKOMMEN<br> <br> Sie sind im Begriff das OTRS-Modul ITSMTicket zu aktualisieren.<br> <br> <br> BENÖTIGTE OTRS-PAKETE <ul> <li>GeneralCatalog 1.0.6</li> <li>LinkObject 1.0.6</li> <li>ITSMCore 1.0.6</li> <li>ITSMService 1.0.6</li> </ul> <br> ACHTUNG<br> <br> Vergewissern Sie sich, dass ihre Datenbank Pakete mit einer Größe von mehr als 5 MB akzeptiert. Eine MySQL Datenbank akzeptiert beispielsweise standartmäßig Pakete mit einer Größe von maximal 1 MB. In diesem Fall muss der Wert für max_allowed_packet erhöht werden. Empfohlen werden 20 MB.<br> <br> <br> ((enjoy))<br> <br> GeneralCatalog ITSMCore ITSMService LinkObject2 2008-03-29 23:11:04 opms.otrs.com PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQ29uZmlnIj4KICAgIDxDVlM+JElkOiBJVFNNVGlja2V0LnhtbCx2IDEuMTIuMi4xIDIwMDgvMDMvMTcgMTA6MzM6MTAgbWggRXhwICQ8L0NWUz4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIEFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkZyb250ZW5kbW9kdWwtUmVnaXN0cmF0aW9uIGRlcyBBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkLU9iamVrdHMgaW0gQWdlbnQtSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbj5BZGRpdGlvbmFsIElUU00gVGlja2V0IEZpZWxkczwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+QWRkaXRpb25hbCBJVFNNIEZpZWxkczwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5UaWNrZXQ8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50VGlja2V0RGVjaXNpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQWdlbnRUaWNrZXREZWNpc2lvbiBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RnJvbnRlbmRtb2R1bC1SZWdpc3RyYXRpb24gZGVzIEFnZW50VGlja2V0RGVjaXNpb24tT2JqZWt0cyBpbSBBZ2VudC1JbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uPlRpY2tldCBEZWNpc2lvbjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8VGl0bGU+RGVjaXNpb248L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhck5hbWU+VGlja2V0PC9OYXZCYXJOYW1lPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMTUtQWRkdGxJVFNNRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Nb2R1bGUgdG8gc2hvdyBhZGRpdGlvbmFsIElUU00gZmllbGQgbGluayBpbiBtZW51LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj7cYmVyIGRpZXNlcyBNb2R1bCB3aXJkIGRlciBadXPkdHpsaWNoZSBJVFNNIEZlbGRlci1MaW5rIGluIGRlciBMaW5rbGVpc3RlIGRlciBUaWNrZXRhbnNpY2h0IGFuZ2V6ZWlndC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6VGlja2V0TWVudUFkZHRsSVRTTUZpZWxkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5BZGRpdGlvbmFsIElUU00gRmllbGRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+Q2hhbmdlIHRoZSBJVFNNIGZpZWxkcyE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQmYW1wO1RpY2tldElEPSRRRGF0YXsiVGlja2V0SUQifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMjAtTGluayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk1vZHVsZSB0byBzaG93IGEgbGluayB0byBsaW5rIGEgdGlja2V0IHdpdGggYW5vdGhlciBvYmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPtxiZXIgZGllc2VzIE1vZHVsIHdpcmQgZWluIExpbmsgaW0gTWVu/CBkZXIgVGlja2V0YW5zaWNodCBhbmdlemVpZ3QsIG1pdCBkZW0gZWluIFRpY2tldCBtaXQgZWluZW0gYW5kZXJlbiBPYmpla3QgdmVya278cGZ0IHdlcmRlbiBrYW5uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+TGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkxpbmsgdGhpcyB0aWNrZXQgdG8gYW4gb3RoZXIgb2JqZWN0cyE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRMaW5rT2JqZWN0MjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDImYW1wO1NvdXJjZUNsYXNzPVRpY2tldCZhbXA7U291cmNlS2V5PSRRRGF0YXsiVGlja2V0SUQifTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM0MjAtRGVjaXNpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Nb2R1bGUgdG8gc2hvdyBkZWNpc2lvbiBsaW5rIGluIG1lbnUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPtxiZXIgZGllc2VzIE1vZHVsIHdpcmQgZGVyIEVudHNjaGVpZHVuZy1MaW5rIGluIGRlciBMaW5rbGVpc3RlIGRlciBUaWNrZXRhbnNpY2h0IGFuZ2V6ZWlndC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6VGlja2V0TWVudURlY2lzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5EZWNpc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkFkZCBhIGRlY2lzaW9uIG5vdGUhPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50VGlja2V0RGVjaXNpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFRpY2tldERlY2lzaW9uJmFtcDtUaWNrZXRJRD0kUURhdGF7IlRpY2tldElEIn08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG9wdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+QmVu9nRpZ3RlIFJlY2h0ZSB6dXIgQmVhcmJlaXR1bmcgZGVzIFRpY2tldHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPnJ3PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1JlcXVpcmVkTG9jayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkEgdGlja2V0IGxvY2sgaXMgcmVxdWlyZWQuIEluIGNhc2UgdGhlIHRpY2tldCBpc24ndCBsb2NrZWQsIHRoZSB0aWNrZXQgZ2V0cyBsb2NrZWQgYW5kIHRoZSBjdXJyZW50IGFnZW50IHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgYXMgdGlja2V0IG93bmVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5FaW5lIFRpY2tldC1TcGVycmUgd2lyZCBiZW72dGlndC4gV2VubiBUaWNrZXQgbmljaHQgZ2VzcGVycnQgaXN0LCB3aXJkIGRhcyBUaWNrZXQgYXV0b21hdGlzY2ggZ2VzcGVycnQgdW5kIGRlciBBZ2VudCBhbHMgQmVzaXR6ZXIgZ2VzZXR6dC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNUaWNrZXRUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSB0aWNrZXQgdHlwZSAoVGlja2V0OjpUeXBlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIFRpY2tldC1UeXAgZ2VzZXR6dCB3ZXJkZW4gc29sbCAoVGlja2V0OjpUeXBlIG11c3MgYWt0aXYgc2VpbikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjU2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgc2VydmljZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIFNlcnZpY2UgZ2VzZXR6dCB3ZXJkZW4gc29sbCAoVGlja2V0OjpTZXJ2aWNlIG11c3MgYWt0aXYgc2VpbikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjT3duZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB5b3Ugd2FudCB0byBzZXQgdGhlIG93bmVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5XZW5uIGRlciBCZXNpdHplciBnZXNldHp0IHdlcmRlbiBzb2xsLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1Jlc3BvbnNpYmxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSByZXNwb25zaWJsZSBhZ2VudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgVmVyYW50d29ydGxpY2hlIGdlc2V0enQgd2VyZGVuIHNvbGwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjU3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Xb3VsZCB5b3UgbGlrZSB0byBzZXQgdGhlIHN0YXRlIG9mIGEgdGlja2V0IGlmIGEgbm90ZSBpcyBhZGRlZCBieSBhbiBhZ2VudD88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U29sbCBkZXIgU3RhdHVzIGVpbmVzIFRpY2tldHMgZ2VzZXR6dCB3ZXJkZW4ga/ZubmVuLCB3ZW5uIGVpbmUgTm90aXogZHVyY2ggZWluZW4gQWdlbnQgYW5nZWxlZ3Qgd2lyZD88L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNTdGF0ZVR5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5leHQgc3RhdGVzIGFmdGVyIGFkZGluZyBhIG5vdGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPk7kY2hzdG32Z2xpY2hlIFN0YXR1cyBuYWNoIGRlbSBIaW56dWb8Z2VuIGVpbmVyIE5vdGl6LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+b3BlbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPmNsb3NlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnBlbmRpbmcgcmVtaW5kZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wZW5kaW5nIGF1dG88L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1N0YXRlRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbmV4dCBzdGF0ZSBhZnRlciBhbiBlbWFpbCB0aWNrZXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlN0YW5kYXJkbeTfaWcgYXVzZ2V35GhsdGVyIG7kY2hzdGVyIFN0YXR1cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+b3BlbjwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNOb3RlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvdyBub3RlIGZpZWxkcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RWluZ2FiZW32Z2xpY2hrZWl0IGb8ciBOb3Rpei48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNTdWJqZWN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBub3RlIHN1YmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlN0YW5kYXJkdGV4dCBpbSBCZXRyZWZmIGVpbmVyIE5vdGl6LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4kVGV4dHsiTm90ZSJ9PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI0JvZHkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5vdGUgdGV4dC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U3RhbmRhcmR0ZXh0IGltIFRleHRmZWxkIGVpbmVyIE5vdGl6LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFRleHRBcmVhPjwvVGV4dEFyZWE+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI0ludm9sdmVkQWdlbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IHNlbGVjdGlvbiBvZiBpbnZvbHZlZCBhZ2VudHM/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkF1c3dhaGwgZGVyIGludm9sdmllcnRlbiBBZ2VudHMgYW56ZWlnZW4/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjSW5mb3JtQWdlbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IHNlbGVjdGlvbiBvZiBhZ2VudHMgdG8gaW5mb3JtPzwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5BdXN3YWhsIGRlciB6dSBpbmZvcm1pZXJlbmRlbiBBZ2VudHMgYW56ZWlnZW4/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjQXJ0aWNsZVR5cGVEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBub3RlIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlZvcmVpbmdlc3RlbGx0ZXIgTm90aXp0eXAuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3QWRkdGxJVFNNRmllbGQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPm5vdGUtaW50ZXJuYWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjQXJ0aWNsZVR5cGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U3BlY2lmeSB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMgdGhhdCB5b3Ugd2FudCB0byB1c2UgaW4geW91ciBzeXN0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkhpZXIga/ZubmVuIGRpZSB2ZXJzY2hpZWRlbmVuIE5vdGl6LVR5cGVuIGZlc3RnZWxlZ3Qgd2VyZGVuLCBkaWUgaW5uZXJoYWxiIGRlcyBTeXN0ZW1zIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtaW50ZXJuYWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtZXh0ZXJuYWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Im5vdGUtcmVwb3J0Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1ByaW9yaXR5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvdyBwcmlvcml0eSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5N9mdsaWNoa2VpdCBlaW5lIFByaW9yaXTkdCBhdXN6dXfkaGxlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNQcmlvcml0eURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IHByaW9yaXR5IG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmF1bHQgQXVzd2FobCBkZXIgUHJpb3JpdOR0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4zIG5vcm1hbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNUaXRsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgdGl0bGUgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5FaW5nYWJlbfZnbGljaGtlaXQgZvxyIFRpdGxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRBZGR0bElUU01GaWVsZCMjI1RpY2tldEZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gdGlja2V0IGZyZWUgdGV4dCBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBUaWNrZXQtRnJlaS1UZXh0LUZlbGRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI2Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNiI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNUaWNrZXRGcmVlVGltZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIGZyZWUgdGltZSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBGcmVpLVplaXQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjQXJ0aWNsZUZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gYXJ0aWNsZSBmcmVlIHRleHQgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgQXJ0aWtlbC1GcmVpLVRleHQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkIyMjSGlzdG9yeVR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5IaXN0b3J5IHR5cGUgZm9yIHRoaXMgYWN0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5IaXN0b3JpZW50eXAgZvxyIGRpZXNlIEFrdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdBZGR0bElUU01GaWVsZDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+QWRkTm90ZTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQjIyNIaXN0b3J5Q29tbWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkhpc3RvcnkgY29tbWVudCBmb3IgdGhpcyBhY3Rpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkhpc3RvcmllbmtvbW1lbnRhciBm/HIgZGllc2UgQWt0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0FkZHRsSVRTTUZpZWxkPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4lJUZyZWVUZXh0PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBvcHRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkJlbvZ0aWd0ZSBSZWNodGUgenVyIEJlYXJiZWl0dW5nIGRlcyBUaWNrZXRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5ydzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNSZXF1aXJlZExvY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5BIHRpY2tldCBsb2NrIGlzIHJlcXVpcmVkLiBJbiBjYXNlIHRoZSB0aWNrZXQgaXNuJ3QgbG9ja2VkLCB0aGUgdGlja2V0cyBnZXQgbG9ja2VkIGFuZCB0aGUgY3VycmVudCBhZ2VudCB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IGFzIHRpY2tldCBvd25lci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RWluZSBUaWNrZXQtU3BlcnJlIHdpcmQgYmVu9nRpZ3QgYnp3LiB3ZW5uIFRpY2tldCBuaWNodCBnZXNwZXJydCBpc3QsIHdpcmQgZGFzIFRpY2tldCBhdXRvbWF0aXNjaCBnZXNwZXJydCB1bmQgZGVyIEFnZW50IGFscyBCZXNpdHplciBnZXNldHp0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPklUU008L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0RlY2lzaW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI1RpY2tldFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB5b3Ugd2FudCB0byBzZXQgdGhlIHRpY2tldCB0eXBlIChUaWNrZXQ6OlR5cGUgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgVGlja2V0LVR5cCBnZXNldHp0IHdlcmRlbiBzb2xsIChUaWNrZXQ6OlR5cGUgbXVzcyBha3RpdiBzZWluKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNTZXJ2aWNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgeW91IHdhbnQgdG8gc2V0IHRoZSBzZXJ2aWNlIChUaWNrZXQ6OlNlcnZpY2UgbmVlZHMgdG8gYmUgYWN0aXZhdGVkKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+V2VubiBkZXIgU2VydmljZSBnZXNldHp0IHdlcmRlbiBzb2xsIChUaWNrZXQ6OlNlcnZpY2UgbXVzcyBha3RpdiBzZWluKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNPd25lciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgb3duZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIEJlc2l0emVyIGdlc2V0enQgd2VyZGVuIHNvbGwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjUmVzcG9uc2libGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5JZiB5b3Ugd2FudCB0byBzZXQgdGhlIHJlc3BvbnNpYmxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5XZW5uIGRlciBWZXJhbnR3b3J0bGljaGUgZ2VzZXR6dCB3ZXJkZW4gc29sbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPldvdWxkIHlvdSBsaWtlIHRvIHNldCB0aGUgc3RhdGUgb2YgYSB0aWNrZXQgaWYgYSBub3RlIGlzIGNyZWF0ZWQgYnkgYW4gYWdlbnQ/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlNvbGwgZGVyIFN0YXR1cyBlaW5lcyBUaWNrZXRzIGdlc2V0enQgd2VyZGVuIGv2bm5lbiwgd2VubiBlaW5lIE5vdGl6IGR1cmNoIGVpbmVuIEFnZW50IGFuZ2VsZWd0IHdpcmQ/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjU3RhdGVUeXBlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBuZXh0IHN0YXRlcyBhZnRlciBhZGRpbmcgYSBub3RlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5O5GNoc3Rt9mdsaWNoZSBTdGF0dXMgbmFjaCBkZW0gSGluenVm/GdlbiBlaW5lciBOb3Rpei48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPm9wZW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5jbG9zZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5wZW5kaW5nIHJlbWluZGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+cGVuZGluZyBhdXRvPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNTdGF0ZURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZhdWx0IG5leHQgc3RhdGUgYWZ0ZXIgYW4gZW1haWwgdGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5TdGFuZGFyZG3k32lnIGF1c2dld+RobHRlciBu5GNoc3RlciBTdGF0dXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPm9wZW48L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjTm90ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgbm90ZSBmaWVsZHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkVpbmdhYmVt9mdsaWNoa2VpdCBm/HIgTm90aXouPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjU3ViamVjdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbm90ZSBzdWJqZWN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5TdGFuZGFyZHRleHQgaW0gQmV0cmVmZiBlaW5lciBOb3Rpei48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+JFRleHR7IkRlY2lzaW9uIn08L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjQm9keSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbm90ZSB0ZXh0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5TdGFuZGFyZHRleHQgaW0gVGV4dGZlbGQgZWluZXIgTm90aXouPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8VGV4dEFyZWE+JFRleHR7IlJlYXNvbiJ9OjwvVGV4dEFyZWE+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI0ludm9sdmVkQWdlbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IHNlbGVjdGlvbiBvZiBpbnZvbHZlZCBhZ2VudHM/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkF1c3dhaGwgZGVyIGludm9sdmllcnRlbiBBZ2VudHMgYW56ZWlnZW4/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjSW5mb3JtQWdlbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IHNlbGVjdGlvbiBvZiBhZ2VudHMgdG8gaW5mb3JtPzwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5BdXN3YWhsIGRlciB6dSBpbmZvcm1pZXJlbmRlbiBBZ2VudHMgYW56ZWlnZW4/PC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjQXJ0aWNsZVR5cGVEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBub3RlIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPlZvcmVpbmdlc3RlbGx0ZXIgTm90aXp0eXAuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPm5vdGUtaW50ZXJuYWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjQXJ0aWNsZVR5cGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U3BlY2lmeSB0aGUgZGlmZmVyZW50IG5vdGUgdHlwZXMsIHRoYXQgeW91IHdhbnQgdG8gdXNlIGluIHlvdXIgc3lzdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5IaWVyIGv2bm5lbiBkaWUgdmVyc2NoaWVkZW5lbiBOb3Rpei1UeXBlbiBmZXN0Z2VsZWd0IHdlcmRlbiwgZGllIGlubmVyaGFsYiBkZXMgU3lzdGVtcyB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJub3RlLWludGVybmFsIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJub3RlLWV4dGVybmFsIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJub3RlLXJlcG9ydCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNQcmlvcml0eSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3cgcHJpb3JpdHkgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+TfZnbGljaGtlaXQgZGVyIEF1c3dhaGwgZvxyIGRpZSBQcmlvcml05HQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjUHJpb3JpdHlEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBwcmlvcml0eSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZhdWx0IEF1c3dhaGwgZGVyIFByaW9yaXTkdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+MyBub3JtYWw8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjVGl0bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93IHRpdGxlIGZpZWxkcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RWluZ2FiZW32Z2xpY2hrZWl0IGb8ciBUaXRsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0RGVjaXNpb24jIyNUaWNrZXRGcmVlVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIHRpY2tldCBmcmVlIHRleHQgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgVGlja2V0LUZyZWktVGV4dC1GZWxkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjExIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTYiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjVGlja2V0RnJlZVRpbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biBmcmVlIHRpbWUgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgRnJlaS1aZWl0LUZlbGRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI2Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI0FydGljbGVGcmVlVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIGFydGljbGUgZnJlZSB0ZXh0IG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkdlemVpZ3RlIEFydGlrZWwtRnJlaS1UZXh0LUZlbGRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXREZWNpc2lvbiMjI0hpc3RvcnlUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SGlzdG9yeSB0eXBlIGZvciB0aGlzIGFjdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+SGlzdG9yaWVudHlwIGb8ciBkaWVzZSBBa3Rpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+SVRTTTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3RGVjaXNpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPkFkZE5vdGU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldERlY2lzaW9uIyMjSGlzdG9yeUNvbW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5IaXN0b3J5IGNvbW1lbnQgZm9yIHRoaXMgYWN0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5IaXN0b3JpZW5rb21tZW50YXIgZvxyIGRpZXNlIEFrdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5JVFNNPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdEZWNpc2lvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+JSVOb3RlPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iTGlua09iamVjdDI6OlBvc3NpYmxlUGFydG5lciMjI1RpY2tldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlBvc3NpYmxlIHBhcnRuZXIgZnJvbSBJVFNNQ29uZmlnSXRlbSBvYmplY3QgdG8gb3RoZXIgb2JqZWN0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+TfZnbGljaGUgUGFydG5lciB2b20gSVRTTUNvbmZpZ0l0ZW0genUgYW5kZXJlbiBPYmpla3Rlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5GcmFtZXdvcms8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpMaW5rT2JqZWN0Mjo6UG9zc2libGVQYXJ0bmVyPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlJlbGV2YW50VG88L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkRlcGVuZHNPbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+QWx0ZXJuYXRpdmVUbzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Tm9ybWFsPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5QYXJlbnRDaGlsZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRQaG9uZSMjI1NwbGl0TGlua1R5cGUyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmYXVsdCBsaW5rIHR5cGUgb2Ygc3BsaXRlZCB0aWNrZXRzIGZvciBMaW5rT2JqZWN0Mi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U3RhbmRhcmRt5N9pZyB2ZXJnZWJlbmVyIFZlcmtu/HBmdW5ncy1UeXAgdm9uIGdldGVpbHRlbiBUaWNrZXRzIGb8ciBkYXMgTGlua09iamVrdDIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdQaG9uZU5ldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iTm9ybWFsIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iIj4tIChubyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJlbnRDaGlsZDo6Tm9ybWFsIj5DaGlsZCAobmV3IHRpY2tldCBpcyBjaGlsZCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmVudENoaWxkOjpSZXZlcnNlIj5QYXJlbnQgKG5ldyB0aWNrZXQgaXMgcGFyZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm9ybWFsIj5Ob3JtYWwgKG5vcm1hbCBsaW5rIGJldHdlZW4gdGlja2V0KTwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPg== PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPG90cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENWUz4kSWQ6IFRpY2tldElUU01UaWNrZXQueG1sLHYgMS42LjIuMiAyMDA4LzAzLzE3IDEwOjMzOjEwIG1oIEV4cCAkPC9DVlM+CiAgICA8Q1ZTPiRPbGRJZDogVGlja2V0LnhtbCx2IDEuMTQ3LjIuNyAyMDA4LzAzLzE2IDE5OjIxOjUxIG1hcnRpbiBFeHAgJDwvQ1ZTPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpUeXBlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+SWYgdGlja2V0IHR5cGUgZmVhdHVyZSBpcyBlbmFibGVkLCB5b3UgY2FuIGRlZmluZSB0aWNrZXQgdHlwZXMgZm9yIHRpY2tldHMgKGUuIGcuIGluY2lkZW50LCBwcm9ibGVtLCBjaGFuZ2UsIC4uLikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGFzIFRpY2tldC1UeXAgRmVhdHVlcyBha3RpdmllcnQgaXN0LCBr9m5uZW4gVGlja2V0IFR5cGVuIHBybyBUaWNrZXQgZ2VzZXR6dCB3ZXJkZW4gKHouIEIuIGluY2lkZW50LCBwcm9ibGVtLCBjaGFuZ2UsIC4uLikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPE9wdGlvbiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9PcHRpb24+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZUtleTEzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBmcmVlIGtleSBmaWVsZCAxMyBmb3IgdGlja2V0cy4gV2l0aCB0aGlzIHNldHRpbmcgeW91IGNhbiBkZWZpbmUgYSBuZXcgdGlja2V0IGF0dHJpYnV0ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgRnJlaVNjaGz8c3NlbEZlbGRlcyAxMyBm/HIgVGlja2V0cy4gSGllcvxiZXIga/ZubmVuIHp1c+R0emxpY2hlIFRpY2tldGF0dHJpYnV0ZSBkZWZpbmllcnQgd2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyaXRpY2FsaXR5SUQiPkNyaXRpY2FsaXR5SUQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGV4dDEzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBGcmVlVGV4dEZpZWxkIDEzIGZvciB0aWNrZXRzLiBXaXRoIHRoaXMgc2V0dGluZyB5b3UgY2FuIGRlZmluZSBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZpbml0aW9uIGRlcyBGcmVpVGV4dEZlbGRlcyAxMyBm/HIgVGlja2V0cy4gSGllcvxiZXIga/ZubmVuIHp1c+R0emxpY2hlIFRpY2tldGF0dHJpYnV0ZSBkZWZpbmllcnQgd2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IiI+RE8gTk9UIEFDVElWQVRFIFRpY2tldEZyZWVUZXh0MTMuIEdFTkVSQUwgQ0FUQUxPRyBJUyBVU0VELjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVLZXkxNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgZnJlZSBrZXkgZmllbGQgMTQgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlTY2hs/HNzZWxGZWxkZXMgMTQgZvxyIFRpY2tldHMuIEhpZXL8YmVyIGv2bm5lbiB6dXPkdHpsaWNoZSBUaWNrZXRhdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGV4dDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbXBhY3RJRCI+SW1wYWN0SUQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGV4dDE0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBGcmVlVGV4dEZpZWxkIDE0IGZvciB0aWNrZXRzLiBXaXRoIHRoaXMgc2V0dGluZyB5b3UgY2FuIGRlZmluZSBhIG5ldyB0aWNrZXQgYXR0cmlidXRlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZpbml0aW9uIGRlcyBGcmVpVGV4dEZlbGRlcyAxNCBm/HIgVGlja2V0cy4gSGllcvxiZXIga/ZubmVuIHp1c+R0emxpY2hlIFRpY2tldGF0dHJpYnV0ZSBkZWZpbmllcnQgd2VyZGVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IiI+RE8gTk9UIEFDVElWQVRFIFRpY2tldEZyZWVUZXh0MTQuIEdFTkVSQUwgQ0FUQUxPRyBJUyBVU0VELjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTQ6OkRlZmF1bHRTZWxlY3Rpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5UaGUgZGVmYXVsdCBzZWxlY3Rpb24gb2YgRnJlZVRleHRGaWVsZCAxNCBpZiBtb3JlIHRoYW4gb25lIG9wdGlvbiBpcyBkZWZpbmVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EaWUgU3RhbmRhcmQtQXVzd2FobCBkZXMgRnJlaVRleHRGZWxkZXMgMTQgd2VubiBtZWhyZXJlIE9wdGlvbmVuIGRlZmluaWVydCBzaW5kLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4zIG5vcm1hbDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVLZXkxNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgZnJlZSBrZXkgZmllbGQgMTUgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlTY2hs/HNzZWxGZWxkZXMgMTUgZvxyIFRpY2tldHMuIEhpZXL8YmVyIGv2bm5lbiB6dXPkdHpsaWNoZSBUaWNrZXRhdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGV4dDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXZpZXcgUmVxdWlyZWQiPlJldmlldyBSZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIEZyZWVUZXh0RmllbGQgMTUgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlUZXh0RmVsZGVzIDE1IGb8ciBUaWNrZXRzLiBIaWVy/GJlciBr9m5uZW4genVz5HR6bGljaGUgVGlja2V0YXR0cmlidXRlIGRlZmluaWVydCB3ZXJkZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMCI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTU6OkRlZmF1bHRTZWxlY3Rpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5UaGUgZGVmYXVsdCBzZWxlY3Rpb24gb2YgRnJlZVRleHRGaWVsZCAxNSBpZiBtb3JlIHRoYW4gb25lIG9wdGlvbiBpcyBkZWZpbmVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EaWUgU3RhbmRhcmQtQXVzd2FobCBkZXMgRnJlaVRleHRGZWxkZXMgMTUgd2VubiBtZWhyZXJlIE9wdGlvbmVuIGRlZmluaWVydCBzaW5kLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5ObzwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVLZXkxNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgZnJlZSBrZXkgZmllbGQgMTYgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlTY2hs/HNzZWxGZWxkZXMgMTYgZvxyIFRpY2tldHMuIEhpZXL8YmVyIGv2bm5lbiB6dXPkdHpsaWNoZSBUaWNrZXRhdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGV4dDwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWNpc2lvbiBSZXN1bHQiPkRlY2lzaW9uIFJlc3VsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTYiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIEZyZWVUZXh0RmllbGQgMTYgZm9yIHRpY2tldHMuIFdpdGggdGhpcyBzZXR0aW5nIHlvdSBjYW4gZGVmaW5lIGEgbmV3IHRpY2tldCBhdHRyaWJ1dGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIEZyZWlUZXh0RmVsZGVzIDE2IGb8ciBUaWNrZXRzLiBIaWVy/GJlciBr9m5uZW4genVz5HR6bGljaGUgVGlja2V0YXR0cmlidXRlIGRlZmluaWVydCB3ZXJkZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRleHQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVuZGluZyI+UGVuZGluZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlLWFwcHJvdmVkIj5QcmUtYXBwcm92ZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFwcHJvdmVkIj5BcHByb3ZlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUG9zdHBvbmVkIj5Qb3N0cG9uZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlamVjdGVkIj5SZWplY3RlZDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUZXh0MTY6OkRlZmF1bHRTZWxlY3Rpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5UaGUgZGVmYXVsdCBzZWxlY3Rpb24gb2YgRnJlZVRleHRGaWVsZCAxNiBpZiBtb3JlIHRoYW4gb25lIG9wdGlvbiBpcyBkZWZpbmVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EaWUgU3RhbmRhcmQtQXVzd2FobCBkZXMgRnJlaVRleHRGZWxkZXMgMTYgd2VubiBtZWhyZXJlIE9wdGlvbmVuIGRlZmluaWVydCBzaW5kLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUZXh0PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5QZW5kaW5nPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRpbWVLZXkzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+RGVmaW5lIHRoZSBrZXkgb2YgVGlja2V0RnJlZVRpbWUgZmllbGQgMy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXMgU2NobHVlc3NlbHMgdm9uIFRpY2tldEZyZWVUaW1lIEZlbGQgMy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmc+UmVwYWlyIFN0YXJ0IFRpbWU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGltZVBlcmlvZDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIHBlcmlvZCwgd2hpY2ggY2FuIHNlbGVjdGVkIGluIFRpY2tldEZyZWVUaW1lIGZpZWxkIDMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVyIFplaXRzcGFubmUsIGRpZSBpbSBUaWNrZXRGcmVlVGltZSBGZWxkIDMgc2VsZWt0aWVydCB3ZXJkZW4ga2Fubi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kUGFzdCI+NTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iWWVhclBlcmlvZEZ1dHVyZSI+NTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lS2V5NCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUga2V5IG9mIFRpY2tldEZyZWVUaW1lIGZpZWxkIDQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIFNjaGx1ZXNzZWxzIHZvbiBUaWNrZXRGcmVlVGltZSBGZWxkIDQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRpbWU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPlJlY292ZXJ5IFN0YXJ0IFRpbWU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGltZVBlcmlvZDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIHBlcmlvZCwgd2hpY2ggY2FuIHNlbGVjdGVkIGluIFRpY2tldEZyZWVUaW1lIGZpZWxkIDQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVyIFplaXRzcGFubmUsIGRpZSBpbSBUaWNrZXRGcmVlVGltZSBGZWxkIDQgc2VsZWt0aWVydCB3ZXJkZW4ga2Fubi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kUGFzdCI+NTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iWWVhclBlcmlvZEZ1dHVyZSI+NTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lS2V5NSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUga2V5IG9mIFRpY2tldEZyZWVUaW1lIGZpZWxkIDUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIFNjaGx1ZXNzZWxzIHZvbiBUaWNrZXRGcmVlVGltZSBGZWxkIDUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRpbWU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkRlY2lzaW9uIERhdGU8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXRGcmVlVGltZVBlcmlvZDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5EZWZpbmUgdGhlIHBlcmlvZCwgd2hpY2ggY2FuIHNlbGVjdGVkIGluIFRpY2tldEZyZWVUaW1lIGZpZWxkIDUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVyIFplaXRzcGFubmUsIGRpZSBpbSBUaWNrZXRGcmVlVGltZSBGZWxkIDUgc2VsZWt0aWVydCB3ZXJkZW4ga2Fubi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpUaWNrZXRGcmVlVGltZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kUGFzdCI+NTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iWWVhclBlcmlvZEZ1dHVyZSI+NTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lS2V5NiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUga2V5IG9mIFRpY2tldEZyZWVUaW1lIGZpZWxkIDYuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkRlZmluaXRpb24gZGVzIFNjaGx1ZXNzZWxzIHZvbiBUaWNrZXRGcmVlVGltZSBGZWxkIDYuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRpbWU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPkR1ZSBEYXRlPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0RnJlZVRpbWVEaWZmNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgZGlmZmVyZW5jZSAoaW4gc2Vjb25kcykgb2YgdGhlIGRlZmF1bHR2YWx1ZSBpbiBUaWNrZXRGcmVlVGltZSBmaWVsZCA2LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5EZWZpbml0aW9uIGRlcyBVbnRlcnNjaGllZHMgKGluIFNla3VuZGVuKSBkZXMgRGVmYXVsdHdlcnRzIHZvbiBUaWNrZXRGcmVlVGltZSBGZWxkIDYuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6VGlja2V0RnJlZVRpbWU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nPjI1OTIwMDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldEZyZWVUaW1lUGVyaW9kNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmluZSB0aGUgcGVyaW9kLCB3aGljaCBjYW4gc2VsZWN0ZWQgaW4gVGlja2V0RnJlZVRpbWUgZmllbGQgNi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RGVmaW5pdGlvbiBkZXIgWmVpdHNwYW5uZSwgZGllIGltIFRpY2tldEZyZWVUaW1lIEZlbGQgNiBzZWxla3RpZXJ0IHdlcmRlbiBrYW5uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlRpY2tldEZyZWVUaW1lPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlllYXJQZXJpb2RQYXN0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJZZWFyUGVyaW9kRnV0dXJlIj45PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50VGlja2V0RnJlZVRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQWdlbnRUaWNrZXRGcmVlVGV4dCBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+RnJvbnRlbmRtb2R1bC1SZWdpc3RyYXRpb24gZGVzIEFnZW50VGlja2V0RnJlZVRleHQtT2JqZWt0cyBpbSBBZ2VudC1JbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+VGlja2V0IEZyZWVUZXh0PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxUaXRsZT5GcmVlIEZpZWxkczwvVGl0bGU+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5UaWNrZXQ8L05hdkJhck5hbWU+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRDbG9zZSMjI1RpY2tldEZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+U2hvd24gdGlja2V0IGZyZWUgdGV4dCBvcHRpb25zLiBQb3NzaWJsZSBzZXR0aW5nczogMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZCwgMiA9IEVuYWJsZWQgYW5kIHJlcXVpcmVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5BbmdlemVpZ3RlIFRpY2tldC1GcmVpLVRleHQtRmVsZGVyLiBN9mdsaWNoZSBFaW5zdGVsbHVuZ2VuOiAwID0gRGVha3RpdmllcnQsIDEgPSBBa3RpdmllcnQsIDIgPSBBa3RpdmllcnQgdW5kIFBmbGljaHRmZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3Q2xvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjExIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTYiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldENvbXBvc2UjIyNUaWNrZXRGcmVlVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIHRpY2tldCBmcmVlIHRleHQgb3B0aW9ucy4gUG9zc2libGUgc2V0dGluZ3M6IDAgPSBEaXNhYmxlZCwgMSA9IEVuYWJsZWQsIDIgPSBFbmFibGVkIGFuZCByZXF1aXJlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+QW5nZXplaWd0ZSBUaWNrZXQtRnJlaS1UZXh0LUZlbGRlci4gTfZnbGljaGUgRWluc3RlbGx1bmdlbjogMCA9IERlYWt0aXZpZXJ0LCAxID0gQWt0aXZpZXJ0LCAyID0gQWt0aXZpZXJ0IHVuZCBQZmxpY2h0ZmVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0NvbXBvc2U8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iNyI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iOSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjExIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTYiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVtYWlsIyMjVGlja2V0RnJlZVRpbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biBmcmVlIHRpbWUgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgRnJlaS1aZWl0LUZlbGRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld0VtYWlsTmV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFBob25lIyMjVGlja2V0RnJlZVRpbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biBmcmVlIHRpbWUgb3B0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+R2V6ZWlndGUgRnJlaS1aZWl0LUZlbGRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6Vmlld1Bob25lTmV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFBob25lIyMjU3BsaXRMaW5rVHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPkRlZmF1bHQgbGluayB0eXBlIG9mIHNwbGl0ZWQgdGlja2V0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+U3RhbmRhcmRt5N9pZyB2ZXJnZWJlbmVyIFZlcmtu/HBmdW5ncy1UeXAgdm9uIGdldGVpbHRlbiBUaWNrZXRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3UGhvbmVOZXc8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IkNoaWxkIj4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iIj4tIChubyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGlsZCI+Q2hpbGQgKG5ldyB0aWNrZXQgaXMgY2hpbGQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJlbnQiPlBhcmVudCAobmV3IHRpY2tldCBpcyBwYXJlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3JtYWwiPk5vcm1hbCAobm9ybWFsIGxpbmsgYmV0d2VlbiB0aWNrZXQpPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFByaW9yaXR5IyMjVGlja2V0VHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgdGlja2V0IHR5cGUgKFRpY2tldDo6VHlwZSBuZWVkcyB0byBiZSBhY3RpdmF0ZWQpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5XZW5uIGRlciBUaWNrZXQtVHlwIGdlc2V0enQgd2VyZGVuIHNvbGwgKFRpY2tldDo6VHlwZSBtdXNzIGFrdGl2IHNlaW4pLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3UHJpb3JpdHk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8T3B0aW9uIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIwIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFByaW9yaXR5IyMjU2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklmIHlvdSB3YW50IHRvIHNldCB0aGUgc2VydmljZSAoVGlja2V0OjpTZXJ2aWNlIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPldlbm4gZGVyIFNlcnZpY2UgZ2VzZXR6dCB3ZXJkZW4gc29sbCAoVGlja2V0OjpTZXJ2aWNlIG11c3MgYWt0aXYgc2VpbikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6OlZpZXdQcmlvcml0eTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMSI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjVGlja2V0RnJlZVRleHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5TaG93biB0aWNrZXQgZnJlZSB0ZXh0IG9wdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZGUiPkdlemVpZ3RlIFRpY2tldC1GcmVpLVRleHQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjciPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjgiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEzIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE2Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNUaWNrZXRGcmVlVGltZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPlNob3duIGZyZWUgdGltZSBvcHRpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj5HZXplaWd0ZSBGcmVpLVplaXQtRmVsZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6VGlja2V0OjpWaWV3U2VhcmNoPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjYiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMzEwLUZyZWVUZXh0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+TW9kdWxlIHRvIHNob3cgZnJlZSB0ZXh0IGxpbmsgaW4gbWVudS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJkZSI+TGluayBm/HIgIkZyZWlmZWxkZXIiIGltIE1lbvwgZGVyIFRpY2tldGFuc2ljaHQgYW56ZWlnZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpUaWNrZXQ6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6VGlja2V0TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkZyZWUgRmllbGRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+Q2hhbmdlIHRoZSB0aWNrZXQgZnJlZSBmaWVsZHMhPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50VGlja2V0RnJlZVRleHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFRpY2tldEZyZWVUZXh0JmFtcDtUaWNrZXRJRD0kUURhdGF7IlRpY2tldElEIn08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMzIwLUxpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5Nb2R1bGUgdG8gc2hvdyBhIGxpbmsgdG8gbGluayBhIHRpY2tldCB3aXRoIGFub3RoZXIgb2JqZWN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPERlc2NyaXB0aW9uIExhbmc9ImRlIj7cYmVyIGRpZXNlcyBNb2R1bCB3aXJkIGVpbiBMaW5rIGltIE1lbvwgZGVyIFRpY2tldGFuc2ljaHQgYW5nZXplaWd0LCBtaXQgZGVtIGVpbiBUaWNrZXQgbWl0IGVpbmVtIGFuZGVyZW4gT2JqZWt0IHZlcmtu/HBmdCB3ZXJkZW4ga2Fubi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldDo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaWNrZXRNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+TGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkxpbmsgdGhpcyB0aWNrZXQgdG8gYW4gb3RoZXIgb2JqZWN0cyE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRMaW5rT2JqZWN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRMaW5rT2JqZWN0JmFtcDtTb3VyY2VPYmplY3Q9VGlja2V0JmFtcDtTb3VyY2VJRD0kUURhdGF7IlRpY2tldElEIn08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3Ryc19jb25maWc+ IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9iZ19JVFNNVGlja2V0LnBtIC0gdGhlIGJ1bGdhcmlhbiB0cmFuc2xhdGlvbiBvZiBJVFNNVGlja2V0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDcgT1RSUyBHbWJILCBodHRwOi8vb3Rycy5vcmcvCiMgLS0KIyAkSWQ6IGJnX0lUU01UaWNrZXQucG0sdiAxLjEuMi4xIDIwMDcvMTIvMDMgMTU6NTM6NDEgbWggRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX0lUU01UaWNrZXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1ZSBEYXRlJ30gPSAnyvDg6e3gIOTg8uAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaXNpb24nfSA9ICfQ5fjl7ejlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYXNvbid9ID0gJ87x7e7i4O3o5Sc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpc2lvbiBEYXRlJ30gPSAnxODy4CDn4CDw5fjg4uDt5Sc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgZGVjaXNpb24gdG8gdGlja2V0J30gPSAnxO7h4OLoIPDl+OXt6OUg6vrsIOHo6+Xy4Cc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpc2lvbiBSZXN1bHQnfSA9ICfQ5efz6/Lg8iDu8iDw5fjl7ejl8u4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3IFJlcXVpcmVkJ30gPSAnyOfo8eri4CDv8OXj6+Xm5ODt5Sc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbG9zZWQgd2l0aCB3b3JrYXJvdW5kJ30gPSAn7/Do6uv+9+XtIPEg7uH17uTt7iDw5fjl7ejlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZGl0aW9uYWwgSVRTTSBGaWVsZHMnfSA9ICfE7u/66+3o8uXr7eggSVRTTSDv7uvl8uAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIElUU00gZmllbGRzIG9mIHRpY2tldCd9ID0gJ8/w7uzl7eggSVRTTSDv7uvl8uDy4CDt4CDh6Ovl8uAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyIFN0YXJ0IFRpbWUnfSA9ICfC8OXs5SDt4CDx8uDw8ujw4O3lIO3gIPDl7O7t8uAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjb3ZlcnkgU3RhcnQgVGltZSd9ID0gJ8Lw5ezlIO3gIPHy4PDy6PDg7eUg7eAg4vrn8fLg7e7i/+Lg7eXy7ic7CgogICAgcmV0dXJuIDE7Cn0KCjE7 IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9jel9JVFNNVGlja2V0LnBtIC0gdGhlIGN6ZWNoIHRyYW5zbGF0aW9uIG9mIElUU01UaWNrZXQKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBPVFJTIEdtYkgsIGh0dHA6Ly9vdHJzLm9yZy8KIyAtLQojICRJZDogY3pfSVRTTVRpY2tldC5wbSx2IDEuMS4yLjEgMjAwNy8xMi8xMCAxMzo1OToxMCBtaCBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Y3pfSVRTTVRpY2tldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVlIERhdGUnfSA9ICdLb25lxI1uw60gZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaXNpb24nfSA9ICfFmGXFoWVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhc29uJ30gPSAnRMWvdm9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2lzaW9uIERhdGUnfSA9ICdEYXR1bSByb3pob2RudXTDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgZGVjaXNpb24gdG8gdGlja2V0J30gPSAnRG9kYXQgxZllxaFlbsOtIGsgdGlrZXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2lzaW9uIFJlc3VsdCd9ID0gJ1bDvXNsZWRlayByb3pob2RudXTDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcgUmVxdWlyZWQnfSA9ICdWecW+YWR1amUgcMWZZWhsZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xvc2VkIHdpdGggd29ya2Fyb3VuZCd9ID0gJ1V6YXbFmWVuIHMgb2JjaG9kbsOtbSByb3pob2RudXTDrW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBJVFNNIEZpZWxkcyd9ID0gJ0RvZGF0ZcSNbsOpIElUU00gcG9sZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgSVRTTSBmaWVsZHMgb2YgdGlja2V0J30gPSAnWm3Em25pdCBJVFNNIHBvbMOtIHRpa2V0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXIgU3RhcnQgVGltZSd9ID0gJ8SMYXMgemFow6FqZW7DrSBvcHJhdnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjb3ZlcnkgU3RhcnQgVGltZSd9ID0gJ8SMYXMgemFow6FqZW7DrSBvYm5vdmVuw60nOwoKICAgIHJldHVybiAxOwp9CgoxOw== IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9JVFNNVGlja2V0LnBtIC0gdGhlIGdlcm1hbiB0cmFuc2xhdGlvbiBvZiBJVFNNVGlja2V0CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDcgT1RSUyBHbWJILCBodHRwOi8vb3Rycy5vcmcvCiMgLS0KIyAkSWQ6IGRlX0lUU01UaWNrZXQucG0sdiAxLjEyIDIwMDcvMDcvMDIgMTQ6NTg6NDggbWggRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0lUU01UaWNrZXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1ZSBEYXRlJ30gPSAnRuRsbGlna2VpdHNkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpc2lvbid9ID0gJ0VudHNjaGVpZHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFzb24nfSA9ICdCZWdy/G5kdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2lzaW9uIERhdGUnfSA9ICdFbnRzY2hlaWR1bmdzZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGRlY2lzaW9uIHRvIHRpY2tldCd9ID0gJ0VudHNjaGVpZHVuZyBhbiBUaWNrZXQgaORuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2lzaW9uIFJlc3VsdCd9ID0gJ0VudHNjaGVpZHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcgUmVxdWlyZWQnfSA9ICdOYWNoYmVhcmJlaXR1bmcgZXJmb3JkZXJsaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Nsb3NlZCB3aXRoIHdvcmthcm91bmQnfSA9ICdwcm92aXNvcmlzY2ggZ2VzY2hsb3NzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkaXRpb25hbCBJVFNNIEZpZWxkcyd9ID0gJ1p1c+R0emxpY2hlIElUU00gRmVsZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBJVFNNIGZpZWxkcyBvZiB0aWNrZXQnfSA9ICfEbmRlcm4gZGVyIElUU00gRmVsZGVyIGRlcyBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpciBTdGFydCBUaW1lJ30gPSAnUmVwYXJhdHVyIFN0YXJ0emVpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNvdmVyeSBTdGFydCBUaW1lJ30gPSAnV2llZGVyaGVyc3RlbGx1bmcgU3RhcnR6ZWl0JzsKCiAgICByZXR1cm4gMTsKfQoKMTs= IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QWRkdGxJVFNNRmllbGQucG0gLSBhZGRpdGlvbmFsIGl0c20gZmllbGRzIGZvciB0aWNrZXQKIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwOCBPVFJTIEFHLCBodHRwOi8vb3Rycy5vcmcvCiMgLS0KIyAkSWQ6IEFnZW50VGlja2V0QWRkdGxJVFNNRmllbGQucG0sdiAxLjguMi42IDIwMDgvMDMvMjcgMTU6NDY6NDIgdWIgRXhwICQKIyAkT2xkSWQ6IEFnZW50VGlja2V0RnJlZVRleHQucG0sdiAxLjI2LjIuNCAyMDA4LzAzLzI1IDEzOjI3OjA1IHViIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC50eHQuCiMgLS0KCiMgLS0tCiMgSVRTTQojIC0tLQojcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50VGlja2V0RnJlZVRleHQ7CnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFRpY2tldEFkZHRsSVRTTUZpZWxkOwojIC0tLQoKdXNlIHN0cmljdDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpTdGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlOwojIC0tLQojIElUU00KIyAtLS0KdXNlIEtlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZzsKdXNlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ0lQQWxsb2NhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTsKIyAtLS0KCnVzZSB2YXJzIHF3KCRWRVJTSU9OKTsKJFZFUlNJT04gPSAnJFJldmlzaW9uOiAxLjguMi42ICQnOwokVkVSU0lPTiA9fiBzL15cJC4qOlxXKC4qKVxXLis/JC8kMS87CgpzdWIgbmV3IHsKICAgIG15ICRUeXBlID0gc2hpZnQ7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyAoJFNlbGYsICRUeXBlKTsKCiAgICBmb3JlYWNoIChrZXlzICVQYXJhbSkgewogICAgICAgICRTZWxmLT57JF99ID0gJFBhcmFteyRffTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBPcGplY3RzCiAgICBmb3JlYWNoIChxdyhQYXJhbU9iamVjdCBEQk9iamVjdCBUaWNrZXRPYmplY3QgTGF5b3V0T2JqZWN0IExvZ09iamVjdCBRdWV1ZU9iamVjdCBDb25maWdPYmplY3QpKSB7CiAgICAgICAgaWYgKCEkU2VsZi0+eyRffSkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdGFsRXJyb3IoTWVzc2FnZSA9PiAiR290IG5vICRfISIpOwogICAgICAgIH0KICAgIH0KICAgICRTZWxmLT57U3RhdGVPYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlN0YXRlLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57VXBsb2FkQ2FjaE9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZS0+bmV3KCVQYXJhbSk7CiMgLS0tCiMgSVRTTQojIC0tLQogICAgJFNlbGYtPntHZW5lcmFsQ2F0YWxvZ09iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2ctPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntDSVBBbGxvY2F0ZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNJUEFsbG9jYXRlLT5uZXcoJVBhcmFtKTsKICAgICRTZWxmLT57U2VydmljZU9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZS0+bmV3KCVQYXJhbSk7CiMgLS0tCgogICAgIyBnZXQgZm9ybSBpZAogICAgJFNlbGYtPntGb3JtSUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICdGb3JtSUQnKTsKICAgIG15IEBJbmZvcm1Vc2VySUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoUGFyYW0gPT4gJ0luZm9ybVVzZXJJRCcpOwogICAgJFNlbGYtPntJbmZvcm1Vc2VySUR9ID0gXEBJbmZvcm1Vc2VySUQ7CiAgICBteSBASW52b2x2ZWRVc2VySUQgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoUGFyYW0gPT4gJ0ludm9sdmVkVXNlcklEJyk7CiAgICAkU2VsZi0+e0ludm9sdmVkVXNlcklEfSA9IFxASW52b2x2ZWRVc2VySUQ7CiAgICAjIGNyZWF0ZSBmb3JtIGlkCiAgICBpZiAoISRTZWxmLT57Rm9ybUlEfSkgewogICAgICAgICRTZWxmLT57Rm9ybUlEfSA9ICRTZWxmLT57VXBsb2FkQ2FjaE9iamVjdH0tPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgJFNlbGYgPSBzaGlmdDsKICAgIG15ICVQYXJhbSA9IEBfOwogICAgbXkgJE91dHB1dDsKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoISRTZWxmLT57VGlja2V0SUR9KSB7CiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5lZWQgVGlja2V0SUQgaXMgZ2l2ZW4hIiwKICAgICAgICAgICAgQ29tbWVudCA9PiAnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluLicsCiAgICAgICAgKTsKICAgIH0KICAgICMgY2hlY2sgcGVybWlzc2lvbnMKICAgIGlmICghJFNlbGYtPntUaWNrZXRPYmplY3R9LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSkpIHsKICAgICAgICAjIGVycm9yIHNjcmVlbiwgZG9uJ3Qgc2hvdyB0aWNrZXQKICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIllvdSBuZWVkICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259IHBlcm1pc3Npb25zISIsCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICVUaWNrZXQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEdldChUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgbG9jayBzdGF0ZQogICAgaWYgKCRTZWxmLT57Q29uZmlnfS0+e1JlcXVpcmVkTG9ja30pIHsKICAgICAgICBpZiAoISRTZWxmLT57VGlja2V0T2JqZWN0fS0+TG9ja0lzVGlja2V0TG9ja2VkKFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9KSkgewogICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkxvY2tTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIExvY2sgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Pd25lclNldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICkpIHsKICAgICAgICAgICAgICAgICMgc2hvdyBsb2NrIHN0YXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Byb3BlcnRpZXNMb2NrJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPd25lcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCEkQWNjZXNzT2spIHsKICAgICAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkhlYWRlcihWYWx1ZSA9PiAkVGlja2V0e051bWJlcn0pOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPldhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiU29ycnksIHlvdSBuZWVkIHRvIGJlIHRoZSBvd25lciB0byBkbyB0aGlzIGFjdGlvbiEiLAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjaGFuZ2UgdGhlIG93bmVyIGZpcnN0LicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3RlcigpOwogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldEJhY2snLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0QmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtID0gKCk7CiAgICBmb3JlYWNoIChxdygKICAgICAgICBOZXdTdGF0ZUlEIE5ld1ByaW9yaXR5SUQgVGltZVVuaXRzIEFydGljbGVUeXBlSUQgVGl0bGUgQm9keSBTdWJqZWN0CiAgICAgICAgWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUgTmV3T3duZXJJRCBOZXdPd25lclR5cGUgT2xkT3duZXJJRCBOZXdSZXNwb25zaWJsZUlECiAgICAgICAgVHlwZUlEIFNlcnZpY2VJRCBTTEFJRCBFeHBhbmQKICAgICAgICBBdHRhY2htZW50VXBsb2FkCiAgICAgICAgQXR0YWNobWVudERlbGV0ZTEgQXR0YWNobWVudERlbGV0ZTIgQXR0YWNobWVudERlbGV0ZTMgQXR0YWNobWVudERlbGV0ZTQKICAgICAgICBBdHRhY2htZW50RGVsZXRlNSBBdHRhY2htZW50RGVsZXRlNiBBdHRhY2htZW50RGVsZXRlNyBBdHRhY2htZW50RGVsZXRlOAogICAgICAgIEF0dGFjaG1lbnREZWxldGU5IEF0dGFjaG1lbnREZWxldGUxMCBBdHRhY2htZW50RGVsZXRlMTEgQXR0YWNobWVudERlbGV0ZTEyCiAgICAgICAgQXR0YWNobWVudERlbGV0ZTEzIEF0dGFjaG1lbnREZWxldGUxNCBBdHRhY2htZW50RGVsZXRlMTUgQXR0YWNobWVudERlbGV0ZTE2CiAgICApKSB7CiAgICAgICAgJEdldFBhcmFteyRffSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbShQYXJhbSA9PiAkXyk7CiAgICB9CiMgLS0tCiMgSVRTTQojIC0tLQogICAgIyBnZXQgbmVlZGVkIHN0dWZmCiAgICAkR2V0UGFyYW17SW1wYWN0SUR9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJUaWNrZXRGcmVlVGV4dDE0Iik7CiAgICAkR2V0UGFyYW17SW1wYWN0UkN9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJJbXBhY3RSQyIpOwogICAgJEdldFBhcmFte1ByaW9yaXR5UkN9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJQcmlvcml0eVJDIik7CiAgICAjIHNldCBzZXJ2aWNlIGlkCiAgICBpZiAoIWRlZmluZWQoJEdldFBhcmFte1NlcnZpY2VJRH0pICYmICRUaWNrZXR7U2VydmljZUlEfSkgewogICAgICAgICRHZXRQYXJhbXtTZXJ2aWNlSUR9ID0gJFRpY2tldHtTZXJ2aWNlSUR9OwogICAgfQogICAgbXkgJVNlcnZpY2U7CiAgICBteSAkSW1wYWN0TGlzdCA9IFtdOwogICAgaWYgKCRHZXRQYXJhbXtTZXJ2aWNlSUR9KSB7CiAgICAgICAgIyBnZXQgaW1wYWN0IGxpc3QKICAgICAgICAkSW1wYWN0TGlzdCA9ICRTZWxmLT57R2VuZXJhbENhdGFsb2dPYmplY3R9LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkltcGFjdCcsCiAgICAgICAgKTsKICAgICAgICAjIGdldCBzZXJ2aWNlCiAgICAgICAgJVNlcnZpY2UgPSAkU2VsZi0+e1NlcnZpY2VPYmplY3R9LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdldFBhcmFte1NlcnZpY2VJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAjIHJlY2FsY3VsYXRlIGltcGFjdAogICAgICAgIGlmICgkR2V0UGFyYW17SW1wYWN0UkN9KSB7CiAgICAgICAgICAgICMgZ2V0IGRlZmF1bHQgaW1wYWN0IGlkCiAgICAgICAgICAgIG15ICVJbXBhY3RMaXN0UmV2ZXJzZSA9IHJldmVyc2UoJXskSW1wYWN0TGlzdH0pOwogICAgICAgICAgICAkR2V0UGFyYW17SW1wYWN0SUR9ID0gJEltcGFjdExpc3RSZXZlcnNleyRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXRGcmVlVGV4dDE0OjpEZWZhdWx0U2VsZWN0aW9uJyl9OwogICAgICAgICAgICAkR2V0UGFyYW17UHJpb3JpdHlSQ30gPSAxOwogICAgICAgIH0KICAgICAgICAjIHJlY2FsY3VsYXRlIHByaW9yaXR5CiAgICAgICAgaWYgKCRHZXRQYXJhbXtQcmlvcml0eVJDfSkgewogICAgICAgICAgICBpZiAoJEdldFBhcmFte0ltcGFjdElEfSkgewogICAgICAgICAgICAgICAgIyBnZXQgcHJpb3JpdHkKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtQcmlvcml0eUlERnJvbUltcGFjdH0gPSAkU2VsZi0+e0NJUEFsbG9jYXRlT2JqZWN0fS0+UHJpb3JpdHlBbGxvY2F0aW9uR2V0KAogICAgICAgICAgICAgICAgICAgIENyaXRpY2FsaXR5SUQgPT4gJFNlcnZpY2V7Q3JpdGljYWxpdHlJRH0sCiAgICAgICAgICAgICAgICAgICAgSW1wYWN0SUQgPT4gJEdldFBhcmFte0ltcGFjdElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17TmV3UHJpb3JpdHlJRH0gPSAnJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRHZXRQYXJhbXtJbXBhY3RJRH0gPSB1bmRlZjsKICAgIH0KIyAtLS0KICAgICMgZ2V0IHRpY2tldCBmcmVlIHRleHQgcGFyYW1zCiAgICBmb3JlYWNoICgxLi4xNikgewogICAgICAgICRHZXRQYXJhbXsiVGlja2V0RnJlZUtleSRfIn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oUGFyYW0gPT4gIlRpY2tldEZyZWVLZXkkXyIpOwogICAgICAgICRHZXRQYXJhbXsiVGlja2V0RnJlZVRleHQkXyJ9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKFBhcmFtID0+ICJUaWNrZXRGcmVlVGV4dCRfIik7CiAgICB9CiAgICAjIGdldCB0aWNrZXQgZnJlZSB0aW1lIHBhcmFtcwogICAgRlJFRVRJTUVOVU1CRVI6CiAgICBmb3IgbXkgJEZyZWVUaW1lTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIGNyZWF0ZSBmcmVldGltZSBwcmVmaXgKICAgICAgICBteSAkRnJlZVRpbWVQcmVmaXggPSAnVGlja2V0RnJlZVRpbWUnIC4gJEZyZWVUaW1lTnVtYmVyOwoKICAgICAgICAjIGdldCBmb3JtIHBhcmFtcwogICAgICAgIGZvciBteSAkVHlwZSAocXcoVXNlZCBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSB9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgYWRkaXRpb25hbCBwYXJhbXMKICAgICAgICAkR2V0UGFyYW17ICRGcmVlVGltZVByZWZpeCAuICdPcHRpb25hbCcgfSA9IDE7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnVXNlZCcgfSA9ICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ1VzZWQnIH0gfHwgMDsKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCggJ1RpY2tldEZyZWVUaW1lT3B0aW9uYWwnIC4gJEZyZWVUaW1lTnVtYmVyICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ09wdGlvbmFsJyB9ID0gMDsKICAgICAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnVXNlZCcgfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRoZSB0aW1lZGF0YQogICAgICAgIG15ICRUaW1lRGF0YUNvbXBsZXRlID0gMTsKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAocXcoVXNlZCBZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgbmV4dCBUWVBFIGlmIGRlZmluZWQgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSB9OwoKICAgICAgICAgICAgJFRpbWVEYXRhQ29tcGxldGUgPSAwOwogICAgICAgICAgICBsYXN0IFRZUEU7CiAgICAgICAgfQoKICAgICAgICBuZXh0IEZSRUVUSU1FTlVNQkVSIGlmICRUaW1lRGF0YUNvbXBsZXRlOwoKICAgICAgICBpZiAoISRUaWNrZXR7ICRGcmVlVGltZVByZWZpeCB9KSB7CgogICAgICAgICAgICBmb3IgbXkgJFR5cGUgKHF3KFVzZWQgWWVhciBNb250aCBEYXkgSG91ciBNaW51dGUpKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAkVHlwZSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEZSRUVUSU1FTlVNQkVSOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgZnJlZXRpbWUgZGF0YSBmcm9tIHRpY2tldAogICAgICAgIG15ICRUaWNrZXRGcmVlVGltZVN0cmluZyA9ICRTZWxmLT57VGltZU9iamVjdH0tPlRpbWVTdGFtcDJTeXN0ZW1UaW1lKCBTdHJpbmcgPT4gJFRpY2tldHsgJEZyZWVUaW1lUHJlZml4IH0gKTsKICAgICAgICBteSAoICRTZWNvbmQsICRNaW51dGUsICRIb3VyLCAkRGF5LCAkTW9udGgsICRZZWFyICkgPSAkU2VsZi0+e1RpbWVPYmplY3R9LT5TeXN0ZW1UaW1lMkRhdGUoIFN5c3RlbVRpbWUgPT4gJFRpY2tldEZyZWVUaW1lU3RyaW5nICk7CgogICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ1VzZWQnIH0gPSAxOwogICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ01pbnV0ZScgfSA9ICRNaW51dGU7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnSG91cicgfSA9ICRIb3VyOwogICAgICAgICRHZXRQYXJhbXsgJEZyZWVUaW1lUHJlZml4IC4gJ0RheScgfSA9ICREYXk7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnTW9udGgnIH0gPSAkTW9udGg7CiAgICAgICAgJEdldFBhcmFteyAkRnJlZVRpbWVQcmVmaXggLiAnWWVhcicgfSA9ICRZZWFyOwogICAgfQogICAgIyBnZXQgYXJ0aWNsZSBmcmVlIHRleHQgcGFyYW1zCiAgICBmb3JlYWNoICgxLi4zKSB7CiAgICAgICAgJEdldFBhcmFteyJBcnRpY2xlRnJlZUtleSRfIn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oUGFyYW0gPT4gIkFydGljbGVGcmVlS2V5JF8iKTsKICAgICAgICAkR2V0UGFyYW17IkFydGljbGVGcmVlVGV4dCRfIn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oUGFyYW0gPT4gIkFydGljbGVGcmVlVGV4dCRfIik7CiAgICB9CiAgICAjIHJld3JhcCBib2R5IGlmIGV4aXN0cwogICAgaWYgKCRHZXRQYXJhbXtCb2R5fSkgewogICAgICAgIG15ICRTaXplID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZScpIHx8IDcwOwogICAgICAgICRHZXRQYXJhbXtCb2R5fSA9fiBzLyhePi4rfC57NCwkU2l6ZX0pKD86XHN8XHopLyQxXG4vZ207CiAgICB9CgogICAgaWYgKCRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RvcmUnKSB7CiAgICAgICAgIyBzdG9yZSBhY3Rpb24KICAgICAgICBteSAlRXJyb3IgPSAoKTsKICAgICAgICAjIGNoZWNrIHBlbmRpbmcgdGltZQogICAgICAgIGlmICgkR2V0UGFyYW17TmV3U3RhdGVJRH0pIHsKICAgICAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+e1N0YXRlT2JqZWN0fS0+U3RhdGVHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICMgY2hlY2sgc3RhdGUgdHlwZQogICAgICAgICAgICBpZiAoJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15wZW5kaW5nL2kpIHsKICAgICAgICAgICAgICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICAgICAgICAgICAgICBmb3JlYWNoIChxdyhZZWFyIE1vbnRoIERheSBIb3VyIE1pbnV0ZSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWRlZmluZWQoJEdldFBhcmFteyRffSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yeyJEYXRlIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICMgY2hlY2sgZGF0ZQogICAgICAgICAgICAgICAgaWYgKCEkU2VsZi0+e1RpbWVPYmplY3R9LT5EYXRlMlN5c3RlbVRpbWUoJUdldFBhcmFtLCBTZWNvbmQgPT4gMCkpIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3J7IkRhdGUgaW52YWxpZCJ9ID0gJyogaW52YWxpZCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJFNlbGYtPntUaW1lT2JqZWN0fS0+RGF0ZTJTeXN0ZW1UaW1lKCVHZXRQYXJhbSwgU2Vjb25kID0+IDApIDwgJFNlbGYtPntUaW1lT2JqZWN0fS0+U3lzdGVtVGltZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yeyJEYXRlIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntOb3RlfSkgewogICAgICAgICAgICAjIGNoZWNrIHN1YmplY3QKICAgICAgICAgICAgaWYgKCEkR2V0UGFyYW17U3ViamVjdH0pIHsKICAgICAgICAgICAgICAgICRFcnJvcnsiU3ViamVjdCBpbnZhbGlkIn0gPSAnKiBpbnZhbGlkJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIGNoZWNrIGJvZHkKICAgICAgICAgICAgaWYgKCEkR2V0UGFyYW17Qm9keX0pIHsKICAgICAgICAgICAgICAgICRFcnJvcnsiQm9keSBpbnZhbGlkIn0gPSAnKiBpbnZhbGlkJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIEZyZWVUZXh0RmllbGQgKGlmIGNvbmZpZ3VyZWQpCiAgICAgICAgZm9yZWFjaCAoMS4uMTYpIHsKICAgICAgICAgICAgaWYgKCRTZWxmLT57Q29uZmlnfS0+eydUaWNrZXRGcmVlVGV4dCd9LT57JF99ID09IDIgJiYgJEdldFBhcmFteyJUaWNrZXRGcmVlVGV4dCRfIn0gZXEgJycpIHsKICAgICAgICAgICAgICAgICRFcnJvcnsiVGlja2V0RnJlZVRleHRGaWVsZCRfIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBpcyBzZWxlY3RlZAogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnVGlja2V0OjpTZXJ2aWNlJykgJiYgJEdldFBhcmFte1NMQUlEfSAmJiAhJEdldFBhcmFte1NlcnZpY2VJRH0pIHsKICAgICAgICAgICAgJEVycm9yeyJTZXJ2aWNlIGludmFsaWQifSA9ICcqIGludmFsaWQnOwogICAgICAgIH0KICAgICAgICAjIGF0dGFjaG1lbnQgZGVsZXRlCiAgICAgICAgZm9yZWFjaCAoMS4uMTYpIHsKICAgICAgICAgICAgaWYgKCRHZXRQYXJhbXsiQXR0YWNobWVudERlbGV0ZSRfIn0pIHsKICAgICAgICAgICAgICAgICRFcnJvcntBdHRhY2htZW50RGVsZXRlfSA9IDE7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1VwbG9hZENhY2hPYmplY3R9LT5Gb3JtSURSZW1vdmVGaWxlKAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRfLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAjIGF0dGFjaG1lbnQgdXBsb2FkCiAgICAgICAgaWYgKCRHZXRQYXJhbXtBdHRhY2htZW50VXBsb2FkfSkgewogICAgICAgICAgICAkRXJyb3J7QXR0YWNobWVudFVwbG9hZH0gPSAxOwogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gPT4gImZpbGVfdXBsb2FkIiwKICAgICAgICAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoT2JqZWN0fS0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICAlVXBsb2FkU3R1ZmYsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkU2VsZi0+e1VwbG9hZENhY2hPYmplY3R9LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgKTsKICAgICAgICAjIGNoZWNrIGV4cGFuZAogICAgICAgIGlmICgkR2V0UGFyYW17RXhwYW5kfSkgewogICAgICAgICAgICAlRXJyb3IgPSAoKTsKICAgICAgICAgICAgJEVycm9yeyJFeHBhbmQifSA9IDE7CiAgICAgICAgfQogICAgICAgICMgY2hlY2sgZXJyb3JzCiAgICAgICAgaWYgKCVFcnJvcikgewogICAgICAgICAgICAjIHRpY2tldCBmcmVlIHRleHQKICAgICAgICAgICAgbXkgJVRpY2tldEZyZWVUZXh0ID0gKCk7CiAgICAgICAgICAgIGZvcmVhY2ggKDEuLjE2KSB7CiAgICAgICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVLZXkkXyJ9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICJUaWNrZXRGcmVlS2V5JF8iLAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVUZXh0JF8ifSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAiVGlja2V0RnJlZVRleHQkXyIsCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAlVGlja2V0RnJlZVRleHRIVE1MID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BZ2VudEZyZWVUZXh0KAogICAgICAgICAgICAgICAgQ29uZmlnID0+IFwlVGlja2V0RnJlZVRleHQsCiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgIyB0aWNrZXQgZnJlZSB0aW1lCiAgICAgICAgICAgIG15ICVUaWNrZXRGcmVlVGltZUhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFnZW50RnJlZURhdGUoCiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gXCVHZXRQYXJhbQogICAgICAgICAgICApOwogICAgICAgICAgICAjIGFydGljbGUgZnJlZSB0ZXh0CiAgICAgICAgICAgIG15ICVBcnRpY2xlRnJlZVRleHQgPSAoKTsKICAgICAgICAgICAgZm9yZWFjaCAoMS4uMykgewogICAgICAgICAgICAgICAgJEFydGljbGVGcmVlVGV4dHsiQXJ0aWNsZUZyZWVLZXkkXyJ9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5BcnRpY2xlRnJlZVRleHRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAiQXJ0aWNsZUZyZWVLZXkkXyIsCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRBcnRpY2xlRnJlZVRleHR7IkFydGljbGVGcmVlVGV4dCRfIn0gPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICJBcnRpY2xlRnJlZVRleHQkXyIsCiAgICAgICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAlQXJ0aWNsZUZyZWVUZXh0SFRNTCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+VGlja2V0QXJ0aWNsZUZyZWVUZXh0KAogICAgICAgICAgICAgICAgQ29uZmlnID0+IFwlQXJ0aWNsZUZyZWVUZXh0LAogICAgICAgICAgICAgICAgQXJ0aWNsZSA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5IZWFkZXIoVmFsdWUgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9KTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgICAgICVUaWNrZXRGcmVlVGV4dEhUTUwsCiAgICAgICAgICAgICAgICAlVGlja2V0RnJlZVRpbWVIVE1MLAogICAgICAgICAgICAgICAgJUFydGljbGVGcmVlVGV4dEhUTUwsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiMgLS0tCiMgSVRTTQojIC0tLQogICAgICAgICAgICAgICAgSW1wYWN0cyA9PiAkSW1wYWN0TGlzdCwKICAgICAgICAgICAgICAgIEltcGFjdElEID0+ICRHZXRQYXJhbXtJbXBhY3RJRH0sCiMgLS0tCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Gb290ZXIoKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntUaXRsZX0pIHsKICAgICAgICAgICAgaWYgKGRlZmluZWQoJEdldFBhcmFte1RpdGxlfSkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEdldFBhcmFte1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRTZWxmLT57Q29uZmlnfS0+e1RpY2tldFR5cGV9KSB7CiAgICAgICAgICAgIGlmICgkR2V0UGFyYW17VHlwZUlEfSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkR2V0UGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICYmICRTZWxmLT57Q29uZmlnfS0+e1NlcnZpY2V9KSB7CiAgICAgICAgICAgIGlmIChkZWZpbmVkKCRHZXRQYXJhbXtTZXJ2aWNlSUR9KSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTZXJ2aWNlU2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkR2V0UGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZGVmaW5lZCgkR2V0UGFyYW17U0xBSUR9KSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTTEFTZXQoCiAgICAgICAgICAgICAgICAgICAgU0xBSUQgPT4gJEdldFBhcmFte1NMQUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57T3duZXJ9KSB7CiAgICAgICAgICAgIGlmICgkR2V0UGFyYW17TmV3T3duZXJUeXBlfSBlcSAnT2xkJyAmJiAkR2V0UGFyYW17T2xkT3duZXJJRH0pIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+TG9ja1NldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBMb2NrID0+ICdsb2NrJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+T3duZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgPT4gJEdldFBhcmFte09sZE93bmVySUR9LAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtOb0FnZW50Tm90aWZ5fSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRHZXRQYXJhbXtOZXdPd25lcklEfSkgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Mb2NrU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIExvY2sgPT4gJ2xvY2snLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5Pd25lclNldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkR2V0UGFyYW17TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiAkR2V0UGFyYW17Qm9keX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJEdldFBhcmFte05vQWdlbnROb3RpZnl9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57UmVzcG9uc2libGV9KSB7CiAgICAgICAgICAgIGlmICgkR2V0UGFyYW17TmV3UmVzcG9uc2libGVJRH0pIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBOZXdVc2VySUQgPT4gJEdldFBhcmFte05ld1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJEdldFBhcmFte0JvZHl9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtOb0FnZW50Tm90aWZ5fSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgIyBhZGQgbm90ZQogICAgICAgIG15ICRBcnRpY2xlSUQgPSAnJzsKICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57Tm90ZX0pIHsKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSA9PiAnYWdlbnQnLAogICAgICAgICAgICAgICAgRnJvbSA9PiAiJFNlbGYtPntVc2VyRmlyc3RuYW1lfSAkU2VsZi0+e1VzZXJMYXN0bmFtZX0gPCRTZWxmLT57VXNlckVtYWlsfT4iLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvcGxhaW47IGNoYXJzZXQ9JFNlbGYtPntMYXlvdXRPYmplY3R9LT57J1VzZXJDaGFyc2V0J30iLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlID0+ICRTZWxmLT57Q29uZmlnfS0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICRTZWxmLT57Q29uZmlnfS0+e0hpc3RvcnlDb21tZW50fSwKICAgICAgICAgICAgICAgIEZvcmNlTm90aWZpY2F0aW9uVG9Vc2VySUQgPT4gW0B7JFNlbGYtPntJbmZvcm1Vc2VySUR9fSwgQHskU2VsZi0+e0ludm9sdmVkVXNlcklEfX0sIF0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICBOb0FnZW50Tm90aWZ5ID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICghJEFydGljbGVJRCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIHRpbWUgYWNjb3VudGluZwogICAgICAgICAgICBpZiAoJEdldFBhcmFte1RpbWVVbml0c30pIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0QWNjb3VudFRpbWUoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgVGltZVVuaXQgPT4gJEdldFBhcmFte1RpbWVVbml0c30sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgIyBnZXQgcHJlIGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50RGF0YSA9ICRTZWxmLT57VXBsb2FkQ2FjaE9iamVjdH0tPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJFJlZiAoQEF0dGFjaG1lbnREYXRhKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVXcml0ZUF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgJXskUmVmfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIGdldCBzdWJtaXQgYXR0YWNobWVudAogICAgICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0VXBsb2FkQWxsKAogICAgICAgICAgICAgICAgUGFyYW0gPT4gJ2ZpbGVfdXBsb2FkJywKICAgICAgICAgICAgICAgIFNvdXJjZSA9PiAnU3RyaW5nJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCVVcGxvYWRTdHVmZikgewogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5BcnRpY2xlV3JpdGVBdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgICVVcGxvYWRTdHVmZiwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIHJlbW92ZSBwcmUgc3VibWl0ZWQgYXR0YWNobWVudHMKICAgICAgICAgICAgJFNlbGYtPntVcGxvYWRDYWNoT2JqZWN0fS0+Rm9ybUlEUmVtb3ZlKEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0pOwogICAgICAgIH0KICAgICAgICAjIHNldCB0aWNrZXQgZnJlZSB0ZXh0CiAgICAgICAgZm9yZWFjaCAoMS4uMTYpIHsKICAgICAgICAgICAgaWYgKGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlS2V5JF8ifSkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICRHZXRQYXJhbXsiVGlja2V0RnJlZUtleSRfIn0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJEdldFBhcmFteyJUaWNrZXRGcmVlVGV4dCRfIn0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkXywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KIyAtLS0KIyBJVFNNCiMgLS0tCiAgICAgICAgaWYgKCgkR2V0UGFyYW17U2VydmljZUlEfSAmJiAkU2VydmljZXtDcml0aWNhbGl0eUlEfSkgfHwgISRHZXRQYXJhbXtTZXJ2aWNlSUR9KSB7CiAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEtleSA9PiAnQ3JpdGljYWxpdHlJRCcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU2VydmljZXtDcml0aWNhbGl0eUlEfSB8fCAnJywKICAgICAgICAgICAgICAgIENvdW50ZXIgPT4gMTMsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoJEdldFBhcmFte0ltcGFjdElEfSB8fCAhZGVmaW5lZCgkR2V0UGFyYW17SW1wYWN0SUR9KSkgewogICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEZyZWVUZXh0U2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBLZXkgPT4gJ0ltcGFjdElEJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRHZXRQYXJhbXtJbXBhY3RJRH0gfHwgJycsCiAgICAgICAgICAgICAgICBDb3VudGVyID0+IDE0LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiMgLS0tCiAgICAgICAgIyBzZXQgdGlja2V0IGZyZWUgdGltZQogICAgICAgIGZvcmVhY2ggKDEuLjYpIHsKICAgICAgICAgICAgaWYgKGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIlllYXIifSkgJiYKICAgICAgICAgICAgICAgIGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIk1vbnRoIn0pICYmCiAgICAgICAgICAgICAgICBkZWZpbmVkKCRHZXRQYXJhbXsiVGlja2V0RnJlZVRpbWUiLiRfLiJEYXkifSkgJiYKICAgICAgICAgICAgICAgIGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIkhvdXIifSkgJiYKICAgICAgICAgICAgICAgIGRlZmluZWQoJEdldFBhcmFteyJUaWNrZXRGcmVlVGltZSIuJF8uIk1pbnV0ZSJ9KQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIG15ICVUaW1lOwogICAgICAgICAgICAgICAgJFRpbWV7IlRpY2tldEZyZWVUaW1lIi4kXy4iWWVhciJ9ID0gMDsKICAgICAgICAgICAgICAgICRUaW1leyJUaWNrZXRGcmVlVGltZSIuJF8uIk1vbnRoIn0gPSAwOwogICAgICAgICAgICAgICAgJFRpbWV7IlRpY2tldEZyZWVUaW1lIi4kXy4iRGF5In0gPSAwOwogICAgICAgICAgICAgICAgJFRpbWV7IlRpY2tldEZyZWVUaW1lIi4kXy4iSG91ciJ9ID0gMDsKICAgICAgICAgICAgICAgICRUaW1leyJUaWNrZXRGcmVlVGltZSIuJF8uIk1pbnV0ZSJ9ID0gMDsKICAgICAgICAgICAgICAgICRUaW1leyJUaWNrZXRGcmVlVGltZSIuJF8uIlNlY3VuZGUifSA9IDA7CgogICAgICAgICAgICAgICAgaWYgKCRHZXRQYXJhbXsiVGlja2V0RnJlZVRpbWUiLiRfLiJVc2VkIn0pIHsKICAgICAgICAgICAgICAgICAgICAlVGltZSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+VHJhbnNmcm9tRGF0ZVNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBQcmVmaXggPT4gIlRpY2tldEZyZWVUaW1lIi4kXywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRGcmVlVGltZVNldCgKICAgICAgICAgICAgICAgICAgICAlVGltZSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggPT4gIlRpY2tldEZyZWVUaW1lIiwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBDb3VudGVyID0+ICRfLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICMgc2V0IGFydGljbGUgZnJlZSB0ZXh0CiAgICAgICAgZm9yZWFjaCAoMS4uMykgewogICAgICAgICAgICBpZiAoZGVmaW5lZCgkR2V0UGFyYW17IkFydGljbGVGcmVlS2V5JF8ifSkpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUZyZWVUZXh0U2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZUlELAogICAgICAgICAgICAgICAgICAgIEtleSA9PiAkR2V0UGFyYW17IkFydGljbGVGcmVlS2V5JF8ifSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkR2V0UGFyYW17IkFydGljbGVGcmVlVGV4dCRfIn0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkXywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAjIHNldCBwcmlvcml0eQogICAgICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntQcmlvcml0eX0gJiYgJEdldFBhcmFte05ld1ByaW9yaXR5SUR9KSB7CiAgICAgICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+UHJpb3JpdHlTZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gJEdldFBhcmFte05ld1ByaW9yaXR5SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgIyBzZXQgc3RhdGUKICAgICAgICBpZiAoJFNlbGYtPntDb25maWd9LT57U3RhdGV9ICYmICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSkgewogICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlN0YXRlU2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZUlEID0+ICRHZXRQYXJhbXtOZXdTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICMgdW5sb2NrIHRoZSB0aWNrZXQgYWZ0ZXIgY2xvc2UKICAgICAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+e1N0YXRlT2JqZWN0fS0+U3RhdGVHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkR2V0UGFyYW17TmV3U3RhdGVJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICMgc2V0IHVubG9jayBvbiBjbG9zZQogICAgICAgICAgICBpZiAoJFN0YXRlRGF0YXtUeXBlTmFtZX0gPX4gL15jbG9zZS9pKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkxvY2tTZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgTG9jayA9PiAndW5sb2NrJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjIHNldCBwZW5kaW5nIHRpbWUKICAgICAgICAgICAgZWxzaWYgKCRTdGF0ZURhdGF7VHlwZU5hbWV9ID1+IC9ecGVuZGluZy9pKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5SZWRpcmVjdChPUCA9PiAkU2VsZi0+e0xhc3RTY3JlZW5PdmVydmlld30pOwogICAgICAgIH0KICAgICAgICAjIHJlZGlyZWN0CiAgICAgICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRUaWNrZXRab29tJlRpY2tldElEPSRTZWxmLT57VGlja2V0SUR9JkFydGljbGVJRD0kQXJ0aWNsZUlEIiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgIyBmaWxsdXAgdmFycwogICAgICAgIGlmICghZGVmaW5lZCgkR2V0UGFyYW17Qm9keX0pICYmICRTZWxmLT57Q29uZmlnfS0+e0JvZHl9KSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtCb2R5fSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KFRlbXBsYXRlID0+ICRTZWxmLT57Q29uZmlnfS0+e0JvZHl9KTsKICAgICAgICB9CiAgICAgICAgaWYgKCFkZWZpbmVkKCRHZXRQYXJhbXtTdWJqZWN0fSkgJiYgJFNlbGYtPntDb25maWd9LT57U3ViamVjdH0pIHsKICAgICAgICAgICAgJEdldFBhcmFte1N1YmplY3R9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoVGVtcGxhdGUgPT4gJFNlbGYtPntDb25maWd9LT57U3ViamVjdH0pOwogICAgICAgIH0KICAgICAgICAjIGdldCBmcmVlIHRleHQgY29uZmlnIG9wdGlvbnMKICAgICAgICBteSAlVGlja2V0RnJlZVRleHQgPSAoKTsKICAgICAgICBmb3JlYWNoICgxLi4xNikgewogICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVLZXkkXyJ9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSA9PiAiVGlja2V0RnJlZUtleSRfIiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkVGlja2V0RnJlZVRleHR7IlRpY2tldEZyZWVUZXh0JF8ifSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0RnJlZVRleHRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFR5cGUgPT4gIlRpY2tldEZyZWVUZXh0JF8iLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIG15ICVUaWNrZXRGcmVlVGV4dEhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFnZW50RnJlZVRleHQoCiAgICAgICAgICAgIFRpY2tldCA9PiBcJVRpY2tldCwKICAgICAgICAgICAgQ29uZmlnID0+IFwlVGlja2V0RnJlZVRleHQsCiAgICAgICAgKTsKICAgICAgICAjIHRpY2tldCBmcmVlIHRpbWUKICAgICAgICBteSAlVGlja2V0RnJlZVRpbWVIVE1MID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BZ2VudEZyZWVEYXRlKAogICAgICAgICAgICBUaWNrZXQgPT4gXCVHZXRQYXJhbQogICAgICAgICk7CiAgICAgICAgIyBnZXQgYXJ0aWNsZSBmcmVlIHRleHQgY29uZmlnIG9wdGlvbnMKICAgICAgICBteSAlQXJ0aWNsZUZyZWVUZXh0ID0gKCk7CiAgICAgICAgZm9yZWFjaCAoMS4uMykgewogICAgICAgICAgICAkQXJ0aWNsZUZyZWVUZXh0eyJBcnRpY2xlRnJlZUtleSRfIn0gPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVGcmVlVGV4dEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVHlwZSA9PiAiQXJ0aWNsZUZyZWVLZXkkXyIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEFydGljbGVGcmVlVGV4dHsiQXJ0aWNsZUZyZWVUZXh0JF8ifSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUZyZWVUZXh0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBUeXBlID0+ICJBcnRpY2xlRnJlZVRleHQkXyIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgbXkgJUFydGljbGVGcmVlVGV4dEhUTUwgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPlRpY2tldEFydGljbGVGcmVlVGV4dCgKICAgICAgICAgICAgQ29uZmlnID0+IFwlQXJ0aWNsZUZyZWVUZXh0LAogICAgICAgICAgICBBcnRpY2xlID0+IFwlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAjIHByaW50IGZvcm0gLi4uCiAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKFZhbHVlID0+ICRUaWNrZXR7VGlja2V0TnVtYmVyfSk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFzaygKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAlVGlja2V0RnJlZVRleHRIVE1MLAogICAgICAgICAgICAlVGlja2V0RnJlZVRpbWVIVE1MLAogICAgICAgICAgICAlQXJ0aWNsZUZyZWVUZXh0SFRNTCwKIyAtLS0KIyBJVFNNCiMgLS0tCiAgICAgICAgICAgIEltcGFjdHMgPT4gJEltcGFjdExpc3QsCiAgICAgICAgICAgIEltcGFjdElEID0+ICRHZXRQYXJhbXtJbXBhY3RJRH0sCiMgLS0tCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfTWFzayB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwogICAgbXkgJVBhcmFtID0gQF87CiAgICAjIGdldCBsaXN0IHR5cGUKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KICAgIG15ICVUaWNrZXQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEdldChUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSk7CgogICAgaWYgKCRTZWxmLT57Q29uZmlnfS0+e1RpdGxlfSkgewogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CiAgICAjIHR5cGVzCiAgICBpZiAoJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6VHlwZScpICYmICRTZWxmLT57Q29uZmlnfS0+e1RpY2tldFR5cGV9KSB7CiAgICAgICAgbXkgJVR5cGUgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldFR5cGVMaXN0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17J1R5cGVTdHJnJ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhID0+IFwlVHlwZSwKICAgICAgICAgICAgTmFtZSA9PiAnVHlwZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNvcnQgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICAgICAgT25DaGFuZ2UgPT4gImRvY3VtZW50LmNvbXBvc2UuRXhwYW5kLnZhbHVlPSczJzsgZG9jdW1lbnQuY29tcG9zZS5zdWJtaXQoKTsgcmV0dXJuIGZhbHNlOyIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUeXBlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQogICAgIyBzZXJ2aWNlcwogICAgaWYgKCRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSAmJiAkU2VsZi0+e0NvbmZpZ30tPntTZXJ2aWNlfSkgewogICAgICAgIG15ICVTZXJ2aWNlID0gKCcnLCAnLScpOwogICAgICAgIGlmICgkVGlja2V0e0N1c3RvbWVyVXNlcklEfSkgewogICAgICAgICAgICAlU2VydmljZSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0U2VydmljZUxpc3QoCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkUGFyYW17J1NlcnZpY2VTdHJnJ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhID0+IFwlU2VydmljZSwKICAgICAgICAgICAgTmFtZSA9PiAnU2VydmljZUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyZWVWaWV3ID0+ICRUcmVlVmlldywKICAgICAgICAgICAgU29ydCA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAojIC0tLQojIElUU00KIyAtLS0KIyAgICAgICAgICAgIE9uQ2hhbmdlID0+ICJkb2N1bWVudC5jb21wb3NlLkV4cGFuZC52YWx1ZT0nMyc7IGRvY3VtZW50LmNvbXBvc2Uuc3VibWl0KCk7IHJldHVybiBmYWxzZTsiLAogICAgICAgICAgICBPbkNoYW5nZSA9PiAiZG9jdW1lbnQuY29tcG9zZS5FeHBhbmQudmFsdWU9JzMnOyBkb2N1bWVudC5jb21wb3NlLkltcGFjdFJDLnZhbHVlPScxJzsgZG9jdW1lbnQuY29tcG9zZS5zdWJtaXQoKTsgcmV0dXJuIGZhbHNlOyIsCiMgLS0tCiAgICAgICAgICAgIE1heCA9PiAyMDAsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgIG15ICVTTEEgPSAoKTsKICAgICAgICBpZiAoJFBhcmFte1NlcnZpY2VJRH0pIHsKICAgICAgICAgICAgJVNMQSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0U0xBTGlzdCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkUGFyYW17J1NMQVN0cmcnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgPT4gXCVTTEEsCiAgICAgICAgICAgIE5hbWUgPT4gJ1NMQUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U0xBSUR9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgU29ydCA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgICAgICBPbkNoYW5nZSA9PiAiZG9jdW1lbnQuY29tcG9zZS5FeHBhbmQudmFsdWU9JzMnOyBkb2N1bWVudC5jb21wb3NlLnN1Ym1pdCgpOyByZXR1cm4gZmFsc2U7IiwKICAgICAgICAgICAgTWF4ID0+IDIwMCwKICAgICAgICApOwogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NMQScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICgkU2VsZi0+e0NvbmZpZ30tPntPd25lcn0pIHsKICAgICAgICAjIGdldCB1c2VyIG9mIG93biBncm91cHMKICAgICAgICBteSAlU2hvd25Vc2VycyA9ICgpOwogICAgICAgIG15ICVBbGxHcm91cHNNZW1iZXJzID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+VXNlckxpc3QoCiAgICAgICAgICAgIFR5cGUgPT4gJ0xvbmcnLAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdUaWNrZXQ6OkNoYW5nZU93bmVyVG9FdmVyeW9uZScpKSB7CiAgICAgICAgICAgICVTaG93blVzZXJzID0gJUFsbEdyb3Vwc01lbWJlcnM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkR0lEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPkdldFF1ZXVlR3JvdXBJRChRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0pOwogICAgICAgICAgICBteSAlTWVt