ZGlmZiAtLWdpdCBhL2V4YW1wbGVzL1JFQURNRSBiL2V4YW1wbGVzL1JFQURNRQppbmRleCAyZTMxN2Y1Li40MjkxMGE4IDEwMDY0NAotLS0gYS9leGFtcGxlcy9SRUFETUUKKysrIGIvZXhhbXBsZXMvUkVBRE1FCkBAIC0xOSw3ICsxOSw3IEBACiAgICBCZWZvcmUgdHJ5aW5nIHRvIGNvbXBpbGUsIHJlYWQgdGhlIFJFQURNRSBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LgogCiA2LiBUaGUgLi9zYW1wbGUuc291cmNlLlJSQyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIDNHUFAgUmFkaW8gUmVzb3VyY2UgQ29udHJvbAotICAgZGVjb2Rlci4gQmVmb3JlIHRyeWluZyB0byBjb21waWxlLCByZWFkIHRoZSBSRUFETUUgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4KKyAgIGRlY29kZXIuIEp1c3QgdHlwZSBgbWFrZWAgaW4gdGhlcmUgdG8gY29tcGlsZS4KIAogVGhlIGNseXgyYXNuMS5wbCBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCBBU04uMSBkYXRhIGZyb20gTHlYIGVkaXRvciBmaWxlcy4KIApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcnJjLmFzbjEgYi9leGFtcGxlcy9ycmMuYXNuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGQxMDUyCi0tLSAvZGV2L251bGwKKysrIGIvZXhhbXBsZXMvcnJjLmFzbjEKQEAgLTAsMCArMSwyMTI5MSBAQAorLyoKKyAqIFJhZGlvIFJlc291cmNlIENvbnRyb2wgVGVjaG5pY2FsIFNwZWNpZmljYXRpb24gQVNOLjEgbW9kdWxlLgorICogM0dQUCAyNS4zMzEgKFRTIDEyNSAzMzEpIChFVFNJIHJlZiBSVFMvVFNHUi0wMjI1MzMxdjcxMCkgWzIwMDYtMDZdCisgKiBFeHRyYWN0ZWQgYW5kIHZlcmlmaWVkIGJ5IExldiBXYWxraW4gPHZsbUBsaW9uZXQuaW5mbz4KKyAqCisgKiBETyBOT1QgUkVESVNUUklCVVRFLiBPYnRhaW4geW91ciBvd24gY29weSBvZiAzR1BQIFJSQyBzcGVjaWZpY2F0aW9uCisgKiBpZiB5b3UgbmVlZCB0byBjcmVhdGUgcHJvZHVjdHMgYmFzZWQgb24gdGhpcyBSUkMgQVNOLjEgbW9kdWxlLgorICoKKyAqIFRoZSBFVFNJIGhhcyBncmFudGVkIG1lIHRoZSByaWdodCB0byByZXByb2R1Y2UgdGhpcyBBU04uMSBSUkMKKyAqIChSYWRpbyBSZXNvdXJjZSBDb250cm9sKSBtb2R1bGUgcHJvdmlkZWQgdGhhdCBJIGluc2VydCB0aGUgZm9sbG93aW5nCisgKiBwYXJhZ3JhcGg6CisgKgorICogM0dQUCh0bSkgVFNzIGFuZCBUUnMgYXJlIHRoZSBwcm9wZXJ0eSBvZiBBUklCLCBBVElTLCBFVFNJLCBDQ1NBLCBUVEEgYW5kIFRUQworICogd2hvIGpvaW50bHkgb3duIHRoZSBjb3B5cmlnaHQgaW4gdGhlbS4gVGhleSBhcmUgc3ViamVjdCB0byBmdXJ0aGVyCisgKiBtb2RpZmljYXRpb25zIGFuZCBhcmUgdGhlcmVmb3JlIHByb3ZpZGVkIHRvIHlvdSAiYXMgaXMiIGZvciBpbmZvcm1hdGlvbgorICogcHVycG9zZXMgb25seS4gRnVydGhlciB1c2UgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4KKyAqLworCitDbGFzcy1kZWZpbml0aW9ucyBERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KKworQkVHSU4KKworSU1QT1JUUworCisJQWN0aXZlU2V0VXBkYXRlLAorCUFjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlLAorCUFjdGl2ZVNldFVwZGF0ZUZhaWx1cmUsCQorCUFzc2lzdGFuY2VEYXRhRGVsaXZlcnksCisJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLAorCUNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUsCisJQ2VsbFVwZGF0ZSwKKwlDZWxsVXBkYXRlQ29uZmlybS1DQ0NILAorCUNlbGxVcGRhdGVDb25maXJtLAorCUNvdW50ZXJDaGVjaywKKwlDb3VudGVyQ2hlY2tSZXNwb25zZSwKKwlEb3dubGlua0RpcmVjdFRyYW5zZmVyLAorCUhhbmRvdmVyVG9VVFJBTkNvbXBsZXRlLAorCUluaXRpYWxEaXJlY3RUcmFuc2ZlciwKKwlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdSwKKwlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLAorCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMCwKKwlIYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUsCisJTUJNU0FjY2Vzc0luZm9ybWF0aW9uLAorCU1CTVNDb21tb25QVE1SQkluZm9ybWF0aW9uLAorCU1CTVNDdXJyZW50Q2VsbFBUTVJCSW5mb3JtYXRpb24sCisJTUJNU0dlbmVyYWxJbmZvcm1hdGlvbiwKKwlNQk1TTW9kaWZpY2F0aW9uUmVxdWVzdCwKKwlNQk1TTW9kaWZpZWRTZXJ2aWNlc0luZm9ybWF0aW9uLAorCU1CTVNOZWlnaGJvdXJpbmdDZWxsUFRNUkJJbmZvcm1hdGlvbiwKKwlNQk1TU2NoZWR1bGluZ0luZm9ybWF0aW9uLAorCU1CTVNVbm1vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiwKKwlNZWFzdXJlbWVudENvbnRyb2wsCisJTWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZSwKKwlNZWFzdXJlbWVudFJlcG9ydCwKKwlQYWdpbmdUeXBlMSwKKwlQYWdpbmdUeXBlMiwKKwlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCisJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKKwlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLAorCVBVU0NIQ2FwYWNpdHlSZXF1ZXN0LAorCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLAorCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAorCVJhZGlvQmVhcmVyUmVsZWFzZSwKKwlSYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZSwKKwlSYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlLAorCVJhZGlvQmVhcmVyU2V0dXAsCisJUmFkaW9CZWFyZXJTZXR1cENvbXBsZXRlLAorCVJhZGlvQmVhcmVyU2V0dXBGYWlsdXJlLAorCVJSQ0Nvbm5lY3Rpb25SZWplY3QsCisJUlJDQ29ubmVjdGlvblJlbGVhc2UsCisJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSCwKKwlSUkNDb25uZWN0aW9uUmVsZWFzZUNvbXBsZXRlLAorCVJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LAorCVJSQ0Nvbm5lY3Rpb25TZXR1cCwKKwlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZSwKKwlSUkNTdGF0dXMsCisJU2VjdXJpdHlNb2RlQ29tbWFuZCwKKwlTZWN1cml0eU1vZGVDb21wbGV0ZSwKKwlTZWN1cml0eU1vZGVGYWlsdXJlLAorCVNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZSwKKwlTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2VJbmRpY2F0aW9uLAorCVN5c3RlbUluZm9ybWF0aW9uLUJDSCwKKwlTeXN0ZW1JbmZvcm1hdGlvbi1GQUNILAorCVN5c3RlbUluZm9ybWF0aW9uQ2hhbmdlSW5kaWNhdGlvbiwKKwlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSwKKwlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKKwlUcmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2wsCisJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZSwKKwlVRUNhcGFiaWxpdHlFbnF1aXJ5LAorCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLAorCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybSwKKwlVcGxpbmtEaXJlY3RUcmFuc2ZlciwKKwlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLAorCVVSQVVwZGF0ZSwKKwlVUkFVcGRhdGVDb25maXJtLAorCVVSQVVwZGF0ZUNvbmZpcm0tQ0NDSCwKKwlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24sCisJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uQ29uZmlybSwKKwlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb25GYWlsdXJlCitGUk9NIFBEVS1kZWZpbml0aW9ucworCistLSBVc2VyIEVxdWlwbWVudCBJRXMgOgorCUludGVncml0eUNoZWNrSW5mbworRlJPTSBJbmZvcm1hdGlvbkVsZW1lbnRzOworCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gRG93bmxpbmsgRENDSCBtZXNzYWdlcworLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworREwtRENDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJaW50ZWdyaXR5Q2hlY2tJbmZvCQlJbnRlZ3JpdHlDaGVja0luZm8JCU9QVElPTkFMLAorCW1lc3NhZ2UJCQkJCURMLURDQ0gtTWVzc2FnZVR5cGUKK30KKworREwtRENDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwlhY3RpdmVTZXRVcGRhdGUJCQkJCQlBY3RpdmVTZXRVcGRhdGUsCisJYXNzaXN0YW5jZURhdGFEZWxpdmVyeQkJCQlBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LAorCWNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTiAJCQlDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4sCisJY2VsbFVwZGF0ZUNvbmZpcm0JCQkJCUNlbGxVcGRhdGVDb25maXJtLAorCWNvdW50ZXJDaGVjawkJCQkJCUNvdW50ZXJDaGVjaywKKwlkb3dubGlua0RpcmVjdFRyYW5zZmVyCQkJCURvd25saW5rRGlyZWN0VHJhbnNmZXIsCisJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTQkJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTSwKKwloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwLAorCW1lYXN1cmVtZW50Q29udHJvbAkJCQkJTWVhc3VyZW1lbnRDb250cm9sLAorCXBhZ2luZ1R5cGUyCQkJCQkJCVBhZ2luZ1R5cGUyLAorCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbgkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24JCVBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24sCisJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24JCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKKwlyYWRpb0JlYXJlclJlbGVhc2UJCQkJCVJhZGlvQmVhcmVyUmVsZWFzZSwKKwlyYWRpb0JlYXJlclNldHVwCQkJCQlSYWRpb0JlYXJlclNldHVwLAorCXJyY0Nvbm5lY3Rpb25SZWxlYXNlCQkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLAorCXNlY3VyaXR5TW9kZUNvbW1hbmQJCQkJCVNlY3VyaXR5TW9kZUNvbW1hbmQsCisJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlCQkJU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLAorCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24JCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCisJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sCVRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbCwKKwl1ZUNhcGFiaWxpdHlFbnF1aXJ5CQkJCQlVRUNhcGFiaWxpdHlFbnF1aXJ5LAorCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybQkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLAorCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wJCVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wsCisJdXJhVXBkYXRlQ29uZmlybQkJCQkJVVJBVXBkYXRlQ29uZmlybSwKKwl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24JCQlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24sCisJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUsCisJbWJtc01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbgkJTUJNU01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiwKKwlzcGFyZTUJCQkJCQkJCU5VTEwsCisJc3BhcmU0CQkJCQkJCQlOVUxMLAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVcGxpbmsgRENDSCBtZXNzYWdlcworLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVUwtRENDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJaW50ZWdyaXR5Q2hlY2tJbmZvCQlJbnRlZ3JpdHlDaGVja0luZm8JCU9QVElPTkFMLAorCW1lc3NhZ2UJCQkJCVVMLURDQ0gtTWVzc2FnZVR5cGUKK30KKworVUwtRENDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwlhY3RpdmVTZXRVcGRhdGVDb21wbGV0ZQkJCQlBY3RpdmVTZXRVcGRhdGVDb21wbGV0ZSwKKwlhY3RpdmVTZXRVcGRhdGVGYWlsdXJlCQkJCUFjdGl2ZVNldFVwZGF0ZUZhaWx1cmUsCisJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZSAJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZSwKKwljb3VudGVyQ2hlY2tSZXNwb25zZQkJCQlDb3VudGVyQ2hlY2tSZXNwb25zZSwKKwloYW5kb3ZlclRvVVRSQU5Db21wbGV0ZQkJCQlIYW5kb3ZlclRvVVRSQU5Db21wbGV0ZSwKKwlpbml0aWFsRGlyZWN0VHJhbnNmZXIJCQkJSW5pdGlhbERpcmVjdFRyYW5zZmVyLAorCWhhbmRvdmVyRnJvbVVUUkFORmFpbHVyZQkJCUhhbmRvdmVyRnJvbVVUUkFORmFpbHVyZSwKKwltZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlCQkJTWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZSwKKwltZWFzdXJlbWVudFJlcG9ydAkJCQkJTWVhc3VyZW1lbnRSZXBvcnQsCisJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUKKwkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSwKKwlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlCisJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKKwlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25GYWlsdXJlCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKKwlyYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZQkJCVJhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlLAorCXJhZGlvQmVhcmVyUmVsZWFzZUZhaWx1cmUJCQlSYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlLAorCXJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZQkJCVJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZSwKKwlyYWRpb0JlYXJlclNldHVwRmFpbHVyZQkJCQlSYWRpb0JlYXJlclNldHVwRmFpbHVyZSwKKwlycmNDb25uZWN0aW9uUmVsZWFzZUNvbXBsZXRlCQlSUkNDb25uZWN0aW9uUmVsZWFzZUNvbXBsZXRlLAorCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUsCisJcnJjU3RhdHVzCQkJCQkJCVJSQ1N0YXR1cywKKwlzZWN1cml0eU1vZGVDb21wbGV0ZQkJCQlTZWN1cml0eU1vZGVDb21wbGV0ZSwKKwlzZWN1cml0eU1vZGVGYWlsdXJlCQkJCQlTZWN1cml0eU1vZGVGYWlsdXJlLAorCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZUluZGljYXRpb24KKwkJCQkJCQkJCQlTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2VJbmRpY2F0aW9uLAorCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZQorCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSwKKwl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZQorCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLAorCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbEZhaWx1cmUKKwkJCQkJCQkJCQlUcmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2xGYWlsdXJlLAorCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uCQkJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLAorCXVwbGlua0RpcmVjdFRyYW5zZmVyCQkJCVVwbGlua0RpcmVjdFRyYW5zZmVyLAorCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0JCVVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0sCisJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZQkJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZSwKKwltYm1zTW9kaWZpY2F0aW9uUmVxdWVzdAkJCQlNQk1TTW9kaWZpY2F0aW9uUmVxdWVzdCwKKwlzcGFyZTEJCQkJCQkJCU5VTEwKK30KKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIERvd25saW5rIENDQ0ggbWVzc2FnZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0RMLUNDQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgeworCWludGVncml0eUNoZWNrSW5mbwkJSW50ZWdyaXR5Q2hlY2tJbmZvCQlPUFRJT05BTCwKKwltZXNzYWdlCQkJCQlETC1DQ0NILU1lc3NhZ2VUeXBlCit9CisKK0RMLUNDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CQorCWNlbGxVcGRhdGVDb25maXJtCQkJCQlDZWxsVXBkYXRlQ29uZmlybS1DQ0NILAorCXJyY0Nvbm5lY3Rpb25SZWplY3QJCQkJCVJSQ0Nvbm5lY3Rpb25SZWplY3QsCisJcnJjQ29ubmVjdGlvblJlbGVhc2UJCQkJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSCwKKwlycmNDb25uZWN0aW9uU2V0dXAJCQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cCwKKwl1cmFVcGRhdGVDb25maXJtCQkJCQlVUkFVcGRhdGVDb25maXJtLUNDQ0gsCisJc3BhcmUzCQkJCQkJCQlOVUxMLAorCXNwYXJlMgkJCQkJCQkJTlVMTCwKKwlzcGFyZTEJCQkJCQkJCU5VTEwKK30KKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVwbGluayBDQ0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVTC1DQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwlpbnRlZ3JpdHlDaGVja0luZm8JCUludGVncml0eUNoZWNrSW5mbwkJT1BUSU9OQUwsCisJbWVzc2FnZQkJCQkJVUwtQ0NDSC1NZXNzYWdlVHlwZQorfQorCitVTC1DQ0NILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgeworCWNlbGxVcGRhdGUJCQkJCQkJQ2VsbFVwZGF0ZSwKKwlycmNDb25uZWN0aW9uUmVxdWVzdAkJCQlSUkNDb25uZWN0aW9uUmVxdWVzdCwKKwl1cmFVcGRhdGUJCQkJCQkJVVJBVXBkYXRlLAorCXNwYXJlCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBQQ0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitQQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwltZXNzYWdlCQkJCVBDQ0gtTWVzc2FnZVR5cGUKK30KKworUENDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwlwYWdpbmdUeXBlMQkJCQkJCQlQYWdpbmdUeXBlMSwKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gRG93bmxpbmsgU0hDQ0ggbWVzc2FnZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0RMLVNIQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwltZXNzYWdlCQkJCQlETC1TSENDSC1NZXNzYWdlVHlwZQorfQorCitETC1TSENDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uCQlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLAorCXNwYXJlCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVcGxpbmsgU0hDQ0ggbWVzc2FnZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VMLVNIQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwltZXNzYWdlCQkJCQlVTC1TSENDSC1NZXNzYWdlVHlwZQorfQorCitVTC1TSENDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwlwdXNjaENhcGFjaXR5UmVxdWVzdAkJCQlQVVNDSENhcGFjaXR5UmVxdWVzdCwKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBCQ0NIIG1lc3NhZ2VzIHNlbnQgb24gRkFDSAorLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQkNDSC1GQUNILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwltZXNzYWdlCQkJCUJDQ0gtRkFDSC1NZXNzYWdlVHlwZQorfQorCitCQ0NILUZBQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJc3lzdGVtSW5mb3JtYXRpb24JCQkJCVN5c3RlbUluZm9ybWF0aW9uLUZBQ0gsCisJc3lzdGVtSW5mb3JtYXRpb25DaGFuZ2VJbmRpY2F0aW9uCVN5c3RlbUluZm9ybWF0aW9uQ2hhbmdlSW5kaWNhdGlvbiwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBCQ0NIIG1lc3NhZ2VzIHNlbnQgb24gQkNICistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitCQ0NILUJDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJbWVzc2FnZQkJCQlTeXN0ZW1JbmZvcm1hdGlvbi1CQ0gKK30KKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1DQ0ggbWVzc2FnZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01DQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgeworCW1lc3NhZ2UJCQkJTUNDSC1NZXNzYWdlVHlwZQorfQorCitNQ0NILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgeworCW1ibXNBY2Nlc3NJbmZvcm1hdGlvbgkJCQlNQk1TQWNjZXNzSW5mb3JtYXRpb24sCisJbWJtc0NvbW1vblBUTVJCSW5mb3JtYXRpb24JCQlNQk1TQ29tbW9uUFRNUkJJbmZvcm1hdGlvbiwKKwltYm1zQ3VycmVudENlbGxQVE1SQkluZm9ybWF0aW9uCQlNQk1TQ3VycmVudENlbGxQVE1SQkluZm9ybWF0aW9uLAorCW1ibXNHZW5lcmFsSW5mb3JtYXRpb24JCQkJTUJNU0dlbmVyYWxJbmZvcm1hdGlvbiwKKwltYm1zTW9kaWZpZWRTZXJ2aWNlc0luZm9ybWF0aW9uCQlNQk1TTW9kaWZpZWRTZXJ2aWNlc0luZm9ybWF0aW9uLAorCW1ibXNOZWlnaGJvdXJpbmdDZWxsUFRNUkJJbmZvcm1hdGlvbgorCQkJCQkJCQkJCU1CTVNOZWlnaGJvdXJpbmdDZWxsUFRNUkJJbmZvcm1hdGlvbiwKKwltYm1zVW5tb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24JTUJNU1VubW9kaWZpZWRTZXJ2aWNlc0luZm9ybWF0aW9uLAorCXNwYXJlOQkJCQkJCQkJTlVMTCwKKwlzcGFyZTgJCQkJCQkJCU5VTEwsCisJc3BhcmU3CQkJCQkJCQlOVUxMLAorCXNwYXJlNgkJCQkJCQkJTlVMTCwKKwlzcGFyZTUJCQkJCQkJCU5VTEwsCisJc3BhcmU0CQkJCQkJCQlOVUxMLAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNU0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNU0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwltZXNzYWdlCQkJCU1TQ0gtTWVzc2FnZVR5cGUKK30KKworTVNDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwltYm1zU2NoZWR1bGluZ0luZm9ybWF0aW9uCQkJTUJNU1NjaGVkdWxpbmdJbmZvcm1hdGlvbiwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCitFTkQKKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFRBQlVMQVI6IFRoZSBtZXNzYWdlIHR5cGUgYW5kIGludGVncml0eSBjaGVjayBpbmZvIGFyZSBub3QKKy0tIHZpc2libGUgaW4gdGhpcyBtb2R1bGUgYXMgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgbW9kdWxlLiAKKy0tIEFsc28sIGFsbCBGREQvVEREIHNwZWNpZmljIGNob2ljZXMgaGF2ZSB0aGUgRkREIG9wdGlvbiBmaXJzdCAKKy0tIGFuZCBUREQgc2Vjb25kLCBqdXN0IGZvciBjb25zaXN0ZW5jeS4KKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BEVS1kZWZpbml0aW9ucyBERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KKworQkVHSU4KKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIElFIHBhcmFtZXRlciB0eXBlcyBmcm9tIG90aGVyIG1vZHVsZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0lNUE9SVFMKKworLS0gQ29yZSBOZXR3b3JrIElFcyA6CisJQ04tRG9tYWluSWRlbnRpdHksCisJQ04tSW5mb3JtYXRpb25JbmZvLAorCUNOLUluZm9ybWF0aW9uSW5mby1yNiwKKwlDTi1JbmZvcm1hdGlvbkluZm9GdWxsLAorCU5BUy1NZXNzYWdlLAorCVBhZ2luZ1JlY29yZFR5cGVJRCwKKwlQTE1OLUlkZW50aXR5LAorLS0gVVRSQU4gTW9iaWxpdHkgSUVzIDoKKwlDZWxsSWRlbnRpdHksCisJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QsCisJVVJBLUlkZW50aXR5LAorLS0gVXNlciBFcXVpcG1lbnQgSUVzIDoKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLXI3LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdDIsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dCwKKwlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciwKKwlBY3RpdmF0aW9uVGltZSwKKwlDLVJOVEksCisJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LAorCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNCwKKwlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0LAorCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNSwKKwlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0LAorCUNlbGxVcGRhdGVDYXVzZSwKKwlDZWxsVXBkYXRlQ2F1c2UtZXh0LAorCUNpcGhlcmluZ0FsZ29yaXRobSwKKwlDaXBoZXJpbmdNb2RlSW5mbywKKwlEZWxheVJlc3RyaWN0aW9uRmxhZywKKwlEU0NILVJOVEksCisJRS1STlRJLAorCUVzdGFibGlzaG1lbnRDYXVzZSwKKwlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyclRySWQsCisJR3JvdXBSZWxlYXNlSW5mb3JtYXRpb24sCisJSC1STlRJLAorCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlLAorCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVCwKKwlJbml0aWFsVUUtSWRlbnRpdHksCisJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvLAorCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbywKKwlOLTMwOCwKKwlQYWdpbmdDYXVzZSwKKwlQYWdpbmdSZWNvcmRMaXN0LAorCVBhZ2luZ1JlY29yZDJMaXN0LXI1LAorCVByb3RvY29sRXJyb3JJbmRpY2F0b3IsCisJUHJvdG9jb2xFcnJvckluZGljYXRvcldpdGhNb3JlSW5mbywKKwlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0LAorCVJiLXRpbWVyLWluZGljYXRvciwKKwlSZWRpcmVjdGlvbkluZm8sCisJUmVkaXJlY3Rpb25JbmZvLXI2LAorCVJlamVjdGlvbkNhdXNlLAorCVJlbGVhc2VDYXVzZSwKKwlSRi1DYXBhYmlsaXR5Q29tcCwKKwlSUkMtU3RhdGVJbmRpY2F0b3IsCisJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwlTZWN1cml0eUNhcGFiaWxpdHksCisJU1RBUlQtVmFsdWUsCisJU1RBUlRMaXN0LAorCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxLXY1OTBleHQsCisJVS1STlRJLAorCVUtUk5USS1TaG9ydCwKKwlVRS1DYXBhYmlsaXR5Q29udGFpbmVyLUlFcywKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1YzBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2NTBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLWV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wMiwKKwlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQsCisJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cywKKwlVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQsCisJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy1yNSwKKwlVRS1TZWN1cml0eUluZm9ybWF0aW9uLAorCVVFLVNlY3VyaXR5SW5mb3JtYXRpb24yLAorCVVSQS1VcGRhdGVDYXVzZSwKKwlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKKwlXYWl0VGltZSwKKy0tIFJhZGlvIEJlYXJlciBJRXMgOgorCURlZmF1bHRDb25maWdJZGVudGl0eSwKKwlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjQsCisJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI1LAorCURlZmF1bHRDb25maWdJZGVudGl0eS1yNiwKKwlEZWZhdWx0Q29uZmlnTW9kZSwKKwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbywKKwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNSwKKwlQRENQLVJPSEMtVGFyZ2V0TW9kZSwKKwlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCisJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3RDb21wLAorCVByZWRlZmluZWRDb25maWdTZXRXaXRoRGlmZmVyZW50VmFsdWVUYWcsCisJUkFCLUluZm8sCisJUkFCLUluZm8tcjYsCisJUkFCLUluZm8tUG9zdCwKKwlSQUItSW5mb3JtYXRpb25MaXN0LAorCVJBQi1JbmZvcm1hdGlvbkxpc3QtcjYsCisJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdCwKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQsCisJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNi1leHQsCisJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAorCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QsCisJUkItQ09VTlQtQy1JbmZvcm1hdGlvbkxpc3QsCisJUkItQ09VTlQtQy1NU0ItSW5mb3JtYXRpb25MaXN0LAorCVJCLUlkZW50aXR5TGlzdCwKKwlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdCwKKwlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNSwKKwlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNiwKKwlSQi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0LXI2LAorCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LAorCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI0LAorCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI1LAorCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2LAorCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QsCisJUkItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdCwKKwlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1LAorCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKwlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLAorCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdDItcjYsCisJVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8sCistLSBUcmFuc3BvcnQgQ2hhbm5lbCBJRXM6CisJQ1BDSC1TZXRJRCwKKwlETC1BZGRSZWNvbmZUcmFuc0NoSW5mbzJMaXN0LAorCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKKwlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQsCisJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1LAorCURMLUNvbW1vblRyYW5zQ2hJbmZvLAorCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QsCisJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNSwKKwlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdCwKKwlQb3dlck9mZnNldEluZm9TaG9ydCwKKwlURkMtU3Vic2V0LAorCVRGQ1MtSWRlbnRpdHksCisJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKKwlVTC1Db21tb25UcmFuc0NoSW5mbywKKwlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LAorCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYsCistLSBQaHlzaWNhbCBDaGFubmVsIElFcyA6CisJQWxwaGEsCisJQkVBQ09OLVBMLUVzdCwKKwlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mbywKKwlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNCwKKwlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNSwKKwlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNywKKwlDb25zdGFudFZhbHVlLAorCUNvbnN0YW50VmFsdWVUZGQsCisJQ1BDSC1TZXRJbmZvLAorCURIUy1TeW5jLAorCURMLUNvbW1vbkluZm9ybWF0aW9uLAorCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0LAorCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1LAorCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2LAorCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3LAorCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKKwlETC1IU1BEU0NILUluZm9ybWF0aW9uLAorCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYsCisJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNywKKwlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QsCisJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0LAorCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNSwKKwlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjViaXMsCisJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2LAorCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNywKKwlETC1JbmZvcm1hdGlvblBlclJMLUxpc3RQb3N0RkRELAorCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKKwlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0LAorCURMLVBEU0NILUluZm9ybWF0aW9uLAorCURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QsCisJRFBDLU1vZGUsCisJRFBDSC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8sCisJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwsCisJRS1EQ0gtUmVjb25maWd1cmF0aW9uSW5mbywKKwlFWFQtVUwtVGltaW5nQWR2YW5jZSwKKwlGcmVxdWVuY3lJbmZvLAorCUZyZXF1ZW5jeUluZm9GREQsCisJRnJlcXVlbmN5SW5mb1RERCwKKwlIQVJRLVByZWFtYmxlLU1vZGUsCisJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVEREMzg0LAorCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDc2OCwKKwlNYXhBbGxvd2VkVUwtVFgtUG93ZXIsCisJT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQsCisJUERTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbywKKwlQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI0LAorCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcsCisJUERTQ0gtSWRlbnRpdHksCisJUHJpbWFyeUNQSUNILUluZm8sCisJUHJpbWFyeUNDUENILVRYLVBvd2VyLAorCVBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8sCisJUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNCwKKwlQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI3LAorCVBVU0NILUlkZW50aXR5LAorCVBVU0NILVN5c0luZm9MaXN0LUhDUi1yNSwKKwlQRFNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUsCisJUkwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QsCisJUkwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QtcjYsCisJUkwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdCwKKwlTZXJ2aW5nLUhTRFNDSC1DZWxsSW5mb3JtYXRpb24sCisJU3BlY2lhbEJ1cnN0U2NoZWR1bGluZywKKwlTU0RULUluZm9ybWF0aW9uLAorCVNTRFQtSW5mb3JtYXRpb24tcjQsCisJVEZDLUNvbnRyb2xEdXJhdGlvbiwKKwlTU0RULVVMLAorCVRpbWluZ01haW50YWluZWRTeW5jaEluZCwKKwlUaW1lc2xvdExpc3QsCisJVGltZXNsb3RMaXN0LXI0LAorCVRYLURpdmVyc2l0eU1vZGUsCisJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LAorCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNCwKKwlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjUsCisJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQsCisJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjQsCisJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjUsCisJVUwtRFBDSC1JbmZvLAorCVVMLURQQ0gtSW5mby1yNCwKKwlVTC1EUENILUluZm8tcjUsCisJVUwtRFBDSC1JbmZvLXI2LAorCVVMLURQQ0gtSW5mby1yNywKKwlVTC1EUENILUluZm9Qb3N0RkRELAorCVVMLURQQ0gtSW5mb1Bvc3RUREQsCisJVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQsCisJVUwtRURDSC1JbmZvcm1hdGlvbi1yNiwKKwlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0LAorCVVMLVRpbWluZ0FkdmFuY2UsCisJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wsCisJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQsCisJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjcsCisJVUwtVGltaW5nQWR2YW5jZS1WSENSLAorLS0gTWVhc3VyZW1lbnQgSUVzIDoKKwlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0LAorCURlbHRhUlNDUCwKKwlGcmVxdWVuY3ktQmFuZCwKKwlFdmVudFJlc3VsdHMsCisJSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQsCisJSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQsCisJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUsCisJSW50cmFGcmVxRXZlbnQtMWQtcjUsCisJSW50cmFGcmVxQ2VsbElELAorCUludGVyRnJlcUV2ZW50UmVzdWx0cy1MQ1ItcjQtZXh0LAorCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uLAorCUludGVyUkFULVRhcmdldENlbGxEZXNjcmlwdGlvbiwKKwlNZWFzdXJlZFJlc3VsdHMsCisJTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQsCisJTWVhc3VyZWRSZXN1bHRzLXY1OTBleHQsCisJTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlNZWFzdXJlZFJlc3VsdHNMaXN0LUxDUi1yNC1leHQsCisJTWVhc3VyZWRSZXN1bHRzT25SQUNILAorCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcSwKKwlNZWFzdXJlbWVudENvbW1hbmQsCisJTWVhc3VyZW1lbnRDb21tYW5kLXI0LAorCU1lYXN1cmVtZW50Q29tbWFuZC1yNiwKKwlNZWFzdXJlbWVudElkZW50aXR5LAorCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZSwKKwlQcmltYXJ5Q0NQQ0gtUlNDUCwKKwlTRk4tT2Zmc2V0LVZhbGlkaXR5LAorCVRpbWVzbG90TGlzdFdpdGhJU0NQLAorCVRyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHNMaXN0LAorCVVFLVBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YSwKKwlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC12MzkwZXh0LAorCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXY3eHlleHQsCisJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEsCisJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQsCisJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCLAorCVZlbG9jaXR5RXN0aW1hdGUsCisJVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtcjcsCistLSBPdGhlciBJRXMgOgorCUJDQ0gtTW9kaWZpY2F0aW9uSW5mbywKKwlDRE1BMjAwMC1NZXNzYWdlTGlzdCwKKwlHU00tVGFyZ2V0Q2VsbEluZm9MaXN0LAorCUdFUkFOSXUtTWVzc2FnZUxpc3QsCisJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24sCisJR1NNLU1lc3NhZ2VMaXN0LAorCUludGVyUkFULUNoYW5nZUZhaWx1cmVDYXVzZSwKKwlJbnRlclJBVC1ITy1GYWlsdXJlQ2F1c2UsCisJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdCwKKwlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCwKKwlJbnRlclJBVC1VRS1TZWN1cml0eUNhcExpc3QsCisJSW50cmFEb21haW5OYXNOb2RlU2VsZWN0b3IsCisJUHJvdG9jb2xFcnJvck1vcmVJbmZvcm1hdGlvbiwKKwlScGxtbi1JbmZvcm1hdGlvbiwKKwlScGxtbi1JbmZvcm1hdGlvbi1yNCwKKwlTZWdDb3VudCwKKwlTZWdtZW50SW5kZXgsCisJU0ZOLVByaW1lLAorCVNJQi1EYXRhLWZpeGVkLAorCVNJQi1EYXRhLXZhcmlhYmxlLAorCVNJQi1UeXBlLAorLS0gTUJNUyBJRXM6CisJTUJNUy1DZWxsR3JvdXBJZGVudGl0eS1yNiwKKwlNQk1TLUNvbW1vblJCSW5mb3JtYXRpb25MaXN0LXI2LAorCU1CTVMtQ3VycmVudENlbGwtU0NDUENITGlzdC1yNiwKKwlNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2LAorCU1CTVMtTUlDSENvbmZpZ3VyYXRpb25JbmZvLXI2LAorCU1CTVMtTUlDSENvbmZpZ3VyYXRpb25JbmZvLXI3LAorCU1CTVMtTW9kaWZlZFNlcnZpY2VMaXN0LXI2LAorCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNiwKKwlNQk1TLU5laWdoYm91cmluZ0NlbGxTQ0NQQ0hMaXN0LXI2LAorCU1CTVMtTnVtYmVyT2ZOZWlnaGJvdXJDZWxscy1yNiwKKwlNQk1TLVBoeUNoSW5mb3JtYXRpb25MaXN0LXI2LAorCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNiwKKwlNQk1TLVByZWZlcnJlZEZyZXFSZXF1ZXN0LXI2LAorCU1CTVMtUHJlZmVycmVkRnJlcXVlbmN5TGlzdC1yNiwKKwlNQk1TLVBUTUFjdGl2YXRpb25UaW1lLXI2LAorCU1CTVMtU2VydmljZUFjY2Vzc0luZm9MaXN0LXI2LAorCU1CTVMtU2VydmljZUlkZW50aXR5LXI2LAorCU1CTVMtU2VydmljZVNjaGVkdWxpbmdJbmZvTGlzdC1yNiwKKwlNQk1TLVNJQlR5cGU1LVNDQ1BDSExpc3QtcjYsCisJTUJNUy1UaW1lcnNBbmRDb3VudGVycy1yNiwKKwlNQk1TLVRyYW5zcENoSW5mb0ZvckVhY2hDQ1RyQ2gtcjYsCisJTUJNUy1UcmFuc3BDaEluZm9Gb3JFYWNoVHJDaC1yNiwKKwlNQk1TLVVubW9kaWZpZWRTZXJ2aWNlTGlzdC1yNgorRlJPTSBJbmZvcm1hdGlvbkVsZW1lbnRzCisKKwltYXhTSUJwZXJNc2csCisJbWF4VVJOVEktR3JvdXAKK0ZST00gQ29uc3RhbnQtZGVmaW5pdGlvbnM7CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEFDVElWRSBTRVQgVVBEQVRFIChGREQgb25seSkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQWN0aXZlU2V0VXBkYXRlIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWFjdGl2ZVNldFVwZGF0ZS1yMwkJCQlBY3RpdmVTZXRVcGRhdGUtcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlhY3RpdmVTZXRVcGRhdGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJYWN0aXZlU2V0VXBkYXRlLXY0YjBleHQJCUFjdGl2ZVNldFVwZGF0ZS12NGIwZXh0LUlFcywKKwkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCWFjdGl2ZVNldFVwZGF0ZS12NTkwZXh0CQkJQWN0aXZlU2V0VXBkYXRlLXY1OTBleHQtSUVzLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlhY3RpdmVTZXRVcGRhdGUtdjY5MGV4dAkJCUFjdGl2ZVNldFVwZGF0ZS12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9IE9QVElPTkFMCisJCX0gT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWFjdGl2ZVNldFVwZGF0ZS1yNgkJCQlBY3RpdmVTZXRVcGRhdGUtcjYtSUVzLAorCQkJCWFjdGl2ZVNldFVwZGF0ZS1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJfQorCX0KK30KKworQWN0aXZlU2V0VXBkYXRlLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQlkdW1teTIJCQkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXdVLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQktLSBkdW1teTMgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teTMJCQkJCQlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQlybC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdAkJUkwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwkJcmwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdAkJUkwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAorCQl0eC1EaXZlcnNpdHlNb2RlCQkJCVRYLURpdmVyc2l0eU1vZGUJCQkJCU9QVElPTkFMLAorCQktLSBkdW1teTQgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teTQJCQkJCQkJU1NEVC1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwKK30KKworQWN0aXZlU2V0VXBkYXRlLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBSTC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdCBpbmNsdWRlZCBpbiB0aGlzIG1lc3NhZ2UKKwkJY2VsbC1pZC1QZXJSTC1MaXN0CQkJCQlDZWxsSWRlbnRpdHktUGVyUkwtTGlzdAkJCQlPUFRJT05BTAorfQorCitBY3RpdmVTZXRVcGRhdGUtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkcGMtTW9kZQkJCQkJCQlEUEMtTW9kZSwKKwkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJCU9QVElPTkFMCit9CisKK0FjdGl2ZVNldFVwZGF0ZS12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTAorfQorCitBY3RpdmVTZXRVcGRhdGUtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3VS1STlRJCQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld0gtUk5USQkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXJsLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0CQkJUkwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QtcjYJCU9QVElPTkFMLAorCQlybC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0CQkJUkwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAorCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJCQlPUFRJT05BTCwKKwkJZHBjLU1vZGUJCQkJCQkJRFBDLU1vZGUJCQkJCQkJT1BUSU9OQUwsCisJCXNlcnZpbmctSFNEU0NILUNlbGxJbmZvcm1hdGlvbgkJU2VydmluZy1IU0RTQ0gtQ2VsbEluZm9ybWF0aW9uCQlPUFRJT05BTCwKKwkJZS1kY2gtUmVjb25maWd1cmF0aW9uSW5mbwkJCUUtRENILVJlY29uZmlndXJhdGlvbkluZm8JCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBBQ1RJVkUgU0VUIFVQREFURSBDT01QTEVURSAoRkREIG9ubHkpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCS0tIGR1bW15MiBhbmQgZHVtbXkzIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teTIJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWR1bW15MwkJCQkJCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJYWN0aXZlU2V0VXBkYXRlQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEFDVElWRSBTRVQgVVBEQVRFIEZBSUxVUkUgKEZERCBvbmx5KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBY3RpdmVTZXRVcGRhdGVGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWFjdGl2ZVNldFVwZGF0ZUZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQXNzaXN0YW5jZSBEYXRhIERlbGl2ZXJ5CistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0Fzc2lzdGFuY2VEYXRhRGVsaXZlcnkgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJYXNzaXN0YW5jZURhdGFEZWxpdmVyeS1yMwkJQXNzaXN0YW5jZURhdGFEZWxpdmVyeS1yMy1JRXMsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjNhMGV4dAlBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXYzYTBleHQsCisJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnktcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCQkJYXNzaXN0YW5jZURhdGFEZWxpdmVyeS12NGIwZXh0CisJCQkJCQkJCQkJCQkJQXNzaXN0YW5jZURhdGFEZWxpdmVyeS12NGIwZXh0LUlFcywKKwkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK0Fzc2lzdGFuY2VEYXRhRGVsaXZlcnktcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwktLSBNZWFzdXJlbWVudCBJbmZvcm1hdGlvbiBFbGVtZW50cworCXVlLXBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQgkJCU9QVElPTkFMCit9CisKK0Fzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCXNmbi1PZmZzZXQtVmFsaWRpdHkJCQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCU9QVElPTkFMCit9CisKK0Fzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNGV4dAlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNGV4dAlPUFRJT05BTAorfQorCisgLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ0VMTCBDSEFOR0UgT1JERVIgRlJPTSBVVFJBTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLUlFcwkJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tdjU5MGV4dAlDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tdjU5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK0NlbGxDaGFuZ2VPcmRlckZyb21VVFJBTi1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCS0tIHRoZSBJRSByYWItSW5mb3JtYXRpb25MaXN0IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4gVGhlIElFIG1heSBiZSB1c2VkIGluIGEgbGF0ZXIKKwkJLS0gdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wgYW5kIGhlbmNlIGl0IGlzIG5vdCBjaGFuZ2VkIGludG8gYSBkdW1teQorCQlyYWItSW5mb3JtYXRpb25MaXN0CQkJCVJBQi1JbmZvcm1hdGlvbkxpc3QJCQkJCU9QVElPTkFMLAorCQlpbnRlclJBVC1UYXJnZXRDZWxsRGVzY3JpcHRpb24JSW50ZXJSQVQtVGFyZ2V0Q2VsbERlc2NyaXB0aW9uCit9CisKK0NlbGxDaGFuZ2VPcmRlckZyb21VVFJBTi12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgewkJCisJCWdlcmFuLVN5c3RlbUluZm9UeXBlCQkJCUNIT0lDRQl7CQkKKwkJCXNJCQkJCQkJCQkJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24sCisJCQlwU0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbgorCQl9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBDRUxMIENIQU5HRSBPUkRFUiBGUk9NIFVUUkFOIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU5GYWlsdXJlLXIzCisJCQkJCQkJCQkJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZS1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgaXQKKwktLSBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJaW50ZXJSQVQtQ2hhbmdlRmFpbHVyZUNhdXNlCQlJbnRlclJBVC1DaGFuZ2VGYWlsdXJlQ2F1c2UKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ0VMTCBVUERBVEUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ2VsbFVwZGF0ZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCQlzdGFydExpc3QJCVNUQVJUTGlzdCwKKwkJYW0tUkxDLUVycm9ySW5kaWNhdGlvblJiMi0zb3I0CQlCT09MRUFOLAorCQlhbS1STEMtRXJyb3JJbmRpY2F0aW9uUmI1b3JBYm92ZQlCT09MRUFOLAorCQljZWxsVXBkYXRlQ2F1c2UJCQkJCUNlbGxVcGRhdGVDYXVzZSwKKwkJLS0gVEFCVUxBUjogUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgaXMgbmVzdGVkIGluIEZhaWx1cmVDYXVzZVdpdGhQcm90RXJyVHJJZAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyVHJJZAkJCU9QVElPTkFMLAorCQlyYi10aW1lci1pbmRpY2F0b3IJCQkJUmItdGltZXItaW5kaWNhdG9yLAorCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWNlbGxVcGRhdGUtcjMtYWRkLWV4dAkJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCVNFUVVFTkNFIHsKKwkJCQljZWxsVXBkYXRlLXY1OTBleHQJQ2VsbFVwZGF0ZS12NTkwZXh0LCAKKwkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCWNlbGxVcGRhdGUtdjY5MGV4dAkJCQlDZWxsVXBkYXRlLXY2OTBleHQtSUVzLAorCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQljZWxsVXBkYXRlLXY3eHlleHQJCQkJQ2VsbFVwZGF0ZS12N3h5ZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQkJCX0JCU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZS12NTkwZXh0IDo6PSBTRVFVRU5DRSB7CisJZXN0YWJsaXNobWVudENhdXNlCQkJCUVzdGFibGlzaG1lbnRDYXVzZQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlLXY2OTBleHQtSUVzIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJY2VsbFVwZGF0ZUNhdXNlLWV4dAkJCQlDZWxsVXBkYXRlQ2F1c2UtZXh0CQkJCQlPUFRJT05BTCwKKwkJdHJhZmZpY1ZvbHVtZUluZGljYXRvcgkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQlPUFRJT05BTCwKKwkJcmVjb25maWd1cmF0aW9uU3RhdHVzSW5kaWNhdG9yCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGUtdjd4eWV4dC1JRXMgOjo9CQkJU0VRVUVOQ0UgeworCS0tIENhbGwgVHlwZSBJRQorCQljc0NhbGxUeXBlCQkJCQkJRU5VTUVSQVRFRCB7IHNwZWVjaCwgdmlkZW8sIG90aGVyLCBzcGFyZSB9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIENFTEwgVVBEQVRFIENPTkZJUk0KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ2VsbFVwZGF0ZUNvbmZpcm0gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY2VsbFVwZGF0ZUNvbmZpcm0tcjMJCQlDZWxsVXBkYXRlQ29uZmlybS1yMy1JRXMsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCWNlbGxVcGRhdGVDb25maXJtLXYzYTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXYzYTBleHQsCisJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCWNlbGxVcGRhdGVDb25maXJtLXIzLWFkZC1leHQJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQtSUVzLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dC1JRXMsCisJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCX0JCU9QVElPTkFMCisJCQkJCX0JCU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JCU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQljZWxsVXBkYXRlQ29uZmlybS1yNAkJCUNlbGxVcGRhdGVDb25maXJtLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI0LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CisJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0LUlFcywKKwkJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dC1JRXMsCisJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI1CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNS1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjYJCQlDZWxsVXBkYXRlQ29uZmlybS1yNi1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjYtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjcJCQlDZWxsVXBkYXRlQ29uZmlybS1yNy1JRXMsCisJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKKwkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNy1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfSwKKwkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitDZWxsVXBkYXRlQ29uZmlybS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjItM29yNAkJQk9PTEVBTiwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiNW9yQWJvdmUJCUJPT0xFQU4sCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1RyYW5zQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQJCQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlQ29uZmlybS12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91cgorCS0tIGlzIHVuc3BlY2lmaWVkCisJbmV3LURTQ0gtUk5USQkJCQlEU0NILVJOVEkJCQkJCQkJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGVDb25maXJtLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzIDo6PQlTRVFVRU5DRSB7CisJLS1SYWRpbyBCZWFyZXIgSUVzCisJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwKK30KK0NlbGxVcGRhdGVDb25maXJtLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjItM29yNAkJQk9PTEVBTiwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiNW9yQWJvdmUJQk9PTEVBTiwKKwktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI0CQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNUcmFuc0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNAkJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGVDb25maXJtLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmIyLTNvcjQJCUJPT0xFQU4sCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjVvckFib3ZlCUJPT0xFQU4sCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1RyYW5zQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjUJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1CQkJT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZUNvbmZpcm0tcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiMi0zb3I0CQlCT09MRUFOLAorCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmI1b3JBYm92ZQkJQk9PTEVBTiwKKwktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwkJcGRjcC1ST0hDLVRhcmdldE1vZGUJCQlQRENQLVJPSEMtVGFyZ2V0TW9kZQkJCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKKwkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQorCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCQkJCQlPUFRJT05BTCwKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCisJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwkJZGhzLXN5bmMJCQkJCQlESFMtU3luYwkJCQkJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZUNvbmZpcm0tcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiMi0zb3I0CQlCT09MRUFOLAorCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmI1b3JBYm92ZQkJQk9PTEVBTiwKKwktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwkJcGRjcC1ST0hDLVRhcmdldE1vZGUJCQlQRENQLVJPSEMtVGFyZ2V0TW9kZQkJCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBDRUxMIFVQREFURSBDT05GSVJNIGZvciBDQ0NICistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NlbGxVcGRhdGVDb25maXJtLUNDQ0ggOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCQl1LVJOVEkJCQkJCQlVLVJOVEksCisJCS0tIFRoZSByZXN0IG9mIHRoZSBtZXNzYWdlIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIHNlbnQgb24gRENDSC4KKwkJCWNlbGxVcGRhdGVDb25maXJtLXIzCQkJCUNlbGxVcGRhdGVDb25maXJtLXIzLUlFcywKKwkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSC1yMy1hZGQtZXh0CQkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY0YjBleHQtSUVzLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NTkwZXh0LUlFcywKKwkJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjVkMGV4dC1JRXMsCisJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBUaGUgcmVzdCBvZiB0aGUgbWVzc2FnZSBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBzZW50IG9uIERDQ0guCisJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjQJCQlDZWxsVXBkYXRlQ29uZmlybS1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSC1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dC1JRXMsCisJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNQkJCUNlbGxVcGRhdGVDb25maXJtLXI1LUlFcywKKwkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSC1yNS1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwJCQorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjYJCQlDZWxsVXBkYXRlQ29uZmlybS1yNi1JRXMsCisJCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNi1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNwkJCUNlbGxVcGRhdGVDb25maXJtLXI3LUlFcywKKwkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNy1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfSwKKwkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBDT1VOVEVSIENIRUNLCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NvdW50ZXJDaGVjayA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQljb3VudGVyQ2hlY2stcjMJCQkJCUNvdW50ZXJDaGVjay1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWNvdW50ZXJDaGVjay1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworQ291bnRlckNoZWNrLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItQ09VTlQtQy1NU0ItSW5mb3JtYXRpb25MaXN0CVJCLUNPVU5ULUMtTVNCLUluZm9ybWF0aW9uTGlzdAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBDT1VOVEVSIENIRUNLIFJFU1BPTlNFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NvdW50ZXJDaGVja1Jlc3BvbnNlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYi1DT1VOVC1DLUluZm9ybWF0aW9uTGlzdAkJUkItQ09VTlQtQy1JbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJY291bnRlckNoZWNrUmVzcG9uc2UtcjMtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIERPV05MSU5LIERJUkVDVCBUUkFOU0ZFUgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitEb3dubGlua0RpcmVjdFRyYW5zZmVyIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRvd25saW5rRGlyZWN0VHJhbnNmZXItcjMJCURvd25saW5rRGlyZWN0VHJhbnNmZXItcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlkb3dubGlua0RpcmVjdFRyYW5zZmVyLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworRG93bmxpbmtEaXJlY3RUcmFuc2Zlci1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQluYXMtTWVzc2FnZQkJCQkJCU5BUy1NZXNzYWdlCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEhBTkRPVkVSIFRPIFVUUkFOIENPTU1BTkQKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCitIYW5kb3ZlclRvVVRSQU5Db21tYW5kIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjMJCUhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjMtSUVzLAorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCX0sCisJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQloYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI0CQlIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI0LUlFcywKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9LAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNQkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNS1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNgkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNi1JRXMsCisJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCX0sCisJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQloYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI3CQlIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI3LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK0hhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEktU2hvcnQsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdCwKKwkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCU9QVElPTkFMLAorCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8sCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbywKKwkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKKwkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mbywKKwkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sCisJCQkJCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uIE9QVElPTkFMLAorCQkJCQkJZHVtbXkyCQkJCQkJCUNQQ0gtU2V0SW5mbwkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJdGRkCQkJCQkJCQlOVUxMCisJCQkJfSwKKwkJCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLAorCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LAorCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8KKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKy0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCistLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCistLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCisJCQkJcHJlQ29uZmlnTW9kZQkJCQkJQ0hPSUNFIHsKKwkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eQorCQkJCQl9CisJCQkJfSwKKwkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLVBvc3QJCU9QVElPTkFMLAorCQkJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RGREQsCisJCQkJCQlkbC1Db21tb25JbmZvcm1hdGlvblBvc3QJCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKKwkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0UG9zdEZERCwKKwkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9GREQKKwkJCQkJfSwKKwkJCQkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELAorCQkJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0CQlETC1Db21tb25JbmZvcm1hdGlvblBvc3QsCisJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKKwkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIKK30KKworSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USS1TaG9ydCwKKwkJY2lwaGVyaW5nQWxnb3JpdGhtCQkJCUNpcGhlcmluZ0FsZ29yaXRobQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJCQkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQJCQlPUFRJT05BTCwKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQsCisJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjQsCisJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLAorCQkJCQkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbiBPUFRJT05BTCwKKwkJCQkJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm8JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJTlVMTAorCQkJCX0sCisJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNCwKKwkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNCwKKwkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CistLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAorLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjQKKwkJCQkJfQorCQkJCX0sCisJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1Qb3N0CQlPUFRJT05BTCwKKwkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0RkRELAorCQkJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0CQlETC1Db21tb25JbmZvcm1hdGlvblBvc3QsCisJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCisJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvRkRECisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKKwkJCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELAorCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9LAorCQkJCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RUREQtTENSLXI0LAorCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELUxDUi1yNCwKKwkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgorfQorCitIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQluZXctVS1STlRJCQkJCQkJVS1STlRJLVNob3J0LAorCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSwKKwkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQkJCU9QVElPTkFMLAorCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSwKKwkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNSwKKwkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sCisJCQkJCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uIE9QVElPTkFMLAorCQkJCQkJZHVtbXkyCQkJCQkJCUNQQ0gtU2V0SW5mbwkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJdGRkCQkJCQkJCQlOVUxMCisJCQkJfSwKKwkJCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0LAorCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1LAorCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8KKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKy0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCistLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCistLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCisJCQkJcHJlQ29uZmlnTW9kZQkJCQkJQ0hPSUNFIHsKKwkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNQorCQkJCQl9CisJCQkJfSwKKwkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLVBvc3QJCU9QVElPTkFMLAorCQkJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RGREQsCisJCQkJCQlkbC1Db21tb25JbmZvcm1hdGlvblBvc3QJCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKKwkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0UG9zdEZERCwKKwkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9GREQKKwkJCQkJfSwKKwkJCQkJdGRkCQkJCQkJCQlDSE9JQ0UgeworCQkJCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RUREQsCisJCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQsCisJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKKwkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCQkJCX0sCisJCQkJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQsCisJCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0LAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCit9CisKK0hhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEktU2hvcnQsCisJCWNpcGhlcmluZ0FsZ29yaXRobQkJCQlDaXBoZXJpbmdBbGdvcml0aG0JCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAorCQkJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2LAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUsCisJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYsCisJCQkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwsCisJCQkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYsCisJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYsCisJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbworCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2CisJCQkJCX0KKwkJCQl9LAorCQkJCXJhYi1JbmZvCQkJCQkJUkFCLUluZm8tUG9zdAkJT1BUSU9OQUwsCisJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdEZERCwKKwkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAorCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3RQb3N0RkRELAorCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb0ZERAorCQkJCQl9LAorCQkJCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CisJCQkJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERCwKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKKwkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJCQkJfSwKKwkJCQkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELUxDUi1yNCwKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERC1MQ1ItcjQsCisJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKKwkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIKK30KKworSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USS1TaG9ydCwKKwkJY2lwaGVyaW5nQWxnb3JpdGhtCQkJCUNpcGhlcmluZ0FsZ29yaXRobQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAorCQkJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2LAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUsCisJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcsCisJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNCwKKwkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNywKKwkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKwkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCisJCQkJLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKKwkJCQkJfQorCQkJCX0sCisJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1Qb3N0CQlPUFRJT05BTCwKKwkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0RkRELAorCQkJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0CQlETC1Db21tb25JbmZvcm1hdGlvblBvc3QsCisJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCisJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvRkRECisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKKwkJCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELAorCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9LAorCQkJCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNywKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERC1MQ1ItcjQsCisJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKKwkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCQkJCX0sCisJCQkJCQl0ZGQ3NjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3LAorCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3LAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEhBTkRPVkVSIFRPIFVUUkFOIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0hhbmRvdmVyVG9VVFJBTkNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS1UQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwktLSBUQUJVTEFSOiBzdGFydExpc3QgaXMgY29uZGl0aW9uYWwgb24gaGlzdG9yeS4KKwkJc3RhcnRMaXN0CQkJCQkJU1RBUlRMaXN0CQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWhhbmRvdmVyVG9VVFJBTkNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBJTklUSUFMIERJUkVDVCBUUkFOU0ZFUgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitJbml0aWFsRGlyZWN0VHJhbnNmZXIgOjo9IFNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQlpbnRyYURvbWFpbk5hc05vZGVTZWxlY3RvcgkJSW50cmFEb21haW5OYXNOb2RlU2VsZWN0b3IsCisJCW5hcy1NZXNzYWdlCQkJCQkJTkFTLU1lc3NhZ2UsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCU1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCQlPUFRJT05BTCwKKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQlpbml0aWFsRGlyZWN0VHJhbnNmZXItdjNhMGV4dAlJbml0aWFsRGlyZWN0VHJhbnNmZXItdjNhMGV4dCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJaW5pdGlhbERpcmVjdFRyYW5zZmVyLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQlpbml0aWFsRGlyZWN0VHJhbnNmZXItdjU5MGV4dAlJbml0aWFsRGlyZWN0VHJhbnNmZXItdjU5MGV4dCwKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJaW5pdGlhbERpcmVjdFRyYW5zZmVyLXY2OTBleHQJSW5pdGlhbERpcmVjdFRyYW5zZmVyLXY2OTBleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JCU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworSW5pdGlhbERpcmVjdFRyYW5zZmVyLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBzdGFydC12YWx1ZSBzaGFsbCBhbHdheXMgYmUgaW5jbHVkZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbAorCXN0YXJ0LVZhbHVlCQkJCQkJU1RBUlQtVmFsdWUJCQkJCQkJT1BUSU9OQUwKK30KK0luaXRpYWxEaXJlY3RUcmFuc2Zlci12NTkwZXh0IDo6PSBTRVFVRU5DRSB7CisJZXN0YWJsaXNobWVudENhdXNlCQlFc3RhYmxpc2htZW50Q2F1c2UJT1BUSU9OQUwKK30KKworSW5pdGlhbERpcmVjdFRyYW5zZmVyLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQlwbG1uLUlkZW50aXR5CQkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtSm9pbmVkSW5mb3JtYXRpb24JCQlNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gSEFORE9WRVIgRlJPTSBVVFJBTiBDT01NQU5ECistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0hhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yMworCQkJCQkJCQkJCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjMtSUVzLAorCQktLSBVVFJBTiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIElFIGxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zIHdoZW4gaXQgc2V0cyB0aGUgSUUgCisJCS0tIGdzbS1tZXNzYWdlIGluY2x1ZGVkIGluIGhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjMgdG8gc2luZ2xlLUdTTS1NZXNzYWdlLiBUaGUgVUUKKwkJLS0gYmVoYXZpb3VyIHVwb24gcmVjZWl2aW5nIGEgbWVzc2FnZSB3aXRoIHRoaXMgY29tYmluYXRpb24gb2YgSUUgdmFsdWVzIGlzIHVuc3BlY2lmaWVkLgorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQktLSBVVFJBTiBtYXkgYXBwbHkgdGhlIHIzIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UgdG8gcGVyZm9ybSBQUyBoYW5kb3ZlcgorCQkJLS0gZm9yIGEgc2luZ2xlIFJBQiBvbmx5CisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS12NjkwZXh0CUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tdjY5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yNgkJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yNi1JRXMsCisJCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCX0KKwl9Cit9CisKK0hhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJdG9IYW5kb3ZlclJBQi1JbmZvCQkJCVJBQi1JbmZvCQkJCQkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQlmcmVxdWVuY3ktYmFuZAkJCQkJRnJlcXVlbmN5LUJhbmQsCisJLS0gT3RoZXIgSUVzCisJCWdzbS1tZXNzYWdlCQkJCQkJQ0hPSUNFIHsKKwkJCS0tIEluIHRoZSBzaW5nbGUtR1NNLU1lc3NhZ2UgY2FzZSB0aGUgZm9sbG93aW5nIHJ1bGVzIGFwcGx5OgorCQkJLS0gMT4gdGhlIEdTTSBtZXNzYWdlIGRpcmVjdGx5IGZvbGxvd3MgdGhlIGJhc2ljIHByb2R1Y3Rpb247IHRoZSBmaW5hbCBwYWRkaW5nIHRoYXQKKwkJCS0tICAgIHJlc3VsdHMgd2hlbiBQRVIgZW5jb2RpbmcgdGhlIGFic3RyYWN0IHN5bnRheCB2YWx1ZSBpcyByZW1vdmVkIHByaW9yIHRvIGFwcGVuZGluZyAKKwkJCS0tICAgIHRoZSBHU00gbWVzc2FnZS4KKwkJCS0tIDI+IHRoZSBSUkMgbWVzc2FnZSBleGNsdWRpbmcgdGhlIEdTTSBwYXJ0LCBkb2VzIG5vdCBjb250YWluIGEgbGVuZ3RoIGRldGVybWluYW50OyAKKwkJCS0tICAgIHRoZXJlIGlzIG5vIGV4cGxpY2l0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZSBpbmNsdWRlZCBHU00gbWVzc2FnZS4KKwkJCS0tIDM+IGRlcGVuZGluZyBvbiBuZWVkLCBmaW5hbCBwYWRkaW5nIChhbGwg0jDTcykgaXMgYWRkZWQgdG8gZW5zdXJlIHRoZSBmaW5hbCByZXN1bHQKKwkJCS0tICAgIGNvbXByaXNlcyBhIGZ1bGwgbnVtYmVyIG9mIG9jdGV0cworCQkJc2luZ2xlLUdTTS1NZXNzYWdlCQkJCVNFUVVFTkNFIHt9LAorCQkJZ3NtLU1lc3NhZ2VMaXN0CQkJCQlTRVFVRU5DRSB7CisJCQkJZ3NtLU1lc3NhZ2VzCQkJCQlHU00tTWVzc2FnZUxpc3QKKwkJCX0KKwkJfQorfQorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXRvSGFuZG92ZXJSQUItSW5mbwkJCQlSQUItSW5mb3JtYXRpb25MaXN0LXI2CQkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQlmcmVxdWVuY3ktYmFuZAkJCQkJRnJlcXVlbmN5LUJhbmQsCisJLS0gT3RoZXIgSUVzCisJCWdzbS1tZXNzYWdlCQkJCQkJQ0hPSUNFIHsKKwkJCS0tIEluIHRoZSBzaW5nbGUtR1NNLU1lc3NhZ2UgY2FzZSB0aGUgZm9sbG93aW5nIHJ1bGVzIGFwcGx5OgorCQkJLS0gMT4gdGhlIEdTTSBtZXNzYWdlIGRpcmVjdGx5IGZvbGxvd3MgdGhlIGJhc2ljIHByb2R1Y3Rpb247IHRoZSBmaW5hbCBwYWRkaW5nIHRoYXQKKwkJCS0tICAgIHJlc3VsdHMgd2hlbiBQRVIgZW5jb2RpbmcgdGhlIGFic3RyYWN0IHN5bnRheCB2YWx1ZSBpcyByZW1vdmVkIHByaW9yIHRvIGFwcGVuZGluZyAKKwkJCS0tICAgIHRoZSBHU00gbWVzc2FnZS4KKwkJCS0tIDI+IHRoZSBSUkMgbWVzc2FnZSBleGNsdWRpbmcgdGhlIEdTTSBwYXJ0LCBkb2VzIG5vdCBjb250YWluIGEgbGVuZ3RoIGRldGVybWluYW50OyAKKwkJCS0tICAgIHRoZXJlIGlzIG5vIGV4cGxpY2l0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZSBpbmNsdWRlZCBHU00gbWVzc2FnZS4KKwkJCS0tIDM+IGRlcGVuZGluZyBvbiBuZWVkLCBmaW5hbCBwYWRkaW5nIChhbGwg0jDTcykgaXMgYWRkZWQgdG8gZW5zdXJlIHRoZSBmaW5hbCByZXN1bHQKKwkJCS0tICAgIGNvbXByaXNlcyBhIGZ1bGwgbnVtYmVyIG9mIG9jdGV0cworCQkJc2luZ2xlLUdTTS1NZXNzYWdlCQkJCVNFUVVFTkNFIHt9LAorCQkJZ3NtLU1lc3NhZ2VMaXN0CQkJCQlTRVFVRU5DRSB7CisJCQkJZ3NtLU1lc3NhZ2VzCQkJCQlHU00tTWVzc2FnZUxpc3QKKwkJCX0KKwkJfSwKKwkJZ2VyYW4tU3lzdGVtSW5mb1R5cGUJCQkJQ0hPSUNFCXsJCQorCQkJc0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbiwKKwkJCXBTSQkJCQkJCQkJCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uCisJCX0JCU9QVElPTkFMCit9CisKK0hhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJZ2VyYW4tU3lzdGVtSW5mb1R5cGUJCQkJQ0hPSUNFCXsJCQorCQkJc0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbiwKKwkJCXBTSQkJCQkJCQkJCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uCisJCX0JCU9QVElPTkFMCit9CisKK0hhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1IDo6PSBTRVFVRU5DRSB7CisJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdQlDSE9JQ0UgeworCQlyNQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1LXI1CisJCQkJCQkJCQkJCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1LXI1LUlFcywKKwkJCS0tIFVUUkFOIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgSUUgbm9uQ3JpdGljYWxFeHRlbnNpb25zIHdoZW4gaXQgc2V0cworCQkJLS0gdGhlIElFIGdlcmFuSXUtbWVzc2FnZSBpbmNsdWRlZCBpbiBoYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdS1yNSB0byAKKwkJCS0tIHNpbmdsZS1HRVJBTkl1LU1lc3NhZ2UKKwkJCS0tIFRoZSBVRSBiZWhhdmlvdXIgdXBvbiByZWNlaXZpbmcgYSBtZXNzYWdlIGluY2x1ZGluZyB0aGlzIGNvbWJpbmF0aW9uIG9mIElFIHZhbHVlcyBpcworCQkJLS0gbm90IHNwZWNpZmllZAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJfSwKKwkJbGF0ZXItdGhhbi1yNQkJCQkJU0VRVUVOQ0UgeworCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCX0KKwl9Cit9CisKK0hhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1LXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJZnJlcXVlbmN5LUJhbmQJCQkJCUZyZXF1ZW5jeS1CYW5kLAorCS0tIE90aGVyIElFcworCQlnZXJhbkl1LU1lc3NhZ2UJCQkJCQlDSE9JQ0UgeworCQkJLS0gSW4gdGhlIHNpbmdsZS1HRVJBTkl1LU1lc3NhZ2UgY2FzZSB0aGUgZm9sbG93aW5nIHJ1bGVzIGFwcGx5OgorCQkJLS0gMT4gdGhlIEdFUkFOIEl1IG1lc3NhZ2UgZGlyZWN0bHkgZm9sbG93cyB0aGUgYmFzaWMgcHJvZHVjdGlvbjsgdGhlIGZpbmFsIHBhZGRpbmcgdGhhdAorCQkJLS0gICAgcmVzdWx0cyB3aGVuIFBFUiBlbmNvZGluZyB0aGUgYWJzdHJhY3Qgc3ludGF4IHZhbHVlIGlzIHJlbW92ZWQgcHJpb3IgdG8gYXBwZW5kaW5nIAorCQkJLS0gICAgdGhlIEdFUkFOIEl1IG1lc3NhZ2UuCisJCQktLSAyPiB0aGUgUlJDIG1lc3NhZ2UgZXhjbHVkaW5nIHRoZSBHRVJBTiBJdSBwYXJ0IGRvZXMgbm90IGNvbnRhaW4gYSBsZW5ndGggZGV0ZXJtaW5hbnQ7IAorLS0gICAgdGhlcmUgaXMgbm8gZXhwbGljaXQgcGFyYW1ldGVyIGluZGljYXRpbmcgdGhlIHNpemUgb2YgdGhlIGluY2x1ZGVkIEdFUkFOIEl1CistLSAgICBtZXNzYWdlLgorCQkJLS0gMz4gZGVwZW5kaW5nIG9uIG5lZWQsIGZpbmFsIHBhZGRpbmcgKGFsbCDSMNNzKSBpcyBhZGRlZCB0byBlbnN1cmUgdGhlIGZpbmFsIHJlc3VsdAorCQkJLS0gICAgY29tcHJpc2VzIGEgZnVsbCBudW1iZXIgb2Ygb2N0ZXRzLgorCQkJc2luZ2xlLUdFUkFOSXUtTWVzc2FnZQkJCVNFUVVFTkNFIHt9LAorCQkJZ2VyYW5JdS1NZXNzYWdlTGlzdAkJCQlTRVFVRU5DRSB7CisJCQkJZ2VyYW5JdS1NZXNzYWdlcwkJCQlHRVJBTkl1LU1lc3NhZ2VMaXN0CisJCQl9CisJCX0KK30KKworSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMC1yMworCQkJCQkJCQkJCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMC1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zIAorCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwLXIzLWFkZC1leHQJCQorCQkJCQkJCQkJCQkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJdG9IYW5kb3ZlclJBQi1JbmZvCQkJCVJBQi1JbmZvCQkJCQkJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQljZG1hMjAwMC1NZXNzYWdlTGlzdAkJCUNETUEyMDAwLU1lc3NhZ2VMaXN0Cit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEhBTkRPVkVSIEZST00gVVRSQU4gRkFJTFVSRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitIYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwktLSBPdGhlciBJRXMKKwkJaW50ZXJSQVQtSE8tRmFpbHVyZUNhdXNlCQlJbnRlclJBVC1ITy1GYWlsdXJlQ2F1c2UJCQlPUFRJT05BTCwKKwkJLS0gSW4gY2FzZSB0aGUgaW50ZXJSQVRNZXNzYWdlIHRvIGJlIHRyYW5zZmVycmVkIGlzIGZvciBHRVJBTiBJdSBtb2RlLCB0aGUKKwkJLS0gbWVzc2FnZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBIYW5kb3ZlckZyb21VdHJhbkZhaWx1cmUtdjU5MGV4dC1JRXMKKwkJLS0gbm9uLWNyaXRpY2FsIGV4dGVuc2lvbiBjb250YWluZXIuCisJCWludGVyUkFUTWVzc2FnZQkJCQkJQ0hPSUNFIHsKKwkJCWdzbQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWdzbS1NZXNzYWdlTGlzdAkJCQkJCUdTTS1NZXNzYWdlTGlzdAorCQkJfSwKKwkJCWNkbWEyMDAwCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQljZG1hMjAwMC1NZXNzYWdlTGlzdAkJCQlDRE1BMjAwMC1NZXNzYWdlTGlzdAorCQkJfQorCQl9CQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQloYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQloYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUtdjU5MGV4dAlIYW5kb3ZlckZyb21VdHJhbkZhaWx1cmUtdjU5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworSGFuZG92ZXJGcm9tVXRyYW5GYWlsdXJlLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJZ2VyYW5JdS1NZXNzYWdlTGlzdAkJCQkJCUdFUkFOSXUtTWVzc2FnZUxpc3QJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBJTlRFUiBSQVQgSEFORE9WRVIgSU5GTworLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitJbnRlclJBVEhhbmRvdmVySW5mbyA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIDQ0LjAxOAorCXByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0CQlDSE9JQ0UgeworCQlhYnNlbnQJCQkJCQkJTlVMTCwKKwkJcHJlc2VudAkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAorCX0sCisJdUUtU2VjdXJpdHlJbmZvcm1hdGlvbgkJCUNIT0lDRSB7CisJCWFic2VudAkJCQkJCQlOVUxMLAorCQlwcmVzZW50CQkJCQkJCVVFLVNlY3VyaXR5SW5mb3JtYXRpb24KKwl9LAorCXVlLUNhcGFiaWxpdHlDb250YWluZXIJCQlDSE9JQ0UgeworCQlhYnNlbnQJCQkJCQkJTlVMTCwKKwkJLS0gcHJlc2VudCBpcyBhbiBvY3RldCBhbGlnbmVkIHN0cmluZyBjb250YWluaW5nIElFIFVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUluZm8KKwkJcHJlc2VudAkJCQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDAuLjYzKSkKKwl9LAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJdjM5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJQ0hPSUNFIHsKKwkJYWJzZW50CQkJCQkJCU5VTEwsCisJCXByZXNlbnQJCQkJCQkJU0VRVUVOQ0UgeworCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjM5MGV4dAlJbnRlclJBVEhhbmRvdmVySW5mby12MzkwZXh0LUlFcywKKwkJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFICB7CisJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjNhMGV4dAlJbnRlclJBVEhhbmRvdmVySW5mby12M2EwZXh0LUlFcywKKwkJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12M2QwZXh0IAlJbnRlclJBVEhhbmRvdmVySW5mby12M2QwZXh0LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcKKwkJCQkJCQkJKENPTlRBSU5JTkcgSW50ZXJSQVRIYW5kb3ZlckluZm8tcjMtYWRkLWV4dC1JRXMpCU9QVElPTkFMLAorCQkJCQl2M2cwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjNnMGV4dAlJbnRlclJBVEhhbmRvdmVySW5mby12M2cwZXh0LUlFcywKKwkJCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12NGIwZXh0CUludGVyUkFUSGFuZG92ZXJJbmZvLXY0YjBleHQtSUVzLAorCQkJCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjRkMGV4dAlJbnRlclJBVEhhbmRvdmVySW5mby12NGQwZXh0LUlFcywKKwkJCQkJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQkJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXY1OTBleHQKKwkJCQkJCQkJCQkJCQkJCQlJbnRlclJBVEhhbmRvdmVySW5mby12NTkwZXh0LUlFcywKKwkJCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12NjkwZXh0CisJCQkJCQkJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dC1JRXMsCisJCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12N3h5ZXh0CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlJbnRlclJBVEhhbmRvdmVySW5mby12N3h5ZXh0LUlFcywKKwkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCQkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXYzOTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CQlPUFRJT05BTCwKKwkJZGwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0CQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJCU9QVElPTkFMCit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXYzZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCQlPUFRJT05BTAorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12M2cwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tcjMtYWRkLWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dDEJCUludGVyUkFUSGFuZG92ZXJJbmZvLXY2OTBleHQxLUlFcywKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjRkMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwl0ZGQxMjgtUkYtQ2FwYWJpbGl0eQkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CQlPUFRJT05BTAorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdENvbXAJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0Q29tcAkJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wCQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wCQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dDEtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAlPUFRJT05BTAorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1TZWN1cml0eUluZm9ybWF0aW9uMgkJCQlVRS1TZWN1cml0eUluZm9ybWF0aW9uMgkJCQkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAtZXh0CQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcDIJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAyCit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1yNwkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1FQVNVUkVNRU5UIENPTlRST0wKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTWVhc3VyZW1lbnRDb250cm9sIDo6PSBDSE9JQ0UgeworCS0tIFRoZSBSZWwtNCBmdW5jdGlvbmFsaXR5IG9mIFVFIFBvc2l0aW9uaW5nIE9URE9BIEFzc2lzdGFuY2VEYXRhIFRERCBpcyBvbmx5IGF2YWlsYWJsZQorCS0tIGluIHRoZSBsYXRlci10aGFuLXIzIGJyYW5jaCBvZiB0aGlzIG1lc3NhZ2UgKGkuZS4gdGhyb3VnaCB0aGUgdXNlIG9mIHRoZSBJRQorCS0tIHVlLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0KQorCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCW1lYXN1cmVtZW50Q29udHJvbC1yMwkJCU1lYXN1cmVtZW50Q29udHJvbC1yMy1JRXMsCisJCXYzOTBub25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCW1lYXN1cmVtZW50Q29udHJvbC12MzkwZXh0CQlNZWFzdXJlbWVudENvbnRyb2wtdjM5MGV4dCwKKwkJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJbWVhc3VyZW1lbnRDb250cm9sLXYzYTBleHQJCQlNZWFzdXJlbWVudENvbnRyb2wtdjNhMGV4dCwKKwkJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRXsKKwkJCQkJCS0tIFRoZSBjb250ZW50IG9mIHRoZSB2NGIwIG5vbi1jcml0aWNhbCBleHRlbnNpb24gaGFzIGJlZW4gcmVtb3ZlZC4gSWYgc2VudCAKKwkJCQkJCS0tIHRvIGEgVUUgb2YgQVMgcmVsZWFzZSA0LCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkLiBBIFVFIG9mIEFTIAorCQkJCQkJLS0gcmVsZWFzZSA1IG9ud2FyZCBzaGFsbCBjb21wbHkgd2l0aCB0aGUgdjRiMCBhbmQgbGF0ZXIgZXh0ZW5zaW9ucyBpbiB0aGlzIAorCQkJCQkJLS0gYnJhbmNoIG9mIHRoZSBtZXNzYWdlLgorCQkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCW1lYXN1cmVtZW50Q29udHJvbC12NTkwZXh0CQlNZWFzdXJlbWVudENvbnRyb2wtdjU5MGV4dC1JRXMsCisJCQkJCQkJdjViME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjViMGV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQtSUVzLAorCQkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjd4eWV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQtSUVzLAorCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJCX0JCQkJCQlPUFRJT05BTAorCQkJCQkJCX0JCQkJCQlPUFRJT05BTAorCQkJCQkJfQkJCQkJCU9QVElPTkFMCisJCQkJCX0JCQkJCQlPUFRJT05BTAorCQkJCX0JCQkJCQlPUFRJT05BTAorCQkJfQkJCQkJCU9QVElPTkFMCisJCX0JCQkJCQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJbWVhc3VyZW1lbnRDb250cm9sLXI0CQkJTWVhc3VyZW1lbnRDb250cm9sLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCQltZWFzdXJlbWVudENvbnRyb2wtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFeworCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY1OTBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NTkwZXh0LUlFcywKKwkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjViMGV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQtSUVzLAorCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQJCU1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWxhdGVyLXRoYW4tcjQJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBNb3N0IHNpZ25pZmljYW50IHBhcnQgb2YgIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiAoTVNQKSwKKwkJCQktLSAiUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIiID0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AgKiA0ICsgCisJCQkJLS0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgorCQkJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXI2CQkJTWVhc3VyZW1lbnRDb250cm9sLXI2LUlFcywKKwkJCQkJCXY2YTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjZhMGV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY2YTBleHQtSUVzLAorCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQJCU1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK01lYXN1cmVtZW50Q29udHJvbC1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZW1lbnRJZGVudGl0eQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwkJLS0gVEFCVUxBUjogVGhlIG1lYXN1cmVtZW50IHR5cGUgaXMgaW5jbHVkZWQgaW4gTWVhc3VyZW1lbnRDb21tYW5kLgorCQltZWFzdXJlbWVudENvbW1hbmQJCQkJTWVhc3VyZW1lbnRDb21tYW5kLAorCQltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAorCQlhZGRpdGlvbmFsTWVhc3VyZW1lbnRMaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkcGNoLUNvbXByZXNzZWRNb2RlU3RhdHVzSW5mbwlEUENILUNvbXByZXNzZWRNb2RlU3RhdHVzSW5mbwkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXYzOTBleHQgOjo9IFNFUVVFTkNFIHsKKwkJdWUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dAkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dAlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudENvbnRyb2wtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCXNmbi1PZmZzZXQtVmFsaWRpdHkJCQkJU0ZOLU9mZnNldC1WYWxpZGl0eQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlbWVudElkZW50aXR5CQlNZWFzdXJlbWVudElkZW50aXR5LAorCQktLSBUQUJVTEFSOiBUaGUgbWVhc3VyZW1lbnQgdHlwZSBpcyBpbmNsdWRlZCBpbiBtZWFzdXJlbWVudENvbW1hbmQuCisJCW1lYXN1cmVtZW50Q29tbWFuZAkJCQlNZWFzdXJlbWVudENvbW1hbmQtcjQsCisJCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCisJCWFkZGl0aW9uYWxNZWFzdXJlbWVudExpc3QJCUFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWRwY2gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvCURQQ0gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvCQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudENvbnRyb2wtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwltZWFzdXJlbWVudENvbW1hbmQtdjU5MGV4dCAJCQlDSE9JQ0UgeworCQktLSB0aGUgY2hvaWNlINJpbnRyYS1mcmVxdWVuY3nTIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBjYXNlIG9mIGludHJhLWZyZXF1ZW5jeSBtZWFzdXJlbWVudCwKKwkJLS0gYXMgd2VsbCBhcyB3aGVuIGludHJhLWZyZXF1ZW5jeSBldmVudHMgYXJlIGNvbmZpZ3VyZWQgZm9yIGludGVyLWZyZXF1ZW5jeSBtZWFzdXJlbWVudAorCQlpbnRyYS1mcmVxdWVuY3kJCQkJCQlJbnRyYS1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dCwKKwkJaW50ZXItZnJlcXVlbmN5CQkJCQkJSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQKKwl9CQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJT1BUSU9OQUwsCisJaW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJCUludHJhRnJlcUV2ZW50LTFkLXI1CQkJCU9QVElPTkFMLAorCS0tIG1vc3Qgc2lnbmlmaWNhbnQgcGFydCBvZiAiUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIiIChNU1ApLAorCS0tICJSUkMgdHJhbnNhY3Rpb24gaWRlbnRpZmllciIgPSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0ICogNCArIAorCS0tIHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIKKwlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0CVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQtSUVzIDo6PSAJU0VRVUVOQ0UgeworCWludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJSW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudENvbnRyb2wtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW1lYXN1cmVtZW50SWRlbnRpdHkJCU1lYXN1cmVtZW50SWRlbnRpdHksCisJCS0tIFRBQlVMQVI6IFRoZSBtZWFzdXJlbWVudCB0eXBlIGlzIGluY2x1ZGVkIGluIG1lYXN1cmVtZW50Q29tbWFuZC4KKwkJbWVhc3VyZW1lbnRDb21tYW5kCQkJCU1lYXN1cmVtZW50Q29tbWFuZC1yNiwKKwkJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKKwkJYWRkaXRpb25hbE1lYXN1cmVtZW50TGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZHBjaC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JRFBDSC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50Q29udHJvbC12NmEwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudENvbnRyb2wtdjd4eWV4dC1JRXMgOjo9CVNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC12N3h5ZXh0CQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC12N3h5ZXh0Cit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1FQVNVUkVNRU5UIENPTlRST0wgRkFJTFVSRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCW1lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJbWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZS12NTkwZXh0CQlNZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlLXY1OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBtb3N0IHNpZ25pZmljYW50IHBhcnQgb2YgIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiAoTVNQKSwKKwktLSAiUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIiID0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AtdjU5MGV4dCAqIDQgKyAKKwktLSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCisJLS0gSWYgdGhlIHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQLXY1OTBleHQgd2FzIG5vdCByZWNlaXZlZCBpbiB0aGUgTUVBU1VSRU1FTlQgQ09OVFJPTCAKKwktLSBtZXNzYWdlLCB0aGVuIHRoZSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0IHNoYWxsIGJlIHNldCB0byB6ZXJvCisJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AtdjU5MGV4dAlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1FQVNVUkVNRU5UIFJFUE9SVAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNZWFzdXJlbWVudFJlcG9ydCA6Oj0gU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlbWVudElkZW50aXR5CQlNZWFzdXJlbWVudElkZW50aXR5LAorCQltZWFzdXJlZFJlc3VsdHMJCQkJCU1lYXN1cmVkUmVzdWx0cwkJCQkJCU9QVElPTkFMLAorCQltZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJCWFkZGl0aW9uYWxNZWFzdXJlZFJlc3VsdHMJCU1lYXN1cmVkUmVzdWx0c0xpc3QJCQkJCU9QVElPTkFMLAorCQlldmVudFJlc3VsdHMJCQkJCUV2ZW50UmVzdWx0cwkJCQkJCU9QVElPTkFMLAorCS0tIE5vbi1jcml0aWNhbCBleHRlbnNpb25zCisJCXYzOTBub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQltZWFzdXJlbWVudFJlcG9ydC12MzkwZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12MzkwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQltZWFzdXJlbWVudFJlcG9ydC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY0YjBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY0YjBleHQtSUVzLAorCQkJCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tUmVsNCBpbmZvcm1hdGlvbgorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCVNFUVVFTkNFIHsKKwkJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY1OTBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY1OTBleHQtSUVzLAorCQkJCQkJdjViME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY1YjBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY1YjBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY2OTBleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY2OTBleHQtSUVzLAorCQkJCQkJCQkKKwkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQkJbWVhc3VyZW1lbnRSZXBvcnQtdjd4eWV4dAkJTWVhc3VyZW1lbnRSZXBvcnQtdjd4eWV4dC1JRXMsCisJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAorCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudFJlcG9ydC12MzkwZXh0IDo6PSBTRVFVRU5DRSB7CisJCW1lYXN1cmVkUmVzdWx0cy12MzkwZXh0CQkJTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQJCQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRSZXBvcnQtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlpbnRlckZyZXFFdmVudFJlc3VsdHMtTENSCQlJbnRlckZyZXFFdmVudFJlc3VsdHMtTENSLXI0LWV4dAkJT1BUSU9OQUwsCisJLS0gYWRkaXRpb25hbE1lYXN1cmVkUmVzdWx0cy1MQ1Igc2hhbGwgY29udGFpbiBtZWFzdXJlbWVudCByZXN1bHRzIGFuZCBhZGRpdGlvbmFsIG1lYXN1cmVtZW50CisJLS0gcmVzdWx0cyBsaXN0LgorCWFkZGl0aW9uYWxNZWFzdXJlZFJlc3VsdHMtTENSCU1lYXN1cmVkUmVzdWx0c0xpc3QtTENSLXI0LWV4dAkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gSXQgc2hvdWxkIG5vdCBiZSBzZW50IGFuZAorCS0tIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCQkJCQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRSZXBvcnQtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwltZWFzdXJlZFJlc3VsdHMtdjU5MGV4dAkJCQlNZWFzdXJlZFJlc3VsdHMtdjU5MGV4dAkJCQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudFJlcG9ydC12NWIwZXh0LUlFcyA6Oj0gCVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRSZXBvcnQtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwltZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRSZXBvcnQtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwl2ZWxvY2l0eUVzdGltYXRlCQkJCQlWZWxvY2l0eUVzdGltYXRlCQkJCQlPUFRJT05BTCwKKwl1ZS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cwkJCVVFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzLXI3CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBQQUdJTkcgVFlQRSAxCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BhZ2luZ1R5cGUxIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXBhZ2luZ1JlY29yZExpc3QJCQkJUGFnaW5nUmVjb3JkTGlzdAkJCQkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCWJjY2gtTW9kaWZpY2F0aW9uSW5mbwkJCUJDQ0gtTW9kaWZpY2F0aW9uSW5mbwkJCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcGFnaW5nVHlwZTEtcjMtYWRkLWV4dAkJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXBhZ2luZ1R5cGUxLXY1OTBleHQJCQkJUGFnaW5nVHlwZTEtdjU5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworUGFnaW5nVHlwZTEtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcGFnaW5nUmVjb3JkMkxpc3QJCQkJUGFnaW5nUmVjb3JkMkxpc3QtcjUJCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUEFHSU5HIFRZUEUgMgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitQYWdpbmdUeXBlMiA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlwYWdpbmdDYXVzZQkJCQkJCVBhZ2luZ0NhdXNlLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJCXBhZ2luZ1JlY29yZFR5cGVJRAkJCQlQYWdpbmdSZWNvcmRUeXBlSUQsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXBhZ2luZ1R5cGUyLXIzLWFkZC1leHQJCQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFBIWVNJQ0FMIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMKKwkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXYzYTBleHQJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12M2EwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMtYWRkLWV4dAkJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgeworCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dAorCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0CisJCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQkKKwkJCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNAorCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQKKwkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAkJCisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUKKwkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQkKKwkJCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI2CisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNworCQkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI2LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjcKKwkJCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI3LUlFcywKKwkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAorCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1hZGQtZXh0CUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9LAorCQkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKKwkJLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElECQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIKKwktLSBpcyB1bnNwZWNpZmllZAorCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCQlTU0RULVVMCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIG9yZGVyIG9mIHRoZSBSTHMgaW4gSUUgY2VsbC1pZC1QZXJSTC1MaXN0IGlzIHRoZSBzYW1lIGFzCisJCS0tIGluIElFIERMLUluZm9ybWF0aW9uUGVyUkwtTGlzdCBpbmNsdWRlZCBpbiB0aGlzIG1lc3NhZ2UKKwkJY2VsbC1pZC1QZXJSTC1MaXN0CQkJCQlDZWxsSWRlbnRpdHktUGVyUkwtTGlzdAkJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCit9CisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90CisJCS0tIGNoYW5nZWQgdG8ga2VlcCBpdCBhbGlnbmVkIHdpdGggUjk5LgorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnRXaXRoQ1BDSC1TZXRJRC1yNAlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQktLSBOb3RlOiB0aGUgcmVmZXJlbmNlIHRvIENQQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QuIFRoZSBuYW1lIGlzIG5vdAorCQktLSBjaGFuZ2VkIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjUJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNQkJCU9QVElPTkFMCit9CisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNgkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgRXF1aXBtZW50IElFcworCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnIAkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisJCS0tIElmIGluY2x1ZGVkIGluIHRoZSByMyBvciByNCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCB0aGUgVUUgc2hvdWxkIGlnbm9yZSB0aGUgSUUKKwkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQkJCQkJT1BUSU9OQUwsCisJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAorCQlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJCWRocy1zeW5jCQkJCQkJREhTLVN5bmMJCQkJCQkJT1BUSU9OQUwsCisJCXRpbWluZ01haW50YWluZWRTeW5jaEluZAkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjcJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUEhZU0lDQUwgQ0hBTk5FTCBSRUNPTkZJR1VSQVRJT04gQ09NUExFVEUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAorCQktLSBUQUJVTEFSOiBVTC1UaW1pbmdBZHZhbmNlIGlzIGFwcGxpY2FibGUgZm9yIFRERCBtb2RlIG9ubHkuCisJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQljb3VudC1DLUFjdGl2YXRpb25UaW1lCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15CQkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0CisJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgeworCQlleHQtdWwtVGltaW5nQWR2YW5jZQkJCUVYVC1VTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFBIWVNJQ0FMIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQkJT1BUSU9OQUwsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBQSFlTSUNBTCBTSEFSRUQgQ0hBTk5FTCBBTExPQ0FUSU9OIChUREQgb25seSkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXIzCisJCQkJCQkJCQkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCWRzY2gtUk5USQkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjQKKwkJCQkJCQkJCQkJCVBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12NjkwZXh0CisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12N3h5ZXh0CisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tdjd4eWV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCX0KKwl9Cit9CisKK1BoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWRzY2gtUk5USQkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sCQkJCU9QVElPTkFMLAorCQlwdXNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JCU9QVElPTkFMLAorCQlwZHNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JCU9QVElPTkFMLAorCQktLSBUQUJVTEFSOiBJZiBjb25maXJtUmVxdWVzdCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUgIk5vIENvbmZpcm0iCisJCS0tIHNoYWxsIGJlIHVzZWQgYXMgc3BlY2lmaWVkIGluIDEwLjIuMjUuCQkKKwkJY29uZmlybVJlcXVlc3QJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCQljb25maXJtUERTQ0gsIGNvbmZpcm1QVVNDSCB9CU9QVElPTkFMLAorCQl0cmFmZmljVm9sdW1lUmVwb3J0UmVxdWVzdAkJSU5URUdFUiAoMC4uMjU1KQkJCQkJT1BUSU9OQUwsCQorCQlpc2NwVGltZXNsb3RMaXN0CQkJCQlUaW1lc2xvdExpc3QJCQkJCQlPUFRJT05BTCwKKwkJcmVxdWVzdFBDQ1BDSFJTQ1AJCQkJCUJPT0xFQU4KK30KKworUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CQkJT1BUSU9OQUwsCisJCXB1c2NoLUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNAkJT1BUSU9OQUwsCisJCXBkc2NoLUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JUERTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNAkJT1BUSU9OQUwsCisJCS0tIFRBQlVMQVI6IElmIGNvbmZpcm1SZXF1ZXN0IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdCB2YWx1ZSAiTm8gQ29uZmlybSIKKwkJLS0gc2hhbGwgYmUgdXNlZCBhcyBzcGVjaWZpZWQgaW4gMTAuMi4yNS4JCQorCQljb25maXJtUmVxdWVzdAkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJCWNvbmZpcm1QRFNDSCwgY29uZmlybVBVU0NIIH0JT1BUSU9OQUwsCisJCXRyYWZmaWNWb2x1bWVSZXBvcnRSZXF1ZXN0CQlJTlRFR0VSICgwLi4yNTUpCQkJCQlPUFRJT05BTCwKKwkJaXNjcFRpbWVzbG90TGlzdAkJCQlUaW1lc2xvdExpc3QtcjQJCQkJCQlPUFRJT05BTCwKKwkJcmVxdWVzdFBDQ1BDSFJTQ1AJCQkJQk9PTEVBTgorfQorCitQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3CQkJT1BUSU9OQUwsCisJCXB1c2NoLUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNwkJT1BUSU9OQUwsCisJCXBkc2NoLUNhcGFjaXR5QWxsb2NhdGlvbkluZm8JUERTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNwkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUFVTQ0ggQ0FQQUNJVFkgUkVRVUVTVCAoVEREIG9ubHkpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BVU0NIQ2FwYWNpdHlSZXF1ZXN0IDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWRzY2gtUk5USQkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJdHJhZmZpY1ZvbHVtZQkJCQkJVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QJT1BUSU9OQUwsCisJCXRpbWVzbG90TGlzdFdpdGhJU0NQCQkJVGltZXNsb3RMaXN0V2l0aElTQ1AJCQkJT1BUSU9OQUwsCisJCXByaW1hcnlDQ1BDSC1SU0NQCQkJCVByaW1hcnlDQ1BDSC1SU0NQCQkJCQlPUFRJT05BTCwKKwkJYWxsb2NhdGlvbkNvbmZpcm1hdGlvbgkJCUNIT0lDRSB7CisJCQlwZHNjaENvbmZpcm1hdGlvbgkJCQlQRFNDSC1JZGVudGl0eSwKKwkJCXB1c2NoQ29uZmlybWF0aW9uCQkJCVBVU0NILUlkZW50aXR5CisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlwcm90b2NvbEVycm9ySW5kaWNhdG9yCQkJUHJvdG9jb2xFcnJvckluZGljYXRvcldpdGhNb3JlSW5mbywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcHVzY2hDYXBhY2l0eVJlcXVlc3QtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJcHVzY2hDYXBhY2l0eVJlcXVlc3QtdjU5MGV4dAlQVVNDSENhcGFjaXR5UmVxdWVzdC12NTkwZXh0LAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1BVU0NIQ2FwYWNpdHlSZXF1ZXN0LXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKKwlwcmltYXJ5Q0NQQ0gtUlNDUC1kZWx0YQkJCQlEZWx0YVJTQ1AJCQlPUFRJT05BTAorfQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkFESU8gQkVBUkVSIFJFQ09ORklHVVJBVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yMwlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yMy1JRXMsCisJCS0tIFByZWZpeCAidjNhbyIgaXMgdXNlZCAoaW4gb25lIGluc3RhbmNlKSB0byBrZWVwIGFsaWdubWVudCB3aXRoIFI5OQorCQl2M2FvTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12M2EwZXh0CVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXYzYTBleHQsCisJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY0YjBleHQJCisJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dC1JRXMsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NTkwZXh0CQorCQkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcywKKwkJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQKKwkJCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAorCQkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNAlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NTkwZXh0CQorCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzLAorCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjVkMGV4dAorCQkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjVkMGV4dC1JRXMsCisJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0CisJCQkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCXI1CQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNS1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NWQwZXh0CVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQtSUVzLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0CisJCQkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI2CQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNi1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNworCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjYtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQkJcjcJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjcJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI3LUlFcywKKwkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOCAJCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI3LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQktLSBOT1RFOiBJRSByYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCBzaG91bGQgYmUgb3B0aW9uYWwgaW4gbGF0ZXIgdmVyc2lvbnMKKwkJLS0gb2YgdGhpcyBtZXNzYWdlCisJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvMkxpc3QJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQJCQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJLS0gTk9URTogSUUgZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGlzIG9wdGlvbmFsIGluIGxhdGVyIHZlcnNpb25zCisJCS0tIG9mIHRoaXMgbWVzc2FnZQorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91cgorCS0tIGlzIHVuc3BlY2lmaWVkCisJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS1SYWRpbyBCZWFyZXIgSUVzCisJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI0CQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0IAkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNQkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI1CQlPUFRJT05BTCwKKwkJCQlyYi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CVJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJCU9QVElPTkFMLAorCQkJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUKKwkJCQktLSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJCQl9LAorCQkJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAorCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKwkJCS0tIG9uZSBmb3IgdGhlIEZERCBvbmx5IGVsZW1lbnRzIGFuZCBvbmUgZm9yIHRoZSBUREQgb25seSBlbGVtZW50cywgc28gdGhhdCBvbmUKKwkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI1CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNSAJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBSYWRpbyBiZWFyZXIgSUVzCisJCQkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJcmItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAlSQi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CQlPUFRJT05BTCwKKwkJCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAorCQkJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwKKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKwkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCisJCQktLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCisJCQkJcHJlQ29uZmlnTW9kZQkJCQkJQ0hPSUNFIHsKKwkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNgorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNgkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBFcXVpcG1lbnQgSUVzCisJCWRlbGF5UmVzdHJpY3Rpb25GbGFnCQkJRGVsYXlSZXN0cmljdGlvbkZsYWcJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gVGhlIElFIGhhcnEtUHJlYW1ibGUtTW9kZSBzaG91bGQgbm90IGJlIHVzZWQgaW4gdGhlIHIzIGFuZCByNCB2ZXJzaW9ucyBvZiB0aGUgbWVzc2FnZQorCQktLSBJZiBpbmNsdWRlZCBpbiB0aGUgcjMgb3IgcjQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgdGhlIFVFIHNob3VsZCBpZ25vcmUgdGhlIElFCisJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUJCQkJCU9QVElPTkFMLAorCQliZWFjb25QTEVzdAkJCQkJCUJFQUNPTi1QTC1Fc3QJCQkJCQlPUFRJT05BTCwKKwkJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCQlkaHMtc3luYwkJCQkJCURIUy1TeW5jCQkJCQkJCU9QVElPTkFMLAorCQl0aW1pbmdNYWludGFpbmVkU3luY2hJbmQJCVRpbWluZ01haW50YWluZWRTeW5jaEluZAkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gUmFkaW8gYmVhcmVyIElFcworCQkJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQkJCXJiLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJUkItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAkJT1BUSU9OQUwsCisJCQkJcGRjcC1ST0hDLVRhcmdldE1vZGUJCQlQRENQLVJPSEMtVGFyZ2V0TW9kZQkJCQlPUFRJT05BTCwKKwkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQktLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAorCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSQURJTyBCRUFSRVIgUkVDT05GSUdVUkFUSU9OIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAorCQktLSBUQUJVTEFSOiBVTC1UaW1pbmdBZHZhbmNlIGlzIGFwcGxpY2FibGUgZm9yIFRERCBtb2RlIG9ubHkuCisJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQljb3VudC1DLUFjdGl2YXRpb25UaW1lCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15CQkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dAorCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSQURJTyBCRUFSRVIgUkVDT05GSUdVUkFUSU9OIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25GYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwb3RlbnRpYWxseVN1Y2Nlc2Z1bEJlYXJlckxpc3QJUkItSWRlbnRpdHlMaXN0CQkJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkFESU8gQkVBUkVSIFJFTEVBU0UKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUmFkaW9CZWFyZXJSZWxlYXNlIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJhZGlvQmVhcmVyUmVsZWFzZS1yMwkJCVJhZGlvQmVhcmVyUmVsZWFzZS1yMy1JRXMsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXJhZGlvQmVhcmVyUmVsZWFzZS12M2EwZXh0CQlSYWRpb0JlYXJlclJlbGVhc2UtdjNhMGV4dCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY0YjBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NGIwZXh0LUlFcywKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY1OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NTkwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjQJCQlSYWRpb0JlYXJlclJlbGVhc2UtcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY1OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NTkwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNQkJCVJhZGlvQmVhcmVyUmVsZWFzZS1yNS1JRXMsCisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CisJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNS1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI2CQkJUmFkaW9CZWFyZXJSZWxlYXNlLXI2LUlFcywKKwkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC03CisJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjYtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI3CQkJUmFkaW9CZWFyZXJSZWxlYXNlLXI3LUlFcywKKwkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAorCQkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNy1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfSwKKwkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitSYWRpb0JlYXJlclJlbGVhc2UtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsSW5kaWNhdGlvbglDTi1Eb21haW5JZGVudGl0eQkJICAgICAJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0LAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mbzJMaXN0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlbGVhc2UtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIKKwktLSBpcyB1bnNwZWNpZmllZAorCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlbGVhc2UtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCQlTU0RULVVMCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIG9yZGVyIG9mIHRoZSBSTHMgaW4gSUUgY2VsbC1pZC1QZXJSTC1MaXN0IGlzIHRoZSBzYW1lIGFzCisJCS0tICBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlbGVhc2UtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0LAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0CQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsSW5kaWNhdGlvbglDTi1Eb21haW5JZGVudGl0eQkJICAgICAJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0LAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjUJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVsZWFzZS12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKKwkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQorCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCQkJCQlPUFRJT05BTCwKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCisJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwkJZGhzLXN5bmMJCQkJCQlESFMtU3luYwkJCQkJCQlPUFRJT05BTCwKKwkJdGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwsCisJCW1ibXMtUkItTGlzdFJlbGVhc2VkVG9DaGFuZ2VUcmFuc2Zlck1vZGUKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0LAorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTCwKKwkJbWJtcy1SQi1MaXN0UmVsZWFzZWRUb0NoYW5nZVRyYW5zZmVyTW9kZQorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlbGVhc2UtcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsSW5kaWNhdGlvbglDTi1Eb21haW5JZGVudGl0eQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QsCisJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjcJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMLAorCQltYm1zLVJCLUxpc3RSZWxlYXNlZFRvQ2hhbmdlVHJhbnNmZXJNb2RlCisJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJBRElPIEJFQVJFUiBSRUxFQVNFIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKKwkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgorCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwkJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJcmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUtdjd4eWV4dAorCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUtdjd4eWV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSQURJTyBCRUFSRVIgUkVMRUFTRSBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyUmVsZWFzZUZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXBvdGVudGlhbGx5U3VjY2VzZnVsQmVhcmVyTGlzdAlSQi1JZGVudGl0eUxpc3QJCQkJCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcmFkaW9CZWFyZXJSZWxlYXNlRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJBRElPIEJFQVJFUiBTRVRVUAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclNldHVwIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJhZGlvQmVhcmVyU2V0dXAtcjMJCQkJUmFkaW9CZWFyZXJTZXR1cC1yMy1JRXMsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXJhZGlvQmVhcmVyU2V0dXAtdjNhMGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12M2EwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQlyYWRpb0JlYXJlclNldHVwLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NGIwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY0YjBleHQtSUVzLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclNldHVwLXY1OTBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjU5MGV4dC1JRXMsCisJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjVkMGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0LUlFcywKKwkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjQJCQkJUmFkaW9CZWFyZXJTZXR1cC1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NTkwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1OTBleHQtSUVzLAorCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXY1ZDBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjVkMGV4dC1JRXMsCisJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXY2OTBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlyYWRpb0JlYXJlclNldHVwLXI1CQkJCVJhZGlvQmVhcmVyU2V0dXAtcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQlyYWRpb0JlYXJlclNldHVwLXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1ZDBleHQtSUVzLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0sCisJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclNldHVwLXI2CQkJCVJhZGlvQmVhcmVyU2V0dXAtcjYtSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKKwkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjYtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjcJCQkJUmFkaW9CZWFyZXJTZXR1cC1yNy1JRXMsCisJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKKwkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXI3LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfSwKKwkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitSYWRpb0JlYXJlclNldHVwLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QJCQlPUFRJT05BTCwKKwkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudAkJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXAtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIKKwktLSBpcyB1bnNwZWNpZmllZAorCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJTZXR1cC12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWRsLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgeworCS0tUmFkaW8gQmVhcmVyIElFcworCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXAtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QJCQlPUFRJT05BTCwKKwkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQkJCU9QVElPTkFMLAorCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjUJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gVGhlIElFIGhhcnEtUHJlYW1ibGUtTW9kZSBzaG91bGQgbm90IGJlIHVzZWQgaW4gdGhlIHIzIGFuZCByNCB2ZXJzaW9ucyBvZiB0aGUgbWVzc2FnZQorCQktLSBJZiBpbmNsdWRlZCBpbiB0aGUgcjMgb3IgcjQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgdGhlIFVFIHNob3VsZCBpZ25vcmUgdGhlIElFCisJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUJCQkJCU9QVElPTkFMLAorCQliZWFjb25QTEVzdAkJCQkJCUJFQUNPTi1QTC1Fc3QJCQkJCQlPUFRJT05BTCwKKwkJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCQlkaHMtc3luYwkJCQkJCURIUy1TeW5jCQkJCQkJCU9QVElPTkFMLAorCQl0aW1pbmdNYWludGFpbmVkU3luY2hJbmQJCVRpbWluZ01haW50YWluZWRTeW5jaEluZAkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0CQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJTZXR1cC1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gUmFkaW8gYmVhcmVyIElFcworCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQkJT1BUSU9OQUwsCisJCQkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYJCQlPUFRJT05BTCwKKwkJCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwkJCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAorCQkJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwKKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKwkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLXI2LAorCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYsCisJCQkJcmItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdAkJUkItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJcG93ZXJPZmZzZXRJbmZvU2hvcnQJCQlQb3dlck9mZnNldEluZm9TaG9ydAorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNgkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXAtcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJCU9QVElPTkFMLAorCQkJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCQkJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwsCisJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAorCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJCXJhYi1JbmZvCQkJCQkJUkFCLUluZm8tcjYsCisJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNiwKKwkJCQlyYi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlwb3dlck9mZnNldEluZm9TaG9ydAkJCVBvd2VyT2Zmc2V0SW5mb1Nob3J0CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNwkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkFESU8gQkVBUkVSIFNFVFVQIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQl1bC1JbnRlZ1Byb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCisJCS0tIFRBQlVMQVI6IFVMLVRpbWluZ0FkdmFuY2UgaXMgYXBwbGljYWJsZSBmb3IgVEREIG1vZGUgb25seS4KKwkJdWwtVGltaW5nQWR2YW5jZQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCQlPUFRJT05BTCwKKwkJc3RhcnQtVmFsdWUJCQkJU1RBUlQtVmFsdWUJCQkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KKwkJZHVtbXkJCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlVTC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlyYWRpb0JlYXJlclNldHVwQ29tcGxldGUtdjd4eWV4dAorCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJTZXR1cENvbXBsZXRlLXY3eHlleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZS12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQlleHQtdWwtVGltaW5nQWR2YW5jZQkJCUVYVC1VTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJBRElPIEJFQVJFUiBTRVRVUCBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyU2V0dXBGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwb3RlbnRpYWxseVN1Y2Nlc2Z1bEJlYXJlckxpc3QJUkItSWRlbnRpdHlMaXN0CQkJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJhZGlvQmVhcmVyU2V0dXBGYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIENPTk5FQ1RJT04gUkVKRUNUCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JSQ0Nvbm5lY3Rpb25SZWplY3QgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcnJjQ29ubmVjdGlvblJlamVjdC1yMwkJCVJSQ0Nvbm5lY3Rpb25SZWplY3QtcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlycmNDb25uZWN0aW9uUmVqZWN0LXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQlycmNDb25uZWN0aW9uUmVqZWN0LXY2OTBleHQJCVJSQ0Nvbm5lY3Rpb25SZWplY3QtdjY5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMIAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCWluaXRpYWxVRS1JZGVudGl0eQkJCQlJbml0aWFsVUUtSWRlbnRpdHksCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworUlJDQ29ubmVjdGlvblJlamVjdC1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW5pdGlhbFVFLUlkZW50aXR5CQkJCUluaXRpYWxVRS1JZGVudGl0eSwKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJcmVqZWN0aW9uQ2F1c2UJCQkJCVJlamVjdGlvbkNhdXNlLAorCQl3YWl0VGltZQkJCQkJCVdhaXRUaW1lLAorCQlyZWRpcmVjdGlvbkluZm8JCQkJCVJlZGlyZWN0aW9uSW5mbwkJCQkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25SZWplY3QtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlyZWRpcmVjdGlvbkluZm8tdjY5MGV4dAkJCQlHU00tVGFyZ2V0Q2VsbEluZm9MaXN0CQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIENPTk5FQ1RJT04gUkVMRUFTRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkNDb25uZWN0aW9uUmVsZWFzZSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlycmNDb25uZWN0aW9uUmVsZWFzZS1yMwkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeyAKKwkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0CVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTCAKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtcjQJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0CisJCQkJCQkJCQkJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQl9CisJfQorfQorCitSUkNDb25uZWN0aW9uUmVsZWFzZS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJLS0gbi0zMDggaXMgY29uZGl0aW9uYWwgb24gdGhlIFVFIHN0YXRlCisJCW4tMzA4CQkJCQkJCU4tMzA4CQkJCQkJCQlPUFRJT05BTCwKKwkJcmVsZWFzZUNhdXNlCQkJCQlSZWxlYXNlQ2F1c2UsCisJCXJwbG1uLWluZm9ybWF0aW9uCQkJCVJwbG1uLUluZm9ybWF0aW9uCQkJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uUmVsZWFzZS1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJLS0gbi0zMDggaXMgY29uZGl0aW9uYWwgb24gdGhlIFVFIHN0YXRlLgorCQluLTMwOAkJCQkJCQlOLTMwOAkJCQkJCQkJT1BUSU9OQUwsCisJCXJlbGVhc2VDYXVzZQkJCQkJUmVsZWFzZUNhdXNlLAorCQlycGxtbi1pbmZvcm1hdGlvbgkJCQlScGxtbi1JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCXJlZGlyZWN0aW9uSW5mby12NjkwZXh0CQkJCVJlZGlyZWN0aW9uSW5mby1yNglPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgQ09OTkVDVElPTiBSRUxFQVNFIGZvciBDQ0NICistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0ggOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yMwlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCisJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dAlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJdS1STlRJCQkJCQkJCVUtUk5USSwKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjQJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0UgeworCQkJCS0tIFRBQlVMQVI6IENIT0lDRSBJZGVudGl0eVR5cGUgKFUtUk5USSwgR3JvdXBJZGVudGl0eSkgaXMgcmVwbGFjZWQgd2l0aCB0aGUgCisJCQkJLS0gb3B0aW9uYWwgZWxlbWVudCBncm91cElkZW50aXR5LCBzaW5jZSB0aGUgVS1STlRJIGlzIG1hbmRhdG9yeSBpbiBBU04uMS4KKwkJCQktLSBJbiBjYXNlIENIT0lDRSBJZGVudGl0eVR5cGUgaXMgZXF1YWwgdG8gR3JvdXBJZGVudGl0eSB0aGUgdmFsdWUgb2YgdGhlIFUtUk5USSAKKwkJCQktLSBzaGFsbCBiZSBpZ25vcmVkIGJ5IGEgVUUgY29tcGx5aW5nIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLgorCQkJCWdyb3VwSWRlbnRpdHkJCVNFUVVFTkNFICggU0laRSAoMSAuLiBtYXhVUk5USS1Hcm91cCkgKSBPRgorCQkJCQkJCQkJCQlHcm91cFJlbGVhc2VJbmZvcm1hdGlvbgkJT1BUSU9OQUwsCisJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI1CVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjUtSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1JSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJLS0gVGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgorCQlycmNDb25uZWN0aW9uUmVsZWFzZQkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLUlFcworfQorCitSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSByZXN0IG9mIHRoZSBtZXNzYWdlIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIHNlbnQgb24gRENDSC4KKwkJcnJjQ29ubmVjdGlvblJlbGVhc2UJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS1yNC1JRXMKK30KKworLS0gVGhlIFI1IGFuZCBSNCBzZXF1ZW5jZSBvZiBJRXMgYXJlIGlkZW50aWNhbCBpbiB0aGlzIG1lc3NhZ2UKK1JSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjUtSUVzIDo6PSBSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0LUlFcworCistLSBUaGUgUjYgbm9uLWNyaXRpY2FsIGV4dGVuc2lvbiBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBzZW50IG9uIERDQ0guCitSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXY2OTBleHQtSUVzIDo6PSBSUkNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0LUlFcworCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgQ09OTkVDVElPTiBSRUxFQVNFIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JSQ0Nvbm5lY3Rpb25SZWxlYXNlQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJZXJyb3JJbmRpY2F0aW9uCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcnJjQ29ubmVjdGlvblJlbGVhc2VDb21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJSQyBDT05ORUNUSU9OIFJFUVVFU1QKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUlJDQ29ubmVjdGlvblJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW5pdGlhbFVFLUlkZW50aXR5CQkJCUluaXRpYWxVRS1JZGVudGl0eSwKKwkJZXN0YWJsaXNobWVudENhdXNlCQkJCUVzdGFibGlzaG1lbnRDYXVzZSwKKwkJLS0gcHJvdG9jb2xFcnJvckluZGljYXRvciBpcyBNRCwgYnV0IGZvciBjb21wYWN0bmVzcyByZWFzb25zIG5vIGRlZmF1bHQgdmFsdWUKKwkJLS0gaGFzIGJlZW4gYXNzaWduZWQgdG8gaXQuCisJCXByb3RvY29sRXJyb3JJbmRpY2F0b3IJCQlQcm90b2NvbEVycm9ySW5kaWNhdG9yLAorCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJLS0JTm9uIGNyaXRpY2FsIEV4dGVuc2lvbnMKKwkJdjNkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXYzZDBleHQgCVJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXYzZDBleHQtSUVzLAorCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KKwkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJcnJjQ29ubmVjdGlvblJlcXVlc3QtdjRiMGV4dAkJUlJDQ29ubmVjdGlvblJlcXVlc3QtdjRiMGV4dC1JRXMsCisJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJcnJjQ29ubmVjdGlvblJlcXVlc3QtdjU5MGV4dAkJUlJDQ29ubmVjdGlvblJlcXVlc3QtdjU5MGV4dC1JRXMsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlycmNDb25uZWN0aW9uUmVxdWVzdC12NjkwZXh0CVJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXY2OTBleHQtSUVzLAorCQkJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfSAJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblJlcXVlc3QtdjNkMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uUmVxdWVzdC12NGIwZXh0LUlFcyA6Oj0gCVNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgorfQorCitSUkNDb25uZWN0aW9uUmVxdWVzdC12NTkwZXh0LUlFcyA6Oj0gCVNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcHJlZGVmaW5lZENvbmZpZ1N0YXR1c0luZm8JCQlCT09MRUFOCit9CisKK1JSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXY2OTBleHQtSUVzIDo6PQlTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlQ2FwYWJpbGl0eUluZGljYXRpb24JCQkJRU5VTUVSQVRFRCB7IGhzZGNoLCBoc2RjaC1lZGNoIH0JT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQkJT1BUSU9OQUwsCisJCWRvbWFpbkluZGljYXRvciAJCQkJCUNIT0lDRSB7CisJCQljcy1kb21haW4JCQkJCQkJU0VRVUVOQ0UgeworCQkJCWNzQ2FsbFR5cGUJCQkJCQkJRU5VTUVSQVRFRCB7c3BlZWNoLCB2aWRlbywgb3RoZXIsIHNwYXJlIH0KKwkJCX0sCisJCQlwcy1kb21haW4gCQkJCQkJCU5VTEwKKwkJfQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgQ09OTkVDVElPTiBTRVRVUAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkNDb25uZWN0aW9uU2V0dXAgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcnJjQ29ubmVjdGlvblNldHVwLXIzCQkJUlJDQ29ubmVjdGlvblNldHVwLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcnJjQ29ubmVjdGlvblNldHVwLXIzLWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12NGIwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjRiMGV4dC1JRXMsCisJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY1OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NTkwZXh0LUlFcywKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY2OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0LUlFcywKKwkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY3eHlleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCWluaXRpYWxVRS1JZGVudGl0eQkJCQlJbml0aWFsVUUtSWRlbnRpdHksCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjQJCQlSUkNDb25uZWN0aW9uU2V0dXAtcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNC1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY1OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NTkwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjY5MGV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY2OTBleHQtSUVzLAorCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY3eHlleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjUJCQlSUkNDb25uZWN0aW9uU2V0dXAtcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjUtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY2OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0LUlFcywKKwkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY3eHlleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNgkJCVJSQ0Nvbm5lY3Rpb25TZXR1cC1yNi1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNworCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI2LWFkZC1leHQJQklUIFNUUklORwkJCQkJT1BUSU9OQUwsCisJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY3eHlleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNwkJCVJSQ0Nvbm5lY3Rpb25TZXR1cC1yNy1JRXMsCisJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKKwkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjctYWRkLWV4dAlCSVQgU1RSSU5HCQkJCQlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUlJDQ29ubmVjdGlvblNldHVwLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbml0aWFsVUUtSWRlbnRpdHkJCQkJSW5pdGlhbFVFLUlkZW50aXR5LAorCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USSwKKwkJbmV3LWMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKKwkJLS0gVEFCVUxBUjogSWYgY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdCB2YWx1ZQorCQktLSBkZWZpbmVkIGluIDEwLjMuMy4yIHNoYWxsIGJlIHVzZWQuCisJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdDIsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCS0tIE5PVEU6IHVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCBzaG91bGQgYmUgb3B0aW9uYWwgaW4gbGF0ZXIgdmVyc2lvbnMgb2YKKwkJLS0gdGhpcyBtZXNzYWdlCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQktLSBOT1RFOiBkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3Qgc2hvdWxkIGJlIG9wdGlvbmFsIGluIGxhdGVyIHZlcnNpb25zCisJCS0tIG9mIHRoaXMgbWVzc2FnZQorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0CUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNC1leHQJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxCQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS12NTkwZXh0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCisJCW5ldy1jLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJCS0tIFRBQlVMQVI6IElmIGNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUKKwkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgorCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNAkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdDIsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0CQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USSwKKwkJbmV3LWMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKKwkJLS0gVEFCVUxBUjogSWYgY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdCB2YWx1ZQorCQktLSBkZWZpbmVkIGluIDEwLjMuMy4yIHNoYWxsIGJlIHVzZWQuCisJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI1CQlPUFRJT05BTCwKKwktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdDIsCisJCQkJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKwkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCisJCQkJLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjUKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1YmlzCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXAtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBDaGFubmVsIElFcworCQliZWFjb25QTEVzdAkJCQkJCUJFQUNPTi1QTC1Fc3QJCQkJCQlPUFRJT05BTCwKKwkJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCisJCW5ldy1jLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJCS0tIFRBQlVMQVI6IElmIGNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUKKwkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgorCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNQkJT1BUSU9OQUwsCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBSYWRpbyBiZWFyZXIgSUVzCisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLXI2LAorCQkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKwkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCisJCQkJLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCisJCW5ldy1jLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJCS0tIFRBQlVMQVI6IElmIGNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUKKwkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgorCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNQkJT1BUSU9OQUwsCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBSYWRpbyBiZWFyZXIgSUVzCisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLXI2LAorCQkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKwkJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCisJCQkJLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNy1leHQJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXN0YXJ0TGlzdAkJCQkJCVNUQVJUTGlzdCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCQlPUFRJT05BTCwKKwktLQlPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0CU9QVElPTkFMLAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCXYzNzBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzcwZXh0CVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzNzBleHQsCisJCQl2MzgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzODBleHQJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjM4MGV4dC1JRXMsCisJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjNhMGV4dAlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12M2EwZXh0LUlFcywKKwkJCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcKKwkJCQkJCQkJKENPTlRBSU5JTkcgUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtcjMtYWRkLWV4dC1JRXMpCU9QVElPTkFMLAorCQkJCQkJdjNnME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12M2cwZXh0CVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzZzBleHQtSUVzLAorCQkJCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY0YjBleHQKKwkJCQkJCQkJCQkJCQkJCQlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NGIwZXh0LUlFcywKKwkJCQkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY1OTBleHQKKwkJCQkJCQkJCQkJCQkJCQlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NTkwZXh0LUlFcywKKwkJCQkJCQkJCXY1YzBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjVjMGV4dAorCQkJCQkJCQkJCQkJCQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY1YzBleHQtSUVzLAorCQkJCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2OTBleHQKKwkJCQkJCQkJCQkJCQkJCQlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjkwZXh0LUlFcywKKwkJCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQkJcnJjQ29uZWN0aW9uU2V0dXBDb21wbGV0ZS12N3h5ZXh0CisJCQkJCQkJCQkJCQkJCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjd4eWV4dC1JRXMsCisJCQkJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzcwZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0CU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzODBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CQlPUFRJT05BTCwKKwkJZGwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0CQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjNnMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtcjMtYWRkLWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY1MGV4dAkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY1MGV4dC1JRXMJT1BUSU9OQUwsCisJCXY2ODBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0UgeworCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY4MGV4dAkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY4MGV4dC1JRXMsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eS12NTkwZXh0CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NWMwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1YzBleHQJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2NTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY4MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWVDYXBhYmlsaXR5Q29udGFpbmVyCQkJCUJJVCBTVFJJTkcKKwkJCQkJCQkJCQkJCShDT05UQUlOSU5HIFVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzKQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIEZBSUxVUkUgSU5GTworLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkMtRmFpbHVyZUluZm8gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJclJDLUZhaWx1cmVJbmZvLXIzCQkJCQkJCVJSQy1GYWlsdXJlSW5mby1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJyYy1GYWlsdXJlSW5mby1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJCQlTRVFVRU5DRSB7fQorfQorCitSUkMtRmFpbHVyZUluZm8tcjMtSUVzIDo6PQkJU0VRVUVOQ0UgeworCS0tIE5vbi1SUkMgSUVzCisJCWZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJSQyBTVEFUVVMKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUlJDU3RhdHVzIDo6PSBTRVFVRU5DRSB7CisJLS0gT3RoZXIgSUVzCisJCS0tIFRBQlVMQVI6IElkZW50aWZpY2F0aW9uIG9mIHJlY2VpdmVkIG1lc3NhZ2UgaXMgbmVzdGVkIGluCisJCS0tIFByb3RvY29sRXJyb3JNb3JlSW5mb3JtYXRpb24KKwkJcHJvdG9jb2xFcnJvckluZm9ybWF0aW9uCQlQcm90b2NvbEVycm9yTW9yZUluZm9ybWF0aW9uLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlycmNTdGF0dXMtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBTRUNVUklUWSBNT0RFIENPTU1BTkQKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU2VjdXJpdHlNb2RlQ29tbWFuZCA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlzZWN1cml0eU1vZGVDb21tYW5kLXIzCQkJU2VjdXJpdHlNb2RlQ29tbWFuZC1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXNlY3VyaXR5TW9kZUNvbW1hbmQtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK1NlY3VyaXR5TW9kZUNvbW1hbmQtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CistLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBhbHdheXMgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCVNlY3VyaXR5Q2FwYWJpbGl0eSwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJLS0gT3RoZXIgSUVzCisJCXVlLVN5c3RlbVNwZWNpZmljU2VjdXJpdHlDYXAJSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBMaXN0CQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU0VDVVJJVFkgTU9ERSBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTZWN1cml0eU1vZGVDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgeworLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgYWx3YXlzIGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItVUwtQ2lwaEFjdGl2YXRpb25UaW1lSW5mbwlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXNlY3VyaXR5TW9kZUNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU0VDVVJJVFkgTU9ERSBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NlY3VyaXR5TW9kZUZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJc2VjdXJpdHlNb2RlRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFNJR05BTExJTkcgQ09OTkVDVElPTiBSRUxFQVNFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UtcjMJU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBTSUdOQUxMSU5HIENPTk5FQ1RJT04gUkVMRUFTRSBJTkRJQ0FUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZUluZGljYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2VJbmRpY2F0aW9uLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU1lTVEVNIElORk9STUFUSU9OIGZvciBCQ0gKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU3lzdGVtSW5mb3JtYXRpb24tQkNIIDo6PSBTRVFVRU5DRSB7CisJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJc2ZuLVByaW1lCQkJCQkJU0ZOLVByaW1lLAorCQlwYXlsb2FkIAkJCQkJCUNIT0lDRSB7CisJCQlub1NlZ21lbnQJCQkJCQlOVUxMLAorCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnQsCisJCQlzdWJzZXF1ZW50U2VnbWVudAkJCQlTdWJzZXF1ZW50U2VnbWVudCwKKwkJCWxhc3RTZWdtZW50U2hvcnQJCQkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJbGFzdEFuZEZpcnN0CQkJCQlTRVFVRU5DRSB7CisJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50U2hvcnQKKwkJCX0sCisJCQlsYXN0QW5kQ29tcGxldGUJCQkJCVNFUVVFTkNFIHsKKwkJCQlsYXN0U2VnbWVudFNob3J0CQkJCUxhc3RTZWdtZW50U2hvcnQsCisJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0CisJCQl9LAorCQkJbGFzdEFuZENvbXBsZXRlQW5kRmlyc3QJCQlTRVFVRU5DRSB7CisJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKKwkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CisJCQl9LAorCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAorCQkJY29tcGxldGVBbmRGaXJzdAkJCQlTRVFVRU5DRSB7CisJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAorCQkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50U2hvcnQKKwkJCX0sCisJCQljb21wbGV0ZVNJQgkJCQkJCUNvbXBsZXRlU0lCLAorCQkJbGFzdFNlZ21lbnQJCQkJCQlMYXN0U2VnbWVudCwKKwkJCXNwYXJlNQkJCQkJCQlOVUxMLAorCQkJc3BhcmU0CQkJCQkJCU5VTEwsCisJCQlzcGFyZTMJCQkJCQkJTlVMTCwKKwkJCXNwYXJlMgkJCQkJCQlOVUxMLAorCQkJc3BhcmUxCQkJCQkJCU5VTEwKKwkJfQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBTWVNURU0gSU5GT1JNQVRJT04gZm9yIEZBQ0gKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU3lzdGVtSW5mb3JtYXRpb24tRkFDSCA6Oj0gU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXBheWxvYWQgCQkJCQkJQ0hPSUNFIHsKKwkJCW5vU2VnbWVudAkJCQkJCU5VTEwsCisJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudCwKKwkJCXN1YnNlcXVlbnRTZWdtZW50CQkJCVN1YnNlcXVlbnRTZWdtZW50LAorCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJbGFzdEFuZEZpcnN0CQkJCQlTRVFVRU5DRSB7CisJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50U2hvcnQKKwkJCX0sCisJCQlsYXN0QW5kQ29tcGxldGUJCQkJCVNFUVVFTkNFIHsKKwkJCQlsYXN0U2VnbWVudFNob3J0CQkJCUxhc3RTZWdtZW50U2hvcnQsCisJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0CisJCQl9LAorCQkJbGFzdEFuZENvbXBsZXRlQW5kRmlyc3QJCQlTRVFVRU5DRSB7CisJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKKwkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CisJCQl9LAorCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAorCQkJY29tcGxldGVBbmRGaXJzdAkJCQlTRVFVRU5DRSB7CisJCQkJY29tcGxldGVTSUItTGlzdAkJCQlDb21wbGV0ZVNJQi1MaXN0LAorCQkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50U2hvcnQKKwkJCX0sCisJCQljb21wbGV0ZVNJQgkJCQkJCUNvbXBsZXRlU0lCLAorCQkJbGFzdFNlZ21lbnQJCQkJCQlMYXN0U2VnbWVudCwKKwkJCXNwYXJlNQkJCQkJCQlOVUxMLAorCQkJc3BhcmU0CQkJCQkJCU5VTEwsCisJCQlzcGFyZTMJCQkJCQkJTlVMTCwKKwkJCXNwYXJlMgkJCQkJCQlOVUxMLAorCQkJc3BhcmUxCQkJCQkJCU5VTEwKKwkJfQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBGaXJzdCBzZWdtZW50CistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0ZpcnN0U2VnbWVudCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cworCQlzaWItVHlwZQkJCQkJCVNJQi1UeXBlLAorCQlzZWctQ291bnQJCQkJCQlTZWdDb3VudCwKKwkJc2liLURhdGEtZml4ZWQJCQkJCVNJQi1EYXRhLWZpeGVkCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEZpcnN0IHNlZ21lbnQgKHNob3J0KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitGaXJzdFNlZ21lbnRTaG9ydCA6Oj0JCQkJU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCisJCXNlZy1Db3VudAkJCQkJCVNlZ0NvdW50LAorCQlzaWItRGF0YS12YXJpYWJsZQkJCQlTSUItRGF0YS12YXJpYWJsZQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBTdWJzZXF1ZW50IHNlZ21lbnQKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU3Vic2VxdWVudFNlZ21lbnQgOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cworCQlzaWItVHlwZQkJCQkJCVNJQi1UeXBlLAorCQlzZWdtZW50SW5kZXgJCQkJCVNlZ21lbnRJbmRleCwKKwkJc2liLURhdGEtZml4ZWQJCQkJCVNJQi1EYXRhLWZpeGVkCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIExhc3Qgc2VnbWVudAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitMYXN0U2VnbWVudCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKKwkJc2VnbWVudEluZGV4CQkJCQlTZWdtZW50SW5kZXgsCisJCS0tIEZvciBzaWItRGF0YS1maXhlZCwgaW4gY2FzZSB0aGUgU0lCIGRhdGEgaXMgbGVzcyB0aGFuIDIyMiBiaXRzLCBwYWRkaW5nCisJCS0tIHNoYWxsIGJlIHVzZWQuIFRoZSBzYW1lIHBhZGRpbmcgYml0cyBzaGFsbCBiZSB1c2VkIGFzIGRlZmluZWQgaW4gY2xhdXNlIDEyLjEKKwkJc2liLURhdGEtZml4ZWQJCQkJCVNJQi1EYXRhLWZpeGVkCit9CisKK0xhc3RTZWdtZW50U2hvcnQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCisJCXNlZ21lbnRJbmRleAkJCQkJU2VnbWVudEluZGV4LAorCQlzaWItRGF0YS12YXJpYWJsZQkJCQlTSUItRGF0YS12YXJpYWJsZQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBDb21wbGV0ZSBTSUIKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ29tcGxldGVTSUItTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNJQnBlck1zZykpIE9GCisJCQkJCQkJCQkJQ29tcGxldGVTSUJzaG9ydAorCitDb21wbGV0ZVNJQiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKKwkJLS0gRm9yIHNpYi1EYXRhLWZpeGVkLCBpbiBjYXNlIHRoZSBTSUIgZGF0YSBpcyBsZXNzIHRoYW4gMjI2IGJpdHMsIHBhZGRpbmcKKwkJLS0gc2hhbGwgYmUgdXNlZC4gVGhlIHNhbWUgcGFkZGluZyBiaXRzIHNoYWxsIGJlIHVzZWQgYXMgZGVmaW5lZCBpbiBjbGF1c2UgMTIuMQorCQlzaWItRGF0YS1maXhlZAkJCQkJQklUIFNUUklORyAoU0laRSAoMjI2KSkKK30KKworQ29tcGxldGVTSUJzaG9ydCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKKwkJc2liLURhdGEtdmFyaWFibGUJCQkJU0lCLURhdGEtdmFyaWFibGUKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU1lTVEVNIElORk9STUFUSU9OIENIQU5HRSBJTkRJQ0FUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1N5c3RlbUluZm9ybWF0aW9uQ2hhbmdlSW5kaWNhdGlvbiA6Oj0gCVNFUVVFTkNFIHsKKwktLSBPdGhlciBJRXMKKwkJYmNjaC1Nb2RpZmljYXRpb25JbmZvCQkJCUJDQ0gtTW9kaWZpY2F0aW9uSW5mbywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXN5c3RlbUluZm9ybWF0aW9uQ2hhbmdlSW5kaWNhdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisgCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBUUkFOU1BPUlQgQ0hBTk5FTCBSRUNPTkZJR1VSQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbiA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzCisJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMy1JRXMsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dAorCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXYzYTBleHQsCisJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NGIwZXh0CQorCQkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dC1JRXMsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAkKKwkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQJCisJCQkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNAorCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0CQorCQkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQorCQkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUKKwkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNS1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQorCQkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNgorCQkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI2LUlFcywKKwkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC03CisJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI2LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI3CisJCQkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctSUVzLAorCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC04CisJCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfSwKKwkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQJCQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJCU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAorfQorCitUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWRsLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNAkJCU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjUJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1CQkJT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgRXF1aXBtZW50IElFcworCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKKwkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQorCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCQkJCQlPUFRJT05BTCwKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCisJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwkJZGhzLXN5bmMJCQkJCQlESFMtU3luYwkJCQkJCQlPUFRJT05BTCwKKwkJdGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjcJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFRSQU5TUE9SVCBDSEFOTkVMIFJFQ09ORklHVVJBVElPTiBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAorCQktLSBUQUJVTEFSOiBVTC1UaW1pbmdBZHZhbmNlIGlzIGFwcGxpY2FibGUgZm9yIFRERCBtb2RlIG9ubHkuCisJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQljb3VudC1DLUFjdGl2YXRpb25UaW1lCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15CQkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQKKwkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWV4dC11bC1UaW1pbmdBZHZhbmNlCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVFJBTlNQT1JUIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVFJBTlNQT1JUIEZPUk1BVCBDT01CSU5BVElPTiBDT05UUk9MIGluIEFNIG9yIFVNIFJMQyBtb2RlCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbCA6Oj0gU0VRVUVOQ0UgeworCQktLSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyIGlzIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQkJTlVMTCwKKwkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5CU9QVElPTkFMCisJCQl9CQorCQl9LAorCQlkcGNoLVRGQ1MtSW5VcGxpbmsJCQkJCVRGQy1TdWJzZXQsCisJCWFjdGl2YXRpb25UaW1lRm9yVEZDU3Vic2V0CQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJdGZjLUNvbnRyb2xEdXJhdGlvbgkJCQkJVEZDLUNvbnRyb2xEdXJhdGlvbgkJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2wtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVFJBTlNQT1JUIEZPUk1BVCBDT01CSU5BVElPTiBDT05UUk9MIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVFIENBUEFCSUxJVFkgRU5RVUlSWQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVRUNhcGFiaWxpdHlFbnF1aXJ5IDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXVlQ2FwYWJpbGl0eUVucXVpcnktcjMJCQlVRUNhcGFiaWxpdHlFbnF1aXJ5LXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdWVDYXBhYmlsaXR5RW5xdWlyeS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCisJCQkJdWVDYXBhYmlsaXR5RW5xdWlyeS12NGIwZXh0CQlVRUNhcGFiaWxpdHlFbnF1aXJ5LXY0YjBleHQtSUVzLAorCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJdWVDYXBhYmlsaXR5RW5xdWlyeS12NTkwZXh0CQlVRUNhcGFiaWxpdHlFbnF1aXJ5LXY1OTBleHQtSUVzLAorCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQl1ZUNhcGFiaWxpdHlFbnF1aXJ5LXY3eHlleHQJCVVFQ2FwYWJpbGl0eUVucXVpcnktdjd4eWV4dC1JRXMsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK1VFQ2FwYWJpbGl0eUVucXVpcnktcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50Cit9CisKK1VFQ2FwYWJpbGl0eUVucXVpcnktdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0LWV4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0Cit9CisKK1VFQ2FwYWJpbGl0eUVucXVpcnktdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJc3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEJCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxLXY1OTBleHQKK30KKworVUVDYXBhYmlsaXR5RW5xdWlyeS12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0CQlPUFRJT05BTCwKKwkJdjM3ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzNzBleHQJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM3MGV4dCwKKwkJCXYzODBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM4MGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM4MGV4dC1JRXMsCisJCQkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dC1JRXMsCisJCQkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCisJCQkJCQkJCQkoQ09OVEFJTklORyBVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcykJT1BUSU9OQUwsCisJCQkJCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KKwkJCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjRiMGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjRiMGV4dCwKKwkJCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NTkwZXh0CQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NTkwZXh0LAorCQkJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjVjMGV4dAorCQkJCQkJCQkJCQkJCQkJCQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NWMwZXh0LAorCQkJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0CisJCQkJCQkJCQkJCQkJCQkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjd4eWV4dAorCQkJCQkJCQkJCQkJCQkJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY3eHlleHQtSUVzLAorCQkJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQkJT1BUSU9OQUwKKwkJCQl9CQlPUFRJT05BTAorCQkJfQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjM3MGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQJCU9QVElPTkFMCit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzODBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAkJT1BUSU9OQUwsCisJCWRsLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAkJCURMLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12M2EwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJCU9QVElPTkFMCit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXIzLWFkZC1leHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2NTBleHQJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2NTBleHQtSUVzCQlPUFRJT05BTCwKKwkJdjY4ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2ODBleHQJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2ODBleHQtSUVzLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NGIwZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJT1BUSU9OQUwKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjU5MGV4dAlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAlPUFRJT05BTAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NWMwZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJT1BUSU9OQUwKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY1MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2NTBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0Cit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2ODBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjgwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY4MGV4dAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZUNhcGFiaWxpdHlDb250YWluZXIJCQkJQklUIFNUUklORworCQkJCQkJCQkJCQkJKENPTlRBSU5JTkcgVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMpCU9QVElPTkFMCit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIENPTkZJUk0KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb25Db25maXJtIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybS1yMworCQkJCQkJCQkJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybS1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllcgorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVUExJTksgRElSRUNUIFRSQU5TRkVSCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VwbGlua0RpcmVjdFRyYW5zZmVyIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJbmFzLU1lc3NhZ2UJCQkJCQlOQVMtTWVzc2FnZSwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdXBsaW5rRGlyZWN0VHJhbnNmZXItcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCXVwbGlua0RpcmVjdFRyYW5zZmVyLXY2OTBleHQJCVVwbGlua0RpcmVjdFRyYW5zZmVyLXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitVcGxpbmtEaXJlY3RUcmFuc2Zlci12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCW1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVQTElOSyBQSFlTSUNBTCBDSEFOTkVMIENPTlRST0wKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbCA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXIzCVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQl1cGxpbmtQeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjRiMGV4dAkJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NGIwZXh0LUlFcywKKwkJCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tcmVsZWFzZSA0IGluZm9ybWF0aW9uCisJCQkJbm9uY3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI0CVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjY5MGV4dAlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQlDSE9JQ0UgeworCQkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjUJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNS1JRXMsCisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CisJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjY5MGV4dAlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQtSUVzLAorCQkJCQkJdjZhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0V7CisJCQkJCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NmEwZXh0CisJCQkJCQkJCQkJCQkJCQkJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NmEwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjcJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNy1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAorCQkJCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1VwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWNjVHJDSC1Qb3dlckNvbnRyb2xJbmZvCQkJQ0NUckNILVBvd2VyQ29udHJvbEluZm8JCQkJT1BUSU9OQUwsCisJCXRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sCQkJCU9QVElPTkFMLAorCQlhbHBoYQkJCQkJCQlBbHBoYQkJCQkJCQkJT1BUSU9OQUwsCisJCXNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQlTcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJCU9QVElPTkFMLAorCQlwcmFjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQkJCU9QVElPTkFMLAorCQlwdXNjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQkJCU9QVElPTkFMCit9CisKK1VwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBJbiBjYXNlIG9mIFRERCwgb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQgaXMgaW5jbHVkZWQgaW5zdGVhZCBvZiBJRQorCS0tIHVwLUlQREwtUGFyYW1ldGVycyBpbiB1cC1PVERPQS1Bc3Npc3RhbmNlRGF0YQorCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMCit9CisKK1VwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJY2NUckNILVBvd2VyQ29udHJvbEluZm8JCQlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNAkJCU9QVElPTkFMLAorCQlzcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJU3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCQlPUFRJT05BTCwKKwkJdGRkT3B0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCisJCQkJYWxwaGEJCQkJCQkJQWxwaGEJCQkJCQlPUFRJT05BTCwKKwkJCQlwcmFjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKKwkJCQlwdXNjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKKwkJCQlvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCisJCQl9CisJCX0KK30KKworVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQljY1RyQ0gtUG93ZXJDb250cm9sSW5mbwkJCUNDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI1CQkJT1BUSU9OQUwsCisJCXNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQlTcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJCU9QVElPTkFMLAorCQl0ZGRPcHRpb24JCQkJCQlDSE9JQ0UgeworCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl0aW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNAlPUFRJT05BTCwKKwkJCQlhbHBoYQkJCQkJCQlBbHBoYQkJCQkJCU9QVElPTkFMLAorCQkJCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAorCQkJCXB1c2NoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAorCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAorCQkJCWhzLVNJQ0gtUG93ZXJDb250cm9sCQkJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVEREMzg0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1bC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCVVMLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQJT1BUSU9OQUwKKwkJCX0KKwkJfQorfQorCitVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwKK30KKworVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NmEwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIENoYW5uZWwgSUVzCisJCWRlc2lyZWQtSFMtU0lDSC1Qb3dlckxldmVsCQlJTlRFR0VSICgtMTIwLi4tNTgpCQkJCQlPUFRJT05BTCwKKwkJdHBjLVN0ZXAtU2l6ZQkJCQkJRU5VTUVSQVRFRCB7IHMxLCBzMiwgczMgLCBzcGFyZTEgfQlPUFRJT05BTAorfQorCitVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWNjVHJDSC1Qb3dlckNvbnRyb2xJbmZvCQkJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjcJCQlPUFRJT05BTCwKKwkJc3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCVNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQkJT1BUSU9OQUwsCisJCXRkZE9wdGlvbgkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CU9QVElPTkFMLAorCQkJCWFscGhhCQkJCQkJCUFscGhhCQkJCQkJT1BUSU9OQUwsCisJCQkJcHJhY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCisJCQkJcHVzY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCisJCQkJb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQJT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQJT1BUSU9OQUwsCisJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wJCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQzODQJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQ3NjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3CU9QVElPTkFMLAorCQkJCWFscGhhCQkJCQkJCUFscGhhCQkJCQkJT1BUSU9OQUwsCisJCQkJcHJhY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCisJCQkJcHVzY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCisJCQkJb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQJT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQJT1BUSU9OQUwsCisJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wJCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQ3NjgJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXVsLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKKwkJCQlkZXNpcmVkLUhTLVNJQ0gtUG93ZXJMZXZlbAkJSU5URUdFUiAoLTEyMC4uLTU4KQkJCQlPUFRJT05BTCwKKwkJCQl0cGMtU3RlcC1TaXplCQkJCQlFTlVNRVJBVEVEIHsgczEsIHMyLCBzMyAsIHNwYXJlMSB9CU9QVElPTkFMCisJCQl9CisJCX0KK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVVJBIFVQREFURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVUkFVcGRhdGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdS1STlRJCQkJCQkJCVUtUk5USSwKKwkJdXJhLVVwZGF0ZUNhdXNlCQkJCQlVUkEtVXBkYXRlQ2F1c2UsCisJCXByb3RvY29sRXJyb3JJbmRpY2F0b3IJCQlQcm90b2NvbEVycm9ySW5kaWNhdG9yV2l0aE1vcmVJbmZvLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdXJhVXBkYXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVVJBIFVQREFURSBDT05GSVJNCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VSQVVwZGF0ZUNvbmZpcm0gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdXJhVXBkYXRlQ29uZmlybS1yMwkJCQlVUkFVcGRhdGVDb25maXJtLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXVyYVVwZGF0ZUNvbmZpcm0tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJdXJhVXBkYXRlQ29uZmlybS12NjkwZXh0CQkJVVJBVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdXJhVXBkYXRlQ29uZmlybS1yNQkJCQlVUkFVcGRhdGVDb25maXJtLXI1LUlFcywKKwkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXVyYVVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJCVVSQVVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJfQorCX0KK30KKworVVJBVXBkYXRlQ29uZmlybS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwKK30KKworVVJBVXBkYXRlQ29uZmlybS1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMCit9CisKK1VSQVVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCQlQTE1OLUlkZW50aXR5CQkJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVUkEgVVBEQVRFIENPTkZJUk0gZm9yIENDQ0gKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVVJBVXBkYXRlQ29uZmlybS1DQ0NIIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXVyYVVwZGF0ZUNvbmZpcm0tQ0NDSC1yMwkJVVJBVXBkYXRlQ29uZmlybS1DQ0NILXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXVyYVVwZGF0ZUNvbmZpcm0tQ0NDSC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQl1cmFVcGRhdGVDb25maXJtLXY2OTBleHQJCQlVUkFVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworVVJBVXBkYXRlQ29uZmlybS1DQ0NILXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCS0tIFRoZSByZXN0IG9mIHRoZSBtZXNzYWdlIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIHNlbnQgb24gRENDSC4KKwkJdXJhVXBkYXRlQ29uZmlybQkJCQlVUkFVcGRhdGVDb25maXJtLXIzLUlFcworfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVVFJBTiBNT0JJTElUWSBJTkZPUk1BVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXIzCQlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24tcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dAlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dC1JRXMsCisJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQJVXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JCU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tcjUJCVVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi1yNS1JRXMsCisJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dAlVdHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJfQorCX0KK30KKworVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLCAKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXVlLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCQlPUFRJT05BTCwKKwktLSBDTiBpbmZvcm1hdGlvbiBlbGVtZW50cworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvRnVsbAkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJdWUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0CQlVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQKK30KKworVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJdWUtQ29ublRpbWVyc0FuZENvbnN0YW50cwkJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy1yNQkJT1BUSU9OQUwsCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mb0Z1bGwJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTAorfQorCitVdHJhbk1vYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVVRSQU4gTU9CSUxJVFkgSU5GT1JNQVRJT04gQ09ORklSTQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb25Db25maXJtIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAorCQl1bC1JbnRlZ1Byb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQljb3VudC1DLUFjdGl2YXRpb25UaW1lCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15CQkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uQ29uZmlybS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVUUkFOIE1PQklMSVRZIElORk9STUFUSU9OIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVFIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1CTVMgQUNDRVNTIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVNBY2Nlc3NJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCS0tIEFjY2VzcyBJbmZvcm1hdGlvbiBJRXMKKwkJbWJtcy1TZXJ2aWNlQWNjZXNzSW5mb0xpc3QJCU1CTVMtU2VydmljZUFjY2Vzc0luZm9MaXN0LXI2LAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIENPTU1PTiBQVE0gUkIgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU0NvbW1vblBUTVJCSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBDb21tb24gUFRNIFJCIEluZm9ybWF0aW9uIElFcworCQltYm1zLUNvbW1vblJCSW5mb3JtYXRpb25MaXN0CU1CTVMtQ29tbW9uUkJJbmZvcm1hdGlvbkxpc3QtcjYsCisJCW1ibXMtVHJhbnNwQ2hJbmZvRm9yRWFjaFRyQ2gJTUJNUy1UcmFuc3BDaEluZm9Gb3JFYWNoVHJDaC1yNiwKKwkJbWJtcy1UcmFuc3BDaEluZm9Gb3JFYWNoQ0NUckNoCU1CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaENDVHJDaC1yNglPUFRJT05BTCwKKwkJbWJtcy1QaHlDaEluZm9ybWF0aW9uTGlzdAkJTUJNUy1QaHlDaEluZm9ybWF0aW9uTGlzdC1yNiwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTUJNUyBDVVJSRU5UIENFTEwgUFRNIFJCIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVNDdXJyZW50Q2VsbFBUTVJCSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBDdXJyZW50IENlbGwgUFRNIFJCIEluZm9ybWF0aW9uIElFcworCQltYm1zLUN1cnJlbnRDZWxsLVNDQ1BDSExpc3QJCU1CTVMtQ3VycmVudENlbGwtU0NDUENITGlzdC1yNgkJT1BUSU9OQUwsCisJCW1ibXMtU0lCVHlwZTUtU0NDUENITGlzdAkJTUJNUy1TSUJUeXBlNS1TQ0NQQ0hMaXN0LXI2CQkJT1BUSU9OQUwsCisJLS0gTm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1CTVMgR0VORVJBTCBJTkZPUk1BVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQk1TR2VuZXJhbEluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gTUJNUyBHZW5lcmFsIEluZm9ybWF0aW9uIElFcworCQltYm1zLVByZWZlcnJlZEZyZXF1ZW5jeUluZm8JCU1CTVMtUHJlZmVycmVkRnJlcXVlbmN5TGlzdC1yNgkJT1BUSU9OQUwsCisJCW1ibXMtVGltZXJzQW5kQ291bnRlcnMJCQlNQk1TLVRpbWVyc0FuZENvdW50ZXJzLXI2LAorCQltaWNoQ29uZmlndXJhdGlvbkluZm8JCQlNQk1TLU1JQ0hDb25maWd1cmF0aW9uSW5mby1yNiwKKwkJY2VsbEdyb3VwSWRlbnRpdHkJCQkJTUJNUy1DZWxsR3JvdXBJZGVudGl0eS1yNiwKKwkJbXNjaERlZmF1bHRDb25maWd1cmF0aW9uSW5mbwlNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYJCU9QVElPTkFMLAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCW1ibXNHZW5lckFsSW5mb3JtYXRpb24tdjd4eWV4dAlNQk1TR2VuZXJhbEluZm9ybWF0aW9uLXY3eHlleHQtSUVzLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0KK30KKworTUJNU0dlbmVyYWxJbmZvcm1hdGlvbi12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQltYm1zTUlDSENvbmZpZ3VyYXRpb24tdjd4eWV4dAlNQk1TLU1JQ0hDb25maWd1cmF0aW9uSW5mby1yNwkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTUJNUyBNT0RJRklDQVRJT04gUkVRVUVTVAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQk1TTW9kaWZpY2F0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgeworCS0tIE1CTVMgTW9kaWZpY2F0aW9uIFJlcXVlc3QgSUVzCisJCW1ibXMtUHJlZmVycmVkRnJlcVJlcXVlc3QJCU1CTVMtU2VydmljZUlkZW50aXR5LXI2CQkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwsCisJLS0gTm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1CTVMgTU9ESUZJRUQgU0VSVklDRVMgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCS0tIE1CTVMgTW9kaWZpZWQgU2VydmljZXMgSW5mb3JtYXRpb24gSUVzCisJCW1vZGlmZWRTZXJ2aWNlTGlzdAkJCQlNQk1TLU1vZGlmZWRTZXJ2aWNlTGlzdC1yNgkJCU9QVElPTkFMLAorCQltYm1zLVJlYWNxdWlyZU1DQ0gJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJCW1ibXMtRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwJCQkJT1BUSU9OQUwsCisJCWVuZE9mTW9kaWZpZWRNQ0NISW5mb3JtYXRpb24JSU5URUdFUiAoMS4uMTYpCQkJCQkJT1BUSU9OQUwsCisJCW1ibXNOdW1iZXJPZk5laWdoYm91ckNlbGxzCQlNQk1TLU51bWJlck9mTmVpZ2hib3VyQ2VsbHMtcjYsCisJCW1ibXMtQWxsVW5tb2RpZmllZFBUTVNlcnZpY2VzCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCQltYm1zLVBUTUFjdGl2YXRpb25UaW1lCQkJTUJNUy1QVE1BY3RpdmF0aW9uVGltZS1yNgkJCU9QVElPTkFMLAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIE5FSUdIQk9VUklORyBDRUxMIFBUTSBSQiBJTkZPUk1BVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQk1TTmVpZ2hib3VyaW5nQ2VsbFBUTVJCSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBNQk1TIE5laWdoYm91cmluZyBDZWxsIFBUTSBSQiBJbmZvcm1hdGlvbiBJRXMKKwkJbmVpZ2hib3VyaW5nQ2VsbElkZW50aXR5CQlJbnRyYUZyZXFDZWxsSUQsCisJCW5laWdoYm91cmluZ0NlbGxTQ0NQQ0hMaXN0CQlNQk1TLU5laWdoYm91cmluZ0NlbGxTQ0NQQ0hMaXN0LXI2LAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIFNDSEVEVUxJTkcgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU1NjaGVkdWxpbmdJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCS0tIE1CTVMgU2NoZWR1bGluZyBJbmZvcm1hdGlvbiBJRXMKKwkJc2VydmljZVNjaGVkdWxpbmdJbmZvTGlzdAkJTUJNUy1TZXJ2aWNlU2NoZWR1bGluZ0luZm9MaXN0LXI2LAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIFVOTU9ESUZJRUQgU0VSVklDRVMgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU1VubW9kaWZpZWRTZXJ2aWNlc0luZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gTUJNUyBVbm1vZGlmaWVkIFNlcnZpY2VzIEluZm9ybWF0aW9uIElFcworCQl1bm1vZGlmaWVkU2VydmljZUxpc3QJCQlNQk1TLVVubW9kaWZpZWRTZXJ2aWNlTGlzdC1yNgkJT1BUSU9OQUwsCisJLS0gTm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKK0VORAorCitJbmZvcm1hdGlvbkVsZW1lbnRzIERFRklOSVRJT05TIEFVVE9NQVRJQyBUQUdTIDo6PQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSAgICAgQ09SRSBORVRXT1JLIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjEpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0JFR0lOCisKK0lNUE9SVFMKKworCWhpUERTQ0hpZGVudGl0aWVzLAorCWhpUFVTQ0hpZGVudGl0aWVzLAorCWhpUk0sCisJbWF4QUMsCisJbWF4QWRkaXRpb25hbE1lYXMsCisJbWF4QVNDLAorCW1heEFTQ21hcCwKKwltYXhBU0NwZXJzaXN0LAorCW1heENDVHJDSCwKKwltYXhDZWxsTWVhcywKKwltYXhDZWxsTWVhcy0xLAorCW1heENOZG9tYWlucywKKwltYXhDUENIc2V0cywKKwltYXhEUENILURMY2hhbiwKKwltYXhEUERDSC1VTCwKKwltYXhEUkFDY2xhc3NlcywKKwltYXhFLURDSE1BQ2RGbG93LAorCW1heEUtRENITUFDZEZsb3ctMSwKKwltYXhGQUNIUENILAorCW1heEZyZXEsCisJbWF4RnJlcUJhbmRzRkRELAorCW1heEZyZXFCYW5kc0ZERC1leHQsCisJbWF4RnJlcUJhbmRzVERELAorCW1heEZyZXFCYW5kc0dTTSwKKwltYXhHRVJBTi1TSSwKKwltYXhIUHJvY2Vzc2VzLAorCW1heEhTRFNDSFRCSW5kZXgsCisJbWF4SFNEU0NIVEJJbmRleC10ZGQzODQsCisJbWF4SFNTQ0NIcywKKwltYXhJbnRlclN5c01lc3NhZ2VzLAorCW1heExvQ0hwZXJSTEMsCisJbWF4TUFDLWQtUERVc2l6ZXMsCisJbWF4TUJNUy1Db21tb25DQ1RyQ2gsCisJbWF4TUJNUy1Db21tb25QaHlDaCwKKwltYXhNQk1TLUNvbW1vblJCLAorCW1heE1CTVMtQ29tbW9uVHJDaCwKKwltYXhNQk1TLUZyZXEsCisJbWF4TUJNUy1MMUNQLAorCW1heE1CTVNzZXJ2Q291bnQsCisJbWF4TUJNU3NlcnZNb2RpZiwKKwltYXhNQk1Tc2VydlNjaGVkLAorCW1heE1CTVNzZXJ2VW5tb2RpZiwKKwltYXhNQk1TVHJhbnNtaXMsCisJbWF4TWVhc0V2ZW50LAorCW1heE1lYXNJbnRlcnZhbHMsCisJbWF4TWVhc1BhckV2ZW50LAorCW1heE51bUNETUEyMDAwRnJlcXMsCisJbWF4TnVtRkRERnJlcXMsCisJbWF4TnVtR1NNRnJlcVJhbmdlcywKKwltYXhHU01UYXJnZXRDZWxscywKKwltYXhOdW1URERGcmVxcywKKwltYXhPdGhlclJBVCwKKwltYXhPdGhlclJBVC0xNiwKKwltYXhQYWdlMSwKKwltYXhQQ1BDSC1BUHNpZywKKwltYXhQQ1BDSC1BUHN1YkNoLAorCW1heFBDUENILUNEc2lnLAorCW1heFBDUENILUNEc3ViQ2gsCisJbWF4UENQQ0gtU0YsCisJbWF4UENQQ0hzLAorCW1heFBEQ1BBbGdvVHlwZSwKKwltYXhQRFNDSCwKKwltYXhQRFNDSC1URkNJZ3JvdXBzLAorCW1heFBSQUNILAorCW1heFBSQUNILUZQQUNILAorCW1heFByZWRlZkNvbmZpZywKKwltYXhQVVNDSCwKKwltYXhRdWV1ZUlEcywKKwltYXhSQUJzZXR1cCwKKwltYXhSQVQsCisJbWF4UkIsCisJbWF4UkJhbGxSQUJzLAorCW1heFJCcGVyVHJDaCwKKwltYXhSQk11eE9wdGlvbnMsCisJbWF4UkJwZXJSQUIsCisJbWF4UmVwb3J0ZWRHU01DZWxscywKKwltYXhSTENQRFVzaXplUGVyTG9nQ2hhbiwKKwltYXhTUkJzZXR1cCwKKwltYXhSTCwKKwltYXhSTC0xLAorCW1heEVEQ0hSTCwKKwltYXhST0hDLVBhY2tldFNpemVzLXI0LAorCW1heFJPSEMtUHJvZmlsZS1yNCwKKwltYXhTQ0NQQ0gsCisJbWF4U2F0LAorCW1heFNJQiwKKwltYXhTSUItRkFDSCwKKwltYXhTeXN0ZW1DYXBhYmlsaXR5LAorCW1heFRGLAorCW1heFRGLUNQQ0gsCisJbWF4VEZDLAorCW1heFRGQ3N1YiwKKwltYXhURkNJLTItQ29tYnMsCisJbWF4VEdQUywKKwltYXhUckNILAorCW1heFRyQ0hwcmVjb25mLAorCW1heFRTLAorCW1heFRTLTEsCisJbWF4VFMtMiwKKwltYXhUUy1MQ1IsCisJbWF4VFMtTENSLTEsCisJbWF4VVJBLAorCW1heFVSTlRJLUdyb3VwCitGUk9NIENvbnN0YW50LWRlZmluaXRpb25zOworCitBbnNpLTQxLUlETk5TIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNCkpCisKK0NOLURvbWFpbklkZW50aXR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljcy1kb21haW4sCisJCQkJCQkJCQkJcHMtZG9tYWluIH0KKworQ04tRG9tYWluSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwljbi1Eb21haW5TcGVjaWZpY05BUy1JbmZvCQkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUAorfQorCitDTi1Eb21haW5JbmZvcm1hdGlvbkZ1bGwgOjo9CQlTRVFVRU5DRSB7CisJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCWNuLURvbWFpblNwZWNpZmljTkFTLUluZm8JCQlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAorCWNuLURSWC1DeWNsZUxlbmd0aENvZWZmCQkJCUNOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50Cit9CisKK0NOLURvbWFpbkluZm9ybWF0aW9uTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCUNOLURvbWFpbkluZm9ybWF0aW9uCisKK0NOLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCUNOLURvbWFpbkluZm9ybWF0aW9uRnVsbAorCitDTi1Eb21haW5TeXNJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCWNuLVR5cGUJCQkJCQkJCUNIT0lDRSB7CisJCWdzbS1NQVAJCQkJCQkJCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAsCisJCWFuc2ktNDEJCQkJCQkJCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkFOU0ktNDEKKwl9LAorCWNuLURSWC1DeWNsZUxlbmd0aENvZWZmCQkJCUNOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50Cit9CisKK0NOLURvbWFpblN5c0luZm9MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCUNOLURvbWFpblN5c0luZm8KKworQ04tSW5mb3JtYXRpb25JbmZvIDo6PSAJCQkJU0VRVUVOQ0UgeworCXBsbW4tSWRlbnRpdHkJCQkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUAkJT1BUSU9OQUwsCisJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwKK30KKworQ04tSW5mb3JtYXRpb25JbmZvLXI2IDo6PSAJCQlTRVFVRU5DRSB7CisJcGxtbi1JZGVudGl0eQkJCQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwljbi1Db21tb25HU00tTUFQLU5BUy1TeXNJbmZvCQlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQCQlPUFRJT05BTCwKKwljbi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMCit9CisKK0NOLUluZm9ybWF0aW9uSW5mb0Z1bGwgOjo9IAkJCVNFUVVFTkNFIHsKKwlwbG1uLUlkZW50aXR5CQkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAJCU9QVElPTkFMLAorCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwJCUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwJCU9QVElPTkFMCit9CisKK0RpZ2l0IDo6PQkJCQkJCQlJTlRFR0VSICgwLi45KQorCitHc20tbWFwLUlETk5TIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJcm91dGluZ2Jhc2lzCQkJCQkJCQkJQ0hPSUNFIHsKKwkJbG9jYWxQVE1TSQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCisJCX0sCisJCXRNU0lvZnNhbWVQTE1OCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgorCQl9LAorCQl0TVNJb2ZkaWZmZXJlbnRQTE1OCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCisJCX0sCisJCWlNU0lyZXNwb25zZXRvcGFnaW5nCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKKwkJfSwKKwkJaU1TSWNhdXNlVUVpbml0aWF0ZWRFdmVudAkJCQkJCVNFUVVFTkNFIHsKKwkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKKwkJfSwKKwkJaU1FSQkJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgorCQl9LAorCQlzcGFyZTIJCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKKwkJfSwKKwkJc3BhcmUxCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCisJCX0KKwl9LAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJZHVtbXkJCQkJCQkJCQlCT09MRUFOCit9CisKK0lNRUkgOjo9CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxNSkpIE9GCisJCQkJCQkJCQkJSU1FSS1EaWdpdAorCitJTUVJLURpZ2l0IDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE1KQorCitJTVNJLUdTTS1NQVAgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoNi4uMjEpKSBPRgorCQkJCQkJCQkJCURpZ2l0CisKK0ludHJhRG9tYWluTmFzTm9kZVNlbGVjdG9yIDo6PQkJCQkJU0VRVUVOQ0UgeworCXZlcnNpb24JCQkJCQkJCQkJCUNIT0lDRSB7CisJCXJlbGVhc2U5OQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljbi1UeXBlCQkJCQkJCQkJCQlDSE9JQ0UgeworCQkJCWdzbS1NYXAtSUROTlMJCQkJCQkJCQlHc20tbWFwLUlETk5TLAorCQkJCWFuc2ktNDEtSUROTlMJCQkJCQkJCQlBbnNpLTQxLUlETk5TCisJCQl9CisJCX0sCisJCWxhdGVyCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlmdXR1cmVjb2RpbmcJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNSkpCisJCX0KKwl9Cit9CisKK0xBSSA6Oj0JCQkJCQkJCVNFUVVFTkNFIHsKKwlwbG1uLUlkZW50aXR5CQkJCQkJUExNTi1JZGVudGl0eSwKKwlsYWMJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCit9CisKK01DQyA6Oj0JCQkJCQkJCVNFUVVFTkNFIChTSVpFICgzKSkgT0YKKwkJCQkJCQkJCQlEaWdpdAorCitNTkMgOjo9CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMi4uMykpIE9GCisJCQkJCQkJCQkJRGlnaXQKKworTXVsdGlwbGVQTE1OLUxpc3QtcjYgOjo9CQkJU0VRVUVOQ0UgeworCW1pYlBMTU4tSWRlbnRpdHkJCQkJCUJPT0xFQU4sCisJbXVsdGlwbGVQTE1OcwkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi41KSkgT0YKKwkJCQkJCQkJCQkJUExNTi1JZGVudGl0eVdpdGhPcHRpb25hbE1DQy1yNgorfQorCitOQVMtTWVzc2FnZSA6Oj0JCQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjQwOTUpKQorCitOQVMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvciA6Oj0JQklUIFNUUklORyhTSVpFKDQpKQorCitOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQIDo6PSAJT0NURVQgU1RSSU5HIChTSVpFICgxLi44KSkKKworUC1UTVNJLUdTTS1NQVAgOjo9CQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpCisKK1BhZ2luZ1JlY29yZFR5cGVJRCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJaW1zaS1HU00tTUFQLAorCQkJCQkJCQkJCXRtc2ktR1NNLU1BUC1QLVRNU0ksCisJCQkJCQkJCQkJaW1zaS1EUy00MSwKKwkJCQkJCQkJCQl0bXNpLURTLTQxIH0KKworUExNTi1JZGVudGl0eSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwltY2MJCQkJCQkJCQlNQ0MsCisJbW5jCQkJCQkJCQkJTU5DCit9CisKK1BMTU4tSWRlbnRpdHlXaXRoT3B0aW9uYWxNQ0MtcjYgOjo9CVNFUVVFTkNFIHsKKwltY2MJCQkJCQkJCQlNQ0MJCQkJCQlPUFRJT05BTCwKKwltbmMJCQkJCQkJCQlNTkMKK30KKworUExNTi1UeXBlIDo6PQkJCQkJCUNIT0lDRSB7CisJZ3NtLU1BUAkJCQkJCQkJU0VRVUVOQ0UgeworCQlwbG1uLUlkZW50aXR5CQkJCQkJUExNTi1JZGVudGl0eQorCX0sCisJYW5zaS00MQkJCQkJCQlTRVFVRU5DRSB7CisJCXAtUkVWCQkJCQkJCVAtUkVWLAorCQltaW4tUC1SRVYJCQkJCQlNaW4tUC1SRVYsCisJCXNpZAkJCQkJCQkJU0lELAorCQluaWQJCQkJCQkJCU5JRAorCX0sCisJZ3NtLU1BUC1hbmQtQU5TSS00MQkJCQlTRVFVRU5DRSB7CisJCXBsbW4tSWRlbnRpdHkJCQkJCVBMTU4tSWRlbnRpdHksCisJCXAtUkVWCQkJCQkJCVAtUkVWLAorCQltaW4tUC1SRVYJCQkJCQlNaW4tUC1SRVYsCisJCXNpZAkJCQkJCQkJU0lELAorCQluaWQJCQkJCQkJCU5JRAorCX0sCisJc3BhcmUJCQkJCQkJTlVMTAorfQorCitSQUItSWRlbnRpdHkgOjo9CQkJCQlDSE9JQ0UgeworCWdzbS1NQVAtUkFCLUlkZW50aXR5CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwlhbnNpLTQxLVJBQi1JZGVudGl0eQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkKK30KKworUkFJIDo6PQkJCQkJCQkJU0VRVUVOQ0UgeworCWxhaQkJCQkJCQkJCUxBSSwKKwlyYWMJCQkJCQkJCQlSb3V0aW5nQXJlYUNvZGUKK30KKworUm91dGluZ0FyZWFDb2RlIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCisKK1JvdXRpbmdQYXJhbWV0ZXIgOjo9CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEwKSkKKworVE1TSS1HU00tTUFQIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSAgICAgVVRSQU4gTU9CSUxJVFkgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuMikKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQWNjZXNzQ2xhc3NCYXJyZWQgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWJhcnJlZCwgbm90QmFycmVkIH0KKworQWNjZXNzQ2xhc3NCYXJyZWRMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFIChtYXhBQykpIE9GCisJCQkJCQkJCQkJQWNjZXNzQ2xhc3NCYXJyZWQKKworQWxsb3dlZEluZGljYXRvciA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYWxsb3dlZCwgbm90QWxsb3dlZCB9CisKK0NlbGxBY2Nlc3NSZXN0cmljdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJY2VsbEJhcnJlZAkJCQkJCQlDZWxsQmFycmVkLAorCWNlbGxSZXNlcnZlZEZvck9wZXJhdG9yVXNlCQkJUmVzZXJ2ZWRJbmRpY2F0b3IsCisJY2VsbFJlc2VydmF0aW9uRXh0ZW5zaW9uCQkJUmVzZXJ2ZWRJbmRpY2F0b3IsCisJLS0gTk9URTogSUUgYWNjZXNzQ2xhc3NCYXJyZWRMaXN0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaWYgdGhlIElFIENlbGxBY2Nlc3NSZXN0cmljdGlvbgorCS0tIGlzIGluY2x1ZGVkIGluIHRoZSBJRSBTeXNJbmZvVHlwZTQKKwlhY2Nlc3NDbGFzc0JhcnJlZExpc3QJCQkJQWNjZXNzQ2xhc3NCYXJyZWRMaXN0CQkJCU9QVElPTkFMCit9CisKK0NlbGxCYXJyZWQgOjo9CQkJCQkJQ0hPSUNFIHsKKwliYXJyZWQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJaW50cmFGcmVxQ2VsbFJlc2VsZWN0aW9uSW5kCQkJQWxsb3dlZEluZGljYXRvciwKKwkJdC1CYXJyZWQJCQkJCQkJVC1CYXJyZWQKKwl9LAorCW5vdEJhcnJlZAkJCQkJCQlOVUxMCit9CisKK0NlbGxJZGVudGl0eSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI4KSkKKworQ2VsbElkZW50aXR5LVBlclJMLUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YgQ2VsbElkZW50aXR5CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMy00IDo6PQlTRVFVRU5DRSB7CisJbWFwcGluZ0luZm8JCQkJCQkJTWFwcGluZ0luZm8JCQkJCQkJT1BUSU9OQUwsCisJY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlCQkJQ0hPSUNFIHsKKwkJY3BpY2gtRWMtTjAJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gRGVmYXVsdCB2YWx1ZSBmb3IgcS1IWVNULTItUyBpcyBxLUhZU1QtMS1TCisJCQlxLUhZU1QtMi1TCQkJCQkJCVEtSHlzdC1TCQkJCQlPUFRJT05BTAorCQkJLS0gRGVmYXVsdCB2YWx1ZSBmb3IgcS1IWVNULTItUyBpcyBxLUhZU1QtMS1TCisJCX0sCisJCWNwaWNoLVJTQ1AJCQkJCQkJTlVMTAorCX0sCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcy1JbnRyYXNlYXJjaAkJCQkJCVMtU2VhcmNoUXVhbAkJCQlPUFRJT05BTCwKKwkJCXMtSW50ZXJzZWFyY2gJCQkJCQlTLVNlYXJjaFF1YWwJCQkJT1BUSU9OQUwsCisJCQlzLVNlYXJjaEhDUwkJCQkJCQlTLVNlYXJjaFJYTEVWCQkJCU9QVElPTkFMLAorCQkJcmF0LUxpc3QJCQkJCQkJUkFULUZERC1JbmZvTGlzdAkJCU9QVElPTkFMLAorCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbiwKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzLUludHJhc2VhcmNoCQkJCQkJUy1TZWFyY2hSWExFVgkJCQlPUFRJT05BTCwKKwkJCXMtSW50ZXJzZWFyY2gJCQkJCQlTLVNlYXJjaFJYTEVWCQkJCU9QVElPTkFMLAorCQkJcy1TZWFyY2hIQ1MJCQkJCQkJUy1TZWFyY2hSWExFVgkJCQlPUFRJT05BTCwKKwkJCXJhdC1MaXN0CQkJCQkJCVJBVC1UREQtSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgorCQl9CisJfSwJCisJcS1IeXN0LWwtUwkJCQkJCQlRLUh5c3QtUywKKwl0LVJlc2VsZWN0aW9uLVMJCQkJCQlULVJlc2VsZWN0aW9uLVMsCisJaGNzLVNlcnZpbmdDZWxsSW5mb3JtYXRpb24JCQlIQ1MtU2VydmluZ0NlbGxJbmZvcm1hdGlvbgkJCU9QVElPTkFMLAorCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIKK30KKworRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbkZvclNoYXJlZE5ldHdvcmstdjY3MGV4dCA6Oj0gQ0hPSUNFIHsKKwkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0aWN0aW9uTGlzdAkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbkxpc3QtdjY3MGV4dCwKKwkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0aWN0aW9uUGFyYW1ldGVyc0ZvckFsbAkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQKK30KKworRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbkxpc3QtdjY3MGV4dCA6Oj0gU0VRVUVOQ0UgeworCQlkb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW1ldGVyc0Zvck9wZXJhdG9yMQorCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCisJCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbWV0ZXJzRm9yT3BlcmF0b3IyCisJCQkJCQkJCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW0tdjY3MGV4dAlPUFRJT05BTCwKKwkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjMKKwkJCQkJCQkJCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbS12NjcwZXh0CU9QVElPTkFMLAorCQlkb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW1ldGVyc0Zvck9wZXJhdG9yNAorCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCisJCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbWV0ZXJzRm9yT3BlcmF0b3I1CisJCQkJCQkJCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW0tdjY3MGV4dAlPUFRJT05BTAorfQorCitEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW0tdjY3MGV4dCA6Oj0gU0VRVUVOQ0UgewkJCisJCWNTRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbgkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbi12NjcwZXh0LAorCQlwU0RvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb24JCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb24tdjY3MGV4dAorfQorCitEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uLXY2NzBleHQgOjo9IENIT0lDRSB7CisJCW5vUmVzdHJpY3Rpb24JCU5VTEwsCisJCXJlc3RyaWN0aW9uCQkJU0VRVUVOQ0UgeworCQkJZG9tYWluU3BlY2ZpY0FjY2Vzc0NsYXNzQmFycmVkTGlzdAkJQWNjZXNzQ2xhc3NCYXJyZWRMaXN0CU9QVElPTkFMCisJCX0KK30KKworTWFwUGFyYW1ldGVyIDo6PQkJCQkJSU5URUdFUiAoMC4uOTkpCisKK01hcHBpbmcgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwlyYXQJCQkJCQkJCQlSQVQsCisJbWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdAkJTWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdAorfQorCitNYXBwaW5nLUxDUi1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwltYXBwaW5nRnVuY3Rpb25QYXJhbWV0ZXJMaXN0CQlNYXBwaW5nRnVuY3Rpb25QYXJhbWV0ZXJMaXN0Cit9CisKK01hcHBpbmdGdW5jdGlvblBhcmFtZXRlciA6Oj0JCVNFUVVFTkNFIHsKKwlmdW5jdGlvblR5cGUJCQkJCQlNYXBwaW5nRnVuY3Rpb25UeXBlLAorCW1hcFBhcmFtZXRlcjEJCQkJCQlNYXBQYXJhbWV0ZXIJCQkJCQlPUFRJT05BTCwKKwltYXBQYXJhbWV0ZXIyCQkJCQkJTWFwUGFyYW1ldGVyLAorCS0tIFRoZSBwcmVzZW5jZSBvZiB1cHBlckxpbWl0IGlzIGNvbmRpdGlvbmFsIG9uIHRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbgorCXVwcGVyTGltaXQJCQkJCQkJVXBwZXJMaW1pdAkJCQkJCQlPUFRJT05BTAorfQorCitNYXBwaW5nRnVuY3Rpb25QYXJhbWV0ZXJMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNJbnRlcnZhbHMpKSBPRgorCQkJCQkJCQkJCU1hcHBpbmdGdW5jdGlvblBhcmFtZXRlcgorCitNYXBwaW5nRnVuY3Rpb25UeXBlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlsaW5lYXIsCisJCQkJCQkJCQkJZnVuY3Rpb25UeXBlMiwKKwkJCQkJCQkJCQlmdW5jdGlvblR5cGUzLAorCQkJCQkJCQkJCWZ1bmN0aW9uVHlwZTQgfQorCistLSBJbiBNYXBwaW5nSW5mbyBsaXN0LCBtYXBwaW5nIGZvciBGREQgYW5kIDMuODRNY3BzIFRERCBpcyBkZWZpbmVkLgorLS0gRm9yIDEuMjhNY3BzIFRERCwgTWFwcGluZy1MQ1ItcjQgaXMgdXNlZCBpbnN0ZWFkLgorTWFwcGluZ0luZm8gOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBVCkpIE9GCisJCQkJCQkJCQkJTWFwcGluZworCistLSBBY3R1YWwgdmFsdWUgUS1IeXN0LVMgPSBJRSB2YWx1ZSAqIDIKK1EtSHlzdC1TIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjIwKQorCitRLUh5c3QtUy1GaW5lIDo6PSBJTlRFR0VSICgwLi40MCkKKworUkFUIDo6PQkJCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdXRyYS1GREQsCisJCQkJCQkJCQkJdXRyYS1UREQsCisJCQkJCQkJCQkJZ3NtLAorCQkJCQkJCQkJCWNkbWEyMDAwIH0KKworUkFULUZERC1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCXJhdC1JZGVudGlmaWVyCQkJCQkJUkFULUlkZW50aWZpZXIsCisJcy1TZWFyY2hSQVQJCQkJCQkJUy1TZWFyY2hRdWFsLAorCXMtSENTLVJBVAkJCQkJCQlTLVNlYXJjaFJYTEVWCQkJCQkJCU9QVElPTkFMLAorCXMtTGltaXQtU2VhcmNoUkFUCQkJCQlTLVNlYXJjaFF1YWwKK30KKworUkFULUZERC1JbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE90aGVyUkFUKSkgT0YKKwkJCQkJCQkJCQlSQVQtRkRELUluZm8KKworUkFULUlkZW50aWZpZXIgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlnc20sIGNkbWEyMDAwIH0KKworUkFULVRERC1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCXJhdC1JZGVudGlmaWVyCQkJCQkJUkFULUlkZW50aWZpZXIsCisJcy1TZWFyY2hSQVQJCQkJCQkJUy1TZWFyY2hSWExFViwKKwlzLUhDUy1SQVQJCQkJCQkJUy1TZWFyY2hSWExFVgkJCQkJCU9QVElPTkFMLAorCXMtTGltaXQtU2VhcmNoUkFUCQkJCQlTLVNlYXJjaFJYTEVWCit9CisKK1JBVC1UREQtSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVCkpIE9GCisJCQkJCQkJCQkJUkFULVRERC1JbmZvCisKK1Jlc2VydmVkSW5kaWNhdG9yIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlyZXNlcnZlZCwKKwkJCQkJCQkJCQlub3RSZXNlcnZlZCB9CisKKy0tIEFjdHVhbCB2YWx1ZSBTLVNlYXJjaFF1YWwgPSBJRSB2YWx1ZSAqIDIKK1MtU2VhcmNoUXVhbCA6Oj0JCQkJCQlJTlRFR0VSICgtMTYuLjEwKQorCistLSBBY3R1YWwgdmFsdWUgUy1TZWFyY2hSWExFViA9IChJRSB2YWx1ZSAqIDIpICsgMQorUy1TZWFyY2hSWExFViA6Oj0JCQkJCQlJTlRFR0VSICgtNTMuLjQ1KQorCistLSBBY3R1YWwgdmFsdWUgU2NhbGluZ0ZhY3RvciA9IElFIHZhbHVlICogMC4xCitTcGVlZERlcGVuZGVudFNjYWxpbmdGYWN0b3IgOjo9CQlJTlRFR0VSICgwLi4xMCkKKworVC1CYXJyZWQgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczEwLCBzMjAsIHM0MCwgczgwLAorCQkJCQkJCQkJCXMxNjAsIHMzMjAsIHM2NDAsIHMxMjgwIH0KKworVC1SZXNlbGVjdGlvbi1TIDo6PQkJCQkJSU5URUdFUiAoMC4uMzEpCisKKy0tIEFjdHVhbCB2YWx1ZSBULVJlc2VsZWN0aW9uLVMtRmluZSA9IElFIHZhbHVlICogMC4yCitULVJlc2VsZWN0aW9uLVMtRmluZSA6Oj0JCQlJTlRFR0VSICgwLi4zMSkKKworLS0gQWN0dWFsIHZhbHVlIFNjYWxpbmdGYWN0b3IgPSBJRSB2YWx1ZSAqIDAuMjUKK1RyZXNlbGVjdGlvblNjYWxpbmdGYWN0b3IgOjo9CQlJTlRFR0VSICg0Li4xOSkKKworLS0gRm9yIFVwcGVyTGltaXQsIHRoZSB1c2VkIHJhbmdlIGRlcGVuZHMgb24gdGhlIFJBVCB1c2VkLgorVXBwZXJMaW1pdCA6Oj0JCQkJCQlJTlRFR0VSICgxLi45MSkKKworVVJBLUlkZW50aXR5IDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQorCitVUkEtSWRlbnRpdHlMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VVJBKSkgT0YKKwkJCQkJCQkJCQlVUkEtSWRlbnRpdHkKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIFVTRVIgRVFVSVBNRU5UIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjMpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlyZWwtNCwgcmVsLTUsIHJlbC02LCByZWwtNywKKwkJCQkJCQkJCQlzcGFyZTEyLCBzcGFyZTExLCBzcGFyZTEwLCBzcGFyZTksIHNwYXJlOCwKKwkJCQkJCQkJCQlzcGFyZTcsCXNwYXJlNiwJc3BhcmU1LCBzcGFyZTQsIHNwYXJlMywKKwkJCQkJCQkJCQlzcGFyZTIsIHNwYXJlMSB9CisKKy0tIFRBQlVMQVIgOiBmb3IgQWN0aXZhdGlvblRpbWUsIHZhbHVlICdub3cnIGFsd2F5cyBhcHBlYXIgYXMgZGVmYXVsdCwgYW5kIGlzIGVuY29kZWQKKy0tIGJ5IGFic2VuY2Ugb2YgdGhlIGZpZWxkCitBY3RpdmF0aW9uVGltZSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjI1NSkKKworQmFja29mZkNvbnRyb2xQYXJhbXMgOjo9CQkJU0VRVUVOQ0UgeworCW4tQVAtUmV0cmFuc01heAkJCQkJCU4tQVAtUmV0cmFuc01heCwKKwluLUFjY2Vzc0ZhaWxzCQkJCQkJTi1BY2Nlc3NGYWlscywKKwluZi1CTy1Ob0FJQ0gJCQkJCQlORi1CTy1Ob0FJQ0gsCisJbnMtQk8tQnVzeQkJCQkJCQlOUy1CTy1CdXN5LAorCW5mLUJPLUFsbEJ1c3kJCQkJCQlORi1CTy1BbGxCdXN5LAorCW5mLUJPLU1pc21hdGNoCQkJCQkJTkYtQk8tTWlzbWF0Y2gsCisJdC1DUENICQkJCQkJCQlULUNQQ0gKK30KKworQy1STlRJIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCisKK0NhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCA6Oj0JCVNFUVVFTkNFIHsKKwl1ZS1SYWRpb0NhcGFiaWxpdHlGRERVcGRhdGVSZXF1aXJlbWVudAlCT09MRUFOLAorCS0tIHVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50IGlzIGZvciAzLjg0TWNwcyBUREQgdXBkYXRlIHJlcXVpcmVtZW50CisJdWUtUmFkaW9DYXBhYmlsaXR5VEREVXBkYXRlUmVxdWlyZW1lbnQJQk9PTEVBTiwKKwlzeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QJCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdAkJT1BUSU9OQUwKK30KKworQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0LWV4dCA6Oj0gU0VRVUVOQ0UgeworCXVlLVJhZGlvQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LVRERDEyOAlCT09MRUFOCit9CisKK0NhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNCA6Oj0JU0VRVUVOQ0UgeworCXVlLVJhZGlvQ2FwYWJpbGl0eUZERFVwZGF0ZVJlcXVpcmVtZW50LUZERAlCT09MRUFOLAorCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50LVRERDM4NAlCT09MRUFOLAorCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50LVRERDEyOAlCT09MRUFOLAorCXN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdAkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0CQlPUFRJT05BTAorfQorCitDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0IDo6PSBTRVFVRU5DRSB7CisJdWUtUmFkaW9DYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtVERENzY4CUJPT0xFQU4KK30KKworLS0gSWYgdGhlIElFIENlbGxVcGRhdGVDYXVzZSBoYXMgdGhlIHZhbHVlICdjZWxsVXBkYXRlQ2F1c2UtZXh0JywgdGhlIGFjdHVhbCB2YWx1ZSBpcworLS0gZGVmaW5lZCBpbiB0aGUgSUUgQ2VsbFVwZGF0ZUNhdXNlLWV4dC4KK0NlbGxVcGRhdGVDYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQljZWxsUmVzZWxlY3Rpb24sCisJCQkJCQkJCQkJcGVyaW9kaWNhbENlbGxVcGRhdGUsCisJCQkJCQkJCQkJdXBsaW5rRGF0YVRyYW5zbWlzc2lvbiwKKwkJCQkJCQkJCQl1dHJhbi1wYWdpbmdSZXNwb25zZSwKKwkJCQkJCQkJCQlyZS1lbnRlcmVkU2VydmljZUFyZWEsCisJCQkJCQkJCQkJcmFkaW9saW5rRmFpbHVyZSwKKwkJCQkJCQkJCQlybGMtdW5yZWNvdmVyYWJsZUVycm9yLAorCQkJCQkJCQkJCWNlbGxVcGRhdGVDYXVzZS1leHQgfQorCistLSBUaGUgSUUgQ2VsbFVwZGF0ZUNhdXNlLWV4dCBzaGFsbCBiZSBwcmVzZW50LCBpZiB0aGUgSUUgQ2VsbFVwZGF0ZUNhdXNlIGhhcyB0aGUKKy0tIHZhbHVlICdjZWxsVXBkYXRlQ2F1c2UtZXh0Jy4KK0NlbGxVcGRhdGVDYXVzZS1leHQgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1ibXMtUmVjZXB0aW9uLAorCQkJCQkJCQkJCW1ibXMtUFRQLVJCLVJlcXVlc3QsIHNwYXJlMiwgc3BhcmUxIH0KKworQ2hpcFJhdGVDYXBhYmlsaXR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltY3BzMy04NCwgbWNwczEtMjggfQorCitDaGlwUmF0ZUNhcGFiaWxpdHktcjcgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1jcHMzLTg0LCBtY3BzNy02OCwgbWNwczEtMjggfQorCitDaXBoZXJpbmdBbGdvcml0aG0gOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXVlYTAsIHVlYTEgfQorCitDaXBoZXJpbmdNb2RlQ29tbWFuZCA6Oj0JCQlDSE9JQ0UgeworCXN0YXJ0UmVzdGFydAkJCQkJCUNpcGhlcmluZ0FsZ29yaXRobSwKKwlkdW1teQkJCQkJCU5VTEwKK30KKworQ2lwaGVyaW5nTW9kZUluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBUaGUgY2lwaGVyaW5nIGFsZ29yaXRobSBpcyBpbmNsdWRlZCBpbiB0aGUgQ2lwaGVyaW5nTW9kZUNvbW1hbmQuCisJY2lwaGVyaW5nTW9kZUNvbW1hbmQJCQkJQ2lwaGVyaW5nTW9kZUNvbW1hbmQsCisJYWN0aXZhdGlvblRpbWVGb3JEUENICQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJcmItREwtQ2lwaEFjdGl2YXRpb25UaW1lSW5mbwkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMCit9CisKK0NOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50IDo6PQlJTlRFR0VSICg2Li45KQorCitDTi1QYWdlZFVFLUlkZW50aXR5IDo6PQkJCQlDSE9JQ0UgeworCWltc2ktR1NNLU1BUAkJCQkJCUlNU0ktR1NNLU1BUCwKKwl0bXNpLUdTTS1NQVAJCQkJCQlUTVNJLUdTTS1NQVAsCisJcC1UTVNJLUdTTS1NQVAJCQkJCQlQLVRNU0ktR1NNLU1BUCwKKwlpbXNpLURTLTQxCQkJCQkJCUlNU0ktRFMtNDEsCisJdG1zaS1EUy00MQkJCQkJCQlUTVNJLURTLTQxLAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHkgOjo9IAlTRVFVRU5DRSB7CisJZmRkLU1lYXN1cmVtZW50cwkJCQkJQk9PTEVBTiwKKwktLSBUQUJVTEFSOiBUaGUgSUVzIHRkZC1NZWFzdXJlbWVudHMsIGdzbS1NZWFzdXJlbWVudHMgYW5kIG11bHRpQ2Fycmllck1lYXN1cmVtZW50cworCS0tIGFyZSBtYWRlIG9wdGlvbmFsIHNpbmNlIHRoZXkgYXJlIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGFub3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudC4KKwktLSBUaGVpciBhYnNlbmNlIGNvcnJlc3BvbmRzIHRvIHRoZSBjYXNlIHdoZXJlIHRoZSBjb25kaXRpb24gaXMgbm90IHRydWUuCisJdGRkLU1lYXN1cmVtZW50cwkJCQkJQk9PTEVBTgkJCQkJCQkJT1BUSU9OQUwsCisJZ3NtLU1lYXN1cmVtZW50cwkJCQkJR1NNLU1lYXN1cmVtZW50cwkJCQkJT1BUSU9OQUwsCisJbXVsdGlDYXJyaWVyTWVhc3VyZW1lbnRzCQkJQk9PTEVBTgkJCQkJCQkJT1BUSU9OQUwKK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwl0ZGQxMjgtTWVhc3VyZW1lbnRzCQkJCQkJQk9PTEVBTgkJCQkJCQlPUFRJT05BTAorfQorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxQmFuZHNGREQpKSBPRgorCQkJCQkJCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRECisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRETGlzdDIgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxQmFuZHNGREQpKSBPRgorCQkJCQkJCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkREMgorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QtZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKKwkJCQkJCQkJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGREQtZXh0CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkREIDo6PQkJU0VRVUVOQ0UgeworCXJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQJT1BUSU9OQUwsCisJZGwtTWVhc3VyZW1lbnRzRkRECQkJCQlCT09MRUFOLAorCXVsLU1lYXN1cmVtZW50c0ZERAkJCQkJQk9PTEVBTgorfQorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERDIgOjo9CQlTRVFVRU5DRSB7CisJLS0gVUUgbWF5IG9taXQgYm90aCBJRXMgaWYgdGhpcyBJRSBpbmRpY2F0ZXMgdGhlIGNvbXByZXNzZWQgbW9kZSBjYXBhYmlsaXR5IHdpdGhpbiB0aGUgc2FtZQorCS0tIGZyZXF1ZW5jeSBiYW5kLiBPdGhlcndpc2UsIHRoZSBVRSBzaGFsbCBpbmNsdWRlIGVpdGhlciBvbmUgb2YgdGhlIGZvbGxvd2luZyBPUFRJT05BTCBJRXMuCisJcmFkaW9GcmVxdWVuY3lCYW5kRkRECQkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERAlPUFRJT05BTCwKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRGREQyCQkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERDIJT1BUSU9OQUwsCisJZGwtTWVhc3VyZW1lbnRzRkRECQkJCQlCT09MRUFOLAorCXVsLU1lYXN1cmVtZW50c0ZERAkJCQkJQk9PTEVBTgorfQorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERC1leHQgOjo9CQlTRVFVRU5DRSB7CisJcmFkaW9GcmVxdWVuY3lCYW5kRkREMgkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyLAorCWRsLU1lYXN1cmVtZW50c0ZERAkJCQkJQk9PTEVBTiwKKwl1bC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4KK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJURERMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzVEREKSkgT0YKKwkJCQkJCQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERAorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERCA6Oj0JCVNFUVVFTkNFIHsKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRUREQJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERELAorCWRsLU1lYXN1cmVtZW50c1RERAkJCQkJQk9PTEVBTiwKKwl1bC1NZWFzdXJlbWVudHNUREQJCQkJCUJPT0xFQU4KK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU01MaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzR1NNKSkgT0YKKwkJCQkJCQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkdTTQorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkdTTSA6Oj0JCVNFUVVFTkNFIHsKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRHU00JCQkJUmFkaW9GcmVxdWVuY3lCYW5kR1NNLAorCWRsLU1lYXN1cmVtZW50c0dTTQkJCQkJQk9PTEVBTiwKKwl1bC1NZWFzdXJlbWVudHNHU00JCQkJCUJPT0xFQU4KK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJNQyA6Oj0JCVNFUVVFTkNFIHsKKwlkbC1NZWFzdXJlbWVudHNNQwkJCQkJQk9PTEVBTiwKKwl1bC1NZWFzdXJlbWVudHNNQwkJCQkJQk9PTEVBTgorfQorCitDUENILVBhcmFtZXRlcnMgOjo9CQkJCQlTRVFVRU5DRSB7CisJaW5pdGlhbFByaW9yaXR5RGVsYXlMaXN0CQkJSW5pdGlhbFByaW9yaXR5RGVsYXlMaXN0CQkJT1BUSU9OQUwsCisJYmFja29mZkNvbnRyb2xQYXJhbXMJCQkJQmFja29mZkNvbnRyb2xQYXJhbXMsCisJLS0gVEFCVUxBUjogVFBDIHN0ZXAgc2l6ZSBuZXN0ZWQgaW5zaWRlIFBvd2VyQ29udHJvbEFsZ29yaXRobQorCXBvd2VyQ29udHJvbEFsZ29yaXRobQkJCQlQb3dlckNvbnRyb2xBbGdvcml0aG0sCisJZGwtRFBDQ0gtQkVSCQkJCQkJREwtRFBDQ0gtQkVSCit9CisKK0RMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZyA6Oj0JRU5VTUVSQVRFRHtrYnBzMzIsIGticHM2NCwga2JwczEyOCwga2JwczM4NH0KKworREwtRFBDQ0gtQkVSIDo6PQkJCQkJSU5URUdFUiAoMC4uNjMpCisKK0RMLVBoeXNDaENhcGFiaWxpdHlGREQgOjo9CQkJU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbWF4Tm9EUENILVBEU0NILUNvZGVz0yBvbmx5IGdpdmVzIGluZm9ybWF0aW9uIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZiBEUENIIENvZGVzLgorCW1heE5vRFBDSC1QRFNDSC1Db2RlcwkJCQlJTlRFR0VSICgxLi44KSwKKwltYXhOb1BoeXNDaEJpdHNSZWNlaXZlZAkJCQlNYXhOb1BoeXNDaEJpdHNSZWNlaXZlZCwKKwlzdXBwb3J0Rm9yU0YtNTEyCQkJCQlCT09MRUFOLAorCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlCT09MRUFOLAorCWR1bW15MgkJCQkJCQkJU2ltdWx0YW5lb3VzU0NDUENILURQQ0gtUmVjZXB0aW9uCit9CisKK0RMLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dCA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCQkJU3VwcG9ydE9mRGVkaWNhdGVkUGlsb3RzRm9yQ2hFc3RpbWF0aW9uCQlPUFRJT05BTAorfQorCitTdXBwb3J0T2ZEZWRpY2F0ZWRQaWxvdHNGb3JDaEVzdGltYXRpb24gOjo9CQkJRU5VTUVSQVRFRCB7IHRydWUgfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5VEREIDo6PQkJCVNFUVVFTkNFIHsKKwltYXhUUy1QZXJGcmFtZQkJCQkJCU1heFRTLVBlckZyYW1lLAorCW1heFBoeXNDaFBlckZyYW1lCQkJCQlNYXhQaHlzQ2hQZXJGcmFtZSwKKwltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLURMLAorCXN1cHBvcnRPZlBEU0NICQkJCQkJQk9PTEVBTiwKKwltYXhQaHlzQ2hQZXJUUwkJCQkJCU1heFBoeXNDaFBlclRTCQorfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCW1heFRTLVBlclN1YkZyYW1lCQkJCQlNYXhUUy1QZXJTdWJGcmFtZS1yNCwKKwltYXhQaHlzQ2hQZXJGcmFtZQkJCQkJTWF4UGh5c0NoUGVyU3ViRnJhbWUtcjQsCisJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1ETCwKKwlzdXBwb3J0T2ZQRFNDSAkJCQkJCUJPT0xFQU4sCisJbWF4UGh5c0NoUGVyVFMJCQkJCQlNYXhQaHlzQ2hQZXJUUywKKwlzdXBwb3J0T2Y4UFNLCQkJCQkJQk9PTEVBTgorfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5VERELTc2OCA6Oj0JCVNFUVVFTkNFIHsKKwltYXhUUy1QZXJGcmFtZQkJCQkJCU1heFRTLVBlckZyYW1lLAorCW1heFBoeXNDaFBlckZyYW1lCQkJCQlNYXhQaHlzQ2hQZXJGcmFtZS03NjgsCisJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1ETC03NjgsCisJc3VwcG9ydE9mUERTQ0gJCQkJCQlCT09MRUFOLAorCW1heFBoeXNDaFBlclRTCQkJCQkJTWF4UGh5c0NoUGVyVFMtNzY4Cit9CisKK0RMLVRyYW5zQ2hDYXBhYmlsaXR5IDo6PQkJCVNFUVVFTkNFIHsKKwltYXhOb0JpdHNSZWNlaXZlZAkJCQkJTWF4Tm9CaXRzLAorCW1heENvbnZDb2RlQml0c1JlY2VpdmVkCQkJCU1heE5vQml0cywKKwl0dXJib0RlY29kaW5nU3VwcG9ydAkJCQlUdXJib1N1cHBvcnQsCisJbWF4U2ltdWx0YW5lb3VzVHJhbnNDaHMJCQkJTWF4U2ltdWx0YW5lb3VzVHJhbnNDaHNETCwKKwltYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQJCQlNYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQsCisJbWF4UmVjZWl2ZWRUcmFuc3BvcnRCbG9ja3MJCQlNYXhUcmFuc3BvcnRCbG9ja3NETCwKKwltYXhOdW1iZXJPZlRGQwkJCQkJCU1heE51bWJlck9mVEZDLURMLAorCW1heE51bWJlck9mVEYJCQkJCQlNYXhOdW1iZXJPZlRGCit9CisKK0RSQUMtU3lzSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmFuc21pc3Npb25Qcm9iYWJpbGl0eQkJCQlUcmFuc21pc3Npb25Qcm9iYWJpbGl0eSwKKwltYXhpbXVtQml0UmF0ZQkJCQkJCU1heGltdW1CaXRSYXRlCit9CisKK0RSQUMtU3lzSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhEUkFDY2xhc3NlcykpIE9GCisJCQkJCQkJCQkJRFJBQy1TeXNJbmZvCisKK0RTQ0gtUk5USSA6Oj0JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCisKK0RlbGF5UmVzdHJpY3Rpb25GbGFnIDo6PQkJCUVOVU1FUkFURUQgeyB0cnVlIH0KKworRS1STlRJIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCisKK0VTTi1EUy00MSA6Oj0JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpCisKK0VzdGFibGlzaG1lbnRDYXVzZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJb3JpZ2luYXRpbmdDb252ZXJzYXRpb25hbENhbGwsCisJCQkJCQkJCQkJb3JpZ2luYXRpbmdTdHJlYW1pbmdDYWxsLCAKKwkJCQkJCQkJCQlvcmlnaW5hdGluZ0ludGVyYWN0aXZlQ2FsbCwKKwkJCQkJCQkJCQlvcmlnaW5hdGluZ0JhY2tncm91bmRDYWxsLAorCQkJCQkJCQkJCW9yaWdpbmF0aW5nU3Vic2NyaWJlZFRyYWZmaWNDYWxsLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nQ29udmVyc2F0aW9uYWxDYWxsLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nU3RyZWFtaW5nQ2FsbCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0ludGVyYWN0aXZlQ2FsbCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0JhY2tncm91bmRDYWxsLAorCQkJCQkJCQkJCWVtZXJnZW5jeUNhbGwsCisJCQkJCQkJCQkJaW50ZXJSQVQtQ2VsbFJlc2VsZWN0aW9uLAorCQkJCQkJCQkJCWludGVyUkFULUNlbGxDaGFuZ2VPcmRlciwKKwkJCQkJCQkJCQlyZWdpc3RyYXRpb24sCisJCQkJCQkJCQkJZGV0YWNoLAorCQkJCQkJCQkJCW9yaWdpbmF0aW5nSGlnaFByaW9yaXR5U2lnbmFsbGluZywKKwkJCQkJCQkJCQlvcmlnaW5hdGluZ0xvd1ByaW9yaXR5U2lnbmFsbGluZywKKwkJCQkJCQkJCQljYWxsUmUtZXN0YWJsaXNobWVudCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0hpZ2hQcmlvcml0eVNpZ25hbGxpbmcsCisJCQkJCQkJCQkJdGVybWluYXRpbmdMb3dQcmlvcml0eVNpZ25hbGxpbmcsCisJCQkJCQkJCQkJdGVybWluYXRpbmdDYXVzZVVua25vd24sCisJCQkJCQkJCQkJbWJtcy1SZWNlcHRpb24sCisJCQkJCQkJCQkJbWJtcy1QVFAtUkItUmVxdWVzdCwKKwkJCQkJCQkJCQlzcGFyZTEwLAorCQkJCQkJCQkJCXNwYXJlOSwKKwkJCQkJCQkJCQlzcGFyZTgsCisJCQkJCQkJCQkJc3BhcmU3LAorCQkJCQkJCQkJCXNwYXJlNiwKKwkJCQkJCQkJCQlzcGFyZTUsCisJCQkJCQkJCQkJc3BhcmU0LAorCQkJCQkJCQkJCXNwYXJlMywKKwkJCQkJCQkJCQlzcGFyZTIsCisJCQkJCQkJCQkJc3BhcmUxIH0KKworRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIgOjo9CQkJQ0hPSUNFIHsKKwljb25maWd1cmF0aW9uVW5zdXBwb3J0ZWQJCQlOVUxMLAorCXBoeXNpY2FsQ2hhbm5lbEZhaWx1cmUJCQkJTlVMTCwKKwlpbmNvbXBhdGlibGVTaW11bHRhbmVvdXNSZWNvbmZpZ3VyYXRpb24KKwkJCQkJCQkJCQlOVUxMLAorCWNvbXByZXNzZWRNb2RlUnVudGltZUVycm9yCQkJVEdQU0ksCisJcHJvdG9jb2xFcnJvcgkJCQkJCVByb3RvY29sRXJyb3JJbmZvcm1hdGlvbiwKKwljZWxsVXBkYXRlT2NjdXJyZWQJCQkJCU5VTEwsCisJaW52YWxpZENvbmZpZ3VyYXRpb24JCQkJTlVMTCwKKwljb25maWd1cmF0aW9uSW5jb21wbGV0ZQkJCQlOVUxMLAorCXVuc3VwcG9ydGVkTWVhc3VyZW1lbnQJCQkJTlVMTCwKKwltYm1zU2Vzc2lvbkFscmVhZHlSZWNlaXZlZENvcnJlY3RseQlOVUxMLAorCWxvd2VyUHJpb3JpdHlNQk1TU2VydmljZQkJCU5VTEwsCisJc3BhcmU1CQkJCQkJCQlOVUxMLAorCXNwYXJlNAkJCQkJCQkJTlVMTCwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCitGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyclRySWQgOjo9CQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCit9CisKK0dyb3VwSWRlbnRpdHlXaXRoUmVsZWFzZUluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCQlycmMtQ29ubmVjdGlvblJlbGVhc2VJbmZvcm1hdGlvbgkJUlJDLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24sCisJCWdyb3VwUmVsZWFzZUluZm9ybWF0aW9uCQkJCQlHcm91cFJlbGVhc2VJbmZvcm1hdGlvbgorCX0KKworR3JvdXBSZWxlYXNlSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXVSTlRJLUdyb3VwCQkJCQkJCVUtUk5USS1Hcm91cAorfQorCitHU00tTWVhc3VyZW1lbnRzIDo6PQkJCQlTRVFVRU5DRSB7CisJZ3NtOTAwCQkJCQkJCQlCT09MRUFOLAorCWRjczE4MDAJCQkJCQkJCUJPT0xFQU4sCisJZ3NtMTkwMAkJCQkJCQkJQk9PTEVBTgorfQorCitILVJOVEkgOjo9CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKKworSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5IDo6PQkJSU5URUdFUiAoMS4uNjQpCisKK1VFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlIDo6PSBCSVQgU1RSSU5HIChTSVpFICg0KSkKKworVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUIDo6PSBCSVQgU1RSSU5HIChTSVpFICg4KSkKKworCitJTVNJLWFuZC1FU04tRFMtNDEgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbXNpLURTLTQxCQkJCQkJCUlNU0ktRFMtNDEsCisJZXNuLURTLTQxCQkJCQkJCUVTTi1EUy00MQorfQorCitJTVNJLURTLTQxIDo6PQkJCQkJCU9DVEVUIFNUUklORyAoU0laRSAoNS4uNykpCisKK0luaXRpYWxQcmlvcml0eURlbGF5TGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBU0MpKSBPRgorCQkJCQkJCQkJCU5TLUlQCisKK0luaXRpYWxVRS1JZGVudGl0eSA6Oj0JCQkJQ0hPSUNFIHsKKwlpbXNpCQkJCQkJCQlJTVNJLUdTTS1NQVAsCisJdG1zaS1hbmQtTEFJCQkJCQkJVE1TSS1hbmQtTEFJLUdTTS1NQVAsCisJcC1UTVNJLWFuZC1SQUkJCQkJCQlQLVRNU0ktYW5kLVJBSS1HU00tTUFQLAorCWltZWkJCQkJCQkJCUlNRUksCisJZXNuLURTLTQxCQkJCQkJCUVTTi1EUy00MSwKKwlpbXNpLURTLTQxCQkJCQkJCUlNU0ktRFMtNDEsCisJaW1zaS1hbmQtRVNOLURTLTQxCQkJCQlJTVNJLWFuZC1FU04tRFMtNDEsCisJdG1zaS1EUy00MQkJCQkJCQlUTVNJLURTLTQxCit9CisKK0ludGVncml0eUNoZWNrSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCW1lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUJCQlNZXNzYWdlQXV0aGVudGljYXRpb25Db2RlLAorCXJyYy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIJCQlSUkMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyCit9CisKK0ludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwlycmMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyTGlzdAkJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlckxpc3QKK30KKworSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobSA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdWlhMSB9CisKKworSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVDb21tYW5kIDo6PSAJQ0hPSUNFIHsKKwlzdGFydEludGVncml0eVByb3RlY3Rpb24JCQlTRVFVRU5DRSB7CisJCWludGVncml0eVByb3RJbml0TnVtYmVyCQkJCUludGVncml0eVByb3RJbml0TnVtYmVyCisJfSwKKwltb2RpZnkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZGwtSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8KKwl9Cit9CisKK0ludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBETCBpbnRlZ3JpdHkgcHJvdGVjdGlvbiBhY3RpdmF0aW9uIGluZm8gYW5kIEludGVncml0eQorCS0tIHByb3RlY3Rpb24gaW50aWFsaXNhdGlvbiBudW1iZXIgaGF2ZSBiZWVuIG5lc3RlZCBpbnNpZGUgCisJLS0gSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVDb21tYW5kLgorCWludGVncml0eVByb3RlY3Rpb25Nb2RlQ29tbWFuZAkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVDb21tYW5kLAorCWludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0JCUludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0JCU9QVElPTkFMCQorfQorCitJbnRlZ3JpdHlQcm90SW5pdE51bWJlciA6Oj0JCQlCSVQgU1RSSU5HIChTSVpFICgzMikpCisKKy0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCistLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCitNYXhIY0NvbnRleHRTcGFjZSA6Oj0JCQkJCUVOVU1FUkFURUQJeworCQkJCQkJCQkJCQlkdW1teSwgYnkxMDI0LCBieTIwNDgsIGJ5NDA5NiwgCisJCQkJCQkJCQkJCWJ5ODE5MiB9CisKK01heEhjQ29udGV4dFNwYWNlLXI1LWV4dCA6Oj0JCQlFTlVNRVJBVEVECXsKKwkJCQkJCQkJCQkJYnkxNjM4NCwgYnkzMjc2OCwgYnk2NTUzNiwgYnkxMzEwNzIgfQorCisKK01heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0IDo6PQkJRU5VTUVSQVRFRAl7CisJCQkJCQkJCQkJCXMyLCBzNCwgczgsIHMxMiwgczE2LCBzMjQsIHMzMiwgczQ4LAorCQkJCQkJCQkJCQlzNjQsIHMxMjgsIHMyNTYsIHM1MTIsIHMxMDI0LCBzMTYzODQgfQorCitNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcCA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHVtbXksIGFtNCwgYW01LCBhbTYsIAorCQkJCQkJCQkJCWFtOCwgYW0xNiwgYW0zMCB9CisKKy0tIEFjdHVhbCB2YWx1ZSBNYXhpbXVtQml0UmF0ZSA9IElFIHZhbHVlICogMTYKK01heGltdW1CaXRSYXRlIDo6PQkJCQkJSU5URUdFUiAoMC4uMzIpCisKK01heGltdW1STEMtV2luZG93U2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsgbXdzMjA0NywgbXdzNDA5NSB9CisKK01heE5vRFBEQ0gtQml0c1RyYW5zbWl0dGVkIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYjYwMCwgYjEyMDAsIGIyNDAwLCBiNDgwMCwgCisJCQkJCQkJCQkJYjk2MDAsIGIxOTIwMCwgYjI4ODAwLCBiMzg0MDAsCisJCQkJCQkJCQkJYjQ4MDAwLCBiNTc2MDAgfQorCitNYXhOb0JpdHMgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYjY0MCwgYjEyODAsIGIyNTYwLCBiMzg0MCwgYjUxMjAsCisJCQkJCQkJCQkJYjY0MDAsIGI3NjgwLCBiODk2MCwgYjEwMjQwLAorCQkJCQkJCQkJCWIyMDQ4MCwgYjQwOTYwLCBiODE5MjAsIGIxNjM4NDAgfQorCitNYXhOb1BoeXNDaEJpdHNSZWNlaXZlZCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlkdW1teSwgYjEyMDAsIGIyNDAwLCBiMzYwMCwgCisJCQkJCQkJCQkJYjQ4MDAsIGI3MjAwLCBiOTYwMCwgYjE0NDAwLCAKKwkJCQkJCQkJCQliMTkyMDAsIGIyODgwMCwgYjM4NDAwLCBiNDgwMDAsIAorCQkJCQkJCQkJCWI1NzYwMCwgYjY3MjAwLCBiNzY4MDAgfQorCitNYXhOb1NDQ1BDSC1STCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXJsMSB9CisKK01heE51bWJlck9mVEYgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZjMyLCB0ZjY0LCB0ZjEyOCwgdGYyNTYsCisJCQkJCQkJCQkJdGY1MTIsIHRmMTAyNCB9CisKK01heE51bWJlck9mVEZDLURMIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZmMxNiwgdGZjMzIsIHRmYzQ4LCB0ZmM2NCwgdGZjOTYsIAorCQkJCQkJCQkJCXRmYzEyOCwgdGZjMjU2LCB0ZmM1MTIsIHRmYzEwMjQgfQorCitNYXhOdW1iZXJPZlRGQy1VTCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHVtbXkxLCBkdW1teTIsIHRmYzE2LCB0ZmMzMiwgdGZjNDgsIHRmYzY0LCAKKwkJCQkJCQkJCQl0ZmM5NiwgdGZjMTI4LCB0ZmMyNTYsIHRmYzUxMiwgdGZjMTAyNCB9CisKKy0tIHRoZSB2YWx1ZXMgMSDJNCBmb3IgTWF4UGh5c0NoUGVyRnJhbWUgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wgCitNYXhQaHlzQ2hQZXJGcmFtZSA6Oj0JCQkJSU5URUdFUiAoMS4uMjI0KQorCitNYXhQaHlzQ2hQZXJGcmFtZS03NjggOjo9CQkJSU5URUdFUiAoMS4uNDQ4KQorCitNYXhQaHlzQ2hQZXJTdWJGcmFtZS1yNCA6Oj0JCQlJTlRFR0VSICgxLi45NikKKworTWF4UGh5c0NoUGVyVGltZXNsb3QgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHMxLCB0czIgfQorCistLSB0aGUgdmFsdWVzIDEgyTQgZm9yIE1heFBoeXNDaFBlclRTIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sIAorTWF4UGh5c0NoUGVyVFMgOjo9CQkJCQlJTlRFR0VSICgxLi4xNikKKworTWF4UGh5c0NoUGVyVFMtNzY4IDo6PQkJCQlJTlRFR0VSICgxLi4zMikKKworTWF4U2ltdWx0YW5lb3VzQ0NUckNILUNvdW50IDo6PQkJSU5URUdFUiAoMS4uOCkKKworTWF4U2ltdWx0YW5lb3VzVHJhbnNDaHNETCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWU0LCBlOCwgZTE2LCBlMzIgfQorCitNYXhTaW11bHRhbmVvdXNUcmFuc0Noc1VMIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHVtbXksIGU0LCBlOCwgZTE2LCBlMzIgfQorCitNYXhUcmFuc3BvcnRCbG9ja3NETCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0YjQsIHRiOCwgdGIxNiwgdGIzMiwgdGI0OCwKKwkJCQkJCQkJCQl0YjY0LCB0Yjk2LCB0YjEyOCwgdGIyNTYsIHRiNTEyIH0KKworTWF4VHJhbnNwb3J0QmxvY2tzVUwgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHVtbXksIHRiNCwgdGI4LCB0YjE2LCB0YjMyLCB0YjQ4LAorCQkJCQkJCQkJCXRiNjQsIHRiOTYsIHRiMTI4LCB0YjI1NiwgdGI1MTIgfQorCitNYXhUUy1QZXJGcmFtZSA6Oj0JCQkJCUlOVEVHRVIgKDEuLjE0KQorCitNYXhUUy1QZXJTdWJGcmFtZS1yNCA6Oj0JCQlJTlRFR0VSICgxLi42KQorCistLSBUQUJVTEFSOiBNZWFzdXJlbWVudENhcGFiaWxpdHkgY29udGFpbnMgZGVwZW5kZW5jaWVzIHRvIFVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LAorLS0gdGhlIGNvbmRpdGlvbmFsIGZpZWxkcyBoYXZlIGJlZW4gbGVmdCBtYW5kYXRvcnkgZm9yIG5vdy4KK01lYXN1cmVtZW50Q2FwYWJpbGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJZG93bmxpbmtDb21wcmVzc2VkTW9kZQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5LAorCXVwbGlua0NvbXByZXNzZWRNb2RlCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHkJCit9CisKK01lYXN1cmVtZW50Q2FwYWJpbGl0eUV4dCA6Oj0gCQlTRVFVRU5DRXsKKwljb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRETGlzdCwKKwljb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERExpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiVERETGlzdAlPUFRJT05BTCwKKwljb21wcmVzc2VkTW9kZU1lYXNDYXBhYkdTTUxpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiR1NNTGlzdAlPUFRJT05BTCwKKwljb21wcmVzc2VkTW9kZU1lYXNDYXBhYk1DCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJNQwkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDYXBhYmlsaXR5RXh0MiA6Oj0gCQlTRVFVRU5DRXsKKwljb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRETGlzdDIsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJURERMaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERExpc3QJT1BUSU9OQUwsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU01MaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkdTTUxpc3QJT1BUSU9OQUwsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJNQwkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMJCU9QVElPTkFMCit9CisKKworTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0LWV4dCA6Oj0JU0VRVUVOQ0UgeworCWRvd25saW5rQ29tcHJlc3NlZE1vZGUtTENSCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1MQ1ItcjQsCisJdXBsaW5rQ29tcHJlc3NlZE1vZGUtTENSCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1MQ1ItcjQKK30KKworTWVzc2FnZUF1dGhlbnRpY2F0aW9uQ29kZSA6Oj0JCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSkKKworTWluaW11bVNGLURMIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2YxLCBzZjE2IH0KKworTWluaW11bVNGLURMLTc2OCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2YxLCBzZjMyIH0KKworTWluaW11bVNGLVVMIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2YxLCBzZjIsIHNmNCwgc2Y4LCBkdW1teSB9CisKK011bHRpTW9kZUNhcGFiaWxpdHkgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRkZCwgZmRkLCBmZGQtdGRkIH0KKworTXVsdGlSQVQtQ2FwYWJpbGl0eSA6Oj0JCQkJU0VRVUVOQ0UgeworCXN1cHBvcnRPZkdTTQkJCQkJCUJPT0xFQU4sCisJc3VwcG9ydE9mTXVsdGljYXJyaWVyCQkJCUJPT0xFQU4KK30gCisKK011bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY1OTBleHQgOjo9CVNFUVVFTkNFIHsKKwlzdXBwb3J0T2ZVVFJBTi1Ub0dFUkFOLU5BQ0MJCQlCT09MRUFOCit9CisKK011bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY2ODBleHQgOjo9CVNFUVVFTkNFIHsKKwlzdXBwb3J0T2ZIYW5kb3ZlclRvR0FOCQkJCUVOVU1FUkFURUQgeyBkb2VzU3VwcG9ydEhhbmRvdmVyVG9HQU4gfQkJT1BUSU9OQUwKK30KKworTi0zMDAgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjcpCisKK04tMzAxIDo6PQkJCQkJCQlJTlRFR0VSICgwLi43KQorCitOLTMwMiA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNykKKworTi0zMDQgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjcpCisKK04tMzA4IDo6PQkJCQkJCQlJTlRFR0VSICgxLi44KQorCitOLTMxMCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNykKKworTi0zMTIgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMxLCBzNTAsIHMxMDAsIHMyMDAsIHM0MDAsCisJCQkJCQkJCQkJczYwMCwgczgwMCwgczEwMDAgfQorCitOLTMxMmV4dCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMiwgczQsIHMxMCwgczIwIH0KKworTi0zMTItcjUgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMxLCBzMiwgczQsIHMxMCwgczIwLAorCQkJCQkJCQkJCXM1MCwgczEwMCwgczIwMCwgczQwMCwKKwkJCQkJCQkJCQlzNjAwLCBzODAwLCBzMTAwMCB9CisKK04tMzEzIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMSwgczIsIHM0LCBzMTAsIHMyMCwKKwkJCQkJCQkJCQkgczUwLCBzMTAwLCBzMjAwIH0KKworTi0zMTUgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMxLCBzNTAsIHMxMDAsIHMyMDAsIHM0MDAsCisJCQkJCQkJCQkJczYwMCwgczgwMCwgczEwMDAgfQorCitOLTMxNWV4dCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMiwgczQsIHMxMCwgczIwIH0KKworTi0zMTUtcjUgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMxLCBzMiwgczQsIHMxMCwgczIwLAorCQkJCQkJCQkJCXM1MCwgczEwMCwgczIwMCwgczQwMCwKKwkJCQkJCQkJCQlzNjAwLCBzODAwLCBzMTAwMCB9CisKKworTi1BY2Nlc3NGYWlscyA6Oj0JCQkJCUlOVEVHRVIgKDEuLjY0KQorCitOLUFQLVJldHJhbnNNYXggOjo9CQkJCQlJTlRFR0VSICgxLi42NCkKKworTmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZCA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbmV0d29ya0Jhc2VkLCAKKwkJCQkJCQkJCQl1ZS1CYXNlZCwKKwkJCQkJCQkJCQlib3RoTmV0d29ya0FuZFVFLUJhc2VkLAorCQkJCQkJCQkJCW5vTmV0d29ya0Fzc2lzdGVkR1BTIH0KKworTkYtQk8tQWxsQnVzeSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMxKQorCitORi1CTy1Ob0FJQ0ggOjo9CQkJCQlJTlRFR0VSICgwLi4zMSkKKworTkYtQk8tTWlzbWF0Y2ggOjo9CQkJCQlJTlRFR0VSICgwLi4xMjcpCisKK05TLUJPLUJ1c3kgOjo9CQkJCQkJSU5URUdFUiAoMC4uNjMpCisKK05TLUlQIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4yOCkKKworUC1UTVNJLWFuZC1SQUktR1NNLU1BUCA6Oj0JCQlTRVFVRU5DRSB7CisJcC1UTVNJCQkJCQkJCQlQLVRNU0ktR1NNLU1BUCwKKwlyYWkJCQkJCQkJCQlSQUkKK30KKworUGFnaW5nQ2F1c2UgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGVybWluYXRpbmdDb252ZXJzYXRpb25hbENhbGwsCisJCQkJCQkJCQkJdGVybWluYXRpbmdTdHJlYW1pbmdDYWxsLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nSW50ZXJhY3RpdmVDYWxsLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nQmFja2dyb3VuZENhbGwsCisJCQkJCQkJCQkJdGVybWluYXRpbmdIaWdoUHJpb3JpdHlTaWduYWxsaW5nLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nTG93UHJpb3JpdHlTaWduYWxsaW5nLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nQ2F1c2VVbmtub3duLAorCQkJCQkJCQkJCXNwYXJlCisgfQorCitQYWdpbmdSZWNvcmQgOjo9CQkJCQlDSE9JQ0UgeworCWNuLUlkZW50aXR5CQkJCQkJCVNFUVVFTkNFIHsKKwkJcGFnaW5nQ2F1c2UJCQkJCQkJUGFnaW5nQ2F1c2UsCisJCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJY24tcGFnZWRVRS1JZGVudGl0eQkJCQkJQ04tUGFnZWRVRS1JZGVudGl0eQorCX0sCisJdXRyYW4tSWRlbnRpdHkJCQkJCQlTRVFVRU5DRSB7CisJCXUtUk5USQkJCQkJCQkJVS1STlRJLAorCQljbi1PcmlnaW5hdGVkUGFnZS1jb25uZWN0ZWRNb2RlLVVFCVNFUVVFTkNFIHsKKwkJCXBhZ2luZ0NhdXNlCQkJCQkJCVBhZ2luZ0NhdXNlLAorCQkJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCQkJcGFnaW5nUmVjb3JkVHlwZUlECQkJCQlQYWdpbmdSZWNvcmRUeXBlSUQKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwl9Cit9CisKK1BhZ2luZ1JlY29yZDItcjUgOjo9CQkJCUNIT0lDRSB7CisJdXRyYW4tU2luZ2xlVUUtSWRlbnRpdHkJCQkJU0VRVUVOQ0UgeworCQl1LVJOVEkJCQkJCQkJCVUtUk5USSwKKwkJY24tT3JpZ2luYXRlZFBhZ2UtY29ubmVjdGVkTW9kZS1VRQlTRVFVRU5DRSB7CisJCQlwYWdpbmdDYXVzZQkJCQkJCQlQYWdpbmdDYXVzZSwKKwkJCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJCXBhZ2luZ1JlY29yZFR5cGVJRAkJCQkJUGFnaW5nUmVjb3JkVHlwZUlECisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtQ29ubmVjdGlvblJlbGVhc2VJbmZvcm1hdGlvbgkJUlJDLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24KKwl9LAorCXV0cmFuLUdyb3VwSWRlbnRpdHkJCQkJCQlTRVFVRU5DRSAoIFNJWkUgKDEgLi4gbWF4VVJOVEktR3JvdXApICkgT0YKKwkJCQkJCQkJCQkJCUdyb3VwSWRlbnRpdHlXaXRoUmVsZWFzZUluZm9ybWF0aW9uCit9CisKK1BhZ2luZ1JlY29yZExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQYWdlMSkpIE9GCisJCQkJCQkJCQkJUGFnaW5nUmVjb3JkCisKK1BhZ2luZ1JlY29yZDJMaXN0LXI1IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQYWdlMSkpIE9GCisJCQkJCQkJCQkJUGFnaW5nUmVjb3JkMi1yNQorCitQRENQLUNhcGFiaWxpdHkgOjo9CQkJCQlTRVFVRU5DRSB7CisJbG9zc2xlc3NTUk5TLVJlbG9jYXRpb25TdXBwb3J0CQlCT09MRUFOLAorCS0tIElmIHByZXNlbnQsIHRoZSAibWF4SGNDb250ZXh0U3BhY2UiIGluIHRoZSBJRSAiUERDUC1DYXBhYmlsaXR5LXI1LWV4dCIgb3ZlcnJpZGVzIHRoZQorCS0tICJzdXBwb3J0ZWQiIHZhbHVlIGluIHRoaXMgSUUuIFRoZSB2YWx1ZSBpbiB0aGlzIElFIG1heSBiZSB1c2VkIGJ5IGEgcHJlLVJFTC01IFVUUkFOLgorCXN1cHBvcnRGb3JSZmMyNTA3CQkJCQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCQlOVUxMLAorCQlzdXBwb3J0ZWQJCQkJCQkJTWF4SGNDb250ZXh0U3BhY2UKKwl9Cit9CisKK1BEQ1AtQ2FwYWJpbGl0eS1yNC1leHQgOjo9CQkJU0VRVUVOQ0UgeworCXN1cHBvcnRGb3JSZmMzMDk1CQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CisJCQltYXhST0hDLUNvbnRleHRTZXNzaW9ucwkJCQlNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNAlERUZBVUxUIHMxNiwKKwkJCXJldmVyc2VDb21wcmVzc2lvbkRlcHRoCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQkJCURFRkFVTFQgMAorCQl9CisJfQorfQorCitQRENQLUNhcGFiaWxpdHktcjUtZXh0IDo6PQkJCVNFUVVFTkNFIHsKKwlzdXBwb3J0Rm9yUmZjMzA5NUNvbnRleHRSZWxvY2F0aW9uCQlCT09MRUFOLAorCW1heEhjQ29udGV4dFNwYWNlCQkJCQkJTWF4SGNDb250ZXh0U3BhY2UtcjUtZXh0CU9QVElPTkFMCit9CisKK1BEQ1AtQ2FwYWJpbGl0eS1yNS1leHQyIDo6PQkJCVNFUVVFTkNFIHsKKwlsb3NzbGVzc0RMUkxDLVBEVVNpemVDaGFuZ2UJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5IDo6PQkJU0VRVUVOQ0UgeworCQlmZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQktLSB0ZGRQaHlzQ2hDYXBhYmlsaXR5IGRlc2NyaWJlcyB0aGUgMy44NE1jcHMgVEREIHBoeXNpY2FsIGNoYW5uZWwgY2FwYWJpbGl0eQorCQl0ZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1BoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjcgOjo9CQlTRVFVRU5DRSB7CisJCWZkZFBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlGREQsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlGREQKKwkJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIHRkZFBoeXNDaENhcGFiaWxpdHkgZGVzY3JpYmVzIHRoZSAzLjg0TWNwcyBUREQgcGh5c2ljYWwgY2hhbm5lbCBjYXBhYmlsaXR5CisJCXRkZFBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQKKwkJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIHRkZFBoeXNpY2FsQ2hhQ2FwYWJpbGl0eS03NjggZGVzY3JpYmVzIHRoZSA3LjY4IFRERCBwaHlzaWNhbCBjaGFubmVsIGNhcGFiaWxpdHkKKwkJdGRkUGh5c0NoQ2FwYWJpbGl0eS03NjgJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC03NjgsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQKKwkJfQorfQorCistLSBQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LUxDUi1yNCBkZXNjcmliZXMgdGhlIDEuMjhNY3BzIFRERCBwaHlzaWNhbCBjaGFubmVsIGNhcGFiaWxpdHkKK1BoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCQl0ZGQxMjgtUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0CisJCX0JCQkJCQkJCQkJCU9QVElPTkFMCit9CisKKy0tIFBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktaHNwZHNjaC1yNSBkZXNjcmliZXMgdGhlIEhTLVBEU0NIIHBoeXNpY2FsIGNoYW5uZWwgY2FwYWJpbGl0eQorUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1oc3Bkc2NoLXI1IDo6PQkJU0VRVUVOQ0UgeworCWZkZC1oc3Bkc2NoCQkJCQkJCQkJCUNIT0lDRSB7CisJCXN1cHBvcnRlZAkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQloc2RzY2gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnkJCQkJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKKwkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCQkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teQkJCQkJCQkJCQkJQk9PTEVBTiwKKwkJCWR1bW15MgkJCQkJCQkJCQkJQk9PTEVBTgorCQl9LAorCQl1bnN1cHBvcnRlZAkJCQkJCQkJCQlOVUxMCisJfSwKKwl0ZGQzODQtaHNwZHNjaAkJCQkJCQkJCUNIT0lDRSB7CisJCXN1cHBvcnRlZAkJCQkJCQkJCQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJCXVuc3VwcG9ydGVkCQkJCQkJCQkJCU5VTEwKKwl9LAorCXRkZDEyOC1oc3Bkc2NoCQkJCQkJCQkJQ0hPSUNFIHsKKwkJc3VwcG9ydGVkCQkJCQkJCQkJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKKwkJdW5zdXBwb3J0ZWQJCQkJCQkJCQkJTlVMTAorCX0KK30KKworUE5CU0NILUFsbG9jYXRpb24tcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwkJbnVtYmVyT2ZSZXBldGl0aW9uc1BlclNGTlBlcmlvZAlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQkJYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LCBjMTAsCisJCQkJCQkJCQkJCWMxMiwgYzE0LCBjMTYsIGMxOCwgYzIwLCBjMjQsIGMyOCwgYzMyLAorCQkJCQkJCQkJCQljMzYsIGM0MCwgYzQ4LCBjNTYsIGM2NCwgYzcyLCBjODAgIH0KK30KKworUHJvdG9jb2xFcnJvckNhdXNlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhc24xLVZpb2xhdGlvbk9yRW5jb2RpbmdFcnJvciwKKwkJCQkJCQkJCQltZXNzYWdlVHlwZU5vbmV4aXN0ZW50LAorCQkJCQkJCQkJCW1lc3NhZ2VOb3RDb21wYXRpYmxlV2l0aFJlY2VpdmVyU3RhdGUsCisJCQkJCQkJCQkJaWUtVmFsdWVOb3RDb21wcmVoZW5kZWQsCisJCQkJCQkJCQkJaW5mb3JtYXRpb25FbGVtZW50TWlzc2luZywKKwkJCQkJCQkJCQltZXNzYWdlRXh0ZW5zaW9uTm90Q29tcHJlaGVuZGVkLAorCQkJCQkJCQkJCXNwYXJlMiwgc3BhcmUxIH0KKworUHJvdG9jb2xFcnJvckluZGljYXRvciA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub0Vycm9yLCBlcnJvck9jY3VycmVkIH0KKworUHJvdG9jb2xFcnJvckluZGljYXRvcldpdGhNb3JlSW5mbyA6Oj0gCisJCQkJCQkJCQlDSE9JQ0UgeworCW5vRXJyb3IJCQkJCQkJCU5VTEwsCisJZXJyb3JPY2N1cnJlZAkJCQkJCVNFUVVFTkNFIHsJCQorCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCisJCXByb3RvY29sRXJyb3JJbmZvcm1hdGlvbgkJCVByb3RvY29sRXJyb3JJbmZvcm1hdGlvbgorCX0KK30KKworUHJvdG9jb2xFcnJvck1vcmVJbmZvcm1hdGlvbiA6Oj0JU0VRVUVOQ0UgeworCWRpYWdub3N0aWNzVHlwZQkJCQkJCUNIT0lDRSB7CisJCXR5cGUxCQkJCQkJCQlDSE9JQ0UgeworCQkJYXNuMS1WaW9sYXRpb25PckVuY29kaW5nRXJyb3IJCU5VTEwsCisJCQltZXNzYWdlVHlwZU5vbmV4aXN0ZW50CQkJCU5VTEwsCisJCQltZXNzYWdlTm90Q29tcGF0aWJsZVdpdGhSZWNlaXZlclN0YXRlCisJCQkJCQkJCQkJCQlJZGVudGlmaWNhdGlvbk9mUmVjZWl2ZWRNZXNzYWdlLAorCQkJaWUtVmFsdWVOb3RDb21wcmVoZW5kZWQJCQkJSWRlbnRpZmljYXRpb25PZlJlY2VpdmVkTWVzc2FnZSwKKwkJCWNvbmRpdGlvbmFsSW5mb3JtYXRpb25FbGVtZW50RXJyb3IJSWRlbnRpZmljYXRpb25PZlJlY2VpdmVkTWVzc2FnZSwKKwkJCW1lc3NhZ2VFeHRlbnNpb25Ob3RDb21wcmVoZW5kZWQJCUlkZW50aWZpY2F0aW9uT2ZSZWNlaXZlZE1lc3NhZ2UsCisJCQlzcGFyZTEJCQkJCQkJCU5VTEwsIAorCQkJc3BhcmUyCQkJCQkJCQlOVUxMIAorCQl9LAorCQlzcGFyZQkJCQkJCQkJTlVMTAorCX0KK30KKworUmFkaW9GcmVxdWVuY3lCYW5kRkREIDo6PQkJCUVOVU1FUkFURUQgeworCS0tIGZkZDIxMDAsIGZkZDE5MDAsIGZkZDE4MDAgY29ycmVzcG9uZCB0byBCYW5kIEksIEJhbmQgSUkgYW5kIEJhbmQgSUlJIHJlc3BlY3RpdmVseQorCQkJCQkJCQkJCWZkZDIxMDAsCisJCQkJCQkJCQkJZmRkMTkwMCwKKwkJCQkJCQkJCQlmZGQxODAwLCAKKwkJCQkJCQkJCQliYW5kVkksIAorCQkJCQkJCQkJCWJhbmRJViwKKwkJCQkJCQkJCQliYW5kViwKKwkJCQkJCQkJCQliYW5kVklJLAorCQkJCQkJCQkJCWV4dGVuc2lvbi1pbmRpY2F0b3IgfQorCitSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWJhbmRWSUlJLAorCQkJCQkJCQkJCWJhbmRJWCwKKwkJCQkJCQkJCQliYW5kWCwKKwkJCQkJCQkJCQliYW5kWEksCisJCQkJCQkJCQkJYmFuZFhJSSwKKwkJCQkJCQkJCQliYW5kWElJSSwKKwkJCQkJCQkJCQliYW5kWElWLAorCQkJCQkJCQkJCWJhbmRYViwKKwkJCQkJCQkJCQliYW5kWFZJLAorCQkJCQkJCQkJCWJhbmRYVklJLCAKKwkJCQkJCQkJCQliYW5kWFZJSUksCisJCQkJCQkJCQkJYmFuZFhJWCwKKwkJCQkJCQkJCQliYW5kWFgsCisJCQkJCQkJCQkJYmFuZFhYSSwKKwkJCQkJCQkJCQliYW5kWFhJSSwKKwkJCQkJCQkJCQlleHRlbnNpb24taW5kaWNhdG9yIH0KKworUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWEsIGIsIGMsIGFiLCBhYywgYmMsIGFiYywgc3BhcmUgfQorCitSYWRpb0ZyZXF1ZW5jeUJhbmRUREQgOjo9CQkJRU5VTUVSQVRFRCB7YSwgYiwgYywgc3BhcmV9CisKK1JhZGlvRnJlcXVlbmN5QmFuZEdTTSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlnc200NTAsCisJCQkJCQkJCQkJZ3NtNDgwLAorCQkJCQkJCQkJCWdzbTg1MCwKKwkJCQkJCQkJCQlnc205MDBQLAorCQkJCQkJCQkJCWdzbTkwMEUsCisJCQkJCQkJCQkJZ3NtMTgwMCwKKwkJCQkJCQkJCQlnc20xOTAwLAorCQkJCQkJCQkJCXNwYXJlOSwgc3BhcmU4LCBzcGFyZTcsIHNwYXJlNiwgc3BhcmU1LAorCQkJCQkJCQkJCXNwYXJlNCwgc3BhcmUzLCBzcGFyZTIsIHNwYXJlMX0KKworUmItdGltZXItaW5kaWNhdG9yIDo6PQkJCQlTRVFVRU5DRSB7CisJdDMxNC1leHBpcmVkCQkJCQkJQk9PTEVBTiwKKwl0MzE1LWV4cGlyZWQJCQkJCQlCT09MRUFOIH0KKworUmUtRXN0YWJsaXNobWVudFRpbWVyIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXVzZVQzMTQsIHVzZVQzMTUKK30KKworUmVkaXJlY3Rpb25JbmZvIDo6PQkJCQkJQ0hPSUNFIHsKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKKwlpbnRlclJBVEluZm8JCQkJCQlJbnRlclJBVEluZm8KK30KKworUmVkaXJlY3Rpb25JbmZvLXI2IDo6PQkJCQlDSE9JQ0UgeworCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvLAorCWludGVyUkFUSW5mbwkJCQkJCUludGVyUkFUSW5mby1yNgorfQorCitSZWplY3Rpb25DYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNvbmdlc3Rpb24sCisJCQkJCQkJCQkJdW5zcGVjaWZpZWQgfQorCitSZWxlYXNlQ2F1c2UgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub3JtYWxFdmVudCwKKwkJCQkJCQkJCQl1bnNwZWNpZmllZCwKKwkJCQkJCQkJCQlwcmUtZW1wdGl2ZVJlbGVhc2UsCisJCQkJCQkJCQkJY29uZ2VzdGlvbiwKKwkJCQkJCQkJCQlyZS1lc3RhYmxpc2htZW50UmVqZWN0LAorCQkJCQkJCQkJCWRpcmVjdGVkc2lnbmFsbGluZ2Nvbm5lY3Rpb25yZS1lc3RhYmxpc2htZW50LAorCQkJCQkJCQkJCXVzZXJJbmFjdGl2aXR5LAorCQkJCQkJCQkJCXNwYXJlIH0KKworUkYtQ2FwYWJpbGl0eSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwkJZmRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1Qb3dlckNsYXNzCQkJCQlVRS1Qb3dlckNsYXNzLAorCQkJdHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24JCQlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgorCQl9CQkJCQkJCQkJT1BUSU9OQUwsCisJCXRkZFJGLUNhcGFiaWxpdHkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtUG93ZXJDbGFzcwkJCQlVRS1Qb3dlckNsYXNzLAorCQkJcmFkaW9GcmVxdWVuY3lURERCYW5kTGlzdAlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0LAorCQkJY2hpcFJhdGVDYXBhYmlsaXR5CQkJQ2hpcFJhdGVDYXBhYmlsaXR5CisJCX0JCQkJCQkJCQlPUFRJT05BTAorfQorCitSRi1DYXBhYmlsaXR5LXI0LWV4dCA6Oj0JCQkJU0VRVUVOQ0UgeworCQl0ZGRSRi1DYXBhYmlsaXR5CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVlLVBvd2VyQ2xhc3MJCQkJVUUtUG93ZXJDbGFzcywKKwkJCXJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKKwkJCWNoaXBSYXRlQ2FwYWJpbGl0eQkJCUNoaXBSYXRlQ2FwYWJpbGl0eQorCQl9CQkJCQkJCQkJT1BUSU9OQUwKK30KKworUkYtQ2FwYWJpbGl0eS1yNyA6Oj0JCQkJU0VRVUVOQ0UgeworCQlmZGRSRi1DYXBhYmlsaXR5CQkJCVNFUVVFTkNFIHsKKwkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3MsCisJCQl0eFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgkJCVR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCisJCX0JCQkJCQkJCQlPUFRJT05BTCwKKwkJdGRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1Qb3dlckNsYXNzCQkJCQlVRS1Qb3dlckNsYXNzLAorCQkJcmFkaW9GcmVxdWVuY3lURERCYW5kTGlzdAkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKKwkJCWNoaXBSYXRlQ2FwYWJpbGl0eQkJCQlDaGlwUmF0ZUNhcGFiaWxpdHktcjcKKwkJfQlPUFRJT05BTAorfQorCitSTEMtQ2FwYWJpbGl0eSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBJZiBwcmVzZW50LCB0aGUgInRvdGFsUkxDLUFNLUJ1ZmZlclNpemUiIGluIHRoZSBJRSAiUkxDLUNhcGFiaWxpdHktcjUtZXh0IiBvdmVycmlkZXMgdGhlCisJLS0gY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGlzIElFLiBUaGUgdmFsdWUgaW4gdGhpcyBJRSBtYXkgYmUgdXNlZCBieSBhIHByZS1SRUwtNSBVVFJBTi4KKwl0b3RhbFJMQy1BTS1CdWZmZXJTaXplCQkJCVRvdGFsUkxDLUFNLUJ1ZmZlclNpemUsCisJbWF4aW11bVJMQy1XaW5kb3dTaXplCQkJCU1heGltdW1STEMtV2luZG93U2l6ZSwKKwltYXhpbXVtQU0tRW50aXR5TnVtYmVyCQkJCU1heGltdW1BTS1FbnRpdHlOdW1iZXJSTEMtQ2FwCit9CisKK1JMQy1DYXBhYmlsaXR5LXI1LWV4dCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0b3RhbFJMQy1BTS1CdWZmZXJTaXplCQkJCVRvdGFsUkxDLUFNLUJ1ZmZlclNpemUtcjUtZXh0CQlPUFRJT05BTAorfQorCitSUkMtQ29ubmVjdGlvblJlbGVhc2VJbmZvcm1hdGlvbiA6Oj0JQ0hPSUNFIHsKKwlub1JlbGVhc2UJCQkJCQkJCU5VTEwsCisJcmVsZWFzZQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcmVsZWFzZUNhdXNlCQkJCQkJCVJlbGVhc2VDYXVzZQorCX0KK30KKworUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlciA6Oj0JCUlOVEVHRVIgKDAuLjE1KQorCisKK1JSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXJMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoNC4uNSkpIE9GCisJCQkJCQkJCQkJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlcgorCitSUkMtU3RhdGVJbmRpY2F0b3IgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNlbGwtRENILCBjZWxsLUZBQ0gsIGNlbGwtUENILCB1cmEtUENIIH0KKworUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciA6Oj0JCUlOVEVHRVIgKDAuLjMpCisKK1MtUk5USSA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjApKQorCitTLVJOVEktMiA6Oj0JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMCkpCisKK1NlY3VyaXR5Q2FwYWJpbGl0eSA6Oj0JCQkJU0VRVUVOQ0UgeworCWNpcGhlcmluZ0FsZ29yaXRobUNhcAkJCQlCSVQgU1RSSU5HIHsKKwkJCQkJCQkJCQktLSBGb3IgZWFjaCBiaXQgdmFsdWUg0jDTIG1lYW5zIGZhbHNlLyBub3Qgc3VwcG9ydGVkCisJCQkJCQkJCQkJCXNwYXJlMTUoMCksCisJCQkJCQkJCQkJCXNwYXJlMTQoMSksCisJCQkJCQkJCQkJCXNwYXJlMTMoMiksCisJCQkJCQkJCQkJCXNwYXJlMTIoMyksCisJCQkJCQkJCQkJCXNwYXJlMTEoNCksCisJCQkJCQkJCQkJCXNwYXJlMTAoNSksCisJCQkJCQkJCQkJCXNwYXJlOSg2KSwKKwkJCQkJCQkJCQkJc3BhcmU4KDcpLAorCQkJCQkJCQkJCQlzcGFyZTcoOCksCisJCQkJCQkJCQkJCXNwYXJlNig5KSwKKwkJCQkJCQkJCQkJc3BhcmU1KDEwKSwKKwkJCQkJCQkJCQkJc3BhcmU0KDExKSwKKwkJCQkJCQkJCQkJc3BhcmUzKDEyKSwKKwkJCQkJCQkJCQkJc3BhcmUyKDEzKSwKKwkJCQkJCQkJCQkJdWVhMSgxNCksCisJCQkJCQkJCQkJCXVlYTAoMTUpCisJCQkJCQkJCQkJCX0JKFNJWkUgKDE2KSksCisJaW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobUNhcAkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJLS0gRm9yIGVhY2ggYml0IHZhbHVlINIw0yBtZWFucyBmYWxzZS8gbm90IHN1cHBvcnRlZAorCQkJCQkJCQkJCQlzcGFyZTE1KDApLAorCQkJCQkJCQkJCQlzcGFyZTE0KDEpLAorCQkJCQkJCQkJCQlzcGFyZTEzKDIpLAorCQkJCQkJCQkJCQlzcGFyZTEyKDMpLAorCQkJCQkJCQkJCQlzcGFyZTExKDQpLAorCQkJCQkJCQkJCQlzcGFyZTEwKDUpLAorCQkJCQkJCQkJCQlzcGFyZTkoNiksCisJCQkJCQkJCQkJCXNwYXJlOCg3KSwKKwkJCQkJCQkJCQkJc3BhcmU3KDgpLAorCQkJCQkJCQkJCQlzcGFyZTYoOSksCisJCQkJCQkJCQkJCXNwYXJlNSgxMCksCisJCQkJCQkJCQkJCXNwYXJlNCgxMSksCisJCQkJCQkJCQkJCXNwYXJlMygxMiksCisJCQkJCQkJCQkJCXNwYXJlMigxMyksCisJCQkJCQkJCQkJCXVpYTEoMTQpLAorCQkJCQkJCQkJCQlzcGFyZTAoMTUpCisJCQkJCQkJCQkJIAl9IAkgKFNJWkUgKDE2KSkKK30KKworU2VydmluZy1IU0RTQ0gtQ2VsbEluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCWRlbHRhQUNLCQkJCQkJRGVsdGFBQ0sJCQkJCU9QVElPTkFMLAorCWRlbHRhTkFDSwkJCQkJCURlbHRhTkFDSwkJCQkJT1BUSU9OQUwsCisJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZSwKKwlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCWRsLWhzcGRzY2gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTCwKKwloYXJxSW5mbwkJCQkJCUhBUlEtSW5mbyAJCQkJCU9QVElPTkFMLAorCW1hYy1oc1Jlc2V0SW5kaWNhdG9yCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCU9QVElPTkFMIAorfQorCitTaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1SZWNlcHRpb24gOjo9IENIT0lDRSB7CisJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwlzdXBwb3J0ZWQJCQkJCQkJU0VRVUVOQ0UgeworCQltYXhOb1NDQ1BDSC1STAkJCQkJCU1heE5vU0NDUENILVJMLAorCQktLSBzaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1EUERDSC1SZWNlcHRpb24gaXMgYXBwbGljYWJsZSBvbmx5IGlmIAorCQktLSB0aGUgSUUgU3VwcG9ydCBvZiBQRFNDSCA9IFRSVUUKKwkJLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBEUERDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdCAoc2VlIHRhYnVsYXIpLiBUaGUgCisJCS0tIG5hbWUgaXMgbm90IGNoYW5nZWQsIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KKwkJc2ltdWx0YW5lb3VzU0NDUENILURQQ0gtRFBEQ0gtUmVjZXB0aW9uCQlCT09MRUFOCisJfQorfQorCitTUk5DLUlkZW50aXR5IDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMTIpKQorCisKK1NUQVJULVZhbHVlIDo6PQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwKSkKKworU1RBUlRMaXN0IDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCVNUQVJUU2luZ2xlCisKK1NUQVJUU2luZ2xlIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJc3RhcnQtVmFsdWUJCQkJCQkJU1RBUlQtVmFsdWUJCQkKK30KKworQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI1IDo6PQlTRVFVRU5DRSB7CisJdWUtUmFkaW9DYXBhYmlsaXR5RkREVXBkYXRlUmVxdWlyZW1lbnQtRkRECUJPT0xFQU4sCisJdWUtUmFkaW9DYXBhYmlsaXR5VEREVXBkYXRlUmVxdWlyZW1lbnQtVEREMzg0CUJPT0xFQU4sCisJdWUtUmFkaW9DYXBhYmlsaXR5VEREVXBkYXRlUmVxdWlyZW1lbnQtVEREMTI4CUJPT0xFQU4sCisJc3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0CQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QtcjUJCU9QVElPTkFMCit9CisKK1N5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZ3NtIH0KKworU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEtdjU5MGV4dCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWdlcmFuSXUgfQorCitTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS1yNSA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWdzbSwgZ2VyYW5JdSB9CisKK1N5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFN5c3RlbUNhcGFiaWxpdHkpKSBPRiAKKwkJCQkJCQkJCQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcQorCitTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QtcjUgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhTeXN0ZW1DYXBhYmlsaXR5KSkgT0YgCisJCQkJCQkJCQkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEtcjUKKworVC0zMDAgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zMTAwLCBtczIwMCwgbXM0MDAsIG1zNjAwLCBtczgwMCwKKwkJCQkJCQkJCQltczEwMDAsIG1zMTIwMCwgbXMxNDAwLCBtczE2MDAsCisJCQkJCQkJCQkJbXMxODAwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLAorCQkJCQkJCQkJCW1zNjAwMCwgbXM4MDAwIH0KKworVC0zMDEgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zMTAwLCBtczIwMCwgbXM0MDAsIG1zNjAwLCBtczgwMCwKKwkJCQkJCQkJCQltczEwMDAsIG1zMTIwMCwgbXMxNDAwLCBtczE2MDAsCisJCQkJCQkJCQkJbXMxODAwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLAorCQkJCQkJCQkJCW1zNjAwMCwgbXM4MDAwLCBzcGFyZSB9CisKK1QtMzAyIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltczEwMCwgbXMyMDAsIG1zNDAwLCBtczYwMCwgbXM4MDAsCisJCQkJCQkJCQkJbXMxMDAwLCBtczEyMDAsIG1zMTQwMCwgbXMxNjAwLAorCQkJCQkJCQkJCW1zMTgwMCwgbXMyMDAwLCBtczMwMDAsIG1zNDAwMCwKKwkJCQkJCQkJCQltczYwMDAsIG1zODAwMCwgc3BhcmUgfQorCitULTMwNCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXMxMDAsIG1zMjAwLCBtczQwMCwgCisJCQkJCQkJCQkJbXMxMDAwLCBtczIwMDAsIHNwYXJlMywgc3BhcmUyLCBzcGFyZTEgfQorCitULTMwNSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9VcGRhdGUsIG01LCBtMTAsIG0zMCwKKwkJCQkJCQkJCQltNjAsIG0xMjAsIG0zNjAsIG03MjAgfQorCitULTMwNyA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczUsIHMxMCwgczE1LCBzMjAsCisJCQkJCQkJCQkJczMwLCBzNDAsIHM1MCwgc3BhcmUgfQorCitULTMwOCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXM0MCwgbXM4MCwgbXMxNjAsIG1zMzIwIH0KKworVC0zMDkgOjo9CQkJCQkJCUlOVEVHRVIgKDEuLjgpCisKK1QtMzEwIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltczQwLCBtczgwLCBtczEyMCwgbXMxNjAsCisJCQkJCQkJCQkJbXMyMDAsIG1zMjQwLCBtczI4MCwgbXMzMjAgfQorCitULTMxMSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXMyNTAsIG1zNTAwLCBtczc1MCwgbXMxMDAwLAorCQkJCQkJCQkJCW1zMTI1MCwgbXMxNTAwLCBtczE3NTAsIG1zMjAwMCB9CisKKy0tIFRoZSB2YWx1ZSAwIGZvciBULTMxMiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KK1QtMzEyIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4xNSkKKworVC0zMTMgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjE1KQorCitULTMxNCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczAsIHMyLCBzNCwgczYsIHM4LAorCQkJCQkJCQkJCXMxMiwgczE2LCBzMjAgfQorCitULTMxNSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczAsIHMxMCwgczMwLCBzNjAsIHMxODAsCisJCQkJCQkJCQkJczYwMCwgczEyMDAsIHMxODAwIH0KKworVC0zMTYgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMwLCBzMTAsIHMyMCwgczMwLCBzNDAsCisJCQkJCQkJCQkJczUwLCBzLWluZiwgc3BhcmUgfQorCistLSBBbGwgdGhlIHZhbHVlcyBhcmUgY2hhbmdlZCB0byAiaW5maW5pdHkiIGluIFJlbC01CitULTMxNyA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJaW5maW5pdHkwLCAgaW5maW5pdHkxLCAgaW5maW5pdHkyLCBpbmZpbml0eTMsIGluZmluaXR5NCwKKwkJCQkJCQkJCQlpbmZpbml0eTUsIGluZmluaXR5NiwgaW5maW5pdHk3fQorCitULTMxOCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXMyNTAsIG1zNTAwLCBtczc1MCwgbXMxMDAwLCBtczEyNTAsIG1zMTUwMCwKKwkJCQkJCQkJCQltczE3NTAsIG1zMjAwMCwgbXMzMDAwLCBtczQwMDAsIG1zNjAwMCwgbXM4MDAwLAorCQkJCQkJCQkJCW1zMTAwMDAsIG1zMTIwMDAsIG1zMTYwMDAgfQorCitULUNQQ0ggOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWN0MCwgY3QxIH0KKworVE1TSS1hbmQtTEFJLUdTTS1NQVAgOjo9CQkJU0VRVUVOQ0UgeworCXRtc2kJCQkJCQkJCVRNU0ktR1NNLU1BUCwKKwlsYWkJCQkJCQkJCQlMQUkKK30KKworVE1TSS1EUy00MSA6Oj0JCQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDIuLjE3KSkKKworVG90YWxSTEMtQU0tQnVmZmVyU2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlkdW1teSwga2IxMCwga2I1MCwga2IxMDAsCisJCQkJCQkJCQkJa2IxNTAsIGtiNTAwLCBrYjEwMDAsIHNwYXJlIH0KKworVG90YWxSTEMtQU0tQnVmZmVyU2l6ZS1yNS1leHQgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWtiMjAwLCBrYjMwMCwga2I0MDAsIGtiNzUwIH0KKworLS0gQWN0dWFsIHZhbHVlIFRyYW5zbWlzc2lvblByb2JhYmlsaXR5ID0gSUUgdmFsdWUgKiAwLjEyNQorVHJhbnNtaXNzaW9uUHJvYmFiaWxpdHkgOjo9CQkJSU5URUdFUiAoMS4uOCkKKworVHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkgOjo9CQlTRVFVRU5DRSB7CisJZGwtVHJhbnNDaENhcGFiaWxpdHkJCQkJREwtVHJhbnNDaENhcGFiaWxpdHksCisJdWwtVHJhbnNDaENhcGFiaWxpdHkJCQkJVUwtVHJhbnNDaENhcGFiaWxpdHkJCit9CisKK1R1cmJvU3VwcG9ydCA6Oj0JCQkJCUNIT0lDRSB7CisJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwlzdXBwb3J0ZWQJCQkJCQkJTWF4Tm9CaXRzCit9CisKKy0tIFZhbHVlcyBkZWZpbmVkIGFzIHNwYXJlIHNoYWxsIG5vdCBiZSBzZW50IGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wuIElmIGEgc3BhcmUgdmFsdWUgaXMKKy0tIHJlY2VpdmVkLCBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgJ2RlZmF1bHQtUnhUWC1zcGFyYXRpb24nLgorVHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24gOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZGVmYXVsdC1UeFJ4LXNlcGFyYXRpb24sIHNwYXJlMiwgc3BhcmUxIH0KKworVS1STlRJIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJc3JuYy1JZGVudGl0eQkJCQkJCVNSTkMtSWRlbnRpdHksCisJcy1STlRJCQkJCQkJCQlTLVJOVEkKK30KKworVS1STlRJLUdyb3VwIDo6PQkJCQkJQ0hPSUNFIHsKKy0tIFRBQlVMQVI6IG5vdCBmb2xsb3dpbmcgdGhlIHRhYnVsYXIgc3RyaWN0bHksIGJ1dCB0aGlzIHdpbGwgbW9zdCBsaWtlbHkgc2F2ZSBiaXRzCisJYWxsCQkJCQkJCQkJTlVMTCwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMxKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMgkJCQlCSVQgU1RSSU5HIChTSVpFICgzMCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjMJCQkJQklUIFNUUklORyAoU0laRSAoMjkpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWI0CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI4KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iNQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNykpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjYJCQkJQklUIFNUUklORyAoU0laRSAoMjYpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWI3CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI1KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iOAkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjkJCQkJQklUIFNUUklORyAoU0laRSAoMjMpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxMAkJCQlCSVQgU1RSSU5HIChTSVpFICgyMikpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjExCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIxKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTIJCQkJQklUIFNUUklORyAoU0laRSAoMjApKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxMwkJCQlCSVQgU1RSSU5HIChTSVpFICgxOSkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjE0CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE4KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTUJCQkJQklUIFNUUklORyAoU0laRSAoMTcpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxNgkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjE3CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE1KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTgJCQkJQklUIFNUUklORyAoU0laRSAoMTQpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxOQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMykpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjIwCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEyKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMjEJCQkJQklUIFNUUklORyAoU0laRSAoMTEpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyMgkJCQlCSVQgU1RSSU5HIChTSVpFICgxMCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjIzCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDkpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyNAkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMjUJCQkJQklUIFNUUklORyAoU0laRSAoNykpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjI2CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDYpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyNwkJCQlCSVQgU1RSSU5HIChTSVpFICg1KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMjgJCQkJQklUIFNUUklORyAoU0laRSAoNCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjI5CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIzMAkJCQlCSVQgU1RSSU5HIChTSVpFICgyKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMzEJCQkJQklUIFNUUklORyAoU0laRSAoMSkpCit9CisKK1UtUk5USS1TaG9ydCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlzcm5jLUlkZW50aXR5CQkJCQkJU1JOQy1JZGVudGl0eSwKKwlzLVJOVEktMgkJCQkJCQlTLVJOVEktMgorfQorCitVRS1DYXBhYmlsaXR5Q29udGFpbmVyLUlFcyA6Oj0gCQkJU0VRVUVOQ0UgeworLS0gQ29udGFpbmVyIGZvciB0cmFuc3BhcmVudCB0cmFuc2ZlciBvZiBjYXBhYmlsaXR5IGluZm9ybWF0aW9uIG5vdCByZWxhdGVkIHRvCistLSBmZWF0dXJlcyBmb3Igd2hpY2ggZWFybHkgaW1wbGVtZW50YXRpb24gaXMgZGVzaXJlZAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dCwKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5LXY2OTBleHQJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQJT1BUSU9OQUwsCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cyA6Oj0JCVNFUVVFTkNFIHsKKy0tIE9wdGlvbmFsIGlzIHVzZWQgYWxzbyBmb3IgcGFyYW1ldGVycyBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIGxhc3Qgb25lIHJlYWQgaW4gU0lCMQorLS0gdC0zMDEgYW5kIG4tMzAxIHNob3VsZCBub3QgYmUgdXNlZCBieSB0aGUgVUUgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJdC0zMDEJCQkJCQkJCVQtMzAxCQkJCQkJCQlERUZBVUxUIG1zMjAwMCwKKwluLTMwMQkJCQkJCQkJTi0zMDEJCQkJCQkJCURFRkFVTFQgMiwKKwl0LTMwMgkJCQkJCQkJVC0zMDIJCQkJCQkJCURFRkFVTFQgbXM0MDAwLAorCW4tMzAyCQkJCQkJCQlOLTMwMgkJCQkJCQkJREVGQVVMVCAzLAorCXQtMzA0CQkJCQkJCQlULTMwNAkJCQkJCQkJREVGQVVMVCBtczIwMDAsCisJbi0zMDQJCQkJCQkJCU4tMzA0CQkJCQkJCQlERUZBVUxUIDIsCisJdC0zMDUJCQkJCQkJCVQtMzA1CQkJCQkJCQlERUZBVUxUIG0zMCwKKwl0LTMwNwkJCQkJCQkJVC0zMDcJCQkJCQkJCURFRkFVTFQgczMwLAorCXQtMzA4CQkJCQkJCQlULTMwOAkJCQkJCQkJREVGQVVMVCBtczE2MCwKKwl0LTMwOQkJCQkJCQkJVC0zMDkJCQkJCQkJCURFRkFVTFQgNSwKKwl0LTMxMAkJCQkJCQkJVC0zMTAJCQkJCQkJCURFRkFVTFQgbXMxNjAsCisJbi0zMTAJCQkJCQkJCU4tMzEwCQkJCQkJCQlERUZBVUxUIDQsCisJdC0zMTEJCQkJCQkJCVQtMzExCQkJCQkJCQlERUZBVUxUIG1zMjAwMCwKKwl0LTMxMgkJCQkJCQkJVC0zMTIJCQkJCQkJCURFRkFVTFQgMSwKKwktLSBuLTMxMiBzaGFsbCBiZSBpZ25vcmVkIGlmIG4tMzEyIGluIFVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCBpcyBwcmVzZW50LCBhbmQgdGhlCisJLS0gdmFsdWUgb2YgdGhhdCBlbGVtZW50IHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4KKwluLTMxMgkJCQkJCQkJTi0zMTIJCQkJCQkJCURFRkFVTFQgczEsCisJdC0zMTMJCQkJCQkJCVQtMzEzCQkJCQkJCQlERUZBVUxUIDMsCisJbi0zMTMJCQkJCQkJCU4tMzEzCQkJCQkJCQlERUZBVUxUIHMyMCwKKwl0LTMxNAkJCQkJCQkJVC0zMTQJCQkJCQkJCURFRkFVTFQgczEyLAorCXQtMzE1CQkJCQkJCQlULTMxNQkJCQkJCQkJREVGQVVMVCBzMTgwLAorCS0tIG4tMzE1IHNoYWxsIGJlIGlnbm9yZWQgaWYgbi0zMTUgaW4gVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0IGlzIHByZXNlbnQsIGFuZCB0aGUKKwktLSB2YWx1ZSBvZiB0aGF0IGVsZW1lbnQgc2hhbGwgYmUgdXNlZCBpbnN0ZWFkLgorCW4tMzE1CQkJCQkJCQlOLTMxNQkJCQkJCQkJREVGQVVMVCBzMSwKKwl0LTMxNgkJCQkJCQkJVC0zMTYJCQkJCQkJCURFRkFVTFQgczMwLAorCXQtMzE3CQkJCQkJCQlULTMxNwkJCQkJCQkJREVGQVVMVCBpbmZpbml0eTQKK30KKworVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0IDo6PQkJU0VRVUVOQ0UgeworCW4tMzEyCQkJCQkJCQlOLTMxMmV4dAkJCQkJCQkJT1BUSU9OQUwsCisJbi0zMTUJCQkJCQkJCU4tMzE1ZXh0CQkJCQkJCQlPUFRJT05BTAorfQorCitVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXI1IDo6PQkJU0VRVUVOQ0UgeworLS0gT3B0aW9uYWwgaXMgdXNlZCBhbHNvIGZvciBwYXJhbWV0ZXJzIGZvciB3aGljaCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgbGFzdCBvbmUgcmVhZCBpbiBTSUIxCistLSB0LTMwMSBhbmQgbi0zMDEgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IHRoZSBVRSBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwl0LTMwMQkJCQkJCQkJVC0zMDEJCQkJCQkJCURFRkFVTFQgbXMyMDAwLAorCW4tMzAxCQkJCQkJCQlOLTMwMQkJCQkJCQkJREVGQVVMVCAyLAorCXQtMzAyCQkJCQkJCQlULTMwMgkJCQkJCQkJREVGQVVMVCBtczQwMDAsCisJbi0zMDIJCQkJCQkJCU4tMzAyCQkJCQkJCQlERUZBVUxUIDMsCisJdC0zMDQJCQkJCQkJCVQtMzA0CQkJCQkJCQlERUZBVUxUIG1zMjAwMCwKKwluLTMwNAkJCQkJCQkJTi0zMDQJCQkJCQkJCURFRkFVTFQgMiwKKwl0LTMwNQkJCQkJCQkJVC0zMDUJCQkJCQkJCURFRkFVTFQgbTMwLAorCXQtMzA3CQkJCQkJCQlULTMwNwkJCQkJCQkJREVGQVVMVCBzMzAsCisJdC0zMDgJCQkJCQkJCVQtMzA4CQkJCQkJCQlERUZBVUxUIG1zMTYwLAorCXQtMzA5CQkJCQkJCQlULTMwOQkJCQkJCQkJREVGQVVMVCA1LAorCXQtMzEwCQkJCQkJCQlULTMxMAkJCQkJCQkJREVGQVVMVCBtczE2MCwKKwluLTMxMAkJCQkJCQkJTi0zMTAJCQkJCQkJCURFRkFVTFQgNCwKKwl0LTMxMQkJCQkJCQkJVC0zMTEJCQkJCQkJCURFRkFVTFQgbXMyMDAwLAorCXQtMzEyCQkJCQkJCQlULTMxMgkJCQkJCQkJREVGQVVMVCAxLAorCW4tMzEyCQkJCQkJCQlOLTMxMi1yNQkJCQkJCQlERUZBVUxUIHMxLAorCXQtMzEzCQkJCQkJCQlULTMxMwkJCQkJCQkJREVGQVVMVCAzLAorCW4tMzEzCQkJCQkJCQlOLTMxMwkJCQkJCQkJREVGQVVMVCBzMjAsCisJdC0zMTQJCQkJCQkJCVQtMzE0CQkJCQkJCQlERUZBVUxUIHMxMiwKKwl0LTMxNQkJCQkJCQkJVC0zMTUJCQkJCQkJCURFRkFVTFQgczE4MCwKKwluLTMxNQkJCQkJCQkJTi0zMTUtcjUJCQkJCQkJREVGQVVMVCBzMSwKKwl0LTMxNgkJCQkJCQkJVC0zMTYJCQkJCQkJCURFRkFVTFQgczMwLAorCXQtMzE3CQkJCQkJCQlULTMxNwkJCQkJCQkJREVGQVVMVCBpbmZpbml0eTQKK30KKworVUUtSWRsZVRpbWVyc0FuZENvbnN0YW50cyA6Oj0JCVNFUVVFTkNFIHsKKwl0LTMwMAkJCQkJCQkJVC0zMDAsCisJbi0zMDAJCQkJCQkJCU4tMzAwLAorCXQtMzEyCQkJCQkJCQlULTMxMiwKKwktLSBuLTMxMiBzaGFsbCBiZSBpZ25vcmVkIGlmIG4tMzEyIGluIFVFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCBpcyBwcmVzZW50LCBhbmQgdGhlCisJLS0gdmFsdWUgb2YgdGhhdCBlbGVtZW50IHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4KKwluLTMxMgkJCQkJCQkJTi0zMTIJCit9CisKK1VFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCA6Oj0JCVNFUVVFTkNFIHsKKwluLTMxMgkJCQkJCQkJTi0zMTJleHQJCQkJCQkJCU9QVElPTkFMCit9CisKK1VFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5IDo6PQkJU0VRVUVOQ0UgeworCW11bHRpUkFULUNhcGFiaWxpdHlMaXN0CQkJCU11bHRpUkFULUNhcGFiaWxpdHksCisJbXVsdGlNb2RlQ2FwYWJpbGl0eQkJCQkJTXVsdGlNb2RlQ2FwYWJpbGl0eQorfQorCitVRS1Qb3dlckNsYXNzIDo6PQkJCQkJSU5URUdFUiAoMS4uNCkKKworVUUtUG93ZXJDbGFzc0V4dCA6Oj0JCQkJRU5VTUVSQVRFRCB7Y2xhc3MxLCBjbGFzczIsIGNsYXNzMywgY2xhc3M0LAorCQkJCQkJCQkJCSBzcGFyZTQsIHNwYXJlMywgc3BhcmUyLCBzcGFyZTEgfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkgOjo9CQlTRVFVRU5DRSB7CisJLS0gVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IGlzIGNvbXBhdGlibGUgd2l0aCBSOTksIGFsdGhvdWdoIGFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yIAorCS0tIGlzIHJlbW92ZWQgZnJvbSB0aGlzIElFLCBzaW5jZSBpdHMgZW5jb2RpbmcgZGlkIG5vdCBkb2VzIGluIGJpdHMuIFRoZSAKKwktLSBhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciBpcyBwcm92aWRlZCBpbiB0aGUgcmVsZXZhbnQgUkVMLTQgZXh0ZW5zaW9uIElFcy4KKwlwZGNwLUNhcGFiaWxpdHkJCQkJCQlQRENQLUNhcGFiaWxpdHksCisJcmxjLUNhcGFiaWxpdHkJCQkJCQlSTEMtQ2FwYWJpbGl0eSwKKwl0cmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eQkJCVRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5LAorCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LAorCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHkJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LAorCXVlLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5CQkJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHksCisJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCisJdWUtcG9zaXRpb25pbmctQ2FwYWJpbGl0eQkJCVVFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHksCisJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJT1BUSU9OQUwKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5SW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCisJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QJCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dCA6Oj0JU0VRVUVOQ0UgeworCXVlLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12MzgwCQlVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjM4MAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dCA6Oj0JU0VRVUVOQ0UgeworCXVlLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12M2EwCQlVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNhMAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dCA6Oj0JU0VRVUVOQ0UgeworCXVlLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12M2cwCQlVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNnMAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dCA6Oj0JU0VRVUVOQ0UgeworCXVlLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdDIJCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdDIsCisJLS0gVGhpcyBJRSBzaGFsbCBiZSBpbmNsdWRlZCBpZiB0aGUgVUUgYWxzbyBzdXBwb3J0cyBCYW5kIEktVklJCisJdWUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QtZXh0CU9QVElPTkFMCit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjkwZXh0IDo6PSBTRVFVRU5DRSB7CisJCXBoeXNpY2FsY2hhbm5lbGNhcGFiaWxpdHktZWRjaAlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYsCisJCS0tIFRBQlVMQVI6IGRldmljZVR5cGUgaXMgTUQgaW4gdGFidWxhciBkZXNjcmlwdGlvbgorCQktLSBEZWZhdWx0IHZhbHVlIGlzICdkb2VzQmVuZWZpdEZyb21CYXR0ZXJ5Q29uc3VtcHRpb25PcHRpbWlzYXRpb24nCisJCWRldmljZVR5cGUJCUVOVU1FUkFURUQgeyBkb2VzTm90QmVuZWZpdEZyb21CYXR0ZXJ5Q29uc3VtcHRpb25PcHRpbWlzYXRpb24gfQlPUFRJT05BTAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dCA6Oj0JCVNFUVVFTkNFIHsKKwlyZi1DYXBhYmlsaXR5CQkJCQkJCQlSRi1DYXBhYmlsaXR5LXI3CQkJCU9QVElPTkFMLAorCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjcJCQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNwlPUFRJT05BTAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QyIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKKwkJCQkJCQkJCQkJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGREQyCisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkREMiA6Oj0JU0VRVUVOQ0UgeworCXJhZGlvRnJlcXVlbmN5QmFuZEZERDIJCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkREMiwKKwlmZGRSRi1DYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCXVlLVBvd2VyQ2xhc3MJCQkJCQlVRS1Qb3dlckNsYXNzRXh0LAorCQl0eFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgkJCQlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgorCX0JCU9QVElPTkFMLAorCW1lYXN1cmVtZW50Q2FwYWJpbGl0eTIJCQkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5RXh0MgorfQorCisKK1VFLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12MzgwIDo6PQlTRVFVRU5DRSB7CisJcngtdHgtVGltZURpZmZlcmVuY2VUeXBlMkNhcGFibGUJCUJPT0xFQU4KK30KKworVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzYTAgOjo9CVNFUVVFTkNFIHsKKwl2YWxpZGl0eS1DZWxsUENILVVyYVBDSAkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQorfQorCitVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNnMCA6Oj0JU0VRVUVOQ0UgeworCXNmbi1zZm5UeXBlMkNhcGFiaWxpdHkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxQmFuZHNGREQpKSBPRgorCQkJCQkJCQkJCQlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERAorCitVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QtZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YgCisJCQkJCQkJCQkJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGREQtZXh0CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkREIDo6PQlTRVFVRU5DRXsKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRGREQJCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRELAorCWZkZFJGLUNhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKKwkJdWUtUG93ZXJDbGFzcwkJCQkJCVVFLVBvd2VyQ2xhc3NFeHQsCisJCXR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCQkJCVR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCisJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudENhcGFiaWxpdHkJCQkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5RXh0Cit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRELWV4dCA6Oj0gU0VRVUVOQ0UgeworCXJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0LWV4dAlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QtZXh0Cit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0IDo6PQlTRVFVRU5DRSB7CisJcGRjcC1DYXBhYmlsaXR5LXI0LWV4dAkJCQlQRENQLUNhcGFiaWxpdHktcjQtZXh0LAorCXRkZC1DYXBhYmlsaXR5RXh0CQkJCQlTRVFVRU5DRSB7CisJCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI0LWV4dCwKKwkJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1MQ1IJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktTENSLXI0LAorCQltZWFzdXJlbWVudENhcGFiaWxpdHktcjQtZXh0CQlNZWFzdXJlbWVudENhcGFiaWxpdHktcjQtZXh0CisJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJLS0gSUUgIiBBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciIgaXMgbm90IG5lZWRlZCBpbiBSUkMgQ09OTkVDVElPTiBTRVRVUCBDT01QTEVURQorCWFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCQkJCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yIAlPUFRJT05BTAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wIDo6PSBTRVFVRU5DRSB7CisJdG90YWxBTS1STENNZW1vcnlFeGNlZWRzMTBrQgkJCUJPT0xFQU4sCisJcmYtQ2FwYWJpbGl0eUNvbXAJCQkJCQlSRi1DYXBhYmlsaXR5Q29tcAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLWV4dCA6Oj0gU0VRVUVOQ0UgeworCXJmLUNhcGFiaWxpdHlGRERDb21wCQkJCVJGLUNhcGFiQmFuZExpc3RGRERDb21wLWV4dAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLXI3IDo6PSBTRVFVRU5DRSB7CisJdG90YWxBTS1STENNZW1vcnlFeGNlZWRzMTBrQgkJCUJPT0xFQU4sCisJcmYtQ2FwYWJpbGl0eUNvbXAJCQkJCQlSRi1DYXBhYmlsaXR5Q29tcC1yNworfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wMiA6Oj0JCVNFUVVFTkNFIHsKKwlmZGRQaHlzaWNhbENoYW5uZWxDYXBhYi1oc3Bkc2NoLWVkY2gJU0VRVUVOQ0UgeworCQlkbC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcKKwkJCQkJCQkJCQkJCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlPUFRJT05BTCwKKwkJcGh5c2ljYWxDaGFubmVsQ2FwYWJDb21wLWhzcGRzY2gtcjYJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKKwkJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2CQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYKKwl9CQlPUFRJT05BTAorfQorCitSRi1DYXBhYmlsaXR5Q29tcCA6Oj0gU0VRVUVOQ0UgeworCWZkZCAJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJUkYtQ2FwYWJCYW5kTGlzdEZERENvbXAKKwl9LAorCXRkZDM4NC1SRi1DYXBhYmlsaXR5CUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAorCX0sCisJdGRkMTI4LVJGLUNhcGFiaWxpdHkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQlOVUxMLAorCQlzdXBwb3J0ZWQJCQkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CisJfQorfQorCitSRi1DYXBhYmlsaXR5Q29tcC1yNyA6Oj0gU0VRVUVOQ0UgeworCWZkZCAJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJUkYtQ2FwYWJCYW5kTGlzdEZERENvbXAKKwl9LAorCXRkZDM4NC1SRi1DYXBhYmlsaXR5CUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAorCX0sCisJdGRkNzY4LVJGLUNhcGFiaWxpdHkJQ0hPSUNFCXsKKwkJbm90U3VwcG9ydGVkCQkJCQlOVUxMLAorCQlzdXBwb3J0ZWQJCQkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CisJfSwKKwl0ZGQxMjgtUkYtQ2FwYWJpbGl0eQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QKKwl9Cit9CisKKy0tIE5PVEU6IFRoaXMgSUUgZGVmaW5lcyB0aGUgc3VwcG9ydGVkIFRYL1JYIGZyZXF1ZW5jeSBzZXBhcmF0aW9uIGZvciB0aGUgcmVzcGVjdGl2ZSBzdXBwb3J0ZWQKKy0tIGZyZXF1ZW5jeSBiYW5kLiBWYWx1ZXMgZGVmaW5lZCBhcyBzcGFyZSBzaGFsbCBub3QgYmUgc2VudCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLgorLS0gSWYgYSBzcGFyZSB2YWx1ZSBpcyByZWNlaXZlZCwgaXQgc2hvdWxkIGJlIGludGVycHJldGVkIGFzICdkZWZhdWx0LVJ4VFgtc3BhcmF0aW9uJy4KK1JGLUNhcGFiQmFuZEZERENvbXAgOjo9CQkJCUVOVU1FUkFURUQgeyBub3RTdXBwb3J0ZWQsCisJCQkJCQkJCQkJZGVmYXVsdC1UeFJ4LXNlcGFyYXRpb24sIHNwYXJlMiwgc3BhcmUxIH0KKworUkYtQ2FwYWJCYW5kTGlzdEZERENvbXAgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERCkpIE9GCisJLS0gVGhlIGZpcnN0IGVudHJ5IGNvcnJlc3BvbmRzIHdpdGggdGhlIGZpcnN0IHZhbHVlIG9mIElFIFJhZGlvRnJlcXVlbmN5QmFuZEZERCwKKwktLSBmZGQyMTAwLCBhbmQgc28gb24uIE5vIG1vcmUgdGhhbiBzZXZlbiBlbnRyaWVzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGlzIElFLiBUaGUKKwktLSA4J3RoIGVudHJ5LCBpZiBwcmVzZW50LCBzaGFsbCBiZSBpZ25vcmVkLgorCS0tIEFuIGV4dGVuc2lvbiBvZiB0aGlzIElFIG1heSBiZSBwcm92aWRlZCB1c2luZyB0aGUgSUUgJ1JGLUNhcGFiQmFuZExpc3RGRERDb21wLWV4dCcuCisJUkYtQ2FwYWJCYW5kRkREQ29tcAorCitSRi1DYXBhYkJhbmRMaXN0RkREQ29tcC1leHQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkRELWV4dCkpIE9GCisJLS0gVGhlIGZpcnN0IGVudHJ5IGNvcnJlc3BvbmRzIHdpdGggdGhlIGZpcnN0IHZhbHVlIG9mIElFIFJhZGlvRnJlcXVlbmN5QmFuZEZERDIsCisJLS0gYmFuZFZJSUksIGFuZCBzbyBvbi4KKwlSRi1DYXBhYkJhbmRGRERDb21wCisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0IDo6PQlTRVFVRU5DRSB7CisJZGwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlPUFRJT05BTCwKKwlwZGNwLUNhcGFiaWxpdHktcjUtZXh0CQkJCVBEQ1AtQ2FwYWJpbGl0eS1yNS1leHQsCisJcmxjLUNhcGFiaWxpdHktcjUtZXh0CQkJCVJMQy1DYXBhYmlsaXR5LXI1LWV4dCwKKwlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1oc3Bkc2NoLXI1LAorCW11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY1OTBleHQJCU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY1OTBleHQKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1YzBleHQgOjo9IFNFUVVFTkNFIHsKKwlwZGNwLUNhcGFiaWxpdHktcjUtZXh0MgkJCQlQRENQLUNhcGFiaWxpdHktcjUtZXh0MgorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY4MGV4dCA6Oj0gU0VRVUVOQ0UgeworCW11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY2ODBleHQJCU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXY2ODBleHQKK30KKworVUwtUGh5c0NoQ2FwYWJpbGl0eUZERCA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQJCQlNYXhOb0RQRENILUJpdHNUcmFuc21pdHRlZCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCWR1bW15CQkJCQkJCQlCT09MRUFOCQorfQorCitVTC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI2IDo6PQkJCVNFUVVFTkNFIHsKKwltYXhOb0RQRENILUJpdHNUcmFuc21pdHRlZAkJCQlNYXhOb0RQRENILUJpdHNUcmFuc21pdHRlZCwKKwlwaHlzaWNhbGNoYW5uZWxjYXBhYmlsaXR5LWVkY2gJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYKK30KKworVUwtUGh5c0NoQ2FwYWJpbGl0eVRERCA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4VFMtUGVyRnJhbWUJCQkJCQlNYXhUUy1QZXJGcmFtZSwKKwltYXhQaHlzQ2hQZXJUaW1lc2xvdAkJCQlNYXhQaHlzQ2hQZXJUaW1lc2xvdCwKKwltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLVVMLAorCXN1cHBvcnRPZlBVU0NICQkJCQkJQk9PTEVBTgkKK30KKworVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwltYXhUUy1QZXJTdWJGcmFtZQkJCQkJTWF4VFMtUGVyU3ViRnJhbWUtcjQsCisJbWF4UGh5c0NoUGVyVGltZXNsb3QJCQkJTWF4UGh5c0NoUGVyVGltZXNsb3QsCisJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1VTCwKKwlzdXBwb3J0T2ZQVVNDSAkJCQkJCUJPT0xFQU4sCisJc3VwcG9ydE9mOFBTSwkJCQkJCUJPT0xFQU4KK30KKworUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2IDo6PQlTRVFVRU5DRSB7CisJZmRkLWVkY2gJCQkJCQkJCUNIT0lDRSB7CisJCXN1cHBvcnRlZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZWRjaC1QaHlzaWNhbExheWVyQ2F0ZWdvcnkJCQkJSU5URUdFUiAoMS4uMTYpCisJCX0sCisJCXVuc3VwcG9ydGVkCQkJCQkJCQlOVUxMCisJfQorfQorCitVTC1UcmFuc0NoQ2FwYWJpbGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4Tm9CaXRzVHJhbnNtaXR0ZWQJCQkJTWF4Tm9CaXRzLAorCW1heENvbnZDb2RlQml0c1RyYW5zbWl0dGVkCQkJTWF4Tm9CaXRzLAorCXR1cmJvRW5jb2RpbmdTdXBwb3J0CQkJCVR1cmJvU3VwcG9ydCwKKwltYXhTaW11bHRhbmVvdXNUcmFuc0NocwkJCQlNYXhTaW11bHRhbmVvdXNUcmFuc0Noc1VMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCU5VTEwsCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1heFNpbXVsdGFuZW91c0NDVHJDSC1Db3VudAkJCU1heFNpbXVsdGFuZW91c0NDVHJDSC1Db3VudAorCQl9CisJfSwKKwltYXhUcmFuc21pdHRlZEJsb2NrcwkJCQlNYXhUcmFuc3BvcnRCbG9ja3NVTCwKKwltYXhOdW1iZXJPZlRGQwkJCQkJCU1heE51bWJlck9mVEZDLVVMLAorCW1heE51bWJlck9mVEYJCQkJCQlNYXhOdW1iZXJPZlRGCit9CisKK1VFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHkgOjo9CQlTRVFVRU5DRSB7CisJc3RhbmRhbG9uZUxvY01ldGhvZHNTdXBwb3J0ZWQJCQlCT09MRUFOLAorCXVlLUJhc2VkT1RET0EtU3VwcG9ydGVkCQkJCQlCT09MRUFOLAorCW5ldHdvcmtBc3Npc3RlZEdQUy1TdXBwb3J0ZWQJCQlOZXR3b3JrQXNzaXN0ZWRHUFMtU3VwcG9ydGVkLAorCXN1cHBvcnRGb3JVRS1HUFMtVGltaW5nT2ZDZWxsRnJhbWVzCQlCT09MRUFOLAorCXN1cHBvcnRGb3JJUERMCQkJCQkJCUJPT0xFQU4KK30KKworVUUtU2VjdXJpdHlJbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJc3RhcnQtQ1MJCQkJCQkJU1RBUlQtVmFsdWUKK30KKworVUUtU2VjdXJpdHlJbmZvcm1hdGlvbjIgOjo9CQkJU0VRVUVOQ0UgeworCXN0YXJ0LVBTCQkJCQkJCVNUQVJULVZhbHVlCit9CisKK1VSQS1VcGRhdGVDYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQljaGFuZ2VPZlVSQSwgCisJCQkJCQkJCQkJcGVyaW9kaWNVUkFVcGRhdGUsIAorCQkJCQkJCQkJCWR1bW15LAorCQkJCQkJCQkJCXNwYXJlMSB9CisKK1VUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50IDo6PSBJTlRFR0VSICgzLi45KQorCitXYWl0VGltZSA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNSkKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIFJBRElPIEJFQVJFUiBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy40KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBbGdvcml0aG1TcGVjaWZpY0luZm8gOjo9CQkJQ0hPSUNFIHsKKwlyZmMyNTA3LUluZm8JCQkJCQlSRkMyNTA3LUluZm8KK30KKworQWxnb3JpdGhtU3BlY2lmaWNJbmZvLXI0IDo6PQkJQ0hPSUNFIHsKKwlyZmMyNTA3LUluZm8JCQkJCQlSRkMyNTA3LUluZm8sCisJcmZjMzA5NS1JbmZvCQkJCQkJUkZDMzA5NS1JbmZvLXI0Cit9CisKK0NJRC1JbmNsdXNpb25JbmZvLXI0IDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBkY3AtSGVhZGVyLAorCQkJCQkJCQkJCXJmYzMwOTUtUGFja2V0Rm9ybWF0IH0KKworLS0gVXBwZXIgbGltaXQgb2YgQ09VTlQtQyBpcyAyXjMyIC0gMQorQ09VTlQtQyA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkKKworLS0gVXBwZXIgbGltaXQgb2YgQ09VTlQtQy1NU0IgaXMgMl4yNSAtIDEKK0NPVU5ULUMtTVNCIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjMzNTU0NDMxKQorCitEZWZhdWx0Q29uZmlnSWRlbnRpdHkgOjo9CQkJSU5URUdFUiAoMC4uMTApCisKK0RlZmF1bHRDb25maWdJZGVudGl0eS1yNCA6Oj0JCUlOVEVHRVIgKDAuLjEyKQorCitEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjUgOjo9CQlJTlRFR0VSICgwLi4xMykKKworLS0gRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2IHZhbHVlcyAyMy4uMzEgYXJlIHNwYXJlIGFuZCBzaGFsbCBub3QgYmUgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgCistLSB0aGUgcHJvdG9jb2wKK0RlZmF1bHRDb25maWdJZGVudGl0eS1yNiA6Oj0JCUlOVEVHRVIgKDAuLjMxKQorCitEZWZhdWx0Q29uZmlnTW9kZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZmRkLAorCQkJCQkJCQkJCXRkZCB9CisKK0RESSA6Oj0JCQkJCQkJCUlOVEVHRVIgKDAuLjYyKQorCitETC1BTS1STEMtTW9kZSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlpblNlcXVlbmNlRGVsaXZlcnkJCQkJCUJPT0xFQU4sCisJcmVjZWl2aW5nV2luZG93U2l6ZQkJCQkJUmVjZWl2aW5nV2luZG93U2l6ZSwKKwlkbC1STEMtU3RhdHVzSW5mbwkJCQkJREwtUkxDLVN0YXR1c0luZm8KK30KKworREwtQU0tUkxDLU1vZGUtcjUgOjo9CQkJCQlTRVFVRU5DRSB7CisJZGwtUkxDLVBEVS1zaXplCQkJCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEsCisJaW5TZXF1ZW5jZURlbGl2ZXJ5CQkJCQlCT09MRUFOLAorCXJlY2VpdmluZ1dpbmRvd1NpemUJCQkJCVJlY2VpdmluZ1dpbmRvd1NpemUsCisJZGwtUkxDLVN0YXR1c0luZm8JCQkJCURMLVJMQy1TdGF0dXNJbmZvCit9CisKK0RMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvIDo6PQkJU0VRVUVOQ0UgeworCXJCLVdpdGhQRENQLUluZm9MaXN0CQkJCQlSQi1XaXRoUERDUC1JbmZvTGlzdAlPUFRJT05BTAorfQorCitETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNSA6Oj0JU0VRVUVOQ0UgeworCXJiLVdpdGhQRENQLUluZm9MaXN0CQkJCQlSQi1XaXRoUERDUC1JbmZvTGlzdAkJCU9QVElPTkFMLAorCXJiLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJCQlSQi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CU9QVElPTkFMCit9CisKK0RMLUxvZ2ljYWxDaGFubmVsTWFwcGluZyA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBETC1UcmFuc3BvcnRDaGFubmVsVHlwZSBjb250YWlucyBUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgYXMgd2VsbC4KKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UcmFuc3BvcnRDaGFubmVsVHlwZSwKKwlsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJT1BUSU9OQUwKK30KKworREwtTG9naWNhbENoYW5uZWxNYXBwaW5nLXI1IDo6PQkJU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IERMLVRyYW5zcG9ydENoYW5uZWxUeXBlIGNvbnRhaW5zIFRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSBhcyB3ZWxsLgorCWRsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCURMLVRyYW5zcG9ydENoYW5uZWxUeXBlLXI1LAorCWxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJTG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlPUFRJT05BTAorfQorCitETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TG9DSHBlclJMQykpIE9GCisJCQkJCQkJCQkJREwtTG9naWNhbENoYW5uZWxNYXBwaW5nCisKK0RMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QtcjUgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhMb0NIcGVyUkxDKSkgT0YKKwkJCQkJCQkJCQlETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmctcjUKKworREwtUmVjZXB0aW9uLVdpbmRvdy1TaXplLXI2IDo6PQkJRU5VTUVSQVRFRCB7IHNpemUzMiwgc2l6ZTQ4LCBzaXplNjQsIHNpemU4MCwgc2l6ZTk2LCBzaXplMTEyIH0KKworREwtUkZDMzA5NS1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwljaWQtSW5jbHVzaW9uSW5mbwkJCQkJQ0lELUluY2x1c2lvbkluZm8tcjQsCisJbWF4LUNJRAkJCQkJCQkJSU5URUdFUiAoMS4uMTYzODMpCQkJCQlERUZBVUxUIDE1LAorCXJldmVyc2VEZWNvbXByZXNzaW9uRGVwdGgJCQlJTlRFR0VSICgwLi42NTUzNSkJCQkJCURFRkFVTFQgMAorfQorCitETC1STEMtTW9kZSA6Oj0JCQkJCQlDSE9JQ0UgeworCWRsLUFNLVJMQy1Nb2RlCQkJCQkJREwtQU0tUkxDLU1vZGUsCisJZGwtVU0tUkxDLU1vZGUJCQkJCQlOVUxMLAorCWRsLVRNLVJMQy1Nb2RlCQkJCQkJREwtVE0tUkxDLU1vZGUKK30KKworREwtUkxDLU1vZGUtcjUgOjo9CQkJCQlDSE9JQ0UgeworCWRsLUFNLVJMQy1Nb2RlCQkJCQkJREwtQU0tUkxDLU1vZGUtcjUsCisJZGwtVU0tUkxDLU1vZGUJCQkJCQlETC1VTS1STEMtTW9kZS1yNSwKKwlkbC1UTS1STEMtTW9kZQkJCQkJCURMLVRNLVJMQy1Nb2RlCit9CisKK0RMLVJMQy1Nb2RlLXI2IDo6PQkJCQkJQ0hPSUNFIHsKKwlkbC1BTS1STEMtTW9kZQkJCQkJCURMLUFNLVJMQy1Nb2RlLXI1LAorCWRsLVVNLVJMQy1Nb2RlCQkJCQkJREwtVU0tUkxDLU1vZGUtcjYsCisJZGwtVE0tUkxDLU1vZGUJCQkJCQlETC1UTS1STEMtTW9kZQorfQorCitETC1STEMtU3RhdHVzSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCXRpbWVyU3RhdHVzUHJvaGliaXQJCQkJCVRpbWVyU3RhdHVzUHJvaGliaXQJCQkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkIG5vdCBiZSBzZW50IAorCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCVRpbWVyRVBDCQkJCQkJCU9QVElPTkFMLAorCW1pc3NpbmdQRFUtSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCXRpbWVyU3RhdHVzUGVyaW9kaWMJCQkJCVRpbWVyU3RhdHVzUGVyaW9kaWMJCQkJCU9QVElPTkFMCit9CisKK0RMLVRNLVJMQy1Nb2RlIDo6PQkJCQkJU0VRVUVOQ0UgeworCXNlZ21lbnRhdGlvbkluZGljYXRpb24JCQkJCUJPT0xFQU4KK30KKworREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUgOjo9CQkJQ0hPSUNFIHsKKwlkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJZmFjaAkJCQkJCQkJTlVMTCwKKwktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQuCisJZHNjaAkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCS0tIFRoZSBjaG9pY2Ug0mRjaC1hbmQtZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFCisJLS0gYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJZGNoLWFuZC1kc2NoCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5RENIYW5kRFNDSAorfQorCitETC1UcmFuc3BvcnRDaGFubmVsVHlwZS1yNSA6Oj0JCQlDSE9JQ0UgeworCWRjaAkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwlmYWNoCQkJCQkJCQlOVUxMLAorCS0tIFRoZSBjaG9pY2Ug0mRzY2jTIHNob3VsZCBub3QgYmUgdXNlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KKwlkc2NoCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJLS0gVGhlIGNob2ljZSDSZGNoLWFuZC1kc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgCisJLS0gYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJZGNoLWFuZC1kc2NoCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5RENIYW5kRFNDSCwKKwloc2RzY2gJCQkJCQkJCU1BQy1kLUZsb3dJZGVudGl0eSwKKwlkY2gtYW5kLWhzZHNjaAkJCQkJCU1BQy1kLUZsb3dJZGVudGl0eURDSGFuZEhTRFNDSAorfQorCitETC1VTS1STEMtTEktc2l6ZSA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNpemU3LCBzaXplMTUgfQorCitETC1VTS1STEMtTW9kZS1yNSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlkbC1VTS1STEMtTEktc2l6ZQkJCQkJREwtVU0tUkxDLUxJLXNpemUKK30KKworREwtVU0tUkxDLU1vZGUtcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1VTS1STEMtTEktc2l6ZQkJCQkJREwtVU0tUkxDLUxJLXNpemUsCisJZGwtUmVjZXB0aW9uLVdpbmRvdy1TaXplCQkJREwtUmVjZXB0aW9uLVdpbmRvdy1TaXplLXI2CQkJT1BUSU9OQUwKK30KKworRXhwZWN0UmVvcmRlcmluZyA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcmVvcmRlcmluZ05vdEV4cGVjdGVkLAorCQkJCQkJCQkJCXJlb3JkZXJpbmdFeHBlY3RlZCB9CisKK0V4cGxpY2l0RGlzY2FyZCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0aW1lck1SVwkJCQkJCQlUaW1lck1SVywKKwl0aW1lckRpc2NhcmQJCQkJCQlUaW1lckRpc2NhcmQsCisJbWF4TVJXCQkJCQkJCQlNYXhNUlcKK30KKworSGVhZGVyQ29tcHJlc3Npb25JbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwlhbGdvcml0aG1TcGVjaWZpY0luZm8JCQkJQWxnb3JpdGhtU3BlY2lmaWNJbmZvCit9CisKK0hlYWRlckNvbXByZXNzaW9uSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERDUEFsZ29UeXBlKSkgT0YKKwkJCQkJCQkJCQlIZWFkZXJDb21wcmVzc2lvbkluZm8KKworSGVhZGVyQ29tcHJlc3Npb25JbmZvLXI0IDo6PQkJU0VRVUVOQ0UgeworCWFsZ29yaXRobVNwZWNpZmljSW5mbwkJCQlBbGdvcml0aG1TcGVjaWZpY0luZm8tcjQKK30KKworSGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdC1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEQ1BBbGdvVHlwZSkpIE9GCisJCQkJCQkJCQkJSGVhZGVyQ29tcHJlc3Npb25JbmZvLXI0CisKK0xvZ2ljYWxDaGFubmVsSWRlbnRpdHkgOjo9CQkJSU5URUdFUiAoMS4uMTUpCisKK0xvc3NsZXNzU1JOUy1SZWxvY1N1cHBvcnQgOjo9CQlDSE9JQ0UgeworCXN1cHBvcnRlZAkJCQkJCQlNYXhQRENQLVNOLVdpbmRvd1NpemUsCisJbm90U3VwcG9ydGVkCQkJCQkJTlVMTAorfQorCitNQUMtZC1IRk4taW5pdGlhbC12YWx1ZSA6Oj0JCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpCisKK01BQy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5IDo6PSAJCUlOVEVHRVIgKDEuLjgpCisKK01heERBVCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZGF0MSwgZGF0MiwgZGF0MywgZGF0NCwgZGF0NSwgZGF0NiwKKwkJCQkJCQkJCQlkYXQ3LCBkYXQ4LCBkYXQ5LCBkYXQxMCwgZGF0MTUsIGRhdDIwLAorCQkJCQkJCQkJCWRhdDI1LCBkYXQzMCwgZGF0MzUsIGRhdDQwIH0KKworTWF4REFULVJldHJhbnNtaXNzaW9ucyA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4REFUCQkJCQkJCQlNYXhEQVQsCisJdGltZXJNUlcJCQkJCQkJVGltZXJNUlcsCisJbWF4TVJXCQkJCQkJCQlNYXhNUlcKK30KKworTWF4TVJXIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltbTEsIG1tNCwgbW02LCBtbTgsIG1tMTIsIG1tMTYsCisJCQkJCQkJCQkJbW0yNCwgbW0zMiB9CisKK01heFBEQ1AtU04tV2luZG93U2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzbjI1NSwgc242NTUzNSB9CisKK01heFJTVCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcnN0MSwgcnN0NCwgcnN0NiwgcnN0OCwgcnN0MTIsCisJCQkJCQkJCQkJcnN0MTYsIHJzdDI0LCByc3QzMiB9CisKK05vRXhwbGljaXREaXNjYXJkIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlkdDEwLCBkdDIwLCBkdDMwLCBkdDQwLCBkdDUwLAorCQkJCQkJCQkJCWR0NjAsIGR0NzAsIGR0ODAsIGR0OTAsIGR0MTAwIH0KKworUERDUC1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwlsb3NzbGVzc1NSTlMtUmVsb2NTdXBwb3J0CQkJTG9zc2xlc3NTUk5TLVJlbG9jU3VwcG9ydAkJCU9QVElPTkFMLAorCS0tIFRBQlVMQVI6IHBkY3AtUERVLUhlYWRlciBpcyBNRCBpbiB0aGUgdGFidWxhciBmb3JtYXQgYW5kIGl0IGNhbiBiZSBlbmNvZGVkCisJLS0gaW4gb25lIGJpdCwgc28gdGhlIE9QVElPTkFMIGlzIHJlbW92ZWQgZm9yIGNvbXBhY3RuZXNzLgorCXBkY3AtUERVLUhlYWRlcgkJCQkJCVBEQ1AtUERVLUhlYWRlciwKKwloZWFkZXJDb21wcmVzc2lvbkluZm9MaXN0CQkJSGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdAkJCU9QVElPTkFMCit9CisKK1BEQ1AtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlsb3NzbGVzc1NSTlMtUmVsb2NTdXBwb3J0CQkJTG9zc2xlc3NTUk5TLVJlbG9jU3VwcG9ydAkJCU9QVElPTkFMLAorCS0tIFRBQlVMQVI6IHBkY3AtUERVLUhlYWRlciBpcyBNRCBpbiB0aGUgdGFidWxhciBmb3JtYXQgYW5kIGl0IGNhbiBiZSBlbmNvZGVkCisJLS0gaW4gb25lIGJpdCwgc28gdGhlIE9QVElPTkFMIGlzIHJlbW92ZWQgZm9yIGNvbXBhY3RuZXNzLgorCXBkY3AtUERVLUhlYWRlcgkJCQkJCVBEQ1AtUERVLUhlYWRlciwKKwloZWFkZXJDb21wcmVzc2lvbkluZm9MaXN0CQkJSGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdC1yNAkJT1BUSU9OQUwKK30KKworUERDUC1JbmZvUmVjb25maWcgOjo9CQkJCVNFUVVFTkNFIHsKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwktLSBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCit9CisKK1BEQ1AtSW5mb1JlY29uZmlnLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLXI0Cit9CisKK1BEQ1AtUERVLUhlYWRlciA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXByZXNlbnQsIGFic2VudCB9CisKK1BEQ1AtUk9IQy1UYXJnZXRNb2RlIDo6PQkJCUVOVU1FUkFURUQgeyBvLU1vZGUsIHItTW9kZSB9CisKK1BEQ1AtU04tSW5mbyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQorCitQb2xsLVBEVSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwZHUxLCBwZHUyLCBwZHU0LCBwZHU4LCBwZHUxNiwgCisJCQkJCQkJCQkJcGR1MzIsIHBkdTY0LCBwZHUxMjggfQorCitQb2xsLVNEVSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzZHUxLCBzZHU0LCBzZHUxNiwgc2R1NjQgfQorCitQb2xsaW5nSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdGltZXJQb2xsUHJvaGliaXQJCQkJCVRpbWVyUG9sbFByb2hpYml0CQkJCQlPUFRJT05BTCwKKwl0aW1lclBvbGwJCQkJCQkJVGltZXJQb2xsCQkJCQkJCU9QVElPTkFMLAorCXBvbGwtUERVCQkJCQkJCVBvbGwtUERVCQkJCQkJCU9QVElPTkFMLAorCXBvbGwtU0RVCQkJCQkJCVBvbGwtU0RVCQkJCQkJCU9QVElPTkFMLAorCWxhc3RUcmFuc21pc3Npb25QRFUtUG9sbAkJCUJPT0xFQU4sCisJbGFzdFJldHJhbnNtaXNzaW9uUERVLVBvbGwJCQlCT09MRUFOLAorCXBvbGxXaW5kb3cJCQkJCQkJUG9sbFdpbmRvdwkJCQkJCQlPUFRJT05BTCwKKwl0aW1lclBvbGxQZXJpb2RpYwkJCQkJVGltZXJQb2xsUGVyaW9kaWMJCQkJCU9QVElPTkFMCit9CisKK1BvbGxXaW5kb3cgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcHc1MCwgcHc2MCwgcHc3MCwgcHc4MCwgcHc4NSwgCisJCQkJCQkJCQkJcHc5MCwgcHc5NSwgcHc5OSB9CisKK1ByZWRlZmluZWRDb25maWdJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDAuLjE1KQorCitQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWcgOjo9CQlJTlRFR0VSICgwLi4xNSkKKworUHJlZGVmaW5lZFJCLUNvbmZpZ3VyYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJcmUtRXN0YWJsaXNobWVudFRpbWVyCQkJCVJlLUVzdGFibGlzaG1lbnRUaW1lciwKKwlzcmItSW5mb3JtYXRpb25MaXN0CQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJcmItSW5mb3JtYXRpb25MaXN0CQkJCQlSQi1JbmZvcm1hdGlvblNldHVwTGlzdAorfQorCitQcmVEZWZSYWRpb0NvbmZpZ3VyYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwcmVkZWZpbmVkUkItQ29uZmlndXJhdGlvbgkJCVByZWRlZmluZWRSQi1Db25maWd1cmF0aW9uLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQlwcmVEZWZUcmFuc0NoQ29uZmlndXJhdGlvbgkJCVByZURlZlRyYW5zQ2hDb25maWd1cmF0aW9uLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCXByZURlZlBoeUNoQ29uZmlndXJhdGlvbgkJCVByZURlZlBoeUNoQ29uZmlndXJhdGlvbgorfQorCitQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKG1heFByZWRlZkNvbmZpZykpIE9GCisJCQkJCQkJCQkJCVByZWRlZmluZWRDb25maWdTdGF0dXNJbmZvCisKK1ByZWRlZmluZWRDb25maWdTdGF0dXNJbmZvIDo6PQkJQ0hPSUNFIHsKKwlzdG9yZWRXaXRoVmFsdWVUYWdTYW1lQXNQcmV2aXVzCQlOVUxMLAorCW90aGVyCQkJCQkJCQlDSE9JQ0UgeworCQlub3RTdG9yZWQJCQkJCQkJTlVMTCwKKwkJc3RvcmVkV2l0aERpZmZlcmVudFZhbHVlVGFnCQkJUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnCisJfQorfQorCitQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdENvbXAgOjo9IFNFUVVFTkNFIHsKKwlzZXRzV2l0aERpZmZlcmVudFZhbHVlVGFnCQkJUHJlZGVmaW5lZENvbmZpZ1NldHNXaXRoRGlmZmVyZW50VmFsdWVUYWcsCisJb3RoZXJFbnRyaWVzCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3RWYXJTegkJCQlPUFRJT05BTAorfQorCitQcmVkZWZpbmVkQ29uZmlnU2V0c1dpdGhEaWZmZXJlbnRWYWx1ZVRhZyA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgorCQkJCQkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1NldFdpdGhEaWZmZXJlbnRWYWx1ZVRhZworCitQcmVkZWZpbmVkQ29uZmlnU2V0V2l0aERpZmZlcmVudFZhbHVlVGFnIDo6PSBTRVFVRU5DRSB7CisJc3RhcnRQb3NpdGlvbgkJCQkJCQkJSU5URUdFUiAoMC4uMTApCQlERUZBVUxUIDAsCisJLS0gbnVtYmVyT2ZFbnRyaWVzCQkJCQkJCUlOVEVHRVIgKDYuLjE2KSwKKwktLSBudW1iZXJPZkVudHJpZXMgaXMgY292ZXJlZCBieSB0aGUgc2l6ZSBvZiB0aGUgbGlzdCBpbiBJRSBQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWdMaXN0CisJdmFsdWVUYWdMaXN0CQkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWdMaXN0Cit9CisKKworUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQcmVkZWZDb25maWcpKSBPRgorCQkJCQkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWcKKworUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3RWYXJTeiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQcmVkZWZDb25maWcpKSBPRgorCQkJCQkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzSW5mbworCitSQUItSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJcmFiLUlkZW50aXR5CQkJCQkJUkFCLUlkZW50aXR5LAorCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwluYXMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IJT1BUSU9OQUwsCisJcmUtRXN0YWJsaXNobWVudFRpbWVyCQkJCVJlLUVzdGFibGlzaG1lbnRUaW1lcgorfQorCitSQUItSW5mby1yNi1leHQgOjo9CQkJCQlTRVFVRU5DRSB7CisJbWJtcy1TZXNzaW9uSWRlbnRpdHkJCQkJTUJNUy1TZXNzaW9uSWRlbnRpdHkJCQkJT1BUSU9OQUwKK30KKworUkFCLUluZm8tcjYgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXJhYi1JZGVudGl0eQkJCQkJCVJBQi1JZGVudGl0eSwKKwltYm1zLVNlc3Npb25JZGVudGl0eQkJCQlNQk1TLVNlc3Npb25JZGVudGl0eQkJCQlPUFRJT05BTCwKKwljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJbmFzLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IJCU5BUy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yCQlPUFRJT05BTCwKKwlyZS1Fc3RhYmxpc2htZW50VGltZXIJCQkJUmUtRXN0YWJsaXNobWVudFRpbWVyCit9CisKK1JBQi1JbmZvcm1hdGlvbkxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQUJzZXR1cCkpIE9GCisJCQkJCQkJCQkJUkFCLUluZm8KKworUkFCLUluZm9ybWF0aW9uTGlzdC1yNiA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgorCQkJCQkJCQkJCVJBQi1JbmZvLXI2CisKK1JBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi4gbWF4UkFCc2V0dXApKSBPRgorCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnCisKK1JBQi1JbmZvcm1hdGlvblJlY29uZmlnIDo6PQkJCVNFUVVFTkNFIHsKKwlyYWItSWRlbnRpdHkJCQkJCQlSQUItSWRlbnRpdHksCisJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCW5hcy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yCQlOQVMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgorfQorCitSQUItSW5mby1Qb3N0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwlyYWItSWRlbnRpdHkJCQkJCQlSQUItSWRlbnRpdHksCisJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCW5hcy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yCQlOQVMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcglPUFRJT05BTAorfQorCitSQUItSW5mb3JtYXRpb25TZXR1cCA6Oj0JCQlTRVFVRU5DRSB7CisJcmFiLUluZm8JCQkJCQkJUkFCLUluZm8sCisJcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCQkJUkItSW5mb3JtYXRpb25TZXR1cExpc3QKK30KKworUkFCLUluZm9ybWF0aW9uU2V0dXAtcjQgOjo9CQkJU0VRVUVOQ0UgeworCXJhYi1JbmZvCQkJCQkJCVJBQi1JbmZvLAorCXJiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJCVJCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0Cit9CisKK1JBQi1JbmZvcm1hdGlvblNldHVwLXI1IDo6PQkJCVNFUVVFTkNFIHsKKwlyYWItSW5mbwkJCQkJCQlSQUItSW5mbywKKwlyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCQlSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQorfQorCitSQUItSW5mb3JtYXRpb25TZXR1cC1yNi1leHQgOjo9CQlTRVFVRU5DRSB7CisJcmFiLUluZm8tcjYtZXh0CQkJCQkJUkFCLUluZm8tcjYtZXh0Cit9CisKK1JBQi1JbmZvcm1hdGlvblNldHVwLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlyYWItSW5mbwkJCQkJCQlSQUItSW5mby1yNiwKKwlyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCQlSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgorfQorCitSQUItSW5mb3JtYXRpb25TZXR1cExpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgorCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblNldHVwCisKK1JBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQUJzZXR1cCkpIE9GCisJCQkJCQkJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXAtcjQKKworUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlSQUItSW5mb3JtYXRpb25TZXR1cC1yNQorCitSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgorCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblNldHVwLXI2CisKKy0tIFRoZSBJRSAnUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LWV4dCcgcHJvdmlkZXMgZWxlbWVudHMgb2YgZXh0ZW5zaW9uIGluZm9ybWF0aW9uLCB3aGljaAorLS0gYXJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZSBJRSAnUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0Ly1yNC8tcjUnLgorUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LWV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlSQUItSW5mb3JtYXRpb25TZXR1cC1yNi1leHQKKworUkItQWN0aXZhdGlvblRpbWVJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlybGMtU2VxdWVuY2VOdW1iZXIJCQkJCVJMQy1TZXF1ZW5jZU51bWJlcgorfQkKKworUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCisJCQkJCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvCisKK1JCLUNPVU5ULUMtSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCWNvdW50LUMtVUwJCQkJCQkJQ09VTlQtQywKKwljb3VudC1DLURMCQkJCQkJCUNPVU5ULUMKK30KKworUkItQ09VTlQtQy1JbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKKwkJCQkJCQkJCQlSQi1DT1VOVC1DLUluZm9ybWF0aW9uCisKK1JCLUNPVU5ULUMtTVNCLUluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCWNvdW50LUMtTVNCLVVMCQkJCQkJQ09VTlQtQy1NU0IsCisJY291bnQtQy1NU0ItREwJCQkJCQlDT1VOVC1DLU1TQgorfQorCitSQi1DT1VOVC1DLU1TQi1JbmZvcm1hdGlvbkxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQmFsbFJBQnMpKSBPRgorCQkJCQkJCQkJCVJCLUNPVU5ULUMtTVNCLUluZm9ybWF0aW9uCisKK1JCLUlkZW50aXR5IDo6PQkJCQkJCUlOVEVHRVIgKDEuLjMyKQorCitSQi1JZGVudGl0eUxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUlkZW50aXR5CisKK1JCLUluZm9ybWF0aW9uQWZmZWN0ZWQgOjo9CQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8KK30KKworUkItSW5mb3JtYXRpb25BZmZlY3RlZC1yNSA6Oj0JCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI1Cit9CisKK1JCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjYgOjo9CQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNgorfQorCitSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdCA6Oj0gCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWQKKworUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjUgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjUKKworUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjYKKworUkItSW5mb3JtYXRpb25DaGFuZ2VkLXI2IDo6PQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXJiLUNoYW5nZQkJCQkJCQlDSE9JQ0UgeworCQlyZWxlYXNlCQkJCQkJCQlOVUxMLAorCQlyZS1tYXBUb0RlZmF1bHRSYgkJCQkJUkItSWRlbnRpdHkKKwl9Cit9CisKK1JCLUluZm9ybWF0aW9uQ2hhbmdlZExpc3QtcjYgOjo9IAkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25DaGFuZ2VkLXI2CisKK1JCLUluZm9ybWF0aW9uUmVjb25maWcgOjo9CQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZwkJCQkJT1BUSU9OQUwsCisJcGRjcC1TTi1JbmZvCQkJCQkJUERDUC1TTi1JbmZvCQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8JCQkJCQkJT1BUSU9OQUwsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mbwkJCQkJCU9QVElPTkFMLAorCXJiLVN0b3BDb250aW51ZQkJCQkJCVJCLVN0b3BDb250aW51ZQkJCQkJCU9QVElPTkFMCit9CisKK1JCLUluZm9ybWF0aW9uUmVjb25maWctcjQgOjo9CQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mb1JlY29uZmlnLXI0CQkJCU9QVElPTkFMLAorCXBkY3AtU04tSW5mbwkJCQkJCVBEQ1AtU04tSW5mbwkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvCQkJCQkJCU9QVElPTkFMLAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8JCQkJCQlPUFRJT05BTCwKKwlyYi1TdG9wQ29udGludWUJCQkJCQlSQi1TdG9wQ29udGludWUJCQkJCQlPUFRJT05BTAorfQorCitSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI1IDo6PQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZy1yNAkJCQlPUFRJT05BTCwKKwlwZGNwLVNOLUluZm8JCQkJCQlQRENQLVNOLUluZm8JCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1yNQkJCQkJCQlPUFRJT05BTCwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI1CQkJCQlPUFRJT05BTCwKKwlyYi1TdG9wQ29udGludWUJCQkJCQlSQi1TdG9wQ29udGludWUJCQkJCQlPUFRJT05BTAorfQorCitSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI2IDo6PQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZy1yNAkJCQlPUFRJT05BTCwKKwlwZGNwLVNOLUluZm8JCQkJCQlQRENQLVNOLUluZm8JCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1yNgkJCQkJCQlPUFRJT05BTCwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI2CQkJCQlPUFRJT05BTCwKKwlyYi1TdG9wQ29udGludWUJCQkJCQlSQi1TdG9wQ29udGludWUJCQkJCQlPUFRJT05BTAorfQorCitSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCA6Oj0gCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVjb25maWcKKworUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjQgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVjb25maWctcjQKKworUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjUgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVjb25maWctcjUKKworUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVjb25maWctcjYKKworUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCisJCQkJCQkJCQkJUkItSWRlbnRpdHkKKworUkItSW5mb3JtYXRpb25TZXR1cCA6Oj0JCQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm8JCQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZSwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvCit9CisKK1JCLUluZm9ybWF0aW9uU2V0dXAtcjQgOjo9CQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm8tcjQJCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8KK30KKworUkItSW5mb3JtYXRpb25TZXR1cC1yNSA6Oj0JCQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mby1yNAkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UtcjUsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNQorfQorCitSQi1JbmZvcm1hdGlvblNldHVwLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLXI0CQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZS1yNiwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI2Cit9CisKK1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQnBlclJBQikpIE9GCisJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cAorCitSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQnBlclJBQikpIE9GCisJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cC1yNAorCitSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQnBlclJBQikpIE9GCisJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cC1yNQorCitSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQnBlclJBQikpIE9GCisJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25TZXR1cC1yNgorCitSQi1NYXBwaW5nSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQk11eE9wdGlvbnMpKSBPRgorCQkJCQkJCQkJCVJCLU1hcHBpbmdPcHRpb24KKworUkItTWFwcGluZ0luZm8tcjUgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJNdXhPcHRpb25zKSkgT0YKKwkJCQkJCQkJCQlSQi1NYXBwaW5nT3B0aW9uLXI1CisKK1JCLU1hcHBpbmdJbmZvLXI2IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCTXV4T3B0aW9ucykpIE9GCisJCQkJCQkJCQkJUkItTWFwcGluZ09wdGlvbi1yNgorCitSQi1NYXBwaW5nT3B0aW9uIDo6PSAJCQkJU0VRVUVOQ0UgeworCXVsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzCQkJT1BUSU9OQUwsCisJZGwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdAkJREwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdAkJT1BUSU9OQUwKK30KKworUkItTWFwcGluZ09wdGlvbi1yNSA6Oj0gCQkJCVNFUVVFTkNFIHsKKwl1bC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5ncwkJCU9QVElPTkFMLAorCWRsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QJCURMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QtcjUJCU9QVElPTkFMCit9CisKK1JCLU1hcHBpbmdPcHRpb24tcjYgOjo9IAkJCQlTRVFVRU5DRSB7CisJdWwtTG9naWNhbENoYW5uZWxNYXBwaW5ncwkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MtcjYJCU9QVElPTkFMLAorCWRsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QJCURMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QtcjUJCU9QVElPTkFMCit9CisKK1JCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJCVJCLUlkZW50aXR5LAorCWRsLVJGQzMwOTUtQ29udGV4dC1SZWxvY2F0aW9uCQkJQk9PTEVBTiwKKwl1bC1SRkMzMDk1LUNvbnRleHQtUmVsb2NhdGlvbgkJCUJPT0xFQU4KK30KKworUkItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKKwkJCQkJCQkJCQkJUkItUERDUENvbnRleHRSZWxvY2F0aW9uCisKK1JCLVN0b3BDb250aW51ZSA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXN0b3BSQiwgY29udGludWVSQiB9CisKK1JCLVdpdGhQRENQLUluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLVNOLUluZm8JCQkJCQlQRENQLVNOLUluZm8KK30KKworUkItV2l0aFBEQ1AtSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCYWxsUkFCcykpIE9GCisJCQkJCQkJCQkJUkItV2l0aFBEQ1AtSW5mbworCitSZWNlaXZpbmdXaW5kb3dTaXplIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlydzEsIHJ3OCwgcncxNiwgcnczMiwgcnc2NCwgcncxMjgsIHJ3MjU2LAorCQkJCQkJCQkJCXJ3NTEyLCBydzc2OCwgcncxMDI0LCBydzE1MzYsIHJ3MjA0NywgCisJCQkJCQkJCQkJcncyNTYwLCBydzMwNzIsIHJ3MzU4NCwgcnc0MDk1IH0KKworUkZDMjUwNy1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCWYtTUFYLVBFUklPRAkJCQkJCUlOVEVHRVIgKDEuLjY1NTM1KQkJCQkJREVGQVVMVCAyNTYsCisJZi1NQVgtVElNRQkJCQkJCQlJTlRFR0VSICgxLi4yNTUpCQkJCQlERUZBVUxUIDUsCisJbWF4LUhFQURFUgkJCQkJCQlJTlRFR0VSICg2MC4uNjU1MzUpCQkJCQlERUZBVUxUIDE2OCwKKwl0Y3AtU1BBQ0UJCQkJCQkJSU5URUdFUiAoMy4uMjU1KQkJCQkJREVGQVVMVCAxNSwKKwlub24tVENQLVNQQUNFCQkJCQkJSU5URUdFUiAoMy4uNjU1MzUpCQkJCQlERUZBVUxUIDE1LAorCS0tIFRBQlVMQVI6IGV4cGVjdFJlb3JkZXJpbmcgaGFzIG9ubHkgdHdvIHBvc3NpYmxlIHZhbHVlcywgc28gdXNpbmcgT3B0aW9uYWwgb3IgRGVmYXVsdAorCS0tIHdvdWxkIGJlIHdhc3RlZnVsCisJZXhwZWN0UmVvcmRlcmluZwkJCQkJRXhwZWN0UmVvcmRlcmluZworfQorCitSRkMzMDk1LUluZm8tcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwlyb2hjUHJvZmlsZUxpc3QJCQkJCQlST0hDLVByb2ZpbGVMaXN0LXI0LAorCXVsLVJGQzMwOTUJCQkJCQkJVUwtUkZDMzA5NS1yNAkJCQkJCU9QVElPTkFMLAorCWRsLVJGQzMwOTUJCQkJCQkJREwtUkZDMzA5NS1yNAkJCQkJCU9QVElPTkFMCit9CisKK1JMQy1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl1bC1STEMtTW9kZQkJCQkJCQlVTC1STEMtTW9kZQkJCQkJCQlPUFRJT05BTCwKKwlkbC1STEMtTW9kZQkJCQkJCQlETC1STEMtTW9kZQkJCQkJCQlPUFRJT05BTAorfQorCitSTEMtSW5mby1yNSA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdWwtUkxDLU1vZGUJCQkJCQkJVUwtUkxDLU1vZGUJCQkJCQkJT1BUSU9OQUwsCisJZGwtUkxDLU1vZGUJCQkJCQkJREwtUkxDLU1vZGUtcjUJCQkJCQlPUFRJT05BTCwKKwlybGMtT25lU2lkZWRSZUVzdAkJCQkJQk9PTEVBTgorfQorCitSTEMtSW5mby1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdWwtUkxDLU1vZGUJCQkJCQkJVUwtUkxDLU1vZGUJCQkJCQkJT1BUSU9OQUwsCisJZGwtUkxDLU1vZGUJCQkJCQkJREwtUkxDLU1vZGUtcjYJCQkJCQlPUFRJT05BTCwKKwlybGMtT25lU2lkZWRSZUVzdAkJCQkJQk9PTEVBTiwKKwlhbHRFLWJpdEludGVycHJldGF0aW9uCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMCit9CisKK1JMQy1JbmZvLU1DQ0gtcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1VTS1STEMtTEktc2l6ZQkJCQkJREwtVU0tUkxDLUxJLXNpemUsCisJZGwtVU0tUkxDLU91dE9TZXFEZWxpdmVyeS1JbmZvCQlVTS1STEMtT3V0T1NlcURlbGl2ZXJ5LUluZm8tcjYJCU9QVElPTkFMCit9CisKK1JMQy1JbmZvLU1TQ0gtcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1VTS1STEMtTEktc2l6ZQkJCQkJREwtVU0tUkxDLUxJLXNpemUKK30KKworUkxDLUluZm8tTVRDSC1yNiA6Oj0JCQkJU0VRVUVOQ0UgeworCWRsLVVNLVJMQy1MSS1zaXplCQkJCQlETC1VTS1STEMtTEktc2l6ZSwKKwlkbC1VTS1STEMtRHVwbEF2b2lkLVJlb3JkLUluZm8JCVVNLVJMQy1EdXBsQXZvaWQtUmVvcmQtSW5mby1yNgkJT1BUSU9OQUwKK30KKworUkxDLUluZm9DaG9pY2UgOjo9CQkJCQlDSE9JQ0UgeworCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvLAorCXNhbWUtYXMtUkIJCQkJCQkJUkItSWRlbnRpdHkKK30KKworUkxDLUluZm9DaG9pY2UtcjUgOjo9CQkJCUNIT0lDRSB7CisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tcjUsCisJc2FtZS1hcy1SQgkJCQkJCQlSQi1JZGVudGl0eQorfQorCitSTEMtSW5mb0Nob2ljZS1yNiA6Oj0JCQkJQ0hPSUNFIHsKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1yNiwKKwlzYW1lLWFzLVJCCQkJCQkJCVJCLUlkZW50aXR5Cit9CisKK1JMQy1QRFUtU2l6ZSA6Oj0JCQkJCU9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxCisKK1JMQy1QRFUtU2l6ZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTENQRFVzaXplUGVyTG9nQ2hhbikpIE9GCisJCQkJCQkJCQkJUkxDLVBEVS1TaXplCisKK1JMQy1TZXF1ZW5jZU51bWJlciA6Oj0JCQkJSU5URUdFUiAoMC4uNDA5NSkKKworUkxDLVNpemVJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCXJsYy1TaXplSW5kZXgJCQkJCQlJTlRFR0VSICgxLi5tYXhURikKK30KKworUkxDLVNpemVFeHBsaWNpdExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUJKDEuLm1heFRGKSkJT0YKKwkJCQkJCQkJCQlSTEMtU2l6ZUluZm8KKworUk9IQy1Qcm9maWxlLXI0IDo6PQkJCQkJSU5URUdFUiAoMS4uMykKKworUk9IQy1Qcm9maWxlTGlzdC1yNCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUJKDEuLm1heFJPSEMtUHJvZmlsZS1yNCkpCU9GCisJCQkJCQkJCQkJUk9IQy1Qcm9maWxlLXI0CisKK1JPSEMtUGFja2V0U2l6ZS1yNCA6Oj0JCQkJSU5URUdFUiAoMi4uMTUwMCkKKworUk9IQy1QYWNrZXRTaXplTGlzdC1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRQkoMS4ubWF4Uk9IQy1QYWNrZXRTaXplcy1yNCkpCU9GCisJCQkJCQkJCQkJUk9IQy1QYWNrZXRTaXplLXI0CisKK1NSQi1JbmZvcm1hdGlvblNldHVwIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgcmItSWRlbnRpdHkgaXMgdGhlIHNtYWxsZXN0IHZhbHVlIG5vdCB1c2VkIHlldC4KKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eQkJCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8KK30KKworU1JCLUluZm9ybWF0aW9uU2V0dXAtcjUgOjo9CQkJU0VRVUVOQ0UgeworCS0tIFRoZSBkZWZhdWx0IHZhbHVlIGZvciByYi1JZGVudGl0eSBpcyB0aGUgc21hbGxlc3QgdmFsdWUgbm90IHVzZWQgeWV0LgorCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5CQkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UtcjUsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNQorfQorCitTUkItSW5mb3JtYXRpb25TZXR1cC1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHJiLUlkZW50aXR5IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSBub3QgdXNlZCB5ZXQuCisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZS1yNiwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvLXI2Cit9CisKK1NSQi1JbmZvcm1hdGlvblNldHVwTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTUkJzZXR1cCkpIE9GCisJCQkJCQkJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXAKKworU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNSQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cC1yNQorCitTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U1JCc2V0dXApKSBPRgorCQkJCQkJCQkJCVNSQi1JbmZvcm1hdGlvblNldHVwLXI2CisKK1NSQi1JbmZvcm1hdGlvblNldHVwTGlzdDIgOjo9CQlTRVFVRU5DRSAoU0laRSAoMy4uNCkpIE9GCisJCQkJCQkJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXAKKworU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0Mi1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDMuLjQpKSBPRgorCQkJCQkJCQkJCVNSQi1JbmZvcm1hdGlvblNldHVwLXI2CisKK1RpbWVyREFSLXI2IDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zNDAsIG1zODAsIG1zMTIwLCBtczE2MCwgbXMyNDAsIG1zMzIwLCBtczQ4MCwgbXM2NDAsCisJCQkJCQkJCQkJbXM5NjAsIG1zMTI4MCwgbXMxOTIwLCBtczI1NjAsIG1zMzg0MCwgbXM1MTIwIH0KKworVGltZXJEaXNjYXJkIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGQwLTEsIHRkMC0yNSwgdGQwLTUsIHRkMC03NSwKKwkJCQkJCQkJCQl0ZDEsIHRkMS0yNSwgdGQxLTUsIHRkMS03NSwKKwkJCQkJCQkJCQl0ZDIsIHRkMi01LCB0ZDMsIHRkMy01LCB0ZDQsCisJCQkJCQkJCQkJdGQ0LTUsIHRkNSwgdGQ3LTUgfQorCitUaW1lckVQQyA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZTUwLCB0ZTYwLCB0ZTcwLCB0ZTgwLCB0ZTkwLAorCQkJCQkJCQkJCXRlMTAwLCB0ZTEyMCwgdGUxNDAsIHRlMTYwLCB0ZTE4MCwKKwkJCQkJCQkJCQl0ZTIwMCwgdGUzMDAsIHRlNDAwLCB0ZTUwMCwgdGU3MDAsCisJCQkJCQkJCQkJdGU5MDAgfQorCitUaW1lck1SVyA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZTUwLCB0ZTYwLCB0ZTcwLCB0ZTgwLCB0ZTkwLCB0ZTEwMCwgCisJCQkJCQkJCQkJdGUxMjAsIHRlMTQwLCB0ZTE2MCwgdGUxODAsIHRlMjAwLCAKKwkJCQkJCQkJCQl0ZTMwMCwgdGU0MDAsIHRlNTAwLCB0ZTcwMCwgdGU5MDAgfQorCitUaW1lck9TRC1yNiA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltczQwLCBtczgwLCBtczEyMCwgbXMxNjAsIG1zMjQwLCBtczMyMCwgbXM0ODAsIG1zNjQwLAorCQkJCQkJCQkJCW1zOTYwLCBtczEyODAsIG1zMTkyMCwgbXMyNTYwLCBtczM4NDAsIG1zNTEyMCB9CisKK1RpbWVyUG9sbCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0cDEwLCB0cDIwLCB0cDMwLCB0cDQwLCB0cDUwLAorCQkJCQkJCQkJCXRwNjAsIHRwNzAsIHRwODAsIHRwOTAsIHRwMTAwLAorCQkJCQkJCQkJCXRwMTEwLCB0cDEyMCwgdHAxMzAsIHRwMTQwLCB0cDE1MCwKKwkJCQkJCQkJCQl0cDE2MCwgdHAxNzAsIHRwMTgwLCB0cDE5MCwgdHAyMDAsCisJCQkJCQkJCQkJdHAyMTAsIHRwMjIwLCB0cDIzMCwgdHAyNDAsIHRwMjUwLAorCQkJCQkJCQkJCXRwMjYwLCB0cDI3MCwgdHAyODAsIHRwMjkwLCB0cDMwMCwKKwkJCQkJCQkJCQl0cDMxMCwgdHAzMjAsIHRwMzMwLCB0cDM0MCwgdHAzNTAsCisJCQkJCQkJCQkJdHAzNjAsIHRwMzcwLCB0cDM4MCwgdHAzOTAsIHRwNDAwLAorCQkJCQkJCQkJCXRwNDEwLCB0cDQyMCwgdHA0MzAsIHRwNDQwLCB0cDQ1MCwKKwkJCQkJCQkJCQl0cDQ2MCwgdHA0NzAsIHRwNDgwLCB0cDQ5MCwgdHA1MDAsCisJCQkJCQkJCQkJdHA1MTAsIHRwNTIwLCB0cDUzMCwgdHA1NDAsIHRwNTUwLAorCQkJCQkJCQkJCXRwNjAwLCB0cDY1MCwgdHA3MDAsIHRwNzUwLCB0cDgwMCwKKwkJCQkJCQkJCQl0cDg1MCwgdHA5MDAsIHRwOTUwLCB0cDEwMDAgfQorCitUaW1lclBvbGxQZXJpb2RpYyA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHBlcjEwMCwgdHBlcjIwMCwgdHBlcjMwMCwgdHBlcjQwMCwKKwkJCQkJCQkJCQl0cGVyNTAwLCB0cGVyNzUwLCB0cGVyMTAwMCwgdHBlcjIwMDAgfQorCitUaW1lclBvbGxQcm9oaWJpdCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHBwMTAsIHRwcDIwLCB0cHAzMCwgdHBwNDAsIHRwcDUwLAorCQkJCQkJCQkJCXRwcDYwLCB0cHA3MCwgdHBwODAsIHRwcDkwLCB0cHAxMDAsCisJCQkJCQkJCQkJdHBwMTEwLCB0cHAxMjAsIHRwcDEzMCwgdHBwMTQwLCB0cHAxNTAsCisJCQkJCQkJCQkJdHBwMTYwLCB0cHAxNzAsIHRwcDE4MCwgdHBwMTkwLCB0cHAyMDAsCisJCQkJCQkJCQkJdHBwMjEwLCB0cHAyMjAsIHRwcDIzMCwgdHBwMjQwLCB0cHAyNTAsCisJCQkJCQkJCQkJdHBwMjYwLCB0cHAyNzAsIHRwcDI4MCwgdHBwMjkwLCB0cHAzMDAsCisJCQkJCQkJCQkJdHBwMzEwLCB0cHAzMjAsIHRwcDMzMCwgdHBwMzQwLCB0cHAzNTAsCisJCQkJCQkJCQkJdHBwMzYwLCB0cHAzNzAsIHRwcDM4MCwgdHBwMzkwLCB0cHA0MDAsCisJCQkJCQkJCQkJdHBwNDEwLCB0cHA0MjAsIHRwcDQzMCwgdHBwNDQwLCB0cHA0NTAsCisJCQkJCQkJCQkJdHBwNDYwLCB0cHA0NzAsIHRwcDQ4MCwgdHBwNDkwLCB0cHA1MDAsCisJCQkJCQkJCQkJdHBwNTEwLCB0cHA1MjAsIHRwcDUzMCwgdHBwNTQwLCB0cHA1NTAsCisJCQkJCQkJCQkJdHBwNjAwLCB0cHA2NTAsIHRwcDcwMCwgdHBwNzUwLCB0cHA4MDAsCisJCQkJCQkJCQkJdHBwODUwLCB0cHA5MDAsIHRwcDk1MCwgdHBwMTAwMCB9CisKK1RpbWVyUlNUIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRyNTAsIHRyMTAwLCB0cjE1MCwgdHIyMDAsIHRyMjUwLCB0cjMwMCwgCisJCQkJCQkJCQkJdHIzNTAsIHRyNDAwLCB0cjQ1MCwgdHI1MDAsIHRyNTUwLAorCQkJCQkJCQkJCXRyNjAwLCB0cjcwMCwgdHI4MDAsIHRyOTAwLCB0cjEwMDAgfQorCitUaW1lclN0YXR1c1BlcmlvZGljIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0c3AxMDAsIHRzcDIwMCwJdHNwMzAwLCB0c3A0MDAsIHRzcDUwMCwKKwkJCQkJCQkJCQl0c3A3NTAsIHRzcDEwMDAsIHRzcDIwMDAgfQorCitUaW1lclN0YXR1c1Byb2hpYml0IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0c3AxMCx0c3AyMCx0c3AzMCx0c3A0MCx0c3A1MCwKKwkJCQkJCQkJCQl0c3A2MCx0c3A3MCx0c3A4MCx0c3A5MCx0c3AxMDAsCisJCQkJCQkJCQkJdHNwMTEwLHRzcDEyMCx0c3AxMzAsdHNwMTQwLHRzcDE1MCwKKwkJCQkJCQkJCQl0c3AxNjAsdHNwMTcwLHRzcDE4MCx0c3AxOTAsdHNwMjAwLAorCQkJCQkJCQkJCXRzcDIxMCx0c3AyMjAsdHNwMjMwLHRzcDI0MCx0c3AyNTAsCisJCQkJCQkJCQkJdHNwMjYwLHRzcDI3MCx0c3AyODAsdHNwMjkwLHRzcDMwMCwKKwkJCQkJCQkJCQl0c3AzMTAsdHNwMzIwLHRzcDMzMCx0c3AzNDAsdHNwMzUwLAorCQkJCQkJCQkJCXRzcDM2MCx0c3AzNzAsdHNwMzgwLHRzcDM5MCx0c3A0MDAsCisJCQkJCQkJCQkJdHNwNDEwLHRzcDQyMCx0c3A0MzAsdHNwNDQwLHRzcDQ1MCwKKwkJCQkJCQkJCQl0c3A0NjAsdHNwNDcwLHRzcDQ4MCx0c3A0OTAsdHNwNTAwLAorCQkJCQkJCQkJCXRzcDUxMCx0c3A1MjAsdHNwNTMwLHRzcDU0MCx0c3A1NTAsCisJCQkJCQkJCQkJdHNwNjAwLHRzcDY1MCx0c3A3MDAsdHNwNzUwLHRzcDgwMCwKKwkJCQkJCQkJCQl0c3A4NTAsdHNwOTAwLHRzcDk1MCx0c3AxMDAwIH0KKworVHJhbnNtaXNzaW9uUkxDLURpc2NhcmQgOjo9CQkJQ0hPSUNFIHsKKwl0aW1lckJhc2VkRXhwbGljaXQJCQkJCUV4cGxpY2l0RGlzY2FyZCwKKwl0aW1lckJhc2VkTm9FeHBsaWNpdAkJCQlOb0V4cGxpY2l0RGlzY2FyZCwKKwltYXhEQVQtUmV0cmFuc21pc3Npb25zCQkJCU1heERBVC1SZXRyYW5zbWlzc2lvbnMsCisJbm9EaXNjYXJkCQkJCQkJCU1heERBVAorfQorCitUcmFuc21pc3Npb25XaW5kb3dTaXplIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXR3MSwgdHc4LCB0dzE2LCB0dzMyLCB0dzY0LCB0dzEyOCwgdHcyNTYsCisJCQkJCQkJCQkJdHc1MTIsIHR3NzY4LCB0dzEwMjQsIHR3MTUzNiwgdHcyMDQ3LCAKKwkJCQkJCQkJCQl0dzI1NjAsIHR3MzA3MiwgdHczNTg0LCB0dzQwOTUgfQorCitVTC1BTS1STEMtTW9kZSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmFuc21pc3Npb25STEMtRGlzY2FyZAkJCQlUcmFuc21pc3Npb25STEMtRGlzY2FyZCwKKwl0cmFuc21pc3Npb25XaW5kb3dTaXplCQkJCVRyYW5zbWlzc2lvbldpbmRvd1NpemUsCisJdGltZXJSU1QJCQkJCQkJVGltZXJSU1QsCisJbWF4LVJTVAkJCQkJCQkJTWF4UlNULAorCXBvbGxpbmdJbmZvCQkJCQkJCVBvbGxpbmdJbmZvCQkJCQkJCU9QVElPTkFMCit9CisKK1VMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvIDo6PQkJU0VRVUVOQ0UgeworCXJCLVdpdGhQRENQLUluZm9MaXN0CQkJCQlSQi1XaXRoUERDUC1JbmZvTGlzdCAJT1BUSU9OQUwsCisJc3RhcnRMaXN0CQkJCQkJCQlTVEFSVExpc3QKK30KKworVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nIDo6PQkJU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IFVMLVRyYW5zcG9ydENoYW5uZWxUeXBlIGNvbnRhaW5zIFRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSBhcyB3ZWxsLgorCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxUeXBlLAorCWxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJTG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlPUFRJT05BTCwKKwlybGMtU2l6ZUxpc3QJCQkJCQlDSE9JQ0UgeworCQlhbGxTaXplcwkJCQkJCQlOVUxMLAorCQljb25maWd1cmVkCQkJCQkJCU5VTEwsCisJCWV4cGxpY2l0TGlzdAkJCQkJCVJMQy1TaXplRXhwbGljaXRMaXN0CisJfSwKKwltYWMtTG9naWNhbENoYW5uZWxQcmlvcml0eQkJCU1BQy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5Cit9CisKK1VMLUxvZ2ljYWxDaGFubmVsTWFwcGluZy1yNiA6Oj0JCVNFUVVFTkNFIHsKKwl1bC1UckNILVR5cGUJCQkJCQlDSE9JQ0UgeworCQlkY2gtcmFjaC11c2NoCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gVEFCVUxBUjogVUwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUgY29udGFpbnMgVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5IGFzIHdlbGwuCisJCQl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSwKKwkJCWxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJTG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlPUFRJT05BTCwKKwkJCXJsYy1TaXplTGlzdAkJCQkJCUNIT0lDRSB7CisJCQkJYWxsU2l6ZXMJCQkJCQkJTlVMTCwKKwkJCQljb25maWd1cmVkCQkJCQkJCU5VTEwsCisJCQkJZXhwbGljaXRMaXN0CQkJCQkJUkxDLVNpemVFeHBsaWNpdExpc3QKKwkJCX0KKwkJfSwKKwkJZS1kY2gJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJTG9naWNhbENoYW5uZWxJZGVudGl0eSwKKwkJCWUtRENILU1BQy1kLUZsb3dJZGVudGl0eQkJCUUtRENILU1BQy1kLUZsb3dJZGVudGl0eSwKKwkJCWRkaQkJCQkJCQkJCURESSwKKwkJCXJsYy1QRFUtU2l6ZUxpc3QJCQkJCVJMQy1QRFUtU2l6ZUxpc3QsCisJCQlpbmNsdWRlSW5TY2hlZHVsaW5nSW5mbwkJCQlCT09MRUFOCisJCX0KKwl9LAorCW1hYy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5CQkJTUFDLUxvZ2ljYWxDaGFubmVsUHJpb3JpdHkKK30KKworVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdCA6Oj0JU0VRVUVOQ0UgeworCS0tIHJsYy1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdJbmRpY2F0b3Igc2hhbGwgYmUgc2V0IHRvIFRSVUUgaW4gdGhpcyB2ZXJzaW9uCisJLS0gb2YgdGhlIHNwZWNpZmljYXRpb24KKwlybGMtTG9naWNhbENoYW5uZWxNYXBwaW5nSW5kaWNhdG9yCUJPT0xFQU4sCisJdWwtTG9naWNhbENoYW5uZWxNYXBwaW5nCQkJU0VRVUVOQ0UgKFNJWkUgKG1heExvQ0hwZXJSTEMpKSBPRgorCQkJCQkJCQkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZworfQorCitVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0LXI2IDo6PQlTRVFVRU5DRSB7CisJLS0gcmxjLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0luZGljYXRvciBzaGFsbCBiZSBzZXQgdG8gVFJVRSBpbiB0aGlzIHZlcnNpb24KKwktLSBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCXJsYy1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdJbmRpY2F0b3IJQk9PTEVBTiwKKwl1bC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcJCQlTRVFVRU5DRSAoU0laRSAobWF4TG9DSHBlclJMQykpIE9GCisJCQkJCQkJCQkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZy1yNgorfQorCitVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzIDo6PQkJQ0hPSUNFIHsKKwlvbmVMb2dpY2FsQ2hhbm5lbAkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nLAorCXR3b0xvZ2ljYWxDaGFubmVscwkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdAorfQorCitVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzLXI2IDo6PQlDSE9JQ0UgeworCW9uZUxvZ2ljYWxDaGFubmVsCQkJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmctcjYsCisJdHdvTG9naWNhbENoYW5uZWxzCQkJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0LXI2Cit9CisKK1VMLVJGQzMwOTUtcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJY2lkLUluY2x1c2lvbkluZm8JCQkJCUNJRC1JbmNsdXNpb25JbmZvLXI0LAorCW1heC1DSUQJCQkJCQkJCUlOVEVHRVIgKDEuLjE2MzgzKQkJCQkJREVGQVVMVCAxNSwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCWR1bW15CQkJCQkJCQlST0hDLVBhY2tldFNpemVMaXN0LXI0Cit9CisKK1VMLVJMQy1Nb2RlIDo6PQkJCQkJCUNIT0lDRSB7CisJdWwtQU0tUkxDLU1vZGUJCQkJCQlVTC1BTS1STEMtTW9kZSwKKwl1bC1VTS1STEMtTW9kZQkJCQkJCVVMLVVNLVJMQy1Nb2RlLAorCXVsLVRNLVJMQy1Nb2RlCQkJCQkJVUwtVE0tUkxDLU1vZGUsCisJc3BhcmUJCQkJCQkJCU5VTEwKK30KKworVUwtVE0tUkxDLU1vZGUgOjo9CQkJCQlTRVFVRU5DRSB7CisJdHJhbnNtaXNzaW9uUkxDLURpc2NhcmQJCQkJVHJhbnNtaXNzaW9uUkxDLURpc2NhcmQJCQkJT1BUSU9OQUwsCisJc2VnbWVudGF0aW9uSW5kaWNhdGlvbgkJCQlCT09MRUFOCit9CisKK1VMLVVNLVJMQy1Nb2RlIDo6PQkJCQkJU0VRVUVOQ0UgeworCXRyYW5zbWlzc2lvblJMQy1EaXNjYXJkCQkJCVRyYW5zbWlzc2lvblJMQy1EaXNjYXJkCQkJCU9QVElPTkFMCit9CisKK1VMLVRyYW5zcG9ydENoYW5uZWxUeXBlIDo6PQkJCUNIT0lDRSB7CisJZGNoCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCXJhY2gJCQkJCQkJCU5VTEwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCS0tIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teQkJCQkJCQkJTlVMTCwKKwl1c2NoCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKK30KKworVU0tUkxDLUR1cGxBdm9pZC1SZW9yZC1JbmZvLXI2IDo6PQlTRVFVRU5DRSB7CisJdGltZXItREFSCQkJCQkJCVRpbWVyREFSLXI2LAorCXdpZG93U2l6ZS1EQVIJCQkJCQlXaW5kb3dTaXplREFSLXI2Cit9CisKK1VNLVJMQy1PdXRPU2VxRGVsaXZlcnktSW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCXRpbWVyLU9TRAkJCQkJCQlUaW1lck9TRC1yNgkJCQkJCQlPUFRJT05BTCwKKwl3aW5kb3dTaXplLU9TRAkJCQkJCVdpbmRvd1NpemVPU0QtcjYKK30KKworV2luZG93U2l6ZURBUi1yNiA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJd3M0LCB3czgsIHdzMTYsIHdzMzIsIHdzNDAsIHdzNDgsCisJCQkJCQkJCQkJd3M1Niwgd3M2NCB9CisKK1dpbmRvd1NpemVPU0QtcjYgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXdzOCwgd3MxNiwgd3MzMiwgd3M0MCwgd3M0OCwKKwkJCQkJCQkJCQl3czU2LCB3czY0IH0KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIFRSQU5TUE9SVCBDSEFOTkVMIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjUpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FkZE9yUmVjb25mTUFDLWRGbG93IDo6PQkJCVNFUVVFTkNFIHsKKwltYWMtaHMtQWRkUmVjb25mUXVldWUtTGlzdAkJCQkJTUFDLWhzLUFkZFJlY29uZlF1ZXVlLUxpc3QJT1BUSU9OQUwsCisJbWFjLWhzLURlbFF1ZXVlLUxpc3QJCQkJCQlNQUMtaHMtRGVsUXVldWUtTGlzdAlPUFRJT05BTAorfQorCitBbGxvd2VkVEZDLUxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YKKwkJCQkJCQkJCQlURkMtVmFsdWUKKworQWxsb3dlZFRGSS1MaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YKKwkJCQkJCQkJCQlJTlRFR0VSICgwLi4zMSkKKworQml0TW9kZVJMQy1TaXplSW5mbyA6Oj0JCQkJQ0hPSUNFIHsKKwlzaXplVHlwZTEJCQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKKwktLSBBY3R1YWwgdmFsdWUgc2l6ZVR5cGUyID0gKHBhcnQxICogOCkgKyAxMjggKyBwYXJ0MgorCXNpemVUeXBlMgkJCQkJCQlTRVFVRU5DRSB7CisJCXBhcnQxCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJCXBhcnQyCQkJCQkJCQlJTlRFR0VSICgxLi43KQkJCQkJT1BUSU9OQUwKKwl9LAorCS0tIEFjdHVhbCB2YWx1ZSBzaXplVHlwZTMgPSAocGFydDEgKiAxNikgKyAyNTYgKyBwYXJ0MgorCXNpemVUeXBlMwkJCQkJCQlTRVFVRU5DRSB7CisJCXBhcnQxCQkJCQkJCQlJTlRFR0VSICgwLi40NyksCisJCXBhcnQyCQkJCQkJCQlJTlRFR0VSICgxLi4xNSkJCQkJCU9QVElPTkFMCisJfSwKKwktLSBBY3R1YWwgdmFsdWUgc2l6ZVR5cGU0ID0gKHBhcnQxICogNjQpICsgMTAyNCArIHBhcnQyCisJc2l6ZVR5cGU0CQkJCQkJCVNFUVVFTkNFIHsKKwkJcGFydDEJCQkJCQkJCUlOVEVHRVIgKDAuLjYyKSwKKwkJcGFydDIJCQkJCQkJCUlOVEVHRVIgKDEuLjYzKQkJCQkJT1BUSU9OQUwKKwl9Cit9CisKKy0tIEFjdHVhbCB2YWx1ZSBCTEVSLVF1YWxpdHlWYWx1ZSA9IElFIHZhbHVlICogMC4xCitCTEVSLVF1YWxpdHlWYWx1ZSA6Oj0JCQkJSU5URUdFUiAoLTYzLi4wKQorCitDaGFubmVsQ29kaW5nVHlwZSA6Oj0JCQkJQ0hPSUNFIHsgCisJLS0gbm9Db2RpbmcgaXMgb25seSB1c2VkIGZvciBUREQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCS0tIG90aGVyd2lzZSBpdCBzaG91bGQgYmUgaWdub3JlZAorCW5vQ29kaW5nCQkJCQkJCU5VTEwsCisJY29udm9sdXRpb25hbAkJCQkJCUNvZGluZ1JhdGUsCisJdHVyYm8JCQkJCQkJCU5VTEwgCit9CisKK0NvZGluZ1JhdGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJaGFsZiwKKwkJCQkJCQkJCQl0aGlyZCB9CisKK0NvbW1vbkR5bmFtaWNURi1JbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwlybGMtU2l6ZQkJCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlvY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMgkJCU9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUyCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNvbW1vblRERC1DaG9pY2UJCQkJCUNIT0lDRSB7CisJCQkJYml0TW9kZVJMQy1TaXplSW5mbwkJCQkJQml0TW9kZVJMQy1TaXplSW5mbywKKwkJCQlvY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQkJCU9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxCisJCQl9CisJCX0KKwl9LAorCW51bWJlck9mVGJTaXplTGlzdAkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYpKSBPRgkJCisJCQkJCQkJCQkJCU51bWJlck9mVHJhbnNwb3J0QmxvY2tzLAorCWxvZ2ljYWxDaGFubmVsTGlzdAkJCQlMb2dpY2FsQ2hhbm5lbExpc3QKK30KKworQ29tbW9uRHluYW1pY1RGLUluZm8tRHluYW1pY1RUSSA6Oj0JU0VRVUVOQ0UgeworCWNvbW1vblRERC1DaG9pY2UJCQkJCUNIT0lDRSB7CisJCWJpdE1vZGVSTEMtU2l6ZUluZm8JCQkJCUJpdE1vZGVSTEMtU2l6ZUluZm8sCisJCW9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEKKwl9LAorCW51bWJlck9mVGJTaXplQW5kVFRJTGlzdAkJCU51bWJlck9mVGJTaXplQW5kVFRJTGlzdCwKKwlsb2dpY2FsQ2hhbm5lbExpc3QJCQkJCUxvZ2ljYWxDaGFubmVsTGlzdAorfQorCitDb21tb25EeW5hbWljVEYtSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYpKSBPRgorCQkJCQkJCQkJCUNvbW1vbkR5bmFtaWNURi1JbmZvCisKK0NvbW1vbkR5bmFtaWNURi1JbmZvTGlzdC1EeW5hbWljVFRJIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYpKSBPRgorCQkJCQkJCQkJCUNvbW1vbkR5bmFtaWNURi1JbmZvLUR5bmFtaWNUVEkKKworQ29tbW9uVHJhbnNDaFRGUyA6Oj0JCQkJU0VRVUVOQ0UgeworCXR0aQkJCQkJCQkJCUNIT0lDRSB7CisJCXR0aTEwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTIwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTQwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTgwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCWR5bmFtaWMJCQkJCQkJCUNvbW1vbkR5bmFtaWNURi1JbmZvTGlzdC1EeW5hbWljVFRJCisJfSwKKwlzZW1pc3RhdGljVEYtSW5mb3JtYXRpb24JCQlTZW1pc3RhdGljVEYtSW5mb3JtYXRpb24KK30KKworQ29tbW9uVHJhbnNDaFRGUy1MQ1IgOjo9CQkJCVNFUVVFTkNFIHsKKwl0dGkJCQkJCQkJCQlDSE9JQ0UgeworCQl0dGk1CQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTEwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTIwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTQwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCXR0aTgwCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QsCisJCWR5bmFtaWMJCQkJCQkJCUNvbW1vbkR5bmFtaWNURi1JbmZvTGlzdC1EeW5hbWljVFRJCisJfSwKKwlzZW1pc3RhdGljVEYtSW5mb3JtYXRpb24JCQlTZW1pc3RhdGljVEYtSW5mb3JtYXRpb24KK30KKworQ1BDSC1TZXRJRCA6Oj0JCQkJCQlJTlRFR0VSICgxLi5tYXhDUENIc2V0cykKKworQ1JDLVNpemUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7IAorCQkJCQkJCQkJCWNyYzAsIGNyYzgsIGNyYzEyLCBjcmMxNiwgY3JjMjQgfQorCitEZWRpY2F0ZWREeW5hbWljVEYtSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJcmxjLVNpemUJCQkJCQkJQ0hPSUNFIHsKKwkJYml0TW9kZQkJCQkJCQkJQml0TW9kZVJMQy1TaXplSW5mbywKKwkJb2N0ZXRNb2RlVHlwZTEJCQkJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQorCX0sCisJbnVtYmVyT2ZUYlNpemVMaXN0CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCQkJCQkJCQkJCU51bWJlck9mVHJhbnNwb3J0QmxvY2tzLAorCWxvZ2ljYWxDaGFubmVsTGlzdAkJCQlMb2dpY2FsQ2hhbm5lbExpc3QgCit9CisKK0RlZGljYXRlZER5bmFtaWNURi1JbmZvLUR5bmFtaWNUVEkgOjo9IFNFUVVFTkNFIHsKKwlybGMtU2l6ZQkJCQkJCQlDSE9JQ0UgeworCQliaXRNb2RlCQkJCQkJCQlCaXRNb2RlUkxDLVNpemVJbmZvLAorCQlvY3RldE1vZGVUeXBlMQkJCQkJCU9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxCisJfSwKKwludW1iZXJPZlRiU2l6ZUFuZFRUSUxpc3QJCQlOdW1iZXJPZlRiU2l6ZUFuZFRUSUxpc3QsCisJbG9naWNhbENoYW5uZWxMaXN0CQkJCUxvZ2ljYWxDaGFubmVsTGlzdCAKK30KKworRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YKKwkJCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mbworCitEZWRpY2F0ZWREeW5hbWljVEYtSW5mb0xpc3QtRHluYW1pY1RUSSA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YKKwkJCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mby1EeW5hbWljVFRJCisKK0RlZGljYXRlZFRyYW5zQ2hURlMgOjo9CQkJCVNFUVVFTkNFIHsKKwl0dGkJCQkJCQkJCQlDSE9JQ0UgeworCQl0dGkxMAkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGkyMAkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGk0MAkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGk4MAkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LAorCQlkeW5hbWljCQkJCQkJCQlEZWRpY2F0ZWREeW5hbWljVEYtSW5mb0xpc3QtRHluYW1pY1RUSQorCX0sCisJc2VtaXN0YXRpY1RGLUluZm9ybWF0aW9uCQkJU2VtaXN0YXRpY1RGLUluZm9ybWF0aW9uCit9CisKKy0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBETC1BZGRSZWNvbmZUcmFuc0NoSW5mbzJMaXN0IHNlcXVlbmNlIGlzIDE2CitETC1BZGRSZWNvbmZUcmFuc0NoSW5mbzJMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSHByZWNvbmYpKSBPRgorCQkJCQkJCQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbjIKKworLS0gVGhlIG1heGltdW0gYWxsb3dlZCBzaXplIG9mIERMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCBzZXF1ZW5jZSBpcyAxNgorREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0hwcmVjb25mKSkgT0YKKwkJCQkJCQkJCQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24KKworLS0gVGhlIG1heGltdW0gYWxsb3dlZCBzaXplIG9mIERMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNCBzZXF1ZW5jZSBpcyAxNgorREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSHByZWNvbmYpKSBPRgorCQkJCQkJCQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbi1yNAorCistLSBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1IHNlcXVlbmNlIGlzIDE2CitETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIcHJlY29uZikpIE9GCisJCQkJCQkJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uLXI1CisKKy0tIEFTTi4xIGZvciBJRSAiQWRkZWQgb3IgUmVjb25maWd1cmVkIERMIFRyQ0ggaW5mb3JtYXRpb24iIAorLS0gaW4gY2FzZSBvZiBtZXNzYWdlcyBvdGhlciB0aGFuOiBSYWRpbyBCZWFyZXIgUmVsZWFzZSBtZXNzYWdlIGFuZCAKKy0tIFJhZGlvIEJlYXJlciBSZWNvbmZpZ3VyYXRpb24gbWVzc2FnZQorREwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uIDo6PSAJU0VRVUVOQ0UgeworCWRsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCURMLVRyQ0gtVHlwZSwKKwlkbC10cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJdGZzLVNpZ25hbGxpbmdNb2RlCQkJCQlDSE9JQ0UgeworCQlleHBsaWNpdC1jb25maWcJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJCXNhbWVBc1VMVHJDSAkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorCX0sCisJZGNoLVF1YWxpdHlUYXJnZXQJCQkJCVF1YWxpdHlUYXJnZXQJCQkJCQlPUFRJT05BTCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZCAKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCVRNLVNpZ25hbGxpbmdJbmZvCQkJCQlPUFRJT05BTAorfQorCitETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjQgOjo9IAlTRVFVRU5DRSB7CisJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJDSC1UeXBlLAorCWRsLXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwl0ZnMtU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CisJCWV4cGxpY2l0LWNvbmZpZwkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKKwkJc2FtZUFzVUxUckNICQkJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CisJfSwKKwlkY2gtUXVhbGl0eVRhcmdldAkJCQkJUXVhbGl0eVRhcmdldAkJCQkJCU9QVElPTkFMCit9CisKK0RMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbi1yNSA6Oj0gCVNFUVVFTkNFIHsKKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGVJZDEtcjUsCisJdGZzLVNpZ25hbGxpbmdNb2RlCQkJCQlDSE9JQ0UgeworCQlleHBsaWNpdC1jb25maWcJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJCXNhbWVBc1VMVHJDSAkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwkJaHNkc2NoCQkJCQkJCQlIU0RTQ0gtSW5mbworCX0sCisJZGNoLVF1YWxpdHlUYXJnZXQJCQkJCVF1YWxpdHlUYXJnZXQJCQkJCQlPUFRJT05BTAorfQorCistLSBBU04uMSBmb3IgSUUgIkFkZGVkIG9yIFJlY29uZmlndXJlZCBETCBUckNIIGluZm9ybWF0aW9uIiAKKy0tIGluIGNhc2Ugb2YgUmFkaW8gQmVhcmVyIFJlbGVhc2UgbWVzc2FnZSBhbmQgCistLSBSYWRpbyBCZWFyZXIgUmVjb25maWd1cmF0aW9uIG1lc3NhZ2UKK0RMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbjIgOjo9IFNFUVVFTkNFIHsKKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGUsCisJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCXRmcy1TaWduYWxsaW5nTW9kZQkJCQkJQ0hPSUNFIHsKKwkJZXhwbGljaXQtY29uZmlnCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAorCQlzYW1lQXNVTFRyQ0gJCQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKwl9LAorCXF1YWxpdHlUYXJnZXQJCQkJCQlRdWFsaXR5VGFyZ2V0CQkJCQkJT1BUSU9OQUwKK30KKworREwtQ29tbW9uVHJhbnNDaEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXNjY3BjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAorCS0tIG1vZGVTcGVjaWZpY0luZm8gc2hvdWxkIGJlIG9wdGlvbmFsLiBBIG5ldyB2ZXJzaW9uIG9mIHRoaXMgSUUgc2hvdWxkIGJlIGRlZmluZWQgCisJLS0gdG8gYmUgdXNlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZiBtZXNzYWdlcyB1c2luZyB0aGlzIElFCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtUGFyYW1ldGVycwkJCQkJCUNIT0lDRSB7CisJCQkJZGwtRENILVRGQ1MJCQkJCQkJVEZDUywKKwkJCQlzYW1lQXNVTAkJCQkJCQlOVUxMCisJCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QKKwkJCQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitETC1Db21tb25UcmFuc0NoSW5mby1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJc2NjcGNoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtUGFyYW1ldGVycwkJCQkJCUNIT0lDRSB7CisJCQkJZGwtRENILVRGQ1MJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0ZmNzCQkJCQkJCQlURkNTCQkJCU9QVElPTkFMCisJCQkJfSwKKwkJCQlzYW1lQXNVTAkJCQkJCQlOVUxMCisJCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QKKwkJCQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQl9CisJfQlPUFRJT05BTAorfQorCitETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCURMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorCitETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJREwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LXI1CQorCitETC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgOjo9IAkJU0VRVUVOQ0UgeworCWRsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCURMLVRyQ0gtVHlwZSwKKwlkbC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKK30KKworREwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LXI1IDo6PSAJCVNFUVVFTkNFIHsKKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGVJZDItcjUKK30KKworLS0gVGhlIGNob2ljZSDSZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorREwtVHJDSC1UeXBlIDo6PQkJCQkJRU5VTUVSQVRFRCB7ZGNoLCBkc2NofQorCitETC1UckNILVR5cGVJZDEtcjUgOjo9CQkJCUNIT0lDRSB7CisJZGNoCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCS0tIFRoZSBjaG9pY2Ug0mRzY2jTIHNob3VsZCBub3QgYmUgdXNlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KKwlkc2NoCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJaHNkc2NoCQkJCQkJCQlOVUxMCit9CisKK0RMLVRyQ0gtVHlwZUlkMi1yNSA6Oj0JCQkJQ0hPSUNFIHsKKwlkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJLS0gVGhlIGNob2ljZSDSZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkLgorCWRzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwloc2RzY2gJCQkJCQkJCU1BQy1kLUZsb3dJZGVudGl0eQorfQorCitEUkFDLUNsYXNzSWRlbnRpdHkgOjo9CQkJCUlOVEVHRVIgKDEuLm1heERSQUNjbGFzc2VzKQorCitEUkFDLVN0YXRpY0luZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwl0cmFuc21pc3Npb25UaW1lVmFsaWRpdHkJCQlUcmFuc21pc3Npb25UaW1lVmFsaWRpdHksCisJdGltZUR1cmF0aW9uQmVmb3JlUmV0cnkJCQkJVGltZUR1cmF0aW9uQmVmb3JlUmV0cnksCisJZHJhYy1DbGFzc0lkZW50aXR5CQkJCQlEUkFDLUNsYXNzSWRlbnRpdHkKK30KKworRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GIAorCQkJCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb24KKworRS1EQ0gtQWRkUmVjb25mLU1BQy1kLUZsb3cgOjo9CQlTRVFVRU5DRSB7CisJbWFjLWQtRmxvd0lkZW50aXR5CQkJCQlFLURDSC1NQUMtZC1GbG93SWRlbnRpdHksCisJbWFjLWQtRmxvd1Bvd2VyT2Zmc2V0CQkJCUUtRENILU1BQy1kLUZsb3dQb3dlck9mZnNldAkJCU9QVElPTkFMLAorCW1hYy1kLUZsb3dNYXhSZXRyYW5zCQkJCUUtRENILU1BQy1kLUZsb3dNYXhSZXRyYW5zCQkJT1BUSU9OQUwsCisJbWFjLWQtRmxvd011bHRpcGxleGluZ0xpc3QJCQlFLURDSC1NQUMtZC1GbG93TXVsdGlwbGV4aW5nTGlzdAlPUFRJT05BTCwKKwl0cmFuc21pc3Npb25HcmFudFR5cGUJCQkJQ0hPSUNFIHsKKwkJbm9uLVNjaGVkdWxlZFRyYW5zR3JhbnRJbmZvCQkJU0VRVUVOQ0UgeworCQkJbWF4TUFDLWUtUERVQ29udGVudHMJCQkJSU5URUdFUiAoMS4uMTk5ODIpLAorCQkJbXMyLU5vblNjaGVkVHJhbnNtR3JhbnRIQVJRQWxsb2MJQklUIFNUUklORyAoU0laRSAoOCkpCQlPUFRJT05BTAorCQl9LAorCQlzY2hlZHVsZWRUcmFuc21pc3Npb25HcmFudEluZm8JCU5VTEwKKwl9CU9QVElPTkFMCit9CisKK0UtRENILUFkZFJlY29uZi1NQUMtZC1GbG93TGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEUtRENITUFDZEZsb3cpKSBPRgorCQkJCQkJCUUtRENILUFkZFJlY29uZi1NQUMtZC1GbG93CisKK0UtRENILU1BQy1kLUZsb3dJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDAuLm1heEUtRENITUFDZEZsb3ctMSkKKworRS1EQ0gtTUFDLWQtRmxvd01heFJldHJhbnMgOjo9CQlJTlRFR0VSICgwLi4xNSkKKworRS1EQ0gtTUFDLWQtRmxvd011bHRpcGxleGluZ0xpc3QgOjo9IEJJVCBTVFJJTkcgKFNJWkUgKG1heEUtRENITUFDZEZsb3cpKQorCitFLURDSC1NQUMtZC1GbG93UG93ZXJPZmZzZXQgOjo9CQlJTlRFR0VSICgwLi42KQorCitFLURDSC1UVEkgOjo9CQkJCQkJRU5VTUVSQVRFRCB7IHR0aTIsIHR0aTEwIH0KKworRXhwbGljaXRURkNTLUNvbmZpZ3VyYXRpb24gOjo9CQlDSE9JQ0UgeworCWNvbXBsZXRlCQkJCQkJCVRGQ1MtUmVjb25mQWRkLAorCWFkZGl0aW9uCQkJCQkJCVRGQ1MtUmVjb25mQWRkLAorCXJlbW92YWwJCQkJCQkJCVRGQ1MtUmVtb3ZhbExpc3QsCisJcmVwbGFjZW1lbnQJCQkJCQkJU0VRVUVOQ0UgeworCQl0ZmNzUmVtb3ZhbAkJCQkJCQlURkNTLVJlbW92YWxMaXN0LAorCQl0ZmNzQWRkCQkJCQkJCQlURkNTLVJlY29uZkFkZAorCX0KK30KKworR2FpbkZhY3RvciA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNSkKKworR2FpbkZhY3RvckluZm9ybWF0aW9uIDo6PQkJCUNIT0lDRSB7CisJc2lnbmFsbGVkR2FpbkZhY3RvcnMJCQkJU2lnbmFsbGVkR2FpbkZhY3RvcnMsCisJY29tcHV0ZWRHYWluRmFjdG9ycwkJCQkJUmVmZXJlbmNlVEZDLUlECit9CisKK0hTRFNDSC1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwloYXJxSW5mbwkJCQkJCQlIQVJRLUluZm8gCQkJCU9QVElPTkFMLAorCWFkZE9yUmVjb25mTUFDLWRGbG93CQkJCUFkZE9yUmVjb25mTUFDLWRGbG93CU9QVElPTkFMCit9CisKK0hBUlEtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJbnVtYmVyT2ZQcm9jZXNzZXMJCQkJCUlOVEVHRVIgKDEuLjgpLAorCW1lbW9yeVBhcnRpdGlvbmluZwkJCQkJQ0hPSUNFIHsKKwkJaW1wbGljaXQJCQkJCQkJTlVMTCwKKwkJZXhwbGljaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhQcm9jZXNzZXMpKSBPRgorCQkJCQkJCQkJCQkJSEFSUU1lbW9yeVNpemUKKwl9Cit9CisKK0hBUlFNZW1vcnlTaXplIDo6PSAJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWhtczgwMCwgaG1zMTYwMCwgaG1zMjQwMCwgaG1zMzIwMCwgaG1zNDAwMCwKKwkJCQkJCQkJCQlobXM0ODAwLCBobXM1NjAwLCBobXM2NDAwLCBobXM3MjAwLCBobXM4MDAwLAorCQkJCQkJCQkJCWhtczg4MDAsIGhtczk2MDAsIGhtczEwNDAwLCBobXMxMTIwMCwgaG1zMTIwMDAsCisJCQkJCQkJCQkJaG1zMTI4MDAsIGhtczEzNjAwLCBobXMxNDQwMCwgaG1zMTUyMDAsIGhtczE2MDAwLAorCQkJCQkJCQkJCWhtczE3NjAwLCBobXMxOTIwMCwgaG1zMjA4MDAsIGhtczIyNDAwLCBobXMyNDAwMCwKKwkJCQkJCQkJCQlobXMyNTYwMCwgaG1zMjcyMDAsIGhtczI4ODAwLCBobXMzMDQwMCwgaG1zMzIwMDAsCisJCQkJCQkJCQkJaG1zMzYwMDAsIGhtczQwMDAwLCBobXM0NDAwMCwgaG1zNDgwMDAsIGhtczUyMDAwLAorCQkJCQkJCQkJCWhtczU2MDAwLCBobXM2MDAwMCwgaG1zNjQwMDAsIGhtczY4MDAwLCBobXM3MjAwMCwKKwkJCQkJCQkJCQlobXM3NjAwMCwgaG1zODAwMDAsIGhtczg4MDAwLCBobXM5NjAwMCwgaG1zMTA0MDAwLAorCQkJCQkJCQkJCWhtczExMjAwMCwgaG1zMTIwMDAwLCBobXMxMjgwMDAsIGhtczEzNjAwMCwgaG1zMTQ0MDAwLAorCQkJCQkJCQkJCWhtczE1MjAwMCwgaG1zMTYwMDAwLCBobXMxNzYwMDAsIGhtczE5MjAwMCwgaG1zMjA4MDAwLAorCQkJCQkJCQkJCWhtczIyNDAwMCwgaG1zMjQwMDAwLCBobXMyNTYwMDAsIGhtczI3MjAwMCwgaG1zMjg4MDAwLAorCQkJCQkJCQkJCWhtczMwNDAwMCB9CisKK0luZGl2aWR1YWxETC1DQ1RyQ0gtSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwlkbC1URkNTLUlkZW50aXR5CQkJCQlURkNTLUlkZW50aXR5LAorCXRmY3MtU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CisJCWV4cGxpY2l0LWNvbmZpZwkJCQkJCVRGQ1MsCisJCXNhbWVBc1VMCQkJCQkJCVRGQ1MtSWRlbnRpdHkKKwl9Cit9CisKK0luZGl2aWR1YWxETC1DQ1RyQ0gtSW5mb0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCUluZGl2aWR1YWxETC1DQ1RyQ0gtSW5mbworCitJbmRpdmlkdWFsVUwtQ0NUckNILUluZm8gOjo9CQlTRVFVRU5DRSB7CisJdWwtVEZDUy1JZGVudGl0eQkJCQkJVEZDUy1JZGVudGl0eSwKKwl1bC1URkNTCQkJCQkJCQlURkNTICwKKwl0ZmMtU3Vic2V0CQkJCQkJCVRGQy1TdWJzZXQKK30KKworSW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJSW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvCisKK0xvZ2ljYWxDaGFubmVsQnlSQiA6Oj0JCQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAkKKwlsb2dDaE9mUmIJCQkJCQkJSU5URUdFUiAoMC4uMSkJCQkJCQlPUFRJT05BTAorfQorCitMb2dpY2FsQ2hhbm5lbExpc3QgOjo9CQkJCUNIT0lDRSB7CisJCWFsbFNpemVzCQkJCQkJCU5VTEwsCisJCWNvbmZpZ3VyZWQJCQkJCQkJTlVMTCwKKwkJZXhwbGljaXRMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjE1KSkgT0YKKwkJCQkJCQkJCQkJCUxvZ2ljYWxDaGFubmVsQnlSQgkJCQkKK30KKworTUFDLWQtRmxvd0lkZW50aXR5RENIYW5kSFNEU0NIIDo6PQlTRVFVRU5DRSB7CisJZGNoLXRyYW5zcG9ydC1jaC1pZAkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJaHNkc2NoLW1hYy1kLWZsb3ctaWQJCQlNQUMtZC1GbG93SWRlbnRpdHkKK30KKworTUFDLWQtRmxvd0lkZW50aXR5IDo6PQkJCQlJTlRFR0VSICgwLi43KQorCitNQUMtZC1QRFUtU2l6ZUluZm8tTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSgxLi4gbWF4TUFDLWQtUERVc2l6ZXMpKSBPRgorCQkJCQkJCQkJCU1BQy1kLVBEVXNpemVJbmZvCisKKy0tTUFDLWQtUGR1IHNpemVzIG5lZWQgdG8gYmUgZGVmaW5lZAorTUFDLWQtUERVc2l6ZUluZm8gOjo9CQkJCVNFUVVFTkNFeworCW1hYy1kLVBEVS1TaXplCQkJCQkJSU5URUdFUiAoMS4uNTAwMCksCisJbWFjLWQtUERVLUluZGV4CQkJCQkJSU5URUdFUigwLi43KQorfQorCitNQUMtaHMtQWRkUmVjb25mUXVldWUtTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4UXVldWVJRHMpKSBPRgorCQkJCQkJCQkJCU1BQy1ocy1BZGRSZWNvbmZRdWV1ZQorCitNQUMtaHMtQWRkUmVjb25mUXVldWUgOjo9CQkJU0VRVUVOQ0UgeworCW1hYy1oc1F1ZXVlSWQJCQkJCQlJTlRFR0VSKDAuLjcpLAorCW1hYy1kRmxvd0lkCQkJCQkJCU1BQy1kLUZsb3dJZGVudGl0eSwKKwlyZW9yZGVyaW5nUmVsZWFzZVRpbWVyCQkJCVQxLVJlbGVhc2VUaW1lciwKKwltYWMtaHNXaW5kb3dTaXplCQkJCQlNQUMtaHMtV2luZG93U2l6ZSwKKwltYWMtZC1QRFUtU2l6ZUluZm8tTGlzdAkJCQlNQUMtZC1QRFUtU2l6ZUluZm8tTGlzdAkJCQlPUFRJT05BTAorfQorCitNQUMtaHMtRGVsUXVldWUtTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4UXVldWVJRHMpKSBPRgorCQkJCQkJCQkJCU1BQy1ocy1EZWxRdWV1ZQorCitNQUMtaHMtRGVsUXVldWUgOjo9CQkJCQlTRVFVRU5DRSB7CisJbWFjLWhzUXVldWVJZAkJCQkJCUlOVEVHRVIoMC4uNykKK30KKworTUFDLWhzLVdpbmRvd1NpemUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW13czQsIG13czYsIG13czgsIG13czEyLCBtd3MxNiwgbXdzMjQsIG13czMyIH0KKworTnVtYmVyT2ZUYlNpemVBbmRUVElMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YgU0VRVUVOQ0UgeworCQludW1iZXJPZlRyYW5zcG9ydEJsb2NrcwkJCQlOdW1iZXJPZlRyYW5zcG9ydEJsb2NrcywKKwkJdHJhbnNtaXNzaW9uVGltZUludGVydmFsCQkJVHJhbnNtaXNzaW9uVGltZUludGVydmFsCit9CisKK01lc3NUeXBlIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbCB9CisKK05vbi1hbGxvd2VkVEZDLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRgorCQkJCQkJCQkJCVRGQy1WYWx1ZQorCitOdW1iZXJPZlRyYW5zcG9ydEJsb2NrcyA6Oj0JCQlDSE9JQ0UgeworCXplcm8JCQkJCQkJCU5VTEwsCisJb25lCQkJCQkJCQkJTlVMTCwKKwlzbWFsbAkJCQkJCQkJSU5URUdFUiAoMi4uMTcpLAorCWxhcmdlCQkJCQkJCQlJTlRFR0VSICgxOC4uNTEyKQorfQorCitPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMSA6Oj0JCUNIT0lDRSB7CisJLS0gQWN0dWFsIHNpemUgPSAoOCAqIHNpemVUeXBlMSkgKyAxNgorCXNpemVUeXBlMQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCisJc2l6ZVR5cGUyCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gQWN0dWFsIHNpemUgPSAoMzIgKiBwYXJ0MSkgKyAyNzIgKyAocGFydDIgKiA4KQorCQlwYXJ0MQkJCQkJCQkJSU5URUdFUiAoMC4uMjMpLAorCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uMykJCQkJCU9QVElPTkFMCisJfSwKKwlzaXplVHlwZTMJCQkJCQkJU0VRVUVOQ0UgeworCQktLSBBY3R1YWwgc2l6ZSA9ICg2NCAqIHBhcnQxKSArIDEwNDAgKyAocGFydDIgKiA4KQorCQlwYXJ0MQkJCQkJCQkJSU5URUdFUiAoMC4uNjEpLAorCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uNykJCQkJCU9QVElPTkFMCisJfQorfQorCitPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMiA6Oj0JCUNIT0lDRSB7CisJLS0gQWN0dWFsIHNpemUgPSAoc2l6ZVR5cGUxICogOCkgKyA0OAorCXNpemVUeXBlMQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCisJLS0gQWN0dWFsIHNpemUgPSAoc2l6ZVR5cGUyICogMTYpICsgMzEyCisJc2l6ZVR5cGUyCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwktLSBBY3R1YWwgc2l6ZSA9IChzaXplVHlwZTMgKjY0KSArIDEzODQKKwlzaXplVHlwZTMJCQkJCQkJSU5URUdFUiAoMC4uNTYpCit9CisKK1Bvd2VyT2Zmc2V0SW5mb1Nob3J0IDo6PQkJCVNFUVVFTkNFIHsKKwlyZWZlcmVuY2VURkMJCQkJCQlURkMtVmFsdWUsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZ2FpbkZhY3RvckJldGFDCQkJCQkJR2FpbkZhY3RvcgorCQl9LAorCQl0ZGQJCQkJCQkJCQlOVUxMCisJfSwKKwlnYWluRmFjdG9yQmV0YUQJCQkJCQlHYWluRmFjdG9yCit9CisKK1Bvd2VyT2Zmc2V0SW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCWdhaW5GYWN0b3JJbmZvcm1hdGlvbgkJCQlHYWluRmFjdG9ySW5mb3JtYXRpb24sCisJLS0gUG93ZXJPZmZzZXRQcC1tIGlzIGFsd2F5cyBhYnNlbnQgaW4gVERECisJcG93ZXJPZmZzZXRQcC1tCQkJCQkJUG93ZXJPZmZzZXRQcC1tCQkJCQkJT1BUSU9OQUwKK30KKworUG93ZXJPZmZzZXRQcC1tIDo6PQkJCQkJSU5URUdFUiAoLTUuLjEwKQorCitQcmVEZWZUcmFuc0NoQ29uZmlndXJhdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwl1bC1Db21tb25UcmFuc0NoSW5mbwkJCQlVTC1Db21tb25UcmFuc0NoSW5mbywKKwl1bC1BZGRSZWNvbmZUckNoSW5mb0xpc3QJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQkJREwtQ29tbW9uVHJhbnNDaEluZm8sCisJZGwtVHJDaEluZm9MaXN0CQkJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0Cit9CQorCitRdWFsaXR5VGFyZ2V0IDo6PQkJCQkJU0VRVUVOQ0UgeworCWJsZXItUXVhbGl0eVZhbHVlCQkJCQlCTEVSLVF1YWxpdHlWYWx1ZQorfQorCitSYXRlTWF0Y2hpbmdBdHRyaWJ1dGUgOjo9CQkJSU5URUdFUiAoMS4uaGlSTSkKKworCitSZWZlcmVuY2VURkMtSUQgOjo9CQkJCQlJTlRFR0VSICgwLi4zKQorCitSZXN0cmljdGVkVHJDaEluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UckNILVR5cGUsCisJcmVzdHJpY3RlZFRyQ2hJZGVudGl0eQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJYWxsb3dlZFRGSS1MaXN0CQkJCQkJQWxsb3dlZFRGSS1MaXN0CQkJCQkJT1BUSU9OQUwKK30KKworUmVzdHJpY3RlZFRyQ2hJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJUmVzdHJpY3RlZFRyQ2hJbmZvCisKK1NlbWlzdGF0aWNURi1JbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBUcmFuc21pc3Npb24gdGltZSBpbnRlcnZhbCBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgSUUgQ29tbW9uVHJhbnNDaFRGUy4KKwljaGFubmVsQ29kaW5nVHlwZQkJCQkJQ2hhbm5lbENvZGluZ1R5cGUsCisJcmF0ZU1hdGNoaW5nQXR0cmlidXRlCQkJCVJhdGVNYXRjaGluZ0F0dHJpYnV0ZSwKKwljcmMtU2l6ZQkJCQkJCQlDUkMtU2l6ZQorfQorCitTaWduYWxsZWRHYWluRmFjdG9ycyA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZ2FpbkZhY3RvckJldGFDCQkJCQkJR2FpbkZhY3RvcgorCQl9LAorCQl0ZGQJCQkJCQkJCQlOVUxMCisJfSwKKwlnYWluRmFjdG9yQmV0YUQJCQkJCQlHYWluRmFjdG9yLAorCXJlZmVyZW5jZVRGQy1JRAkJCQkJCVJlZmVyZW5jZVRGQy1JRAkJCQkJCU9QVElPTkFMCit9CisKK1NwbGl0VEZDSS1TaWduYWxsaW5nIDo6PQkJCVNFUVVFTkNFIHsKKwlzcGxpdFR5cGUJCQkJCQkJU3BsaXRUeXBlCQkJCQkJT1BUSU9OQUwsCisJdGZjaS1GaWVsZDItTGVuZ3RoCQkJCQlJTlRFR0VSICgxLi4xMCkJCQkJCU9QVElPTkFMLAorCXRmY2ktRmllbGQxLUluZm9ybWF0aW9uCQkJCUV4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uCQlPUFRJT05BTCwKKwl0ZmNpLUZpZWxkMi1JbmZvcm1hdGlvbgkJCQlURkNJLUZpZWxkMi1JbmZvcm1hdGlvbgkJCU9QVElPTkFMCit9CisKK1NwbGl0VHlwZSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQloYXJkU3BsaXQsIGxvZ2ljYWxTcGxpdCB9CisKK1QxLVJlbGVhc2VUaW1lciA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXJ0MTAsIHJ0MjAsIHJ0MzAsIHJ0NDAsIHJ0NTAsCisJCQkJCQkJCQkJcnQ2MCwgcnQ3MCwgcnQ4MCwgcnQ5MCwgcnQxMDAsCisJCQkJCQkJCQkJcnQxMjAsIHJ0MTQwLCBydDE2MCwgcnQyMDAsIHJ0MzAwLAorCQkJCQkJCQkJCXJ0NDAwIH0KKworVEZDLVN1YnNldCA6Oj0JCQkJCQlDSE9JQ0UgeworCW1pbmltdW1BbGxvd2VkVEZDLU51bWJlcgkJCVRGQy1WYWx1ZSwKKwlhbGxvd2VkVEZDLUxpc3QJCQkJCQlBbGxvd2VkVEZDLUxpc3QsCisJbm9uLWFsbG93ZWRURkMtTGlzdAkJCQkJTm9uLWFsbG93ZWRURkMtTGlzdCwKKwlyZXN0cmljdGVkVHJDaEluZm9MaXN0CQkJCVJlc3RyaWN0ZWRUckNoSW5mb0xpc3QsCisJZnVsbFRGQ1MJCQkJCQkJTlVMTAorfQorCitURkMtU3Vic2V0TGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi4gbWF4VEZDc3ViKSkgT0YgU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCU5VTEwsCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHkJCQkJT1BUSU9OQUwKKwkJfQorCX0sCisJdGZjLVN1YnNldAkJCQkJCQlURkMtU3Vic2V0Cit9CisKK1RGQy1WYWx1ZSA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xMDIzKQorCitURkNJLUZpZWxkMi1JbmZvcm1hdGlvbiA6Oj0JCQlDSE9JQ0UgeworCXRmY2ktUmFuZ2UJCQkJCQkJVEZDSS1SYW5nZUxpc3QsCisJZXhwbGljaXQtY29uZmlnCQkJCQkJRXhwbGljaXRURkNTLUNvbmZpZ3VyYXRpb24KK30KKworVEZDSS1SYW5nZSA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJbWF4VEZDSUZpZWxkMlZhbHVlCQkJCQlJTlRFR0VSICgxLi4xMDIzKSwKKwl0ZmNzLUluZm9Gb3JEU0NICQkJCQlURkNTLUluZm9Gb3JEU0NICit9CisKK1RGQ0ktUmFuZ2VMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NILVRGQ0lncm91cHMpKSBPRgorCQkJCQkJCQkJCVRGQ0ktUmFuZ2UKKworVEZDUyA6Oj0JCQkJCQkJQ0hPSUNFIHsKKwlub3JtYWxURkNJLVNpZ25hbGxpbmcJCQkJRXhwbGljaXRURkNTLUNvbmZpZ3VyYXRpb24sCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCisJZHVtbXkJCQkJCQkJCVNwbGl0VEZDSS1TaWduYWxsaW5nCit9CisKK1RGQ1MtSWRlbnRpdHkgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJc2hhcmVkQ2hhbm5lbEluZGljYXRvcgkJCQlCT09MRUFOCit9CisKK1RGQ1MtSWRlbnRpdHlQbGFpbiA6Oj0JCQkJSU5URUdFUiAoMS4uOCkKKworVEZDUy1JbmZvRm9yRFNDSCA6Oj0JCQkJQ0hPSUNFIHsKKwljdGZjMmJpdAkJCQkJCQlJTlRFR0VSICgwLi4zKSwKKwljdGZjNGJpdAkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJY3RmYzZiaXQJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCWN0ZmM4Yml0CQkJCQkJCUlOVEVHRVIgKDAuLjI1NSksCisJY3RmYzEyYml0CQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCWN0ZmMxNmJpdAkJCQkJCQlJTlRFR0VSICgwLi42NTUzNSksCisJY3RmYzI0Yml0CQkJCQkJCUlOVEVHRVIgKDAuLjE2Nzc3MjE1KQorfQorCitURkNTLVJlY29uZkFkZCA6Oj0JCQkJCVNFUVVFTkNFeworCWN0ZmNTaXplCQkJCQkJCUNIT0lDRXsKKwkJY3RmYzJCaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQykpIE9GIFNFUVVFTkNFIHsKKwkJCWN0ZmMyCQkJCQkJCQlJTlRFR0VSICgwLi4zKSwKKwkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCWN0ZmM0Qml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjNCAJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCWN0ZmM2Qml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjNgkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCQkJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uCQkJT1BUSU9OQUwKKwkJfSwKKwkJY3RmYzhCaXQJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQykpIE9GIFNFUVVFTkNFIHsKKwkJCWN0ZmM4CQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCQkJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uCQkJT1BUSU9OQUwKKwkJfSwKKwkJY3RmYzEyQml0CQkJCQkJCVNFUVVFTkNFIChTSVpFKDEuLm1heFRGQykpIE9GIFNFUVVFTkNFIHsKKwkJCWN0ZmMxMgkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSksCisgCQkJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uCQkJT1BUSU9OQUwKKwkJfSwKKwkJY3RmYzE2Qml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjMTYJCQkJCQkJCUlOVEVHRVIoMC4uNjU1MzUpLAorCQkJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uCQkJT1BUSU9OQUwKKwkJfSwKKwkJY3RmYzI0Qml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjMjQJCQkJCQkJCUlOVEVHRVIoMC4uMTY3NzcyMTUpLAorCQkJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVEZDUy1SZW1vdmFsIDo6PQkJCQkJU0VRVUVOQ0UgeworCXRmY2kJCQkJCQkJCUlOVEVHRVIgKDAuLjEwMjMpCit9CisKK1RGQ1MtUmVtb3ZhbExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRgorCQkJCQkJCQkJCVRGQ1MtUmVtb3ZhbAorCitUaW1lRHVyYXRpb25CZWZvcmVSZXRyeSA6Oj0JCQlJTlRFR0VSICgxLi4yNTYpCisKK1RNLVNpZ25hbGxpbmdJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJbWVzc1R5cGUJCQkJCQkJTWVzc1R5cGUsCisJdG0tU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CisJCW1vZGUxCQkJCQkJCQlOVUxMLAorCQltb2RlMgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gaW4gdWwtY29udHJvbGxlZFRyQ2hMaXN0LCBUckNILVR5cGUgaXMgYWx3YXlzIERDSAorCQkJdWwtY29udHJvbGxlZFRyQ2hMaXN0CQkJCVVMLUNvbnRyb2xsZWRUckNoTGlzdAorCQl9CisJfQorfQorCitUcmFuc21pc3Npb25UaW1lSW50ZXJ2YWwgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0dGkxMCwgdHRpMjAsIHR0aTQwLCB0dGk4MCB9CisKK1RyYW5zbWlzc2lvblRpbWVWYWxpZGl0eSA6Oj0JCUlOVEVHRVIgKDEuLjI1NikKKworVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5IDo6PQkJSU5URUdFUiAoMS4uMzIpCisKK1RyYW5zcG9ydENoYW5uZWxJZGVudGl0eURDSGFuZERTQ0ggOjo9CVNFUVVFTkNFIHsKKwlkY2gtdHJhbnNwb3J0LWNoLWlkCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwlkc2NoLXRyYW5zcG9ydC1jaC1pZAkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorfQorCisKK1RyYW5zcG9ydEZvcm1hdFNldCA6Oj0JCQkJQ0hPSUNFIHsKKwlkZWRpY2F0ZWRUcmFuc0NoVEZTCQkJCQlEZWRpY2F0ZWRUcmFuc0NoVEZTLAorCWNvbW1vblRyYW5zQ2hURlMJCQkJCUNvbW1vblRyYW5zQ2hURlMKK30KKworVHJhbnNwb3J0Rm9ybWF0U2V0LUxDUiA6Oj0JCQkJQ0hPSUNFIHsKKwlkZWRpY2F0ZWRUcmFuc0NoVEZTCQkJCQlEZWRpY2F0ZWRUcmFuc0NoVEZTLAorCWNvbW1vblRyYW5zQ2hURlMtTENSCQkJCUNvbW1vblRyYW5zQ2hURlMtTENSCit9CisKKy0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3Qgc2VxdWVuY2UgaXMgMTYKK1VMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIcHJlY29uZikpIE9GCisJCQkJCQkJCQkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uCisKKy0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYgc2VxdWVuY2UgaXMgMzIKK1VMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbi1yNgorCitVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UckNILVR5cGUsCisJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCXRyYW5zcG9ydEZvcm1hdFNldAkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0Cit9CisKK1VMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbi1yNiA6Oj0gQ0hPSUNFIHsKKwlkY2gtdXNjaAkJCQkJCQlTRVFVRU5DRSB7CisJCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyQ0gtVHlwZSwKKwkJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCQl0cmFuc3BvcnRGb3JtYXRTZXQJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAorCX0sCisJZS1kY2gJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdHRpCQkJCQkJCQkJRS1EQ0gtVFRJLAorCQloYXJxLUluZm8JCQkJCQkJRU5VTUVSQVRFRCB7IHJ2MCwgcnZ0YWJsZSB9LAorCQlhZGRSZWNvbmYtTUFDLWQtRmxvd0xpc3QJCQlFLURDSC1BZGRSZWNvbmYtTUFDLWQtRmxvd0xpc3QJT1BUSU9OQUwKKwl9Cit9CisKK1VMLUNvbW1vblRyYW5zQ2hJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiB0ZmMtc3Vic2V0IGlzIGFwcGxpY2FibGUgdG8gRkREIG9ubHksIFRERCBzcGVjaWZpZXMgdGZjLXN1YnNldCBpbiBpbmRpdmlkdWFsIAorCS0tIENDVHJDSCBJbmZvLgorCXRmYy1TdWJzZXQJCQkJCQkJVEZDLVN1YnNldAkJCQkJCQlPUFRJT05BTCwKKwlwcmFjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLVRGQ1MJCQkJCQkJVEZDUworCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisKKwkJCWluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QKKwkJCQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQl9CisJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1VMLUNvbW1vblRyYW5zQ2hJbmZvLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiB0ZmMtc3Vic2V0IGlzIGFwcGxpY2FibGUgdG8gRkREIG9ubHksIFRERCBzcGVjaWZpZXMgdGZjLXN1YnNldCBpbiBpbmRpdmlkdWFsIAorCS0tIENDVHJDSCBJbmZvLgorCXRmYy1TdWJzZXQJCQkJCQkJVEZDLVN1YnNldAkJCQkJCQlPUFRJT05BTCwKKwlwcmFjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLVRGQ1MJCQkJCQkJCVRGQ1MKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvTGlzdAkJSW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvTGlzdAkJT1BUSU9OQUwKKwkJfQorCX0JCQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwl0ZmMtU3Vic2V0TGlzdAkJCQkJCVRGQy1TdWJzZXRMaXN0CQkJCQkJT1BUSU9OQUwKK30KKworLS0gSW4gVUwtQ29udHJvbGxlZFRyQ2hMaXN0LCBUckNILVR5cGUgaXMgYWx3YXlzIERDSAorVUwtQ29udHJvbGxlZFRyQ2hMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKworVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKworVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eS1yNgorCitVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgOjo9CQlTRVFVRU5DRSB7CisJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJDSC1UeXBlLAorCXVsLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorfQorCitVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHktcjYgOjo9CUNIT0lDRSB7CisJZGNoLXVzY2gJCQkJCQkJU0VRVUVOQ0UgeworCQl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UckNILVR5cGUsCisJCXVsLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorCX0sCisJZS1kY2gJCQkJCQkJCUUtRENILU1BQy1kLUZsb3dJZGVudGl0eQorfQorCitVTC1UckNILVR5cGUgOjo9CQkJCQlFTlVNRVJBVEVEIHtkY2gsIHVzY2h9CisKK1VTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwl1c2NoLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwl1c2NoLVRGUwkJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0Cit9CistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSAgICAgUEhZU0lDQUwgQ0hBTk5FTCBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy42KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBQ0stTkFDSy1yZXBldGl0aW9uRmFjdG9yIDo6PQkJSU5URUdFUigxLi40KQorCitBQy1Uby1BU0MtTWFwcGluZyA6Oj0JCQkJSU5URUdFUiAoMC4uNykKKworQUMtVG8tQVNDLU1hcHBpbmdUYWJsZSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAobWF4QVNDbWFwKSkgT0YKKwkJCQkJCQkJCQlBQy1Uby1BU0MtTWFwcGluZworCitBY2Nlc3NTZXJ2aWNlQ2xhc3MtRkREIDo6PQkJCVNFUVVFTkNFIHsKKwlhdmFpbGFibGVTaWduYXR1cmVTdGFydEluZGV4CQlJTlRFR0VSICgwLi4xNSksCisJYXZhaWxhYmxlU2lnbmF0dXJlRW5kSW5kZXgJCQlJTlRFR0VSICgwLi4xNSksCisKKwlhc3NpZ25lZFN1YkNoYW5uZWxOdW1iZXIJCQlCSVQgU1RSSU5HIHsKKwkJCQkJCQkJCQkJYjMoMCksCisJCQkJCQkJCQkJCWIyKDEpLAorCQkJCQkJCQkJCQliMSgyKSwKKwkJCQkJCQkJCQkJYjAoMykKKwkJCQkJCQkJCQkJfQkgKFNJWkUoNCkpCit9CisKK0FjY2Vzc1NlcnZpY2VDbGFzcy1UREQgOjo9CQkJU0VRVUVOQ0UgeworCWNoYW5uZWxpc2F0aW9uQ29kZUluZGljZXMJCQlCSVQgU1RSSU5HCXsKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXg3KDApLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDYoMSksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4NSgyKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXg0KDMpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDMoNCksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4Mig1KSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxKDYpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDAoNykKKwkJCQkJCQkJCQkJfSAoU0laRSg4KSkJCQkJT1BUSU9OQUwsCisJc3ViY2hhbm5lbFNpemUJCQkJCQlDSE9JQ0UgeworCQlzaXplMQkJCQkJCQkJTlVMTCwKKwkJc2l6ZTIJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIHN1YmNoMCBtZWFucyBiaXRzdHJpbmcgJzAxJyBpbiB0aGUgdGFidWxhciwgc3ViY2gxIG1lYW5zIGJpdHNyaW5nICcxMCcKKwkJCXN1YmNoYW5uZWxzCQkJCQkJCUVOVU1FUkFURUQJeyBzdWJjaDAsIHN1YmNoMSB9CU9QVElPTkFMCisJCX0sCisJCXNpemU0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzdWJjaGFubmVscwkJCQkJCQlCSVQgU1RSSU5HCXsKKwkJCQkJCQkJCQkJCQlzdWJDaDMoMCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMigxKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxKDIpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDAoMykgCisJCQkJCQkJCQkJCQkJfSAoU0laRSg0KSkJCU9QVElPTkFMCisJCX0sCisJCXNpemU4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzdWJjaGFubmVscwkJCQkJCQlCSVQgU1RSSU5HCXsKKwkJCQkJCQkJCQkJCQlzdWJDaDcoMCksIAorCQkJCQkJCQkJCQkJCXN1YkNoNigxKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g1KDIpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDQoMyksIAorCQkJCQkJCQkJCQkJCXN1YkNoMyg0KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gyKDUpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDEoNiksIAorCQkJCQkJCQkJCQkJCXN1YkNoMCg3KSAKKwkJCQkJCQkJCQkJCQl9IChTSVpFKDgpKQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworQWNjZXNzU2VydmljZUNsYXNzLVRERC1yNyA6Oj0JCQlTRVFVRU5DRSB7CisJY2hhbm5lbGlzYXRpb25Db2RlSW5kaWNlcwkJCUJJVCBTVFJJTkcJeworCQkJCQkJCQkJCQljaENvZGVJbmRleDE1KDApLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDE0KDEpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDEzKDIpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDEyKDMpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDExKDQpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDEwKDUpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDkoNiksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4OCg3KSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXg3KDgpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDYoOSksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4NSgxMCksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4NCgxMSksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4MygxMiksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4MigxMyksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4MSgxNCksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4MCgxNSkKKwkJCQkJCQkJCQkJfSAoU0laRSgxNikpCQkJCU9QVElPTkFMLAorCXN1YmNoYW5uZWxTaXplCQkJCQkJQ0hPSUNFIHsKKwkJc2l6ZTEJCQkJCQkJCU5VTEwsCisJCXNpemUyCQkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBzdWJjaDAgbWVhbnMgYml0c3RyaW5nICcwMScgaW4gdGhlIHRhYnVsYXIsIHN1YmNoMSBtZWFucyBiaXRzcmluZyAnMTAnCisJCQlzdWJjaGFubmVscwkJCQkJCQlFTlVNRVJBVEVECXsgc3ViY2gwLCBzdWJjaDEgfQlPUFRJT05BTAorCQl9LAorCQlzaXplNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2gzKDApLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDIoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoMSgyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gwKDMpIAorCQkJCQkJCQkJCQkJCX0gKFNJWkUoNCkpCQlPUFRJT05BTAorCQl9LAorCQlzaXplOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2g3KDApLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDYoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoNSgyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g0KDMpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDMoNCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMig1KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxKDYpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDAoNykgCisJCQkJCQkJCQkJCQkJfSAoU0laRSg4KSkJCU9QVElPTkFMCisJCX0sCisJCXNpemUxNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2gxNSgwKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxNCgxKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxMygyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxMigzKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxMSg0KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxMCg1KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g5KDYpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDgoNyksCisJCQkJCQkJCQkJCQkJc3ViQ2g3KDgpLAorCQkJCQkJCQkJCQkJCXN1YkNoNig5KSwKKwkJCQkJCQkJCQkJCQlzdWJDaDUoMTApLAorCQkJCQkJCQkJCQkJCXN1YkNoNCgxMSksCisJCQkJCQkJCQkJCQkJc3ViQ2gzKDEyKSwKKwkJCQkJCQkJCQkJCQlzdWJDaDIoMTMpLAorCQkJCQkJCQkJCQkJCXN1YkNoMSgxNCksCisJCQkJCQkJCQkJCQkJc3ViQ2gwKDE1KSAKKwkJCQkJCQkJCQkJCQl9IChTSVpFKDE2KSkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0FjY2Vzc1NlcnZpY2VDbGFzcy1UREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJYXZhaWxhYmxlU1lOQy1VbENvZGVzSW5kaWNzCQkgICAgQklUIFNUUklORyB7CisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDcoMCksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDYoMSksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDUoMiksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDQoMyksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDMoNCksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDIoNSksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDEoNiksCisJCQkJCQkJCQkJCXN1bENvZGVJbmRleDAoNykKKwkJCQkJCQkJCQkJfSAoU0laRSg4KSkgICAgICAgICAgICAgICBPUFRJT05BTCwKKwlzdWJjaGFubmVsU2l6ZQkJCQkJCUNIT0lDRSB7CisJCXNpemUxCQkJCQkJCQlOVUxMLAorCQlzaXplMgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gc3ViY2gwIG1lYW5zIGJpdHN0cmluZyAnMDEnIGluIHRoZSB0YWJ1bGFyLCBzdWJjaDEgbWVhbnMgYml0c3JpbmcgJzEwJy4KKwkJCXN1YmNoYW5uZWxzCQkJCQkJCUVOVU1FUkFURUQJeyBzdWJjaDAsIHN1YmNoMSB9CU9QVElPTkFMCisJCX0sCisJCXNpemU0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzdWJjaGFubmVscwkJCQkJCQlCSVQgU1RSSU5HCXsKKwkJCQkJCQkJCQkJCQlzdWJDaDMoMCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMigxKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxKDIpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDAoMykgCisJCQkJCQkJCQkJCQkJfSAoU0laRSg0KSkJCQlPUFRJT05BTAorCQl9LAorCQlzaXplOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2g3KDApLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDYoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoNSgyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g0KDMpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDMoNCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMig1KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxKDYpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDAoNykgCisJCQkJCQkJCQkJCQkJfSAoU0laRSg4KSkJCQlPUFRJT05BTAorCQl9CisJfQorCQorfQorCitBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24sCisJZHluYW1pY1RGSW5mb3JtYXRpb25DQ0NICQkJRHluYW1pY1RGSW5mb3JtYXRpb25DQ0NICit9CisKK0FkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NIIDo6PQlTRVFVRU5DRSB7CisJYWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtSUVzCUFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUlFcwlPUFRJT05BTAorfQorCistLSBUaGUgb3JkZXIgaXMgdGhlIHNhbWUgYXMgaW4gdGhlIFBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdAorQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKKwkJCQkJCQkJCQlBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSAorCitBSUNILUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCWNoYW5uZWxpc2F0aW9uQ29kZTI1NgkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYsCisJc3R0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOLAorCWFpY2gtVHJhbnNtaXNzaW9uVGltaW5nCQkJCUFJQ0gtVHJhbnNtaXNzaW9uVGltaW5nCit9CisKK0FJQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCUlOVEVHRVIgKC0yMi4uNSkKKworQUlDSC1UcmFuc21pc3Npb25UaW1pbmcgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTAsIGUxIH0KKworQWxsb2NhdGlvblBlcmlvZEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCWFsbG9jYXRpb25BY3RpdmF0aW9uVGltZQkJCUlOVEVHRVIgKDAuLjI1NSksCisJYWxsb2NhdGlvbkR1cmF0aW9uCQkJCQlJTlRFR0VSICgxLi4yNTYpCit9CisKKy0tIEFjdHVhbCB2YWx1ZSBBbHBoYSA9IElFIHZhbHVlICogMC4xMjUKK0FscGhhIDo6PQkJCQkJCQlJTlRFR0VSICgwLi44KQorCitBUC1BSUNILUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCUlOVEVHRVIgKDAuLjI1NSkKKworQVAtUHJlYW1ibGVTY3JhbWJsaW5nQ29kZSA6Oj0JCUlOVEVHRVIgKDAuLjc5KQorCitBUC1TaWduYXR1cmUgOjo9CQkJCQlJTlRFR0VSICgwLi4xNSkKKworQVAtU2lnbmF0dXJlLVZDQU0gOjo9CQkJCVNFUVVFTkNFIHsKKwlhcC1TaWduYXR1cmUJCQkJCQlBUC1TaWduYXR1cmUsCisJYXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QJCQlBdmFpbGFibGVBUC1TdWJjaGFubmVsTGlzdCBPUFRJT05BTAorfQorCitBUC1TdWJjaGFubmVsIDo6PQkJCQkJSU5URUdFUiAoMC4uMTEpCisKK0FTQ1NldHRpbmctRkREIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBhY2Nlc3NTZXJ2aWNlQ2xhc3MtRkREIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KKwktLSBEZWZhdWx0IHZhbHVlIGlzIHByZXZpb3VzIEFTQworCS0tIElmIHRoaXMgaXMgdGhlIGZpcnN0IEFTQywgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYWxsIGF2YWlsYWJsZSBzaWduYXR1cmUgYW5kIHN1Yi1jaGFubmVscworCWFjY2Vzc1NlcnZpY2VDbGFzcy1GREQJCQkJCUFjY2Vzc1NlcnZpY2VDbGFzcy1GREQJT1BUSU9OQUwKK30KKworQVNDU2V0dGluZy1UREQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IGFjY2Vzc1NlcnZpY2VDbGFzcy1UREQgaXMgTUQgaW4gdGFidWxhciBkZXNjcmlwdGlvbgorCS0tIERlZmF1bHQgdmFsdWUgaXMgcHJldmlvdXMgQVNDCisJLS0gSWYgdGhpcyBpcyB0aGUgZmlyc3QgQVNDLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhbGwgYXZhaWxhYmxlIGNoYW5uZWxpc2F0aW9uIGNvZGVzIGFuZAorCS0tIGFsbCBhdmFpbGFibGUgc3ViLWNoYW5uZWxzIHdpdGggc3ViY2hhbm5lbFNpemU9c2l6ZTEuCisJYWNjZXNzU2VydmljZUNsYXNzLVRERAkJCQkJQWNjZXNzU2VydmljZUNsYXNzLVRERAlPUFRJT05BTAorfQorCitBU0NTZXR0aW5nLVRERC1yNyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogYWNjZXNzU2VydmljZUNsYXNzLVRERCBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCisJLS0gRGVmYXVsdCB2YWx1ZSBpcyBwcmV2aW91cyBBU0MKKwktLSBJZiB0aGlzIGlzIHRoZSBmaXJzdCBBU0MsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFsbCBhdmFpbGFibGUgY2hhbm5lbGlzYXRpb24gY29kZXMgYW5kCisJLS0gYWxsIGF2YWlsYWJsZSBzdWItY2hhbm5lbHMgd2l0aCBzdWJjaGFubmVsU2l6ZT1zaXplMS4KKwlhY2Nlc3NTZXJ2aWNlQ2xhc3MtVERECQkJCQkJQWNjZXNzU2VydmljZUNsYXNzLVRERC1yNwlPUFRJT05BTAorfQorCitBU0NTZXR0aW5nLVRERC1MQ1ItcjQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IGFjY2Vzc1NlcnZpY2VDbGFzcy1UREQtTENSIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KKwktLSBEZWZhdWx0IHZhbHVlIGlzIHByZXZpb3VzIEFTQworCS0tIElmIHRoaXMgaXMgdGhlIGZpcnN0IEFTQywgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYWxsIGF2YWlsYWJsZSBTWU5DX1VMIGNvZGVzIGFuZAorCS0tIGFsbCBhdmFpbGFibGUgc3ViLWNoYW5uZWxzIHdpdGggc3ViY2hhbm5lbFNpemU9c2l6ZTEuIAorCWFjY2Vzc1NlcnZpY2VDbGFzcy1UREQtTENSCQkJCQlBY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELUxDUi1yNCAgCU9QVElPTkFMCit9CisKK0F2YWlsYWJsZUFQLVNpZ25hdHVyZS1WQ0FNTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUFQc2lnKSkgT0YKKwkJCQkJCQkJCQlBUC1TaWduYXR1cmUtVkNBTQorCitBdmFpbGFibGVBUC1TaWduYXR1cmVMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUFQc2lnKSkgT0YKKwkJCQkJCQkJCQlBUC1TaWduYXR1cmUKKworQXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UENQQ0gtQVBzdWJDaCkpIE9GCisJCQkJCQkJCQkJQVAtU3ViY2hhbm5lbAorCitBdmFpbGFibGVNaW5pbXVtU0YtTGlzdFZDQU0gOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UENQQ0gtU0YpKSBPRgorCQkJCQkJCQkJCUF2YWlsYWJsZU1pbmltdW1TRi1WQ0FNCisKK0F2YWlsYWJsZU1pbmltdW1TRi1WQ0FNIDo6PQkJCVNFUVVFTkNFIHsKKwltaW5pbXVtU3ByZWFkaW5nRmFjdG9yCQkJCU1pbmltdW1TcHJlYWRpbmdGYWN0b3IsCisJbmYtTWF4CQkJCQkJCQlORi1NYXgsCisJbWF4QXZhaWxhYmxlUENQQ0gtTnVtYmVyCQkJTWF4QXZhaWxhYmxlUENQQ0gtTnVtYmVyLAorCWF2YWlsYWJsZUFQLVNpZ25hdHVyZS1WQ0FNTGlzdAkJQXZhaWxhYmxlQVAtU2lnbmF0dXJlLVZDQU1MaXN0Cit9CisKK0F2YWlsYWJsZVNpZ25hdHVyZXMgOjo9CQkJQklUIFNUUklORyB7CisJCQkJCQkJCQlzaWduYXR1cmUxNSgwKSwKKwkJCQkJCQkJCXNpZ25hdHVyZTE0KDEpLAorCQkJCQkJCQkJc2lnbmF0dXJlMTMoMiksCisJCQkJCQkJCQlzaWduYXR1cmUxMigzKSwKKwkJCQkJCQkJCXNpZ25hdHVyZTExKDQpLAorCQkJCQkJCQkJc2lnbmF0dXJlMTAoNSksCisJCQkJCQkJCQlzaWduYXR1cmU5KDYpLAorCQkJCQkJCQkJc2lnbmF0dXJlOCg3KSwKKwkJCQkJCQkJCXNpZ25hdHVyZTcoOCksCisJCQkJCQkJCQlzaWduYXR1cmU2KDkpLAorCQkJCQkJCQkJc2lnbmF0dXJlNSgxMCksCisJCQkJCQkJCQlzaWduYXR1cmU0KDExKSwKKwkJCQkJCQkJCXNpZ25hdHVyZTMoMTIpLAorCQkJCQkJCQkJc2lnbmF0dXJlMigxMyksCisJCQkJCQkJCQlzaWduYXR1cmUxKDE0KSwKKwkJCQkJCQkJCXNpZ25hdHVyZTAoMTUpCisJCQkJCQkJCQl9CSAoU0laRSgxNikpCisKK0F2YWlsYWJsZVN1YkNoYW5uZWxOdW1iZXJzIDo6PQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJc3ViQ2gxMSgwKSwKKwkJCQkJCQkJCQlzdWJDaDEwKDEpLAorCQkJCQkJCQkJIAlzdWJDaDkoMiksCisJCQkJCQkJCQkgCXN1YkNoOCgzKSwKKwkJCQkJCQkJCSAJc3ViQ2g3KDQpLAorCQkJCQkJCQkJIAlzdWJDaDYoNSksCisJCQkJCQkJCQkgCXN1YkNoNSg2KSwKKwkJCQkJCQkJCSAJc3ViQ2g0KDcpLAorCQkJCQkJCQkJIAlzdWJDaDMoOCksCisJCQkJCQkJCQkgCXN1YkNoMig5KSwKKwkJCQkJCQkJCSAJc3ViQ2gxKDEwKSwKKwkJCQkJCQkJCSAJc3ViQ2gwKDExKQorCQkJCQkJCQkJCX0gCSAoU0laRSgxMikpCisKK0JFQUNPTi1QTC1Fc3QgOjo9CQkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CisKK0J1cnN0VHlwZSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0eXBlMSwgdHlwZTIgfQorCistLSBBY3R1YWwgdmFsdWUgQmxlci1UYXJnZXQgPSBJRSB2YWx1ZSAqIDAuMDUKK0JsZXItVGFyZ2V0IDo6PQkJCQkJCUlOVEVHRVIgKC02My4uMCkKKworQ0NUckNILVBvd2VyQ29udHJvbEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXRmY3MtSWRlbnRpdHkJCQkJCQlURkNTLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCit9CisKK0NDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI0IDo6PQkJU0VRVUVOQ0UgeworCXRmY3MtSWRlbnRpdHkJCQkJCQlURkNTLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI0Cit9CisKK0NDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI1IDo6PQkJU0VRVUVOQ0UgeworCXRmY3MtSWRlbnRpdHkJCQkJCQlURkNTLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI1Cit9CisKK0NDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI3IDo6PQkJU0VRVUVOQ0UgeworCXRmY3MtSWRlbnRpdHkJCQkJCQlURkNTLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI3Cit9CisKK0NELUFjY2Vzc1Nsb3RTdWJjaGFubmVsIDo6PQkJCUlOVEVHRVIgKDAuLjExKQorCitDRC1BY2Nlc3NTbG90U3ViY2hhbm5lbExpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UENQQ0gtQ0RzdWJDaCkpIE9GCisJCQkJCQkJCQkJQ0QtQWNjZXNzU2xvdFN1YmNoYW5uZWwKKworQ0QtQ0EtSUNILUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JSU5URUdFUiAoMC4uMjU1KQorCitDRC1QcmVhbWJsZVNjcmFtYmxpbmdDb2RlIDo6PQkJSU5URUdFUiAoMC4uNzkpCisKK0NELVNpZ25hdHVyZUNvZGUgOjo9CQkJCUlOVEVHRVIgKDAuLjE1KQorCitDRC1TaWduYXR1cmVDb2RlTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UENQQ0gtQ0RzaWcpKSBPRgorCQkJCQkJCQkJCUNELVNpZ25hdHVyZUNvZGUKKworQ2VsbEFuZENoYW5uZWxJZGVudGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gYnVyc3RUeXBlIG1heSBiZSBzZXQgdG8gZWl0aGVyIHZhbHVlIGFuZCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIgZm9yIDEuMjggTWNwcyBUREQuCisJYnVyc3RUeXBlCQkJCQkJCUJ1cnN0VHlwZSwKKwltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcsCisJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRAorCX0KKworQ2VsbFBhcmFtZXRlcnNJRCA6Oj0JCQkJSU5URUdFUiAoMC4uMTI3KQorCitDZm50YXJnZXRzZm5mcmFtZW9mZnNldCA6Oj0JCQkJSU5URUdFUigwLi4yNTUpCisKK0NoYW5uZWxBc3NpZ25tZW50QWN0aXZlIDo6PQkJCUNIT0lDRSB7CisJbm90QWN0aXZlCQkJCQkJCU5VTEwsCisJaXNBY3RpdmUJCQkJCQkJQXZhaWxhYmxlTWluaW11bVNGLUxpc3RWQ0FNCit9CisKK0NoYW5uZWxpc2F0aW9uQ29kZTI1NiA6Oj0JCQlJTlRFR0VSICgwLi4yNTUpCisKK0NoYW5uZWxSZXFQYXJhbXNGb3JVQ1NNIDo6PQkJCVNFUVVFTkNFIHsKKwlhdmFpbGFibGVBUC1TaWduYXR1cmVMaXN0CQkJQXZhaWxhYmxlQVAtU2lnbmF0dXJlTGlzdCwKKwlhdmFpbGFibGVBUC1TdWJjaGFubmVsTGlzdAkJCUF2YWlsYWJsZUFQLVN1YmNoYW5uZWxMaXN0CQkJT1BUSU9OQUwKK30KKworQ2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2xvdDEsIHNsb3QyIH0KKworQ29kZU51bWJlckRTQ0ggOjo9CQkJCQlJTlRFR0VSICgwLi4yNTUpCisKK0NvZGVSYW5nZSA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJcGRzY2gtQ29kZU1hcExpc3QJCQkJCVBEU0NILUNvZGVNYXBMaXN0Cit9CisKK0NvZGVXb3JkU2V0IDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWxvbmdDV1MsCisJCQkJCQkJCQkJbWVkaXVtQ1dTLAorCQkJCQkJCQkJCXNob3J0Q1dTLAorCQkJCQkJCQkJCXNzZHRPZmYgfQorCitDb21tb25UaW1lc2xvdEluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBzZWNvbmRJbnRlcmxlYXZpbmdNb2RlIGlzIE1ELCBidXQgc2luY2UgaXQgY2FuIGJlIGVuY29kZWQgaW4gYSBzaW5nbGUKKwktLSBiaXQgaXQgaXMgbm90IGRlZmluZWQgYXMgT1BUSU9OQUwuCisJc2Vjb25kSW50ZXJsZWF2aW5nTW9kZQkJCQlTZWNvbmRJbnRlcmxlYXZpbmdNb2RlLAorCXRmY2ktQ29kaW5nCQkJCQkJCVRGQ0ktQ29kaW5nCQkJCQkJCU9QVElPTkFMLAorCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdCwKKwlyZXBldGl0aW9uUGVyaW9kQW5kTGVuZ3RoCQkJUmVwZXRpdGlvblBlcmlvZEFuZExlbmd0aAkJCU9QVElPTkFMCit9CisKK0NvbW1vblRpbWVzbG90SW5mb1NDQ1BDSCA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBzZWNvbmRJbnRlcmxlYXZpbmdNb2RlIGlzIE1ELCBidXQgc2luY2UgaXQgY2FuIGJlIGVuY29kZWQgaW4gYSBzaW5nbGUKKwktLSBiaXQgaXQgaXMgbm90IGRlZmluZWQgYXMgT1BUSU9OQUwuCisJc2Vjb25kSW50ZXJsZWF2aW5nTW9kZQkJCQlTZWNvbmRJbnRlcmxlYXZpbmdNb2RlLAorCXRmY2ktQ29kaW5nCQkJCQkJCVRGQ0ktQ29kaW5nCQkJCQkJCU9QVElPTkFMLAorCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdCwKKwlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoQW5kT2Zmc2V0CQlSZXBldGl0aW9uUGVyaW9kTGVuZ3RoQW5kT2Zmc2V0CQlPUFRJT05BTAorfQorCitDb25zdGFudFZhbHVlIDo6PQkJCQkJSU5URUdFUiAoLTM1Li4tMTApCisKK0NvbnN0YW50VmFsdWVUZGQgOjo9CQkJCUlOVEVHRVIgKC0zNS4uMTApCisKK0NQQ0gtUGVyc2lzdGVuY2VMZXZlbHMgOjo9CQkJU0VRVUVOQ0UgeworCWNwY2gtU2V0SUQJCQkJCQkJQ1BDSC1TZXRJRCwKKwlkeW5hbWljUGVyc2lzdGVuY2VMZXZlbFRGLUxpc3QJCUR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsVEYtTGlzdAkKK30KKworQ1BDSC1QZXJzaXN0ZW5jZUxldmVsc0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q1BDSHNldHMpKSBPRgorCQkJCQkJCQkJCUNQQ0gtUGVyc2lzdGVuY2VMZXZlbHMKKworQ1BDSC1TZXRJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCWNwY2gtU2V0SUQJCQkJCQkJQ1BDSC1TZXRJRCwKKwl0cmFuc3BvcnRGb3JtYXRTZXQJCQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKKwl0ZmNzCQkJCQkJCQlURkNTLAorCWFwLVByZWFtYmxlU2NyYW1ibGluZ0NvZGUJCQlBUC1QcmVhbWJsZVNjcmFtYmxpbmdDb2RlLAorCWFwLUFJQ0gtQ2hhbm5lbGlzYXRpb25Db2RlCQkJQVAtQUlDSC1DaGFubmVsaXNhdGlvbkNvZGUsCisJY2QtUHJlYW1ibGVTY3JhbWJsaW5nQ29kZQkJCUNELVByZWFtYmxlU2NyYW1ibGluZ0NvZGUsCisJY2QtQ0EtSUNILUNoYW5uZWxpc2F0aW9uQ29kZQkJQ0QtQ0EtSUNILUNoYW5uZWxpc2F0aW9uQ29kZSwKKwljZC1BY2Nlc3NTbG90U3ViY2hhbm5lbExpc3QJCQlDRC1BY2Nlc3NTbG90U3ViY2hhbm5lbExpc3QJCQlPUFRJT05BTCwKKwljZC1TaWduYXR1cmVDb2RlTGlzdAkJCQlDRC1TaWduYXR1cmVDb2RlTGlzdAkJCQlPUFRJT05BTCwKKwlkZWx0YVBwLW0JCQkJCQkJRGVsdGFQcC1tLAorCXVsLURQQ0NILVNsb3RGb3JtYXQJCQkJCVVMLURQQ0NILVNsb3RGb3JtYXQsCisJbi1TdGFydE1lc3NhZ2UJCQkJCQlOLVN0YXJ0TWVzc2FnZSwKKwluLUVPVAkJCQkJCQkJTi1FT1QsCisJLS0gVEFCVUxBUjogVkNBTSBpbmZvIGhhcyBiZWVuIG5lc3RlZCBpbnNpZGUgQ2hhbm5lbEFzc2lnbm1lbnRBY3RpdmUsCisJLS0gd2hpY2ggaW4gdHVybiBpcyBtYW5kYXRvcnkgc2luY2UgaXQncyBvbmx5IGEgYmluYXJ5IGNob2ljZS4KKwljaGFubmVsQXNzaWdubWVudEFjdGl2ZQkJCQlDaGFubmVsQXNzaWdubWVudEFjdGl2ZSwKKwljcGNoLVN0YXR1c0luZGljYXRpb25Nb2RlCQkJQ1BDSC1TdGF0dXNJbmRpY2F0aW9uTW9kZSwKKwlwY3BjaC1DaGFubmVsSW5mb0xpc3QJCQkJUENQQ0gtQ2hhbm5lbEluZm9MaXN0Cit9CisKK0NQQ0gtU2V0SW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDUENIc2V0cykpIE9GCisJCQkJCQkJCQkJQ1BDSC1TZXRJbmZvCisKK0NQQ0gtU3RhdHVzSW5kaWNhdGlvbk1vZGUgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwYS1tb2RlLAorCQkJCQkJCQkJCXBhbXNmLW1vZGUgfQorCitDUUktUmVwZXRpdGlvbkZhY3RvciA6Oj0JCQlJTlRFR0VSKDEuLjQpCisKK0NTSUNILVBvd2VyT2Zmc2V0IDo6PQkJCQlJTlRFR0VSICgtMTAuLjUpCisKKy0tIERlZmF1bHREUENILU9mZnNldFZhbHVlRkREIGFuZCBEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERCBjb3JyZXNwb25kcyB0byAKKy0tIElFICJEZWZhdWx0IERQQ0ggT2Zmc2V0IFZhbHVlIiBkZXBlbmRpbmcgb24gdGhlIG1vZGUuCistLSBBY3R1YWwgdmFsdWUgRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQgPSBJRSB2YWx1ZSAqIDUxMiAKK0RlZmF1bHREUENILU9mZnNldFZhbHVlRkREIDo6PQkJSU5URUdFUiAoMC4uNTk5KQorCitEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERCA6Oj0JCUlOVEVHRVIgKDAuLjcpCisKK0RlbHRhUHAtbSA6Oj0JCQkJCQlJTlRFR0VSICgtMTAuLjEwKQorCitEZWx0YUNRSSA6Oj0JCQkJCQlJTlRFR0VSICgwLi44KQorCitEZWx0YU5BQ0sgOjo9CQkJCQkJSU5URUdFUiAoMC4uOCkKKworRGVsdGFBQ0sgOjo9CQkJCQkJSU5URUdFUiAoMC4uOCkKKworLS0gQWN0dWFsIHZhbHVlIERlbHRhU0lSID0gSUUgdmFsdWUgKiAwLjEKK0RlbHRhU0lSIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjMwKQorCitESFMtU3luYyA6Oj0JCQkJCQlJTlRFR0VSICgtMjAuLjEwKQorCitETC1DQ1RyQ2ggOjo9CQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCXRpbWVJbmZvCQkJCQkJCVRpbWVJbmZvLAorCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKKwlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCQkJCU9QVElPTkFMLAorCXVsLUNDVHJDaFRQQ0xpc3QJCQkJCVVMLUNDVHJDaFRQQ0xpc3QJCQkJCU9QVElPTkFMCQorfQorCitETC1DQ1RyQ2gtcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJdGltZUluZm8JCQkJCQkJVGltZUluZm8sCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCURvd25saW5rVGltZXNsb3RzQ29kZXMJT1BUSU9OQUwKKwkJfSwKKwkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAorCQl9CisJfSwKKwl1bC1DQ1RyQ2hUUENMaXN0CQkJCQlVTC1DQ1RyQ2hUUENMaXN0CQlPUFRJT05BTAorfQorCitETC1DQ1RyQ2gtcjcgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJdGltZUluZm8JCQkJCQkJVGltZUluZm8sCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCURvd25saW5rVGltZXNsb3RzQ29kZXMJT1BUSU9OQUwKKwkJfSwKKwkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLVZIQ1IJCU9QVElPTkFMCisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKKwkJfQorCX0sCisJdWwtQ0NUckNoVFBDTGlzdAkJCQkJVUwtQ0NUckNoVFBDTGlzdAkJT1BUSU9OQUwKK30KKworREwtQ0NUckNoTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCURMLUNDVHJDaAorCitETC1DQ1RyQ2hMaXN0LXI3IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlETC1DQ1RyQ2gtcjcKKworREwtQ0NUckNoTGlzdC1yNCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJREwtQ0NUckNoLXI0CisKK0RMLUNDVHJDaExpc3RUb1JlbW92ZSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4KKworREwtQ0NUckNoVFBDTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDAuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJCVRGQ1MtSWRlbnRpdHkKKworREwtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJCVNFUVVFTkNFIHsKKwlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlPUFRJT05BTCwKKwlzZi1BbmRDb2RlTnVtYmVyCQkJCQlTRjUxMi1BbmRDb2RlTnVtYmVyLAorCXNjcmFtYmxpbmdDb2RlQ2hhbmdlCQkJCVNjcmFtYmxpbmdDb2RlQ2hhbmdlCQkJCU9QVElPTkFMCit9CisKK0RMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RFBDSC1ETGNoYW4pKSBPRgorCQkJCQkJCQkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZQorCitETC1Db21tb25JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24JCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZUZERAlPUFRJT05BTCwKKwkJCWRwY2gtQ29tcHJlc3NlZE1vZGVJbmZvCQkJCURQQ0gtQ29tcHJlc3NlZE1vZGVJbmZvCQlPUFRJT05BTCwKKwkJCXR4LURpdmVyc2l0eU1vZGUJCQkJCVRYLURpdmVyc2l0eU1vZGUJCQlPUFRJT05BTCwKKwkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teQkJCQkJCQkJU1NEVC1JbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlVERECU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0RMLUNvbW1vbkluZm9ybWF0aW9uLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlkbC1EUENILUluZm9Db21tb24JCQkJCURMLURQQ0gtSW5mb0NvbW1vbi1yNAkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQJT1BUSU9OQUwsCisJCQlkcGNoLUNvbXByZXNzZWRNb2RlSW5mbwkJCQlEUENILUNvbXByZXNzZWRNb2RlSW5mbwkJT1BUSU9OQUwsCisJCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJT1BUSU9OQUwsCisJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkJCQkJCQkJCVNTRFQtSW5mb3JtYXRpb24tcjQJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCQl0ZGQzODQJCQkJCQkJCU5VTEwsCisJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCQkJCX0KKwkJCX0sCisJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERAlPUFRJT05BTAorCQl9CisJfQorfQorCisKK0RMLUNvbW1vbkluZm9ybWF0aW9uLXI1IDo6PQkJCVNFUVVFTkNFIHsKKwlkbC1EUENILUluZm9Db21tb24JCQkJCURMLURQQ0gtSW5mb0NvbW1vbi1yNAkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlRkRECU9QVElPTkFMLAorCQkJZHBjaC1Db21wcmVzc2VkTW9kZUluZm8JCQkJRFBDSC1Db21wcmVzc2VkTW9kZUluZm8JCU9QVElPTkFMLAorCQkJdHgtRGl2ZXJzaXR5TW9kZQkJCQkJVFgtRGl2ZXJzaXR5TW9kZQkJCU9QVElPTkFMLAorCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15CQkJCQkJCQlTU0RULUluZm9ybWF0aW9uLXI0CQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJdGRkMzg0CQkJCQkJCQlOVUxMLAorCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJCQl9CisJCQl9LAorCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVUREQJT1BUSU9OQUwKKwkJfQorCX0sCisJbWFjLWhzUmVzZXRJbmRpY2F0b3IJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCU9QVElPTkFMCit9CisKK0RMLUNvbW1vbkluZm9ybWF0aW9uLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlkbC1kcGNoSW5mb0NvbW1vbgkJCQkJQ0hPSUNFIHsKKwkJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjYsCisJCWRsLUZEUENILUluZm9Db21tb24JCQkJCURMLUZEUENILUluZm9Db21tb24tcjYKKwl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQJT1BUSU9OQUwsCisJCQlkcGNoLUNvbXByZXNzZWRNb2RlSW5mbwkJCQlEUENILUNvbXByZXNzZWRNb2RlSW5mbwkJT1BUSU9OQUwsCisJCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJdGRkMzg0CQkJCQkJCQlOVUxMLAorCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJCQl9CisJCQl9LAorCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVUREQJT1BUSU9OQUwKKwkJfQorCX0sCisJbWFjLWhzUmVzZXRJbmRpY2F0b3IJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCU9QVElPTkFMLAorCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCU9QVElPTkFMCit9CisKK0RMLUNvbW1vbkluZm9ybWF0aW9uLXI3IDo6PQkJCVNFUVVFTkNFIHsKKwlkbC1kcGNoSW5mb0NvbW1vbgkJCQkJQ0hPSUNFIHsKKwkJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjYsCisJCWRsLUZEUENILUluZm9Db21tb24JCQkJCURMLUZEUENILUluZm9Db21tb24tcjYKKwl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQJT1BUSU9OQUwsCisJCQlkcGNoLUNvbXByZXNzZWRNb2RlSW5mbwkJCQlEUENILUNvbXByZXNzZWRNb2RlSW5mbwkJT1BUSU9OQUwsCisJCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJdGRkMzg0CQkJCQkJCQlOVUxMLAorCQkJCXRkZDc2OAkJCQkJCQkJTlVMTCwKKwkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJCQkJfQorCQkJfSwKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlVERECU9QVElPTkFMCisJCX0KKwl9LAorCW1hYy1oc1Jlc2V0SW5kaWNhdG9yCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTCwKKwlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTAorfQorCitETC1Db21tb25JbmZvcm1hdGlvblBvc3QgOjo9CQlTRVFVRU5DRSB7CisJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb25Qb3N0Cit9CisKK0RMLUNvbW1vbkluZm9ybWF0aW9uUHJlZGVmIDo6PQkJU0VRVUVOQ0UgeworCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uUHJlZGVmCU9QVElPTkFMCit9CisKK0RMLUNvbXByZXNzZWRNb2RlTWV0aG9kIDo6PQkJCUVOVU1FUkFURUQgeworCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCQkJCQkJCQkJCWR1bW15LCBzZi0yLAorCQkJCQkJCQkJCWhpZ2hlckxheWVyU2NoZWR1bGluZyB9CisKK0RMLURQQ0gtSW5mb0NvbW1vbiA6Oj0JCQkJU0VRVUVOQ0UgeworCWNmbkhhbmRsaW5nCQkJCQkJCUNIT0lDRSB7CisJCW1haW50YWluCQkJCQkJCU5VTEwsCisJCWluaXRpYWxpc2UJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gSUUgZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJCQktLSBUaGUgSUUgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZAorCQkJZHVtbXkJCQkJCQkJCUNmbnRhcmdldHNmbmZyYW1lb2Zmc2V0CQkJCU9QVElPTkFMCisJCX0KKwl9LAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZCAJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAorCQkJcG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gJCQkJUG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gsCisJCQlkbC1yYXRlLW1hdGNoaW5nLXJlc3RyaWN0aW9uCQlEbC1yYXRlLW1hdGNoaW5nLXJlc3RyaWN0aW9uCQlPUFRJT05BTCwKKwkJCS0tIFRBQlVMQVI6IFRoZSBudW1iZXIgb2YgcGlsb3QgYml0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBzcHJlYWRpbmcgZmFjdG9yLgorCQkJc3ByZWFkaW5nRmFjdG9yQW5kUGlsb3QJCQkJU0Y1MTItQW5kUGlsb3QsCisJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTAorCQl9CisJfQorfQorCitETC1EUENILUluZm9Db21tb24tcjQgOjo9CQkJU0VRVUVOQ0UgeworCWNmbkhhbmRsaW5nCQkJCQkJCUNIT0lDRSB7CisJCW1haW50YWluCQkJCQkJCU5VTEwsCisJCWluaXRpYWxpc2UJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gSUUgZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJCQktLSBUaGUgSUUgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZAorCQkJZHVtbXkJCQkJCQkJCUNmbnRhcmdldHNmbmZyYW1lb2Zmc2V0CQkJCU9QVElPTkFMCisJCX0KKwl9LAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZCAJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAorCQkJcG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gJCQkJUG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gsCisJCQlkbC1yYXRlLW1hdGNoaW5nLXJlc3RyaWN0aW9uCQlEbC1yYXRlLW1hdGNoaW5nLXJlc3RyaWN0aW9uCQlPUFRJT05BTCwKKwkJCS0tIFRBQlVMQVI6IFRoZSBudW1iZXIgb2YgcGlsb3QgYml0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBzcHJlYWRpbmcgZmFjdG9yLgorCQkJc3ByZWFkaW5nRmFjdG9yQW5kUGlsb3QJCQkJU0Y1MTItQW5kUGlsb3QsCisJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTAorCQl9CisJfSwKKy0tIFRoZSBJRSBtYWMtZC1IRk4taW5pdGlhbC12YWx1ZSBzaG91bGQgYmUgYWJzZW50IGluIHRoZSBSUkNDb25uZWN0aW9uU2V0dXAtcjQtSUVzIG9yIAorLS0gUlJDQ29ubmVjdGlvblNldHVwLXI1LUlFcyBvciBIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI0LUlFcyBvciBIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI1LUlFcyBhbmQKKy0tIGlmIHRoZSBJRSBpcyBpbmNsdWRlZCwgdGhlIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcgZm9yIGNvbmRpdGlvbmFsIElFcyBhcHBsaWVzLgorCW1hYy1kLUhGTi1pbml0aWFsLXZhbHVlCQkJCU1BQy1kLUhGTi1pbml0aWFsLXZhbHVlCQkJCU9QVElPTkFMCisKK30KKworREwtRFBDSC1JbmZvQ29tbW9uLXI2IDo6PQkJCQlTRVFVRU5DRSB7CisJY2ZuSGFuZGxpbmcJCQkJCQkJCUNIT0lDRSB7CisJCW1haW50YWluCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1pbmdtYWludGFpbmVkc3luY2hpbmQJCQkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwKKwkJfSwKKwkJaW5pdGlhbGlzZQkJCQkJCQkJTlVMTAorCX0sCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJCUNIT0lDRSB7CisJCWZkZCAJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJT1BUSU9OQUwsCisJCQlwb3dlck9mZnNldFBpbG90LXBkcGRjaAkJCQkJUG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gsCisJCQlkbC1yYXRlLW1hdGNoaW5nLXJlc3RyaWN0aW9uCQkJRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJT1BUSU9OQUwsCisJCQktLSBUQUJVTEFSOiBUaGUgbnVtYmVyIG9mIHBpbG90IGJpdHMgaXMgbmVzdGVkIGluc2lkZSB0aGUgc3ByZWFkaW5nIGZhY3Rvci4KKwkJCXNwcmVhZGluZ0ZhY3RvckFuZFBpbG90CQkJCQlTRjUxMi1BbmRQaWxvdCwKKwkJCXBvc2l0aW9uRml4ZWRPckZsZXhpYmxlCQkJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJT1BUSU9OQUwKKwkJfQorCX0sCisJLS0gVGhlIElFIG1hYy1kLUhGTi1pbml0aWFsLXZhbHVlIHNob3VsZCBiZSBhYnNlbnQgaW4gdGhlIFJSQ0Nvbm5lY3Rpb25TZXR1cCBhbmQgdGhlCisJLS0gSGFuZG92ZXJUb1VUUkFOQ29tbWFuZCBtZXNzYWdlcy4gSWYgdGhlIElFIGlzIGluY2x1ZGVkLCB0aGUgZ2VuZXJhbCBlcnJvciBoYW5kbGluZworCS0tIGZvciBjb25kaXRpb25hbCBJRXMgYXBwbGllcy4KKwltYWMtZC1IRk4taW5pdGlhbC12YWx1ZQkJCQlNQUMtZC1IRk4taW5pdGlhbC12YWx1ZQkJCQlPUFRJT05BTAorfQorCitETC1EUENILUluZm9Db21tb25Qb3N0IDo6PQkJCVNFUVVFTkNFIHsKKwlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQkJT1BUSU9OQUwKK30KKworREwtRFBDSC1JbmZvQ29tbW9uUHJlZGVmIDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFRBQlVMQVI6IFRoZSBudW1iZXIgb2YgcGlsb3QgYml0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBzcHJlYWRpbmcgZmFjdG9yLgorCQkJc3ByZWFkaW5nRmFjdG9yQW5kUGlsb3QJCQkJU0Y1MTItQW5kUGlsb3QsCisJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbworCQl9CisJfQorfQorCitETC1EUENILUluZm9QZXJSTCA6Oj0JCQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAorCQlkcGNoLUZyYW1lT2Zmc2V0CQkJCQlEUENILUZyYW1lT2Zmc2V0LAorCQlzZWNvbmRhcnlDUElDSC1JbmZvCQkJCQlTZWNvbmRhcnlDUElDSC1JbmZvCQkJCU9QVElPTkFMLAorCQlkbC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQkJREwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCwKKwkJdHBjLUNvbWJpbmF0aW9uSW5kZXgJCQkJVFBDLUNvbWJpbmF0aW9uSW5kZXgsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtQ2VsbElkZW50aXR5CQkJCU9QVElPTkFMLAorCQljbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCQlDbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCU9QVElPTkFMCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRsLUNDVHJDaExpc3RUb0VzdGFibGlzaAkJCURMLUNDVHJDaExpc3QJCQkJCU9QVElPTkFMLAorCQlkbC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQkJREwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJT1BUSU9OQUwKKwl9Cit9CisKK0RMLURQQ0gtSW5mb1BlclJMLXI0IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKKwkJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCisJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCQlTU0RULUNlbGxJZGVudGl0eQkJCQlPUFRJT05BTCwKKwkJY2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQkJQ2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQlPUFRJT05BTAorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkbC1DQ1RyQ2hMaXN0VG9Fc3RhYmxpc2gJCQlETC1DQ1RyQ2hMaXN0LXI0CQkJCU9QVElPTkFMLAorCQlkbC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQkJREwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJT1BUSU9OQUwKKwl9Cit9CisKK0RMLURQQ0gtSW5mb1BlclJMLXI1IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKKwkJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCisJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAorCQlwb3dlck9mZnNldFRQQy1wZHBkY2gJCQkJUG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJT1BUSU9OQUwsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtQ2VsbElkZW50aXR5CQkJCU9QVElPTkFMLAorCQljbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCQlDbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCU9QVElPTkFMCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRsLUNDVHJDaExpc3RUb0VzdGFibGlzaAkJCURMLUNDVHJDaExpc3QtcjQJCQkJT1BUSU9OQUwsCisJCWRsLUNDVHJDaExpc3RUb1JlbW92ZQkJCQlETC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQlPUFRJT05BTAorCX0KK30KKworREwtRFBDSC1JbmZvUGVyUkwtcjYgOjo9CQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAorCQlkcGNoLUZyYW1lT2Zmc2V0CQkJCQlEUENILUZyYW1lT2Zmc2V0LAorCQlzZWNvbmRhcnlDUElDSC1JbmZvCQkJCQlTZWNvbmRhcnlDUElDSC1JbmZvCQkJCU9QVElPTkFMLAorCQlkbC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQkJREwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCwKKwkJdHBjLUNvbWJpbmF0aW9uSW5kZXgJCQkJVFBDLUNvbWJpbmF0aW9uSW5kZXgsCisJCXBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCQlQb3dlck9mZnNldFRQQy1wZHBkY2gJCQlPUFRJT05BTCwKKwkJY2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQkJQ2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQlPUFRJT05BTAorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkbC1DQ1RyQ2hMaXN0VG9Fc3RhYmxpc2gJCQlETC1DQ1RyQ2hMaXN0LXI0CQkJCU9QVElPTkFMLAorCQlkbC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQkJREwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJT1BUSU9OQUwKKwl9Cit9CisKK0RMLURQQ0gtSW5mb1BlclJMLXI3IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKKwkJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCisJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAorCQlwb3dlck9mZnNldFRQQy1wZHBkY2gJCQkJUG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJT1BUSU9OQUwsCisJCWNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJCUNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJT1BUSU9OQUwKKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZGwtQ0NUckNoTGlzdFRvRXN0YWJsaXNoCQkJREwtQ0NUckNoTGlzdC1yNwkJCQlPUFRJT05BTCwKKwkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCisJfQorfQorCitETC1GRFBDSC1JbmZvUGVyUkwtcjYgOjo9CQkJU0VRVUVOQ0UgeworCXBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAorCWZkcGNoLUZyYW1lT2Zmc2V0CQkJCQlEUENILUZyYW1lT2Zmc2V0LAorCXNlY29uZGFyeUNQSUNILUluZm8JCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCisJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlPUFRJT05BTCwKKwlkbC1DaGFubmVsaXNhdGlvbkNvZGUJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleAorfQorCitETC1EUENILUluZm9QZXJSTC1Qb3N0RkREIDo6PQkJCQkJCQkJU0VRVUVOQ0UgeworCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCisJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQkJVFBDLUNvbWJpbmF0aW9uSW5kZXgKK30KKworREwtRFBDSC1JbmZvUGVyUkwtUG9zdFRERCA6Oj0JCQkJU0VRVUVOQ0UgeworCWRsLURQQ0gtVGltZXNsb3RzQ29kZXMJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCit9CisKK0RMLURQQ0gtSW5mb1BlclJMLVBvc3RUREQtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQKK30KKworREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRwYy1Nb2RlCQkJCQkJCQlEUEMtTW9kZQorCQl9LAorCQl0ZGQJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdHBjLVN0ZXBTaXplVERECQkJCQkJCVRQQy1TdGVwU2l6ZVRERAkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0RMLUZEUENILUluZm9Db21tb24tcjYgOjo9CQkJU0VRVUVOQ0UgeworCWNmbkhhbmRsaW5nCQkJCQkJCUNIT0lDRSB7CisJCW1haW50YWluCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWluZ21haW50YWluZWRzeW5jaGluZAkJCVRpbWluZ01haW50YWluZWRTeW5jaEluZAkJCU9QVElPTkFMCisJCX0sCisJCWluaXRpYWxpc2UJCQkJCQkJTlVMTAorCX0sCisJZGwtRkRQQ0gtUG93ZXJDb250cm9sSW5mbwkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAorLS0gQWN0dWFsIHZhbHVlIGRsLUZEUENILVRQQ2NvbW1hbmRFcnJvclJhdGUgPSBJRSB2YWx1ZSAqIDAuMDEKKy0tIGRsLUZEUENILVRQQ2NvbW1hbmRFcnJvclJhdGUgdmFsdWVzIDExLi4xNiBhcmUgc3BhcmUgYW5kIHNoYWxsIG5vdCBiZSB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiAKKy0tIHRoZSBwcm90b2NvbAorCWRsLUZEUENILVRQQ2NvbW1hbmRFcnJvclJhdGUJCUlOVEVHRVIgKDEuLjE2KQkJT1BUSU9OQUwKK30KKworREwtRnJhbWVUeXBlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZGwtRnJhbWVUeXBlQSwgZGwtRnJhbWVUeXBlQiB9CisKK0RMLUhTUERTQ0gtSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCWhzLXNjY2gtSW5mbwkJCQkJSFMtU0NDSC1JbmZvCU9QVElPTkFMLAorCW1lYXN1cmVtZW50LWZlZWRiYWNrLUluZm8JCU1lYXN1cmVtZW50LUZlZWRiYWNrLUluZm8JT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCXRkZAkJCQkJCQkJQ0hPSUNFeworCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkbC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uCSAgCU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlocy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLXRkZDEyOAorCQkJCQkJSFMtUERTQ0gtTWlkYW1ibGUtQ29uZmlndXJhdGlvbi1UREQxMjgJCQkJT1BUSU9OQUwKKwkJCX0KKwkJfSwKKwkJZmRkCQkJCQkJCU5VTEwKKwl9Cit9CisKK0RMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYgOjo9CVNFUVVFTkNFIHsKKwlocy1zY2NoLUluZm8JCQkJCUhTLVNDQ0gtSW5mby1yNgkJCQkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudC1mZWVkYmFjay1JbmZvCQlNZWFzdXJlbWVudC1GZWVkYmFjay1JbmZvCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJdGRkCQkJCQkJCQlDSE9JQ0UgeworCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkbC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JCURMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbglPUFRJT05BTAorCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJaHMtUERTQ0gtTWlkYW1ibGUtQ29uZmlndXJhdGlvbi10ZGQxMjgKKwkJCQkJCUhTLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tVEREMTI4CQkJCU9QVElPTkFMCisJCQl9CisJCX0sCisJCWZkZAkJCQkJCQlOVUxMCisJfQorfQorCitETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3IDo6PQlTRVFVRU5DRSB7CisJaHMtc2NjaC1JbmZvCQkJCQlIUy1TQ0NILUluZm8tcjcJCQkJCQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnQtZmVlZGJhY2stSW5mbwkJTWVhc3VyZW1lbnQtRmVlZGJhY2stSW5mbwkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZGwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uCQlETC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQ3NjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWRsLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbgkJREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uLVZIQ1IJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWhzLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tdGRkMTI4CisJCQkJCQlIUy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLVRERDEyOAkJCQkJCU9QVElPTkFMCisJCQl9CisJCX0sCisJCWZkZAkJCQkJCQlOVUxMCisJfQorfQorCistLSBUaGUgSUUgJ0RMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbicgYXBwbGllcyB0byB0ZGQtMzg0IFJFTC01IG9ud2FyZAorREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLTEpKSBPRgorCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdAkJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLURMCit9CisKKy0tIFRoZSBJRSAnREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uLVZIQ1InIGFwcGxpZXMgdG8gdGRkLTc2OCBSRUwtNyBvbndhcmQKK0RMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbi1WSENSIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXRpbWVzbG90CQkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtREwtVkhDUgorfQorCitETC1JbmZvcm1hdGlvblBlclJMIDo6PQkJCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQkJLS0gZHVtbXkxIGFuZCBkdW1teSAyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQlPUFRJT05BTCwKKwkJCWR1bW15MgkJCQkJCQkJUERTQ0gtQ29kZU1hcHBpbmcJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbworCX0sCisJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMCQkJCQlPUFRJT05BTCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJU0NDUENILUluZm9Gb3JGQUNICQkJCQlPUFRJT05BTAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teTEJCQkJCQkJCVBEU0NILVNITy1EQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0CisJfSwKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtcjQJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSC1yNAkJCQlPUFRJT05BTCwKKwljZWxsLWlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLXI1IDo6PQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teTEJCQkJCQkJCVBEU0NILVNITy1EQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCU9QVElPTkFMLAorCQkJc2VydmluZ0hTRFNDSC1STC1pbmRpY2F0b3IJCQlCT09MRUFOCisJCX0sCisJCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0CisJfSwKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtcjUJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSC1yNAkJCQlPUFRJT05BTCwKKwljZWxsLWlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLXI1YmlzIDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJCS0tIGR1bW15MSBhbmQgZHVtbXkgMiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15MQkJCQkJCQkJUERTQ0gtU0hPLURDSC1JbmZvCQkJT1BUSU9OQUwsCisJCQlkdW1teTIJCQkJCQkJCVBEU0NILUNvZGVNYXBwaW5nCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8tcjQKKwl9LAorCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1yNQkJCQlPUFRJT05BTCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJU0NDUENILUluZm9Gb3JGQUNILXI0CQkJCU9QVElPTkFMLAorCWNlbGwtaWQJCQkJCQkJCUNlbGxJZGVudGl0eQkJCQkJCU9QVElPTkFMCit9CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtcjYgOjo9CQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJCXNlcnZpbmdIU0RTQ0gtUkwtaW5kaWNhdG9yCQkJQk9PTEVBTiwKKwkJCXNlcnZpbmdFRENILVJMLWluZGljYXRvcgkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8tcjQKKwl9LAorCWRsLWRwY2hJbmZvCQkJCQkJCUNIT0lDRSB7CisJCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1yNiwKKwkJZGwtRkRQQ0gtSW5mb1BlclJMCQkJCQlETC1GRFBDSC1JbmZvUGVyUkwtcjYKKwl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJZS1BR0NILUluZm9ybWF0aW9uCQkJCQlFLUFHQ0gtSW5mb3JtYXRpb24JCQkJCU9QVElPTkFMLAorCWUtSElDSC1JbmZvCQkJCQkJCUNIT0lDRQl7CisJCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uLAorCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCisJfQlPUFRJT05BTCwKKwllLVJHQ0gtSW5mbwkJCQkJCQlDSE9JQ0UJeworCQllLVJHQ0gtSW5mb3JtYXRpb24JCQkJCUUtUkdDSC1JbmZvcm1hdGlvbiwKKwkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAorCX0JT1BUSU9OQUwsCisJY2VsbC1pZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwKK30KKworREwtSW5mb3JtYXRpb25QZXJSTC1yNyA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQkJc2VydmluZ0hTRFNDSC1STC1pbmRpY2F0b3IJCQlCT09MRUFOLAorCQkJc2VydmluZ0VEQ0gtUkwtaW5kaWNhdG9yCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNworCX0sCisJZGwtZHBjaEluZm8JCQkJCQkJQ0hPSUNFIHsKKwkJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLXI3LAorCQlkbC1GRFBDSC1JbmZvUGVyUkwJCQkJCURMLUZEUENILUluZm9QZXJSTC1yNgorCX0JCQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwllLUFHQ0gtSW5mb3JtYXRpb24JCQkJCUUtQUdDSC1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwsCisJZS1ISUNILUluZm8JCQkJCQkJQ0hPSUNFCXsKKwkJZS1ISUNILUluZm9ybWF0aW9uCQkJCQlFLUhJQ0gtSW5mb3JtYXRpb24sCisJCXJlbGVhc2VJbmRpY2F0b3IJCQkJCU5VTEwKKwl9CU9QVElPTkFMLAorCWUtUkdDSC1JbmZvCQkJCQkJCUNIT0lDRQl7CisJCWUtUkdDSC1JbmZvcm1hdGlvbgkJCQkJRS1SR0NILUluZm9ybWF0aW9uLAorCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCisJfQlPUFRJT05BTCwKKwljZWxsLWlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwKKworREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMLXI0CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNSA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCQkJCQkJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1yNQorCitETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtcjYKKworREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1YmlzIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1yNWJpcworCitETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtcjcKKworREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0UG9zdEZERCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RGREQKKworREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0RkREIDo6PQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1Qb3N0RkRECit9CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCA6Oj0JCVNFUVVFTkNFIHsKKwlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm9Qb3N0LAorCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1Qb3N0VERECit9CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm9Qb3N0VERELUxDUi1yNCwKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtUG9zdFRERC1MQ1ItcjQKK30KKworREwtUERTQ0gtSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCS0tIGR1bW15MSBhbmQgZHVtbXkgMiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teTEJCQkJCQkJCVBEU0NILVNITy1EQ0gtSW5mbwkJCQkJT1BUSU9OQUwsCisJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCQkJT1BUSU9OQUwKK30KKworRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbiA6Oj0JU0VRVUVOQ0UgeworCXJlc3RyaWN0ZWRUckNILUluZm9MaXN0CQkJCVJlc3RyaWN0ZWRUckNILUluZm9MaXN0CQkJCU9QVElPTkFMCit9CisKK0RMLVRQQy1Qb3dlck9mZnNldFBlclJMIDo6PQkJU0VRVUVOQ0UgeworCQlwb3dlck9mZnNldFRQQy1wZHBkY2gJCQkJUG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJT1BUSU9OQUwKK30KKworLS0gTk9URTogVGhlIHJhZGlvIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgbGlzdCBoYXZlIGEgb25lLXRvLW9uZSBtYXBwaW5nIHdpdGggdGhlIAorLS0gcmFkaW8gbGlua3MgaW4gdGhlIG1lc3NhZ2UuCitETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCURMLVRQQy1Qb3dlck9mZnNldFBlclJMCisKK0RMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUiA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MzMi0xLCBjYzMyLTIsIGNjMzItMywgY2MzMi00LAorCQkJCQkJCQkJCWNjMTMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCisJCQkJCQkJCQkJY2MzMi05LCBjYzMyLTEwLCBjYzMyLTExLCBjYzMyLTEyLAorCQkJCQkJCQkJCWNjMzItMTMsIGNjMzItMTQsIGNjMzItMTUsIGNjMzItMTYsCisJCQkJCQkJCQkJY2MzMi0xNywgY2MzMi0xOCwgY2MzMi0xOSwgY2MzMi0yMCwKKwkJCQkJCQkJCQljYzMyLTIxLCBjYzMyLTIyLCBjYzMyLTIzLCBjYzMyLTI0LAorCQkJCQkJCQkJCWNjMzItMjUsIGNjMzItMjYsIGNjMzItMjcsIGNjMzItMjgsCisJCQkJCQkJCQkJY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMSwgY2MzMi0zMiB9CisKK0RMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydCA6Oj0JU0VRVUVOQ0UgeworCWNvZGVzUmVwcmVzZW50YXRpb24JCQkJCUNIT0lDRSB7CisJCWNvbnNlY3V0aXZlCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWZpcnN0Q2hhbm5lbGlzYXRpb25Db2RlCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwkJCWxhc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlCisJCX0sCisJCWJpdG1hcAkJCQkJCQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJCQljaENvZGUxNi1TRjE2KDApLAorCQkJCQkJCQkJCQkJY2hDb2RlMTUtU0YxNigxKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTE0LVNGMTYoMiksCisJCQkJCQkJCQkJCQljaENvZGUxMy1TRjE2KDMpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTItU0YxNig0KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTExLVNGMTYoNSksCisJCQkJCQkJCQkJCQljaENvZGUxMC1TRjE2KDYpLAorCQkJCQkJCQkJCQkJY2hDb2RlOS1TRjE2KDcpLAorCQkJCQkJCQkJCQkJY2hDb2RlOC1TRjE2KDgpLAorCQkJCQkJCQkJCQkJY2hDb2RlNy1TRjE2KDkpLAorCQkJCQkJCQkJCQkJY2hDb2RlNi1TRjE2KDEwKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTUtU0YxNigxMSksCisJCQkJCQkJCQkJCQljaENvZGU0LVNGMTYoMTIpLAorCQkJCQkJCQkJCQkJY2hDb2RlMy1TRjE2KDEzKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTItU0YxNigxNCksCisJCQkJCQkJCQkJCQljaENvZGUxLVNGMTYoMTUpCisJCQkJCQkJCQkJCQl9IAkoU0laRSAoMTYpKQorCX0KK30KKworREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LVZIQ1IgOjo9CVNFUVVFTkNFIHsKKwljb2Rlc1JlcHJlc2VudGF0aW9uCQkJCQlDSE9JQ0UgeworCQljb25zZWN1dGl2ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQlmaXJzdENoYW5uZWxpc2F0aW9uQ29kZQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUiwKKwkJCWxhc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IKKwkJfSwKKwkJYml0bWFwCQkJCQkJCQlCSVQgU1RSSU5HIHsKKwkJCQkJCQkJCQkJCWNoQ29kZTMyLVNGMzIoMCksCisJCQkJCQkJCQkJCQljaENvZGUzMS1TRjMyKDEpLAorCQkJCQkJCQkJCQkJY2hDb2RlMzAtU0YzMigyKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTI5LVNGMzIoMyksCisJCQkJCQkJCQkJCQljaENvZGUyOC1TRjMyKDQpLAorCQkJCQkJCQkJCQkJY2hDb2RlMjctU0YzMig1KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTI2LVNGMzIoNiksCisJCQkJCQkJCQkJCQljaENvZGUyNS1TRjMyKDcpLAorCQkJCQkJCQkJCQkJY2hDb2RlMjQtU0YzMig4KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTIzLVNGMzIoOSksCisJCQkJCQkJCQkJCQljaENvZGUyMi1TRjMyKDEwKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTIxLVNGMzIoMTEpLAorCQkJCQkJCQkJCQkJY2hDb2RlMjAtU0YzMigxMiksCisJCQkJCQkJCQkJCQljaENvZGUxOS1TRjMyKDEzKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTE4LVNGMzIoMTQpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTctU0YzMigxNSksCisJCQkJCQkJCQkJCQljaENvZGUxNi1TRjMyKDE2KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTE1LVNGMzIoMTcpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTQtU0YzMigxOCksCisJCQkJCQkJCQkJCQljaENvZGUxMy1TRjMyKDE5KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTEyLVNGMzIoMjApLAorCQkJCQkJCQkJCQkJY2hDb2RlMTEtU0YzMigyMSksCisJCQkJCQkJCQkJCQljaENvZGUxMC1TRjMyKDIyKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTktU0YzMigyMyksCisJCQkJCQkJCQkJCQljaENvZGU4LVNGMzIoMjQpLAorCQkJCQkJCQkJCQkJY2hDb2RlNy1TRjMyKDI1KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTYtU0YzMigyNiksCisJCQkJCQkJCQkJCQljaENvZGU1LVNGMzIoMjcpLAorCQkJCQkJCQkJCQkJY2hDb2RlNC1TRjMyKDI4KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTMtU0YzMigyOSksCisJCQkJCQkJCQkJCQljaENvZGUyLVNGMzIoMzApLAorCQkJCQkJCQkJCQkJY2hDb2RlMS1TRjMyKDMxKQorCQkJCQkJCQkJCQkJfSAJKFNJWkUgKDMyKSkKKwl9Cit9CisKK0Rvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cyA6Oj0JCVNFUVVFTkNFIHsKKwlwYXJhbWV0ZXJzCQkJCQkJCUNIT0lDRSB7CisJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgorCQl9LAorCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgeworCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAorCQkJZGwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQKKwkJfQorCX0KK30KKworRG93bmxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLVZIQ1IgOjo9IFNFUVVFTkNFIHsKKwlwYXJhbWV0ZXJzCQkJCQkJCUNIT0lDRSB7CisJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgorCQl9LAorCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgeworCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IsCisJCQlkbC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydC1WSENSCisJCX0KKwl9Cit9CisKK0Rvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cy1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlwYXJhbWV0ZXJzCQkJCQkJCUNIT0lDRSB7CisJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQKKwkJfSwKKwkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCisJCQlkbC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAorCQl9CisJfQorfQorCitEb3dubGlua1RpbWVzbG90c0NvZGVzIDo6PQkJU0VRVUVOQ0UgeworCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8sCisJZGwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQsCisJbW9yZVRpbWVzbG90cwkJCQkJCUNIT0lDRSB7CisJCW5vTW9yZQkJCQkJCQkJTlVMTCwKKwkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKKwkJCWNvbnNlY3V0aXZlCQkJCQkJCUlOVEVHRVIgKDEuLm1heFRTLTEpLAorCQkJdGltZXNsb3RMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLTEpKSBPRgorCQkJCQkJCQkJCQkJCURvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cworCQl9CisJfQorfQorCitEb3dubGlua1RpbWVzbG90c0NvZGVzLVZIQ1IgOjo9CQlTRVFVRU5DRSB7CisJZmlyc3RJbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1WSENSLAorCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LAorCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgeworCQlub01vcmUJCQkJCQkJCU5VTEwsCisJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CisJCQljb25zZWN1dGl2ZQkJCQkJCQlJTlRFR0VSICgxLi5tYXhUUy0xKSwKKwkJCXRpbWVzbG90TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKKwkJCQkJCQkJCQkJCQlEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtVkhDUgorCQl9CisJfQorfQorCitEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAorCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LAorCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgeworCQlub01vcmUJCQkJCQkJCU5VTEwsCisJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CisJCQljb25zZWN1dGl2ZQkJCQkJCQlJTlRFR0VSICgxLi5tYXhUUy1MQ1ItMSksCisJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSLTEpKSBPRgorCQkJCQkJCQkJCQkJCURvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cy1MQ1ItcjQKKwkJfQorCX0KK30KKworRFBDLU1vZGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2luZ2xlVFBDLAorCQkJCQkJCQkJCXRwY1RyaXBsZXRJblNvZnQgfQkKKworLS0gQWN0dWFsIHZhbHVlIERQQ0NILVBvd2VyT2Zmc2V0ID0gSUUgdmFsdWUgKiAyCitEUENDSC1Qb3dlck9mZnNldCA6Oj0JCQkJSU5URUdFUiAoLTgyLi4tMykKKworLS0gQWN0dWFsIHZhbHVlIERQQ0NILVBvd2VyT2Zmc2V0MiA9IDIgKyAoSUUgdmFsdWUgKiA0KQorRFBDQ0gtUG93ZXJPZmZzZXQyIDo6PQkJCQlJTlRFR0VSICgtMjguLi0xMykKKworRFBDSC1Db21wcmVzc2VkTW9kZUluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXRncC1TZXF1ZW5jZUxpc3QJCQkJCVRHUC1TZXF1ZW5jZUxpc3QKK30KKworRFBDSC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8gOjo9CVNFUVVFTkNFIHsKKwl0Z3BzLVJlY29uZmlndXJhdGlvbi1DRk4JCQlUR1BTLVJlY29uZmlndXJhdGlvbi1DRk4sCisJdGdwLVNlcXVlbmNlU2hvcnRMaXN0CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEdQUykpIE9GCisJCQkJCQkJCQkJCVRHUC1TZXF1ZW5jZVNob3J0Cit9CisKKy0tIEFjdHVhbCB2YWx1ZSBEUENILUZyYW1lT2Zmc2V0ID0gSUUgdmFsdWUgKiAyNTYKK0RQQ0gtRnJhbWVPZmZzZXQ6Oj0JCQkJCUlOVEVHRVIgKDAuLjE0OSkKKworRFNDSC1NYXBwaW5nIDo6PQkJCQkJU0VRVUVOQ0UgeworCW1heFRGQ0ktRmllbGQyVmFsdWUJCQkJCU1heFRGQ0ktRmllbGQyVmFsdWUsCisJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU0YtUERTQ0gsCisJY29kZU51bWJlcgkJCQkJCQlDb2RlTnVtYmVyRFNDSCwKKwltdWx0aUNvZGVJbmZvCQkJCQkJTXVsdGlDb2RlSW5mbworfQorCitEU0NILU1hcHBpbmdMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gtVEZDSWdyb3VwcykpIE9GCisJCQkJCQkJCQkJRFNDSC1NYXBwaW5nCisKK0RTQ0gtUmFkaW9MaW5rSWRlbnRpZmllciA6Oj0JCUlOVEVHRVIgKDAuLjUxMSkKKworRFNDSC1UcmFuc3BvcnRDaGFubmVsc0luZm8gOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCWRzY2gtdHJhbnNwb3J0LWNoYW5uZWwtaWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJZHNjaC1URlMJCQkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAorfQorRHVyYXRpb25UaW1lSW5mbyA6Oj0JCQkJSU5URUdFUiAoMS4uNDA5NikKKworRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwgOjo9CQkJSU5URUdFUiAoMS4uOCkKKworRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKKwkJCQkJCQkJCQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbAorCitEeW5hbWljUGVyc2lzdGVuY2VMZXZlbFRGLUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhURi1DUENIKSkgT0YKKwkJCQkJCQkJCQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbAorCitEeW5hbWljVEZJbmZvcm1hdGlvbkNDQ0ggOjo9CQlTRVFVRU5DRSB7CisJb2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTIJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMgorfQorCitFLUFHQ0gtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJSU5URUdFUiAoMC4uMjU1KQorCitFLUFHQ0gtSW5mb3JtYXRpb24gOjo9CQkJCVNFUVVFTkNFIHsKKwllLUFHQ0gtQ2hhbm5lbGlzYXRpb25Db2RlCQkJRS1BR0NILUNoYW5uZWxpc2F0aW9uQ29kZQorfQorCitFLURDSC1NaW5pbXVtU2V0LUUtVEZDSSA6Oj0JCQlJTlRFR0VSICgwLi4xMjcpCisKK0UtRENILVJlY29uZmlndXJhdGlvbkluZm8gOjo9CVNFUVVFTkNFIHsKKwllLURDSC1STC1JbmZvTmV3U2VydmluZ0NlbGwJCQlFLURDSC1STC1JbmZvTmV3U2VydmluZ0NlbGwJCQkJT1BUSU9OQUwsCisJZS1EQ0gtUkwtSW5mb090aGVyQ2VsbExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RURDSFJMKSkgT0YKKwkJCQkJCQkJCQkJRS1EQ0gtUkwtSW5mb090aGVyQ2VsbAkJCQlPUFRJT05BTAorfQorCitFLURDSC1STC1JbmZvTmV3U2VydmluZ0NlbGwgOjo9CQlTRVFVRU5DRSB7CisJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCWUtQUdDSC1JbmZvcm1hdGlvbgkJCQkJRS1BR0NILUluZm9ybWF0aW9uLAorCXNlcnZpbmdHcmFudAkJCQkJCVNFUVVFTkNFIHsKKwkJdmFsdWUJCQkJCQkJCUlOVEVHRVIgKDAuLjM4KQkJCQkJCU9QVElPTkFMLAorCQlwcmltYXJ5LVNlY29uZGFyeS1HcmFudFNlbGVjdG9yCQlFTlVNRVJBVEVEIHsgcHJpbWFyeSwgc2Vjb25kYXJ5IH0KKwl9CU9QVElPTkFMLAorCWUtRFBDQ0gtRFBDQ0gtUG93ZXJPZmZzZXQJCQlFLURQQ0NILURQQ0NILVBvd2VyT2Zmc2V0CQkJCU9QVElPTkFMLAorCXJlZmVyZW5jZS1FLVRGQ0lzCQkJCQlFLURQRENILVJlZmVyZW5jZS1FLVRGQ0lMaXN0CQkJT1BUSU9OQUwsCisJcG93ZXJPZmZzZXRGb3JTY2hlZEluZm8JCQkJSU5URUdFUiAoMC4uNikJCQkJCQkJT1BUSU9OQUwsCisJdGhyZWVJbmRleFN0ZXBUaHJlc2hvbGQJCQkJSU5URUdFUiAoMC4uMzcpCQkJCQkJCU9QVElPTkFMLAorCXR3b0luZGV4U3RlcFRocmVzaG9sZAkJCQlJTlRFR0VSICgwLi4zNykJCQkJCQkJT1BUSU9OQUwsCisJZS1ISUNILUluZm9ybWF0aW9uCQkJCQlFLUhJQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMLAorCWUtUkdDSC1JbmZvCQkJCQkJCUNIT0lDRQl7CisJCWUtUkdDSC1JbmZvcm1hdGlvbgkJCQkJRS1SR0NILUluZm9ybWF0aW9uLAorCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCisJfQlPUFRJT05BTAorfQorCitFLURDSC1STC1JbmZvT3RoZXJDZWxsIDo6PQkJCVNFUVVFTkNFIHsKKwlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJZS1ISUNILUluZm8JCQkJCQkJQ0hPSUNFIHsKKwkJZS1ISUNILUluZm9ybWF0aW9uCQkJCQlFLUhJQ0gtSW5mb3JtYXRpb24sCisJCXJlbGVhc2VJbmRpY2F0b3IJCQkJCU5VTEwKKwl9CU9QVElPTkFMLAorCWUtUkdDSC1JbmZvCQkJCQkJCUNIT0lDRSB7CisJCWUtUkdDSC1JbmZvcm1hdGlvbgkJCQkJRS1SR0NILUluZm9ybWF0aW9uLAorCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCisJfQlPUFRJT05BTAorfQorCitFLURQQ0NILUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJZS1EUENDSC1EUENDSC1Qb3dlck9mZnNldAkJCUUtRFBDQ0gtRFBDQ0gtUG93ZXJPZmZzZXQsCisJaGFwcHlCaXQtRGVsYXlDb25kaXRpb24JCQkJSGFwcHlCaXQtRGVsYXlDb25kaXRpb24KK30KKworRS1EUENDSC1EUENDSC1Qb3dlck9mZnNldCA6Oj0JCUlOVEVHRVIgKDAuLjgpCisKK0UtRFBEQ0gtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwllLVRGQ0ktVGFibGVJbmRleAkJCQkJRS1URkNJLVRhYmxlSW5kZXgsCisJZS1EQ0gtTWluaW11bVNldC1FLVRGQ0kJCQkJRS1EQ0gtTWluaW11bVNldC1FLVRGQ0kJCQkJT1BUSU9OQUwsCisJcmVmZXJlbmNlLUUtVEZDSXMJCQkJCUUtRFBEQ0gtUmVmZXJlbmNlLUUtVEZDSUxpc3QsCisJbWF4Q2hhbm5lbGlzYXRpb25Db2RlcwkJCQlFLURQRENILU1heENoYW5uZWxpc2F0aW9uQ29kZXMsCisJcGwtTm9uTWF4CQkJCQkJCUUtRFBEQ0gtUEwtTm9uTWF4LAorCXNjaGVkdWxpbmdJbmZvQ29uZmlndXJhdGlvbgkJCUUtRFBEQ0gtU2NoZWR1bGluZ0luZm9Db25maWd1cmF0aW9uLAorCXRocmVlSW5kZXhTdGVwVGhyZXNob2xkCQkJCUlOVEVHRVIgKDAuLjM3KQkJCQkJCU9QVElPTkFMLAorCXR3b0luZGV4U3RlcFRocmVzaG9sZAkJCQlJTlRFR0VSICgwLi4zNykJCQkJCQlPUFRJT05BTAorfQorCitFLURQRENILVBlcmlvZGljeU9mU2NoZWRJbmZvIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlldmVyeUVEQ0hUVEksIG1zNCwgbXMxMCwgbXMyMCwgbXM1MCwgbXMxMDAsIG1zMjAwLCBtczUwMCwKKwkJCQkJCQkJCQltczEwMDAgfQorCistLSBUaGUgYWN0dWFsIHZhbHVlIG9mIEUtRFBEQ0gtUEwtTm9uTWF4IGlzOiBJRSB2YWx1ZSAqIDAuMDQKK0UtRFBEQ0gtUEwtTm9uTWF4IDo6PQkJCQlJTlRFR0VSICgxMS4uMjUpCisKK0UtRFBEQ0gtUmVmZXJlbmNlLUUtVEZDSSA6Oj0JCVNFUVVFTkNFIHsKKwlyZWZlcmVuY2UtRS1URkNJCQkJCQlJTlRFR0VSICgwLi4xMjcpLAorCXJlZmVyZW5jZS1FLVRGQ0ktUE8JCQkJCUlOVEVHRVIgKDAuLjI5KQorfQorCitFLURQRENILVJlZmVyZW5jZS1FLVRGQ0lMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4uOCkpIE9GIEUtRFBEQ0gtUmVmZXJlbmNlLUUtVEZDSQorCitFLURQRENILVNjaGVkdWxpbmdJbmZvQ29uZmlndXJhdGlvbiA6Oj0gU0VRVUVOQ0UgeworCXBlcmlvZGljaXR5T2ZTY2hlZEluZm8tTm9HcmFudAkJRS1EUERDSC1QZXJpb2RpY3lPZlNjaGVkSW5mbwkJT1BUSU9OQUwsCisJcGVyaW9kaWNpdHlPZlNjaGVkSW5mby1HcmFudAkJRS1EUERDSC1QZXJpb2RpY3lPZlNjaGVkSW5mbwkJT1BUSU9OQUwsCisJcG93ZXJPZmZzZXRGb3JTY2hlZEluZm8JCQkJSU5URUdFUiAoMC4uNikKK30KKworRS1EUERDSC1TY2hlZHVsaW5nVHJhbnNtQ29uZmlndXJhdGlvbiA6Oj0gU0VRVUVOQ0UgeworCW1zMi1TY2hlZFRyYW5zbUdyYW50SEFSUUFsbG9jCQlCSVQgU1RSSU5HIChTSVpFICg4KSkJCQkJT1BUSU9OQUwsCisJc2VydmluZ0dyYW50CQkJCQkJU0VRVUVOQ0UgeworCQl2YWx1ZQkJCQkJCQkJSU5URUdFUiAoMC4uMzgpLAorCQlwcmltYXJ5LVNlY29uZGFyeS1HcmFudFNlbGVjdG9yCQlFTlVNRVJBVEVEIHsgcHJpbWFyeSwgc2Vjb25kYXJ5IH0KKwl9CQlPUFRJT05BTAorfQorCitFLURQRENILU1heENoYW5uZWxpc2F0aW9uQ29kZXMgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmMjU2LCBzZjEyOCwgc2Y2NCwgc2YzMiwgc2YxNiwgc2Y4LCBzZjQsIHNmNHgyLCBzZjJ4Miwgc2Y0eDItYW5kLXNmMngyIH0KKworRS1ISUNILUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCUlOVEVHRVIgKDAuLjEyNykKKworRS1ISUNILUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSB7CisJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlFLUhJQ0gtQ2hhbm5lbGlzYXRpb25Db2RlLAorCXNpZ25hdHVyZVNlcXVlbmNlCQkJCQlFLUhJQ0gtUkdDSC1TaWduYXR1cmVTZXF1ZW5jZQorfQorCitFLUhJQ0gtUkdDSC1TaWduYXR1cmVTZXF1ZW5jZSA6Oj0JSU5URUdFUiAoMC4uMzkpCisKK0UtUkdDSC1Db21iaW5hdGlvbkluZGV4IDo6PQkJCUlOVEVHRVIgKDAuLjUpCisKK0UtUkdDSC1JbmZvcm1hdGlvbiA6Oj0JCQkJU0VRVUVOQ0UgeworCXNpZ25hdHVyZVNlcXVlbmNlCQkJCQlFLUhJQ0gtUkdDSC1TaWduYXR1cmVTZXF1ZW5jZSwKKwlyZy1Db21iaW5hdGlvbkluZGV4CQkJCQlFLVJHQ0gtQ29tYmluYXRpb25JbmRleAorfQorCitFLVRGQ0ktVGFibGVJbmRleCA6Oj0JCQkJSU5URUdFUiAoMC4uMSkKKworRVhULVVMLVRpbWluZ0FkdmFuY2UgOjo9CQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCWV4LXVsLVRpbWluZ0FkdmFuY2UJCQlJTlRFR0VSICgwLi4yNTUpCisJCX0sCisJCXRkZDc2OAkJCQkJCQlTRVFVRU5DRSB7CisJCQlleC11bC1UaW1pbmdBZHZhbmNlCQkJSU5URUdFUiAoMC4uNTExKQorCQl9CisJfQorfQorCitGQUNILVBDSC1JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWN0Y2gtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorfQorCitGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RkFDSFBDSCkpIE9GCisJCQkJCQkJCQkJRkFDSC1QQ0gtSW5mb3JtYXRpb24KKworRmVlZGJhY2stY3ljbGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlmYzAsIGZjMiwgZmM0LCBmYzgsIGZjMTAsIGZjMjAsIGZjNDAsIGZjODAsIGZjMTYwfQorCitGUEFDSC1JbmZvLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQsCisJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlUREQtRlBBQ0gtQ0NvZGUxNi1yNCwKKwltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1MQ1ItcjQsCisgICAgd2kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ktTENSCit9CisKK0ZyZXF1ZW5jeUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJRnJlcXVlbmN5SW5mb0ZERCwKKwkJdGRkCQkJCQkJCQkJRnJlcXVlbmN5SW5mb1RERAl9Cit9CisKK0ZyZXF1ZW5jeUluZm9GREQgOjo9CQkJCVNFUVVFTkNFIHsKKwl1YXJmY24tVUwJCQkJCQkJVUFSRkNOCQkJCU9QVElPTkFMLAorCXVhcmZjbi1ETAkJCQkJCQlVQVJGQ04KK30KKworRnJlcXVlbmN5SW5mb1RERCA6Oj0JCQkJU0VRVUVOQ0UgeworCXVhcmZjbi1OdAkJCQkJCQlVQVJGQ04KK30KKworSGFwcHlCaXQtRGVsYXlDb25kaXRpb24gOjo9CQkJRU5VTUVSQVRFRCB7IAorCQkJCQkJCQkJCW1zMiwgbXMxMCwgbXMyMCwgbXM1MCwgbXMxMDAsIG1zMjAwLCBtczUwMCwgbXMxMDAwIH0KKworSEFSUS1QcmVhbWJsZS1Nb2RlIDo6PQkJCQlJTlRFR0VSICgwLi4xKQorCitIUy1DaGFubmVsaXNhdGlvbkNvZGUtTENSIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAorCQkJCQkJCQkJCWNjMTYtNSwgY2MxNi02LCBjYzE2LTcsIGNjMTYtOCwKKwkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCisJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CisKK0hTLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tVEREMTI4IDo6PQlTRVFVRU5DRSB7CisJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0V7CisJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlJTlRFR0VSICgwLi4xNSkKKyAgICB9LAorCS0tIEFjdHVhbCB2YWx1ZSBtaWRhbWJsZUNvbmZpZ3VyYXRpb24gPSBJRSB2YWx1ZSAqIDIKKwltaWRhbWJsZUNvbmZpZ3VyYXRpb24JCQkJSU5URUdFUiAoMS4uOCkKK30KKworSFMtU0NDSC1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWhTLVNDQ0hDaGFubmVsaXNhdGlvbkNvZGVJbmZvCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJSFMtU0NDSC1Db2RlcywKKwkJCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworICAgICAgICAgICAgICAgIG5hY2stYWNrLXBvd2VyLW9mZnNldCAgICAgIAkJICAgSU5URUdFUiAoLTcuLjgpLCAKKyAgICAgICAgICAgICAgICBocy1TSUNILVBvd2VyQ29udHJvbC1JbmZvICAJCSAgIEhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCwKKwkJCQloUy1TQ0NILVNldENvbmZpZ3VyYXRpb24gCQkgICBTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQlIUy1TQ0NILVRERDM4NAorCQkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKKwkJCQkJCQkJCQkJCQlIUy1TQ0NILVRERDEyOAorCQl9CisJfQorfQorCitIUy1TQ0NILUluZm8tcjYgOjo9CQkJCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaFMtU0NDSENoYW5uZWxpc2F0aW9uQ29kZUluZm8JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKKwkJCQkJCQkJCQkJCQlIUy1TQ0NILUNvZGVzLAorCQkJZGwtU2NyYW1ibGluZ0NvZGUJCQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCW5hY2stYWNrLXBvd2VyLW9mZnNldAkJCQlJTlRFR0VSICgtNy4uOCksIAorCQkJCWhzLVNJQ0gtUG93ZXJDb250cm9sLUluZm8JCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQzODQsCisJCQkJZGhzLXN5bmMJCQkJCQkJREhTLVN5bmMJCQkJCU9QVElPTkFMLAorCQkJCWJsZXItdGFyZ2V0CQkJCQkJCUJsZXItVGFyZ2V0LAorCQkJCWhTLVNDQ0gtU2V0Q29uZmlndXJhdGlvbgkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKKwkJCQkJCQkJCQkJCQkJSFMtU0NDSC1UREQzODQtcjYKKwkJCQl9LAorCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJSFMtU0NDSC1UREQxMjgKKwkJfQorCX0KK30KKworSFMtU0NDSC1JbmZvLXI3IDo6PQkJCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWhTLVNDQ0hDaGFubmVsaXNhdGlvbkNvZGVJbmZvCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJSFMtU0NDSC1Db2RlcywKKwkJCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQluYWNrLWFjay1wb3dlci1vZmZzZXQJCQkJSU5URUdFUiAoLTcuLjgpLCAKKwkJCQlocy1TSUNILVBvd2VyQ29udHJvbC1JbmZvCQkJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVEREMzg0LAorCQkJCWRocy1zeW5jCQkJCQkJCURIUy1TeW5jCQkJCQlPUFRJT05BTCwKKwkJCQloUy1TQ0NILVNldENvbmZpZ3VyYXRpb24JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMzg0LXI2CisJCQkJfSwKKwkJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCW5hY2stYWNrLXBvd2VyLW9mZnNldAkJCQlJTlRFR0VSICgtNy4uOCksIAorCQkJCWhzLVNJQ0gtUG93ZXJDb250cm9sLUluZm8JCQlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQ3NjgsCisJCQkJZGhzLXN5bmMJCQkJCQkJREhTLVN5bmMJCQkJCU9QVElPTkFMLAorCQkJCWJsZXItdGFyZ2V0CQkJCQkJCUJsZXItVGFyZ2V0LAorCQkJCWhTLVNDQ0gtU2V0Q29uZmlndXJhdGlvbgkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIU1NDQ0hzKSkgT0YKKwkJCQkJCQkJCQkJCQkJSFMtU0NDSC1UREQ3NjgKKwkJCQl9LAorCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJSFMtU0NDSC1UREQxMjgKKwkJfQorCX0KK30KKworSFMtU0NDSC1Db2RlcyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjEyNykKKworSFMtU0NDSC1UREQxMjggOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKKwlmaXJzdENoYW5uZWxpc2F0aW9uQ29kZQkJCQlIUy1DaGFubmVsaXNhdGlvbkNvZGUtTENSLAorCXNlY29uZENoYW5uZWxpc2F0aW9uQ29kZQkJCUhTLUNoYW5uZWxpc2F0aW9uQ29kZS1MQ1IsCisJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJSU5URUdFUigwLi4xNSkKKwl9LAorCS0tIEFjdHVhbCB2YWx1ZSBtaWRhbWJsZUNvbmZpZ3VyYXRpb24gPSBJRSB2YWx1ZSAqIDIKKwltaWRhbWJsZUNvbmZpZ3VyYXRpb24JCQkJSU5URUdFUiAoMS4uOCksCisJYmxlci10YXJnZXQJCQkJCQkJQmxlci1UYXJnZXQsCisJaHMtc2ljaC1jb25maWd1cmF0aW9uCQkJCUhTLVNJQ0gtQ29uZmlndXJhdGlvbi1UREQxMjgKK30KKworSFMtU0lDSC1Db25maWd1cmF0aW9uLVRERDEyOCA6Oj0JU0VRVUVOQ0UgeworCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAorCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJSFMtQ2hhbm5lbGlzYXRpb25Db2RlLUxDUiwKKwltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCX0KKwl9LAorCS0tIEFjdHVhbCB2YWx1ZSBtaWRhbWJsZUNvbmZpZ3VyYXRpb24gPSBJRSB2YWx1ZSAqIDIKKwltaWRhbWJsZUNvbmZpZ3VyYXRpb24JCQkJSU5URUdFUiAoMS4uOCksCisJbmFjay1hY2stcG93ZXItb2Zmc2V0CQkJCUlOVEVHRVIgKC03Li44KSwKKwlwb3dlci1sZXZlbC1IU1NJQ0gJCQkJCUlOVEVHRVIgKC0xMjAuLi01OCksCisJdHBjLXN0ZXAtc2l6ZQkJCQkJCUVOVU1FUkFURUQgeyBzMSwgczIsIHMzICwgc3BhcmUxfQorfQorCisKKworSFMtU0NDSC1UREQzODQgOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAorCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQl9CisJfSwKKwltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJYmxlci10YXJnZXQJCQkJCQkJQmxlci1UYXJnZXQsCisJaHMtc2ljaC1jb25maWd1cmF0aW9uCQkJCUhTLVNJQ0gtQ29uZmlndXJhdGlvbi1UREQzODQKK30KKworSFMtU0NDSC1UREQzODQtcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAorCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQl9CisJfSwKKwltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJaHMtc2ljaC1jb25maWd1cmF0aW9uCQkJCUhTLVNJQ0gtQ29uZmlndXJhdGlvbi1UREQzODQKK30KKworSFMtU0NDSC1UREQ3NjggOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAorCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IsCisJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCX0KKwl9LAorCW1pZGFtYmxlY29uZmlndXJhdGlvbgkJCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMywKKwlocy1zaWNoLWNvbmZpZ3VyYXRpb24JCQkJSFMtU0lDSC1Db25maWd1cmF0aW9uLVRERDc2OAorfQorCitIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMzg0IDo6PQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCX0KKwl9LAorCW1pZGFtYmxlY29uZmlndXJhdGlvbgkJCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMworfQorCitIUy1TSUNILUNvbmZpZ3VyYXRpb24tVERENzY4IDo6PQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSLAorCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJfQorCX0sCisJbWlkYW1ibGVjb25maWd1cmF0aW9uCQkJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCit9CisKK0hTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCA6Oj0gU0VRVUVOQ0UgeworCS0tIEFjdHVhbCB2YWx1ZSB1bC10YXJnZXQtU0lSID0gSUUgdmFsdWUgKiAwLjUKKwl1bC10YXJnZXQtU0lSCQkJCQkJSU5URUdFUiAoLTIyLi40MCksCisgICAgaHMtc2ljaC1Db25zdGFudFZhbHVlCQkJICAgIENvbnN0YW50VmFsdWUKK30KKworSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVERENzY4IDo6PSBTRVFVRU5DRSB7CisJLS0gQWN0dWFsIHZhbHVlIHVsLXRhcmdldC1TSVIgPSBJRSB2YWx1ZSAqIDAuNQorCXVsLXRhcmdldC1TSVIJCQkJCQlJTlRFR0VSICgtMjIuLjQwKSwKKwlocy1zaWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZQorfQorCitJbmRpdmlkdWFsVGltZXNsb3RJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAorCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQorfQorCitJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IgOjo9CQkJU0VRVUVOQ0UgeworCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtVkhDUgkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1WSENSCit9CisKK0luZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQsCisJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKKwltb2R1bGF0aW9uCQkJCQkJCUVOVU1FUkFURUQgeyBtb2QtUVBTSywgbW9kLThQU0sgfSwKKwlzcy1UUEMtU3ltYm9scwkJCQkJCUVOVU1FUkFURUQgeyB6ZXJvLCBvbmUsIHNpeHRlZW5PdmVyU0YgfSwKKwlhZGRpdGlvbmFsU1MtVFBDLVN5bWJvbHMJCQlJTlRFR0VSKDEuLjE1KQkJT1BUSU9OQUwKK30KKworSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQtZXh0IDo6PQkJU0VRVUVOQ0UgeworLS0gdGltZXNsb3ROdW1iZXIgYW5kIHRmY2ktRXhpc3RlbmNlIGlzIHRha2VuIGZyb20gSW5kaXZpZHVhbFRpbWVzbG90SW5mby4KKy0tIG1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUgaW4gSW5kaXZpZHVhbFRpbWVzbG90SW5mbyBzaGFsbCBiZSBpZ25vcmVkLgorCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKKwltb2R1bGF0aW9uCQkJCQkJCUVOVU1FUkFURUQgeyBtb2QtUVBTSywgbW9kLThQU0sgfSwKKwlzcy1UUEMtU3ltYm9scwkJCQkJCUVOVU1FUkFURUQgeyB6ZXJvLCBvbmUsIHNpeHRlZW5PdmVyU0YgfQorfQorCitJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlIDo6PQkJU0VRVUVOQ0UgeworCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCXVsLVRpbWVzbG90SW50ZXJmZXJlbmNlCQkJCVRERC1VTC1JbnRlcmZlcmVuY2UKK30KKworSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCisJCQkJCQkJCQkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZQorCitJVFAgOjo9CQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltb2RlMCwgbW9kZTEgfQorCitOaWRlbnRpZnlBYm9ydCA6Oj0JSU5URUdFUiAoMS4uMTI4KQorCitNYXhBbGxvd2VkVUwtVFgtUG93ZXIgOjo9CQkJSU5URUdFUiAoLTUwLi4zMykKKworTWF4QXZhaWxhYmxlUENQQ0gtTnVtYmVyIDo6PQkJSU5URUdFUiAoMS4uNjQpCitNYXhQb3dlckluY3JlYXNlLXI0IDo6PQkJCQlJTlRFR0VSICgwLi4zKQorCitNYXhURkNJLUZpZWxkMlZhbHVlIDo6PQkJCQlJTlRFR0VSICgxLi4xMDIzKQorCitNZWFzdXJlbWVudC1GZWVkYmFjay1JbmZvIDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltZWFzdXJlbWVudFBvd2VyT2Zmc2V0CQkJTWVhc3VyZW1lbnRQb3dlck9mZnNldCwKKwkJCWZlZWRiYWNrLWN5Y2xlCQkJCQlGZWVkYmFjay1jeWNsZSwKKwkJCWNxaS1SZXBldGl0aW9uRmFjdG9yCQkJQ1FJLVJlcGV0aXRpb25GYWN0b3IsCisJCQlkZWx0YUNRSQkJCQkJCURlbHRhQ1FJCisJCX0sCisJCXRkZAkJCQkJCQkJTlVMTAorCX0KK30KKworCitNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMyA6Oj0gRU5VTUVSQVRFRCB7bXM0LCBtczgsIG1zMTZ9CisKK01pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIgOjo9CQlFTlVNRVJBVEVEIHttczMsIG1zNn0KKworTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMi1WSENSIDo6PQkJRU5VTUVSQVRFRCB7bXM0LCBtczh9CisKK01pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUgOjo9CQlTRVFVRU5DRSB7CisJYnVyc3RUeXBlCQkJCQkJCUNIT0lDRSB7CQorCQl0eXBlMQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQkJCX0KKwkJCX0KKwkJfSwKKwkJdHlwZTIJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0U2hvcnQKKwkJCQl9CisJCQl9CisJCX0sCisJCXR5cGUzCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMwlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMywKKwkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK01pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtVkhDUiA6Oj0JU0VRVUVOQ0UgeworCWJ1cnN0VHlwZQkJCQkJCQlDSE9JQ0UgeworCQl0eXBlMQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQkJCX0KKwkJCX0KKwkJfSwKKwkJdHlwZTIJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTItVkhDUiwKKwkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRTaG9ydC1WSENSCisJCQkJfQorCQkJfQorCQl9LAorCQl0eXBlMwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLURMIDo6PQkJU0VRVUVOQ0UgeworCWJ1cnN0VHlwZQkJCQkJCQlDSE9JQ0UgewkKKwkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJCQl9CisJCQl9CisJCX0sCisJCXR5cGUyCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdFNob3J0CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLURMLVZIQ1IgOjo9IFNFUVVFTkNFIHsKKwlidXJzdFR5cGUJCQkJCQkJQ0hPSUNFIHsJCisJCXR5cGUxCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMwlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMywKKwkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCQkJfQorCQkJfQorCQl9LAorCQl0eXBlMgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMgkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMi1WSENSLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdFNob3J0LVZIQ1IKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK01pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVTaGlmdAkJCQkJCUlOVEVHRVIgKDAuLjE1KQorCQl9CisJfSwKKwktLSBBY3R1YWwgdmFsdWUgbWlkYW1ibGVDb25maWd1cmF0aW9uID0gSUUgdmFsdWUgKiAyCisJbWlkYW1ibGVDb25maWd1cmF0aW9uCQkJCUlOVEVHRVIgKDEuLjgpCit9CisKK01pZGFtYmxlU2hpZnRMb25nIDo6PQkJCQlJTlRFR0VSICgwLi4xNSkKKworCitNaWRhbWJsZVNoaWZ0U2hvcnQgOjo9CQkJCUlOVEVHRVIgKDAuLjUpCisKK01pZGFtYmxlU2hpZnRTaG9ydC1WSENSIDo6PQkJCUlOVEVHRVIgKDAuLjcpCisKK01pbmltdW1TcHJlYWRpbmdGYWN0b3IgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2Y0LCBzZjgsIHNmMTYsIHNmMzIsCisJCQkJCQkJCQkJc2Y2NCwgc2YxMjgsIHNmMjU2IH0KKworTXVsdGlDb2RlSW5mbyA6Oj0JCQkJCUlOVEVHRVIgKDEuLjE2KQorCisKK04tRU9UIDo6PQkJCQkJCQlJTlRFR0VSICgwLi43KQorCitOLUdBUCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZjIsIGY0LCBmOCB9CisKK04tUENIIDo6PQkJCQkJCQlJTlRFR0VSICgxLi44KQorCitOLVN0YXJ0TWVzc2FnZSA6Oj0JCQkJCUlOVEVHRVIgKDEuLjgpCisKK05CMDEgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjUwKQorCitORi1NYXggOjo9CQkJCQkJCUlOVEVHRVIgKDEuLjY0KQorCitOdW1iZXJPZkRQRENIIDo6PQkJCQkJSU5URUdFUiAoMS4ubWF4RFBEQ0gtVUwpCisKK051bWJlck9mRkJJLUJpdHMgOjo9CQkJCUlOVEVHRVIgKDEuLjIpCisKK09wZW5Mb29wUG93ZXJDb250cm9sLVRERCA6Oj0JCVNFUVVFTkNFIHsKKwlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyLAorCS0tIGFscGhhLCBwcmFjaC1Db25zdGFudFZhbHVlLCBkcGNoLUNvbnN0YW50VmFsdWUgYW5kIHB1c2NoLUNvbnN0YW50VmFsdWUKKwktLSBzaGFsbCBiZSBpZ25vcmVkIGluIDEuMjhNY3BzIFRERCBtb2RlLgorCWFscGhhCQkJCQkJCQlBbHBoYQkJCQkJCU9QVElPTkFMLAorCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWVUZGQsCisJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlVGRkLAorCXB1c2NoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTAorfQorCitPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNCA6Oj0JU0VRVUVOQ0UgeworCWlwZGwtYWxwaGEJCQkJCQkJQWxwaGEsCisJbWF4UG93ZXJJbmNyZWFzZQkJCQkJTWF4UG93ZXJJbmNyZWFzZS1yNAorfQorCitQYWdpbmdJbmRpY2F0b3JMZW5ndGggOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGk0LCBwaTgsIHBpMTYgfQorCitQQy1QcmVhbWJsZSA6Oj0JCQkJCQlJTlRFR0VSICgwLi43KQorCitQQ1AtTGVuZ3RoIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWFzMCwgYXM4IH0KKworUENQQ0gtQ2hhbm5lbEluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwlwY3BjaC1VTC1TY3JhbWJsaW5nQ29kZQkJCQlJTlRFR0VSICgwLi43OSksCisJcGNwY2gtREwtQ2hhbm5lbGlzYXRpb25Db2RlCQkJSU5URUdFUiAoMC4uNTExKSwKKwlwY3BjaC1ETC1TY3JhbWJsaW5nQ29kZQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlPUFRJT05BTCwKKwlwY3AtTGVuZ3RoCQkJCQkJCVBDUC1MZW5ndGgsCisJdWNzbS1JbmZvCQkJCQkJCVVDU00tSW5mbwkJCQkJCQlPUFRJT05BTAorfQorCitQQ1BDSC1DaGFubmVsSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENIcykpIE9GCisJCQkJCQkJCQkJUENQQ0gtQ2hhbm5lbEluZm8KKworUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1heUJlVXNlZCwKKwkJCQkJCQkJCQlzaGFsbE5vdEJlVXNlZCB9CisKK1BEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8gOjo9CVNFUVVFTkNFIHsKKwktLSBwZHNjaC1Qb3dlckNvbnRyb2xJbmZvIGlzIGNvbmRpdGlvbmFsIG9uIG5ldy1jb25maWd1cmF0aW9uIGJyYW5jaCBiZWxvdywgaWYgdGhpcworCS0tIHNlbGVjdGVkIHRoZSBJRSBpcyBPUFRJT05BTCBvdGhlcndpc2UgaXQgc2hvdWxkIG5vdCBiZSBzZW50CisJcGRzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlQRFNDSC1Qb3dlckNvbnRyb2xJbmZvCQkJCU9QVElPTkFMLAorCXBkc2NoLUFsbG9jYXRpb25QZXJpb2RJbmZvCQkJQWxsb2NhdGlvblBlcmlvZEluZm8sCisJY29uZmlndXJhdGlvbgkJCQkJCUNIT0lDRSB7CisJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwkJCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHkKKwkJfSwKKwkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKKwkJCXBkc2NoLUluZm8JCQkJCQkJUERTQ0gtSW5mbywKKwkJCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHkJCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUERTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNCA6Oj0JU0VRVUVOQ0UgeworCXBkc2NoLUFsbG9jYXRpb25QZXJpb2RJbmZvCQkJQWxsb2NhdGlvblBlcmlvZEluZm8sCisJY29uZmlndXJhdGlvbgkJCQkJCUNIT0lDRSB7CisJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwkJCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHkKKwkJfSwKKwkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKKwkJCXBkc2NoLUluZm8JCQkJCQkJUERTQ0gtSW5mby1yNCwKKwkJCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJCQlwZHNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVBEU0NILVBvd2VyQ29udHJvbEluZm8JCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1BEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcgOjo9CVNFUVVFTkNFIHsKKwlwZHNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAorCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgeworCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CisJCX0sCisJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8tcjcsCisJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CQkJCU9QVElPTkFMLAorCQkJcGRzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlQRFNDSC1Qb3dlckNvbnRyb2xJbmZvCQlPUFRJT05BTAorCQl9CisJfQorfQorCitQRFNDSC1Db2RlSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTRi1QRFNDSCwKKwljb2RlTnVtYmVyCQkJCQkJCUNvZGVOdW1iZXJEU0NILAorCW11bHRpQ29kZUluZm8JCQkJCQlNdWx0aUNvZGVJbmZvCit9CisKK1BEU0NILUNvZGVJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQ0ktMi1Db21icykpIE9GCisJCQkJCQkJCQkJUERTQ0gtQ29kZUluZm8KKworUERTQ0gtQ29kZU1hcCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTRi1QRFNDSCwKKwltdWx0aUNvZGVJbmZvCQkJCQkJTXVsdGlDb2RlSW5mbywKKwljb2RlTnVtYmVyU3RhcnQJCQkJCQlDb2RlTnVtYmVyRFNDSCwKKwljb2RlTnVtYmVyU3RvcAkJCQkJCUNvZGVOdW1iZXJEU0NICit9CisKK1BEU0NILUNvZGVNYXBMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gtVEZDSWdyb3VwcykpIE9GCisJCQkJCQkJCQkJUERTQ0gtQ29kZU1hcAorCitQRFNDSC1Db2RlTWFwcGluZyA6Oj0JCQkJU0VRVUVOQ0UgeworCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlPUFRJT05BTCwKKwlzaWduYWxsaW5nTWV0aG9kCQkJCQlDSE9JQ0UgeworCQljb2RlUmFuZ2UJCQkJCQkJQ29kZVJhbmdlLAorCQl0ZmNpLVJhbmdlCQkJCQkJCURTQ0gtTWFwcGluZ0xpc3QsCisJCWV4cGxpY2l0LWNvbmZpZwkJCQkJCVBEU0NILUNvZGVJbmZvTGlzdCwKKwkJcmVwbGFjZQkJCQkJCQkJUmVwbGFjZWRQRFNDSC1Db2RlSW5mb0xpc3QKKwl9Cit9CQorCitQRFNDSC1JZGVudGl0eSA6Oj0JCQkJCUlOVEVHRVIgKDEuLmhpUERTQ0hpZGVudGl0aWVzKQorCisgCitQRFNDSC1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcwkJCQlPUFRJT05BTAorfQorCitQRFNDSC1JbmZvLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcwkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwZHNjaC1UaW1lc2xvdHNDb2RlcwkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAorCQl9CisJfQorfQorCitQRFNDSC1JbmZvLXI3IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcwkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwZHNjaC1UaW1lc2xvdHNDb2RlcwkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLVZIQ1IJCU9QVElPTkFMCisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUERTQ0gtSW5mby1MQ1ItcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJCU9QVElPTkFMCit9CisKK1BEU0NILVBvd2VyQ29udHJvbEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXRwYy1TdGVwU2l6ZVRERAkJCQkJCVRQQy1TdGVwU2l6ZVRERAkJCQkJCU9QVElPTkFMLAorCXVsLUNDVHJDaFRQQ0xpc3QJCQkJCVVMLUNDVHJDaFRQQ0xpc3QJCQkJCU9QVElPTkFMCit9CisKK1BEU0NILVNITy1EQ0gtSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCWRzY2gtUmFkaW9MaW5rSWRlbnRpZmllcgkJCURTQ0gtUmFkaW9MaW5rSWRlbnRpZmllciwKKwlybC1JZGVudGlmaWVyTGlzdAkJCQkJUkwtSWRlbnRpZmllckxpc3QJCQkJCU9QVElPTkFMCit9CisKK1BEU0NILVN5c0luZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eSwKKwlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8sCisJZHNjaC1URlMJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKKwlkc2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKK30KKworUERTQ0gtU3lzSW5mby1yNyA6Oj0JCQkJU0VRVUVOQ0UgeworCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCisJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLXI3LAorCWRzY2gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJRFNDSC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlPUFRJT05BTCwKKwlkc2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKK30KKworUERTQ0gtU3lzSW5mby1IQ1ItcjUgOjo9CQkJCQlTRVFVRU5DRSB7CisJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eSwKKwlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8sCisJZHNjaC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlEU0NILVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCU9QVElPTkFMLAorCWRzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAorfQorCitQRFNDSC1TeXNJbmZvLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eSwKKwlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8tTENSLXI0LAorCWRzY2gtVEZTCQkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAkJCQkJT1BUSU9OQUwsCisJZHNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCit9CisKK1BEU0NILVN5c0luZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gpKSBPRgorCQkJCQkJCQkJCVBEU0NILVN5c0luZm8KKworUERTQ0gtU3lzSW5mb0xpc3QtcjcgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YgUERTQ0gtU3lzSW5mby1yNworCitQRFNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YgUERTQ0gtU3lzSW5mby1IQ1ItcjUKKworUERTQ0gtU3lzSW5mb0xpc3QtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKKwkJCQkJCQkJCQlQRFNDSC1TeXNJbmZvLUxDUi1yNAorCitQRFNDSC1TeXNJbmZvTGlzdC1TRk4gOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcGRzY2gtU3lzSW5mbwkJCQkJCQlQRFNDSC1TeXNJbmZvLAorCXNmbi1UaW1lSW5mbwkJCQkJCQlTRk4tVGltZUluZm8JCQkJCU9QVElPTkFMCit9CisKK1BEU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcGRzY2gtU3lzSW5mbwkJCQkJCQlQRFNDSC1TeXNJbmZvLUhDUi1yNSwKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitQRFNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UERTQ0gpKSBPRgorCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwlwZHNjaC1TeXNJbmZvCQkJCQkJCVBEU0NILVN5c0luZm8tTENSLXI0LAorCXNmbi1UaW1lSW5mbwkJCQkJCQlTRk4tVGltZUluZm8JCQkJCU9QVElPTkFMCit9CisKK1BlcnNpc3RlbmNlU2NhbGluZ0ZhY3RvciA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBzZjAtOSwgcHNmMC04LCBwc2YwLTcsIHBzZjAtNiwKKwkJCQkJCQkJCQlwc2YwLTUsIHBzZjAtNCwgcHNmMC0zLCBwc2YwLTIgfQorCitQZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QVNDcGVyc2lzdCkpIE9GCisJCQkJCQkJCQkJUGVyc2lzdGVuY2VTY2FsaW5nRmFjdG9yCisKK1BJLUNvdW50UGVyRnJhbWUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWUxOCwgZTM2LCBlNzIsIGUxNDQgfQorCitQaWNoQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1MQ1ItcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlCisKK1BJQ0gtSW5mbyA6Oj0JCQkJCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY2hhbm5lbGlzYXRpb25Db2RlMjU2CQkJCUNoYW5uZWxpc2F0aW9uQ29kZTI1NiwKKwkJcGktQ291bnRQZXJGcmFtZQkJCQkJUEktQ291bnRQZXJGcmFtZSwKKwkJc3R0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJVERELVBJQ0gtQ0NvZGUJCQkJCU9QVElPTkFMLAorCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgkJCQkJT1BUSU9OQUwsCisJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLAorCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtUElDSAkJCU9QVElPTkFMLAorCQlwYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQkJUGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJREVGQVVMVCBwaTQsCisJCW4tR0FQCQkJCQkJCQlOLUdBUAkJCQkJCQlERUZBVUxUIGY0LAorCQluLVBDSAkJCQkJCQkJTi1QQ0gJCQkJCQkJREVGQVVMVCAyCisJfQkKK30KKworUElDSC1JbmZvLXI3IDo6PQkJCQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWNoYW5uZWxpc2F0aW9uQ29kZTI1NgkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYsCisJCXBpLUNvdW50UGVyRnJhbWUJCQkJCVBJLUNvdW50UGVyRnJhbWUsCisJCXN0dGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCX0sCisJdGRkMzg0CQkJCQkJCQkJU0VRVUVOQ0UgeworCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJCVRERC1QSUNILUNDb2RlCQkJCQlPUFRJT05BTCwKKwkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCU9QVElPTkFMLAorCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKKwkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LVBJQ0gJCQlPUFRJT05BTCwKKwkJcGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJCVBhZ2luZ0luZGljYXRvckxlbmd0aAkJCURFRkFVTFQgcGk0LAorCQluLUdBUAkJCQkJCQkJTi1HQVAJCQkJCQkJREVGQVVMVCBmNCwKKwkJbi1QQ0gJCQkJCQkJCU4tUENICQkJCQkJCURFRkFVTFQgMgorCX0sCisJdGRkNzY4CQkJCQkJCQkJU0VRVUVOQ0UgeworCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJCVRERDc2OC1QSUNILUNDb2RlCQkJCU9QVElPTkFMLAorCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgkJCQkJT1BUSU9OQUwsCisJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLAorCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtUElDSAkJCU9QVElPTkFMLAorCQlwYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQkJUGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJREVGQVVMVCBwaTQsCisJCW4tR0FQCQkJCQkJCQlOLUdBUAkJCQkJCQlERUZBVUxUIGY0LAorCQluLVBDSAkJCQkJCQkJTi1QQ0gJCQkJCQkJREVGQVVMVCAyCisJfQorfQorCitQSUNILUluZm8tTENSLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0CQkJCU9QVElPTkFMLAorCXBpY2hDaGFubmVsaXNhdGlvbkNvZGVMaXN0LUxDUi1yNAlQaWNoQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1MQ1ItcjQsCisJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0LAorCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1QSUNICQkJCU9QVElPTkFMLAorCXBhZ2luZ0luZGljYXRvckxlbmd0aAkJCQlQYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQlERUZBVUxUIHBpNCwKKwluLUdBUAkJCQkJCQkJTi1HQVAJCQkJCQkJREVGQVVMVCBmNCwKKwluLVBDSAkJCQkJCQkJTi1QQ0gJCQkJCQkJREVGQVVMVCAyCit9CisKK1BJQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCUlOVEVHRVIgKC0xMC4uNSkKKworUGlsb3RCaXRzMTI4IDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGI0LCBwYjggfQorCitQaWxvdEJpdHMyNTYgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwYjIsIHBiNCwgcGI4IH0KKworCS0tIEFjdHVhbCBtZWFzdXJlbWVudCBwb3dlciBvZmZzZXQgdmFsdWUgPSBJRSB2YWx1ZSAqIDAuNQorTWVhc3VyZW1lbnRQb3dlck9mZnNldCA6Oj0JCQlJTlRFR0VSICgtMTIuLjI2KQorCitQTENDSC1JbmZvCQk6Oj0JCQkJCVNFUVVFTkNFIHsKKwlwbGNjaFNlcXVlbmNlTnVtYmVyCQkJCUlOVEVHRVIoMS4uMTcpLAorCXRpbWVzbG90TnVtYmVyCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQsCisJY2hhbm5lbGlzYXRpb25Db2RlCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwl0cGNDb21tYW5kVGFyZ2V0UmF0ZQkJCVRQQy1Db21tYW5kVGFyZ2V0UmF0ZQorfQorCitQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlmaXhlZCwKKwkJCQkJCQkJCQlmbGV4aWJsZSB9CisKK1Bvd2VyQ29udHJvbEFsZ29yaXRobSA6Oj0JCQlDSE9JQ0UgeworCWFsZ29yaXRobTEJCQkJCQkJVFBDLVN0ZXBTaXplRkRELAorCWFsZ29yaXRobTIJCQkJCQkJTlVMTAorfQorCitQb3dlck9mZnNldFBpbG90LXBkcGRjaCA6Oj0JCQlJTlRFR0VSICgwLi4yNCkKKworUG93ZXJPZmZzZXRUUEMtcGRwZGNoIDo6PQkJCUlOVEVHRVIgKDAuLjI0KQorCitQb3dlclJhbXBTdGVwIDo6PQkJCQkJSU5URUdFUiAoMS4uOCkKKworUFJBQ0gtQ2hhbkNvZGVzLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4uNCkpIE9GCisJCQkJCQkJCQkJVERELVBSQUNILUNDb2RlLUxDUi1yNAorCitQUkFDSC1EZWZpbml0aW9uLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItUFJBQ0gtTENSLXI0LAorCXByYWNoLUNoYW5Db2Rlcy1MQ1IJCQkJCVBSQUNILUNoYW5Db2Rlcy1MQ1ItcjQsCisJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0LAorCWZwYWNoLUluZm8JCQkJCQkJRlBBQ0gtSW5mby1yNAorfQorCitQUkFDSC1NaWRhbWJsZSA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWRpcmVjdCwKKwkJCQkJCQkJCQlkaXJlY3QtSW52ZXJ0ZWQgfQorCitQUkFDSC1QYXJ0aXRpb25pbmcgOjo9CQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCisJLS0gVEFCVUxBUjogSWYgb25seSAiTnVtQVNDKzEiICh3aXRoLCBOdW1BU0MrMSA8IG1heEFTQykgQVNDU2V0dGluZy1GREQgYXJlIGxpc3RlZCwgCisJLS0gdGhlIHJlbWFpbmluZyAoTnVtQVNDKzIgdGhyb3VnaCBtYXhBU0MpIEFTQ3MgYXJlIHVuc3BlY2lmaWVkLgorCQkJCQkJCQkJCQlBU0NTZXR0aW5nLUZERCwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QVNDKSkgT0YKKwktLSBUQUJVTEFSOiBJZiBvbmx5ICJOdW1BU0MrMSIgKHdpdGgsIE51bUFTQysxIDwgbWF4QVNDKSBBU0NTZXR0aW5nLVRERCBhcmUgbGlzdGVkLCAKKwktLSB0aGUgcmVtYWluaW5nIChOdW1BU0MrMiB0aHJvdWdoIG1heEFTQykgQVNDcyBhcmUgdW5zcGVjaWZpZWQuCisJCQkJCQkJCQkJCUFTQ1NldHRpbmctVERECit9CQorCitQUkFDSC1QYXJ0aXRpb25pbmctcjcgOjo9CQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QVNDKSkgT0YKKwktLSBUQUJVTEFSOiBJZiBvbmx5ICJOdW1BU0MrMSIgKHdpdGgsIE51bUFTQysxIDwgbWF4QVNDKSBBU0NTZXR0aW5nLUZERCBhcmUgbGlzdGVkLAorCS0tIHRoZSByZW1haW5pbmcgKE51bUFTQysyIHRocm91Z2ggbWF4QVNDKSBBU0NzIGFyZSB1bnNwZWNpZmllZC4KKwkJCQkJCQkJCQkJQVNDU2V0dGluZy1GREQsCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCisJLS0gVEFCVUxBUjogSWYgb25seSAiTnVtQVNDKzEiICh3aXRoLCBOdW1BU0MrMSA8IG1heEFTQykgQVNDU2V0dGluZy1UREQgYXJlIGxpc3RlZCwKKwktLSB0aGUgcmVtYWluaW5nIChOdW1BU0MrMiB0aHJvdWdoIG1heEFTQykgQVNDcyBhcmUgdW5zcGVjaWZpZWQuCisJCQkJCQkJCQkJCUFTQ1NldHRpbmctVERELXI3Cit9CisKK1BSQUNILVBhcnRpdGlvbmluZy1MQ1ItcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QVNDKSkgT0YKKwktLSBUQUJVTEFSOiBJZiBvbmx5ICJOdW1BU0MrMSIgKHdpdGgsIE51bUFTQysxIDwgbWF4QVNDKSBBU0NTZXR0aW5nLVRERC1MQ1ItcjQgYXJlIGxpc3RlZCwgCisJLS0gdGhlIHJlbWFpbmluZyAoTnVtQVNDKzIgdGhyb3VnaCBtYXhBU0MpIEFTQ3MgYXJlIHVuc3BlY2lmaWVkLgorCQkJCQkJCQkJCQlBU0NTZXR0aW5nLVRERC1MQ1ItcjQKKworUFJBQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCVNFUVVFTkNFIHsKKwlwb3dlclJhbXBTdGVwCQkJCQkJUG93ZXJSYW1wU3RlcCwKKwlwcmVhbWJsZVJldHJhbnNNYXgJCQkJCVByZWFtYmxlUmV0cmFuc01heAorfQorCitQUkFDSC1SQUNILUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJYXZhaWxhYmxlU2lnbmF0dXJlcwkJCQkJQXZhaWxhYmxlU2lnbmF0dXJlcywKKwkJCWF2YWlsYWJsZVNGCQkJCQkJCVNGLVBSQUNILAorCQkJcHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIJUHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIsCisJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQsCisJCQlhdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycwkJCUF2YWlsYWJsZVN1YkNoYW5uZWxOdW1iZXJzCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlUREQtUFJBQ0gtQ0NvZGVMaXN0LAorCQkJcHJhY2gtTWlkYW1ibGUJCQkJCQlQUkFDSC1NaWRhbWJsZQorCQl9CisJfQorfQorCitQUkFDSC1SQUNILUluZm8tcjcgOjo9CQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlhdmFpbGFibGVTaWduYXR1cmVzCQkJCQlBdmFpbGFibGVTaWduYXR1cmVzLAorCQkJYXZhaWxhYmxlU0YJCQkJCQkJU0YtUFJBQ0gsCisJCQlwcmVhbWJsZVNjcmFtYmxpbmdDb2RlV29yZE51bWJlcglQcmVhbWJsZVNjcmFtYmxpbmdDb2RlV29yZE51bWJlciwKKwkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdCwKKwkJCWF2YWlsYWJsZVN1YkNoYW5uZWxOdW1iZXJzCQkJQXZhaWxhYmxlU3ViQ2hhbm5lbE51bWJlcnMKKwkJfSwKKwkJdGRkMzg0CQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJCQljaGFubmVsaXNhdGlvbkNvZGVMaXN0CQkJCVRERC1QUkFDSC1DQ29kZUxpc3QsCisJCQlwcmFjaC1NaWRhbWJsZQkJCQkJCVBSQUNILU1pZGFtYmxlCisJCX0sCisJCXRkZDc2OAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlUREQ3NjgtUFJBQ0gtQ0NvZGVMaXN0LAorCQkJcHJhY2gtTWlkYW1ibGUJCQkJCQlQUkFDSC1NaWRhbWJsZQorCQl9CisJfQorfQorCitQUkFDSC1SQUNILUluZm8tTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlzeW5jLVVMLUluZm8JCQkJCQlTWU5DLVVMLUluZm8tcjQsCisJcHJhY2gtRGVmaW5pdGlvbkxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNILUZQQUNIKSkgT0YKKwkJCQkJCQkJCQkJUFJBQ0gtRGVmaW5pdGlvbi1MQ1ItcjQKK30KKworUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXByYWNoLVJBQ0gtSW5mbwkJCQkJCVBSQUNILVJBQ0gtSW5mbywKKwl0cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJcmFjaC1UcmFuc3BvcnRGb3JtYXRTZXQJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKKwlyYWNoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwsCisJcHJhY2gtUGFydGl0aW9uaW5nCQkJCQlQUkFDSC1QYXJ0aXRpb25pbmcJCQkJCU9QVElPTkFMLAorCXBlcnNpc3RlbmNlU2NhbGluZ0ZhY3Rvckxpc3QJCVBlcnNpc3RlbmNlU2NhbGluZ0ZhY3Rvckxpc3QJCU9QVElPTkFMLAorCWFjLVRvLUFTQy1NYXBwaW5nVGFibGUJCQkJQUMtVG8tQVNDLU1hcHBpbmdUYWJsZQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKKwkJCWNvbnN0YW50VmFsdWUJCQkJCQlDb25zdGFudFZhbHVlCQkJCU9QVElPTkFMLAorCQkJcHJhY2gtUG93ZXJPZmZzZXQJCQkJCVBSQUNILVBvd2VyT2Zmc2V0CQkJT1BUSU9OQUwsCisJCQlyYWNoLVRyYW5zbWlzc2lvblBhcmFtZXRlcnMJCQlSQUNILVRyYW5zbWlzc2lvblBhcmFtZXRlcnMJT1BUSU9OQUwsCisJCQlhaWNoLUluZm8JCQkJCQkJQUlDSC1JbmZvCQkJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlOVUxMCisJfQkKK30KKworUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb24tcjcgOjo9CQlTRVFVRU5DRSB7CisJcHJhY2gtUkFDSC1JbmZvCQkJCQkJUFJBQ0gtUkFDSC1JbmZvLXI3LAorCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwlyYWNoLVRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAorCXJhY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKKwlwcmFjaC1QYXJ0aXRpb25pbmcJCQkJCVBSQUNILVBhcnRpdGlvbmluZy1yNwkJCQlPUFRJT05BTCwKKwlwZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0CQlQZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0CQlPUFRJT05BTCwKKwlhYy1Uby1BU0MtTWFwcGluZ1RhYmxlCQkJCUFDLVRvLUFTQy1NYXBwaW5nVGFibGUJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQljb25zdGFudFZhbHVlCQkJCQkJQ29uc3RhbnRWYWx1ZQkJCQlPUFRJT05BTCwKKwkJCXByYWNoLVBvd2VyT2Zmc2V0CQkJCQlQUkFDSC1Qb3dlck9mZnNldAkJCU9QVElPTkFMLAorCQkJcmFjaC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzCQkJUkFDSC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzCU9QVElPTkFMLAorCQkJYWljaC1JbmZvCQkJCQkJCUFJQ0gtSW5mbwkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJTlVMTAorCX0KK30KKworUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb24tTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJcHJhY2gtUkFDSC1JbmZvLUxDUgkJCQkJUFJBQ0gtUkFDSC1JbmZvLUxDUi1yNCwKKwlyYWNoLVRyYW5zcG9ydEZvcm1hdFNldC1MQ1IJCQlUcmFuc3BvcnRGb3JtYXRTZXQtTENSCQkJT1BUSU9OQUwsCisJcHJhY2gtUGFydGl0aW9uaW5nLUxDUgkJCQlQUkFDSC1QYXJ0aXRpb25pbmctTENSLXI0CQlPUFRJT05BTAorfQorCitQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UFJBQ0gpKSBPRgorCQkJCQkJCQkJCVBSQUNILVN5c3RlbUluZm9ybWF0aW9uCisKK1BSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNyA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKKwkJCQkJCQkJCQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbi1yNworCitQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UFJBQ0gpKSBPRgorCQkJCQkJCQkJCQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbi1MQ1ItcjQKKworUHJlYW1ibGVSZXRyYW5zTWF4IDo6PQkJCQlJTlRFR0VSICgxLi42NCkKKworUHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIgOjo9CUlOVEVHRVIgKDAuLjE1KQorCitQcmVEZWZQaHlDaENvbmZpZ3VyYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJdWwtRFBDSC1JbmZvUHJlZGVmCQkJCQlVTC1EUENILUluZm9QcmVkZWYsCisJZGwtQ29tbW9uSW5mb3JtYXRpb25QcmVkZWYJCQlETC1Db21tb25JbmZvcm1hdGlvblByZWRlZglPUFRJT05BTAorfQorCitQcmltYXJ5Q0NQQ0gtSW5mbyA6Oj0JCQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIHN5bmNDYXNlIHNob3VsZCBiZSBpZ25vcmVkIGZvciAxLjI4TWNwcyBUREQgbW9kZQorCQlzeW5jQ2FzZSAJCQkJCQkJQ0hPSUNFIHsKKwkJCXN5bmNDYXNlMQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCQorCQkJfSwKKwkJCXN5bmNDYXNlMgkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdGltZXNsb3RTeW5jMgkJCQkJCVRpbWVzbG90U3luYzIKKwkJCX0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQJCQkJT1BUSU9OQUwsCisJCXNjdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCX0KK30KKworUHJpbWFyeUNDUENILUluZm8tcjQgOjo9CQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJc3luY0Nhc2UgCQkJCQkJCUNIT0lDRSB7CisJCQkJCXN5bmNDYXNlMQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlcgorCQkJCQl9LAorCQkJCQlzeW5jQ2FzZTIJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdGltZXNsb3RTeW5jMgkJCQkJCVRpbWVzbG90U3luYzIKKwkJCQkJfQorCQkJCX0JCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCQkJfQorCQl9LAorCQljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lECQkJCU9QVElPTkFMLAorCQlzY3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwl9Cit9CisKK1ByaW1hcnlDQ1BDSC1JbmZvLXI3IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXN5bmNDYXNlIAkJCQkJCQlDSE9JQ0UgeworCQkJCQlzeW5jQ2FzZTEJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJCQkJfSwKKwkJCQkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRpbWVzbG90U3luYzIJCQkJCQlUaW1lc2xvdFN5bmMyCisJCQkJCX0KKwkJCQl9CQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQ3NjggCQkJCQkJU0VRVUVOQ0UgeworCQkJCXN5bmNDYXNlIAkJCQkJCUNIT0lDRSB7CisJCQkJCXN5bmNDYXNlMQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRpbWVzbG90CQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJCQkJfSwKKwkJCQkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRpbWVzbG90U3luYzIJCQkJCQlUaW1lc2xvdFN5bmMyCisJCQkJCX0KKwkJCQl9CQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJCX0KKwkJfSwKKwkJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRAkJCQlPUFRJT05BTCwKKwkJc2N0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJfQorfQorCitQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOLAorCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQJCQkJT1BUSU9OQUwsCisJc2N0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCit9CisKKy0tIEZvciAxLjI4TWNwcyBUREQsIHRoZSBmb2xsb3dpbmcgSUUgaW5jbHVkZXMgZWxlbWVudHMgZm9yIHRoZSBQQ0NQQ0ggSW5mbyBhZGRpdGlvbmFsIHRvIHRob3NlCistLSBpbiBQcmltYXJ5Q0NQQ0gtSW5mbworUHJpbWFyeUNDUENILUluZm8tTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgeworCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorfQorCitQcmltYXJ5Q0NQQ0gtSW5mb1Bvc3QgOjo9CQkJU0VRVUVOQ0UgeworCXN5bmNDYXNlIAkJCQkJCQlDSE9JQ0UgeworCQlzeW5jQ2FzZTEJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCQorCQl9LAorCQlzeW5jQ2FzZTIJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3RTeW5jMgkJCQkJCVRpbWVzbG90U3luYzIKKwkJfQorCX0sCisJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRCwKKwlzY3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KK30KKworUHJpbWFyeUNDUENILUluZm9Qb3N0VERELUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTiwKKwljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lELAorCXNjdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorfQorCitQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIgOjo9CQkJSU5URUdFUiAoNi4uNDMpCisKK1ByaW1hcnlDUElDSC1JbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJcHJpbWFyeVNjcmFtYmxpbmdDb2RlCQkJCVByaW1hcnlTY3JhbWJsaW5nQ29kZQorfQorCitQcmltYXJ5Q1BJQ0gtVFgtUG93ZXIgOjo9CQkJSU5URUdFUiAoLTEwLi41MCkKKworUHJpbWFyeVNjcmFtYmxpbmdDb2RlIDo6PQkJCUlOVEVHRVIgKDAuLjUxMSkKKworUHVuY3R1cmluZ0xpbWl0IDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGwwLTQwLCBwbDAtNDQsIHBsMC00OCwgcGwwLTUyLCBwbDAtNTYsCisJCQkJCQkJCQkJcGwwLTYwLCBwbDAtNjQsIHBsMC02OCwgcGwwLTcyLCBwbDAtNzYsCisJCQkJCQkJCQkJcGwwLTgwLCBwbDAtODQsIHBsMC04OCwgcGwwLTkyLCBwbDAtOTYsIHBsMSB9CisKK1BVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8gOjo9CVNFUVVFTkNFIHsKKwlwdXNjaC1BbGxvY2F0aW9uCQkJCQlDSE9JQ0UgeworCQlwdXNjaC1BbGxvY2F0aW9uUGVuZGluZwkJCQlOVUxMLAorCQlwdXNjaC1BbGxvY2F0aW9uQXNzaWdubWVudAkJCVNFUVVFTkNFIHsKKwkJCXB1c2NoLUFsbG9jYXRpb25QZXJpb2RJbmZvCQkJQWxsb2NhdGlvblBlcmlvZEluZm8sCisJCQlwdXNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVVMLVRhcmdldFNJUgkJCQlPUFRJT05BTCwKKwkJCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgeworCQkJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCURFRkFVTFQgMSwKKwkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQorCQkJCX0sCisJCQkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKKwkJCQkJcHVzY2gtSW5mbwkJCQkJCQlQVVNDSC1JbmZvLAorCQkJCQlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5CQlPUFRJT05BTAorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNCA6Oj0JU0VRVUVOQ0UgeworCXB1c2NoLUFsbG9jYXRpb24JCQkJCUNIT0lDRSB7CisJCXB1c2NoLUFsbG9jYXRpb25QZW5kaW5nCQkJCU5VTEwsCisJCXB1c2NoLUFsbG9jYXRpb25Bc3NpZ25tZW50CQkJU0VRVUVOQ0UgeworCQkJcHVzY2gtQWxsb2NhdGlvblBlcmlvZEluZm8JCQlBbGxvY2F0aW9uUGVyaW9kSW5mbywKKwkJCXB1c2NoLVBvd2VyQ29udHJvbEluZm8JCQkJUFVTQ0gtUG93ZXJDb250cm9sSW5mby1yNAlPUFRJT05BTCwKKwkJCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgeworCQkJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCURFRkFVTFQgMSwKKwkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQorCQkJCX0sCisJCQkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKKwkJCQkJcHVzY2gtSW5mbwkJCQkJCQlQVVNDSC1JbmZvLXI0LAorCQkJCQlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5CQlPUFRJT05BTAorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNyA6Oj0JU0VRVUVOQ0UgeworCXB1c2NoLUFsbG9jYXRpb24JCQkJCUNIT0lDRSB7CisJCXB1c2NoLUFsbG9jYXRpb25QZW5kaW5nCQkJCU5VTEwsCisJCXB1c2NoLUFsbG9jYXRpb25Bc3NpZ25tZW50CQkJU0VRVUVOQ0UgeworCQkJcHVzY2gtQWxsb2NhdGlvblBlcmlvZEluZm8JCQlBbGxvY2F0aW9uUGVyaW9kSW5mbywKKwkJCXB1c2NoLVBvd2VyQ29udHJvbEluZm8JCQkJUFVTQ0gtUG93ZXJDb250cm9sSW5mby1yNwlPUFRJT05BTCwKKwkJCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgeworCQkJCW9sZC1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCURFRkFVTFQgMSwKKwkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQorCQkJCX0sCisJCQkJbmV3LUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKKwkJCQkJcHVzY2gtSW5mbwkJCQkJCQlQVVNDSC1JbmZvLVZIQ1IsCisJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkJCU9QVElPTkFMCisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitQVVNDSC1JZGVudGl0eSA6Oj0JCQkJCUlOVEVHRVIgKDEuLmhpUFVTQ0hpZGVudGl0aWVzKQorCitQVVNDSC1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJcHVzY2gtVGltZXNsb3RzQ29kZXMJCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMJCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHVzY2gtVGltZXNsb3RzQ29kZXMJCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMJCU9QVElPTkFMCisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHVzY2gtVGltZXNsb3RzQ29kZXMJCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMtTENSLXI0CU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1BVU0NILUluZm8tVkhDUiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJcHVzY2gtVGltZXNsb3RzQ29kZXMtVkhDUgkJCVVwbGlua1RpbWVzbG90c0NvZGVzLVZIQ1IJCQlPUFRJT05BTAorfQorCitQVVNDSC1JbmZvLUxDUi1yNCA6Oj0JCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXB1c2NoLVRpbWVzbG90c0NvZGVzCQkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAkJCU9QVElPTkFMCit9CisKK1BVU0NILVBvd2VyQ29udHJvbEluZm8tcjQgOjo9CQlTRVFVRU5DRSB7CisJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtUFVTQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCS0tIEFjdHVhbCB2YWx1ZSBQUlgtUFVTQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCisJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCU5VTEwsCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1BVU0NILVBvd2VyQ29udHJvbEluZm8tcjcgOjo9CQlTRVFVRU5DRSB7CisJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtUFVTQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCS0tIEFjdHVhbCB2YWx1ZSBQUlgtUFVTQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCisJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCU5VTEwsCisJCXRkZDc2OAkJCQkJCQkJTlVMTCwKKwkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0cGMtU3RlcFNpemUJCQkJCQlUUEMtU3RlcFNpemVUREQJCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUFVTQ0gtU3lzSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5LAorCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mbywKKwl1c2NoLVRGUwkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAorCXVzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAorfQorCitQVVNDSC1TeXNJbmZvLVZIQ1IgOjo9CQkJCQlTRVFVRU5DRSB7CisJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eSwKKwlwdXNjaC1JbmZvLVZIQ1IJCQkJCQlQVVNDSC1JbmZvLVZIQ1IsCisJdXNjaC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlVU0NILVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCU9QVElPTkFMLAorCXVzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAorfQorCitQVVNDSC1TeXNJbmZvLUhDUi1yNSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5LAorCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mbywKKwl1c2NoLVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCVVTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJT1BUSU9OQUwsCisJdXNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCit9CisKK1BVU0NILVN5c0luZm8tTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5LAorCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mby1MQ1ItcjQsCisJdXNjaC1URlMJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKKwl1c2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtU3lzSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCisJCQkJCQkJCQkJUFVTQ0gtU3lzSW5mbworCitQVVNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YgUFVTQ0gtU3lzSW5mby1IQ1ItcjUKKworUFVTQ0gtU3lzSW5mb0xpc3QtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKKwkJCQkJCQkJCQlQVVNDSC1TeXNJbmZvLUxDUi1yNAorCitQVVNDSC1TeXNJbmZvTGlzdC1TRk4gOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcHVzY2gtU3lzSW5mbwkJCQkJCQlQVVNDSC1TeXNJbmZvLAorCXNmbi1UaW1lSW5mbwkJCQkJCQlTRk4tVGltZUluZm8JCQkJCU9QVElPTkFMCit9CisKK1BVU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcHVzY2gtU3lzSW5mbwkJCQkJCQlQVVNDSC1TeXNJbmZvLUhDUi1yNSwKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitQVVNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBVU0NIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcHVzY2gtU3lzSW5mbwkJCQkJCQlQVVNDSC1TeXNJbmZvLUxDUi1yNCwKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitQVVNDSC1TeXNJbmZvTGlzdC1TRk4tVkhDUiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXB1c2NoLVN5c0luZm8tVkhDUgkJCQkJCVBVU0NILVN5c0luZm8tVkhDUiwKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitSQUNILVRyYW5zbWlzc2lvblBhcmFtZXRlcnMgOjo9CQlTRVFVRU5DRSB7CisJbW1heAkJCQkJCQkJSU5URUdFUiAoMS4uMzIpLAorCW5iMDFNaW4JCQkJCQkJCU5CMDEsCisJbmIwMU1heAkJCQkJCQkJTkIwMQorfQorCitSZWR1Y2VkU2NyYW1ibGluZ0NvZGVOdW1iZXIgOjo9CQlJTlRFR0VSICgwLi44MTkxKQorCitSZXBldGl0aW9uUGVyaW9kQW5kTGVuZ3RoIDo6PQkJQ0hPSUNFIHsKKwlyZXBldGl0aW9uUGVyaW9kMQkJCQkJTlVMTCwKKwktLSByZXBldGl0aW9uUGVyaW9kMiBjb3VsZCBqdXN0IGFzIHdlbGwgYmUgTlVMTCBhbHNvLgorCXJlcGV0aXRpb25QZXJpb2QyCQkJCQlJTlRFR0VSICgxLi4xKSwKKwlyZXBldGl0aW9uUGVyaW9kNAkJCQkJSU5URUdFUiAoMS4uMyksCisJcmVwZXRpdGlvblBlcmlvZDgJCQkJCUlOVEVHRVIgKDEuLjcpLAorCXJlcGV0aXRpb25QZXJpb2QxNgkJCQkJSU5URUdFUiAoMS4uMTUpLAorCXJlcGV0aXRpb25QZXJpb2QzMgkJCQkJSU5URUdFUiAoMS4uMzEpLAorCXJlcGV0aXRpb25QZXJpb2Q2NAkJCQkJSU5URUdFUiAoMS4uNjMpCit9CisKK1JlcGV0aXRpb25QZXJpb2RMZW5ndGhBbmRPZmZzZXQgOjo9IENIT0lDRSB7CisJcmVwZXRpdGlvblBlcmlvZDEJCQkJCU5VTEwsCisJcmVwZXRpdGlvblBlcmlvZDIJCQkJCVNFUVVFTkNFIHsKKwkJbGVuZ3RoCQkJCQkJCQlOVUxMLAorCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjEpCisJfSwKKwlyZXBldGl0aW9uUGVyaW9kNAkJCQkJU0VRVUVOQ0UgeworCQlsZW5ndGgJCQkJCQkJCUlOVEVHRVIgKDEuLjMpLAorCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjMpCisJfSwKKwlyZXBldGl0aW9uUGVyaW9kOAkJCQkJU0VRVUVOQ0UgeworCQlsZW5ndGgJCQkJCQkJCUlOVEVHRVIgKDEuLjcpLAorCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjcpCisJfSwKKwlyZXBldGl0aW9uUGVyaW9kMTYJCQkJCVNFUVVFTkNFIHsKKwkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi4xNSksCisJCW9mZnNldAkJCQkJCQkJSU5URUdFUiAoMC4uMTUpCisJfSwKKwlyZXBldGl0aW9uUGVyaW9kMzIJCQkJCVNFUVVFTkNFIHsKKwkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi4zMSksCisJCW9mZnNldAkJCQkJCQkJSU5URUdFUiAoMC4uMzEpCisJfSwKKwlyZXBldGl0aW9uUGVyaW9kNjQJCQkJCVNFUVVFTkNFIHsKKwkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi42MyksCisJCW9mZnNldAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpCisJfQorfQorCitSZXBsYWNlZFBEU0NILUNvZGVJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwl0ZmNpLUZpZWxkMgkJCQkJCQlNYXhURkNJLUZpZWxkMlZhbHVlLAorCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNGLVBEU0NILAorCWNvZGVOdW1iZXIJCQkJCQkJQ29kZU51bWJlckRTQ0gsCisJbXVsdGlDb2RlSW5mbwkJCQkJCU11bHRpQ29kZUluZm8KK30KKworUmVwbGFjZWRQRFNDSC1Db2RlSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDSS0yLUNvbWJzKSkgT0YKKwkJCQkJCQkJCQlSZXBsYWNlZFBEU0NILUNvZGVJbmZvCisKK1JlcFBlckxlbmd0aE9mZnNldC1QSUNIIDo6PQkJCUNIT0lDRSB7CisJcnBwNC0yCQkJCQkJCQlJTlRFR0VSICgwLi4zKSwgCisJcnBwOC0yCQkJCQkJCQlJTlRFR0VSICgwLi43KSwgCisJcnBwOC00CQkJCQkJCQlJTlRFR0VSICgwLi43KSwKKwlycHAxNi0yCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksIAorCXJwcDE2LTQJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwgCisJcnBwMzItMgkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLCAKKwlycHAzMi00CQkJCQkJCQlJTlRFR0VSICgwLi4zMSksIAorCXJwcDY0LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwgCisJcnBwNjQtNAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpCit9CisKK1JlcFBlckxlbmd0aE9mZnNldC1NSUNIIDo6PQkJCUNIT0lDRSB7CisJcnBwNC0yCQkJCQkJCQlJTlRFR0VSICgwLi4zKSwKKwlycHA4LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjcpLAorCXJwcDgtNAkJCQkJCQkJSU5URUdFUiAoMC4uNyksCisJcnBwMTYtMgkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCXJwcDE2LTQJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwlycHAzMi0yCQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCisJcnBwMzItNAkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCXJwcDY0LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwlycHA2NC00CQkJCQkJCQlJTlRFR0VSICgwLi42MykKK30KKworUmVzdHJpY3RlZFRyQ0ggOjo9CQkJCQlTRVFVRU5DRSB7CisJZGwtcmVzdHJpY3RlZFRyQ2gtVHlwZQkJCQlETC1UckNILVR5cGUsCisJcmVzdHJpY3RlZERMLVRyQ0gtSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJYWxsb3dlZFRGSUxpc3QJCQkJCQlBbGxvd2VkVEZJLUxpc3QKK30KKworUmVzdHJpY3RlZFRyQ0gtSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJUmVzdHJpY3RlZFRyQ0gKKworUkwtQWRkaXRpb25JbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTCwKKwktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbgorCS0tIGFuZCB0aGUgSUVzIHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlCT09MRUFOLAorCWR1bW15MgkJCQkJCQkJU0NDUENILUluZm9Gb3JGQUNICQkJCQlPUFRJT05BTAorfQorCitSTC1BZGRpdGlvbkluZm9ybWF0aW9uLXI2IDo6PQkJU0VRVUVOQ0UgeworCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwljZWxsLUlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwlkbC1kcGNoSW5mbwkJCQkJCQlDSE9JQ0UgeworCQlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtcjUsCisJCWRsLUZEUENILUluZm9QZXJSTAkJCQkJREwtRkRQQ0gtSW5mb1BlclJMLXI2CisJfSwKKwllLUhJQ0gtSW5mb3JtYXRpb24JCQkJCUUtSElDSC1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwsCisJZS1SR0NILUluZm9ybWF0aW9uCQkJCQlFLVJHQ0gtSW5mb3JtYXRpb24JCQkJCU9QVElPTkFMCit9CisKK1JMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMLTEpKSBPRgorCQkJCQkJCQkJCVJMLUFkZGl0aW9uSW5mb3JtYXRpb24KKworUkwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTC0xKSkgT0YKKwkJCQkJCQkJCQlSTC1BZGRpdGlvbkluZm9ybWF0aW9uLXI2CisKK1JMLUlkZW50aWZpZXJMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCisKK1JMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCisKK1JQUCA6Oj0JCQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1vZGUwLCBtb2RlMSB9CisKK1MtRmllbGQgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWUxYml0LCBlMmJpdHMgfQorCitTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAorCQkJCQkJCQkJCWNjMTYtNSwgY2MxNi02LCBjYzE2LTcsIGNjMTYtOCwKKwkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCisJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CisKK1NDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUiA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MzMi0xLCBjYzMyLTIsIGNjMzItMywgY2MzMi00LAorCQkJCQkJCQkJCWNjMzItNSwgY2MzMi02LCBjYzMyLTcsIGNjMzItOCwKKwkJCQkJCQkJCQljYzMyLTksIGNjMzItMTAsIGNjMzItMTEsIGNjMzItMTIsCisJCQkJCQkJCQkJY2MzMi0xMywgY2MzMi0xNCwgY2MzMi0xNSwgY2MzMi0xNiwKKwkJCQkJCQkJCQljYzMyLTE3LCBjYzMyLTE4LCBjYzMyLTE5LCBjYzMyLTIwLAorCQkJCQkJCQkJCWNjMzItMjEsIGNjMzItMjIsIGNjMzItMjMsIGNjMzItMjQsCisJCQkJCQkJCQkJY2MzMi0yNSwgY2MzMi0yNiwgY2MzMi0yNywgY2MzMi0yOCwKKwkJCQkJCQkJCQljYzMyLTI5LCBjYzMyLTMwLCBjYzMyLTMxLCBjYzMyLTMyIH0KKworU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi4xNikpIE9GCisJCQkJCQkJCQkJU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZQorCitTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1WSENSIDo6PSBTRVFVRU5DRSAoU0laRSAoMS4uMzIpKSBPRgorCQkJCQkJCQkJCVNDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUgorCitTQ0NQQ0gtSW5mb0ZvckZBQ0ggOjo9CQkJCVNFUVVFTkNFIHsKKwlzZWNvbmRhcnlDQ1BDSC1JbmZvCQkJCQlTZWNvbmRhcnlDQ1BDSC1JbmZvLAorCXRmY3MJCQkJCQkJCVRGQ1MsCisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWZhY2gtUENILUluZm9ybWF0aW9uTGlzdAkJCUZBQ0gtUENILUluZm9ybWF0aW9uTGlzdCwKKwkJCXNpYi1SZWZlcmVuY2VMaXN0RkFDSAkJCQlTSUItUmVmZXJlbmNlTGlzdEZBQ0gKKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QKKwkJfQorCX0KK30KKworU0NDUENILUluZm9Gb3JGQUNILXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJc2Vjb25kYXJ5Q0NQQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q0NQQ0gtSW5mby1yNCwKKwl0ZmNzCQkJCQkJCQlURkNTLAorCWZhY2gtUENILUluZm9ybWF0aW9uTGlzdAkJCUZBQ0gtUENILUluZm9ybWF0aW9uTGlzdCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2liLVJlZmVyZW5jZUxpc3RGQUNICQkJU0lCLVJlZmVyZW5jZUxpc3RGQUNICisJCX0sCisJCXRkZAkJCQkJCQkJTlVMTAorCX0KK30KKworU0NDUENILVN5c3RlbUluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCXNlY29uZGFyeUNDUENILUluZm8JCQkJCVNlY29uZGFyeUNDUENILUluZm8sCisJdGZjcwkJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwsCisJZmFjaC1QQ0gtSW5mb3JtYXRpb25MaXN0CQkJRkFDSC1QQ0gtSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCisJcGljaC1JbmZvCQkJCQkJCVBJQ0gtSW5mbwkJCQkJCQlPUFRJT05BTAorfQorCitTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgeworCXNlY29uZGFyeUNDUENILUxDUi1FeHRlbnNpb25zCVNlY29uZGFyeUNDUENILUluZm8tTENSLXI0LWV4dCwKKwktLSBwaWNoLUluZm8gaW4gdGhlIFNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbiBJRSBzaGFsbCBiZSBhYnNlbnQsCisJLS0gYW5kIGluc3RlYWQgdGhlIGZvbGxvd2luZyB1c2VkLgorCXBpY2gtSW5mbwkJCQkJCVBJQ0gtSW5mby1MQ1ItcjQJCQkJCQlPUFRJT05BTAorfQorCitTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tcjcgOjo9CQlTRVFVRU5DRSB7CisJc2Vjb25kYXJ5Q0NQQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q0NQQ0gtSW5mby1yNywKKwl0ZmNzCQkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKKwlmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwlwaWNoLUluZm8JCQkJCQkJUElDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwKK30KKworU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNDQ1BDSCkpIE9GCisJCQkJCQkJCQkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uCisKK1NDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgorCQkJCQkJCQkJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1yNworCistLSBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNC1leHQgaW5jbHVkZXMgZWxlbWVudHMgYWRkaXRpb25hbCB0byB0aG9zZSBpbgorLS0gU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdCBmb3IgdGhlIDEuMjhNY3BzIFRERC4gVGhlIG9yZGVyIG9mIHRoZSBJRXMKKy0tIGluZGljYXRlcyB3aGljaCBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTENSLXI0LWV4dCBJRSBleHRlbmRzIHdoaWNoCistLSBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24gSUUuCitTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgorCQkJCQkJCQkJCQkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLUxDUi1yNC1leHQKKworLS0gVGhlIFNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI2IGlzIHVzZWQgZm9yIGFuIFMtQ0NQQ0ggZGVkaWNhdGVkIGZvciBNQk1TIHB1cnBvc2VzLgorU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLU1CTVMtcjYgOjo9IFNFUVVFTkNFIHsKKwlzZWNvbmRhcnlDQ1BDSEluZm8tTUJNUwkJCQlTZWNvbmRhcnlDQ1BDSEluZm8tTUJNUy1yNiwKKwl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvblNldAkJVEZDUywKKwlmYWNoQ2FycnlpbmdNQ0NICQkJCQlTRVFVRU5DRSB7CisJCW1jY2gtdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKKwkJbWNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1DQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYKKwl9LAorCWZhY2hDYXJyeWluZ01UQ0gtTGlzdAkJCQlNQk1TLUZBQ0hDYXJyeWluZ01UQ0gtTGlzdAkJCU9QVElPTkFMLAorCS0tIElmIHNjaGVkdWxpbmdJbmZvcm1hdGlvbiBpcyBwcm92aWRlZAorCWZhY2hDYXJyeWluZ01TQ0gJCQkJCVNFUVVFTkNFIHsKKwkJbXNjaC10cmFuc3BvcnRGb3JtYXRTZXQJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAorCQltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgorCX0JCU9QVElPTkFMCit9CisKKy0tIFRoZSBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNyBpcyB1c2VkIGZvciBhbiBTLUNDUENIIGRlZGljYXRlZCBmb3IgTUJNUyBwdXJwb3Nlcy4KK1NDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI3IDo6PSBTRVFVRU5DRSB7CisJc2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMJCQkJU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjcsCisJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25TZXQJCVRGQ1MsCisJZmFjaENhcnJ5aW5nTUNDSAkJCQkJU0VRVUVOQ0UgeworCQltY2NoLXRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJCW1jY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NQ0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CisJfSwKKwlmYWNoQ2FycnlpbmdNVENILUxpc3QJCQkJTUJNUy1GQUNIQ2FycnlpbmdNVENILUxpc3QJCQlPUFRJT05BTCwKKwktLSBJZiBzY2hlZHVsaW5nSW5mb3JtYXRpb24gaXMgcHJvdmlkZWQKKwlmYWNoQ2FycnlpbmdNU0NICQkJCQlTRVFVRU5DRSB7CisJCW1zY2gtdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKKwkJbXNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYKKwl9CQlPUFRJT05BTAorfQorCitTY3JhbWJsaW5nQ29kZUNoYW5nZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljb2RlQ2hhbmdlLCBub0NvZGVDaGFuZ2UgfQorCitTY3JhbWJsaW5nQ29kZVR5cGUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNob3J0U0MsCisJCQkJCQkJCQkJbG9uZ1NDIH0KKworU2Vjb25kYXJ5Q0NQQ0gtSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBkdW1teTEgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15MQkJCQkJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAorCQkJLS0gZHVtbXkyIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gIEl0IHNob3VsZCBub3QKKwkJCS0tIGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkyCQkJCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCisJCQlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKKwkJCXBpbG90U3ltYm9sRXhpc3RlbmNlCQkJQk9PTEVBTiwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQlCT09MRUFOLAorCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRpbWluZ09mZnNldAkJCQkJVGltaW5nT2Zmc2V0CQkJCQlERUZBVUxUIDAKKwkJfSwKKwkJdGRkIAkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBUQUJVTEFSOiB0aGUgb2Zmc2V0IGlzIGluY2x1ZGVkIGluIENvbW1vblRpbWVzbG90SW5mb1NDQ1BDSAorCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCUNvbW1vblRpbWVzbG90SW5mb1NDQ1BDSCwKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCVNDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CisJCX0KKwl9Cit9CisKK1NlY29uZGFyeUNDUENILUluZm8tcjQgOjo9CQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlPUFRJT05BTCwKKwkJCXN0dGQtSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCQkJc2YtQW5kQ29kZU51bWJlcgkJCQlTRjI1Ni1BbmRDb2RlTnVtYmVyLAorCQkJcGlsb3RTeW1ib2xFeGlzdGVuY2UJCQlCT09MRUFOLAorCQkJdGZjaS1FeGlzdGVuY2UJCQkJCUJPT0xFQU4sCisJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCVBvc2l0aW9uRml4ZWRPckZsZXhpYmxlLAorCQkJdGltaW5nT2Zmc2V0CQkJCQlUaW1pbmdPZmZzZXQJCQkJCURFRkFVTFQgMAorCQl9LAorCQl0ZGQgCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFRBQlVMQVI6IHRoZSBvZmZzZXQgaXMgaW5jbHVkZWQgaW4gQ29tbW9uVGltZXNsb3RJbmZvU0NDUENICisJCQljb21tb25UaW1lc2xvdEluZm8JCQkJQ29tbW9uVGltZXNsb3RJbmZvU0NDUENILAorCQkJdGRkT3B0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mbworCQkJCX0sCisJCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0CisJCQkJfQorCQkJfSwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAorCQl9CisJfQorfQorCitTZWNvbmRhcnlDQ1BDSC1JbmZvLXI3IDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKKwkJCXBpbG90U3ltYm9sRXhpc3RlbmNlCQkJQk9PTEVBTiwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQlCT09MRUFOLAorCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRpbWluZ09mZnNldAkJCQkJVGltaW5nT2Zmc2V0CQkJCQlERUZBVUxUIDAKKwkJfSwKKwkJdGRkIAkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBUQUJVTEFSOiB0aGUgb2Zmc2V0IGlzIGluY2x1ZGVkIGluIENvbW1vblRpbWVzbG90SW5mb1NDQ1BDSAorCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCUNvbW1vblRpbWVzbG90SW5mb1NDQ1BDSCwKKwkJCXRkZE9wdGlvbgkJCQkJCUNIT0lDRSB7CisJCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8sCisJCQkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAorCQkJCX0sCisJCQkJdGRkNzY4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tVkhDUiwKKwkJCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCVNDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LVZIQ1IKKwkJCQl9LAorCQkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCwKKwkJCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCVNDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitTZWNvbmRhcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwlpbmRpdmlkdWFsVGltZXNsb3RMQ1ItRXh0CQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQtZXh0Cit9CisKK1NlY29uZGFyeUNDUENISW5mby1NQk1TLXI2IDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKKwkJCXRpbWluZ09mZnNldAkJCQkJVGltaW5nT2Zmc2V0CQkJCQlERUZBVUxUIDAKKwkJfSwKKwkJdGRkMzg0CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMsCisJCXRkZDEyOAkJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAorCX0KK30KKworU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjcgOjo9CQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlPUFRJT05BTCwKKwkJCXN0dGQtSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCQkJc2YtQW5kQ29kZU51bWJlcgkJCQlTRjI1Ni1BbmRDb2RlTnVtYmVyLAorCQkJdGltaW5nT2Zmc2V0CQkJCQlUaW1pbmdPZmZzZXQJCQkJCURFRkFVTFQgMAorCQl9LAorCQl0ZGQzODQJCQkJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcywKKwkJdGRkNzY4CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtVkhDUiwKKwkJdGRkMTI4CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0CisJfQorfQorCitTZWNvbmRhcnlDUElDSC1JbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJc2Vjb25kYXJ5REwtU2NyYW1ibGluZ0NvZGUJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCQlPUFRJT05BTCwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCUNoYW5uZWxpc2F0aW9uQ29kZTI1NgorfQorCitTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZSA6Oj0JCQlJTlRFR0VSICgxLi4xNSkKKworU2Vjb25kSW50ZXJsZWF2aW5nTW9kZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlmcmFtZVJlbGF0ZWQsIHRpbWVzbG90UmVsYXRlZCB9CisKKy0tIFNGMjU2LUFuZENvZGVOdW1iZXIgZW5jb2RlcyBib3RoICJTcHJlYWRpbmcgZmFjdG9yIiBhbmQgIkNvZGUgTnVtYmVyIgorU0YyNTYtQW5kQ29kZU51bWJlciA6Oj0JCQkJQ0hPSUNFIHsKKwlzZjQJCQkJCQkJCQlJTlRFR0VSICgwLi4zKSwKKwlzZjgJCQkJCQkJCQlJTlRFR0VSICgwLi43KSwKKwlzZjE2CQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJc2YzMgkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCXNmNjQJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwlzZjEyOAkJCQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKKwlzZjI1NgkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KQorfQorCistLSBTRjUxMi1BbmRDb2RlTnVtYmVyIGVuY29kZXMgYm90aCAiU3ByZWFkaW5nIGZhY3RvciIgYW5kICJDb2RlIE51bWJlciIKK1NGNTEyLUFuZENvZGVOdW1iZXIgOjo9CQkJCUNIT0lDRSB7CisJc2Y0CQkJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJc2Y4CQkJCQkJCQkJSU5URUdFUiAoMC4uNyksCisJc2YxNgkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCXNmMzIJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKKwlzZjY0CQkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJc2YxMjgJCQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCisJc2YyNTYJCQkJCQkJCUlOVEVHRVIgKDAuLjI1NSksCisJc2Y1MTIJCQkJCQkJCUlOVEVHRVIgKDAuLjUxMSkKK30KKworLS0gU0Y1MTItQW5kUGlsb3QgZW5jb2RlcyBib3RoICJTcHJlYWRpbmcgZmFjdG9yIiBhbmQgIk51bWJlciBvZiBiaXRzIGZvciBQaWxvdCBiaXRzIgorU0Y1MTItQW5kUGlsb3QgOjo9CQkJCQlDSE9JQ0UgeworCXNmZDQJCQkJCQkJCU5VTEwsIAorCXNmZDgJCQkJCQkJCU5VTEwsIAorCXNmZDE2CQkJCQkJCQlOVUxMLCAKKwlzZmQzMgkJCQkJCQkJTlVMTCwKKwlzZmQ2NAkJCQkJCQkJTlVMTCwgCisJc2ZkMTI4CQkJCQkJCQlQaWxvdEJpdHMxMjgsIAorCXNmZDI1NgkJCQkJCQkJUGlsb3RCaXRzMjU2LCAKKwlzZmQ1MTIJCQkJCQkJCU5VTEwKK30KK1NGLVBEU0NIIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmcDQsIHNmcDgsIHNmcDE2LCBzZnAzMiwKKwkJCQkJCQkJCQlzZnA2NCwgc2ZwMTI4LCBzZnAyNTYgfQorCitTRi1QUkFDSCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzZnByMzIsIHNmcHI2NCwgc2ZwcjEyOCwgc2ZwcjI1NiB9CisKK1NGTi1UaW1lSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlhY3RpdmF0aW9uVGltZVNGTgkJCQkJSU5URUdFUiAoMC4uNDA5NSksCisJcGh5c0NoRHVyYXRpb24JCQkJCUR1cmF0aW9uVGltZUluZm8KK30KKworLS0gYWN0dWFsIHNjaGVkdWxpbmcgdmFsdWUgPSAyKHNpZ25hbGxlZCB2YWx1ZSArMSkgYW5kIGlzIHRoZSBwZXJpb2RpY2l0eSBvZiBzZW5kaW5nIHNwZWNpYWwgYnVyc3QgZnJhbWVzCitTcGVjaWFsQnVyc3RTY2hlZHVsaW5nIDo6PQkJCQlJTlRFR0VSICgwLi43KQorCitTcHJlYWRpbmdGYWN0b3IgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzZjQsIHNmOCwgc2YxNiwgc2YzMiwKKwkJCQkJCQkJCQlzZjY0LCBzZjEyOCwgc2YyNTYgfQorCitTUkItZGVsYXkgOjo9CQkJCQkJSU5URUdFUiAoMC4uNykKKworU1NEVC1DZWxsSWRlbnRpdHkgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNzZHQtaWQtYSwgc3NkdC1pZC1iLCBzc2R0LWlkLWMsCisJCQkJCQkJCQkJc3NkdC1pZC1kLCBzc2R0LWlkLWUsIHNzZHQtaWQtZiwKKwkJCQkJCQkJCQlzc2R0LWlkLWcsIHNzZHQtaWQtaCB9CisKK1NTRFQtSW5mb3JtYXRpb24gOjo9CQkJCVNFUVVFTkNFIHsKKwlzLUZpZWxkCQkJCQkJCQlTLUZpZWxkLAorCWNvZGVXb3JkU2V0CQkJCQkJCUNvZGVXb3JkU2V0Cit9CisKK1NTRFQtSW5mb3JtYXRpb24tcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwlzLUZpZWxkCQkJCQkJCQlTLUZpZWxkLAorCWNvZGVXb3JkU2V0CQkJCQkJCUNvZGVXb3JkU2V0LAorCXNzZHQtVUwtcjQJCQkJCQkJU1NEVC1VTAkJCQkJCQkJCU9QVElPTkFMCit9CisKK1NTRFQtVUwgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXVsLCB1bC1BbmRETCB9CisKK1N5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQgOjo9CVNFUVVFTkNFIHsKKwlzeW5jLVVMLUNvZGVzQml0bWFwCQkJCQlCSVQgU1RSSU5HIHsKKwkJCQkJCQkJCQkJY29kZTcoMCksCisJCQkJCQkJCQkJCWNvZGU2KDEpLAorCQkJCQkJCQkJCQljb2RlNSgyKSwKKwkJCQkJCQkJCQkJY29kZTQoMyksCisJCQkJCQkJCQkJCWNvZGUzKDQpLAorCQkJCQkJCQkJCQljb2RlMig1KSwKKwkJCQkJCQkJCQkJY29kZTEoNiksCisJCQkJCQkJCQkJCWNvZGUwKDcpCisJCQkJCQkJCQkJCX0gKFNJWkUgKDgpKSwKKwlmcGFjaC1JbmZvCQkJCQkJCUZQQUNILUluZm8tcjQsCisJLS0gQWN0dWFsIHZhbHVlIHByeFVwUENIZGVzID0gSUUgdmFsdWUgLSAxMjAKKwlwcnhVcFBDSGRlcwkJCQkJCQlJTlRFR0VSICgwLi42MiksCisJc3luYy1VTC1Qcm9jZWR1cmUJCQkJCVNZTkMtVUwtUHJvY2VkdXJlLXI0CQkJCQlPUFRJT05BTAorfQorCitTWU5DLVVMLVByb2NlZHVyZS1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4LVNZTkMtVUwtVHJhbnNtaXNzaW9ucwkJCUVOVU1FUkFURUQgeyB0cjEsIHRyMiwgdHI0LCB0cjggfSwKKwlwb3dlclJhbXBTdGVwCQkJCQkJSU5URUdFUiAoMC4uMykKK30KKworU1lOQy1VTC1JbmZvLXI0IDo6PQkJCQkJU0VRVUVOQ0UgeworCXN5bmMtVUwtQ29kZXMtQml0bWFwCQkJCUJJVCBTVFJJTkcgeworCQkJCQkJCQkJCQljb2RlNygwKSwKKwkJCQkJCQkJCQkJY29kZTYoMSksCisJCQkJCQkJCQkJCWNvZGU1KDIpLAorCQkJCQkJCQkJCQljb2RlNCgzKSwKKwkJCQkJCQkJCQkJY29kZTMoNCksCisJCQkJCQkJCQkJCWNvZGUyKDUpLAorCQkJCQkJCQkJCQljb2RlMSg2KSwKKwkJCQkJCQkJCQkJY29kZTAoNykKKwkJCQkJCQkJCQkJfSAoIFNJWkUgKDgpKSwKKwktLSBBY3R1YWwgdmFsdWUgcHJ4VXBQQ0hkZXMgPSBJRSB2YWx1ZSAtIDEyMAorCXByeFVwUENIZGVzCQkJCQkJCUlOVEVHRVIgKDAuLjYyKSwKKwlwb3dlclJhbXBTdGVwCQkJCQkJSU5URUdFUiAoMC4uMyksCisJbWF4LVNZTkMtVUwtVHJhbnNtaXNzaW9ucwkJCUVOVU1FUkFURUQgeyB0cjEsIHRyMiwgdHI0LCB0cjggfSAsCisgICAgbW1heCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUdFUigxLi4zMikKK30KKworVERELUZQQUNILUNDb2RlMTYtcjQgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAorCQkJCQkJCQkJCWNjMTYtNSwgY2MxNi02LCBjYzE2LTcsIGNjMTYtOCwKKwkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCisJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CisKK1RERC1VTC1JbnRlcmZlcmVuY2UgOjo9CQkJCUlOVEVHRVIgKC0xMTAuLi01MikKKworVERELVBJQ0gtQ0NvZGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCisJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAorCQkJCQkJCQkJCWNjMTYtOSwgY2MxNi0xMCwgY2MxNi0xMSwgY2MxNi0xMiwKKwkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KKworVERENzY4LVBJQ0gtQ0NvZGUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMzItMSwgY2MzMi0yLCBjYzMyLTMsIGNjMzItNCwKKwkJCQkJCQkJCQljYzMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCisJCQkJCQkJCQkJY2MzMi05LCBjYzMyLTEwLCBjYzMyLTExLCBjYzMyLTEyLAorCQkJCQkJCQkJCWNjMzItMTMsIGNjMzItMTQsIGNjMzItMTUsIGNjMzItMTYsCisJCQkJCQkJCQkJY2MzMi0xNywgY2MzMi0xOCwgY2MzMi0xOSwgY2MzMi0yMCwKKwkJCQkJCQkJCQljYzMyLTIxLCBjYzMyLTIyLCBjYzMyLTIzLCBjYzMyLTI0LAorCQkJCQkJCQkJCWNjMzItMjUsIGNjMzItMjYsIGNjMzItMjcsIGNjMzItMjgsCisJCQkJCQkJCQkJY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMSwgY2MzMi0zMiB9CisKK1RERC1QUkFDSC1DQ29kZTggOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAorCQkJCQkJCQkJCWNjOC01LCBjYzgtNiwgY2M4LTcsIGNjOC04IH0KKworVERELVBSQUNILUNDb2RlMTYgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitUREQtUFJBQ0gtQ0NvZGUtTENSLXI0IDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjNC0xLCBjYzQtMiwgY2M0LTMsIGNjNC00LAorCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAorCQkJCQkJCQkJCWNjOC01LCBjYzgtNiwgY2M4LTcsIGNjOC04LAorCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitUREQtUFJBQ0gtQ0NvZGVMaXN0IDo6PSAJCQlDSE9JQ0UgeworCXNmOAkJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi44KSkgT0YgCisJCQkJCQkJCQkJCVRERC1QUkFDSC1DQ29kZTgsCistLSBDaGFubmVsaXNhdGlvbiBjb2RlcyBjYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsIGNjMTYtMTMsIGNjMTYtMTQsCistLSBjYzE2LTE1IGFuZCBjYzE2LTE2IHNoYWxsIG5vdCBiZSB1c2VkCisJc2YxNgkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjgpKSBPRgorCQkJCQkJCQkJCQlUREQtUFJBQ0gtQ0NvZGUxNgorfQorCitUREQ3NjgtUFJBQ0gtQ0NvZGU4IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzgtMSwgY2M4LTIsIGNjOC0zLCBjYzgtNCwKKwkJCQkJCQkJCQljYzgtNSwgY2M4LTYsIGNjOC03LCBjYzgtOCB9CisKK1RERDc2OC1QUkFDSC1DQ29kZTE2IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCisJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAorCQkJCQkJCQkJCWNjMTYtOSwgY2MxNi0xMCwgY2MxNi0xMSwgY2MxNi0xMiwKKwkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KKworVERENzY4LVBSQUNILUNDb2RlMzIgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMzItMSwgY2MzMi0yLCBjYzMyLTMsIGNjMzItNCwKKwkJCQkJCQkJCQljYzMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCisJCQkJCQkJCQkJY2MzMi05LCBjYzMyLTEwLCBjYzMyLTExLCBjYzMyLTEyLAorCQkJCQkJCQkJCWNjMzItMTMsIGNjMzItMTQsIGNjMzItMTUsIGNjMzItMTYgfQorCitUREQ3NjgtUFJBQ0gtQ0NvZGVMaXN0IDo6PSAJCQlDSE9JQ0UgeworCXNmMzIJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi4xNikpIE9GIAorCQkJCQkJCQkJCQlUREQ3NjgtUFJBQ0gtQ0NvZGUzMiwKKy0tIENoYW5uZWxpc2F0aW9uIGNvZGVzIGNjMzItMTcsIGNjMzItMTgsIGNjMzItMTksIGNjMzItMjAsIGNjMzItMjEsIGNjMzItMjIsCistLSBjYzMyLTIzLCBjYzMyLTI0LCBjYzMyLTI1LCBjYzMyLTI2LCBjYzMyLTI3LCBjYzMyLTI4LCBjYzMyLTI5LCBjYzMyLTMwLCBjYzMyLTMxCistLSBhbmQgY2MzMi0zMiBzaGFsbCBub3QgYmUgdXNlZAorCXNmMTYJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi4xNikpIE9GCisJCQkJCQkJCQkJCVRERDc2OC1QUkFDSC1DQ29kZTE2LAorCXNmOAkJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi44KSkgT0YKKwkJCQkJCQkJCQkJVERENzY4LVBSQUNILUNDb2RlOAorfQorCitURkMtQ29udHJvbER1cmF0aW9uIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZmMtY2QxLCB0ZmMtY2QyLCB0ZmMtY2Q0LCB0ZmMtY2Q4LAorCQkJCQkJCQkJCXRmYy1jZDE2LCB0ZmMtY2QyNCwgdGZjLWNkMzIsCisJCQkJCQkJCQkJdGZjLWNkNDgsIHRmYy1jZDY0LCB0ZmMtY2QxMjgsCisJCQkJCQkJCQkJdGZjLWNkMTkyLCB0ZmMtY2QyNTYsIHRmYy1jZDUxMiB9CisKK1RGQ0ktQ29kaW5nIDo6PQkJCQkJCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQl0ZmNpLWJpdHMtNCwgdGZjaS1iaXRzLTgsCisJCQkJCQkJCQkJdGZjaS1iaXRzLTE2LCB0ZmNpLWJpdHMtMzIgfQorCitUR0NGTiA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uMjU1KQorCistLSBJbiBUR0QsIHZhbHVlIDI3MCByZXByZXNlbnRzICJ1bmRlZmluZWQiIGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uLgorVEdEIDo6PQkJCQkJCQkJSU5URUdFUiAoMTUuLjI3MCkKKworVEdMIDo6PQkJCQkJCQkJSU5URUdFUiAoMS4uMTQpCisKK1RHTVAgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRkZC1NZWFzdXJlbWVudCwgZmRkLU1lYXN1cmVtZW50LAorCQkJCQkJCQkJCWdzbS1DYXJyaWVyUlNTSU1lYXN1cmVtZW50LCAKKwkJCQkJCQkJCQlnc20taW5pdGlhbEJTSUNJZGVudGlmaWNhdGlvbiwgZ3NtQlNJQ1JlY29uZmlybWF0aW9uLAorCQkJCQkJCQkJCW11bHRpLWNhcnJpZXIgfQorCitUR1AtU2VxdWVuY2UgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGdwc2kJCQkJCQkJCVRHUFNJLAorCXRncHMtU3RhdHVzCQkJCQkJCUNIT0lDRSB7CisJCWFjdGl2YXRlCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRnY2ZuCQkJCQkJCQlUR0NGTgorCQl9LAorCQlkZWFjdGl2YXRlCQkJCQkJCU5VTEwKKwl9LAorCXRncHMtQ29uZmlndXJhdGlvblBhcmFtcwkJCVRHUFMtQ29uZmlndXJhdGlvblBhcmFtcwkJCU9QVElPTkFMCit9CisKK1RHUFMtUmVjb25maWd1cmF0aW9uLUNGTiA6Oj0JCUlOVEVHRVIgKDAuLjI1NSkKKworVEdQLVNlcXVlbmNlTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRHUFMpKSBPRgorCQkJCQkJCQkJCVRHUC1TZXF1ZW5jZQorCitUR1AtU2VxdWVuY2VTaG9ydCA6Oj0JCQkJU0VRVUVOQ0UgeworCXRncHNpCQkJCQkJCQlUR1BTSSwKKwl0Z3BzLVN0YXR1cwkJCQkJCQlDSE9JQ0UgeworCQlhY3RpdmF0ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0Z2NmbgkJCQkJCQkJVEdDRk4KKwkJfSwKKwkJZGVhY3RpdmF0ZQkJCQkJCQlOVUxMCisJfQorfQorCitUR1BMIDo6PQkJCQkJCQlJTlRFR0VSICgxLi4xNDQpCisKKy0tIFRBQlVMQVI6IEluIFRHUFJDLCB2YWx1ZSAwIHJlcHJlc2VudHMgImluZmluaXR5IiBpbiB0aGUgdGFidWxhciBkZXNjcmlwdGlvbi4KK1RHUFJDIDo6PQkJCQkJCQlJTlRFR0VSICgwLi41MTEpCisKK1RHUFMtQ29uZmlndXJhdGlvblBhcmFtcyA6Oj0JCVNFUVVFTkNFIHsKKwl0Z21wCQkJCQkJCQlUR01QLAorCXRncHJjCQkJCQkJCQlUR1BSQywKKwl0Z3NuCQkJCQkJCQlUR1NOLAorCXRnbDEJCQkJCQkJCVRHTCwKKwl0Z2wyCQkJCQkJCQlUR0wJCQkJCQkJCQlPUFRJT05BTCwKKwl0Z2QJCQkJCQkJCQlUR0QsCisJdGdwbDEJCQkJCQkJCVRHUEwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hhbGwgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQlUR1BMCQkJCQkJCQlPUFRJT05BTCwKKwlycHAJCQkJCQkJCQlSUFAsCisJaXRwCQkJCQkJCQkJSVRQLAorCS0tIFRBQlVMQVI6IENvbXByZXNzZWQgbW9kZSBtZXRob2QgaXMgbmVzdGVkIGluc2lkZSBVTC1ETC1Nb2RlCisJdWwtREwtTW9kZQkJCQkJCQlVTC1ETC1Nb2RlLAorCWRsLUZyYW1lVHlwZQkJCQkJCURMLUZyYW1lVHlwZSwKKwlkZWx0YVNJUjEJCQkJCQkJRGVsdGFTSVIsCisJZGVsdGFTSVJBZnRlcjEJCQkJCQlEZWx0YVNJUiwKKwlkZWx0YVNJUjIJCQkJCQkJRGVsdGFTSVIJCQkJCQkJT1BUSU9OQUwsCisJZGVsdGFTSVJBZnRlcjIJCQkJCQlEZWx0YVNJUgkJCQkJCQlPUFRJT05BTCwKKwluaWRlbnRpZnlBYm9ydAkJCQkJCU5pZGVudGlmeUFib3J0CQkJCQkJT1BUSU9OQUwsCisJdHJlY29uZmlybUFib3J0CQkJCQkJVHJlY29uZmlybUFib3J0CQkJCQkJT1BUSU9OQUwKK30KKworVEdQU0kgOjo9CQkJCQkJCUlOVEVHRVIgKDEuLm1heFRHUFMpCisKK1RHU04gOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjE0KQorCitUaW1lSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCWR1cmF0aW9uVGltZUluZm8JCQkJCUR1cmF0aW9uVGltZUluZm8JCQkJCU9QVElPTkFMCit9CisKK1RpbWVzbG90TGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCisJCQkJCQkJCQkJVGltZXNsb3ROdW1iZXIKKworVGltZXNsb3RMaXN0LXI0IDo6PQkJCQkJQ0hPSUNFIHsKKy0tIHRoZSBjaG9pY2UgZm9yIDcuNjggTWNwcyBUREQgaXMgYXMgZm9yIDMuODQgTWNwcyBUREQgIC0tCisJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgorCQkJCQkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy1MQ1IpKSBPRgorCQkJCQkJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQKK30KKworLS0gSWYgVGltZXNsb3ROdW1iZXIgaXMgaW5jbHVkZWQgZm9yIGEgMS4yOE1jcHMgVEREIGRlc2NyaXB0aW9uLCBpdCBzaGFsbCB0YWtlIHZhbHVlcyBmcm9tIDAuLjYKK1RpbWVzbG90TnVtYmVyIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE0KQorCitUaW1lc2xvdE51bWJlci1MQ1ItcjQgOjo9CQkJCUlOVEVHRVIgKDAuLjYpCisKK1RpbWVzbG90TnVtYmVyLVBSQUNILUxDUi1yNCA6Oj0JCUlOVEVHRVIgKDEuLjYpCisKK1RpbWVzbG90U3luYzIgOjo9CQkJCUlOVEVHRVIgKDAuLjYpCisKKy0tIEFjdHVhbCB2YWx1ZSBUaW1pbmdPZmZzZXQgPSBJRSB2YWx1ZSAqIDI1NgorVGltaW5nT2Zmc2V0IDo6PQkJCQkJSU5URUdFUiAoMC4uMTQ5KQorCitUaW1pbmdNYWludGFpbmVkU3luY2hJbmQgOjo9CQlFTlVNRVJBVEVEIHsgZmFsc2UgfQorCitUUEMtQ29tYmluYXRpb25JbmRleCA6Oj0JCQlJTlRFR0VSICgwLi41KQorCitUUEMtQ29tbWFuZFRhcmdldFJhdGUgOjo9CQkJSU5URUdFUiAoMC4uMTApCisKKy0tIEFjdHVhbCB2YWx1ZSBUUEMtU3RlcFNpemVGREQgPSBJRSB2YWx1ZSArIDEKK1RQQy1TdGVwU2l6ZUZERCA6Oj0JCQkJCUlOVEVHRVIgKDAuLjEpCisKK1RQQy1TdGVwU2l6ZVRERCA6Oj0JCQkJCUlOVEVHRVIgKDEuLjMpCisKKy0tIEFjdHVhbCB2YWx1ZSBUcmVjb25maXJtQWJvcnQgPSBJRSB2YWx1ZSAqIDAuNSBzZWNvbmRzCitUcmVjb25maXJtQWJvcnQgOjo9CUlOVEVHRVIgKDEuLjIwKQorCitUWC1EaXZlcnNpdHlNb2RlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub0RpdmVyc2l0eSwKKwkJCQkJCQkJCQlzdHRkLAorCQkJCQkJCQkJCWNsb3NlZExvb3BNb2RlMSwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCQkJCQkJCWR1bW15IH0KKworVUFSRkNOIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE2MzgzKQorCitVQ1NNLUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCW1pbmltdW1TcHJlYWRpbmdGYWN0b3IJCQkJTWluaW11bVNwcmVhZGluZ0ZhY3RvciwKKwluZi1NYXgJCQkJCQkJCU5GLU1heCwKKwljaGFubmVsUmVxUGFyYW1zRm9yVUNTTQkJCQlDaGFubmVsUmVxUGFyYW1zRm9yVUNTTQorfQorCitVTC1DQ1RyQ0ggOjo9CQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKKwl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMJCQkJT1BUSU9OQUwKK30KKworVUwtQ0NUckNILXI0IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKKwl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCisJdGltZUluZm8JCQkJCQkJVGltZUluZm8sCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQlPUFRJT05BTAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAorCQl9CisJfQorfQorCitVTC1DQ1RyQ0gtcjcgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECisJLS0gQWN0dWFsIHZhbHVlIFBSWC1EUENIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQorCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKKwl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMJCU9QVElPTkFMCisJCX0sCisJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMtVkhDUglPUFRJT05BTAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNwlPUFRJT05BTAorCQl9CisJfQorfQorCitVTC1DQ1RyQ0hMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJVUwtQ0NUckNICisKK1VMLUNDVHJDSExpc3QtcjQgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCVVMLUNDVHJDSC1yNAorCitVTC1DQ1RyQ0hMaXN0LXI3IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlVTC1DQ1RyQ0gtcjcKKworVUwtQ0NUckNITGlzdFRvUmVtb3ZlIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgorCitVTC1DQ1RyQ2hUUENMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMC4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQkJVEZDUy1JZGVudGl0eQorCitVTC1DaGFubmVsUmVxdWlyZW1lbnQgOjo9CQkJQ0hPSUNFIHsKKwl1bC1EUENILUluZm8JCQkJCQlVTC1EUENILUluZm8sCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15CQkJCQkJCQlDUENILVNldEluZm8KK30KKworVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0IDo6PQkJQ0hPSUNFIHsKKwl1bC1EUENILUluZm8JCQkJCQlVTC1EUENILUluZm8tcjQsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15CQkJCQkJCQlDUENILVNldEluZm8KK30KKworVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1IDo6PQkJQ0hPSUNFIHsKKwl1bC1EUENILUluZm8JCQkJCQlVTC1EUENILUluZm8tcjUsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15CQkJCQkJCQlDUENILVNldEluZm8KK30KKworLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKKy0tIGNoYW5nZWQgdG8ga2VlcCBpdCBhbGlnbmVkIHdpdGggUjk5LgorVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQgOjo9CUNIT0lDRSB7CisJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLAorCS0tIGR1bW15MSBhbmQgZHVtbXkgMiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCisJZHVtbXkxCQkJCQkJCQlDUENILVNldEluZm8sCisJZHVtbXkyCQkJCQkJCQlDUENILVNldElECit9CisKKy0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90CistLSBjaGFuZ2VkIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KK1VMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELXI0IDo6PQlDSE9JQ0UgeworCXVsLURQQ0gtSW5mbwkJCQkJCVVMLURQQ0gtSW5mby1yNCwKKwktLSBkdW1teTEgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IAorCS0tIHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15MQkJCQkJCQkJQ1BDSC1TZXRJbmZvLAorCWR1bW15MgkJCQkJCQkJQ1BDSC1TZXRJRAorfQorCistLSBOb3RlOiB0aGUgcmVmZXJlbmNlIHRvIENQQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QuIFRoZSBuYW1lIGlzIG5vdAorLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCitVTC1DaGFubmVsUmVxdWlyZW1lbnRXaXRoQ1BDSC1TZXRJRC1yNSA6Oj0JQ0hPSUNFIHsKKwl1bC1EUENILUluZm8JCQkJCQlVTC1EUENILUluZm8tcjUsCisJLS0gZHVtbXkxIGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15MQkJCQkJCQkJQ1BDSC1TZXRJbmZvLAorCWR1bW15MgkJCQkJCQkJQ1BDSC1TZXRJRAorfQorCitVTC1Db21wcmVzc2VkTW9kZU1ldGhvZCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzZi0yLCAKKwkJCQkJCQkJCQloaWdoZXJMYXllclNjaGVkdWxpbmcgfQorCitVTC1ETC1Nb2RlIDo6PQkJCQkJCUNIT0lDRSB7CisJdWwJCQkJCQkJCQlVTC1Db21wcmVzc2VkTW9kZU1ldGhvZCwKKwlkbAkJCQkJCQkJCURMLUNvbXByZXNzZWRNb2RlTWV0aG9kLAorCXVsLWFuZC1kbAkJCQkJCQkJU0VRVUVOQ0UgeworCQl1bAkJCQkJCQkJCVVMLUNvbXByZXNzZWRNb2RlTWV0aG9kLAorCQlkbAkJCQkJCQkJCURMLUNvbXByZXNzZWRNb2RlTWV0aG9kCisJfX0KKworVUwtRFBDQ0gtU2xvdEZvcm1hdCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2xmMCwgc2xmMSwgc2xmMiB9CisKK1VMLURQQ0gtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzY3JhbWJsaW5nQ29kZVR5cGUJCQkJCVNjcmFtYmxpbmdDb2RlVHlwZSwKKwkJCXNjcmFtYmxpbmdDb2RlCQkJCQkJVUwtU2NyYW1ibGluZ0NvZGUsCisJCQludW1iZXJPZkRQRENICQkJCQkJTnVtYmVyT2ZEUERDSAkJCQlERUZBVUxUIDEsCisJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IsCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCisJCQktLSBudW1iZXJPZkZCSS1CaXRzIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGhpc3RvcnkKKwkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTCwKKwkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbAkJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdAkJCQlPUFRJT05BTCwKKwkJCXVsLUNDVHJDSExpc3RUb1JlbW92ZQkJCQlVTC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1VMLURQQ0gtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjQJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzY3JhbWJsaW5nQ29kZVR5cGUJCQkJCVNjcmFtYmxpbmdDb2RlVHlwZSwKKwkJCXNjcmFtYmxpbmdDb2RlCQkJCQkJVUwtU2NyYW1ibGluZ0NvZGUsCisJCQludW1iZXJPZkRQRENICQkJCQkJTnVtYmVyT2ZEUERDSAkJCQlERUZBVUxUIDEsCisJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IsCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCisJCQktLSBudW1iZXJPZkZCSS1CaXRzIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGhpc3RvcnkKKwkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTCwKKwkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNAlPUFRJT05BTCwKKwkJCXVsLUNDVHJDSExpc3QJCQkJCQlVTC1DQ1RyQ0hMaXN0LXI0CQkJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCQkJVUwtQ0NUckNITGlzdFRvUmVtb3ZlCQlPUFRJT05BTAorCQl9CisJfQorfQorCitVTC1EUENILUluZm8tcjUgOjo9CQkJCQlTRVFVRU5DRSB7CisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI1CQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCisJCQlzY3JhbWJsaW5nQ29kZQkJCQkJCVVMLVNjcmFtYmxpbmdDb2RlLAorCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAorCQkJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU3ByZWFkaW5nRmFjdG9yLAorCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQludW1iZXJPZkZCSS1CaXRzCQkJCQlOdW1iZXJPZkZCSS1CaXRzCQkJT1BUSU9OQUwsCisJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdC1yNAkJCU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdFRvUmVtb3ZlCQkJCVVMLUNDVHJDSExpc3RUb1JlbW92ZQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUwtRFBDSC1JbmZvLXI2IDo6PQkJCQkJU0VRVUVOQ0UgeworCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNgkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNjcmFtYmxpbmdDb2RlVHlwZQkJCQkJU2NyYW1ibGluZ0NvZGVUeXBlLAorCQkJc2NyYW1ibGluZ0NvZGUJCQkJCQlVTC1TY3JhbWJsaW5nQ29kZSwKKwkJCWRwZGNoUHJlc2VuY2UJCQkJCQlDSE9JQ0UgeworCQkJCXByZXNlbnQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAorCQkJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IsCisJCQkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwkJCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTCwKKwkJCQkJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0CisJCQkJfSwKKwkJCQlub3RQcmVzZW50CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCQkJCQktLSBudW1iZXJPZkZCSS1CaXRzIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGhpc3RvcnkKKwkJCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMCisJCQkJfQorCQkJfQorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNAlPUFRJT05BTCwKKwkJCXVsLUNDVHJDSExpc3QJCQkJCQlVTC1DQ1RyQ0hMaXN0LXI0CQkJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCQkJVUwtQ0NUckNITGlzdFRvUmVtb3ZlCQlPUFRJT05BTAorCQl9CisJfQorfQorCitVTC1EUENILUluZm8tcjcgOjo9CQkJCQlTRVFVRU5DRSB7CisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI2CQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCisJCQlzY3JhbWJsaW5nQ29kZQkJCQkJCVVMLVNjcmFtYmxpbmdDb2RlLAorCQkJZHBkY2hQcmVzZW5jZQkJCQkJCUNIT0lDRSB7CisJCQkJcHJlc2VudAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQludW1iZXJPZkRQRENICQkJCQkJTnVtYmVyT2ZEUERDSAkJCQlERUZBVUxUIDEsCisJCQkJCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNwcmVhZGluZ0ZhY3RvciwKKwkJCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCQkJCQktLSBudW1iZXJPZkZCSS1CaXRzIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGhpc3RvcnkKKwkJCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMLAorCQkJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKKwkJCQkJCX0sCisJCQkJbm90UHJlc2VudAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwkJCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTAorCQkJCX0KKwkJCX0KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjcJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdC1yNwkJCU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdFRvUmVtb3ZlCQkJCVVMLUNDVHJDSExpc3RUb1JlbW92ZQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUwtRFBDSC1JbmZvUG9zdEZERCA6Oj0JCQkJU0VRVUVOQ0UgeworCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mb1Bvc3RGREQsCisJCQlzY3JhbWJsaW5nQ29kZVR5cGUJCQkJCVNjcmFtYmxpbmdDb2RlVHlwZSwKKwkJCXJlZHVjZWRTY3JhbWJsaW5nQ29kZU51bWJlcgkJCVJlZHVjZWRTY3JhbWJsaW5nQ29kZU51bWJlciwKKwkJCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNwcmVhZGluZ0ZhY3RvcgorCit9CisKK1VMLURQQ0gtSW5mb1Bvc3RUREQgOjo9CQkJCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0VERELAorCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sCQkJCQlPUFRJT05BTCwKKwl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2RlcworfQorCitVTC1EUENILUluZm9Qb3N0VERELUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0VERELUxDUi1yNCwKKwl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1MQ1ItcjQJCQkJT1BUSU9OQUwsCisJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMtTENSLXI0Cit9CisKK1VMLURQQ0gtSW5mb1ByZWRlZiA6Oj0JCQkJU0VRVUVOQ0UgeworCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mb1ByZWRlZiwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCisJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8KKwkJfQorCX0KK30KKworVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvIDo6PQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRwY2NoLVBvd2VyT2Zmc2V0CQkJCQlEUENDSC1Qb3dlck9mZnNldCwKKwkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCisJCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXksCisJCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KKwkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobQorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIJCQkJT1BUSU9OQUwsCisJCXVsLU9MLVBDLVNpZ25hbGxpbmcJCQkJCUNIT0lDRSB7CisJCQlicm9hZGNhc3QtVUwtT0wtUEMtaW5mbwkJCQlOVUxMLAorCQkJaW5kaXZpZHVhbGx5U2lnbmFsbGVkCQkJCVNFUVVFTkNFIHsKKwkJCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCisJCQkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlVGRkLAorCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCisJCQl9CQorCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJfQorfQorCitVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjQgOjo9CQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZHBjY2gtUG93ZXJPZmZzZXQJCQkJCURQQ0NILVBvd2VyT2Zmc2V0LAorCQlwYy1QcmVhbWJsZQkJCQkJCQlQQy1QcmVhbWJsZSwKKwkJc1JCLWRlbGF5CQkJCQkJCVNSQi1kZWxheSwKKwkJLS0gVEFCVUxBUjogVFBDIHN0ZXAgc2l6ZSBuZXN0ZWQgaW5zaWRlIFBvd2VyQ29udHJvbEFsZ29yaXRobQorCQlwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCQktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCisJCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUgkJCQlPUFRJT05BTCwKKwkJdWwtT0wtUEMtU2lnbmFsbGluZwkJCQkJQ0hPSUNFIHsKKwkJCWJyb2FkY2FzdC1VTC1PTC1QQy1pbmZvCQkJCU5VTEwsCisJCQlpbmRpdmlkdWFsbHlTaWduYWxsZWQJCQkJU0VRVUVOQ0UgeworCQkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0CQlJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCwKKwkJCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZQorCQkJCQl9LAorCQkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRwYy1TdGVwU2l6ZQkJCQkJCVRQQy1TdGVwU2l6ZVRERAorCQkJCQl9CisJCQkJfSwKKwkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQl9CisJCX0KKwl9Cit9CisKK1VMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNSA6Oj0JCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQsCisJCXBjLVByZWFtYmxlCQkJCQkJCVBDLVByZWFtYmxlLAorCQlzUkItZGVsYXkJCQkJCQkJU1JCLWRlbGF5LAorCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCisJCXBvd2VyQ29udHJvbEFsZ29yaXRobQkJCQlQb3dlckNvbnRyb2xBbGdvcml0aG0sCisJCWRlbHRhQUNLCQkJCQkJCURlbHRhQUNLCU9QVElPTkFMLAorCQlkZWx0YU5BQ0sJCQkJCQkJRGVsdGFOQUNLCU9QVElPTkFMLAorCQlhY2stTkFDSy1yZXBldGl0aW9uLWZhY3RvcgkJCUFDSy1OQUNLLXJlcGV0aXRpb25GYWN0b3IJT1BUSU9OQUwKKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECisJCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKKwkJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSCQkJCU9QVElPTkFMLAorCQl1bC1PTC1QQy1TaWduYWxsaW5nCQkJCQlDSE9JQ0UgeworCQkJYnJvYWRjYXN0LVVMLU9MLVBDLWluZm8JCQkJTlVMTCwKKwkJCWluZGl2aWR1YWxseVNpZ25hbGxlZAkJCQlTRVFVRU5DRSB7CisJCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAorCQkJCQkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlCisJCQkJCX0sCisJCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECisJCQkJCX0KKwkJCQl9LAorCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCX0KKwkJfQorCX0KK30KKworVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI2IDo6PQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRwY2NoLVBvd2VyT2Zmc2V0CQkJCQlEUENDSC1Qb3dlck9mZnNldCwKKwkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCisJCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXksCisJCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KKwkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobSwKKwkJZGVsdGFBQ0sJCQkJCQkJRGVsdGFBQ0sJT1BUSU9OQUwsCisJCWRlbHRhTkFDSwkJCQkJCQlEZWx0YU5BQ0sJT1BUSU9OQUwsCisJCWFjay1OQUNLLXJlcGV0aXRpb24tZmFjdG9yCQkJQUNLLU5BQ0stcmVwZXRpdGlvbkZhY3RvcglPUFRJT05BTCwKKwkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCQlIQVJRLVByZWFtYmxlLU1vZGUKKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECisJCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKKwkJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSCQkJCU9QVElPTkFMLAorCQl1bC1PTC1QQy1TaWduYWxsaW5nCQkJCQlDSE9JQ0UgeworCQkJYnJvYWRjYXN0LVVMLU9MLVBDLWluZm8JCQkJTlVMTCwKKwkJCWluZGl2aWR1YWxseVNpZ25hbGxlZAkJCQlTRVFVRU5DRSB7CisJCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAorCQkJCQkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlCisJCQkJCX0sCisJCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJYmVhY29uUExFc3QJCQkJCQkJQkVBQ09OLVBMLUVzdAkJT1BUSU9OQUwsCisJCQkJCQl0cGMtU3RlcFNpemUJCQkJCQlUUEMtU3RlcFNpemVUREQKKwkJCQkJfQorCQkJCX0sCisJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJfQorCQl9CisJfQorfQorCitVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjcgOjo9CQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZHBjY2gtUG93ZXJPZmZzZXQJCQkJCURQQ0NILVBvd2VyT2Zmc2V0LAorCQlwYy1QcmVhbWJsZQkJCQkJCQlQQy1QcmVhbWJsZSwKKwkJc1JCLWRlbGF5CQkJCQkJCVNSQi1kZWxheSwKKwkJLS0gVEFCVUxBUjogVFBDIHN0ZXAgc2l6ZSBuZXN0ZWQgaW5zaWRlIFBvd2VyQ29udHJvbEFsZ29yaXRobQorCQlwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtLAorCQlkZWx0YUFDSwkJCQkJCQlEZWx0YUFDSwlPUFRJT05BTCwKKwkJZGVsdGFOQUNLCQkJCQkJCURlbHRhTkFDSwlPUFRJT05BTCwKKwkJYWNrLU5BQ0stcmVwZXRpdGlvbi1mYWN0b3IJCQlBQ0stTkFDSy1yZXBldGl0aW9uRmFjdG9yCU9QVElPTkFMLAorCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQktLSBUaGUgSUUgdWwtVGFyZ2V0U0lSIGNvcnJlc3BvbmRzIHRvIFBSWC1EUENIZGVzIGZvciAxLjI4TWNwcyBUREQKKwkJLS0gQWN0dWFsIHZhbHVlIFBSWC1EUENIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQorCQl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIJCQkJT1BUSU9OQUwsCisJCXVsLU9MLVBDLVNpZ25hbGxpbmcJCQkJCUNIT0lDRSB7CisJCQlicm9hZGNhc3QtVUwtT0wtUEMtaW5mbwkJCQlOVUxMLAorCQkJaW5kaXZpZHVhbGx5U2lnbmFsbGVkCQkJCVNFUVVFTkNFIHsKKwkJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCisJCQkJCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWUKKwkJCQkJfSwKKwkJCQkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCisJCQkJCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWUKKwkJCQkJfSwKKwkJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQliZWFjb25QTEVzdAkJCQkJCQlCRUFDT04tUEwtRXN0CQlPUFRJT05BTCwKKwkJCQkJCXRwYy1TdGVwU2l6ZQkJCQkJCVRQQy1TdGVwU2l6ZVRERAorCQkJCQl9CisJCQkJfSwKKwkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQl9CisJCX0KKwl9Cit9CisKK1VMLURQQ0gtUG93ZXJDb250cm9sSW5mb1Bvc3RGREQgOjo9CVNFUVVFTkNFIHsKKwktLSBEUENDSC1Qb3dlck9mZnNldDIgaGFzIGEgc21hbGxlciByYW5nZSB0byBzYXZlIGJpdHMKKwlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQyLAorCXBjLVByZWFtYmxlCQkJCQkJCVBDLVByZWFtYmxlLAorCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXkKK30KKworVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUG9zdFRERCA6Oj0JU0VRVUVOQ0UgeworCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKKwl1bC1UaW1lc2xvdEludGVyZmVyZW5jZQkJCQlUREQtVUwtSW50ZXJmZXJlbmNlCit9CisKK1VMLURQQ0gtUG93ZXJDb250cm9sSW5mb1Bvc3RUREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECisJLS0gQWN0dWFsIHZhbHVlIFBSWC1EUENIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQorCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUgorfQorCitVTC1EUENILVBvd2VyQ29udHJvbEluZm9QcmVkZWYgOjo9CQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gVEFCVUxBUjogVFBDIHN0ZXAgc2l6ZSBuZXN0ZWQgaW5zaWRlIFBvd2VyQ29udHJvbEFsZ29yaXRobQorCQlwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIGRwY2gtQ29uc3RhbnRWYWx1ZSBzaGFsbCBiZSBpZ25vcmVkIGlmIGluIDEuMjhNY3BzIFRERCBtb2RlLgorCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWVUZGQKKwl9Cit9CisKK1VMLUVEQ0gtSW5mb3JtYXRpb24tcjYgOjo9CQkJU0VRVUVOQ0UgeworCW1hYy1lcy1lLXJlc2V0SW5kaWNhdG9yCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCQlPUFRJT05BTCwKKwllLURQQ0NILUluZm8JCQkJCQlFLURQQ0NILUluZm8JCQkJCQkJT1BUSU9OQUwsCisJZS1EUERDSC1JbmZvCQkJCQkJRS1EUERDSC1JbmZvCQkJCQkJCU9QVElPTkFMLAorCXNjaGVkdWxpbmdUcmFuc21Db25maWd1cmF0aW9uCQlFLURQRENILVNjaGVkdWxpbmdUcmFuc21Db25maWd1cmF0aW9uCU9QVElPTkFMCit9CisKK1VMLUludGVyZmVyZW5jZSA6Oj0JCQkJCUlOVEVHRVIgKC0xMTAuLi03MCkKKworVUwtU2NyYW1ibGluZ0NvZGUgOjo9CQkJCUlOVEVHRVIgKDAuLjE2Nzc3MjE1KQorCisKK1VMLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQgOjo9CVNFUVVFTkNFIHsKKwlzdGVwU2l6ZQkJCQkJCQlJTlRFR0VSICgxLi44KSwKKwlmcmVxdWVuY3kJCQkJCQkJSU5URUdFUiAoMS4uOCkKK30KKworLS0gQWN0dWFsIHZhbHVlIFVMLVRhcmdldFNJUiA9IChJRSB2YWx1ZSAqIDAuNSkgLSAxMQorVUwtVGFyZ2V0U0lSIDo6PQkJCQkJSU5URUdFUiAoMC4uNjIpCisKK1VMLVRpbWluZ0FkdmFuY2UgOjo9CQkJCUlOVEVHRVIgKDAuLjYzKQorCitVTC1UaW1pbmdBZHZhbmNlLVZIQ1IgOjo9CQkJSU5URUdFUiAoMC4uMTI3KQorCitVTC1UaW1pbmdBZHZhbmNlQ29udHJvbCA6Oj0JCQlDSE9JQ0UgeworCWRpc2FibGVkCQkJCQkJCU5VTEwsCisJZW5hYmxlZAkJCQkJCQkJU0VRVUVOQ0UgeworCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQlPUFRJT05BTAorCX0KK30KKworVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQgOjo9CQlDSE9JQ0UgeworCWRpc2FibGVkCQkJCQkJCU5VTEwsCisJZW5hYmxlZAkJCQkJCQkJU0VRVUVOQ0UgeworCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwsCisJCQkJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1bC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMLAorCQkJCXN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJCQlTeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCisJCQl9CisJCX0KKwl9Cit9CisKK1VMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3IDo6PQkJQ0hPSUNFIHsKKwlkaXNhYmxlZAkJCQkJCQlOVUxMLAorCWVuYWJsZWQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMLAorCQkJCWV4dC11bC1UaW1pbmdBZHZhbmNlCQkJCUVYVC1VTC1UaW1pbmdBZHZhbmNlCQkJT1BUSU9OQUwsCisJCQkJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQ3NjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlleHQtdWwtVGltaW5nQWR2YW5jZQkJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCU9QVElPTkFMLAorCQkJCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwkJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKKwkJCQlzeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQkJU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTAorCQkJfQorCQl9CisJfQorfQorCitVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1MQ1ItcjQgOjo9CUNIT0lDRSB7CisJZGlzYWJsZWQJCQkJCQkJTlVMTCwKKwllbmFibGVkCQkJCQkJCQlTRVFVRU5DRSB7CisJCXVsLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJCVVMLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQJT1BUSU9OQUwsCisJCXN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJCQlTeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCisJfQorfQorCitVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzEtMSwgY2MyLTEsIGNjMi0yLAorCQkJCQkJCQkJCWNjNC0xLCBjYzQtMiwgY2M0LTMsIGNjNC00LAorCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAorCQkJCQkJCQkJCWNjOC01LCBjYzgtNiwgY2M4LTcsIGNjOC04LAorCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgorCQkJCQkJCQkJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZQorCitVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LXI3IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgorCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXVsLVRTLUNoYW5uZWxpc2F0aW9uLUNvZGUJCQkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQlwbGNjaC1pbmZvCQkJCQkJCQlQTENDSC1JbmZvCQlPUFRJT05BTAorfQorCitVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUiA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMS0xLCBjYzItMSwgY2MyLTIsCisJCQkJCQkJCQkJY2M0LTEsIGNjNC0yLCBjYzQtMywgY2M0LTQsCisJCQkJCQkJCQkJY2M4LTEsIGNjOC0yLCBjYzgtMywgY2M4LTQsCisJCQkJCQkJCQkJY2M4LTUsIGNjOC02LCBjYzgtNywgY2M4LTgsCisJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAorCQkJCQkJCQkJCWNjMTYtNSwgY2MxNi02LCBjYzE2LTcsIGNjMTYtOCwKKwkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCisJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiwKKwkJCQkJCQkJCQljYzMyLTEsIGNjMzItMiwgY2MzMi0zLCBjYzMyLTQsCisJCQkJCQkJCQkJY2MzMi01LCBjYzMyLTYsIGNjMzItNywgY2MzMi04LAorCQkJCQkJCQkJCWNjMzItOSwgY2MzMi0xMCwgY2MzMi0xMSwgY2MzMi0xMiwKKwkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2LAorCQkJCQkJCQkJCWNjMzItMTcsIGNjMzItMTgsIGNjMzItMTksIGNjMzItMjAsCisJCQkJCQkJCQkJY2MzMi0yMSwgY2MzMi0yMiwgY2MzMi0yMywgY2MzMi0yNCwKKwkJCQkJCQkJCQljYzMyLTI1LCBjYzMyLTI2LCBjYzMyLTI3LCBjYzMyLTI4LAorCQkJCQkJCQkJCWNjMzItMjksIGNjMzItMzAsIGNjMzItMzEsIGNjMzItMzIgfQorCitVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LVZIQ1IgOjo9CVNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IKKworVXBsaW5rQWRkaXRpb25hbFRpbWVzbG90cyA6Oj0JCVNFUVVFTkNFIHsKKwlwYXJhbWV0ZXJzCQkJCQkJCUNIT0lDRSB7CisJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgorCQl9LAorCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgeworCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCQkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8sCisJCQl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQkJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QKKwkJfQorCX0KK30KKworVXBsaW5rQWRkaXRpb25hbFRpbWVzbG90cy1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlwYXJhbWV0ZXJzCQkJCQkJCUNIT0lDRSB7CisJCXNhbWVBc0xhc3QJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlcgorCQl9LAorCQluZXdQYXJhbWV0ZXJzCQkJCQkJU0VRVUVOQ0UgeworCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCQkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAorCQkJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CisJCX0KKwl9Cit9CisKK1VwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI3IDo6PQlTRVFVRU5DRSB7CisJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgeworCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJCS0tIHBsY2NoLWluZm8gYXNzaWduZWQgYXMgcHJldmlvdXNseSBkZWZpbmVkIHNsb3QKKwkJfSwKKwkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCisJCQl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LXI3CisJCX0KKwl9Cit9CisKK1VwbGlua1RpbWVzbG90c0NvZGVzIDo6PQkJCVNFUVVFTkNFIHsKKwlkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCisJZmlyc3RJbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mbywKKwl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAorCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgeworCQlub01vcmUJCQkJCQkJCU5VTEwsCisJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CisJCQljb25zZWN1dGl2ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy0xKQorCQkJfSwKKwkJCXRpbWVzbG90TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKKwkJCQkJCQkJCQkJCQlVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzCisJCX0KKwl9Cit9CisKK1VwbGlua1RpbWVzbG90c0NvZGVzLVZIQ1IgOjo9CQlTRVFVRU5DRSB7CisJZHluYW1pY1NGdXNhZ2UJCQkJCQlCT09MRUFOLAorCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tVkhDUiwKKwl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LVZIQ1IsCisJbW9yZVRpbWVzbG90cwkJCQkJCUNIT0lDRSB7CisJCW5vTW9yZQkJCQkJCQkJTlVMTCwKKwkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKKwkJCWNvbnNlY3V0aXZlCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQludW1BZGRpdGlvbmFsVGltZXNsb3RzCQkJCUlOVEVHRVIgKDEuLm1heFRTLTEpCisJCQl9LAorCQkJdGltZXNsb3RMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLTEpKSBPRgorCQkJCQkJCQkJCQkJCVVwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMKKwkJfQorCX0KK30KKworVXBsaW5rVGltZXNsb3RzQ29kZXMtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWR5bmFtaWNTRnVzYWdlCQkJCQkJQk9PTEVBTiwKKwlmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCwKKwl1bC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAorCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgeworCQlub01vcmUJCQkJCQkJCU5VTEwsCisJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CisJCQljb25zZWN1dGl2ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy1MQ1ItMSkKKwkJCX0sCisJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSLTEpKSBPRgorCQkJCQkJCQkJCQkJCVVwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI0CisJCX0KKwl9Cit9CisKK1VwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNyA6Oj0JCVNFUVVFTkNFIHsKKwlkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCisJZmlyc3RJbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCisJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1yNywKKwltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKKwkJbm9Nb3JlCQkJCQkJCQlOVUxMLAorCQlhZGRpdGlvbmFsVGltZXNsb3RzCQkJCQlDSE9JQ0UgeworCQkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gdGhlIGNob2ljZSBvZiAnY29uc2VjdXRpdmUnIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSB0aGVyZSBpcyBvbmx5IDEgb3B0aW9uLiAKKwkJCQludW1BZGRpdGlvbmFsVGltZXNsb3RzCQkJCUlOVEVHRVIgKDEuLm1heFRTLUxDUi0xKQorCQkJfSwKKwkJCXRpbWVzbG90TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy1MQ1ItMSkpIE9GCisJCQkJCQkJCQkJCQkJVXBsaW5rQWRkaXRpb25hbFRpbWVzbG90cy1MQ1ItcjcKKwkJfQorCX0KK30KKworV2ktTENSIDo6PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVHRVIoMS4uNCkKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIE1FQVNVUkVNRU5UIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjcpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FjcXVpc2l0aW9uU2F0SW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCXNhdElECQkJCQkJCQlTYXRJRCwKKwktLSBBY3R1YWwgdmFsdWUgZG9wcGxlck90aE9yZGVyID0gSUUgdmFsdWUgKiAyLjUKKwlkb3BwbGVyMHRoT3JkZXIJCQkJCQlJTlRFR0VSICgtMjA0OC4uMjA0NyksCisJZXh0cmFEb3BwbGVySW5mbwkJCQkJRXh0cmFEb3BwbGVySW5mbwkJCQkJT1BUSU9OQUwsCisJY29kZVBoYXNlCQkJCQkJCUlOVEVHRVIgKDAuLjEwMjIpLAorCWludGVnZXJDb2RlUGhhc2UJCQkJCUlOVEVHRVIgKDAuLjE5KSwKKwlncHMtQml0TnVtYmVyCQkJCQkJSU5URUdFUiAoMC4uMyksCisJY29kZVBoYXNlU2VhcmNoV2luZG93CQkJCUNvZGVQaGFzZVNlYXJjaFdpbmRvdywKKwlhemltdXRoQW5kRWxldmF0aW9uCQkJCQlBemltdXRoQW5kRWxldmF0aW9uCQkJCQlPUFRJT05BTAorfQkKKworQWNxdWlzaXRpb25TYXRJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U2F0KSkgT0YKKwkJCQkJCQkJCQlBY3F1aXNpdGlvblNhdEluZm8KKworCitBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QWRkaXRpb25hbE1lYXMpKSBPRgorCQkJCQkJCQkJCU1lYXN1cmVtZW50SWRlbnRpdHkKKworQWxtYW5hY1NhdEluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJZGF0YUlECQkJCQkJCQlJTlRFR0VSICgwLi4zKSwKKwlzYXRJRAkJCQkJCQkJU2F0SUQsCisJZQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJdC1vYQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWRlbHRhSQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlvbWVnYURvdAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAorCXNhdEhlYWx0aAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYS1TcXJ0CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCW9tZWdhMAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKKwltMAkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCisJb21lZ2EJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCisJYWYwCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTEpKSwKKwlhZjEJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMSkpCit9CisKK0FsbWFuYWNTYXRJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCisJCQkJCQkJCQkJQWxtYW5hY1NhdEluZm8KKworQXZlcmFnZVJMQy1CdWZmZXJQYXlsb2FkIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGxhMCwgcGxhNCwgcGxhOCwgcGxhMTYsIHBsYTMyLAorCQkJCQkJCQkJCXBsYTY0LCBwbGExMjgsIHBsYTI1NiwgcGxhNTEyLAorCQkJCQkJCQkJCXBsYTEwMjQsIHBsYTJrLCBwbGE0aywgcGxhOGssIHBsYTE2aywKKwkJCQkJCQkJCQlwbGEzMmssIHBsYTY0aywgcGxhMTI4aywgcGxhMjU2aywKKwkJCQkJCQkJCQlwbGE1MTJrLCBwbGExMDI0aywgc3BhcmUxMiwgc3BhcmUxMSwKKwkJCQkJCQkJCQlzcGFyZTEwLCBzcGFyZTksIHNwYXJlOCwgc3BhcmU3LCBzcGFyZTYsCisJCQkJCQkJCQkJc3BhcmU1LCBzcGFyZTQsIHNwYXJlMywgc3BhcmUyLCBzcGFyZTEgfQorCQorQXppbXV0aEFuZEVsZXZhdGlvbiA6Oj0JCQkJU0VRVUVOQ0UgeworCS0tIEFjdHVhbCB2YWx1ZSBhemltdXRoID0gSUUgdmFsdWUgKiAxMS4yNQorCWF6aW11dGgJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKKwktLSBBY3R1YWwgdmFsdWUgZWxldmF0aW9uID0gSUUgdmFsdWUgKiAxMS4yNQorCWVsZXZhdGlvbgkJCQkJCQlJTlRFR0VSICgwLi43KQorfQorCitCYWRTYXRMaXN0IDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgorCQkJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCitGcmVxdWVuY3ktQmFuZCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWRjczE4MDBCYW5kVXNlZCwgcGNzMTkwMEJhbmRVc2VkIH0KKworQkNDSC1BUkZDTiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xMDIzKQorCitCTEVSLU1lYXN1cmVtZW50UmVzdWx0cyA6Oj0JCQlTRVFVRU5DRSB7CisJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWRsLVRyYW5zcG9ydENoYW5uZWxCTEVSCQkJCURMLVRyYW5zcG9ydENoYW5uZWxCTEVSCQkJCU9QVElPTkFMCit9CisKK0JMRVItTWVhc3VyZW1lbnRSZXN1bHRzTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlCTEVSLU1lYXN1cmVtZW50UmVzdWx0cworCitCTEVSLVRyYW5zQ2hJZExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKworQlNJQy1WZXJpZmljYXRpb25SZXF1aXJlZCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXJlcXVpcmVkLCBub3RSZXF1aXJlZCB9CisKK0JTSUNSZXBvcnRlZCA6Oj0JCQkJCUNIT0lDRSB7CisJLS0gVmFsdWUgbWF4Q2VsbE1lYXMgaXMgbm90IGFsbG93ZWQgZm9yIHZlcmlmaWVkQlNJQworCXZlcmlmaWVkQlNJQwkJCQkJCUlOVEVHRVIgKDAuLm1heENlbGxNZWFzKSwKKwlub25WZXJpZmllZEJTSUMJCQkJCQlCQ0NILUFSRkNOCit9CisKK0J1cnN0TW9kZVBhcmFtZXRlcnMgOjo9CQkJCVNFUVVFTkNFIHsKKwlidXJzdFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwlidXJzdExlbmd0aAkJCQkJCQlJTlRFR0VSICgxMC4uMjUpLAorCWJ1cnN0RnJlcQkJCQkJCQlJTlRFR0VSICgxLi4xNikKK30KKworQ2VsbERDSC1SZXBvcnRDcml0ZXJpYSA6Oj0JCQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCit9CisKK0NlbGxEQ0gtUmVwb3J0Q3JpdGVyaWEtTENSLXI0IDo6PQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtTENSLXI0LAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQorfQorCistLSBBY3R1YWwgdmFsdWUgQ2VsbEluZGl2aWR1YWxPZmZzZXQgPSBJRSB2YWx1ZSAqIDAuNQorQ2VsbEluZGl2aWR1YWxPZmZzZXQgOjo9CQkJSU5URUdFUiAoLTIwLi4yMCkKKworCitDZWxsSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCQkgCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAorCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgorCQl9CisJfQorfQorCitDZWxsSW5mby1yNCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCQkgCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0LAorCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0LXI0CQkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgorCisJCX0KKwl9Cit9CisKK0NlbGxJbmZvU0ktUlNDUCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAorCXJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvCQkJT1BUSU9OQUwsCisJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKKwkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCQkJdHgtRGl2ZXJzaXR5SW5kaWNhdG9yCQkJCUJPT0xFQU4JCQorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm8sCisJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQlPUFRJT05BTCwKKwkJCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOCisJCX0KKwl9LAorCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItUlNDUAkJT1BUSU9OQUwKK30KKworQ2VsbEluZm9TSS1SU0NQLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQsCisJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0LUxDUi1yNAkJCQlPUFRJT05BTCwKKwlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLVJTQ1AJCU9QVElPTkFMCit9CisKK0NlbGxJbmZvU0ktRUNOMCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAorCXJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvCQkJT1BUSU9OQUwsCisJCQlwcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNQSUNILVRYLVBvd2VyCQlPUFRJT05BTCwKKwkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCQkJdHgtRGl2ZXJzaXR5SW5kaWNhdG9yCQkJCUJPT0xFQU4JCQorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm8sCisJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQlPUFRJT05BTCwKKwkJCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOCisJCX0KKwl9LAorCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItRUNOMAlPUFRJT05BTAorfQorCitDZWxsSW5mb1NJLUVDTjAtTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAorCXJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJT1BUSU9OQUwsCisJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNCwKKwlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QtTENSLXI0CQkJCU9QVElPTkFMLAorCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItRUNOMAlPUFRJT05BTAorfQorCitDZWxsSW5mb1NJLUhDUy1SU0NQIDo6PQkJCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAorCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgorCQl9CisJfSwKKwljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUhDUy1SU0NQCU9QVElPTkFMCit9CisKK0NlbGxJbmZvU0ktSENTLVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LAorCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdC1MQ1ItcjQJCQkJT1BUSU9OQUwsCisJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtUlNDUAlPUFRJT05BTAorfQorCitDZWxsSW5mb1NJLUhDUy1FQ04wIDo6PQkJCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAorCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgorCQl9CisJfSwKKwljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUhDUy1FQ04wCU9QVElPTkFMCit9CisKK0NlbGxJbmZvU0ktSENTLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LAorCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdC1MQ1ItcjQJCQkJT1BUSU9OQUwsCisJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtRUNOMAlPUFRJT05BTAorfQorCitDZWxsTWVhc3VyZWRSZXN1bHRzIDo6PQkJCQlTRVFVRU5DRSB7CisJY2VsbElkZW50aXR5CQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQlTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlCQkJT1BUSU9OQUwsCisJY2VsbFN5bmNocm9uaXNhdGlvbkluZm8JCQlDZWxsU3luY2hyb25pc2F0aW9uSW5mbwkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJCWNwaWNoLUVjLU4wCQkJCQkJCUNQSUNILUVjLU4wCQkJCQlPUFRJT05BTCwKKwkJCWNwaWNoLVJTQ1AJCQkJCQkJQ1BJQ0gtUlNDUAkJCQkJT1BUSU9OQUwsCisJCQlwYXRobG9zcwkJCQkJCQlQYXRobG9zcwkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRCwKKwkJCXByb3Bvc2VkVEdTTgkJCQkJCVRHU04JCQkJCQlPUFRJT05BTCwKKwkJCXByaW1hcnlDQ1BDSC1SU0NQCQkJCQlQcmltYXJ5Q0NQQ0gtUlNDUAkJCU9QVElPTkFMLAorCQkJcGF0aGxvc3MJCQkJCQkJUGF0aGxvc3MJCQkJCU9QVElPTkFMLAorCQkJdGltZXNsb3RJU0NQLUxpc3QJCQkJCVRpbWVzbG90SVNDUC1MaXN0CQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworQ2VsbE1lYXN1cmVtZW50RXZlbnRSZXN1bHRzIDo6PQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbworfQorCitDZWxsTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQKKworQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMgOjo9CQkJU0VRVUVOQ0UgeworCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCS0tIGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJU0ZOLVNGTi1PVEQtVHlwZSwKKwljZWxsSWRlbnRpdHktcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQkJQk9PTEVBTiwKKwljZWxsU3luY2hyb25pc2F0aW9uSW5mb1JlcG9ydGluZ0luZGljYXRvcgkJCUJPT0xFQU4sCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY3BpY2gtRWMtTjAtcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQkJCUJPT0xFQU4sCisJCQljcGljaC1SU0NQLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCQlCT09MRUFOLAorCQkJcGF0aGxvc3MtcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3RJU0NQLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCUJPT0xFQU4sCisJCQlwcm9wb3NlZFRHU04tUmVwb3J0aW5nUmVxdWlyZWQJCQkJCQlCT09MRUFOLAorCQkJcHJpbWFyeUNDUENILVJTQ1AtcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCQkJcGF0aGxvc3MtcmVwb3J0aW5nSW5kaWNhdG9yCQkJCQkJCUJPT0xFQU4KKwkJfQorCX0KK30KKworQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMiA6Oj0JU0VRVUVOQ0UgeworCXEtT2Zmc2V0MVMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJCURFRkFVTFQgMCwKKwlxLU9mZnNldDJTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCQlPUFRJT05BTCwKKwltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCWhjcy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tUlNDUAkJSENTLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1SU0NQCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVF1YWxNaW4JCQkJCQkJUS1RdWFsTWluCQkJCQlPUFRJT05BTCwKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9LAorCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItUlNDUCA6Oj0JU0VRVUVOQ0UgeworCXEtT2Zmc2V0Uy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQlERUZBVUxUIDAsCisJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVF1YWxNaW4JCQkJCQkJUS1RdWFsTWluCQkJCQlPUFRJT05BTCwKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9LAorCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItRUNOMCA6Oj0JU0VRVUVOQ0UgeworCXEtT2Zmc2V0MVMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJREVGQVVMVCAwLAorCXEtT2Zmc2V0MlMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJREVGQVVMVCAwLAorCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbgkJCQkJT1BUSU9OQUwsCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUhDUy1SU0NQIDo6PQlTRVFVRU5DRSB7CisJcS1PZmZzZXRTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCURFRkFVTFQgMCwKKwltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCWhjcy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tUlNDUAkJSENTLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1SU0NQCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVF1YWxNaW4JCQkJCQkJUS1RdWFsTWluCQkJCQlPUFRJT05BTCwKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9LAorCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItSENTLUVDTjAgOjo9CVNFUVVFTkNFIHsKKwlxLU9mZnNldDFTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCURFRkFVTFQgMCwKKwlxLU9mZnNldDJTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCURFRkFVTFQgMCwKKwltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCWhjcy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tRUNOMAkJSENTLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1FQ04wCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVF1YWxNaW4JCQkJCQkJUS1RdWFsTWluCQkJCQlPUFRJT05BTCwKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9LAorCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCWRlbHRhUXJ4bGV2bWluCQkJCQlEZWx0YVFyeGxldm1pbgkJCQkJT1BUSU9OQUwsCisJZGVsdGFRaGNzCQkJCQkJRGVsdGFSU0NQCQkJCQkJT1BUSU9OQUwKK30KKworQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1BDSEZBQ0gtdjViMGV4dCA6Oj0gU0VRVUVOQ0UgeworCXEtSHlzdC1sLVMtUENICQkJCVEtSHlzdC1TLUZpbmUJCQkJCQlPUFRJT05BTCwKKwlxLUh5c3QtbC1TLUZBQ0gJCQkJUS1IeXN0LVMtRmluZQkJCQkJCU9QVElPTkFMLAorCXEtSHlzdC0yLVMtUENICQkJCVEtSHlzdC1TLUZpbmUJCQkJCQlPUFRJT05BTCwKKwlxLUh5c3QtMi1TLUZBQ0gJCQkJUS1IeXN0LVMtRmluZQkJCQkJCU9QVElPTkFMLAorCXQtUmVzZWxlY3Rpb24tUy1QQ0gJCQlULVJlc2VsZWN0aW9uLVMJCQkJCQlPUFRJT05BTCwKKwl0LVJlc2VsZWN0aW9uLVMtRkFDSAkJVC1SZXNlbGVjdGlvbi1TLUZpbmUJCQkJT1BUSU9OQUwKK30KKworQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1RyZXNlbGVjdGlvblNjYWxpbmctdjVjMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIEZvciBzcGVlZCBkZXRlY3Rpb24sIHRoZSBzYW1lIEhDUyBwYXJhbWV0ZXJzIGFyZSB1dGlsaXNlZAorCW5vbi1IQ1MtdC1DUi1NYXgJCQkJCQkJVC1DUk1heAkJCQkJCQkJCU9QVElPTkFMLAorCXNwZWVkRGVwZW5kZW50U2NhbGluZ0ZhY3RvcgkJCQkJU3BlZWREZXBlbmRlbnRTY2FsaW5nRmFjdG9yCQkJCU9QVElPTkFMLAorCWludGVyRnJlcXVlbmN5VHJlc2VsZWN0aW9uU2NhbGluZ0ZhY3RvcgkJVHJlc2VsZWN0aW9uU2NhbGluZ0ZhY3RvcgkJCQlPUFRJT05BTCwKKwlpbnRlclJBVFRyZXNlbGVjdGlvblNjYWxpbmdGYWN0b3IJCQlUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yCQkJCU9QVElPTkFMCit9CisKK0NlbGxzRm9ySW50ZXJGcmVxTWVhc0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFDZWxsSUQKK0NlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlJbnRlclJBVENlbGxJRAorQ2VsbHNGb3JJbnRyYUZyZXFNZWFzTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCUludHJhRnJlcUNlbGxJRAorCitDZWxsU3luY2hyb25pc2F0aW9uSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlCQkJQ291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlCQlPUFRJT05BTCwKKwkJCXRtCQkJCQkJCQkJSU5URUdFUigwLi4zODM5OSkJCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNvdW50Qy1TRk4tRnJhbWUtZGlmZmVyZW5jZQkJCUNvdW50Qy1TRk4tRnJhbWUtZGlmZmVyZW5jZQkJT1BUSU9OQUwKKwkJfQorCX0JCQkJCQkJCit9CisKK0NlbGxUb1JlcG9ydCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlic2ljUmVwb3J0ZWQJCQkJCQlCU0lDUmVwb3J0ZWQKK30KKworQ2VsbFRvUmVwb3J0TGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlDZWxsVG9SZXBvcnQKKworQ29kZVBoYXNlU2VhcmNoV2luZG93IDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXcxMDIzLCB3MSwgdzIsIHczLCB3NCwgdzYsIHc4LAorCQkJCQkJCQkJCXcxMiwgdzE2LCB3MjQsIHczMiwgdzQ4LCB3NjQsCisJCQkJCQkJCQkJdzk2LCB3MTI4LCB3MTkyIH0KKworQ291bnRDLVNGTi1GcmFtZS1kaWZmZXJlbmNlIDo6PSBTRVFVRU5DRSB7CisJLS0gQWN0dWFsIHZhbHVlIGNvdW50Qy1TRk4tSGlnaCA9IElFIHZhbHVlICogMjU2CisJY291bnRDLVNGTi1IaWdoCQkJCQlJTlRFR0VSKDAuLjE1KSwKKwlvZmYJCQkJCQkJCUlOVEVHRVIoMC4uMjU1KQorfQorCistLSBTUEFSRTogQ1BJQ0gtRWMtTm8sIE1heCA9IDQ5CistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorQ1BJQ0gtRWMtTjAgOjo9CQkJCQkJSU5URUdFUiAoMC4uNjMpCisKKy0tIFNQQVJFOiBDUElDSC0gUlNDUCwgTWF4ID0gOTEKKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitDUElDSC1SU0NQIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjEyNykKKworCitEZWx0YVBSQyA6Oj0JCQkJCQlJTlRFR0VSICgtMTI3Li4xMjcpCisKKy0tQWN0dWFsIHZhbHVlIERlbHRhUXJ4bGV2bWluID0gSUUgdmFsdWUgKiAyCitEZWx0YVFyeGxldm1pbiA6Oj0gSU5URUdFUiAoLTIuLi0xKQorCitEZWx0YVJTQ1AgOjo9IElOVEVHRVIgKC01Li4tMSkKKworRGVsdGFSU0NQUGVyQ2VsbCA6Oj0gU0VRVUVOQ0UgeworCWRlbHRhUlNDUAkJCQkJCURlbHRhUlNDUAlPUFRJT05BTAorfQorCistLSBBY3R1YWwgdmFsdWUgRGVsdGFSUkMgPSBJRSB2YWx1ZSAqIDAuMDMyCitEZWx0YVJSQyA6Oj0JCQkJCQlJTlRFR0VSICgtNy4uNykKKworREdQUy1Db3JyZWN0aW9uU2F0SW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJc2F0SUQJCQkJCQkJCVNhdElELAorCWlvZGUJCQkJCQkJCUlPREUsCisJdWRyZQkJCQkJCQkJVURSRSwKKwlwcmMJCQkJCQkJCQlQUkMsCisJcnJjCQkJCQkJCQkJUlJDLAorLS0gZHVtbXkxIGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkxCQkJCQkJCURlbHRhUFJDLAorCWR1bW15MgkJCQkJCQlEZWx0YVJSQywKKwktLSBkdW1teTMgYW5kIGR1bW15NCBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLiBUaGV5IHNob3VsZCBub3QKKwktLSBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15MwkJCQkJCQlEZWx0YVBSQwkJCU9QVElPTkFMLAorCWR1bW15NAkJCQkJCQlEZWx0YVJSQwkJCU9QVElPTkFMCit9CisKK0RHUFMtQ29ycmVjdGlvblNhdEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCisJCQkJCQkJCQkJREdQUy1Db3JyZWN0aW9uU2F0SW5mbworCitEaWZmQ29ycmVjdGlvblN0YXR1cyA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl1ZHJlLTEtMCwgdWRyZS0wLTc1LCB1ZHJlLTAtNSwgdWRyZS0wLTMsCisJCQkJCQkJCQkJdWRyZS0wLTIsIHVkcmUtMC0xLCBub0RhdGEsIGludmFsaWREYXRhIH0KKworREwtVHJhbnNwb3J0Q2hhbm5lbEJMRVIgOjo9CQkJSU5URUdFUiAoMC4uNjMpCisKK0RvcHBsZXJVbmNlcnRhaW50eSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJaHoxMi01LCBoejI1LCBoejUwLCBoejEwMCwgaHoyMDAsCisJCQkJCQkJCQkJc3BhcmUzLCBzcGFyZTIsIHNwYXJlMSB9CisKK0VsbGlwc29pZFBvaW50IDo6PQkJCQkJU0VRVUVOQ0UgewkKKwlsYXRpdHVkZVNpZ24JCUVOVU1FUkFURUQgeyBub3J0aCwgc291dGggfSwKKwlsYXRpdHVkZQkJCUlOVEVHRVIgKDAuLjgzODg2MDcpLAorCWxvbmdpdHVkZQkJCUlOVEVHRVIgKC04Mzg4NjA4Li44Mzg4NjA3KQorfQorCisKK0VsbGlwc29pZFBvaW50QWx0aXR1ZGUgOjo9CQkJU0VRVUVOQ0UgeworCWxhdGl0dWRlU2lnbgkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAorCWxhdGl0dWRlCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCisJbG9uZ2l0dWRlCQkJSU5URUdFUiAoLTgzODg2MDguLjgzODg2MDcpLAorCWFsdGl0dWRlRGlyZWN0aW9uCUVOVU1FUkFURUQge2hlaWdodCwgZGVwdGh9LAorCWFsdGl0dWRlCQkJSU5URUdFUiAoMC4uMzI3NjcpCit9CisKKworRWxsaXBzb2lkUG9pbnRBbHRpdHVkZUVsbGlwc29pZGUgOjo9CVNFUVVFTkNFIHsKKwlsYXRpdHVkZVNpZ24JCQlFTlVNRVJBVEVEIHsgbm9ydGgsIHNvdXRoIH0sCisJbGF0aXR1ZGUJCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCisJbG9uZ2l0dWRlCQkJCUlOVEVHRVIgKC04Mzg4NjA4Li44Mzg4NjA3KSwKKwlhbHRpdHVkZURpcmVjdGlvbgkJRU5VTUVSQVRFRCB7aGVpZ2h0LCBkZXB0aH0sCisJYWx0aXR1ZGUJCQkJSU5URUdFUiAoMC4uMzI3NjcpLAorCXVuY2VydGFpbnR5U2VtaU1ham9yCUlOVEVHRVIgKDAuLjEyNyksCisJdW5jZXJ0YWludHlTZW1pTWlub3IJSU5URUdFUiAoMC4uMTI3KSwKKwktLSBBY3R1YWwgdmFsdWUgb3JpZW50YXRpb25NYWpvckF4aXMgPSBJRSB2YWx1ZSAqIDIKKwlvcmllbnRhdGlvbk1ham9yQXhpcwlJTlRFR0VSICgwLi44OSksCisJdW5jZXJ0YWludHlBbHRpdHVkZQkJSU5URUdFUiAoMC4uMTI3KSwKKwljb25maWRlbmNlCQkJCUlOVEVHRVIgKDAuLjEwMCkKK30KKworCitFbGxpcHNvaWRQb2ludFVuY2VydENpcmNsZSA6Oj0JCVNFUVVFTkNFIHsKKwlsYXRpdHVkZVNpZ24JCQlFTlVNRVJBVEVEIHsgbm9ydGgsIHNvdXRoIH0sCisJbGF0aXR1ZGUJCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCisJbG9uZ2l0dWRlCQkJCUlOVEVHRVIgKC04Mzg4NjA4Li44Mzg4NjA3KSwKKwl1bmNlcnRhaW50eUNvZGUJCQlJTlRFR0VSICgwLi4xMjcpCit9CisKKworRWxsaXBzb2lkUG9pbnRVbmNlcnRFbGxpcHNlIDo6PQkJU0VRVUVOQ0UgeworCWxhdGl0dWRlU2lnbgkJCUVOVU1FUkFURUQgeyBub3J0aCwgc291dGggfSwKKwlsYXRpdHVkZQkJCQlJTlRFR0VSICgwLi44Mzg4NjA3KSwKKwlsb25naXR1ZGUJCQkJSU5URUdFUiAoLTgzODg2MDguLjgzODg2MDcpLAorCXVuY2VydGFpbnR5U2VtaU1ham9yCUlOVEVHRVIgKDAuLjEyNyksCisJdW5jZXJ0YWludHlTZW1pTWlub3IJSU5URUdFUiAoMC4uMTI3KSwKKwktLSBBY3R1YWwgdmFsdWUgb3JpZW50YXRpb25NYWpvckF4aXMgPSBJRSB2YWx1ZSAqIDIKKwlvcmllbnRhdGlvbk1ham9yQXhpcwlJTlRFR0VSICgwLi44OSksCisJY29uZmlkZW5jZQkJCQlJTlRFR0VSICgwLi4xMDApCit9CisKKworRW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcG9zc2libGVIZWF2eU11bHRpcGF0aE5MT1MsCisJCQkJCQkJCQkJbGlnaHRNdWx0aXBhdGhMT1MsCisJCQkJCQkJCQkJbm90RGVmaW5lZCwKKwkJCQkJCQkJCQlzcGFyZSB9CisKK0V2ZW50MWEgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKKwlyZXBvcnRpbmdSYW5nZQkJCQkJCVJlcG9ydGluZ1JhbmdlLAorCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCU9QVElPTkFMLAorCXcJCQkJCQkJCQlXLAorCXJlcG9ydERlYWN0aXZhdGlvblRocmVzaG9sZAkJCVJlcG9ydERlYWN0aXZhdGlvblRocmVzaG9sZCwKKwlyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCisJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsCit9CisKK0V2ZW50MWEtcjQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yLAorCXJlcG9ydGluZ1JhbmdlCQkJCQkJUmVwb3J0aW5nUmFuZ2UsCisJZm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QJCQkJRm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QtcjQJCQlPUFRJT05BTCwKKwl3CQkJCQkJCQkJVywKKwlyZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQJCQlSZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQsCisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbAorfQorCitFdmVudDFhLUxDUi1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKKwlyZXBvcnRpbmdSYW5nZQkJCQkJCVJlcG9ydGluZ1JhbmdlLAorCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LUxDUi1yNAkJCU9QVElPTkFMLAorCXcJCQkJCQkJCQlXLAorCXJlcG9ydERlYWN0aXZhdGlvblRocmVzaG9sZAkJCVJlcG9ydERlYWN0aXZhdGlvblRocmVzaG9sZCwKKwlyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCisJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsCit9CisKK0V2ZW50MWIgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKKwlyZXBvcnRpbmdSYW5nZQkJCQkJCVJlcG9ydGluZ1JhbmdlLAorCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCU9QVElPTkFMLAorCXcJCQkJCQkJCQlXCit9CisKK0V2ZW50MWItcjQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24xLAorCXJlcG9ydGluZ1JhbmdlCQkJCQkJUmVwb3J0aW5nUmFuZ2UsCisJZm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QJCQkJRm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QtcjQJCQlPUFRJT05BTCwKKwl3CQkJCQkJCQkJVworfQorCitFdmVudDFiLUxDUi1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKKwlyZXBvcnRpbmdSYW5nZQkJCQkJCVJlcG9ydGluZ1JhbmdlLAorCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LUxDUi1yNAkJCU9QVElPTkFMLAorCXcJCQkJCQkJCQlXCit9CisKK0V2ZW50MWMgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwlyZXBsYWNlbWVudEFjdGl2YXRpb25UaHJlc2hvbGQJCVJlcGxhY2VtZW50QWN0aXZhdGlvblRocmVzaG9sZCwKKwlyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCisJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsCit9CisKK0V2ZW50MWQgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMglPUFRJT05BTCwKKwl1c2VDSU8JCQkJCQkJCUJPT0xFQU4JCQkJCU9QVElPTkFMCit9CisKK0V2ZW50MWUgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yLAorCXRocmVzaG9sZFVzZWRGcmVxdWVuY3kJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeQorfQorCitFdmVudDFlLXI2IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yLAorCXRocmVzaG9sZFVzZWRGcmVxdWVuY3kJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNgorfQorCitFdmVudDFmIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKKwl0aHJlc2hvbGRVc2VkRnJlcXVlbmN5CQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKK30KKworRXZlbnQxZi1yNiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKKwl0aHJlc2hvbGRVc2VkRnJlcXVlbmN5CQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3ktcjYKK30KKworRXZlbnQxai1yNiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlyZXBsYWNlbWVudEFjdGl2YXRpb25UaHJlc2hvbGQJCVJlcGxhY2VtZW50QWN0aXZhdGlvblRocmVzaG9sZCwKKwlyZXBvcnRpbmdBbW91bnQJCQkJCQlSZXBvcnRpbmdBbW91bnQsCisJcmVwb3J0aW5nSW50ZXJ2YWwJCQkJCVJlcG9ydGluZ0ludGVydmFsCit9CisKK0V2ZW50MmEgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kIHNob3VsZCBiZSBpZ25vcmVkCisJZHVtbXkJCQkJCQkJCVRocmVzaG9sZCwKKwl1c2VkRnJlcVcJCQkJCQkJVywKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCisJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJT1BUSU9OQUwKK30KKworRXZlbnQyYS1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdXNlZEZyZXFXCQkJCQkJCVcsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAorCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxV0xpc3QtcjYJCQkJCU9QVElPTkFMCit9CisKK0V2ZW50MmIgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl1c2VkRnJlcVRocmVzaG9sZAkJCQkJVGhyZXNob2xkLAorCXVzZWRGcmVxVwkJCQkJCQlXLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKKwlub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlPUFRJT05BTAorfQorCitFdmVudDJiLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl1c2VkRnJlcVRocmVzaG9sZAkJCQkJVGhyZXNob2xkLXI2LAorCXVzZWRGcmVxVwkJCQkJCQlXLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKKwlub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QtcjYJCQlPUFRJT05BTAorfQorCitFdmVudDJjIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAorCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU9QVElPTkFMCit9CisKK0V2ZW50MmMtcjYgOjo9CQkJCQkJU0VRVUVOQ0UgeworCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKKwlub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QtcjYJCQlPUFRJT05BTAorfQorCitFdmVudDJkIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZCwKKwl1c2VkRnJlcVcJCQkJCQkJVywKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworRXZlbnQyZC1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZC1yNiwKKwl1c2VkRnJlcVcJCQkJCQkJVywKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworRXZlbnQyZSA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKKwlub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlPUFRJT05BTAorfQorCitFdmVudDJlLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCisJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0LXI2CQkJT1BUSU9OQUwKK30KKworRXZlbnQyZiA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCXVzZWRGcmVxVGhyZXNob2xkCQkJCQlUaHJlc2hvbGQsCisJdXNlZEZyZXFXCQkJCQkJCVcsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CQorCitFdmVudDJmLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl1c2VkRnJlcVRocmVzaG9sZAkJCQkJVGhyZXNob2xkLXI2LAorCXVzZWRGcmVxVwkJCQkJCQlXLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCitFdmVudDNhIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdGhyZXNob2xkT3duU3lzdGVtCQkJCQlUaHJlc2hvbGQsCisJdwkJCQkJCQkJCVcsCisJdGhyZXNob2xkT3RoZXJTeXN0ZW0JCQkJVGhyZXNob2xkLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQkKKworRXZlbnQzYiA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCXRocmVzaG9sZE90aGVyU3lzdGVtCQkJCVRocmVzaG9sZCwKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKKwkKK30JCisKK0V2ZW50M2MgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl0aHJlc2hvbGRPdGhlclN5c3RlbQkJCQlUaHJlc2hvbGQsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CQorCitFdmVudDNkIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CQorCitFdmVudElESW50ZXJGcmVxIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllMmEsIGUyYiwgZTJjLCBlMmQsIGUyZSwgZTJmLCBzcGFyZTIsIHNwYXJlMSB9CisKK0V2ZW50SURJbnRlclJBVCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWUzYSwgZTNiLCBlM2MsIGUzZCB9CisKK0V2ZW50SURJbnRyYUZyZXEgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWUxYSwgZTFiLCBlMWMsIGUxZCwgZTFlLAorCQkJCQkJCQkJCWUxZiwgZTFnLCBlMWgsIGUxaSwgZTFqLAorCQkJCQkJCQkJCXNwYXJlNiwgc3BhcmU1LCBzcGFyZTQsIHNwYXJlMywgc3BhcmUyLAorCQkJCQkJCQkJCXNwYXJlMSB9CisKK0V2ZW50UmVzdWx0cyA6Oj0JCQkJCUNIT0lDRSB7CisJaW50cmFGcmVxRXZlbnRSZXN1bHRzCQkJCUludHJhRnJlcUV2ZW50UmVzdWx0cywKKwlpbnRlckZyZXFFdmVudFJlc3VsdHMJCQkJSW50ZXJGcmVxRXZlbnRSZXN1bHRzLAorCWludGVyUkFURXZlbnRSZXN1bHRzCQkJCUludGVyUkFURXZlbnRSZXN1bHRzLAorCXRyYWZmaWNWb2x1bWVFdmVudFJlc3VsdHMJCQlUcmFmZmljVm9sdW1lRXZlbnRSZXN1bHRzLAorCXF1YWxpdHlFdmVudFJlc3VsdHMJCQkJCVF1YWxpdHlFdmVudFJlc3VsdHMsCisJdWUtSW50ZXJuYWxFdmVudFJlc3VsdHMJCQkJVUUtSW50ZXJuYWxFdmVudFJlc3VsdHMsCisJdWUtcG9zaXRpb25pbmctTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudEV2ZW50UmVzdWx0cywKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCitFeHRyYURvcHBsZXJJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJLS0gQWN0dWFsIHZhbHVlIGRvcHBsZXIxc3RPcmRlciA9IElFIHZhbHVlICogMC4wMjMKKwlkb3BwbGVyMXN0T3JkZXIJCQkJCQlJTlRFR0VSICgtNDIuLjIxKSwKKwlkb3BwbGVyVW5jZXJ0YWludHkJCQkJCURvcHBsZXJVbmNlcnRhaW50eQorfQorCitGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvIDo6PQlTRVFVRU5DRSB7CisJZkFDSC1tZWFzLW9jY2FzaW9uLWNvZWZmCQkJSU5URUdFUiAoMS4uMTIpCQkJCQkJT1BUSU9OQUwsCisJaW50ZXItZnJlcS1GREQtbWVhcy1pbmQJCQkJQk9PTEVBTiwKKwktLSBpbnRlci1mcmVxLVRERC1tZWFzLWluZCBpcyBmb3IgMy44NE1jcHMgVEREIGFuZCA3LjY4IE1jcHMgVERELiBGb3IgMS4yOE1jcHMgVERELCB0aGUgSUUgaW4KKwktLSBGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvLUxDUi1yNC1leHQgaXMgdXNlZC4KKwlpbnRlci1mcmVxLVRERC1tZWFzLWluZAkJCQlCT09MRUFOLAorCWludGVyLVJBVC1tZWFzLWluZAkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE90aGVyUkFUKSkgT0YKKwkJCQkJCQkJCQkJUkFULVR5cGUJCQkJCQlPUFRJT05BTAorfQorCitGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwlpbnRlci1mcmVxLVRERDEyOC1tZWFzLWluZAkJCQkJQk9PTEVBTgorfQorCitGaWx0ZXJDb2VmZmljaWVudCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZmMwLCBmYzEsIGZjMiwgZmMzLCBmYzQsIGZjNSwgCisJCQkJCQkJCQkJZmM2LCBmYzcsIGZjOCwgZmM5LCBmYzExLCBmYzEzLCAKKwkJCQkJCQkJCQlmYzE1LCBmYzE3LCBmYzE5LCBzcGFyZTEgfQorCistLSBBY3R1YWwgdmFsdWUgRmluZVNGTi1TRk4gPSBJRSB2YWx1ZSAqIDAuMDYyNQorRmluZVNGTi1TRk4gOjo9CQkJCQkJSU5URUdFUiAoMC4uMTUpCisKK0ZvcmJpZGRlbkFmZmVjdENlbGwgOjo9CQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8KK30KKworRm9yYmlkZGVuQWZmZWN0Q2VsbC1yNCA6Oj0JCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0Cit9CisKK0ZvcmJpZGRlbkFmZmVjdENlbGwtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNAorfQorCitGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCUZvcmJpZGRlbkFmZmVjdENlbGwKKworRm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsLXI0CisKK0ZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsLUxDUi1yNAorCitGcmVxUXVhbGl0eUVzdGltYXRlUXVhbnRpdHktRkREIDo6PSBFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljcGljaC1FYy1OMCwKKwkJCQkJCQkJCQljcGljaC1SU0NQIH0KKworRnJlcVF1YWxpdHlFc3RpbWF0ZVF1YW50aXR5LVRERCA6Oj0gRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcHJpbWFyeUNDUENILVJTQ1AgfQorCitHUFMtTWVhc3VyZW1lbnRQYXJhbSA6Oj0JCQlTRVFVRU5DRSB7CisJc2F0ZWxsaXRlSUQJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCWMtTjAJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwlkb3BwbGVyCQkJCQkJCQlJTlRFR0VSICgtMzI3NjguLjMyNzY4KSwKKwl3aG9sZUdQUy1DaGlwcwkJCQkJCUlOVEVHRVIgKDAuLjEwMjIpLAorCWZyYWN0aW9uYWxHUFMtQ2hpcHMJCQkJCUlOVEVHRVIgKDAuLjEwMjMpLAorCW11bHRpcGF0aEluZGljYXRvcgkJCQkJTXVsdGlwYXRoSW5kaWNhdG9yLAorCXBzZXVkb3JhbmdlUk1TLUVycm9yCQkJCUlOVEVHRVIgKDAuLjYzKQorfQorCitHUFMtTWVhc3VyZW1lbnRQYXJhbUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U2F0KSkgT0YKKwkJCQkJCQkJCQlHUFMtTWVhc3VyZW1lbnRQYXJhbQorCitHU00tQ2FycmllclJTU0kgOjo9CQkJCQlCSVQgU1RSSU5HIChTSVpFICg2KSkKKworCitHU00tTWVhc3VyZWRSZXN1bHRzIDo6PSAJCQlTRVFVRU5DRSB7CisJZ3NtLUNhcnJpZXJSU1NJCQkJCQkJR1NNLUNhcnJpZXJSU1NJCQkJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCUlOVEVHRVIgKDQ2Li4xNzMpCQkJCQlPUFRJT05BTCwKKwlic2ljUmVwb3J0ZWQJCQkJCQlCU0lDUmVwb3J0ZWQsCisJLS0gZHVtbXkyIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15MgkJCQkJCQkJT2JzZXJ2ZWRUaW1lRGlmZmVyZW5jZVRvR1NNCQkJT1BUSU9OQUwKK30KKworR1NNLU1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJlcG9ydGVkR1NNQ2VsbHMpKSBPRgorCQkJCQkJCQkJCUdTTS1NZWFzdXJlZFJlc3VsdHMJCisKK0dQUy1UT1ctMW1zZWMgOjo9CQkJCQlJTlRFR0VSICgwLi42MDQ3OTk5OTkpCisKK0dQUy1UT1ctQXNzaXN0IDo6PQkJCQkJU0VRVUVOQ0UgeworCXNhdElECQkJCQkJCQlTYXRJRCwKKwl0bG0tTWVzc2FnZQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNCkpLAorCXRsbS1SZXNlcnZlZAkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIpKSwKKwlhbGVydAkJCQkJCQkJQk9PTEVBTiwKKwlhbnRpU3Bvb2YJCQkJCQkJQk9PTEVBTgorfQorCitHUFMtVE9XLUFzc2lzdExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgorCQkJCQkJCQkJCUdQUy1UT1ctQXNzaXN0CisKK0hDUy1DZWxsUmVzZWxlY3RJbmZvcm1hdGlvbi1SU0NQIDo6PQkJU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IFRoZSBkZWZhdWx0IHZhbHVlIGZvciBwZW5hbHR5VGltZSBpcyAibm90VXNlZCIKKwktLSBUZW1wb3Jhcnkgb2Zmc2V0IGlzIG5lc3RlZCBpbnNpZGUgUGVuYWx0eVRpbWUtUlNDUAorCXBlbmFsdHlUaW1lCQkJCQkJCQkJUGVuYWx0eVRpbWUtUlNDUAorfQorCitIQ1MtQ2VsbFJlc2VsZWN0SW5mb3JtYXRpb24tRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgcGVuYWx0eVRpbWUgaXMgIm5vdFVzZWQiCisJLS0gVGVtcG9yYXJ5IG9mZnNldCBpcyBuZXN0ZWQgaW5zaWRlIFBlbmFsdHlUaW1lLUVDTjAKKwlwZW5hbHR5VGltZQkJCQkJCQlQZW5hbHR5VGltZS1FQ04wCit9CisKK0hDUy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tUlNDUCA6Oj0gU0VRVUVOQ0UgeworCWhjcy1QUklPCQkJCQkJCUhDUy1QUklPCQkJCQkJCURFRkFVTFQgMCwKKwlxLUhDUwkJCQkJCQkJUS1IQ1MJCQkJCQkJCURFRkFVTFQgMCwKKwloY3MtQ2VsbFJlc2VsZWN0SW5mb3JtYXRpb24JCQlIQ1MtQ2VsbFJlc2VsZWN0SW5mb3JtYXRpb24tUlNDUAorfQorCitIQ1MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLUVDTjAgOjo9IFNFUVVFTkNFIHsKKwloY3MtUFJJTwkJCQkJCQlIQ1MtUFJJTwkJCQkJCQlERUZBVUxUIDAsCisJcS1IQ1MJCQkJCQkJCVEtSENTCQkJCQkJCQlERUZBVUxUIDAsCisJaGNzLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uCQkJSENTLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uLUVDTjAKK30KKworSENTLVBSSU8gOjo9CQkJCQkJSU5URUdFUiAoMC4uNykKKworSENTLVNlcnZpbmdDZWxsSW5mb3JtYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJaGNzLVBSSU8JCQkJCQkJSENTLVBSSU8JCQkJCQkJREVGQVVMVCAwLAorCXEtSENTCQkJCQkJCQlRLUhDUwkJCQkJCQkJREVGQVVMVCAwLAorCXQtQ1ItTWF4CQkJCQkJCVQtQ1JNYXgJCQkJCQkJCU9QVElPTkFMCit9CisKK0hvcml6b250YWxWZWxvY2l0eSA6Oj0JCQkJU0VRVUVOQ0UgeworCWJlYXJpbmcJCQkJCQkJCUlOVEVHRVIgKDAuLjM1OSksCisJaG9yaXpvbnRhbFNwZWVkCQkJCQkJSU5URUdFUiAoMC4uMjA0NykKKwl9CisKK0hvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eSA6Oj0JU0VRVUVOQ0UgeworCXZlcnRpY2FsU3BlZWREaXJlY3Rpb24JCQkJRU5VTUVSQVRFRCB7IHVwd2FyZCwgZG93bndhcmQgfSwKKwliZWFyaW5nCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAorCWhvcml6b250YWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpLAorCXZlcnRpY2FsU3BlZWQJCQkJCQlJTlRFR0VSICgwLi4yNTUpCit9CisKK0hvcml6b250YWxWZWxvY2l0eVdpdGhVbmNlcnRhaW50eSA6Oj0JU0VRVUVOQ0UgeworCWJlYXJpbmcJCQkJCQkJCUlOVEVHRVIgKDAuLjM1OSksCisJaG9yaXpvbnRhbFNwZWVkCQkJCQkJSU5URUdFUiAoMC4uMjA0NyksCisJaG9yaXpvbnRhbFNwZWVkVW5jZXJ0YWludHkJCQlJTlRFR0VSICgwLi4yNTUpCit9CisKK0hvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eUFuZFVuY2VydGFpbnR5IDo6PQlTRVFVRU5DRSB7CisJdmVydGljYWxTcGVlZERpcmVjdGlvbgkJCQlFTlVNRVJBVEVEIHsgdXB3YXJkLCBkb3dud2FyZCB9LAorCWJlYXJpbmcJCQkJCQkJCUlOVEVHRVIgKDAuLjM1OSksCisJaG9yaXpvbnRhbFNwZWVkCQkJCQkJSU5URUdFUiAoMC4uMjA0NyksCisJdmVydGljYWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjI1NSksCisJaG9yaXpvbnRhbFNwZWVkVW5jZXJ0YWludHkJCQlJTlRFR0VSICgwLi4yNTUpCit9CisKKy0tIEFjdHVhbCB2YWx1ZSBIeXN0ZXJlc2lzID0gSUUgdmFsdWUgKiAwLjUKK0h5c3RlcmVzaXMgOjo9CQkJCQkJSU5URUdFUiAoMC4uMTUpCisKKy0tIEFjdHVhbCB2YWx1ZSBIeXN0ZXJlc2lzSW50ZXJGcmVxID0gSUUgdmFsdWUgKiAwLjUKK0h5c3RlcmVzaXNJbnRlckZyZXEgOjo9CQkJCUlOVEVHRVIgKDAuLjI5KQorCitJbnRlckZyZXFDZWxsIDo6PQkJCQkJU0VRVUVOQ0UgeworCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvLAorCW5vbkZyZXFSZWxhdGVkRXZlbnRSZXN1bHRzCQkJQ2VsbE1lYXN1cmVtZW50RXZlbnRSZXN1bHRzCit9CisKK0ludGVyRnJlcUNlbGwtTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKKwlub25GcmVxUmVsYXRlZEV2ZW50UmVzdWx0cwkJCUNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cy1MQ1ItcjQKK30KKworSW50ZXJGcmVxQ2VsbElEIDo6PQkJCQkJSU5URUdFUiAoMC4ubWF4Q2VsbE1lYXMtMSkKKworSW50ZXJGcmVxQ2VsbEluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlPUFRJT05BTCwKKwljZWxsc0ZvckludGVyRnJlcU1lYXNMaXN0CQkJQ2VsbHNGb3JJbnRlckZyZXFNZWFzTGlzdAkJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxJbmZvTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsTGlzdC1yNAkJCQlPUFRJT05BTCwKKwljZWxsc0ZvckludGVyRnJlcU1lYXNMaXN0CQkJQ2VsbHNGb3JJbnRlckZyZXFNZWFzTGlzdAkJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludGVyRnJlcUNlbGxMaXN0CQkJCU5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LVJTQ1AJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludGVyRnJlcUNlbGxMaXN0CQkJCU5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUVDTjAJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtUlNDUCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUAlPUFRJT05BTAorfQorSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludGVyRnJlcUNlbGxMaXN0CQkJCU5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wCU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQLUxDUiA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1SU0NQLUxDUi1yNAkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAtTENSIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludGVyRnJlcUNlbGxMaXN0CQkJCU5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUVDTjAtTENSLXI0CQlPUFRJT05BTAorfQorCitJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AtTENSIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRlckZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludGVyRnJlcUNlbGxMaXN0CQkJCU5ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTAorfQorSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wLUxDUiA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtRUNOMC1MQ1ItcjQJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxQ2VsbExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFDZWxsCisKK0ludGVyRnJlcUNlbGxMaXN0LUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFDZWxsLUxDUi1yNAorCitJbnRlckZyZXFDZWxsTWVhc3VyZWRSZXN1bHRzTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlDZWxsTWVhc3VyZWRSZXN1bHRzCisKK0ludGVyRnJlcUV2ZW50IDo6PQkJCQkJQ0hPSUNFIHsKKwlldmVudDJhCQkJCQkJCQlFdmVudDJhLAorCWV2ZW50MmIJCQkJCQkJCUV2ZW50MmIsCisJZXZlbnQyYwkJCQkJCQkJRXZlbnQyYywKKwlldmVudDJkCQkJCQkJCQlFdmVudDJkLAorCWV2ZW50MmUJCQkJCQkJCUV2ZW50MmUsCisJZXZlbnQyZgkJCQkJCQkJRXZlbnQyZgorfQorCitJbnRlckZyZXFFdmVudC1yNiA6Oj0JCQkJQ0hPSUNFIHsKKwlldmVudDJhCQkJCQkJCQlFdmVudDJhLXI2LAorCWV2ZW50MmIJCQkJCQkJCUV2ZW50MmItcjYsCisJZXZlbnQyYwkJCQkJCQkJRXZlbnQyYy1yNiwKKwlldmVudDJkCQkJCQkJCQlFdmVudDJkLXI2LAorCWV2ZW50MmUJCQkJCQkJCUV2ZW50MmUtcjYsCisJZXZlbnQyZgkJCQkJCQkJRXZlbnQyZi1yNgorfQorCitJbnRlckZyZXFFdmVudExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCUludGVyRnJlcUV2ZW50CisKK0ludGVyRnJlcUV2ZW50TGlzdC1yNiA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFFdmVudC1yNgorCistLUZvbGxvd2luZyBJRSBzaGFsbCBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2YgQ1BJQ0ggUlNDUChGREQpIG9yIFByaW1hcnkgQ0NQQ0ggUlNDUChUREQpCistLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgdGhlIGNlbGxzIGluIEludGVyRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdAorLS1UaGUgSUUgaXMgb25seSB1c2VkIGZvciBtZWFzdXJlZCByZXN1bHRzIGFuZCBub3QgZm9yIGFkZGl0aW9uYWwgbWVhc3VyZWQgcmVzdWx0cy4KK0ludGVyRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdC12NTkwZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQkJRGVsdGFSU0NQUGVyQ2VsbAorCitJbnRlci1GcmVxRXZlbnRDcml0ZXJpYS12NTkwZXh0IDo6PSBTRVFVRU5DRSB7CisJdGhyZWhvbGRVc2VkRnJlcXVlbmN5LWRlbHRhCQkJCURlbHRhUlNDUCwKKwl0aHJlaG9sZE5vblVzZWRGcmVxdWVuY3ktZGVsdGFMaXN0CQlUaHJlaG9sZE5vblVzZWRGcmVxdWVuY3ktZGVsdGFMaXN0ICAJT1BUSU9OQUwKK30KKworLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIHRoZSBldmVudHMgaW4gSW50ZXItRnJlcUV2ZW50TGlzdAorSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCQlJbnRlci1GcmVxRXZlbnRDcml0ZXJpYS12NTkwZXh0CisKKy0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiByZWxldmFudCBldmVudHMgaW4gSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0CistLWkuZS4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IG9jY3VyYW5jZSBvZiBldmVudCAxZSwgMWYsIDFoLCAxaSwKKy0tdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBzZWNvbmQgb2NjdXJhbmNlIG9mIGV2ZW50IDFlLCAxZiwgMWgsIDFpIAorSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCQlEZWx0YVJTQ1AKKworLS1Gb2xsb3dpbmcgSUUgc2hhbGwgYmUgdXNlZCByZWdhcmRsZXNzIG9mIENQSUNIIFJTQ1AoRkREKSBvciBQcmltYXJ5IENDUENIIFJTQ1AoVEREKQorLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIHRoZSBjZWxscyBpbiBJbnRyYUZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QKKy0tVGhlIElFIGlzIG9ubHkgdXNlZCBmb3IgbWVhc3VyZWQgcmVzdWx0cyBhbmQgbm90IGZvciBhZGRpdGlvbmFsIG1lYXN1cmVkIHJlc3VsdHMuCitJbnRyYUZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCURlbHRhUlNDUFBlckNlbGwKKworSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUgOjo9IFNFUVVFTkNFIHsKKwlwZXJpb2RpY1JlcG9ydGluZ0luZm8tMWIJCQlQZXJpb2RpY1JlcG9ydGluZ0luZm8tMWIKK30KKworUGVyaW9kaWNSZXBvcnRpbmdJbmZvLTFiIDo6PSBTRVFVRU5DRSB7CisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbAorfQorCitJbnRlckZyZXFFdmVudFJlc3VsdHMgOjo9CQkJU0VRVUVOQ0UgeworCWV2ZW50SUQJCQkJCQkJCUV2ZW50SURJbnRlckZyZXEsCisJaW50ZXJGcmVxQ2VsbExpc3QJCQkJCUludGVyRnJlcUNlbGxMaXN0CQkJCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFFdmVudFJlc3VsdHMtTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgeworCWV2ZW50SUQJCQkJCQkJCUV2ZW50SURJbnRlckZyZXEsCisJaW50ZXJGcmVxQ2VsbExpc3QJCQkJCUludGVyRnJlcUNlbGxMaXN0LUxDUi1yNC1leHQJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcU1lYXNRdWFudGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJcmVwb3J0aW5nQ3JpdGVyaWEJCQkJCUNIT0lDRSB7CisJCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJU0VRVUVOQ0UgeworCQkJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQorCQl9LAorCQlpbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCVNFUVVFTkNFIHsKKwkJCWZpbHRlckNvZWZmaWNpZW50CQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJCURFRkFVTFQgZmMwLAorCQkJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1GREQJCUZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1GREQKKwkJCQl9LAorCQkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJZnJlcVF1YWxpdHlFc3RpbWF0ZVF1YW50aXR5LVRERAkJRnJlcVF1YWxpdHlFc3RpbWF0ZVF1YW50aXR5LVRERAorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworSW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzIDo6PQkJU0VRVUVOQ0UgeworCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJdXRyYS1DYXJyaWVyUlNTSQkJCQkJVVRSQS1DYXJyaWVyUlNTSQkJCQkJT1BUSU9OQUwsCisJaW50ZXJGcmVxQ2VsbE1lYXN1cmVkUmVzdWx0c0xpc3QJSW50ZXJGcmVxQ2VsbE1lYXN1cmVkUmVzdWx0c0xpc3QJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXEpKSBPRgorCQkJCQkJCQkJCUludGVyRnJlcU1lYXN1cmVkUmVzdWx0cworCisKK0ludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQIDo6PQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMAkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQIDo6PQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtUlNDUAlPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wCU9QVElPTkFMCit9CisKK0ludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUC1MQ1IJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMC1MQ1IJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUglPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMC1MQ1IJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxUkFDSFJlcENlbGxzTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCitJbnRlckZyZXFDZWxsSUQKKworSW50ZXJGcmVxUkFDSFJlcG9ydGluZ0luZm8gOjo9IFNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtRkRECQlJbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtRkRECisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0CUludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0CisJCX0sCisJaW50ZXJGcmVxUkFDSFJlcG9ydGluZ1RocmVzaG9sZAkJVGhyZXNob2xkLAorCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0hpbnRlckZyZXEJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0hpbnRlckZyZXEKKwl9Cit9CisKK0ludGVyRnJlcVJlcG9ydENyaXRlcmlhIDo6PQkJCUNIT0lDRSB7CisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYSwKKwlpbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxXaXRoUmVwb3J0aW5nQ2VsbFN0YXR1cywKKwlub1JlcG9ydGluZwkJCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzT3B0Cit9CisKK0ludGVyRnJlcVJlcG9ydENyaXRlcmlhLXI0IDo6PQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI0LAorCWludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAorCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKK30KKworSW50ZXJGcmVxUmVwb3J0Q3JpdGVyaWEtcjYgOjo9CQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYsCisJaW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNiwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMsCisJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAorfQorCitJbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYSA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFFdmVudExpc3QJCQkJCUludGVyRnJlcUV2ZW50TGlzdAkJCQkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYgOjo9CVNFUVVFTkNFIHsKKwlpbnRlckZyZXFFdmVudExpc3QJCQkJCUludGVyRnJlcUV2ZW50TGlzdC1yNgkJCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eSA6Oj0JCVNFUVVFTkNFIHsKKwl1dHJhLUNhcnJpZXItUlNTSQkJCQkJQk9PTEVBTiwKKwlmcmVxdWVuY3lRdWFsaXR5RXN0aW1hdGUJCQlCT09MRUFOLAorCW5vbkZyZXFSZWxhdGVkUXVhbnRpdGllcwkJCUNlbGxSZXBvcnRpbmdRdWFudGl0aWVzCit9CisKK0ludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1GREQgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNwaWNoLUVjTjAsIGNwaWNoLVJTQ1AgfQorCitJbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtVEREIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0aW1lc2xvdElTQ1AsCisJCQkJCQkJCQkJcHJpbWFyeUNDUENILVJTQ1AgfQorCitJbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtVERETGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgorCQkJCQkJCQkJCUludGVyRnJlcVJlcFF1YW50aXR5UkFDSC1UREQKKworSW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb0xpc3QJCQkJSW50ZXJGcmVxQ2VsbEluZm9MaXN0LAorCWludGVyRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRlckZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAorCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAorCWludGVyRnJlcVNldFVwZGF0ZQkJCQkJVUUtQXV0b25vbW91c1VwZGF0ZU1vZGUJCQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRlckZyZXFSZXBvcnRDcml0ZXJpYQorfQorCitJbnRlckZyZXF1ZW5jeU1lYXN1cmVtZW50LXI0IDo6PQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9MaXN0CQkJCUludGVyRnJlcUNlbGxJbmZvTGlzdC1yNCwKKwlpbnRlckZyZXFNZWFzUXVhbnRpdHkJCQkJSW50ZXJGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwlpbnRlckZyZXFTZXRVcGRhdGUJCQkJCVVFLUF1dG9ub21vdXNVcGRhdGVNb2RlCQkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50ZXJGcmVxUmVwb3J0Q3JpdGVyaWEtcjQKK30KKworSW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudC1yNiA6Oj0JU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRlckZyZXFDZWxsSW5mb0xpc3QtcjQsCisJaW50ZXJGcmVxTWVhc1F1YW50aXR5CQkJCUludGVyRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJaW50ZXJGcmVxU2V0VXBkYXRlCQkJCQlVRS1BdXRvbm9tb3VzVXBkYXRlTW9kZQkJCQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUludGVyRnJlcVJlcG9ydENyaXRlcmlhLXI2Cit9CisKK0ludGVyUkFULVRhcmdldENlbGxEZXNjcmlwdGlvbiA6Oj0JU0VRVUVOQ0UgeworCXRlY2hub2xvZ3lTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJYnNpYwkJCQkJCQkJQlNJQywKKwkJCWZyZXF1ZW5jeS1iYW5kCQkJCQkJRnJlcXVlbmN5LUJhbmQsCisJCQliY2NoLUFSRkNOCQkJCQkJCUJDQ0gtQVJGQ04sCisJCQluY01vZGUJCQkJCQkJCU5DLU1vZGUJCQkJT1BUSU9OQUwKKwkJfSwKKwkJaXMtMjAwMAkJCQkJCQkJTlVMTCwKKwkJc3BhcmUyCQkJCQkJCQlOVUxMLAorCQlzcGFyZTEJCQkJCQkJCU5VTEwKKwl9Cit9CisKK0ludGVyUkFUQ2VsbElEIDo6PQkJCQlJTlRFR0VSICgwLi5tYXhDZWxsTWVhcy0xKQorCitJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbiA6Oj0JCUlOVEVHRVIgKDAuLjMpCisKK0ludGVyUkFUQ2VsbEluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJSQVRDZWxsTGlzdAkJCVJlbW92ZWRJbnRlclJBVENlbGxMaXN0LAorCS0tIE5PVEU6IEZ1dHVyZSByZXZpc2lvbnMgb2YgZGVkaWNhdGVkIG1lc3NhZ2VzIGluY2x1ZGluZyBJRSBuZXdJbnRlclJBVENlbGxMaXN0CisJLS0gc2hvdWxkIHVzZSBhIGNvcnJlY3RlZCB2ZXJzaW9uIG9mIHRoaXMgSUUKKwluZXdJbnRlclJBVENlbGxMaXN0CQkJCU5ld0ludGVyUkFUQ2VsbExpc3QsCisJY2VsbHNGb3JJbnRlclJBVE1lYXNMaXN0CQkJQ2VsbHNGb3JJbnRlclJBVE1lYXNMaXN0CQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRDZWxsSW5mb0xpc3QtQiA6Oj0JCQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyUkFUQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJSQVRDZWxsTGlzdCwKKwktLSBOT1RFOiBJRSBuZXdJbnRlclJBVENlbGxMaXN0IHNob3VsZCBiZSBvcHRpb25hbC4gIEhvd2V2ZXIsIHN5c3RlbSBpbmZvcm1hdGlvbgorCS0tIGRvZXMgbm90IHN1cHBvcnQgbWVzc2FnZSB2ZXJzaW9ucy4gIEhlbmNlLCB0aGlzIGNhbiBub3QgYmUgY29ycmVjdGVkCisJbmV3SW50ZXJSQVRDZWxsTGlzdAkJCQlOZXdJbnRlclJBVENlbGxMaXN0LUIKK30KKworSW50ZXJSQVRDZWxsSW5mb0xpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlclJBVENlbGxMaXN0CQkJCQlSZW1vdmVkSW50ZXJSQVRDZWxsTGlzdCwKKwluZXdJbnRlclJBVENlbGxMaXN0CQkJCQkJTmV3SW50ZXJSQVRDZWxsTGlzdAkJCQkJT1BUSU9OQUwsCisJY2VsbHNGb3JJbnRlclJBVE1lYXNMaXN0CQkJCUNlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdAkJCU9QVElPTkFMCit9CisKK0ludGVyUkFUQ2VsbEluZm9MaXN0LXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJSQVRDZWxsTGlzdAkJCQkJUmVtb3ZlZEludGVyUkFUQ2VsbExpc3QsCisJbmV3SW50ZXJSQVRDZWxsTGlzdAkJCQkJCU5ld0ludGVyUkFUQ2VsbExpc3QJCQkJCU9QVElPTkFMLAorCWNlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdAkJCQlDZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQlPUFRJT05BTCwKKwlpbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbi1yNgkJCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRDZWxsSW5kaXZpZHVhbE9mZnNldCA6Oj0JCQlJTlRFR0VSICgtNTAuLjUwKQorCitJbnRlclJBVEV2ZW50IDo6PQkJCQlDSE9JQ0UgeworCWV2ZW50M2EJCQkJCQkJCUV2ZW50M2EsCisJZXZlbnQzYgkJCQkJCQkJRXZlbnQzYiwKKwlldmVudDNjCQkJCQkJCQlFdmVudDNjLAorCWV2ZW50M2QJCQkJCQkJCUV2ZW50M2QKK30KKworSW50ZXJSQVRFdmVudExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCisJCQkJCQkJCQkJSW50ZXJSQVRFdmVudAorCitJbnRlclJBVEV2ZW50UmVzdWx0cyA6Oj0JCQlTRVFVRU5DRSB7CisJZXZlbnRJRAkJCQkJCQkJRXZlbnRJREludGVyUkFULAorCWNlbGxUb1JlcG9ydExpc3QJCQkJCUNlbGxUb1JlcG9ydExpc3QKK30KKworSW50ZXJSQVRJbmZvIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZ3NtIH0KKworSW50ZXJSQVRJbmZvLXI2IDo6PQkJCQkJU0VRVUVOQ0UgeworCXJhdAkJCQkJCQkJCUludGVyUkFUSW5mbywKKwlnc20tVGFyZ2V0Q2VsbEluZm9MaXN0CQkJCUdTTS1UYXJnZXRDZWxsSW5mb0xpc3QJCQlPUFRJT05BTAorfQorCitJbnRlclJBVE1lYXNRdWFudGl0eSA6Oj0JCQkJU0VRVUVOQ0UgeworCW1lYXNRdWFudGl0eVVUUkFOLVF1YWxpdHlFc3RpbWF0ZQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJT1BUSU9OQUwsCisJcmF0U3BlY2lmaWNJbmZvCQkJCQkJQ0hPSUNFIHsKKwkJZ3NtCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1lYXN1cmVtZW50UXVhbnRpdHkJCQkJCQlNZWFzdXJlbWVudFF1YW50aXR5R1NNLAorCQkJZmlsdGVyQ29lZmZpY2llbnQJCQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJREVGQVVMVCBmYzAsCisJCQlic2ljLVZlcmlmaWNhdGlvblJlcXVpcmVkCQkJCUJTSUMtVmVyaWZpY2F0aW9uUmVxdWlyZWQKKwkJfSwKKwkJaXMtMjAwMAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRhZGQtRWNJbwkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCQkJdGNvbXAtRWNJbwkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCQkJc29mdFNsb3BlCQkJCQkJCQlJTlRFR0VSICgwLi42MykJCQlPUFRJT05BTCwKKwkJCWFkZEludGVyY2VwdAkJCQkJCQlJTlRFR0VSICgwLi42MykJCQlPUFRJT05BTAorCQl9CisJfQkKK30KKworSW50ZXJSQVRNZWFzdXJlZFJlc3VsdHMgOjo9CQlDSE9JQ0UgeworCWdzbQkJCQkJCQkJCUdTTS1NZWFzdXJlZFJlc3VsdHNMaXN0LAorCXNwYXJlCQkJCQkJCQlOVUxMCit9CisKK0ludGVyUkFUTWVhc3VyZWRSZXN1bHRzTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE90aGVyUkFULTE2KSkgT0YKKwkJCQkJCQkJCQlJbnRlclJBVE1lYXN1cmVkUmVzdWx0cworCitJbnRlclJBVE1lYXN1cmVtZW50IDo6PQkJCVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvTGlzdAkJCQlJbnRlclJBVENlbGxJbmZvTGlzdAkJCQlPUFRJT05BTCwKKwlpbnRlclJBVE1lYXNRdWFudGl0eQkJCQlJbnRlclJBVE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5CQkJSW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRlclJBVFJlcG9ydENyaXRlcmlhCit9CisKK0ludGVyUkFUTWVhc3VyZW1lbnQtcjQgOjo9CQkJU0VRVUVOQ0UgeworCWludGVyUkFUQ2VsbEluZm9MaXN0CQkJCUludGVyUkFUQ2VsbEluZm9MaXN0LXI0CQkJCU9QVElPTkFMLAorCWludGVyUkFUTWVhc1F1YW50aXR5CQkJCUludGVyUkFUTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludGVyUkFUUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUludGVyUkFUUmVwb3J0Q3JpdGVyaWEKK30KKworSW50ZXJSQVRNZWFzdXJlbWVudC1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJaW50ZXJSQVRDZWxsSW5mb0xpc3QJCQkJSW50ZXJSQVRDZWxsSW5mb0xpc3QtcjYJCQkJT1BUSU9OQUwsCisJaW50ZXJSQVRNZWFzUXVhbnRpdHkJCQkJSW50ZXJSQVRNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eQkJCUludGVyUkFUUmVwb3J0aW5nUXVhbnRpdHkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50ZXJSQVRSZXBvcnRDcml0ZXJpYQorfQorCitJbnRlclJBVE1lYXN1cmVtZW50U3lzSW5mbyA6Oj0JU0VRVUVOQ0UgeworCWludGVyUkFUQ2VsbEluZm9MaXN0CQkJCUludGVyUkFUQ2VsbEluZm9MaXN0CQkJCU9QVElPTkFMCit9CisKK0ludGVyUkFUTWVhc3VyZW1lbnRTeXNJbmZvLUIgOjo9CVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvTGlzdAkJCQlJbnRlclJBVENlbGxJbmZvTGlzdC1CCQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRSZXBvcnRDcml0ZXJpYSA6Oj0JCUNIT0lDRSB7CisJaW50ZXJSQVRSZXBvcnRpbmdDcml0ZXJpYQkJCUludGVyUkFUUmVwb3J0aW5nQ3JpdGVyaWEsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAorCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKK30JCQkKKworSW50ZXJSQVRSZXBvcnRpbmdDcml0ZXJpYSA6Oj0gCVNFUVVFTkNFIHsKKwlpbnRlclJBVEV2ZW50TGlzdAkJCQlJbnRlclJBVEV2ZW50TGlzdAkJCQlPUFRJT05BTAorfQorCitJbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5IDo6PQlTRVFVRU5DRSB7CisJdXRyYW4tRXN0aW1hdGVkUXVhbGl0eQkJCQlCT09MRUFOLAorCXJhdFNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJCQktLSBhbmQgd2hlbiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkJCQkJCQkJCUJPT0xFQU4sCisJCQlkdW1teTIJCQkJCQkJCUJPT0xFQU4sCisJCQlnc20tQ2Fycmllci1SU1NJCQkJCQlCT09MRUFOCisJCX0KKwl9Cit9CisKK0ludHJhRnJlcUNlbGxJRCA6Oj0JCQkJCUlOVEVHRVIgKDAuLm1heENlbGxNZWFzLTEpCisKK0ludHJhRnJlcUNlbGxJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJT1BUSU9OQUwsCisJY2VsbHNGb3JJbnRyYUZyZXFNZWFzTGlzdAkJCUNlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFDZWxsSW5mb0xpc3QtcjQgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbExpc3QtcjQJCQkJT1BUSU9OQUwsCisJY2VsbHNGb3JJbnRyYUZyZXFNZWFzTGlzdAkJCUNlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUCA6Oj0JU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AKK30KKworSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtRUNOMAorfQorCitJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AKK30KKworSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wCit9CisKK0ludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AtTENSLXI0Cit9CisKK0ludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1FQ04wLUxDUi1yNAorfQorCitJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQLUxDUi1yNAorfQorCitJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wLUxDUi1yNAorfQorCitJbnRyYUZyZXFFdmVudCA6Oj0JCQkJCUNIT0lDRSB7CisJZTFhCQkJCQkJCQkJRXZlbnQxYSwKKwllMWIJCQkJCQkJCQlFdmVudDFiLAorCWUxYwkJCQkJCQkJCUV2ZW50MWMsCisJZTFkCQkJCQkJCQkJTlVMTCwKKwllMWUJCQkJCQkJCQlFdmVudDFlLAorCWUxZgkJCQkJCQkJCUV2ZW50MWYsCisJZTFnCQkJCQkJCQkJTlVMTCwKKwllMWgJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LAorCWUxaQkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKK30KKworSW50cmFGcmVxRXZlbnQtcjQgOjo9CQkJCUNIT0lDRSB7CisJZTFhCQkJCQkJCQkJRXZlbnQxYS1yNCwKKwllMWIJCQkJCQkJCQlFdmVudDFiLXI0LAorCWUxYwkJCQkJCQkJCUV2ZW50MWMsCisJZTFkCQkJCQkJCQkJTlVMTCwKKwllMWUJCQkJCQkJCQlFdmVudDFlLAorCWUxZgkJCQkJCQkJCUV2ZW50MWYsCisJZTFnCQkJCQkJCQkJTlVMTCwKKwllMWgJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LAorCWUxaQkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKK30KKworSW50cmFGcmVxRXZlbnQtTENSLXI0IDo6PQkJCUNIT0lDRSB7CisJZTFhCQkJCQkJCQkJRXZlbnQxYS1MQ1ItcjQsCisJZTFiCQkJCQkJCQkJRXZlbnQxYi1MQ1ItcjQsCisJZTFjCQkJCQkJCQkJRXZlbnQxYywKKwllMWQJCQkJCQkJCQlOVUxMLAorCWUxZQkJCQkJCQkJCUV2ZW50MWUsCisJZTFmCQkJCQkJCQkJRXZlbnQxZiwKKwllMWcJCQkJCQkJCQlOVUxMLAorCWUxaAkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3ksCisJZTFpCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeQorfQorCitJbnRyYUZyZXFFdmVudC1yNiA6Oj0JCQkJQ0hPSUNFIHsKKwllMWEJCQkJCQkJCQlFdmVudDFhLXI0LAorCWUxYgkJCQkJCQkJCUV2ZW50MWItcjQsCisJZTFjCQkJCQkJCQkJRXZlbnQxYywKKwllMWQJCQkJCQkJCQlFdmVudDFkLAorCWUxZQkJCQkJCQkJCUV2ZW50MWUtcjYsCisJZTFmCQkJCQkJCQkJRXZlbnQxZi1yNiwKKwllMWcJCQkJCQkJCQlOVUxMLAorCWUxaAkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3ktcjYsCisJZTFpCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNiwKKwllMWoJCQkJCQkJCQlFdmVudDFqLXI2Cit9CisKK0ludHJhRnJlcUV2ZW50LTFkLXI1IDo6PQkJU0VRVUVOQ0UgeworCXRyaWdnZXJpbmdDb25kaXRpb24JCQkJCVRyaWdnZXJpbmdDb25kaXRpb24yCU9QVElPTkFMLAorCXVzZUNJTwkJCQkJCQkJQk9PTEVBTgkJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYSA6Oj0JCQlTRVFVRU5DRSB7CisJZXZlbnQJCQkJCQkJCUludHJhRnJlcUV2ZW50LAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI0IDo6PQkJU0VRVUVOQ0UgeworCWV2ZW50CQkJCQkJCQlJbnRyYUZyZXFFdmVudC1yNCwKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYS1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlldmVudAkJCQkJCQkJSW50cmFGcmVxRXZlbnQtTENSLXI0LAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI2IDo6PQlTRVFVRU5DRSB7CisJZXZlbnQJCQkJCQkJCUludHJhRnJlcUV2ZW50LXI2LAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCUludHJhRnJlcUV2ZW50Q3JpdGVyaWEKKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCUludHJhRnJlcUV2ZW50Q3JpdGVyaWEtcjQKKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhLUxDUi1yNAorCitJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1yNiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCUludHJhRnJlcUV2ZW50Q3JpdGVyaWEtcjYKKworSW50cmFGcmVxRXZlbnRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKKwlldmVudElECQkJCQkJCQlFdmVudElESW50cmFGcmVxLAorCWNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cwkJCUNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cworfQorCitJbnRyYUZyZXFNZWFzUXVhbnRpdHkgOjo9CQkJU0VRVUVOQ0UgeworCWZpbHRlckNvZWZmaWNpZW50CQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJCQkJREVGQVVMVCBmYzAsCisJbW9kZVNwZWNpZmljSW5mbyAJCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaW50cmFGcmVxTWVhc1F1YW50aXR5LUZERAkJSW50cmFGcmVxTWVhc1F1YW50aXR5LUZERAorCQl9LAorCQl0ZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWludHJhRnJlcU1lYXNRdWFudGl0eS1URERMaXN0CUludHJhRnJlcU1lYXNRdWFudGl0eS1URERMaXN0CisJCX0KKwl9Cit9CisKKy0tIElmIEludHJhRnJlcU1lYXNRdWFudGl0eS1GREQgaXMgdXNlZCBpbiBJbnRlclJBVE1lYXNRdWFudGl0eSwgdGhlbiBvbmx5IAorLS0gY3BpY2gtRWMtTjAgYW5kIGNwaWNoLVJTQ1AgYXJlIGFsbG93ZWQuCistLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KK0ludHJhRnJlcU1lYXNRdWFudGl0eS1GREQgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljcGljaC1FYy1OMCwKKwkJCQkJCQkJCQljcGljaC1SU0NQLAorCQkJCQkJCQkJCXBhdGhsb3NzLAorCQkJCQkJCQkJCWR1bW15IH0KKworLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKy0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCitJbnRyYUZyZXFNZWFzUXVhbnRpdHktVEREIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcHJpbWFyeUNDUENILVJTQ1AsCisJCQkJCQkJCQkJcGF0aGxvc3MsCisJCQkJCQkJCQkJdGltZXNsb3RJU0NQLAorCQkJCQkJCQkJCWR1bW15IH0KKworSW50cmFGcmVxTWVhc1F1YW50aXR5LVRERExpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi40KSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHktVERECisKK0ludHJhRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJQ2VsbE1lYXN1cmVkUmVzdWx0cworCitJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKKwlpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUAkJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAorCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKKwlyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCisJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAJCU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQIDo6PQlTRVFVRU5DRSB7CisJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAorCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtUlNDUAlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCisJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAorCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKKwlpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLUVDTjAJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAorCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKKwlyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCisJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AtTENSLXI0CU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gtTENSLXI0CQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAorCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wLUxDUi1yNAlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCisJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAorCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENILUxDUi1yNAkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKKwlpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AtTENSLXI0CU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gtTENSLXI0CQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAorCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMC1MQ1ItcjQJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAorCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKKwlyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSC1MQ1ItcjQJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcVJlcG9ydENyaXRlcmlhIDo6PQkJCUNIT0lDRSB7CisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYSwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMsCisJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAorfQorCitJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYS1yNCA6Oj0JCUNIT0lDRSB7CisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNCwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMsCisJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAorfQorCitJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYS1yNiA6Oj0JCUNIT0lDRSB7CisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNiwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMsCisJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAorfQorCitJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYSA6Oj0JCVNFUVVFTkNFIHsKKwlldmVudENyaXRlcmlhTGlzdAkJCQkJSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI0IDo6PQlTRVFVRU5DRSB7CisJZXZlbnRDcml0ZXJpYUxpc3QJCQkJCUludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXI0CU9QVElPTkFMCit9CisKK0ludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWV2ZW50Q3JpdGVyaWFMaXN0CQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1MQ1ItcjQJT1BUSU9OQUwKK30KKworSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYgOjo9IFNFUVVFTkNFIHsKKwlldmVudENyaXRlcmlhTGlzdAkJCQkJSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtcjYJT1BUSU9OQUwKK30KKworSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkgOjo9CQlTRVFVRU5DRSB7CisJYWN0aXZlU2V0UmVwb3J0aW5nUXVhbnRpdGllcwkJQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMsCisJbW9uaXRvcmVkU2V0UmVwb3J0aW5nUXVhbnRpdGllcwkJQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMsCisJZGV0ZWN0ZWRTZXRSZXBvcnRpbmdRdWFudGl0aWVzCQlDZWxsUmVwb3J0aW5nUXVhbnRpdGllcwkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0ggOjo9IFNFUVVFTkNFIHsKKwlzZm4tU0ZOLU9URC1UeXBlCQkJCQlTRk4tU0ZOLU9URC1UeXBlLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1GREQJCUludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1GREQKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QJSW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QKKwkJfQorCX0KK30KKworSW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILUZERCA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY3BpY2gtRWNOMCwgY3BpY2gtUlNDUCwgCisJCQkJCQkJCQkJcGF0aGxvc3MsIG5vUmVwb3J0IH0KKworSW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILVRERCA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGltZXNsb3RJU0NQLAorCQkJCQkJCQkJCXByaW1hcnlDQ1BDSC1SU0NQLAorCQkJCQkJCQkJCW5vUmVwb3J0IH0KKworSW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtVERECisKK0ludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbEluZm9MaXN0CQkJCUludHJhRnJlcUNlbGxJbmZvTGlzdAkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUludHJhRnJlcVJlcG9ydENyaXRlcmlhCQkJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjQgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSW5mb0xpc3QJCQkJSW50cmFGcmVxQ2VsbEluZm9MaXN0LXI0CQkJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYS1yNAkJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjYgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbEluZm9MaXN0CQkJCUludHJhRnJlcUNlbGxJbmZvTGlzdC1yNAkJCU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAorCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50cmFGcmVxUmVwb3J0Q3JpdGVyaWEtcjYKK30KKworSU9ERSA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uMjU1KQorCitJUC1MZW5ndGggOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJaXBsNSwgaXBsMTAgfQorCitJUC1QQ0NQQ0gtcjQgOjo9CQkJCQlCT09MRUFOCisKK0lQLVNwYWNpbmcgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTUsIGU3LCBlMTAsIGUxNSwgZTIwLAorCQkJCQkJCQkJCWUzMCwgZTQwLCBlNTAgfQorCitJUC1TcGFjaW5nLVRERCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllMzAsIGU0MCwgZTUwLCBlNzAsIGUxMDB9CisKK0lTLTIwMDBTcGVjaWZpY01lYXNJbmZvIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWZyZXF1ZW5jeSwgdGltZXNsb3QsIGNvbG91cmNvZGUsCisJCQkJCQkJCQkJb3V0cHV0cG93ZXIsIHBuLU9mZnNldCB9CisKK01heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTEsIGUyLCBlMywgZTQsIGU1LCBlNn0KKworTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUyIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyfQorCitNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTMgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXZpYWN0Q2VsbHNQbHVzMSwKKwkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czIsCisJCQkJCQkJCQkJdmlhY3RDZWxsc1BsdXMzLAorCQkJCQkJCQkJCXZpYWN0Q2VsbHNQbHVzNCwKKwkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czUsCisJCQkJCQkJCQkJdmlhY3RDZWxsc1BsdXM2IH0KKworTWF4UmVwb3J0ZWRDZWxsc09uUkFDSCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub1JlcG9ydCwKKwkJCQkJCQkJCQljdXJyZW50Q2VsbCwKKwkJCQkJCQkJCQljdXJyZW50QW5kLTEtQmVzdE5laWdoYm91ciwKKwkJCQkJCQkJCQljdXJyZW50QW5kLTItQmVzdE5laWdoYm91ciwKKwkJCQkJCQkJCQljdXJyZW50QW5kLTMtQmVzdE5laWdoYm91ciwKKwkJCQkJCQkJCQljdXJyZW50QW5kLTQtQmVzdE5laWdoYm91ciwKKwkJCQkJCQkJCQljdXJyZW50QW5kLTUtQmVzdE5laWdoYm91ciwKKwkJCQkJCQkJCQljdXJyZW50QW5kLTYtQmVzdE5laWdoYm91ciB9CisKK01heFJlcG9ydGVkQ2VsbHNPblJBQ0hpbnRlckZyZXEgOjo9CQlJTlRFR0VSICgxLi44KQorCitNZWFzdXJlZFJlc3VsdHMgOjo9CQkJCQlDSE9JQ0UgeworCWludHJhRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludHJhRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJaW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlpbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyUkFUTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwl0cmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzTGlzdAlUcmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlxdWFsaXR5TWVhc3VyZWRSZXN1bHRzCQkJCVF1YWxpdHlNZWFzdXJlZFJlc3VsdHMsCisJdWUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMJCQlVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cywKKwl1ZS1wb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cywKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCitNZWFzdXJlZFJlc3VsdHMtdjM5MGV4dCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl1ZS1wb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMtdjM5MGV4dAkJCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQKK30KKworCitNZWFzdXJlZFJlc3VsdHMtdjU5MGV4dCA6Oj0gQ0hPSUNFIHsKKwlpbnRyYUZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludHJhRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdC12NTkwZXh0LAorCWludGVyRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50ZXJGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0LXY1OTBleHQKK30KKworTWVhc3VyZWRSZXN1bHRzLXY3eHlleHQgOjo9IENIT0lDRSB7CisJdWVJbnRlcm5hbE1lYXN1cmVkUmVzdWx0cwkJVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtcjcKK30KKworTWVhc3VyZWRSZXN1bHRzLUxDUi1yNCA6Oj0JCQlDSE9JQ0UgeworCWludHJhRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludHJhRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJaW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdAkJSW50ZXJGcmVxTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlpbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyUkFUTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwl0cmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzTGlzdAlUcmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlxdWFsaXR5TWVhc3VyZWRSZXN1bHRzCQkJCVF1YWxpdHlNZWFzdXJlZFJlc3VsdHMsCisJdWUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMJCQlVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cy1MQ1ItcjQsCisJdWUtcG9zaXRpb25paW5nLU1lYXN1cmVkUmVzdWx0cwkJVUUtUG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzLAorCXNwYXJlCQkJCQkJCQlOVUxMCit9CisKK01lYXN1cmVkUmVzdWx0c0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBZGRpdGlvbmFsTWVhcykpIE9GCisJCQkJCQkJCQkJTWVhc3VyZWRSZXN1bHRzCisKK01lYXN1cmVkUmVzdWx0c0xpc3QtTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFkZGl0aW9uYWxNZWFzKSkgT0YKKwkJCQkJCQkJCQlNZWFzdXJlZFJlc3VsdHMtTENSLXI0CisKK01lYXN1cmVkUmVzdWx0c09uUkFDSCA6Oj0JCQlTRVFVRU5DRSB7CisJY3VycmVudENlbGwgCQkJCQkJU0VRVUVOQ0UgeworCQltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCW1lYXN1cmVtZW50UXVhbnRpdHkJCQkJCUNIT0lDRSB7CisJCQkJCWNwaWNoLUVjLU4wCQkJCQkJCUNQSUNILUVjLU4wLAorCQkJCQljcGljaC1SU0NQCQkJCQkJCUNQSUNILVJTQ1AsCisJCQkJCXBhdGhsb3NzCQkJCQkJCVBhdGhsb3NzLAorCQkJCQlzcGFyZQkJCQkJCQkJTlVMTCAKKwkJCQl9CisJCQl9LAorCQkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIEZvciAzLjg0IE1jcHMgYW5kIDcuNjggTWNwcyBUREQgICAtLQorCQkJCXRpbWVzbG90SVNDUAkJCQkJCVRpbWVzbG90SVNDUC1MaXN0CQlPUFRJT05BTCwKKwkJCQlwcmltYXJ5Q0NQQ0gtUlNDUAkJCQkJUHJpbWFyeUNDUENILVJTQ1AJCU9QVElPTkFMCisJCQl9CisJCX0KKwl9LAorCW1vbml0b3JlZENlbGxzCQkJCQkJTW9uaXRvcmVkQ2VsbFJBQ0gtTGlzdAkJCQlPUFRJT05BTAorfQorCitNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZGljYXRpb24tU0lCMTEJCQlJTlRFR0VSICgwLi4xKSwKKwlpbnRlckZyZXFDZWxsSW5kaWNhdGlvbi1TSUIxMgkJCUlOVEVHRVIgKDAuLjEpLAorCWludGVyRnJlcVJBQ0hSZXBDZWxsc0xpc3QJCQkJSW50ZXJGcmVxUkFDSFJlcENlbGxzTGlzdAorfQorCitNZWFzdXJlbWVudENvbW1hbmQgOjo9CQkJCUNIT0lDRSB7CisJc2V0dXAJCQkJCQkJCU1lYXN1cmVtZW50VHlwZSwKKwltb2RpZnkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJbWVhc3VyZW1lbnRUeXBlCQkJCQkJTWVhc3VyZW1lbnRUeXBlCQkJCQlPUFRJT05BTAorCX0sCisJcmVsZWFzZQkJCQkJCQkJTlVMTAorfQorCitNZWFzdXJlbWVudENvbW1hbmQtcjQgOjo9CQkJQ0hPSUNFIHsKKwlzZXR1cAkJCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI0LAorCW1vZGlmeQkJCQkJCQkJU0VRVUVOQ0UgeworCQltZWFzdXJlbWVudFR5cGUJCQkJCQlNZWFzdXJlbWVudFR5cGUtcjQJCQkJT1BUSU9OQUwKKwl9LAorCXJlbGVhc2UJCQkJCQkJCU5VTEwKK30KKworTWVhc3VyZW1lbnRDb21tYW5kLXI2IDo6PQkJCUNIT0lDRSB7CisJc2V0dXAJCQkJCQkJCU1lYXN1cmVtZW50VHlwZS1yNiwKKwltb2RpZnkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJbWVhc3VyZW1lbnRUeXBlCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI2CQkJCU9QVElPTkFMCisJfSwKKwlyZWxlYXNlCQkJCQkJCQlOVUxMCit9CisKK01lYXN1cmVtZW50Q29udHJvbFN5c0luZm8gOjo9CQlTRVFVRU5DRSB7CisJLS0gQ0hPSUNFIGNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZSByZXByZXNlbnRzIFBDQ1BDSC1SU0NQIGluIFRERCBtb2RlLgorCXVzZS1vZi1IQ1MJCQkJCQkJQ0hPSUNFCXsKKwkJaGNzLW5vdC11c2VkIAkJCQkJU0VRVUVOQ0UJeworCQkJY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlCUNIT0lDRQl7CisJCQkJY3BpY2gtUlNDUAkJCQlTRVFVRU5DRQl7CisJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1SU0NQCU9QVElPTkFMLAorCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUAlPUFRJT05BTAorCQkJCX0sCisJCQkJY3BpY2gtRWMtTjAJCQkJU0VRVUVOQ0UJeworCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMAkJT1BUSU9OQUwsCisJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1FQ04wCU9QVElPTkFMCisJCQkJfQorCQkJfSwKKwkJCWludGVyUkFUTWVhc3VyZW1lbnRTeXNJbmZvCQlJbnRlclJBVE1lYXN1cmVtZW50U3lzSW5mby1CCQlPUFRJT05BTAorCQl9LAorCQloY3MtdXNlZAkJCQkJCVNFUVVFTkNFCXsKKwkJCWNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZQlDSE9JQ0UJeworCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJeworCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLVJTQ1AJCQlPUFRJT05BTCwKKwkJCQkJaW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCQkJSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQCQkJT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNwaWNoLUVjLU4wCQkJCVNFUVVFTkNFCXsKKwkJCQkJaW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCQkJSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wCQkJT1BUSU9OQUwsCisJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMAkJCU9QVElPTkFMCQkJCX0KKwkJCX0sCisJCQlpbnRlclJBVE1lYXN1cmVtZW50U3lzSW5mbwkJSW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8JCU9QVElPTkFMCisJCX0KKwl9LAorCisJdHJhZmZpY1ZvbHVtZU1lYXNTeXNJbmZvCQkJVHJhZmZpY1ZvbHVtZU1lYXNTeXNJbmZvCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24gYW5kIGl0IHNoYWxsIGJlIGlnbm9yZWQgYnkgdGhlIFVFLgorCWR1bW15CQlVRS1JbnRlcm5hbE1lYXN1cmVtZW50U3lzSW5mbwkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mby1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSB7CisJLS0gQ0hPSUNFIHVzZS1vZi1IQ1Mgc2hhbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdXNlLW9mLUhDUworCS0tIGluIE1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8KKwktLSBDSE9JQ0UgY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIHJlcHJlc2VudHMgUENDUENILVJTQ1AgaW4gVEREIG1vZGUuCisJdXNlLW9mLUhDUwkJCQkJCQlDSE9JQ0UJeworCQloY3Mtbm90LXVzZWQgCQkJCQlTRVFVRU5DRQl7CisJCQktLSBDSE9JQ0UgY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIHNoYWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlCisJCQktLSBjZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUgaW4gTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbworCQkJY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlCUNIT0lDRQl7CisJCQkJY3BpY2gtUlNDUAkJCQlTRVFVRU5DRQl7CisJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUC1MQ1ItcjQJT1BUSU9OQUwsCisJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUC1MQ1ItcjQJT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNwaWNoLUVjLU4wCQkJCVNFUVVFTkNFCXsKKwkJCQkJaW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1FQ04wLUxDUi1yNAlPUFRJT05BTCwKKwkJCQkJaW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1FQ04wLUxDUi1yNAlPUFRJT05BTAorCQkJCX0KKwkJCX0KKwkJfSwKKwkJaGNzLXVzZWQJCQkJCQlTRVFVRU5DRQl7CisJCQktLSBDSE9JQ0UgY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIHNoYWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlCisJCQktLSBjZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUgaW4gTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbworCQkJY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlCUNIT0lDRQl7CisJCQkJY3BpY2gtUlNDUAkJCQlTRVFVRU5DRQl7CisJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLVJTQ1AtTENSLXI0CU9QVElPTkFMLAorCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTAorCQkJCX0sCisJCQkJY3BpY2gtRWMtTjAJCQkJU0VRVUVOQ0UJeworCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wLUxDUi1yNAlPUFRJT05BTCwKKwkJCQkJaW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMC1MQ1ItcjQJT1BUSU9OQUwKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK01lYXN1cmVtZW50SWRlbnRpdHkgOjo9CQlJTlRFR0VSICgxLi4xNikKKworTWVhc3VyZW1lbnRRdWFudGl0eUdTTSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlnc20tQ2FycmllclJTU0ksCisJCQkJCQkJCQkJZHVtbXkgfQorCitNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUgOjo9CQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRSZXBvcnRUcmFuc2Zlck1vZGUJCVRyYW5zZmVyTW9kZSwKKwlwZXJpb2RpY2FsT3JFdmVudFRyaWdnZXIJCQlQZXJpb2RpY2FsT3JFdmVudFRyaWdnZXIKK30JCisKK01lYXN1cmVtZW50VHlwZSA6Oj0JCQkJCUNIT0lDRSB7CisJaW50cmFGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQsCisJaW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQsCisJaW50ZXJSQVRNZWFzdXJlbWVudAkJCQkJSW50ZXJSQVRNZWFzdXJlbWVudCwKKwl1ZS1wb3NpdGlvbmluZy1NZWFzdXJlbWVudAkJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LAorCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudAkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudCwKKwlxdWFsaXR5TWVhc3VyZW1lbnQJCQkJCVF1YWxpdHlNZWFzdXJlbWVudCwKKwl1ZS1JbnRlcm5hbE1lYXN1cmVtZW50CQkJCVVFLUludGVybmFsTWVhc3VyZW1lbnQKK30KKworTWVhc3VyZW1lbnRUeXBlLXI0IDo6PQkJCQlDSE9JQ0UgeworCWludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LXI0LAorCWludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRlckZyZXF1ZW5jeU1lYXN1cmVtZW50LXI0LAorCWludGVyUkFUTWVhc3VyZW1lbnQJCQkJCUludGVyUkFUTWVhc3VyZW1lbnQtcjQsCisJdXAtTWVhc3VyZW1lbnQJCQkJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC1yNCwKKwl0cmFmZmljVm9sdW1lTWVhc3VyZW1lbnQJCQlUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnQsCisJcXVhbGl0eU1lYXN1cmVtZW50CQkJCQlRdWFsaXR5TWVhc3VyZW1lbnQsCisJdWUtSW50ZXJuYWxNZWFzdXJlbWVudAkJCQlVRS1JbnRlcm5hbE1lYXN1cmVtZW50LXI0Cit9CisKK01lYXN1cmVtZW50VHlwZS1yNiA6Oj0JCQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50CQkJSW50cmFGcmVxdWVuY3lNZWFzdXJlbWVudC1yNiwKKwlpbnRlckZyZXF1ZW5jeU1lYXN1cmVtZW50CQkJSW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudC1yNiwKKwlpbnRlclJBVE1lYXN1cmVtZW50CQkJCQlJbnRlclJBVE1lYXN1cmVtZW50LXI2LAorCXVwLU1lYXN1cmVtZW50CQkJCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtcjQsCisJdHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50CQkJVHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50LAorCXF1YWxpdHlNZWFzdXJlbWVudAkJCQkJUXVhbGl0eU1lYXN1cmVtZW50LAorCXVlLUludGVybmFsTWVhc3VyZW1lbnQJCQkJVUUtSW50ZXJuYWxNZWFzdXJlbWVudC1yNAorfQorCitNZWFzdXJlbWVudFZhbGlkaXR5IDo6PQkJCQlTRVFVRU5DRSB7CisJdWUtU3RhdGUJCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJCWNlbGwtRENILCBhbGwtQnV0LUNlbGwtRENILCBhbGwtU3RhdGVzIH0KK30KKworTW9uaXRvcmVkQ2VsbFJBQ0gtTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4uOCkpIE9GCisJCQkJCQkJCQkJTW9uaXRvcmVkQ2VsbFJBQ0gtUmVzdWx0CisKK01vbml0b3JlZENlbGxSQUNILVJlc3VsdCA6Oj0JCVNFUVVFTkNFIHsKKwlzZm4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlCQkJU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJCW1lYXN1cmVtZW50UXVhbnRpdHkJCQkJCUNIT0lDRSB7CisJCQkJY3BpY2gtRWMtTjAJCQkJCQkJQ1BJQ0gtRWMtTjAsCisJCQkJY3BpY2gtUlNDUAkJCQkJCQlDUElDSC1SU0NQLAorCQkJCXBhdGhsb3NzCQkJCQkJCVBhdGhsb3NzLAorCQkJCXNwYXJlCQkJCQkJCQlOVUxMCisJCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQsCisJCQlwcmltYXJ5Q0NQQ0gtUlNDUAkJCQkJUHJpbWFyeUNDUENILVJTQ1AKKwkJfQorCX0KK30KKworTXVsdGlwYXRoSW5kaWNhdG9yIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlubSwKKwkJCQkJCQkJCQlsb3csCisJCQkJCQkJCQkJbWVkaXVtLAorCQkJCQkJCQkJCWhpZ2ggfQorCitOLUNSLVQtQ1JNYXhIeXN0IDo6PQkJCQlTRVFVRU5DRSB7CisJbi1DUgkJCQkJCQkJSU5URUdFUiAoMS4uMTYpCQkJCQkJREVGQVVMVCA4LAorCXQtQ1JNYXhIeXN0CQkJCQkJCVQtQ1JNYXhIeXN0Cit9CisKK05hdmlnYXRpb25Nb2RlbFNhdEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXNhdElECQkJCQkJCQlTYXRJRCwKKwlzYXRlbGxpdGVTdGF0dXMJCQkJCQlTYXRlbGxpdGVTdGF0dXMsCisJZXBoZW1lcmlzUGFyYW1ldGVyCQkJCQlFcGhlbWVyaXNQYXJhbWV0ZXIJCU9QVElPTkFMCit9CisKK05hdmlnYXRpb25Nb2RlbFNhdEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCisJCQkJCQkJCQkJTmF2aWdhdGlvbk1vZGVsU2F0SW5mbworCitFcGhlbWVyaXNQYXJhbWV0ZXIgOjo9CQkJCQkJU0VRVUVOQ0UgeworCWNvZGVPbkwyCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIpKSwKKwl1cmFJbmRleAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg0KSksCisJc2F0SGVhbHRoCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDYpKSwKKwlpb2RjCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMCkpLAorCWwyUGZsYWcJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEpKSwKKwlzZjFSZXZkCQkJCQkJCQlTdWJGcmFtZTFSZXNlcnZlZCwKKwl0LUdECQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJdC1vYwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlhZjIJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYWYxCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlhZjAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMikpLAorCWMtcnMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJZGVsdGEtbgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwltMAkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSksCisJYy11YwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwllCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKKwljLXVzCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAorCWEtU3FydAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKKwl0LW9lCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAorCWZpdEludGVydmFsCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEpKSwKKwlhb2RvCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg1KSksCisJYy1pYwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlvbWVnYTAJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSksCisJYy1pcwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlpMAkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSksCisJYy1yYwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlvbWVnYQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKKwlvbWVnYURvdAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCWlEb3QJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE0KSkKK30KK05DLU1vZGUgOjo9CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMpKQorCitOZWlnaGJvdXIgOjo9CQkJCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQluZWlnaGJvdXJJZGVudGl0eQkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQkJCU9QVElPTkFMLAorCQkJdUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMkluZm8JVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMkluZm8JT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQluZWlnaGJvdXJBbmRDaGFubmVsSWRlbnRpdHkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJCU9QVElPTkFMCisJCX0KKwl9LAkKKwluZWlnaGJvdXJRdWFsaXR5CQkJCQlOZWlnaGJvdXJRdWFsaXR5LAorCXNmbi1TRk4tT2JzVGltZURpZmZlcmVuY2UyCQkJU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTJ9CisKK05laWdoYm91ci12MzkwZXh0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQlOVUxMCisJfQorfQorCitOZWlnaGJvdXJMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZWlnaGJvdXIKKworLS0gVGhlIG9yZGVyIG9mIHRoZSBjZWxscyBpbiBJRSBOZWlnaGJvdXJMaXN0LXYzOTBleHQgc2hhbGwgYmUgdGhlCistLSBzYW1lIGFzIHRoZSBvcmRlciBpbiBJRSBOZWlnaGJvdXJMaXN0CitOZWlnaGJvdXJMaXN0LXYzOTBleHQgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5laWdoYm91ci12MzkwZXh0CisKK05laWdoYm91clF1YWxpdHkgOjo9CQkJCVNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZy1PVERPQS1RdWFsaXR5CQlVRS1Qb3NpdGlvbmluZy1PVERPQS1RdWFsaXR5Cit9CisKK05ld0ludGVyRnJlcUNlbGwgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvCit9CisKK05ld0ludGVyRnJlcUNlbGwtcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvLXI0Cit9CisKK05ld0ludGVyRnJlcUNlbGxMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbAorCitOZXdJbnRlckZyZXFDZWxsTGlzdC1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGwtcjQKKworTmV3SW50ZXJGcmVxQ2VsbFNJLVJTQ1AgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktUlNDUAorfQorCitOZXdJbnRlckZyZXFDZWxsU0ktRUNOMCA6Oj0JCQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJRAkJCQkJCUludGVyRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1FQ04wCit9CisKK05ld0ludGVyRnJlcUNlbGxTSS1IQ1MtUlNDUCA6Oj0JCQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJRAkJCQkJCUludGVyRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtUlNDUAorfQorCitOZXdJbnRlckZyZXFDZWxsU0ktSENTLUVDTjAgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLUVDTjAKK30KKworTmV3SW50ZXJGcmVxQ2VsbFNJLVJTQ1AtTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktUlNDUC1MQ1ItcjQKK30KKworTmV3SW50ZXJGcmVxQ2VsbFNJLUVDTjAtTENSLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktRUNOMC1MQ1ItcjQKK30KKworTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLVJTQ1AtTENSLXI0Cit9CisKK05ld0ludGVyRnJlcUNlbGxTSS1IQ1MtRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1FQ04wLUxDUi1yNAorfQorCitOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1FQ04wIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUVDTjAKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRlckZyZXFDZWxsU0ktSENTLVJTQ1AKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRlckZyZXFDZWxsU0ktSENTLUVDTjAKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtUlNDUCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLVJTQ1AKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1FQ04wLUxDUi1yNAorCitOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUC1MQ1ItcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1SU0NQLUxDUi1yNAorCitOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtRUNOMC1MQ1ItcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1FQ04wLUxDUi1yNAorCitOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLVJTQ1AtTENSLXI0CisKK05ld0ludGVyUkFUQ2VsbCA6Oj0JCQkJU0VRVUVOQ0UgeworCWludGVyUkFUQ2VsbElECQkJCQkJSW50ZXJSQVRDZWxsSUQJCQlPUFRJT05BTCwKKwl0ZWNobm9sb2d5U3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTIJCU9QVElPTkFMLAorCQkJaW50ZXJSQVRDZWxsSW5kaXZpZHVhbE9mZnNldCAJCUludGVyUkFUQ2VsbEluZGl2aWR1YWxPZmZzZXQsCisJCQlic2ljCQkJCQkJCQlCU0lDLAorCQkJZnJlcXVlbmN5LWJhbmQJCQkJCQlGcmVxdWVuY3ktQmFuZCwKKwkJCWJjY2gtQVJGQ04JCQkJCQkJQkNDSC1BUkZDTiwKKwkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teQkJCQkJCQkJTlVMTAkJCQlPUFRJT05BTAorCQl9LAorCQlpcy0yMDAwCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpcy0yMDAwU3BlY2lmaWNNZWFzSW5mbwkJCQlJUy0yMDAwU3BlY2lmaWNNZWFzSW5mbworCQl9LAorCQktLSBBU04uMSBpbmNvbnNpc3RlbmN5OiBOZXdJbnRlclJBVENlbGxMaXN0IHNob3VsZCBiZSBvcHRpb25hbCB3aXRoaW4KKwkJLS0gSW50ZXJSQVRDZWxsSW5mb0xpc3QuIFRoZSBVRSBzaGFsbCBjb25zaWRlciBJRSBOZXdJbnRlclJBVENlbGwgd2l0aAorCQktLSB0ZWNobm9sb2d5U3BlY2lmaWNJbmZvIHNldCB0byAiYWJzZW50IiBhcyB2YWxpZCBhbmQgaGFuZGxlIHRoZQorCQktLSBtZXNzYWdlIGFzIGlmIHRoZSBJRSBOZXdJbnRlclJBVENlbGwgd2FzIGFic2VudAorCQlhYnNlbnQJCQkJCQkJCU5VTEwsCisJCXNwYXJlMQkJCQkJCQkJTlVMTAorCX0KK30KKworTmV3SW50ZXJSQVRDZWxsLUIgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJRAkJCQkJCUludGVyUkFUQ2VsbElECQkJCU9QVElPTkFMLAorCXRlY2hub2xvZ3lTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMgkJT1BUSU9OQUwsCisJCQlpbnRlclJBVENlbGxJbmRpdmlkdWFsT2Zmc2V0IAkJSW50ZXJSQVRDZWxsSW5kaXZpZHVhbE9mZnNldCwKKwkJCWJzaWMJCQkJCQkJCUJTSUMsCisJCQlmcmVxdWVuY3ktYmFuZAkJCQkJCUZyZXF1ZW5jeS1CYW5kLAorCQkJYmNjaC1BUkZDTgkJCQkJCQlCQ0NILUFSRkNOLAorCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15CQkJCQkJCQlOVUxMCQkJCU9QVElPTkFMCisJCX0sCisJCWlzLTIwMDAJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWlzLTIwMDBTcGVjaWZpY01lYXNJbmZvCQkJCUlTLTIwMDBTcGVjaWZpY01lYXNJbmZvCisJCX0sCisJCS0tIEFTTi4xIGluY29uc2lzdGVuY3k6IE5ld0ludGVyUkFUQ2VsbExpc3QtQiBzaG91bGQgYmUgb3B0aW9uYWwgd2l0aGluCisJCS0tIEludGVyUkFUQ2VsbEluZm9MaXN0LUIuIFRoZSBVRSBzaGFsbCBjb25zaWRlciBJRSBOZXdJbnRlclJBVENlbGwtQiB3aXRoCisJCS0tIHRlY2hub2xvZ3lTcGVjaWZpY0luZm8gc2V0IHRvICJhYnNlbnQiIGFzIHZhbGlkIGFuZCBoYW5kbGUgdGhlCisJCS0tIG1lc3NhZ2UgYXMgaWYgdGhlIElFIE5ld0ludGVyUkFUQ2VsbC1CIHdhcyBhYnNlbnQKKwkJYWJzZW50CQkJCQkJCQlOVUxMLAorCQlzcGFyZTEJCQkJCQkJCU5VTEwKKwl9Cit9CisKK05ld0ludGVyUkFUQ2VsbExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRlclJBVENlbGwKKworTmV3SW50ZXJSQVRDZWxsTGlzdC1CIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJSQVRDZWxsLUIKKworTmV3SW50cmFGcmVxQ2VsbCA6Oj0JCQkJU0VRVUVOQ0UgeworCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvCit9CisKK05ld0ludHJhRnJlcUNlbGwtcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mby1yNAorfQorCitOZXdJbnRyYUZyZXFDZWxsTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGwKKworTmV3SW50cmFGcmVxQ2VsbExpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsLXI0CisKK05ld0ludHJhRnJlcUNlbGxTSS1SU0NQIDo6PQkJCQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1SU0NQCit9CisKK05ld0ludHJhRnJlcUNlbGxTSS1FQ04wIDo6PQkJCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUVDTjAKK30KK05ld0ludHJhRnJlcUNlbGxTSS1IQ1MtUlNDUCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1SU0NQCit9CisKK05ld0ludHJhRnJlcUNlbGxTSS1IQ1MtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1FQ04wCit9CisKK05ld0ludHJhRnJlcUNlbGxTSS1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLVJTQ1AtTENSLXI0Cit9CisKK05ld0ludHJhRnJlcUNlbGxTSS1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUVDTjAtTENSLXI0Cit9CitOZXdJbnRyYUZyZXFDZWxsU0ktSENTLVJTQ1AtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtUlNDUC1MQ1ItcjQKK30KKworTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1FQ04wLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLUVDTjAtTENSLXI0Cit9CisKK05ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktUlNDUAorCitOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1FQ04wIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktRUNOMAorCitOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktSENTLVJTQ1AKKworTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1FQ04wCisKK05ld0ludHJhRnJlcUNlbGxTSS1MaXN0LVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLVJTQ1AtTENSLXI0CisKK05ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktRUNOMC1MQ1ItcjQKKworTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1IQ1MtUlNDUC1MQ1ItcjQKKworTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1IQ1MtRUNOMC1MQ1ItcjQKKworCS0tIElFICJub25Vc2VkRnJlcVRocmVzaG9sZCIgaXMgbm90IG5lZWRlZCBpbiBjYXNlIG9mIGV2ZW50IDJhCisJLS0gSW4gY2FzZSBvZiBldmVudCAyYSBVVFJBTiBzaG91bGQgaW5jbHVkZSB2YWx1ZSAwIHdpdGhpbiBJRSAibm9uVXNlZEZyZXFUaHJlc2hvbGQiCisJLS0gSW4gY2FzZSBvZiBldmVudCAyYSwgdGhlIFVFIHNoYWxsIGJlIGlnbm9yZSBJRSAibm9uVXNlZEZyZXFUaHJlc2hvbGQiCisJLS0gSW4gbGF0ZXIgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UgaW5jbHVkaW5nIHRoaXMgSUUsIGEgc3BlY2lhbCB2ZXJzaW9uIG9mCisJLS0gSUUgIk5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdCIgbWF5IGJlIGRlZmluZWQgZm9yIGV2ZW50IDJhLCBuYW1lbHkgYQorCS0tIHZlcnNpb24gbm90IGluY2x1ZGluZyBJRSAibm9uVXNlZEZyZXFUaHJlc2hvbGQiCitOb25Vc2VkRnJlcVBhcmFtZXRlciA6Oj0JCQlTRVFVRU5DRSB7CisJbm9uVXNlZEZyZXFUaHJlc2hvbGQJCQkJVGhyZXNob2xkLAorCW5vblVzZWRGcmVxVwkJCQkJCVcKK30KKworTm9uVXNlZEZyZXFQYXJhbWV0ZXItcjYgOjo9CQkJU0VRVUVOQ0UgeworCW5vblVzZWRGcmVxVGhyZXNob2xkCQkJCVRocmVzaG9sZC1yNiwKKwlub25Vc2VkRnJlcVcJCQkJCQlXCit9CisKK05vblVzZWRGcmVxUGFyYW1ldGVyTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKKwkJCQkJCQkJCQlOb25Vc2VkRnJlcVBhcmFtZXRlcgorCitOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCisJCQkJCQkJCQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXItcjYKKworTm9uVXNlZEZyZXFXTGlzdC1yNiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YgVworCitPYnNlcnZlZFRpbWVEaWZmZXJlbmNlVG9HU00gOjo9CQlJTlRFR0VSICgwLi40MDk1KQorCitPVERPQS1TZWFyY2hXaW5kb3dTaXplIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWMyMCwgYzQwLCBjODAsIGMxNjAsIGMzMjAsCisJCQkJCQkJCQkJYzY0MCwgYzEyODAsIG1vcmVUaGFuMTI4MCB9CisKKy0tIFNQQVJFOiBQYXRobG9zcywgTWF4ID0gMTU4CistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorUGF0aGxvc3MgOjo9CQkJCQkJSU5URUdFUiAoNDYuLjE3MykKKworUGVuYWx0eVRpbWUtUlNDUCA6Oj0JCQkJQ0hPSUNFIHsKKwlub3RVc2VkCQkJCQkJCQlOVUxMLAorCXB0MTAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldDEsCisJcHQyMAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0MSwKKwlwdDMwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXQxLAorCXB0NDAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldDEsCisJcHQ1MAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0MSwKKwlwdDYwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXQxCit9CisKK1BlbmFsdHlUaW1lLUVDTjAgOjo9CQkJCUNIT0lDRSB7CisJbm90VXNlZAkJCQkJCQkJTlVMTCwKKwlwdDEwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXRMaXN0LAorCXB0MjAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldExpc3QsCisJcHQzMAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0TGlzdCwKKwlwdDQwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXRMaXN0LAorCXB0NTAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldExpc3QsCisJcHQ2MAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0TGlzdAorfQorCitQZW5kaW5nVGltZUFmdGVyVHJpZ2dlciA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwdGF0MC0yNSwgcHRhdDAtNSwgcHRhdDEsCisJCQkJCQkJCQkJcHRhdDIsIHB0YXQ0LCBwdGF0OCwgcHRhdDE2IH0KKworUGVyaW9kaWNhbE9yRXZlbnRUcmlnZ2VyIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGVyaW9kaWNhbCwKKwkJCQkJCQkJCQlldmVudFRyaWdnZXIgfQorCitQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEgOjo9CQlTRVFVRU5DRSB7CisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50CQkJCQlERUZBVUxUIHJhLUluZmluaXR5LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbExvbmcKK30KKworUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzIDo6PSBTRVFVRU5DRSB7CisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CisKK1BMTU5JZGVudGl0aWVzT2ZOZWlnaGJvdXJDZWxscyA6Oj0JU0VRVUVOQ0UgeworCQlwbG1uc09mSW50cmFGcmVxQ2VsbHNMaXN0CQlQTE1Oc09mSW50cmFGcmVxQ2VsbHNMaXN0CQkJT1BUSU9OQUwsCisJCXBsbW5zT2ZJbnRlckZyZXFDZWxsc0xpc3QJCVBMTU5zT2ZJbnRlckZyZXFDZWxsc0xpc3QJCQlPUFRJT05BTCwKKwkJcGxtbnNPZkludGVyUkFUQ2VsbHNMaXN0CQlQTE1Oc09mSW50ZXJSQVRDZWxsc0xpc3QJCQlPUFRJT05BTAorfQorCitQTE1Oc09mSW50ZXJGcmVxQ2VsbHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwlwbG1uLUlkZW50aXR5CQkJCQkJCQlQTE1OLUlkZW50aXR5CQkJCU9QVElPTkFMCit9CisKK1BMTU5zT2ZJbnRyYUZyZXFDZWxsc0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXBsbW4tSWRlbnRpdHkJCQkJCQkJCVBMTU4tSWRlbnRpdHkJCQkJT1BUSU9OQUwKK30KKworUExNTnNPZkludGVyUkFUQ2VsbHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwlwbG1uLUlkZW50aXR5CQkJCQkJCQlQTE1OLUlkZW50aXR5CQkJCU9QVElPTkFMCit9CisKK1Bvc2l0aW9uRXN0aW1hdGUgOjo9CQkJCUNIT0lDRSB7CisJZWxsaXBzb2lkUG9pbnQJCQkJCQlFbGxpcHNvaWRQb2ludCwKKwllbGxpcHNvaWRQb2ludFVuY2VydENpcmNsZQkJCUVsbGlwc29pZFBvaW50VW5jZXJ0Q2lyY2xlLAorCWVsbGlwc29pZFBvaW50VW5jZXJ0RWxsaXBzZQkJCUVsbGlwc29pZFBvaW50VW5jZXJ0RWxsaXBzZSwKKwllbGxpcHNvaWRQb2ludEFsdGl0dWRlCQkJCUVsbGlwc29pZFBvaW50QWx0aXR1ZGUsCisJZWxsaXBzb2lkUG9pbnRBbHRpdHVkZUVsbGlwc2UJCUVsbGlwc29pZFBvaW50QWx0aXR1ZGVFbGxpcHNvaWRlCit9CisKK1Bvc2l0aW9uaW5nTWV0aG9kIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlvdGRvYSwKKwkJCQkJCQkJCQlncHMsCisJCQkJCQkJCQkJb3Rkb2FPckdQUywgY2VsbElEIH0KKworLS0gQWN0dWFsIHZhbHVlIFBSQyA9IElFIHZhbHVlICogMC4zMgorUFJDIDo6PQkJCQkJCQkJSU5URUdFUiAoLTIwNDcuLjIwNDcpCisKKy0tIFNQQVJFOiBQcmltYXJ5Q0NQQ0gtUlNDUCwgTWF4ID0gOTEKKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitQcmltYXJ5Q0NQQ0gtUlNDUCA6Oj0JCQkJSU5URUdFUiAoMC4uMTI3KQorCitRLUhDUyA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uOTkpCisKK1EtT2Zmc2V0Uy1OIDo6PQkJCQkJCUlOVEVHRVIgKC01MC4uNTApCisKK1EtUXVhbE1pbiA6Oj0JCQkJCQlJTlRFR0VSICgtMjQuLjApCisKKy0tIEFjdHVhbCB2YWx1ZSBRLVJ4bGV2TWluID0gKElFIHZhbHVlICogMikgKyAxCitRLVJ4bGV2TWluIDo6PQkJCQkJCUlOVEVHRVIgKC01OC4uLTEzKQorCitRdWFsaXR5RXZlbnRSZXN1bHRzIDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CisKK1F1YWxpdHlNZWFzdXJlZFJlc3VsdHMgOjo9CQkJU0VRVUVOQ0UgeworCWJsZXJNZWFzdXJlbWVudFJlc3VsdHNMaXN0CQkJQkxFUi1NZWFzdXJlbWVudFJlc3VsdHNMaXN0CQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJTlVMTCwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2lyLU1lYXN1cmVtZW50UmVzdWx0cwkJCQlTSVItTWVhc3VyZW1lbnRMaXN0CQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUXVhbGl0eU1lYXN1cmVtZW50IDo6PQkJCQlTRVFVRU5DRSB7CisJcXVhbGl0eVJlcG9ydGluZ1F1YW50aXR5CQkJUXVhbGl0eVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlRdWFsaXR5UmVwb3J0Q3JpdGVyaWEKK30KKworUXVhbGl0eVJlcG9ydENyaXRlcmlhIDo6PQkJCUNIT0lDRSB7CisJcXVhbGl0eVJlcG9ydGluZ0NyaXRlcmlhCQkJUXVhbGl0eVJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYSwKKwlub1JlcG9ydGluZwkJCQkJCQlOVUxMCit9CisKK1F1YWxpdHlSZXBvcnRpbmdDcml0ZXJpYSA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlRdWFsaXR5UmVwb3J0aW5nQ3JpdGVyaWFTaW5nbGUKKworUXVhbGl0eVJlcG9ydGluZ0NyaXRlcmlhU2luZ2xlIDo6PQlTRVFVRU5DRSB7CisJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCXRvdGFsQ1JDCQkJCQkJCUlOVEVHRVIgKDEuLjUxMiksCisJYmFkQ1JDCQkJCQkJCQlJTlRFR0VSICgxLi41MTIpLAorCXBlbmRpbmdBZnRlclRyaWdnZXIJCQkJCUlOVEVHRVIgKDEuLjUxMikKK30KKworUXVhbGl0eVJlcG9ydGluZ1F1YW50aXR5IDo6PQkJU0VRVUVOQ0UgeworCWRsLVRyYW5zQ2hCTEVSCQkJCQkJQk9PTEVBTiwKKwlibGVyLWRsLVRyYW5zQ2hJZExpc3QJCQkJQkxFUi1UcmFuc0NoSWRMaXN0CQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlOVUxMLAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzaXItVEZDUy1MaXN0CQkJCQkJU0lSLVRGQ1MtTGlzdAkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitSQVQtVHlwZSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlnc20sIGlzMjAwMCB9CisKK1JlZmVyZW5jZUNlbGxQb3NpdGlvbiA6Oj0JCQlDSE9JQ0UgeworCWVsbGlwc29pZFBvaW50CQkJCQkJRWxsaXBzb2lkUG9pbnQsCisJZWxsaXBzb2lkUG9pbnRXaXRoQWx0aXR1ZGUJCQlFbGxpcHNvaWRQb2ludEFsdGl0dWRlCit9CisKKy0tIFJlZmVyZW5jZUxvY2F0aW9uLCBhcyBkZWZpbmVkIGluIDIzLjAzMgorUmVmZXJlbmNlTG9jYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCWVsbGlwc29pZFBvaW50QWx0aXR1ZGVFbGxpcHNvaWRlCQlFbGxpcHNvaWRQb2ludEFsdGl0dWRlRWxsaXBzb2lkZQorfQorCitSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbCA6Oj0gCUNIT0lDRSB7CisJLS0gQWN0dWFsIHZhbHVlIGFjY3VyYWN5NDAgPSBJRSB2YWx1ZSAqIDQwCisJYWNjdXJhY3k0MAkJCQkJCQlJTlRFR0VSICgwLi45NjApLAorCS0tIEFjdHVhbCB2YWx1ZSBhY2N1cmFjeTI1NiA9IElFIHZhbHVlICogMjU2CisJYWNjdXJhY3kyNTYJCQkJCQkJSU5URUdFUiAoMC4uMTUwKSwKKwktLSBBY3R1YWwgdmFsdWUgYWNjdXJhY3kyNTYwID0gSUUgdmFsdWUgKiAyNTYwCisJYWNjdXJhY3kyNTYwCQkJCQkJSU5URUdFUiAoMC4uMTUpCit9CisKK1JlbW92ZWRJbnRlckZyZXFDZWxsTGlzdCA6Oj0JCUNIT0lDRSB7CisJcmVtb3ZlQWxsSW50ZXJGcmVxQ2VsbHMJCQkJTlVMTCwKKwlyZW1vdmVTb21lSW50ZXJGcmVxQ2VsbHMJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlJbnRlckZyZXFDZWxsSUQsCisJcmVtb3ZlTm9JbnRlckZyZXFDZWxscwkJCQlOVUxMCit9CisKK1JlbW92ZWRJbnRlclJBVENlbGxMaXN0IDo6PQkJQ0hPSUNFIHsKKwlyZW1vdmVBbGxJbnRlclJBVENlbGxzCQkJTlVMTCwKKwlyZW1vdmVTb21lSW50ZXJSQVRDZWxscwkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCUludGVyUkFUQ2VsbElELAorCXJlbW92ZU5vSW50ZXJSQVRDZWxscwkJCU5VTEwKK30KKworUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0IDo6PQkJQ0hPSUNFIHsKKwlyZW1vdmVBbGxJbnRyYUZyZXFDZWxscwkJCQlOVUxMLAorCXJlbW92ZVNvbWVJbnRyYUZyZXFDZWxscwkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCUludHJhRnJlcUNlbGxJRCwKKwlyZW1vdmVOb0ludHJhRnJlcUNlbGxzCQkJCU5VTEwKK30KKworUmVwbGFjZW1lbnRBY3RpdmF0aW9uVGhyZXNob2xkIDo6PSAJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm90QXBwbGljYWJsZSwgdDEsIHQyLAorCQkJCQkJCQkJCXQzLCB0NCwgdDUsIHQ2LCB0NyB9CisKK1JlcG9ydERlYWN0aXZhdGlvblRocmVzaG9sZCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5vdEFwcGxpY2FibGUsIHQxLCB0MiwKKwkJCQkJCQkJCQl0MywgdDQsIHQ1LCB0NiwgdDcgfQorCitSZXBvcnRpbmdBbW91bnQgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlyYTEsIHJhMiwgcmE0LCByYTgsIHJhMTYsIHJhMzIsCisJCQkJCQkJCQkJcmE2NCwgcmEtSW5maW5pdHkgfQorCitSZXBvcnRpbmdDZWxsU3RhdHVzIDo6PQkJCQlDSE9JQ0V7CisJd2l0aGluQWN0aXZlU2V0CQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCXdpdGhpbk1vbml0b3JlZFNldFVzZWRGcmVxCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCXdpdGhpbkFjdGl2ZUFuZE9yTW9uaXRvcmVkVXNlZEZyZXEJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCXdpdGhpbkRldGVjdGVkU2V0VXNlZEZyZXEJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTEsCisJd2l0aGluTW9uaXRvcmVkQW5kT3JEZXRlY3RlZFVzZWRGcmVxCisJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCWFsbEFjdGl2ZXBsdXNNb25pdG9yZWRTZXQJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTMsCisJYWxsQWN0aXZlUGx1c0RldGVjdGVkU2V0CQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUzLAorCWFsbEFjdGl2ZVBsdXNNb25pdG9yZWRBbmRPckRldGVjdGVkU2V0CisJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUzLAorCXdpdGhpblZpcnR1YWxBY3RTZXQJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCXdpdGhpbk1vbml0b3JlZFNldE5vblVzZWRGcmVxCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTEsCisJd2l0aGluTW9uaXRvcmVkQW5kT3JWaXJ0dWFsQWN0aXZlU2V0Tm9uVXNlZEZyZXEKKwkJCQkJCQkJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTEsCisJYWxsVmlydHVhbEFjdFNldHBsdXNNb25pdG9yZWRTZXROb25Vc2VkRnJlcQkKKwkJCQkJCQkJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTMsCisJd2l0aGluQWN0U2V0T3JWaXJ0dWFsQWN0U2V0LUludGVyUkFUY2VsbHMKKwkJCQkJCQkJCQlNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTIsCisJd2l0aGluQWN0U2V0QW5kT3JNb25pdG9yZWRVc2VkRnJlcU9yVmlydHVhbEFjdFNldEFuZE9yTW9uaXRvcmVkTm9uVXNlZEZyZXEJCisJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUyCit9CisKK1JlcG9ydGluZ0NlbGxTdGF0dXNPcHQgOjo9CQkJU0VRVUVOQ0UgeworCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CisKKworUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0ggOjo9CQkJU0VRVUVOQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHksCisJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJQ2VsbERDSC1SZXBvcnRDcml0ZXJpYQorfQorCitSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5LAorCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZSwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUNlbGxEQ0gtUmVwb3J0Q3JpdGVyaWEtTENSLXI0Cit9CisKK1JlcG9ydGluZ0ludGVydmFsIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub1BlcmlvZGljYWxyZXBvcnRpbmcsIHJpMC0yNSwgCisJCQkJCQkJCQkJcmkwLTUsIHJpMSwgcmkyLCByaTQsIHJpOCwgcmkxNiB9CisKK1JlcG9ydGluZ0ludGVydmFsTG9uZyA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlyaWwwLCByaWwwLTI1LCByaWwwLTUsIHJpbDEsCisJCQkJCQkJCQkJcmlsMiwgcmlsMywgcmlsNCwgcmlsNiwgcmlsOCwKKwkJCQkJCQkJCQlyaWwxMiwgcmlsMTYsIHJpbDIwLCByaWwyNCwKKwkJCQkJCQkJCQlyaWwyOCwgcmlsMzIsIHJpbDY0IH0KKwkJCQkJCQkJCS0tIFdoZW4gdGhlIHZhbHVlINJyaWww0yBpcyB1c2VkLCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdAorCQkJCQkJCQkJLS0gZGVmaW5lZC4KKworLS0gQWN0dWFsIHZhbHVlIFJlcG9ydGluZ1JhbmdlID0gSUUgdmFsdWUgKiAwLjUKK1JlcG9ydGluZ1JhbmdlIDo6PQkJCQkJSU5URUdFUiAoMC4uMjkpCisKK1JMLUFkZGl0aW9uSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCQkJCQkJCQkJUHJpbWFyeUNQSUNILUluZm8KKworUkwtSW5mb3JtYXRpb25MaXN0cyA6Oj0JCQkJU0VRVUVOQ0UgeworCXJsLUFkZGl0aW9uSW5mb0xpc3QJCQkJCVJMLUFkZGl0aW9uSW5mb0xpc3QJCQkJCU9QVElPTkFMLAorCXJMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCQlSTC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwKK30KKworUkxDLUJ1ZmZlcnNQYXlsb2FkIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwbDAsIHBsNCwgcGw4LCBwbDE2LCBwbDMyLAorCQkJCQkJCQkJCXBsNjQsIHBsMTI4LCBwbDI1NiwgcGw1MTIsIHBsMTAyNCwKKwkJCQkJCQkJCQlwbDJrLCBwbDRrLCBwbDhrLCBwbDE2aywgcGwzMmssCisJCQkJCQkJCQkJcGw2NGssIHBsMTI4aywgcGwyNTZrLCBwbDUxMmssIHBsMTAyNGssCisJCQkJCQkJCQkJc3BhcmUxMiwgc3BhcmUxMSwgc3BhcmUxMCwgc3BhcmU5LCBzcGFyZTgsCisJCQkJCQkJCQkJc3BhcmU3LCBzcGFyZTYsIHNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsCisJCQkJCQkJCQkJc3BhcmUyLCBzcGFyZTEgfQorCistLSBBY3R1YWwgdmFsdWUgUlJDID0gSUUgdmFsdWUgKiAwLjAzMgorUlJDIDo6PQkJCQkJCQkJSU5URUdFUiAoLTEyNy4uMTI3KQorCitTYXREYXRhIDo6PQkJCQkJCQlTRVFVRU5DRXsKKwlzYXRJRAkJCQkJCQkJU2F0SUQsCisJaW9kZQkJCQkJCQkJSU9ERQorfQorCitTYXREYXRhTGlzdCA6Oj0JCQkJCQlTRVFVRU5DRSAoU0laRSAoMC4ubWF4U2F0KSkgT0YKKwkJCQkJCQkJCQlTYXREYXRhCisKK1NhdGVsbGl0ZVN0YXR1cyA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5zLU5OLVUsCisJCQkJCQkJCQkJZXMtU04sCisJCQkJCQkJCQkJZXMtTk4tVSwKKwkJCQkJCQkJCQlyZXYyLAorCQkJCQkJCQkJCXJldiB9CisKKy0tIElkZW50aWZpZXMgdGhlIHNhdGVsbGl0ZSBhbmQgaXMgZXF1YWwgdG8gKFNWIElEIE5vIC0gMSkgd2hlcmUgU1YgSUQgTm8gaXMgZGVmaW5lZCBpbiBbMTJdLgorU2F0SUQgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCitTRk4tT2Zmc2V0LVZhbGlkaXR5IDo6PQkJCUVOVU1FUkFURUQgeyBmYWxzZSB9CisKK1NGTi1TRk4tRHJpZnQgOjo9IAkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQwLCBzZm5zZm5kcmlmdDEsIHNmbnNmbmRyaWZ0MiwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdDMsIHNmbnNmbmRyaWZ0NCwgc2Zuc2ZuZHJpZnQ1LAorCQkJCQkJCQkJCXNmbnNmbmRyaWZ0OCwgc2Zuc2ZuZHJpZnQxMCwgc2Zuc2ZuZHJpZnQxNSwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdDI1LCBzZm5zZm5kcmlmdDM1LCBzZm5zZm5kcmlmdDUwLAorCQkJCQkJCQkJCXNmbnNmbmRyaWZ0NjUsIHNmbnNmbmRyaWZ0ODAsIHNmbnNmbmRyaWZ0MTAwLAorCQkJCQkJCQkJCXNmbnNmbmRyaWZ0LTEsIHNmbnNmbmRyaWZ0LTIsIHNmbnNmbmRyaWZ0LTMsCisJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQtNCwgc2Zuc2ZuZHJpZnQtNSwgc2Zuc2ZuZHJpZnQtOCwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdC0xMCwgc2Zuc2ZuZHJpZnQtMTUsIHNmbnNmbmRyaWZ0LTI1LAorCQkJCQkJCQkJCXNmbnNmbmRyaWZ0LTM1LCBzZm5zZm5kcmlmdC01MCwgc2Zuc2ZuZHJpZnQtNjUsCisJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQtODAsIHNmbnNmbmRyaWZ0LTEwMH0KKworU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZSA6Oj0JCUNIT0lDRSB7CisJdHlwZTEJCQkJCQkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UxLAorCXR5cGUyCQkJCQkJCQlTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMgorfQorCistLSBTUEFSRTogU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTEsIE1heCA9IDk4MzAzOTkKKy0tIEZvciAxLjI4TWNwcyBUREQsIE1heCB2YWx1ZSBvZiBTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMSBpcyAzMjc2Nzk5LgorLS0gVmFsdWVzIGFib3ZlIE1heCBhcmUgc3BhcmUKK1NGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UxIDo6PQkJSU5URUdFUiAoMC4uMTY3NzcyMTUpCisKKy0tIFNQQVJFOiBTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMiwgTWF4ID0gNDA5NjEKKy0tIEZvciAxLjI4TWNwcyBUREQsIE1heCB2YWx1ZSBvZiBTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMiBpcyAyNzY0OS4KKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMiA6Oj0JCUlOVEVHRVIgKDAuLjY1NTM1KQorCitTRk4tU0ZOLU9URC1UeXBlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub1JlcG9ydCwKKwkJCQkJCQkJCQl0eXBlMSwKKwkJCQkJCQkJCQl0eXBlMiB9CisKK1NGTi1TRk4tUmVsVGltZURpZmZlcmVuY2UxIDo6PQkJU0VRVUVOQ0UgeworCXNmbi1PZmZzZXQJCQkJCQkJSU5URUdFUiAoMCAuLiA0MDk1KSwKKwlzZm4tc2ZuLVJlbHRpbWVkaWZmZXJlbmNlCQkJSU5URUdFUiAoMC4uIDM4Mzk5KQorfQorCitTRk4tVE9XLVVuY2VydGFpbnR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlsZXNzVGhhbjEwLAorCQkJCQkJCQkJCW1vcmVUaGFuMTAgfQorCisKK1NJUiA6Oj0JCQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCisKK1NJUi1NZWFzdXJlbWVudExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCVNJUi1NZWFzdXJlbWVudFJlc3VsdHMKKworCitTSVItTWVhc3VyZW1lbnRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4sCisJc2lyLVRpbWVzbG90TGlzdAkJCQkJU0lSLVRpbWVzbG90TGlzdAorfQorCitTSVItVEZDUyA6Oj0JCQkJCQlURkNTLUlkZW50aXR5UGxhaW4KKworCitTSVItVEZDUy1MaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJU0lSLVRGQ1MKKworU0lSLVRpbWVzbG90TGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQlTSVIKKworLS0gU3ViRnJhbWUxUmVzZXJ2ZWQsIHJlc2VydmVkIGJpdHMgaW4gc3ViZnJhbWUgMSBvZiB0aGUgR1BTIG5hdmlnYXRpb24gbWVzc2FnZQorU3ViRnJhbWUxUmVzZXJ2ZWQgOjo9IAkJCQlTRVFVRU5DRSB7CisgCXJlc2VydmVkMQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMykpLAorCXJlc2VydmVkMgkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCXJlc2VydmVkMwkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCXJlc2VydmVkNAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCit9CisKK1QtQURWaW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJCQkJdC1BRFYJCQkJCUlOVEVHRVIoMC4uMjA0NyksCisJCQkJc2ZuCQkJCQkJSU5URUdFUigwLi40MDk1KQorfQorCitULUNSTWF4IDo6PQkJCQkJCQlDSE9JQ0UgeworCW5vdFVzZWQJCQkJCQkJCU5VTEwsCisJdDMwCQkJCQkJCQkJTi1DUi1ULUNSTWF4SHlzdCwKKwl0NjAJCQkJCQkJCQlOLUNSLVQtQ1JNYXhIeXN0LAorCXQxMjAJCQkJCQkJCU4tQ1ItVC1DUk1heEh5c3QsCisJdDE4MAkJCQkJCQkJTi1DUi1ULUNSTWF4SHlzdCwKKwl0MjQwCQkJCQkJCQlOLUNSLVQtQ1JNYXhIeXN0Cit9CisKK1QtQ1JNYXhIeXN0IDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5vdFVzZWQsIHQxMCwgdDIwLCB0MzAsCisJCQkJCQkJCQkJdDQwLCB0NTAsIHQ2MCwgdDcwIH0KKworVGVtcG9yYXJ5T2Zmc2V0MSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdG8zLCB0bzYsIHRvOSwgdG8xMiwgdG8xNSwKKwkJCQkJCQkJCQl0bzE4LCB0bzIxLCBpbmZpbml0ZSB9CisKK1RlbXBvcmFyeU9mZnNldDIgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRvMiwgdG8zLCB0bzQsIHRvNiwgdG84LAorCQkJCQkJCQkJCXRvMTAsIHRvMTIsIGluZmluaXRlIH0KKworVGVtcG9yYXJ5T2Zmc2V0TGlzdCA6Oj0JCQkJU0VRVUVOQ0UgCXsKKwkJdGVtcG9yYXJ5T2Zmc2V0MSAJCQkJVGVtcG9yYXJ5T2Zmc2V0MSwKKwkJdGVtcG9yYXJ5T2Zmc2V0MiAJCQkJVGVtcG9yYXJ5T2Zmc2V0MgorfQorCitUaHJlc2hvbGQgOjo9CQkJCQkJSU5URUdFUiAoLTExNS4uMCkKKworVGhyZXNob2xkLXI2IDo6PQkJCQkJCQlJTlRFR0VSICgtMTIwLi4wKQorCistLSBUaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIGZyZXF1ZW5jeSBkZWZpbmVkIGluIEludGVyLUZyZXFFdmVudENyaXRlcmlhCitUaHJlaG9sZE5vblVzZWRGcmVxdWVuY3ktZGVsdGFMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCisJCQkJCQkJCQkJCURlbHRhUlNDUFBlckNlbGwKKworVGhyZXNob2xkUG9zaXRpb25DaGFuZ2UgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGMxMCwgcGMyMCwgcGMzMCwgcGM0MCwgcGM1MCwKKwkJCQkJCQkJCQlwYzEwMCwgcGMyMDAsIHBjMzAwLCBwYzUwMCwKKwkJCQkJCQkJCQlwYzEwMDAsIHBjMjAwMCwgcGM1MDAwLCBwYzEwMDAwLAorCQkJCQkJCQkJCXBjMjAwMDAsIHBjNTAwMDAsIHBjMTAwMDAwIH0KKworVGhyZXNob2xkU0ZOLUdQUy1UT1cgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXMxLCBtczIsIG1zMywgbXM1LCBtczEwLAorCQkJCQkJCQkJCW1zMjAsIG1zNTAsIG1zMTAwIH0KKworVGhyZXNob2xkU0ZOLVNGTi1DaGFuZ2UgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYzAtMjUsIGMwLTUsIGMxLCBjMiwgYzMsIGM0LCBjNSwKKwkJCQkJCQkJCQljMTAsIGMyMCwgYzUwLCBjMTAwLCBjMjAwLCBjNTAwLAorCQkJCQkJCQkJCWMxMDAwLCBjMjAwMCwgYzUwMDAgfQorCitUaHJlc2hvbGRVc2VkRnJlcXVlbmN5IDo6PQkJCUlOVEVHRVIgKC0xMTUuLjE2NSkKKworVGhyZXNob2xkVXNlZEZyZXF1ZW5jeS1yNiA6Oj0JCUlOVEVHRVIgKC0xMjAuLjE2NSkKKworLS0gQWN0dWFsIHZhbHVlIFRpbWVJbnRlcnZhbCA9IElFIHZhbHVlICogMjAuCitUaW1lSW50ZXJ2YWwgOjo9CQkJCQlJTlRFR0VSICgxLi4xMykKKworCitUaW1lc2xvdEluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwlidXJzdFR5cGUJCQkJCQkJQnVyc3RUeXBlCit9CisKK1RpbWVzbG90SW5mby1MQ1ItcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNAorfQorCitUaW1lc2xvdEluZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgorCQkJCQkJCQkJCVRpbWVzbG90SW5mbworCitUaW1lc2xvdEluZm9MaXN0LUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSKSkgT0YKKwkJCQkJCQkJCQlUaW1lc2xvdEluZm8tTENSLXI0CisKK1RpbWVzbG90SW5mb0xpc3QtcjQgOjo9CQkJCUNIT0lDRSB7CisJLS0gdGhlIGNob2ljZSBmb3IgNy42OCBNY3BzIFRERCBpcyB0aGUgc2FtZSBhcyBmb3IgMy44NCBNY3BzIFRERCAtLQorCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQkJVGltZXNsb3RJbmZvLAorCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLUxDUikpIE9GCisJCQkJCQkJCQkJCVRpbWVzbG90SW5mby1MQ1ItcjQKK30KKworLS0gU1BBUkU6IFRpbWVzbG90SVNDUCwgTWF4ID0gOTEKKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitUaW1lc2xvdElTQ1AgOjo9CQkJCQlJTlRFR0VSICgwLi4xMjcpCisKKworLS0gVGltZXNsb3RJU0NQLUxpc3Qgc2hhbGwgbm90IGluY2x1ZGUgbW9yZSB0aGFuIDYgZWxlbWVudHMgaW4gMS4yOE1jcHMgVEREIG1vZGUuCitUaW1lc2xvdElTQ1AtTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQlUaW1lc2xvdElTQ1AKKworVGltZXNsb3RMaXN0V2l0aElTQ1AgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQlUaW1lc2xvdFdpdGhJU0NQCisKK1RpbWVzbG90V2l0aElTQ1AgOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwl0aW1lc2xvdElTQ1AJCQkJCQlUaW1lc2xvdElTQ1AKK30KKworVGltZVRvVHJpZ2dlciA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXR0dDAsIHR0dDEwLCB0dHQyMCwgdHR0NDAsIHR0dDYwLAorCQkJCQkJCQkJCXR0dDgwLCB0dHQxMDAsIHR0dDEyMCwgdHR0MTYwLAorCQkJCQkJCQkJCXR0dDIwMCwgdHR0MjQwLCB0dDMyMCwgdHR0NjQwLAorCQkJCQkJCQkJCXR0dDEyODAsIHR0dDI1NjAsIHR0dDUwMDAgfQorCitUcmFmZmljVm9sdW1lRXZlbnRQYXJhbSA6Oj0JCQlTRVFVRU5DRSB7CisJZXZlbnRJRAkJCQkJCQkJVHJhZmZpY1ZvbHVtZUV2ZW50VHlwZSwKKwlyZXBvcnRpbmdUaHJlc2hvbGQJCQkJCVRyYWZmaWNWb2x1bWVUaHJlc2hvbGQsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIJCQkJCQlPUFRJT05BTCwKKwlwZW5kaW5nVGltZUFmdGVyVHJpZ2dlcgkJCQlQZW5kaW5nVGltZUFmdGVyVHJpZ2dlcgkJCQlPUFRJT05BTCwKKwl0eC1JbnRlcnJ1cHRpb25BZnRlclRyaWdnZXIJCQlUWC1JbnRlcnJ1cHRpb25BZnRlclRyaWdnZXIJCQlPUFRJT05BTAorfQorCitUcmFmZmljVm9sdW1lRXZlbnRSZXN1bHRzIDo6PQkJU0VRVUVOQ0UgeworCXVsLXRyYW5zcG9ydENoYW5uZWxDYXVzaW5nRXZlbnQJCVVMLVRyQ0gtSWRlbnRpdHksCisJdHJhZmZpY1ZvbHVtZUV2ZW50SWRlbnRpdHkJCQlUcmFmZmljVm9sdW1lRXZlbnRUeXBlCit9CisKK1RyYWZmaWNWb2x1bWVFdmVudFR5cGUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTRhLAorCQkJCQkJCQkJCWU0YiB9CisKK1RyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkgOjo9CQlDSE9JQ0UgeworCXJsYy1CdWZmZXJQYXlsb2FkCQkJCQlOVUxMLAorCWF2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZAkJCVRpbWVJbnRlcnZhbCwKKwl2YXJpYW5jZU9mUkxDLUJ1ZmZlclBheWxvYWQJCQlUaW1lSW50ZXJ2YWwKK30KKworVHJhZmZpY1ZvbHVtZU1lYXNTeXNJbmZvIDo6PQkJU0VRVUVOQ0UgeworCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudElECQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgNCwKKwl0cmFmZmljVm9sdW1lTWVhc3VyZW1lbnRPYmplY3RMaXN0CVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudE9iamVjdExpc3QJT1BUSU9OQUwsCisJdHJhZmZpY1ZvbHVtZU1lYXNRdWFudGl0eQkJCVRyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkJCQlPUFRJT05BTCwKKwl0cmFmZmljVm9sdW1lUmVwb3J0aW5nUXVhbnRpdHkJCVRyYWZmaWNWb2x1bWVSZXBvcnRpbmdRdWFudGl0eQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ0NyaXRlcmlhCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCisJcmVwb3J0Q3JpdGVyaWFTeXNJbmYJCQkJVHJhZmZpY1ZvbHVtZVJlcG9ydENyaXRlcmlhU3lzSW5mbworCit9CisKK1RyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHMgOjo9CVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlybGMtQnVmZmVyc1BheWxvYWQJCQkJCVJMQy1CdWZmZXJzUGF5bG9hZAkJCQkJT1BUSU9OQUwsCisJYXZlcmFnZVJMQy1CdWZmZXJQYXlsb2FkCQkJQXZlcmFnZVJMQy1CdWZmZXJQYXlsb2FkCQkJT1BUSU9OQUwsCisJdmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkCQkJVmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkCQkJT1BUSU9OQUwKK30KKworVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCisJCQkJCQkJCQkJVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0cworCitUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnQgOjo9IAkJU0VRVUVOQ0UgeworCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudE9iamVjdExpc3QJVHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50T2JqZWN0TGlzdAlPUFRJT05BTCwKKwl0cmFmZmljVm9sdW1lTWVhc1F1YW50aXR5CQkJVHJhZmZpY1ZvbHVtZU1lYXNRdWFudGl0eQkJCU9QVElPTkFMLAorCXRyYWZmaWNWb2x1bWVSZXBvcnRpbmdRdWFudGl0eQkJVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCVRyYWZmaWNWb2x1bWVSZXBvcnRDcml0ZXJpYQorfQorCitUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnRPYmplY3RMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJCVVMLVRyQ0gtSWRlbnRpdHkKKworVHJhZmZpY1ZvbHVtZVJlcG9ydENyaXRlcmlhIDo6PQkJQ0hPSUNFIHsKKwl0cmFmZmljVm9sdW1lUmVwb3J0aW5nQ3JpdGVyaWEJCVRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYSwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEsCisJbm9SZXBvcnRpbmcJCQkJCQkJTlVMTAorfQorCitUcmFmZmljVm9sdW1lUmVwb3J0Q3JpdGVyaWFTeXNJbmZvIDo6PQlDSE9JQ0UgeworCXRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYQkJVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQorfQorCitUcmFmZmljVm9sdW1lUmVwb3J0aW5nQ3JpdGVyaWEgOjo9IFNFUVVFTkNFIHsKKwktLSBOT1RFOiB0cmFuc0NoQ3JpdGVyaWFMaXN0IHNob3VsZCBiZSBtYW5kYXRvcnkgaW4gbGF0ZXIgdmVyc2lvbnMgb2YgdGhpcyBtZXNzYWdlCisJdHJhbnNDaENyaXRlcmlhTGlzdAkJCQkJVHJhbnNDaENyaXRlcmlhTGlzdAkJCQkJT1BUSU9OQUwKK30KKworVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ1F1YW50aXR5IDo6PSBTRVFVRU5DRSB7CisJcmxjLVJCLUJ1ZmZlclBheWxvYWQJCQkJQk9PTEVBTiwKKwlybGMtUkItQnVmZmVyUGF5bG9hZEF2ZXJhZ2UJCQlCT09MRUFOLAorCXJsYy1SQi1CdWZmZXJQYXlsb2FkVmFyaWFuY2UJCUJPT0xFQU4KK30KKworVHJhZmZpY1ZvbHVtZVRocmVzaG9sZCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0aDgsIHRoMTYsIHRoMzIsIHRoNjQsIHRoMTI4LAorCQkJCQkJCQkJCXRoMjU2LCB0aDUxMiwgdGgxMDI0LCB0aDJrLCB0aDNrLCAKKwkJCQkJCQkJCQl0aDRrLCB0aDZrLCB0aDhrLCB0aDEyaywgdGgxNmssIAorCQkJCQkJCQkJCXRoMjRrLCB0aDMyaywgdGg0OGssIHRoNjRrLCB0aDk2aywgCisJCQkJCQkJCQkJdGgxMjhrLCB0aDE5MmssIHRoMjU2aywgdGgzODRrLCAKKwkJCQkJCQkJCQl0aDUxMmssIHRoNzY4ayB9CisKK1RyYW5zQ2hDcml0ZXJpYSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl1bC10cmFuc3BvcnRDaGFubmVsSUQJCQkJVUwtVHJDSC1JZGVudGl0eQkJCQkJT1BUSU9OQUwsCisJZXZlbnRTcGVjaWZpY1BhcmFtZXRlcnMJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNQYXJFdmVudCkpIE9GIAorCQkJCQkJCQkJCQlUcmFmZmljVm9sdW1lRXZlbnRQYXJhbQkJCU9QVElPTkFMCit9CisKK1RyYW5zQ2hDcml0ZXJpYUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVRyYW5zQ2hDcml0ZXJpYQorCitUcmFuc2Zlck1vZGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhY2tub3dsZWRnZWRNb2RlUkxDLAorCQkJCQkJCQkJCXVuYWNrbm93bGVkZ2VkTW9kZVJMQyB9CisKK1RyYW5zbWl0dGVkUG93ZXJUaHJlc2hvbGQgOjo9CQlJTlRFR0VSICgtNTAuLjMzKQorCitUcmlnZ2VyaW5nQ29uZGl0aW9uMSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhY3RpdmVTZXRDZWxsc09ubHksCisJCQkJCQkJCQkJbW9uaXRvcmVkU2V0Q2VsbHNPbmx5LAorCQkJCQkJCQkJCWFjdGl2ZVNldEFuZE1vbml0b3JlZFNldENlbGxzIH0KKworVHJpZ2dlcmluZ0NvbmRpdGlvbjIgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYWN0aXZlU2V0Q2VsbHNPbmx5LAorCQkJCQkJCQkJCW1vbml0b3JlZFNldENlbGxzT25seSwKKwkJCQkJCQkJCQlhY3RpdmVTZXRBbmRNb25pdG9yZWRTZXRDZWxscywKKwkJCQkJCQkJCQlkZXRlY3RlZFNldENlbGxzT25seSwKKwkJCQkJCQkJCQlkZXRlY3RlZFNldEFuZE1vbml0b3JlZFNldENlbGxzIH0KKworVFgtSW50ZXJydXB0aW9uQWZ0ZXJUcmlnZ2VyIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHhpYXQwLTI1LCB0eGlhdDAtNSwgdHhpYXQxLAorCQkJCQkJCQkJCXR4aWF0MiwgdHhpYXQ0LCB0eGlhdDgsIHR4aWF0MTYgfQorCitVRFJFIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlsZXNzVGhhbjEsCisJCQkJCQkJCQkJYmV0d2VlbjEtYW5kLTQsCisJCQkJCQkJCQkJYmV0d2VlbjQtYW5kLTgsCisJCQkJCQkJCQkJb3ZlcjggfQorCitVRS02QUItRXZlbnQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJdHJhbnNtaXR0ZWRQb3dlclRocmVzaG9sZAkJCVRyYW5zbWl0dGVkUG93ZXJUaHJlc2hvbGQKK30KKworVUUtNkZHLUV2ZW50IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCS0tIGluIDEuMjggTWNwcyBUREQgdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQgY29ycmVzcG9uZHMgdG8gVEFEViBUaHJlc2hvbGQKKwl1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZVRocmVzaG9sZAlVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVRocmVzaG9sZAorfQorCistLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCistLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorVUUtQXV0b25vbW91c1VwZGF0ZU1vZGUgOjo9CQkJQ0hPSUNFIHsKKwlkdW1teQkJCQkJCQkJTlVMTCwKKwlvbldpdGhOb1JlcG9ydGluZwkJCQkJTlVMTCwKKwlkdW1teTIJCQkJCQkJCVJMLUluZm9ybWF0aW9uTGlzdHMgCit9CisKK1VFLUludGVybmFsRXZlbnRQYXJhbSA6Oj0JCQlDSE9JQ0UgeworCWV2ZW50NmEJCQkJCQkJCVVFLTZBQi1FdmVudCwKKwlldmVudDZiCQkJCQkJCQlVRS02QUItRXZlbnQsCisJZXZlbnQ2YwkJCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlldmVudDZkCQkJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCWV2ZW50NmUJCQkJCQkJCVRpbWVUb1RyaWdnZXIsCisJZXZlbnQ2ZgkJCQkJCQkJVUUtNkZHLUV2ZW50LAorCWV2ZW50NmcJCQkJCQkJCVVFLTZGRy1FdmVudAorfQorCitVRS1JbnRlcm5hbEV2ZW50UGFyYW1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCisJCQkJCQkJCQkJVUUtSW50ZXJuYWxFdmVudFBhcmFtCisKK1VFLUludGVybmFsRXZlbnRSZXN1bHRzIDo6PQkJCUNIT0lDRSB7CisJZXZlbnQ2YQkJCQkJCQkJTlVMTCwKKwlldmVudDZiCQkJCQkJCQlOVUxMLAorCWV2ZW50NmMJCQkJCQkJCU5VTEwsCisJZXZlbnQ2ZAkJCQkJCQkJTlVMTCwKKwlldmVudDZlCQkJCQkJCQlOVUxMLAorCWV2ZW50NmYJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCWV2ZW50NmcJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCXNwYXJlCQkJCQkJCQlOVUxMCit9CisKK1VFLUludGVybmFsTWVhc1F1YW50aXR5IDo6PQkJCVNFUVVFTkNFIHsKKwltZWFzdXJlbWVudFF1YW50aXR5CQkJCQlVRS1NZWFzdXJlbWVudFF1YW50aXR5LAorCWZpbHRlckNvZWZmaWNpZW50CQkJCQlGaWx0ZXJDb2VmZmljaWVudAkJCQkJREVGQVVMVCBmYzAKK30KKworVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMgOjo9CQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtVHJhbnNtaXR0ZWRQb3dlckZERAkJCQlVRS1UcmFuc21pdHRlZFBvd2VyCQkJT1BUSU9OQUwsCisJCQl1ZS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QJCQlVRS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQkJVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CU9QVElPTkFMLAorCQkJYXBwbGllZFRBCQkJCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cy1yNyA6Oj0JCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1UcmFuc21pdHRlZFBvd2VyRkRECQkJCVVFLVRyYW5zbWl0dGVkUG93ZXIJCQlPUFRJT05BTCwKKwkJCXVlLVJYLVRYLVJlcG9ydEVudHJ5TGlzdAkJCVVFLVJYLVRYLVJlcG9ydEVudHJ5TGlzdAlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1UcmFuc21pdHRlZFBvd2VyVERELUxpc3QJCQlVRS1UcmFuc21pdHRlZFBvd2VyVERELUxpc3QJT1BUSU9OQUwsCisJCQlhcHBsaWVkVEEJCQkJCQkJVUwtVGltaW5nQWR2YW5jZS1WSENSCQlPUFRJT05BTAorCQl9CisJfQorfQorCitVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cy1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwkJdWUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQkJVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQlPUFRJT05BTCwKKwkJdC1BRFZpbmZvCQkJCQkJCVQtQURWaW5mbwkJCQkJCU9QVElPTkFMCit9CisKK1VFLUludGVybmFsTWVhc3VyZW1lbnQgOjo9CQkJU0VRVUVOQ0UgeworCXVlLUludGVybmFsTWVhc1F1YW50aXR5CQkJCVVFLUludGVybmFsTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCXVlLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkJCVVFLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJVUUtSW50ZXJuYWxSZXBvcnRDcml0ZXJpYQorfQorCitVRS1JbnRlcm5hbE1lYXN1cmVtZW50LXI0IDo6PQkJU0VRVUVOQ0UgeworCXVlLUludGVybmFsTWVhc1F1YW50aXR5CQkJCVVFLUludGVybmFsTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCXVlLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkJCVVFLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHktcjQJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJVUUtSW50ZXJuYWxSZXBvcnRDcml0ZXJpYQorfQorCitVRS1JbnRlcm5hbE1lYXN1cmVtZW50U3lzSW5mbyA6Oj0gCVNFUVVFTkNFIHsKKwl1ZS1JbnRlcm5hbE1lYXN1cmVtZW50SUQJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCA1LAorCXVlLUludGVybmFsTWVhc1F1YW50aXR5CQkJCVVFLUludGVybmFsTWVhc1F1YW50aXR5Cit9CisKK1VFLUludGVybmFsUmVwb3J0Q3JpdGVyaWEgOjo9CQlDSE9JQ0UgeworCXVlLUludGVybmFsUmVwb3J0aW5nQ3JpdGVyaWEJCVVFLUludGVybmFsUmVwb3J0aW5nQ3JpdGVyaWEsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhLAorCW5vUmVwb3J0aW5nCQkJCQkJCU5VTEwKK30KKworVUUtSW50ZXJuYWxSZXBvcnRpbmdDcml0ZXJpYSA6Oj0JU0VRVUVOQ0UgeworCXVlLUludGVybmFsRXZlbnRQYXJhbUxpc3QJCQlVRS1JbnRlcm5hbEV2ZW50UGFyYW1MaXN0CQkJT1BUSU9OQUwKK30KKworVUUtSW50ZXJuYWxSZXBvcnRpbmdRdWFudGl0eSA6Oj0JU0VRVUVOQ0UgeworCXVlLVRyYW5zbWl0dGVkUG93ZXIJCQkJCUJPT0xFQU4sCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtUlgtVFgtVGltZURpZmZlcmVuY2UJCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlhcHBsaWVkVEEJCQkJCQkJQk9PTEVBTgorCQl9CisJfQorfQorCitVRS1JbnRlcm5hbFJlcG9ydGluZ1F1YW50aXR5LXI0IDo6PQlTRVFVRU5DRSB7CisJdWUtVHJhbnNtaXR0ZWRQb3dlcgkJCQkJQk9PTEVBTiwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZQkJCQlCT09MRUFOCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJLS0gYXBwbGllZFRBIGFwcGxpZXMgdG8gYm90aCAzLjg0IE1jcHMgVEREIGFuZCB0byA3LjY4IE1jcHMgVERELgorCQkJLS0gVGhlcmVmb3JlLCBubyBhZGRpdGlvbmFsIGNob2ljZSBvZiBUREQgbW9kZSBpcyBuZWNlc3NhcnkKKwkJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJYXBwbGllZFRBCQkJCQkJCUJPT0xFQU4KKwkJCQl9LAorCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0LUFEVmluZm8JCQkJCQkJQk9PTEVBTgorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworLS0gVEFCVUxBUjogVUUtTWVhc3VyZW1lbnRRdWFudGl0eSwgZm9yIDMuODQgTWNwcyBUREQgb25seSB0aGUgZmlyc3QgdHdvIHZhbHVlcworLS0gdWUtVHJhbnNtaXR0ZWRQb3dlciBhbmQgdXRyYS1DYXJyaWVyLVJTU0kgYXJlIHVzZWQuCistLSBGb3IgMS4yOCBNY3BzIFRERCB1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZSBjb3JyZXNwb25kcyB0byBULUFEViBpbiB0aGUgdGFidWxhcgorVUUtTWVhc3VyZW1lbnRRdWFudGl0eSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl1ZS1UcmFuc21pdHRlZFBvd2VyLAorCQkJCQkJCQkJCXV0cmEtQ2Fycmllci1SU1NJLAorCQkJCQkJCQkJCXVlLVJYLVRYLVRpbWVEaWZmZXJlbmNlIH0KKworVUUtUlgtVFgtUmVwb3J0RW50cnkgOjo9CQkJU0VRVUVOQ0UgeworCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwl1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUxCQlVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUxCit9CisKK1VFLVJYLVRYLVJlcG9ydEVudHJ5TGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCQkJCQkJCQkJVUUtUlgtVFgtUmVwb3J0RW50cnkKKworLS0gU1BBUkU6IFVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTEsIE1heCA9IDEyODAKKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUxIDo6PQkJCUlOVEVHRVIgKDc2OC4uMTc5MSkKKworCitVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUyIDo6PQlJTlRFR0VSICgwLi44MTkxKQorCitVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUySW5mbyA6Oj0JU0VRVUVOQ0UgeworCXVlLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTIJCQlVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUyLAorCW5laWdoYm91clF1YWxpdHkJCQkJCQlOZWlnaGJvdXJRdWFsaXR5Cit9CisKKy0tIEluIDEuMjggTWNwcyBUREQsIGFjdHVhbCB2YWx1ZSBmb3IKKy0tIFQtQURWIFRocmVzaG9sZCA9IChVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVRocmVzaG9sZCAtIDc2OCkgKiAwLjEyNQorVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQgOjo9IElOVEVHRVIgKDc2OC4uMTI4MCkKKworVUUtVHJhbnNtaXR0ZWRQb3dlciA6Oj0JCQkJSU5URUdFUiAoMC4uMTA0KQorCitVRS1UcmFuc21pdHRlZFBvd2VyVERELUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgorCQkJCQkJCQkJCVVFLVRyYW5zbWl0dGVkUG93ZXIKKworVUwtVHJDSC1JZGVudGl0eSA6Oj0JCQkJCUNIT0lDRXsKKwlkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QgY2hhbmdlZAorCS0tIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KKwlyYWNob3JjcGNoCQkJCQkJCU5VTEwsCisJdXNjaAkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5Cit9CisKK1VFLVBvc2l0aW9uaW5nLUFjY3VyYWN5IDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoNykpCisKKworVUUtUG9zaXRpb25pbmctQ2lwaGVyUGFyYW1ldGVycyA6Oj0JCQlTRVFVRU5DRSB7CisJY2lwaGVyaW5nS2V5RmxhZwkJCQkJQklUIFNUUklORyAoU0laRSAoMSkpLAorCWNpcGhlcmluZ1NlcmlhbE51bWJlcgkJCQlJTlRFR0VSICgwLi42NTUzNSkKK30KKworVUUtUG9zaXRpb25pbmctRXJyb3IgOjo9CQkJCQkJU0VRVUVOQ0UgeworCWVycm9yUmVhc29uCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUVycm9yQ2F1c2UsCisJdWUtcG9zaXRpb25pbmctR1BTLWFkZGl0aW9uYWxBc3Npc3RhbmNlRGF0YVJlcXVlc3QJCQlVRS1Qb3NpdGlvbmluZy1HUFMtQWRkaXRpb25hbEFzc2lzdGFuY2VEYXRhUmVxdWVzdAlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1FcnJvckNhdXNlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm90RW5vdWdoT1RET0EtQ2VsbHMsCisJCQkJCQkJCQkJbm90RW5vdWdoR1BTLVNhdGVsbGl0ZXMsCisJCQkJCQkJCQkJYXNzaXN0YW5jZURhdGFNaXNzaW5nLAorCQkJCQkJCQkJCW5vdEFjY29tcGxpc2hlZEdQUy1UaW1pbmdPZkNlbGxGcmFtZXMsCisJCQkJCQkJCQkJdW5kZWZpbmVkRXJyb3IsCisJCQkJCQkJCQkJcmVxdWVzdERlbmllZEJ5VXNlciwKKwkJCQkJCQkJCQlub3RQcm9jZXNzZWRBbmRUaW1lb3V0LAorCQkJCQkJCQkJCXJlZmVyZW5jZUNlbGxOb3RTZXJ2aW5nQ2VsbCB9CisKK1VFLVBvc2l0aW9uaW5nLUV2ZW50UGFyYW0gOjo9CQkJCQlTRVFVRU5DRSB7CisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydEZpcnN0Rml4CQkJCQkJQk9PTEVBTiwKKwltZWFzdXJlbWVudEludGVydmFsCQkJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudEludGVydmFsLAorCWV2ZW50U3BlY2lmaWNJbmZvCQkJCQlVRS1Qb3NpdGlvbmluZy1FdmVudFNwZWNpZmljSW5mbworfQorCitVRS1Qb3NpdGlvbmluZy1FdmVudFBhcmFtTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCisJCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctRXZlbnRQYXJhbQorCitVRS1Qb3NpdGlvbmluZy1FdmVudFNwZWNpZmljSW5mbyA6Oj0JCQlDSE9JQ0UgeworCWU3YQkJCQkJCQkJCVRocmVzaG9sZFBvc2l0aW9uQ2hhbmdlLAorCWU3YgkJCQkJCQkJCVRocmVzaG9sZFNGTi1TRk4tQ2hhbmdlLAorCWU3YwkJCQkJCQkJCVRocmVzaG9sZFNGTi1HUFMtVE9XCit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1BY3F1aXNpdGlvbkFzc2lzdGFuY2UgOjo9CVNFUVVFTkNFIHsKKwlncHMtUmVmZXJlbmNlVGltZQkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5OTk5KSwKKwl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lCQkJCVVUUkFOLUdQU1JlZmVyZW5jZVRpbWUJCQlPUFRJT05BTCwKKwlzYXRlbGxpdGVJbmZvcm1hdGlvbkxpc3QJCQlBY3F1aXNpdGlvblNhdEluZm9MaXN0Cit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1BZGRpdGlvbmFsQXNzaXN0YW5jZURhdGFSZXF1ZXN0IDo6PQkJU0VRVUVOQ0UgeworCWFsbWFuYWNSZXF1ZXN0CQkJCQkJQk9PTEVBTiwKKwl1dGNNb2RlbFJlcXVlc3QJCQkJCQlCT09MRUFOLAorCWlvbm9zcGhlcmljTW9kZWxSZXF1ZXN0CQkJCUJPT0xFQU4sCisJbmF2aWdhdGlvbk1vZGVsUmVxdWVzdAkJCQlCT09MRUFOLAorCWRncHNDb3JyZWN0aW9uc1JlcXVlc3QJCQkJQk9PTEVBTiwKKwlyZWZlcmVuY2VMb2NhdGlvblJlcXVlc3QJCQlCT09MRUFOLAorCXJlZmVyZW5jZVRpbWVSZXF1ZXN0CQkJCUJPT0xFQU4sCisJYXF1aXNpdGlvbkFzc2lzdGFuY2VSZXF1ZXN0CQkJQk9PTEVBTiwKKwlyZWFsVGltZUludGVncml0eVJlcXVlc3QJCQlCT09MRUFOLAorCW5hdk1vZGVsQWRkRGF0YVJlcXVlc3QJCQkJVUUtUG9zaXRpb25pbmctR1BTLU5hdk1vZGVsQWRkRGF0YVJlcQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctR1BTLUFsbWFuYWMgOjo9CQkJCQlTRVFVRU5DRSB7CisJd24tYQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWFsbWFuYWNTYXRJbmZvTGlzdAkJCQkJQWxtYW5hY1NhdEluZm9MaXN0LAorCXN2LUdsb2JhbEhlYWx0aAkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDM2NCkpCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YSA6Oj0JCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUJCQkJVUUtUG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZUxvY2F0aW9uCQkJUmVmZXJlbmNlTG9jYXRpb24JCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLURHUFMtQ29ycmVjdGlvbnMJCQkJVUUtUG9zaXRpb25pbmctR1BTLURHUFMtQ29ycmVjdGlvbnMJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLU5hdmlnYXRpb25Nb2RlbAkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtTmF2aWdhdGlvbk1vZGVsCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1Jb25vc3BoZXJpY01vZGVsCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1Jb25vc3BoZXJpY01vZGVsCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1VVEMtTW9kZWwJCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1VVEMtTW9kZWwJCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1BbG1hbmFjCQkJCQkJVUUtUG9zaXRpb25pbmctR1BTLUFsbWFuYWMJCQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtQWNxdWlzaXRpb25Bc3Npc3RhbmNlCQlVRS1Qb3NpdGlvbmluZy1HUFMtQWNxdWlzaXRpb25Bc3Npc3RhbmNlCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtUmVhbC10aW1lSW50ZWdyaXR5CQkJQmFkU2F0TGlzdAkJCQkJCQlPUFRJT05BTCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VDZWxsSW5mbwkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctR1BTLURHUFMtQ29ycmVjdGlvbnMgOjo9CQlTRVFVRU5DRSB7CisJZ3BzLVRPVwkJCQkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5KSwKKwlzdGF0dXNIZWFsdGgJCQkJCQlEaWZmQ29ycmVjdGlvblN0YXR1cywKKwlkZ3BzLUNvcnJlY3Rpb25TYXRJbmZvTGlzdAkJCURHUFMtQ29ycmVjdGlvblNhdEluZm9MaXN0Cit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1Jb25vc3BoZXJpY01vZGVsIDo6PQkJU0VRVUVOQ0UgeworCWFsZmEwCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYWxmYTEJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwlhbGZhMgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWFsZmEzCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYmV0YTAJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwliZXRhMQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWJldGEyCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYmV0YTMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtTWVhc3VyZW1lbnRSZXN1bHRzIDo6PQkJU0VRVUVOQ0UgeworCXJlZmVyZW5jZVRpbWUJCQkJCQlDSE9JQ0UgeworCQl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0CQlVVFJBTi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0LAorCQlncHMtUmVmZXJlbmNlVGltZU9ubHkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5OTk5KQorCX0sCisJZ3BzLU1lYXN1cmVtZW50UGFyYW1MaXN0CQkJR1BTLU1lYXN1cmVtZW50UGFyYW1MaXN0Cit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1OYXZpZ2F0aW9uTW9kZWwgOjo9CQkJU0VRVUVOQ0UgeworCW5hdmlnYXRpb25Nb2RlbFNhdEluZm9MaXN0CQkJTmF2aWdhdGlvbk1vZGVsU2F0SW5mb0xpc3QKK30KKworVUUtUG9zaXRpb25pbmctR1BTLU5hdk1vZGVsQWRkRGF0YVJlcSA6Oj0JCVNFUVVFTkNFIHsKKwlncHMtV2VlawkJCQkJCQlJTlRFR0VSICgwLi4xMDIzKSwKKwktLSBTUEFSRTogZ3BzLVRvZSwgTWF4ID0gMTY3CisJLS0gVmFsdWVzIGFib3ZlIE1heCBhcmUgc3BhcmUKKwlncHMtVG9lCQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCS0tIFNQQVJFOiB0VG9lTGltaXQsIE1heCA9IDEwCisJLS0gVmFsdWVzIGFib3ZlIE1heCBhcmUgc3BhcmUKKwl0VG9lTGltaXQJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCXNhdERhdGFMaXN0CQkJCQkJCVNhdERhdGFMaXN0Cit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VDZWxsSW5mbyA6Oj0JCVNFUVVFTkNFeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJlZmVyZW5jZUlkZW50aXR5CQkJCUNlbGxQYXJhbWV0ZXJzSUQKKwkJfQorCX0KK30KKworVUUtUG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUgOjo9CQkJU0VRVUVOQ0UgeworCWdwcy1XZWVrCQkJCQkJCUlOVEVHRVIgKDAuLjEwMjMpLAorCWdwcy10b3ctMW1zZWMJCQkJCQlHUFMtVE9XLTFtc2VjLAl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lCQkJCVVUUkFOLUdQU1JlZmVyZW5jZVRpbWUJCQkJT1BUSU9OQUwsCisJc2ZuLXRvdy1VbmNlcnRhaW50eQkJCQkJU0ZOLVRPVy1VbmNlcnRhaW50eQkJCQkJT1BUSU9OQUwsCisJdXRyYW4tR1BTLURyaWZ0UmF0ZQkJCQkJVVRSQU4tR1BTLURyaWZ0UmF0ZQkJCQkJT1BUSU9OQUwsCisJZ3BzLVRPVy1Bc3Npc3RMaXN0CQkJCQlHUFMtVE9XLUFzc2lzdExpc3QJCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1VVEMtTW9kZWwgOjo9CQkJCVNFUVVFTkNFIHsKKwlhMQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCisJYTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAorCXQtb3QJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwl3bi10CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJZGVsdGEtdC1MUwkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJd24tbHNmCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJZG4JCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJZGVsdGEtdC1MU0YJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCit9CisKK1VFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycyA6Oj0JCQkJU0VRVUVOQ0UgeworCWlwLVNwYWNpbmcJCQkJCQkJSVAtU3BhY2luZywKKwlpcC1MZW5ndGgJCQkJCQkJSVAtTGVuZ3RoLAorCWlwLU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi45KSwKKwlzZWVkCQkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJYnVyc3RNb2RlUGFyYW1ldGVycwkJCQkJQnVyc3RNb2RlUGFyYW1ldGVycyAJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaXAtU3BhY2luZwkJCQkJCQlJUC1TcGFjaW5nLAorCQkJaXAtTGVuZ3RoCQkJCQkJCUlQLUxlbmd0aCwKKwkJCWlwLU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi45KSwKKwkJCXNlZWQJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpcC1TcGFjaW5nLVRERAkJCQkJCUlQLVNwYWNpbmctVERELAorCQkJaXAtc2xvdAkJCQkJCQkJSU5URUdFUiAoMC4uMTQpLAorCQkJaXAtU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSksCisJCQlpcC1QQ0NQQ0cJCQkJCQkJSVAtUENDUENILXI0CQkJT1BUSU9OQUwKKwkJfQorCX0sCisJYnVyc3RNb2RlUGFyYW1ldGVycwkJCQkJQnVyc3RNb2RlUGFyYW1ldGVycwkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERELXI0LWV4dCA6Oj0JU0VRVUVOQ0UgeworCWlwLVNwYWNpbmcJCQkJCQkJSVAtU3BhY2luZy1UREQsCisJaXAtc2xvdAkJCQkJCQkJSU5URUdFUiAoMC4uMTQpLAorCWlwLVN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCWlwLVBDQ1BDRwkJCQkJCQlJUC1QQ0NQQ0gtcjQJCQkJCU9QVElPTkFMLAorCWJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJCUJ1cnN0TW9kZVBhcmFtZXRlcnMKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzIDo6PQkJCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctT1RET0EtTWVhc3VyZW1lbnQJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTWVhc3VyZW1lbnQJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctUG9zaXRpb25Fc3RpbWF0ZUluZm8JCQkJVUUtUG9zaXRpb25pbmctUG9zaXRpb25Fc3RpbWF0ZUluZm8JCQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtTWVhc3VyZW1lbnQJCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1NZWFzdXJlbWVudFJlc3VsdHMJCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUVycm9yCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUVycm9yCQkJCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cy12MzkwZXh0IDo6PQkJU0VRVUVOQ0UgeworCXVlLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50LXYzOTBleHQJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50LXYzOTBleHQKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHksCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlVRS1Qb3NpdGlvbmluZy1SZXBvcnRDcml0ZXJpYSwKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLUFzc2lzdGFuY2VEYXRhCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YQkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC12MzkwZXh0IDo6PQkgCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktdjM5MGV4dAkJVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktdjM5MGV4dAkJCU9QVElPTkFMLAorCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQgkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQgkJCisJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwl1ZS1wb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eQkJCQlVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eS1yNCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1SZXBvcnRDcml0ZXJpYSwKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YQkJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNAkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YQkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjd4eWV4dCA6Oj0JCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktdjd4eWV4dAorfQorCitVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudEV2ZW50UmVzdWx0cyA6Oj0JCUNIT0lDRSB7CisJZXZlbnQ3YQkJCQkJCQkJVUUtUG9zaXRpb25pbmctUG9zaXRpb25Fc3RpbWF0ZUluZm8sCisJZXZlbnQ3YgkJCQkJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTWVhc3VyZW1lbnQsCisJZXZlbnQ3YwkJCQkJCQkJVUUtUG9zaXRpb25pbmctR1BTLU1lYXN1cmVtZW50UmVzdWx0cywKKwlzcGFyZQkJCQkJCQkJTlVMTAkKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRJbnRlcnZhbCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllNSwgZTE1LCBlNjAsIGUzMDAsCisJCQkJCQkJCQkJZTkwMCwgZTE4MDAsIGUzNjAwLCBlNzIwMCB9CisKK1VFLVBvc2l0aW9uaW5nLU1ldGhvZFR5cGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl1ZS1Bc3Npc3RlZCwKKwkJCQkJCQkJCQl1ZS1CYXNlZCwKKwkJCQkJCQkJCQl1ZS1CYXNlZFByZWZlcnJlZCwKKwkJCQkJCQkJCQl1ZS1Bc3Npc3RlZFByZWZlcnJlZCB9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhIDo6PQkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvCQkJVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8JCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mbwkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvLXI0CQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0CQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QtcjQJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBJbiBjYXNlIG9mIFRERCB0aGVzZSBJUERMIHBhcmFtZXRlcnMgc2hhbGwgYmUgdXNlZCBmb3IgdGhlIHJlZmVyZW5jZSBjZWxsIGluc3RlYWQgb2YKKwktLSBJUERMIFBhcmFtZXRlcnMgaW4gSUUgVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8KKwl1ZS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERELXI0LWV4dAkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQJT1BUSU9OQUwsCisJLS0gVGhlc2UgSVBETCBwYXJhbWV0ZXJzIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBuZWlnaGJvdXIgY2VsbHMgaW4gY2FzZSBvZiBUREQgaW5zdGVhZCBvZgorCS0tIElQREwgUGFyYW1ldGVycyBpbiBJRSBVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mb0xpc3QuIFRoZSBjZWxscyBzaGFsbCBiZSAKKwktLSBsaXN0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgaW4gSUUgVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm9MaXN0CisJdWUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERExpc3QtcjQtZXh0CVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1URERMaXN0LXI0LWV4dAkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCIDo6PQkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvLVVFQgkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvLVVFQgkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdC1VRUIJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QtVUVCCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1URERMaXN0LXI0LWV4dCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQKKworVUUtUG9zaXRpb25pbmctT1RET0EtTWVhc3VyZW1lbnQgOjo9CQkJU0VRVUVOQ0UgeworCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VDZWxsSURlbnRpdHkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQl1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUySW5mbwlVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUySW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VDZWxsSWRlbnRpdHkJCQlDZWxsUGFyYW1ldGVyc0lECisJCX0KKwl9LAorCW5laWdoYm91ckxpc3QJCQkJCQlOZWlnaGJvdXJMaXN0CQkJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtTWVhc3VyZW1lbnQtdjM5MGV4dCA6Oj0JCQlTRVFVRU5DRSB7CisJbmVpZ2hib3VyTGlzdC12MzkwZXh0CQkJCQkJTmVpZ2hib3VyTGlzdC12MzkwZXh0Cit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvIDo6PSBTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwlDSE9JQ0UJeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCVNFUVVFTkNFeworCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CisJCX0KKwl9LAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctSVBETC1QYXJlbWV0ZXJzCQkJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJCQkJCU9QVElPTkFMLAorCXNmbi1TRk4tUmVsVGltZURpZmZlcmVuY2UJCQlTRk4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlMSwKKwlzZm4tU0ZOLURyaWZ0CQkJCQkJU0ZOLVNGTi1EcmlmdCAJCQkJCQlPUFRJT05BTCwKKwlzZWFyY2hXaW5kb3dTaXplCQkJCQlPVERPQS1TZWFyY2hXaW5kb3dTaXplLAorCXBvc2l0aW9uaW5nTW9kZSAJQ0hPSUNFeworCQl1ZUJhc2VkCQkJCQkJCQkJU0VRVUVOQ0Uge30sCisJCXVlQXNzaXN0ZWQJCQkJCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mby1yNCA6Oj0gU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JQ0hPSUNFCXsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRXsKKwkJCWNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQorCQl9CisJfSwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUlQREwtUGFyZW1ldGVycwkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLXI0CU9QVElPTkFMLAorCXNmbi1TRk4tUmVsVGltZURpZmZlcmVuY2UJCQlTRk4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlMSwKKwlzZm4tT2Zmc2V0LVZhbGlkaXR5CQkJCQlTRk4tT2Zmc2V0LVZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwlzZm4tU0ZOLURyaWZ0CQkJCQkJU0ZOLVNGTi1EcmlmdAkJCQkJCU9QVElPTkFMLAorCXNlYXJjaFdpbmRvd1NpemUJCQkJCU9URE9BLVNlYXJjaFdpbmRvd1NpemUsCisJcG9zaXRpb25pbmdNb2RlIAlDSE9JQ0UgeworCQl1ZUJhc2VkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcmVsYXRpdmVOb3J0aAkJCQkJCUlOVEVHRVIgKC0yMDAwMC4uMjAwMDApCQkJCU9QVElPTkFMLAorCQkJcmVsYXRpdmVFYXN0CQkJCQkJSU5URUdFUiAoLTIwMDAwLi4yMDAwMCkJCQkJT1BUSU9OQUwsCisJCQlyZWxhdGl2ZUFsdGl0dWRlCQkJCQlJTlRFR0VSICgtNDAwMC4uNDAwMCkJCQkJT1BUSU9OQUwsCisJCQlmaW5lU0ZOLVNGTgkJCQkJCQlGaW5lU0ZOLVNGTgkJCQkJCQlPUFRJT05BTCwKKwkJCS0tIGFjdHVhbCB2YWx1ZSByb3VuZFRyaXBUaW1lID0gKElFIHZhbHVlICogMC4wNjI1KSArIDg3NgorCQkJcm91bmRUcmlwVGltZQkJCQkJCUlOVEVHRVIgKDAuLiAzMjc2NikJCQkJCU9QVElPTkFMCisJCX0sCisJCXVlQXNzaXN0ZWQJCQkJCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mby1VRUIgOjo9IFNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCUNIT0lDRQl7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvCisJCX0sCisJCXRkZAkJCQkJCQkJU0VRVUVOQ0V7CisJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKKwkJfQorCX0sCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1JUERMLVBhcmVtZXRlcnMJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycwkJT1BUSU9OQUwsCisJc2ZuLVNGTi1SZWxUaW1lRGlmZmVyZW5jZQkJCVNGTi1TRk4tUmVsVGltZURpZmZlcmVuY2UxLAorCXNmbi1TRk4tRHJpZnQJCQkJCQlTRk4tU0ZOLURyaWZ0CQkJCQkJT1BUSU9OQUwsCisJc2VhcmNoV2luZG93U2l6ZQkJCQkJT1RET0EtU2VhcmNoV2luZG93U2l6ZSwKKwlyZWxhdGl2ZU5vcnRoCQkJCQkJSU5URUdFUiAoLTIwMDAwLi4yMDAwMCkJCQkJT1BUSU9OQUwsCisJcmVsYXRpdmVFYXN0CQkJCQkJSU5URUdFUiAoLTIwMDAwLi4yMDAwMCkJCQkJT1BUSU9OQUwsCisJcmVsYXRpdmVBbHRpdHVkZQkJCQkJSU5URUdFUiAoLTQwMDAuLjQwMDApCQkJCU9QVElPTkFMLAorCWZpbmVTRk4tU0ZOCQkJCQkJCUZpbmVTRk4tU0ZOLAorCS0tIGFjdHVhbCB2YWx1ZSByb3VuZFRyaXBUaW1lID0gKElFIHZhbHVlICogMC4wNjI1KSArIDg3NgorCXJvdW5kVHJpcFRpbWUJCQkJCQlJTlRFR0VSICgwLi4zMjc2NikJCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mbworCitVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdC1yNCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvLXI0CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0LVVFQiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm8tVUVCCisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLVF1YWxpdHkgOjo9CQkJU0VRVUVOQ0UgeworCXN0ZFJlc29sdXRpb24JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyKSksCisJbnVtYmVyT2ZPVERPQS1NZWFzdXJlbWVudHMJCQlCSVQgU1RSSU5HIChTSVpFICgzKSksCisJc3RkT2ZPVERPQS1NZWFzdXJlbWVudHMJCQkJQklUIFNUUklORyAoU0laRSAoNSkpCit9IAorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkJCQkJCQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvIENIT0lDRSB7CisJCWZkZAkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQkJCVNFUVVFTkNFeworCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CisJCX0KKwl9LAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJcG9zaXRpb25pbmdNb2RlIENIT0lDRSB7CisJCXVlQmFzZWQJCQkJCQkJCQlTRVFVRU5DRSB7fSwKKwkJdWVBc3Npc3RlZAkJCQkJCQkJU0VRVUVOQ0Uge30KKwl9LAorCXVlLXBvc2l0aW9uaW5nLUlQREwtUGFyZW1ldGVycwkJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8tcjQgOjo9CVNFUVVFTkNFIHsKKwlzZm4JCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KQkJCQkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8gQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCQkJU0VRVUVOQ0V7CisJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKKwkJfQorCX0sCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwlwb3NpdGlvbmluZ01vZGUgQ0hPSUNFIHsKKwkJdWVCYXNlZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNlbGxQb3NpdGlvbgkJCQkJCQkJUmVmZXJlbmNlQ2VsbFBvc2l0aW9uCU9QVElPTkFMLAorCQkJLS0gYWN0dWFsIHZhbHVlIHJvdW5kVHJpcFRpbWUgPSAoSUUgdmFsdWUgKiAwLjA2MjUpICsgODc2CisJCQlyb3VuZFRyaXBUaW1lCQkJCQkJSU5URUdFUiAoMC4uMzI3NjYpCQkJCU9QVElPTkFMCisJCX0sCisJCXVlQXNzaXN0ZWQJCQkJCQkJCVNFUVVFTkNFIHt9CisJfSwKKwl1ZS1wb3NpdGlvbmluZy1JUERMLVBhcmVtZXRlcnMJCQkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvLVVFQiA6Oj0JCQlTRVFVRU5DRSB7CisJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8gQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCQkJU0VRVUVOQ0V7CisJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKKwkJfQorCX0sCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsUG9zaXRpb24JCQkJCQlSZWZlcmVuY2VDZWxsUG9zaXRpb24JCQkJT1BUSU9OQUwsCisJLS0gYWN0dWFsIHZhbHVlIHJvdW5kVHJpcFRpbWUgPSAoSUUgdmFsdWUgKiAwLjA2MjUpICsgODc2CisJcm91bmRUcmlwVGltZQkJCQkJCUlOVEVHRVIgKDAuLjMyNzY2KQkJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctSVBETC1QYXJlbWV0ZXJzCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLVBvc2l0aW9uRXN0aW1hdGVJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCXJlZmVyZW5jZVRpbWUJCQkJCUNIT0lDRSB7CisJCXV0cmFuLUdQU1JlZmVyZW5jZVRpbWVSZXN1bHQJCVVUUkFOLUdQU1JlZmVyZW5jZVRpbWVSZXN1bHQsCisJCWdwcy1SZWZlcmVuY2VUaW1lT25seQkJCQlJTlRFR0VSICgwLi42MDQ3OTk5OTkpLAorCQljZWxsLVRpbWluZwkJCQkJCQlTRVFVRU5DRSB7CisJCQlzZm4JCQkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCQkJbW9kZVNwZWNpZmljSW5mbyAJCQkJQ0hPSUNFIHsKKwkJCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQkJCX0sCisJCQkJdGRkCQkJCQkJCQkJU0VRVUVOQ0V7CisJCQkJCWNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQorCQkJCX0KKwkJCX0KKwkJfQorCX0sCisJcG9zaXRpb25Fc3RpbWF0ZQkJCQkJUG9zaXRpb25Fc3RpbWF0ZQorfQorCitVRS1Qb3NpdGlvbmluZy1SZXBvcnRDcml0ZXJpYSA6Oj0JCQkJQ0hPSUNFIHsKKwl1ZS1wb3NpdGlvbmluZy1SZXBvcnRpbmdDcml0ZXJpYQkJCQlVRS1Qb3NpdGlvbmluZy1FdmVudFBhcmFtTGlzdCwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEsCisJbm9SZXBvcnRpbmcJCQkJCQkJTlVMTAorfQorCitVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJbWV0aG9kVHlwZQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1NZXRob2RUeXBlLAorCXBvc2l0aW9uaW5nTWV0aG9kCQkJCQlQb3NpdGlvbmluZ01ldGhvZCwKKwktLSBkdW1teTEgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24gYW5kIGl0IHNob3VsZAorCS0tIGJlIGlnbm9yZWQuCisJZHVtbXkxCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1SZXNwb25zZVRpbWUsCisJaG9yaXpvbnRhbC1BY2N1cmFjeQkJCQkJVUUtUG9zaXRpb25pbmctQWNjdXJhY3kJCQkJT1BUSU9OQUwsCisJZ3BzLVRpbWluZ09mQ2VsbFdhbnRlZAkJCQlCT09MRUFOLAorCS0tIGR1bW15MiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiBhbmQgaXQgc2hvdWxkCisJLS0gYmUgaWdub3JlZC4KKwlkdW1teTIJCQkJCQkJCUJPT0xFQU4sCisJYWRkaXRpb25hbEFzc2lzdGFuY2VEYXRhUmVxdWVzdAkJQk9PTEVBTiwKKwllbnZpcm9ubWVudENoYXJhY3RlcmlzYXRpb24JCQlFbnZpcm9ubWVudENoYXJhY3RlcmlzYXRpb24JCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eS12MzkwZXh0IDo6PQkJU0VRVUVOQ0UgeworCXZlcnRpY2FsLUFjY3VyYWN5CQkJCQkJCVVFLVBvc2l0aW9uaW5nLUFjY3VyYWN5Cit9CisKK1VFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXI0IDo6PQkJCVNFUVVFTkNFIHsKKwltZXRob2RUeXBlCQkJCQkJCVVFLVBvc2l0aW9uaW5nLU1ldGhvZFR5cGUsCisJcG9zaXRpb25pbmdNZXRob2QJCQkJCVBvc2l0aW9uaW5nTWV0aG9kLAorCWhvcml6b250YWxBY2N1cmFjeQkJCQkJVUUtUG9zaXRpb25pbmctQWNjdXJhY3kJCQkJT1BUSU9OQUwsCisJdmVydGljYWxBY2N1cmFjeQkJCQkJVUUtUG9zaXRpb25pbmctQWNjdXJhY3kJCQkJT1BUSU9OQUwsCisJZ3BzLVRpbWluZ09mQ2VsbFdhbnRlZAkJCQlCT09MRUFOLAorCWFkZGl0aW9uYWxBc3Npc3RhbmNlRGF0YVJlcQkJCUJPT0xFQU4sCisJZW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uCQkJRW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktdjd4eWV4dCA6Oj0JU0VRVUVOQ0UgeworCXZlbG9jaXR5UmVxdWVzdGVkCQkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1SZXNwb25zZVRpbWUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMxLCBzMiwgczQsIHM4LCBzMTYsCisJCQkJCQkJCQkJczMyLCBzNjQsIHMxMjggfQorCistLSBTUEFSRTogVVRSQS1DYXJyaWVyUlNTSSwgTWF4ID0gNzYKKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitVVFJBLUNhcnJpZXJSU1NJIDo6PQkJCQlJTlRFR0VSICgwLi4xMjcpCisKK1VUUkFOLUdQUy1EcmlmdFJhdGUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJdXRyYW4tR1BTRHJpZnQwLCB1dHJhbi1HUFNEcmlmdDEsIHV0cmFuLUdQU0RyaWZ0MiwKKwkJCQkJCQkJCXV0cmFuLUdQU0RyaWZ0NSwgdXRyYW4tR1BTRHJpZnQxMCwgdXRyYW4tR1BTRHJpZnQxNSwKKwkJCQkJCQkJCXV0cmFuLUdQU0RyaWZ0MjUsIHV0cmFuLUdQU0RyaWZ0NTAsIHV0cmFuLUdQU0RyaWZ0LTEsCisJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdC0yLCB1dHJhbi1HUFNEcmlmdC01LCB1dHJhbi1HUFNEcmlmdC0xMCwKKwkJCQkJCQkJCXV0cmFuLUdQU0RyaWZ0LTE1LCB1dHJhbi1HUFNEcmlmdC0yNSwgdXRyYW4tR1BTRHJpZnQtNTB9CisKK1VUUkFOLUdQU1JlZmVyZW5jZVRpbWUgOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBGb3IgdXRyYW4tR1BTVGltaW5nT2ZDZWxsIHZhbHVlcyBhYm92ZSAyMzIyNDMxOTk5OTk5IGFyZSBub3QgCisJLS0gdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwktLSBBY3R1YWwgdmFsdWUgdXRyYW4tR1BTVGltaW5nT2ZDZWxsID0gKG1zLXBhcnQgKiA0Mjk0OTY3Mjk2KSArIGxzLXBhcnQKKwl1dHJhbi1HUFNUaW1pbmdPZkNlbGwJCQlTRVFVRU5DRSB7CisJCW1zLXBhcnQgCQkJCQkJSU5URUdFUiAoMC4uMTAyMyksCisJCWxzLXBhcnQJCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkKKwl9LAorCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJlZmVyZW5jZUlkZW50aXR5CQkJCUNlbGxQYXJhbWV0ZXJzSUQKKwkJfQorCX0gCQkJCU9QVElPTkFMLAorCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpCit9CisKK1VUUkFOLUdQU1JlZmVyZW5jZVRpbWVSZXN1bHQgOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBGb3IgdWUtR1BTVGltaW5nT2ZDZWxsIHZhbHVlcyBhYm92ZSAzNzE1ODkxMTk5OTk5OSBhcmUgbm90IAorCS0tIHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJLS0gQWN0dWFsIHZhbHVlIHVlLUdQU1RpbWluZ09mQ2VsbCA9IChtcy1wYXJ0ICogNDI5NDk2NzI5NikgKyBscy1wYXJ0CisJdWUtR1BTVGltaW5nT2ZDZWxsCQkJU0VRVUVOQ0UgeworCQltcy1wYXJ0IAkJCQkJCUlOVEVHRVIgKDAuLiAxNjM4MyksCisJCWxzLXBhcnQJCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkKKwl9LAorCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJlZmVyZW5jZUlkZW50aXR5CQkJCUNlbGxQYXJhbWV0ZXJzSUQKKwkJfQorCX0sCisJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkKK30KKworVmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGx2MCwgcGx2NCwgcGx2OCwgcGx2MTYsIHBsdjMyLCBwbHY2NCwgCisJCQkJCQkJCQkJcGx2MTI4LCBwbHYyNTYsIHBsdjUxMiwgcGx2MTAyNCwgCisJCQkJCQkJCQkJcGx2MmssIHBsdjRrLCBwbHY4aywgcGx2MTZrLCBzcGFyZTIsIHNwYXJlMSB9CisKK1ZlbG9jaXR5RXN0aW1hdGUJOjo9CQkJCUNIT0lDRSB7CisJaG9yaXpvbnRhbFZlbG9jaXR5CQkJCQkJCQlIb3Jpem9udGFsVmVsb2NpdHksCisJaG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5CQkJCQlIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHksCisJaG9yaXpvbnRhbFZlbG9jaXR5V2l0aFVuY2VydGFpbnR5CQkJCUhvcml6b250YWxWZWxvY2l0eVdpdGhVbmNlcnRhaW50eSwKKwlob3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHlBbmRVbmNlcnRhaW50eQlIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHlBbmRVbmNlcnRhaW50eQorfQorCistLSBBY3R1YWwgdmFsdWUgVyA9IElFIHZhbHVlICogMC4xCitXIDo6PQkJCQkJCQkJSU5URUdFUiAoMC4uMjApCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBPVEhFUiBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy44KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitCQ0MgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi43KQorCitCQ0NILU1vZGlmaWNhdGlvbkluZm8gOjo9CQkJU0VRVUVOQ0UgeworCW1pYi1WYWx1ZVRhZwkJCQkJCU1JQi1WYWx1ZVRhZywKKwliY2NoLU1vZGlmaWNhdGlvblRpbWUJCQkJQkNDSC1Nb2RpZmljYXRpb25UaW1lCQkJCU9QVElPTkFMCit9CisKKy0tIEFjdHVhbCB2YWx1ZSBCQ0NILU1vZGlmaWNhdGlvblRpbWUgPSBJRSB2YWx1ZSAqIDgKK0JDQ0gtTW9kaWZpY2F0aW9uVGltZSA6Oj0JCQlJTlRFR0VSICgwLi41MTEpCisKK0JTSUMgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwluY2MJCQkJCQkJCQlOQ0MsCisJYmNjCQkJCQkJCQkJQkNDCit9CisKK0NCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJY3RjaC1BbGxvY2F0aW9uUGVyaW9kCQkJCUlOVEVHRVIgKDEuLjI1NiksCisJY2JzLUZyYW1lT2Zmc2V0CQkJCQkJSU5URUdFUiAoMC4uMjU1KQorfQorCitDQlMtRFJYLUxldmVsMUluZm9ybWF0aW9uLWV4dGVuc2lvbi1yNiA6Oj0JRU5VTUVSQVRFRCB7cDgsIHAxNiwgcDMyLCBwNjQsIHAxMjgsIHAyNTZ9CisKK0NETUEyMDAwLU1lc3NhZ2UgOjo9CQkJCVNFUVVFTkNFIHsKKwltc2ctVHlwZQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJcGF5bG9hZAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMS4uNTEyKSkKK30KKworQ0RNQTIwMDAtTWVzc2FnZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhJbnRlclN5c01lc3NhZ2VzKSkgT0YKKwkJCQkJCQkJCQkJQ0RNQTIwMDAtTWVzc2FnZQorCitDRE1BMjAwMC1VTVRTLUZyZXF1ZW5jeS1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE51bUNETUEyMDAwRnJlcXMpKSBPRgorCQkJCQkJCQkJCQlGcmVxdWVuY3lJbmZvQ0RNQTIwMDAKKworQ2VsbFZhbHVlVGFnIDo6PQkJCQkJCUlOVEVHRVIgKDEuLjQpCisKKy0tQWN0dWFsIHZhbHVlID0gMl4oSUUgdmFsdWUpIAorRXhwaXJhdGlvblRpbWVGYWN0b3IgOjo9CQkJCUlOVEVHRVIgKDEuLjgpCisKK0ZERC1VTVRTLUZyZXF1ZW5jeS1MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnVtRkRERnJlcXMpKSBPRgorCQkJCQkJCQkJCQlGcmVxdWVuY3lJbmZvRkRECisKK0ZyZXF1ZW5jeUluZm9DRE1BMjAwMCA6Oj0JCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQliYW5kLUNsYXNzCQlCSVQgU1RSSU5HIChTSVpFICg1KSksCisJCQkJCQkJCQkJCWNkbWEtRnJlcQkJQklUIFNUUklORyAoU0laRSgxMSkpCit9CisKK0dFUkFOLVN5c3RlbUluZm9CbG9jayA6Oj0JCQkJT0NURVQgU1RSSU5HIChTSVpFICgxLi4yMykpCisKK0dFUkFOLVN5c3RlbUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4R0VSQU4tU0kpKSBPRiBHRVJBTi1TeXN0ZW1JbmZvQmxvY2sKKworR1NNLUJBLVJhbmdlIDo6PSAJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJCWdzbUxvd1JhbmdlVUFSRkNOCQlVQVJGQ04sCisJCQkJCQkJCQkJCWdzbVVwUmFuZ2VVQVJGQ04JCVVBUkZDTgorfQorCitHU00tQkEtUmFuZ2UtTGlzdCA6Oj0gCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnVtR1NNRnJlcVJhbmdlcykpIE9GCisJCQkJCQkJCQkJCUdTTS1CQS1SYW5nZQorCisKKy0tIFRoaXMgSUUgaXMgZm9ybWF0dGVkIGFzICdUTFYnIGFuZCBpcyBjb2RlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIE1vYmlsZSBTdGF0aW9uIENsYXNzbWFyayAyIAorLS0gaW5mb3JtYXRpb24gZWxlbWVudCBpbiBbNV0uIFRoZSBmaXJzdCBvY3RldCBpcyB0aGUgTW9iaWxlIHN0YXRpb24gY2xhc3NtYXJrIDIgSUVJIGFuZCBpdHMgdmFsdWUKKy0tIHNoYWxsIGJlIHNldCB0byAzM0guIFRoZSBzZWNvbmQgb2N0ZXQgaXMgdGhlIExlbmd0aCBvZiBtb2JpbGUgc3RhdGlvbiBjbGFzc21hcmsgMiBhbmQgaXRzIHZhbHVlIAorLS0gc2hhbGwgYmUgc2V0IHRvIDMuIFRoZSBvY3RldCAzIGNvbnRhaW5zIHRoZSBmaXJzdCBvY3RldCBvZiB0aGUgdmFsdWUgcGFydCBvZiB0aGUgTW9iaWxlIFN0YXRpb24gCistLSBDbGFzc21hcmsgMiBpbmZvcm1hdGlvbiBlbGVtZW50LCB0aGUgb2N0ZXQgNCBjb250YWlucyB0aGUgc2Vjb25kIG9jdGV0IG9mIHRoZSB2YWx1ZSBwYXJ0IG9mIHRoZSAKKy0tIE1vYmlsZSBTdGF0aW9uIENsYXNzbWFyayAyIGluZm9ybWF0aW9uIGVsZW1lbnQgYW5kIHNvIG9uLiBGb3IgZWFjaCBvZiB0aGVzZSBvY3RldHMsIHRoZSBmaXJzdC8KKy0tIGxlZnRtb3N0LyBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiB0aGUgb2N0ZXQgY29udGFpbnMgYjggb2YgdGhlIGNvcnJlc3BvbmRpbmcgb2N0ZXQgb2YgdGhlIE1vYmlsZQorLS0gU3RhdGlvbiBDbGFzc21hcmsgMi4KK0dTTS1DbGFzc21hcmsyIDo6PQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICg1KSkKKworLS0gVGhpcyBJRSBpcyBmb3JtYXR0ZWQgYXMgJ1YnIGFuZCBpcyBjb2RlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIHZhbHVlIHBhcnQgaW4gdGhlIE1vYmlsZSBzdGF0aW9uCistLSBjbGFzc21hcmsgMyBpbmZvcm1hdGlvbiBlbGVtZW50IGluIFs1XQorLS0gVGhlIHZhbHVlIHBhcnQgaXMgc3BlY2lmaWVkIGJ5IG1lYW5zIG9mIENTTi4xLCB3aGljaCBlbmNvZGluZyByZXN1bHRzIGluIGEgYml0IHN0cmluZywgdG8gd2hpY2gKKy0tIGZpbmFsIHBhZGRpbmcgbWF5IGJlIGFwcGVuZGVkIHVwdG8gdGhlIG5leHQgb2N0ZXQgYm91bmRhcnkgWzVdLiBUaGUgZmlyc3QvIGxlZnRtb3N0IGJpdCBvZiB0aGUKKy0tIENTTi4xIGJpdCBzdHJpbmcgaXMgcGxhY2VkIGluIHRoZSBmaXJzdC8gbGVmdG1vc3QvIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBmaXJzdAorLS0gb2N0ZXQuIFRoaXMgY29udGludWVzIHVudGlsIHRoZSBsYXN0IGJpdCBvZiB0aGUgQ1NOLjEgYml0IHN0cmluZywgd2hpY2ggaXMgcGxhY2VkIGluIHRoZSBsYXN0LworLS0gcmlnaHRtb3N0LyBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGxhc3Qgb2N0ZXQuCitHU00tQ2xhc3NtYXJrMyA6Oj0JCQkJCU9DVEVUIFNUUklORyAoU0laRSAoMS4uMzIpKQorCitHU00tTWVzc2FnZUxpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCisJCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMS4uNTEyKSkKKworR1NNLU1TLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSA6Oj0JT0NURVQgU1RSSU5HIChTSVpFICgxLi42NCkpCisKK0dzbVNlY3VyaXR5Q2FwYWJpbGl0eSA6Oj0JCQlCSVQgU1RSSU5HIHsKKwkJCQkJCQkJCQktLSBGb3IgZWFjaCBiaXQgdmFsdWUg0jDTIG1lYW5zIGZhbHNlLyBub3Qgc3VwcG9ydGVkCisJCQkJCQkJCQkJYTUtNygwKSwKKwkJCQkJCQkJCQlhNS02KDEpLAorCQkJCQkJCQkJIAlhNS01KDIpLAorCQkJCQkJCQkJIAlhNS00KDMpLAorCQkJCQkJCQkJIAlhNS0zKDQpLAorCQkJCQkJCQkJIAlhNS0yKDUpLAorCQkJCQkJCQkJIAlhNS0xKDYpCisJCQkJCQkJCQkJfQkoU0laRSAoNykpCisKK0dTTS1UYXJnZXRDZWxsSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4R1NNVGFyZ2V0Q2VsbHMpKSBPRgorCQkJCQkJCQkJCQlHU00tVGFyZ2V0Q2VsbEluZm8KKworCitHU00tVGFyZ2V0Q2VsbEluZm8gOjo9IAkJCQlTRVFVRU5DRSB7CisJYmNjaC1BUkZDTgkJCQkJCQlCQ0NILUFSRkNOLAorCWZyZXF1ZW5jeS1iYW5kCQkJCQkJRnJlcXVlbmN5LUJhbmQsCisJYnNpYwkJCQkJCQkJQlNJQwkJCU9QVElPTkFMCit9CisKK0lkZW50aWZpY2F0aW9uT2ZSZWNlaXZlZE1lc3NhZ2UgOjo9CVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJcmVjZWl2ZWRNZXNzYWdlVHlwZQkJCQlSZWNlaXZlZE1lc3NhZ2VUeXBlCit9CisKK0ludGVyUkFULUNoYW5nZUZhaWx1cmVDYXVzZSA6Oj0JCUNIT0lDRSB7CisJY29uZmlndXJhdGlvblVuYWNjZXB0YWJsZQkJCU5VTEwsCisJcGh5c2ljYWxDaGFubmVsRmFpbHVyZQkJCQlOVUxMLAorCXByb3RvY29sRXJyb3IJCQkJCQlQcm90b2NvbEVycm9ySW5mb3JtYXRpb24sCisJdW5zcGVjaWZpZWQJCQkJCQkJTlVMTCwKKwlzcGFyZTQJCQkJCQkJCU5VTEwsCisJc3BhcmUzCQkJCQkJCQlOVUxMLAorCXNwYXJlMgkJCQkJCQkJTlVMTCwKKwlzcGFyZTEJCQkJCQkJCU5VTEwKK30JCQkJCQkJCisKK0dFUkFOSXUtTWVzc2FnZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhJbnRlclN5c01lc3NhZ2VzKSkgT0YKKwkJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxLi4zMjc2OCkpCisKK0dFUkFOSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IDo6PQlCSVQgU1RSSU5HIChTSVpFICgxLi4xNzApKQorCitJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkgOjo9IENIT0lDRSB7CisJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlnc20tQ2xhc3NtYXJrMgkJCQkJCUdTTS1DbGFzc21hcmsyLAorCQlnc20tQ2xhc3NtYXJrMwkJCQkJCUdTTS1DbGFzc21hcmszCisJfSwKKwljZG1hMjAwMAkJCQkJCQlTRVFVRU5DRSB7CisJCWNkbWEyMDAwLU1lc3NhZ2VMaXN0CQkJCUNETUEyMDAwLU1lc3NhZ2VMaXN0CisJfQorfQorCitJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCisJCQkJCQkJCQkJCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQorCitJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCWdlcmFuSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlHRVJBTkl1LVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQorfQorCitJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCXN1cHBvcnRPZkludGVyLVJBVC1QUy1IYW5kb3ZlcgkJRU5VTUVSQVRFRCB7IGRvZXNTdXBwb3JJbnRlci1SQVQtUFMtSGFuZG92ZXIgfQlPUFRJT05BTCwKKwlnc20tTVMtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlHU00tTVMtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Cit9CisKK0ludGVyUkFULVVFLVNlY3VyaXR5Q2FwYWJpbGl0eSA6Oj0gQ0hPSUNFIHsKKwlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CisJCWdzbVNlY3VyaXR5Q2FwYWJpbGl0eQkJCUdzbVNlY3VyaXR5Q2FwYWJpbGl0eQorCX0KK30KKworSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBMaXN0IDo6PSAJU0VRVUVOQ0UgKFNJWkUoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCisJCQkJCQkJCQkJSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBhYmlsaXR5CisKK0ludGVyUkFULUhPLUZhaWx1cmVDYXVzZSA6Oj0JCUNIT0lDRSB7CisJY29uZmlndXJhdGlvblVuYWNjZXB0YWJsZQkJCU5VTEwsCisJcGh5c2ljYWxDaGFubmVsRmFpbHVyZQkJCQlOVUxMLAorCXByb3RvY29sRXJyb3IJCQkJCQlQcm90b2NvbEVycm9ySW5mb3JtYXRpb24sCisJaW50ZXJSQVQtUHJvdG9jb2xFcnJvcgkJCQlOVUxMLAorCXVuc3BlY2lmaWVkCQkJCQkJCU5VTEwsCisJc3BhcmUxMQkJCQkJCQkJTlVMTCwKKwlzcGFyZTEwCQkJCQkJCQlOVUxMLAorCXNwYXJlOQkJCQkJCQkJTlVMTCwKKwlzcGFyZTgJCQkJCQkJCU5VTEwsCisJc3BhcmU3CQkJCQkJCQlOVUxMLAorCXNwYXJlNgkJCQkJCQkJTlVMTCwKKwlzcGFyZTUJCQkJCQkJCU5VTEwsCisJc3BhcmU0CQkJCQkJCQlOVUxMLAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CQkJCQkJCQorCitNYXN0ZXJJbmZvcm1hdGlvbkJsb2NrIDo6PQkJCVNFUVVFTkNFIHsKKwkJbWliLVZhbHVlVGFnCQkJCQlNSUItVmFsdWVUYWcsCisJCS0tIFRBQlVMQVI6IFRoZSBQTE1OIGlkZW50aXR5IGFuZCBBTlNJLTQxIGNvcmUgbmV0d29yayBpbmZvcm1hdGlvbgorCQktLSBhcmUgaW5jbHVkZWQgaW4gUExNTi1UeXBlLgorCQlwbG1uLVR5cGUJCQkJCQlQTE1OLVR5cGUsCisJCXNpYlNiLVJlZmVyZW5jZUxpc3QJCQkJU0lCU2ItUmVmZXJlbmNlTGlzdCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJbWFzdGVySW5mb3JtYXRpb25CbG9jay12NjkwZXh0CQlNYXN0ZXJJbmZvcm1hdGlvbkJsb2NrLXY2OTBleHQsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitNYXN0ZXJJbmZvcm1hdGlvbkJsb2NrLXY2OTBleHQgOjo9CVNFUVVFTkNFIHsKKwltdWx0aXBsZVBMTU4tTGlzdAkJCQkJTXVsdGlwbGVQTE1OLUxpc3QtcjYJCQlPUFRJT05BTAorfQorCitNSUItVmFsdWVUYWcgOjo9CQkJCQlJTlRFR0VSICgxLi44KQorCitOQ0MgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi43KQorCitQTE1OLVZhbHVlVGFnIDo6PQkJCQkJSU5URUdFUiAoMS4uMjU2KQorCisKK1ByZWRlZmluZWRDb25maWdJZGVudGl0eUFuZFZhbHVlVGFnIDo6PQlTRVFVRU5DRSB7CisJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwlwcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWcJCQkJUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnCit9CisKK1Byb3RvY29sRXJyb3JJbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwlkaWFnbm9zdGljc1R5cGUJCQkJCQlDSE9JQ0UgeworCQl0eXBlMQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJvdG9jb2xFcnJvckNhdXNlCQkJCQlQcm90b2NvbEVycm9yQ2F1c2UKKwkJfSwKKwkJc3BhcmUJCQkJCQkJCU5VTEwKKwl9Cit9CisKK1JlY2VpdmVkTWVzc2FnZVR5cGUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWFjdGl2ZVNldFVwZGF0ZSwKKwkJCQkJCQkJCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4sCisJCQkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0sCisJCQkJCQkJCQkJY291bnRlckNoZWNrLAorCQkJCQkJCQkJCWRvd25saW5rRGlyZWN0VHJhbnNmZXIsCisJCQkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckNvbW1hbmQsCisJCQkJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLAorCQkJCQkJCQkJCXBhZ2luZ1R5cGUyLAorCQkJCQkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiwKKwkJCQkJCQkJCQlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLAorCQkJCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLAorCQkJCQkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZSwKKwkJCQkJCQkJCQlyYWRpb0JlYXJlclNldHVwLAorCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLAorCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25SZWplY3QsCisJCQkJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLAorCQkJCQkJCQkJCXNlY3VyaXR5TW9kZUNvbW1hbmQsCisJCQkJCQkJCQkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLAorCQkJCQkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCisJCQkJCQkJCQkJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sLAorCQkJCQkJCQkJCXVlQ2FwYWJpbGl0eUVucXVpcnksCisJCQkJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLAorCQkJCQkJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wsCisJCQkJCQkJCQkJdXJhVXBkYXRlQ29uZmlybSwKKwkJCQkJCQkJCQl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb24sCisJCQkJCQkJCQkJYXNzaXN0YW5jZURhdGFEZWxpdmVyeSwKKwkJCQkJCQkJCQlzcGFyZTYsIHNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsIHNwYXJlMiwKKwkJCQkJCQkJCQlzcGFyZTEKK30KKworUnBsbW4tSW5mb3JtYXRpb24gOjo9CQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJCWdzbS1CQS1SYW5nZS1MaXN0CQlHU00tQkEtUmFuZ2UtTGlzdAlPUFRJT05BTCwKKwkJCQkJCQkJCQkJZmRkLVVNVFMtRnJlcXVlbmN5LUxpc3QJRkRELVVNVFMtRnJlcXVlbmN5LUxpc3QJT1BUSU9OQUwsCisJCQkJCQkJCQkJCXRkZC1VTVRTLUZyZXF1ZW5jeS1MaXN0CVRERC1VTVRTLUZyZXF1ZW5jeS1MaXN0CU9QVElPTkFMLAorCQkJCQkJCQkJCQljZG1hMjAwMC1VTVRTLUZyZXF1ZW5jeS1MaXN0CUNETUEyMDAwLVVNVFMtRnJlcXVlbmN5LUxpc3QJT1BUSU9OQUwKK30KKworUnBsbW4tSW5mb3JtYXRpb24tcjQgOjo9CQlTRVFVRU5DRSB7CisJZ3NtLUJBLVJhbmdlLUxpc3QJCQkJR1NNLUJBLVJhbmdlLUxpc3QJCQkJCQlPUFRJT05BTCwKKwlmZGQtVU1UUy1GcmVxdWVuY3ktTGlzdAkJCUZERC1VTVRTLUZyZXF1ZW5jeS1MaXN0CQkJCQlPUFRJT05BTCwKKwktLSB0aGUgb3B0aW9uIGlzIHRoZSBzYW1lIGZvciA3LjY4IE1jcHMgVEREIGFzIGZvciAzLjg0IE1jcHMgVERECisJLS0gaS5lLiBUREQtVU1UUy1GcmVxdWVuY3ktTGlzdCBhcHBsaWVzCisJdGRkMzg0LVVNVFMtRnJlcXVlbmN5LUxpc3QJCVRERC1VTVRTLUZyZXF1ZW5jeS1MaXN0CQkJCQlPUFRJT05BTCwKKwl0ZGQxMjgtVU1UUy1GcmVxdWVuY3ktTGlzdAkJVERELVVNVFMtRnJlcXVlbmN5LUxpc3QJCQkJCU9QVElPTkFMLAorCWNkbWEyMDAwLVVNVFMtRnJlcXVlbmN5LUxpc3QJQ0RNQTIwMDAtVU1UUy1GcmVxdWVuY3ktTGlzdAkJCU9QVElPTkFMCit9CisKK1NjaGVkdWxpbmdJbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJc2NoZWR1bGluZwkJCQkJCQlTRVFVRU5DRSB7CisJCXNlZ0NvdW50CQkJCQkJCVNlZ0NvdW50CQkJCSAJCSBERUZBVUxUIDEsCisJCXNpYi1Qb3MJCQkJCQkJCUNIT0lDRSB7CisJCQktLSBUaGUgZWxlbWVudCBuYW1lIGluZGljYXRlcyB0aGUgcmVwZXRpdGlvbiBwZXJpb2QgYW5kIHRoZSB2YWx1ZQorCQkJLS0gKG11bHRpcGxpZWQgYnkgdHdvKSBpbmRpY2F0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBzZWdtZW50LgorCQkJcmVwNAkJCQkJCQkJSU5URUdFUiAoMC4uMSksCisJCQlyZXA4CQkJCQkJCQlJTlRFR0VSICgwLi4zKSwKKwkJCXJlcDE2CQkJCQkJCQlJTlRFR0VSICgwLi43KSwKKwkJCXJlcDMyCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJCQlyZXA2NAkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCQkJcmVwMTI4CQkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJCQlyZXAyNTYJCQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCisJCQlyZXA1MTIJCQkJCQkJCUlOVEVHRVIgKDAuLjI1NSksCisJCQlyZXAxMDI0CQkJCQkJCQlJTlRFR0VSICgwLi41MTEpLAorCQkJcmVwMjA0OAkJCQkJCQkJSU5URUdFUiAoMC4uMTAyMyksCisJCQlyZXA0MDk2CQkJCQkJCQlJTlRFR0VSICgwLi4yMDQ3KQorCQl9LAorCQlzaWItUG9zT2Zmc2V0SW5mbwkJCQkJU2liT0ZGLUxpc3QJCQkJCQlPUFRJT05BTAorCX0KK30KKworU2NoZWR1bGluZ0luZm9ybWF0aW9uU0lCIDo6PQkJCVNFUVVFTkNFIHsKKwlzaWItVHlwZQkJCQkJCQlTSUItVHlwZUFuZFRhZywKKwlzY2hlZHVsaW5nCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvbgorfQorCitTY2hlZHVsaW5nSW5mb3JtYXRpb25TSUJTYiA6Oj0JCQlTRVFVRU5DRSB7CisJc2liU2ItVHlwZQkJCQkJCQlTSUJTYi1UeXBlQW5kVGFnLAorCXNjaGVkdWxpbmcJCQkJCQkJU2NoZWR1bGluZ0luZm9ybWF0aW9uCit9CisKK1NlZ0NvdW50IDo6PQkJCQkJCUlOVEVHRVIgKDEuLjE2KQorCitTZWdtZW50SW5kZXggOjo9CQkJCQlJTlRFR0VSICgxLi4xNSkKKworLS0gQWN0dWFsIHZhbHVlIFNGTi1QcmltZSA9IDIgKiBJRSB2YWx1ZQorU0ZOLVByaW1lIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpCisKKworU0lCLURhdGEtZml4ZWQgOjo9CQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMjIpKQorCisKK1NJQi1EYXRhLXZhcmlhYmxlIDo6PQkJCQlCSVQgU1RSSU5HIChTSVpFICgxLi4yMTQpKQorCitTSUJPY2N1cklkZW50aXR5IDo6PQkJCUlOVEVHRVIgKDAuLjE1KQorCitTSUJPY2N1cnJlbmNlSWRlbnRpdHlBbmRWYWx1ZVRhZyA6Oj0JU0VRVUVOQ0UgeworCXNpYk9jY3VySWRlbnRpdHkJCQkJU0lCT2NjdXJJZGVudGl0eSwKKwlzaWJPY2N1clZhbHVlVGFnCQkJCVNJQk9jY3VyVmFsdWVUYWcKK30KKworU0lCT2NjdXJWYWx1ZVRhZyA6Oj0JCQlJTlRFR0VSICgwLi4xNSkKKworU0lCLVJlZmVyZW5jZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTSUIpKSBPRgorCQkJCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvblNJQgorCitTSUJTYi1SZWZlcmVuY2VMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0lCKSkgT0YKKwkJCQkJCQkJCQlTY2hlZHVsaW5nSW5mb3JtYXRpb25TSUJTYgorCitTSUItUmVmZXJlbmNlTGlzdEZBQ0ggOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNJQi1GQUNIKSkgT0YgCisJCQkJCQkJCQkJU2NoZWR1bGluZ0luZm9ybWF0aW9uU0lCCisKK1NJQi1UeXBlIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1hc3RlckluZm9ybWF0aW9uQmxvY2ssCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMiwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTMsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGU0LAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNSwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTYsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGU3LAorCQktLSBkdW1teSwgZHVtbXkyIGFuZCBkdW1teTMgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQuIElmIHRoZXkgYXJlIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwkJCQkJCQkJCQlkdW1teSwKKwkJCQkJCQkJCQlkdW1teTIsCisJCQkJCQkJCQkJZHVtbXkzLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTEsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxMiwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTMtMSwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTIsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxMy0zLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTMtNCwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE0LAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNS0xLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUtMiwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE1LTMsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNiwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE3LAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUtNCwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE4LAorCQkJCQkJCQkJCXNjaGVkdWxpbmdCbG9jazEsCisJCQkJCQkJCQkJc2NoZWR1bGluZ0Jsb2NrMiwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE1LTUsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGU1YmlzLCAKKwkJCQkJCQkJCQlzcGFyZTEgfQorCitTSUItVHlwZUFuZFRhZyA6Oj0JCQkJCUNIT0lDRSB7CisJc3lzSW5mb1R5cGUxCQkJCQkJUExNTi1WYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTIJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUzCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlNAkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTUJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU2CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlNwkJCQkJCU5VTEwsCisJLS0gZHVtbXksIGR1bW15MiBhbmQgZHVtbXkzIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQuIElmIHRoZXkgYXJlIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teQkJCQkJCQkJQ2VsbFZhbHVlVGFnLAorCWR1bW15MgkJCQkJCQkJTlVMTCwKKwlkdW1teTMJCQkJCQkJCU5VTEwsCisJc3lzSW5mb1R5cGUxMQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEyIAkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEzCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTMtMQkJCQkJCUNlbGxWYWx1ZVRhZywgCisJc3lzSW5mb1R5cGUxMy0yCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTMtMwkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEzLTQJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNAkJCQkJCU5VTEwsCisJc3lzSW5mb1R5cGUxNQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE2CQkJCQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5QW5kVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNwkJCQkJCU5VTEwsCisJc3lzSW5mb1R5cGUxNS0xCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTUtMgkJCQkJCVNJQk9jY3VycmVuY2VJZGVudGl0eUFuZFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTUtMwkJCQkJCVNJQk9jY3VycmVuY2VJZGVudGl0eUFuZFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTUtNAkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE4CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTUtNQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTViaXMJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3BhcmU0CQkJCQkJCQlOVUxMLAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKK1NJQlNiLVR5cGVBbmRUYWcgOjo9CQkJCQlDSE9JQ0UgeworCXN5c0luZm9UeXBlMQkJCQkJCVBMTU4tVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUyCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMwkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTQJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU1CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlNgkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTcJCQkJCQlOVUxMLAorCS0tIGR1bW15LCBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50LiBJZiB0aGV5IGFyZSByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCisJZHVtbXkJCQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlkdW1teTIJCQkJCQkJCU5VTEwsCisJZHVtbXkzCQkJCQkJCQlOVUxMLAorCXN5c0luZm9UeXBlMTEJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMiAJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMwkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEzLTEJCQkJCQlDZWxsVmFsdWVUYWcsIAorCXN5c0luZm9UeXBlMTMtMgkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEzLTMJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMy00CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTQJCQkJCQlOVUxMLAorCXN5c0luZm9UeXBlMTUJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNgkJCQkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eUFuZFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTcJCQkJCQlOVUxMLAorCXN5c0luZm9UeXBlU0IxCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlU0IyCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTUtMQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTIJCQkJCQlTSUJPY2N1cnJlbmNlSWRlbnRpdHlBbmRWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTMJCQkJCQlTSUJPY2N1cnJlbmNlSWRlbnRpdHlBbmRWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTQJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxOAkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTUJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU1YmlzCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXNwYXJlMgkJCQkJCQkJTlVMTCwKKwlzcGFyZTEJCQkJCQkJCU5VTEwKK30KKworU2liT0ZGIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzbzIsIHNvNCwgc282LCBzbzgsIHNvMTAsCisJCQkJCQkJCQkJc28xMiwgc28xNCwgc28xNiwgc28xOCwKKwkJCQkJCQkJCQlzbzIwLCBzbzIyLCBzbzI0LCBzbzI2LAorCQkJCQkJCQkJCXNvMjgsIHNvMzAsIHNvMzIgfQorCitTaWJPRkYtTGlzdCA6Oj0JCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uMTUpKSBPRgorCQkJCQkJCQkJCVNpYk9GRgorCitTeXNJbmZvVHlwZTEgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Db21tb25HU00tTUFQLU5BUy1TeXNJbmZvCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAsCQorCQljbi1Eb21haW5TeXNJbmZvTGlzdAkJCUNOLURvbWFpblN5c0luZm9MaXN0LAorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1Db25uVGltZXJzQW5kQ29uc3RhbnRzCQlVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzCQkJT1BUSU9OQUwsCisJCXVlLUlkbGVUaW1lcnNBbmRDb25zdGFudHMJCVVFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMJCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTEtdjNhMGV4dAkJU3lzSW5mb1R5cGUxLXYzYTBleHQtSUVzLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCQl9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMS12M2EwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCXVlLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAkJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0LAorCXVlLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAkJVUUtSWRsZVRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0Cit9CisKK1N5c0luZm9UeXBlMiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5TGlzdAkJCQlVUkEtSWRlbnRpdHlMaXN0LAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwkJc2liNGluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJY2VsbElkZW50aXR5CQkJCQlDZWxsSWRlbnRpdHksCisJCWNlbGxTZWxlY3RSZXNlbGVjdEluZm8JCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTMtNCwKKwkJY2VsbEFjY2Vzc1Jlc3RyaWN0aW9uCQkJQ2VsbEFjY2Vzc1Jlc3RyaWN0aW9uLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCisJCQlzeXNJbmZvVHlwZTMtdjRiMGV4dAkJCVN5c0luZm9UeXBlMy12NGIwZXh0LUlFcywKKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbgkJU0VRVUVOQ0UgeworCQkJCXN5c0luZm9UeXBlMy12NTkwZXh0CQkJU3lzSW5mb1R5cGUzLXY1OTBleHQsCisJCQkJdjVjME5vbmNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CisJCQkJCXN5c0luZm9UeXBlMy12NWMwZXh0CQkJU3lzSW5mb1R5cGUzLXY1YzBleHQtSUVzLAorCQkJCQl2NjcwTm9uQ3JpdGljYWxFeHRlbnNpb24JCQlTRVFVRU5DRSB7CisJCQkJCQlzeXNJbmZvVHlwZTMtdjY3MGV4dAkJCQlTeXNJbmZvVHlwZTMtdjY3MGV4dCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKKwkJCQkJfQkJCQkJCQlPUFRJT05BTAorCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCX0gCQkJCQkJCU9QVElPTkFMCisJCX0JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUzLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJbWFwcGluZy1MQ1IJCQkJCQlNYXBwaW5nLUxDUi1yNAkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTMtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCWNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0IAkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUzLXY1YzBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJY2VsbFNlbGVjdFJlc2VsZWN0SW5mb1RyZXNlbGVjdGlvblNjYWxpbmctdjVjMGV4dAorCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUzLXY2NzBleHQgOjo9IFNFUVVFTkNFIHsKKwkgCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbWV0ZXJzRm9yUExNTk9mTUlCCisJCQkJCQkJCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW0tdjY3MGV4dAlPUFRJT05BTCwKKwkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0aWN0aW9uRm9yU2hhcmVkTmV0d29yaworCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbkZvclNoYXJlZE5ldHdvcmstdjY3MGV4dAlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTQgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCWNlbGxJZGVudGl0eQkJCQkJQ2VsbElkZW50aXR5LAorCQljZWxsU2VsZWN0UmVzZWxlY3RJbmZvCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0zLTQsCisJCWNlbGxBY2Nlc3NSZXN0cmljdGlvbgkJCUNlbGxBY2Nlc3NSZXN0cmljdGlvbiwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJc3lzSW5mb1R5cGU0LXY0YjBleHQJCQlTeXNJbmZvVHlwZTQtdjRiMGV4dC1JRXMsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb24JCVNFUVVFTkNFIHsKKwkJCQlzeXNJbmZvVHlwZTQtdjU5MGV4dAkJCVN5c0luZm9UeXBlNC12NTkwZXh0LAorCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbgkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTQtdjViMGV4dAkJCVN5c0luZm9UeXBlNC12NWIwZXh0LUlFcywKKwkJCQkJdjVjME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQkJU0VRVUVOQ0UgeworCQkJCQkJc3lzSW5mb1R5cGU0LXY1YzBleHQJCQkJU3lzSW5mb1R5cGU0LXY1YzBleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNC12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCW1hcHBpbmctTENSCQkJCQkJTWFwcGluZy1MQ1ItcjQJCQkJCQkJT1BUSU9OQUwKK30KKworCitTeXNJbmZvVHlwZTQtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCWNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0IAkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU0LXY1YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJY2VsbFNlbGVjdFJlc2VsZWN0SW5mb1BDSEZBQ0gtdjViMGV4dAlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvUENIRkFDSC12NWIwZXh0IAkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU0LXY1YzBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJY2VsbFNlbGVjdFJlc2VsZWN0SW5mb1RyZXNlbGVjdGlvblNjYWxpbmctdjVjMGV4dAorCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU1IDo6PQkJCQkJU0VRVUVOQ0UgeworCQlzaWI2aW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCXBpY2gtUG93ZXJPZmZzZXQJCQkJUElDSC1Qb3dlck9mZnNldCwKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJYWljaC1Qb3dlck9mZnNldAkJCQlBSUNILVBvd2VyT2Zmc2V0CisJCQl9LAorCQkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMS4yOE1jcHMgVERELCB0aGUgZm9sbG93aW5nIElFcyBzaG91bGQgYmUgYWJzZW50CisJLS0gICBhbmQgdGhlIGluZm8gaW5jbHVkZWQgaW4gdGhlIHRkZDEyOFNwZWNpZmljSW5mbyBpbnN0ZWFkLgorCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDMuODRNY3BzIFRERCBpbiBSNSwgSENSLXI1LVNwZWNpZmljSW5mbyBzaG91bGQgYWxzbyBiZSAKKwktLSBpbmNsdWRlZC4gCisJCQkJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOCQlPUFRJT05BTCwKKwkJCQlwZHNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQRFNDSC1TeXNJbmZvTGlzdC1TRk4JCU9QVElPTkFMLAorCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLVRERAkJT3Blbkxvb3BQb3dlckNvbnRyb2wtVERECisJCQl9CisJCX0sCisJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCVByaW1hcnlDQ1BDSC1JbmZvCQkJCQlPUFRJT05BTCwKKwkJcHJhY2gtU3lzdGVtSW5mb3JtYXRpb25MaXN0CQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QsCisJCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdCwKKwkJLS0gY2JzLURSWC1MZXZlbDFJbmZvcm1hdGlvbiBpcyBjb25kaXRpb25hbCBvbiBhbnkgb2YgdGhlIENUQ0ggaW5kaWNhdG9yIElFcyBpbgorCQktLSBzQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0CisJCWNicy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24JCUNCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24JCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTUtdjRiMGV4dAkJCVN5c0luZm9UeXBlNS12NGIwZXh0LUlFcwkJT1BUSU9OQUwsCisJCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsLTQgaW5mb3JtYXRpb24KKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlzeXNJbmZvVHlwZTUtdjU5MGV4dAkJCVN5c0luZm9UeXBlNS12NTkwZXh0LUlFcwkJT1BUSU9OQUwsCisJCQkJdjY1ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTUtdjY1MGV4dAkJCVN5c0luZm9UeXBlNS12NjUwZXh0LUlFcwkJT1BUSU9OQUwsCisJCQkJCXY2ODBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXN5c0luZm9UeXBlNS12NjgwZXh0CQkJU3lzSW5mb1R5cGU1LXY2ODBleHQtSUVzCQlPUFRJT05BTCwKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlzeXNJbmZvVHlwZTUtdjY5MGV4dAkJCVN5c0luZm9UeXBlNS12NjkwZXh0LUlFcywKKwkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCXN5c0luZm9UeXBlNS12N3h5ZXh0CQkJU3lzSW5mb1R5cGU1LXY3eHlleHQtSUVzLAorCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAorCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTUtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLVRoZSBmb2xsb3dpbmcgSUUgUE5CU0NILUFsbG9jYXRpb24tcjQgc2hhbGwgYmUgdXNlZCBmb3IgMy44NE1jcHMgVEREIG9ubHkuCisJcE5CU0NILUFsbG9jYXRpb24tcjQgCQkJUE5CU0NILUFsbG9jYXRpb24tcjQJCQlPUFRJT05BTCwKKwktLSBJbiBjYXNlIG9mIFRERCwgdGhlIGZvbGxvd2luZyBJRSBpcyBpbmNsdWRlZCBpbnN0ZWFkIG9mIHRoZQorCS0tIElFIHVwLUlQREwtUGFyYW1ldGVyIGluIHVwLU9URE9BLUFzc2lzdGFuY2VEYXRhLgorCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAorLS0gSWYgU3lzSW5mb1R5cGU1IGlzIHNlbnQgdG8gZGVzY3JpYmUgYSAxLjI4TWNwcyBUREQgY2VsbCwgdGhlIElFIFBSQUNILVJBQ0gtSW5mbyBpbmNsdWRlZCBpbgorLS0gUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0IHNoYWxsIGJlIGlnbm9yZWQsIHRoZSBJRSBQUkFDSC1QYXJ0aXRpb25pbmcgYW5kIHRoZSAKKy0tIElFIHJhY2gtVHJhbnNwb3J0Rm9ybWF0U2V0IHNoYWxsIGJlIGFic2VudCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgSUUgaW4gdGhlIGZvbGxvd2luZyAKKy0tIFBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQgc2hhbGwgYmUgdXNlZAorCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNAlPUFRJT05BTCwgCisJdGRkMTI4U3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKKwkJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNAlPUFRJT05BTCwKKwkJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUERTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNAlPUFRJT05BTCwKKwkJcENDUENILUxDUi1FeHRlbnNpb25zCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LWV4dAlPUFRJT05BTCwKKwkJc0NDUENILUxDUi1FeHRlbnNpb25zTGlzdAkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQtZXh0CisJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lCYW5kSW5kaWNhdG9yCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRECQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU1LXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJaGNyLXI1LVNwZWNpZmljSW5mbwkJCQlTRVFVRU5DRSB7CisJCXB1c2NoLVN5c0luZm9MaXN0LVNGTgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUJT1BUSU9OQUwsCisJCXBkc2NoLVN5c0luZm9MaXN0LVNGTgkJCVBEU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUJT1BUSU9OQUwKKwl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTUtdjY1MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlmcmVxdWVuY3lCYW5kSW5kaWNhdG9yMgkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERDIKK30KKworU3lzSW5mb1R5cGU1LXY2ODBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSFNEUEEgQ2VsbCBJbmRpY2F0b3IgaXMgTUQgaW4gdGFidWxhciBkZXNjcmlwdGlvbgorCS0tIERlZmF1bHQgdmFsdWUgaXMg1UhTRFBBIENhcGFiaWxpdHkgbm90IGluZGljYXRlZNUKKwloc2RwYS1DZWxsSW5kaWNhdG9yCQlFTlVNRVJBVEVEIHsgaHNkcGEtQ2FwYWJsZUNlbGwgfQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNS12NjkwZXh0LUlFcyA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBFLURDSCBDZWxsIEluZGljYXRvciBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCisJLS0gRGVmYXVsdCB2YWx1ZSBpcyDVRS1EQ0ggQ2FwYWJpbGl0eSBub3QgaW5kaWNhdGVk1QorCWVkY2gtQ2VsbEluZGljYXRvcgkJCQkJRU5VTUVSQVRFRCB7IGVkY2gtQ2FwYWJsZUNlbGwgfQkJT1BUSU9OQUwsCisJc2NjcGNoLVN5c3RlbUluZm9ybWF0aW9uLU1CTVMJCUNIT0lDRSB7CisJCW1jY2hPblNDQ1BDSHVzZWRGb3JOb25NQk1TCQkJTUJNUy1NQ0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2LAorCQltY2NoT25TQ0NQQ0h1c2VkT25seUZvck1CTVMJCQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNgorCX0JCU9QVElPTkFMLAorCWFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUxpc3QJQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtTGlzdAlPUFRJT05BTCwKKwljQlMtRFJYLUxldmVsMUluZm9ybWF0aW9uLWV4dGVuc2lvbgkJQ0JTLURSWC1MZXZlbDFJbmZvcm1hdGlvbi1leHRlbnNpb24tcjYJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU1LXY3eHlleHQtSUVzIDo6PQkJU0VRVUVOQ0UgeworCXB1c2NoLVN5c0luZm9MaXN0LVNGTi1WSENSCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLVZIQ1IJCU9QVElPTkFMLAorCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CU9QVElPTkFMLAorCXBkc2NoLVN5c0luZm9MaXN0LVNGTi1yNwkJCVBEU0NILVN5c0luZm9MaXN0LXI3CQkJT1BUSU9OQUwsCisJc2NjcGNoLVN5c3RlbUluZm9ybWF0aW9uLU1CTVMJCUNIT0lDRSB7CisJCW1jY2hPblNDQ1BDSHVzZWRGb3JOb25NQk1TCQkJTUJNUy1NQ0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2LAorCQltY2NoT25TQ0NQQ0h1c2VkT25seUZvck1CTVMJCQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNworCX0JCU9QVElPTkFMLAorCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJT1BUSU9OQUwKK30KKworCistLSBTeXNJbmZvVHlwZTViaXMgdXNlcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgU3lzSW5mb1R5cGU1CitTeXNJbmZvVHlwZTViaXMgOjo9IFN5c0luZm9UeXBlNQorCitTeXNJbmZvVHlwZTYgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJcGljaC1Qb3dlck9mZnNldAkJCQlQSUNILVBvd2VyT2Zmc2V0LAorCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlhaWNoLVBvd2VyT2Zmc2V0CQkJCUFJQ0gtUG93ZXJPZmZzZXQsCisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlDU0lDSC1Qb3dlck9mZnNldAkJCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMS4yOE1jcHMgVERELCBwdXNjaC1TeXNJbmZvTGlzdC1TRk4sCisJCQkJLS0gcGRzY2gtU3lzSW5mb0xpc3QtU0ZOIGFuZCBvcGVuTG9vcFBvd2VyQ29udHJvbC1UREQgc2hvdWxkIGJlIGFic2VudAorCQkJCS0tIGFuZCB0aGUgaW5mbyBpbmNsdWRlZCBpbiB0aGUgdGRkMTI4U3BlY2lmaWNJbmZvIGluc3RlYWQuCisJCQkJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMy44NE1jcHMgVEREIGluIFI1LCBIQ1ItcjUtU3BlY2lmaWNJbmZvIHNob3VsZCAKKwkJCQktLSBhbHNvIGJlIGluY2x1ZGVkLgorCQkJCXB1c2NoLVN5c0luZm9MaXN0LVNGTgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTgkJT1BUSU9OQUwsCisJCQkJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUERTQ0gtU3lzSW5mb0xpc3QtU0ZOCQlPUFRJT05BTCwKKwkJCQlvcGVuTG9vcFBvd2VyQ29udHJvbC1UREQJCU9wZW5Mb29wUG93ZXJDb250cm9sLVRERAorCQkJfQorCQl9LAorCQlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQlQcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJT1BUSU9OQUwsCisJCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCisJCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJT1BUSU9OQUwsCisJCWNicy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24JCUNCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24JCQlPUFRJT05BTCwKKwkJLS0gQ29uZGl0aW9uYWwgb24gYW55IG9mIHRoZSBDVENIIGluZGljYXRvciBJRXMgaW4KKwkJLS0gc0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXN5c0luZm9UeXBlNi12NGIwZXh0CQkJU3lzSW5mb1R5cGU2LXY0YjBleHQtSUVzCQlPUFRJT05BTCwKKwkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWwtNCBpbmZvcm1hdGlvbgorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGU2LXY1OTBleHQJCQlTeXNJbmZvVHlwZTYtdjU5MGV4dC1JRXMJCU9QVElPTkFMLAorCQkJCXY2NTBub25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJc3lzSW5mb1R5cGU2LXY2NTBleHQJCQlTeXNJbmZvVHlwZTYtdjY1MGV4dC1JRXMJCU9QVElPTkFMLAorCQkJCQl2Njkwbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlzeXNJbmZvVHlwZTYtdjY5MGV4dAkJCVN5c0luZm9UeXBlNi12NjkwZXh0LUlFcywKKwkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlzeXNJbmZvVHlwZTYtdjd4eWV4dAkJCVN5c0luZm9UeXBlNi12N3h5ZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQkJCQkJCQlPUFRJT05BTAorCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJfQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTYtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERCBpcyBwcmVzZW50IG9ubHkgaWYgSVBETHMgYXJlIGFwcGxpZWQgZm9yIFRERAorCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAorCS0tIElmIFN5c0luZm9UeXBlNiBpcyBzZW50IHRvIGRlc2NyaWJlIGEgMS4yOE1jcHMgVEREIGNlbGwsIHRoZSBJRSBQUkFDSC1SQUNILUluZm8gaW5jbHVkZWQKKwktLSBpbiBQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3Qgc2hhbGwgYmUgaWdub3JlZCwgdGhlIElFIFBSQUNILVBhcnRpdGlvbmluZyBhbmQgdGhlIAorCS0tIElFIHJhY2gtVHJhbnNwb3J0Rm9ybWF0U2V0IHNoYWxsIGJlIGFic2VudCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgSUVzIGluIHRoZSBmb2xsb3dpbmcgCisJLS0gUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNCBzaGFsbCBiZSB1c2VkCisJcHJhY2gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNAlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0CU9QVElPTkFMLCAKKwl0ZGQxMjhTcGVjaWZpY0luZm8JCQkJU0VRVUVOQ0UgeworCQlwdXNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0CU9QVElPTkFMLAorCQlwZHNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQRFNDSC1TeXNJbmZvTGlzdC1TRk4tTENSLXI0CU9QVElPTkFMLAorCQlwQ0NQQ0gtTENSLUV4dGVuc2lvbnMJCQlQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQtZXh0CU9QVElPTkFMLAorCQlzQ0NQQ0gtTENSLUV4dGVuc2lvbnNMaXN0CQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNC1leHQJT1BUSU9OQUwKKwl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCWZyZXF1ZW5jeUJhbmRJbmRpY2F0b3IJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTYtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwloY3ItcjUtU3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKKwkJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLUhDUi1yNQlPUFRJT05BTCwKKwkJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUERTQ0gtU3lzSW5mb0xpc3QtU0ZOLUhDUi1yNQlPUFRJT05BTAorCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNi12NjUwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWZyZXF1ZW5jeUJhbmRJbmRpY2F0b3IyCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkREMgorfQorCitTeXNJbmZvVHlwZTYtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlhZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1MaXN0CUFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUxpc3QJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU2LXY3eHlleHQtSUVzIDo6PQkJU0VRVUVOQ0UgeworCXB1c2NoLVN5c0luZm9MaXN0LVNGTi1WSENSCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLVZIQ1IJCU9QVElPTkFMLAorCXBkc2NoLVN5c0luZm9MaXN0LVNGTi1yNwkJCVBEU0NILVN5c0luZm9MaXN0LXI3CQkJT1BUSU9OQUwsCisJcHJhY2gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJT1BUSU9OQUwsCisJc0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTcgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdWwtSW50ZXJmZXJlbmNlCQkJCQlVTC1JbnRlcmZlcmVuY2UKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJcHJhY2gtSW5mb3JtYXRpb24tU0lCNS1MaXN0CQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbExpc3QsCisJCXByYWNoLUluZm9ybWF0aW9uLVNJQjYtTGlzdAkJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxMaXN0CQkJT1BUSU9OQUwsCisJCWV4cGlyYXRpb25UaW1lRmFjdG9yCQkJRXhwaXJhdGlvblRpbWVGYWN0b3IJCQkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworLS0gVGhpcyBJRSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uCistLSBJdCB3YXMga2VwdCBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zCitTeXNJbmZvVHlwZTggOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCS0tIGR1bW15MSwgZHVtbXkyLCBkdW1teTMgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwkJLS0gdGhleSBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15MQkJCQkJCQlDUENILVBhcmFtZXRlcnMsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZHVtbXkyCQkJCQkJCUNQQ0gtU2V0SW5mb0xpc3QsCisJCWR1bW15MwkJCQkJCQlDU0lDSC1Qb3dlck9mZnNldCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCistLSBUaGlzIElFIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KKy0tIEl0IHdhcyBrZXB0IG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMKK1N5c0luZm9UeXBlOSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KKwkJZHVtbXkJCQkJCQkJQ1BDSC1QZXJzaXN0ZW5jZUxldmVsc0xpc3QsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworLS0gVGhpcyBJRSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uCistLSBJdCB3YXMga2VwdCBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zCitTeXNJbmZvVHlwZTEwIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCURSQUMtU3lzSW5mb0xpc3QsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwkJc2liMTJpbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCWZhY2gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8JRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mbwkJT1BUSU9OQUwsCisJCW1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8JCU1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJc3lzSW5mb1R5cGUxMS12NGIwZXh0CQkJU3lzSW5mb1R5cGUxMS12NGIwZXh0LUlFcwkJT1BUSU9OQUwsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb24JCVNFUVVFTkNFIHsKKwkJCQlzeXNJbmZvVHlwZTExLXY1OTBleHQJCQlTeXNJbmZvVHlwZTExLXY1OTBleHQtSUVzLAorCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXN5c0luZm9UeXBlMTEtdjY5MGV4dAkJCVN5c0luZm9UeXBlMTEtdjY5MGV4dC1JRXMsCisJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKKwkJCQl9CQkJCQkJCU9QVElPTkFMCisJCQl9CQkJCQkJCU9QVElPTkFMCisJCX0JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWZhY2gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8tTENSLUV4dAlGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvLUxDUi1yNC1leHQJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRDb250cm9sU3lzSW5mby1MQ1IJCQlNZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvLUxDUi1yNC1leHQKK30KKworU3lzSW5mb1R5cGUxMS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBjZWxsIGluIG5ld0ludHJhRnJlcXVlbmN5Q2VsbEluZm9MaXN0CisJbmV3SW50cmFGcmVxdWVuY3lDZWxsSW5mb0xpc3QtdjU5MGV4dAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CU9QVElPTkFMLAorCS0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBjZWxsIGluIG5ld0ludGVyRnJlcXVlbmN5Q2VsbEluZm9MaXN0CisJbmV3SW50ZXJGcmVxdWVuY3lDZWxsSW5mb0xpc3QtdjU5MGV4dAlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CU9QVElPTkFMLAorCS0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBjZWxsIGluIG5ld0ludGVyUkFUQ2VsbEluZm9MaXN0CisJbmV3SW50ZXJSQVRDZWxsSW5mb0xpc3QtdjU5MGV4dAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJT1BUSU9OQUwsCisJaW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dAkJSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQlPUFRJT05BTCwKKwlpbnRyYUZyZXFFdmVudC0xZC1yNQkJCQkJSW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMS12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCWludGVyRnJlcVJBQ0hSZXBvcnRpbmdJbmZvCQkJSW50ZXJGcmVxUkFDSFJlcG9ydGluZ0luZm8JCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEyIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCQlmYWNoLU1lYXN1cmVtZW50T2NjYXNpb25JbmZvCUZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8JCU9QVElPTkFMLAorCQltZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvCQlNZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXN5c0luZm9UeXBlMTItdjRiMGV4dAkJCVN5c0luZm9UeXBlMTItdjRiMGV4dC1JRXMJCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGUxMi12NTkwZXh0CQkJU3lzSW5mb1R5cGUxMi12NTkwZXh0LUlFcywKKwkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTEyLXY2OTBleHQJCQlTeXNJbmZvVHlwZTEyLXY2OTBleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCisJCQkJfQkJCQkJCQlPUFRJT05BTAorCQkJfQkJCQkJCQlPUFRJT05BTAorCQl9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTItdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlmYWNoLU1lYXN1cmVtZW50T2NjYXNpb25JbmZvLUxDUi1FeHQJRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mby1MQ1ItcjQtZXh0CU9QVElPTkFMLAorCW1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSCQkJTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mby1MQ1ItcjQtZXh0Cit9CisKK1N5c0luZm9UeXBlMTItdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRyYUZyZXF1ZW5jeUNlbGxJbmZvTGlzdAorCW5ld0ludHJhRnJlcXVlbmN5Q2VsbEluZm9MaXN0LXY1OTBleHQJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKKwktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRlckZyZXF1ZW5jeUNlbGxJbmZvTGlzdAorCW5ld0ludGVyRnJlcXVlbmN5Q2VsbEluZm9MaXN0LXY1OTBleHQJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKKwktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRlclJBVENlbGxJbmZvTGlzdAorCW5ld0ludGVyUkFUQ2VsbEluZm9MaXN0LXY1OTBleHQJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CU9QVElPTkFMLAorCWludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQJCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0CQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJT1BUSU9OQUwsCisJaW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJCUludHJhRnJlcUV2ZW50LTFkLXI1CQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTItdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwlpbnRlckZyZXFSQUNIUmVwb3J0aW5nSW5mbwkJCUludGVyRnJlcVJBQ0hSZXBvcnRpbmdJbmZvCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLURvbWFpblN5c0luZm9MaXN0CQkJQ04tRG9tYWluU3lzSW5mb0xpc3QsCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLUlkbGVUaW1lcnNBbmRDb25zdGFudHMJCVVFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMJCQlPUFRJT05BTCwKKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeyAKKwkJCXN5c0luZm9UeXBlMTMtdjNhMGV4dAkJCVN5c0luZm9UeXBlMTMtdjNhMGV4dC1JRXMsCisJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGUxMy12NGIwZXh0CQkJU3lzSW5mb1R5cGUxMy12NGIwZXh0LUlFcywKKwkJCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTEzLXY3eHlleHQJCQlTeXNJbmZvVHlwZTEzLXY3eHlleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCisJCQkJfQkJCQkJCQlPUFRJT05BTAorCQkJfQkJCQkJCQlPUFRJT05BTAorCQl9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTMtdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwl1ZS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQJCVVFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAorfQorCitTeXNJbmZvVHlwZTEzLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0RXh0CUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNC1leHQJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMy12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yN0V4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTMtMSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBBTlNJLTQxIElFcworCQlhbnNpLTQxLVJBTkQtSW5mb3JtYXRpb24JCUFOU0ktNDEtUkFORC1JbmZvcm1hdGlvbiwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEzLTIgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gQU5TSS00MSBJRXMKKwkJYW5zaS00MS1Vc2VyWm9uZUlELUluZm9ybWF0aW9uCUFOU0ktNDEtVXNlclpvbmVJRC1JbmZvcm1hdGlvbiwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEzLTMgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gQU5TSS00MSBJRXMKKwkJYW5zaS00MS1Qcml2YXRlTmVpZ2hib3VyTGlzdEluZm8gQU5TSS00MS1Qcml2YXRlTmVpZ2hib3VyTGlzdEluZm8sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMy00IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIEFOU0ktNDEgSUVzCisJCWFuc2ktNDEtR2xvYmFsU2VydmljZVJlZGlyZWN0SW5mbworCQkJCQkJCQkJCUFOU0ktNDEtR2xvYmFsU2VydmljZVJlZGlyZWN0SW5mbywKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE0IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0CUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAorCQlleHBpcmF0aW9uVGltZUZhY3RvcgkJCUV4cGlyYXRpb25UaW1lRmFjdG9yCQkJCU9QVElPTkFMLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTUgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCQorCQl1ZS1wb3NpdGlvbmluZy1HUFMtQ2lwaGVyUGFyYW1ldGVycwkJVUUtUG9zaXRpb25pbmctQ2lwaGVyUGFyYW1ldGVycwkJT1BUSU9OQUwsCisJCXVlLXBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VMb2NhdGlvbglSZWZlcmVuY2VMb2NhdGlvbiwKKwkJdWUtcG9zaXRpb25pbmctR1BTLVJlZmVyZW5jZVRpbWUJCVVFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lLAorCisJCXVlLXBvc2l0aW9uaW5nLUdQUy1SZWFsLXRpbWVJbnRlZ3JpdHkJCUJhZFNhdExpc3QJCQkJCQkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsgCisJCQlzeXNJbmZvVHlwZTE1LXY0YjBleHQJCQkJU3lzSW5mb1R5cGUxNS12NGIwZXh0LUlFcywKKwkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlNCBpbmZvcm1hdGlvbgorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQkJCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCXVwLUlwZGwtUGFyYW1ldGVycy1UREQJCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERELXI0LWV4dAlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE1LTEgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gREdQUyBjb3JyZWN0aW9ucworCQl1ZS1wb3NpdGlvbmluZy1HUFMtREdQUy1Db3JyZWN0aW9ucwkJCVVFLVBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zLAorCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJT1BUSU9OQUwKK30gCisKK1N5c0luZm9UeXBlMTUtMiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBFcGhlbWVyaXMgYW5kIGNsb2NrIGNvcnJlY3Rpb25zCisJCXRyYW5zbWlzc2lvblRPVwkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5KSwKKwkJc2F0SUQJCQkJCQkJU2F0SUQsCisJCWVwaGVtZXJpc1BhcmFtZXRlcgkJCQlFcGhlbWVyaXNQYXJhbWV0ZXIsCisKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCU9QVElPTkFMCit9IAorCitTeXNJbmZvVHlwZTE1LTMgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gQWxtYW5hYyBhbmQgb3RoZXIgZGF0YQorCQl0cmFuc21pc3Npb25UT1cJCQkJCUlOVEVHRVIgKDAuLiA2MDQ3OTkpLAorCQl1ZS1wb3NpdGlvbmluZy1HUFMtQWxtYW5hYwkJCQkJVUUtUG9zaXRpb25pbmctR1BTLUFsbWFuYWMJCQkJT1BUSU9OQUwsCisJCXVlLXBvc2l0aW9uaW5nLUdQUy1Jb25vc3BoZXJpY01vZGVsCQkJVUUtUG9zaXRpb25pbmctR1BTLUlvbm9zcGhlcmljTW9kZWwJCU9QVElPTkFMLAorCQl1ZS1wb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1VVEMtTW9kZWwJCQlPUFRJT05BTCwKKwkJc2F0TWFzawkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxLi4zMikpCU9QVElPTkFMLAorCQlsc2JUT1cJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJT1BUSU9OQUwKK30gCisKK1N5c0luZm9UeXBlMTUtNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJdWUtcG9zaXRpb25pbmctT1RET0EtQ2lwaGVyUGFyYW1ldGVycwlVRS1Qb3NpdGlvbmluZy1DaXBoZXJQYXJhbWV0ZXJzCQkJT1BUSU9OQUwsCisJCXVlLXBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YSwKKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXN5c0luZm9UeXBlMTUtNC12M2EwZXh0CQkJCVN5c0luZm9UeXBlMTUtNC12M2EwZXh0LAorCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQlzeXNJbmZvVHlwZTE1LTQtdjRiMGV4dAkJCQlTeXNJbmZvVHlwZTE1LTQtdjRiMGV4dCwKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNS00LXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwlzZm4tT2Zmc2V0LVZhbGlkaXR5CQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTUtNC12NGIwZXh0IDo6PSBTRVFVRU5DRSB7CisJdWUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNS01IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCQl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQiwKKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXN5c0luZm9UeXBlMTUtNS12M2EwZXh0CQkJCVN5c0luZm9UeXBlMTUtNS12M2EwZXh0LAorCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTUtNS12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CisJc2ZuLU9mZnNldC1WYWxpZGl0eQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTYgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwcmVEZWZpbmVkUmFkaW9Db25maWd1cmF0aW9uCVByZURlZlJhZGlvQ29uZmlndXJhdGlvbiwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE3IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDEuMjhNY3BzIFRERCwgcHVzY2gtU3lzSW5mb0xpc3QgYW5kCisJCS0tIHBkc2NoLVN5c0luZm9MaXN0IHNob3VsZCBiZSBhYnNlbnQgYW5kIHRoZSBpbmZvIGluY2x1ZGVkIGluIHRoZQorCQktLSB0ZGQxMjhTcGVjaWZpY0luZm8gaW5zdGVhZC4KKwkJLS0gSWYgUERTQ0gvUFVTQ0ggaXMgY29uZmlndXJlZCBmb3IgMy44NE1jcHMgVEREIGluIFI1LCBIQ1ItcjUtU3BlY2lmaWNJbmZvIHNob3VsZCBhbHNvIGJlIAorCQktLSBpbmNsdWRlZC4KKwkJcHVzY2gtU3lzSW5mb0xpc3QJCQkJUFVTQ0gtU3lzSW5mb0xpc3QJCQkJT1BUSU9OQUwsCisJCXBkc2NoLVN5c0luZm9MaXN0CQkJCVBEU0NILVN5c0luZm9MaXN0CQkJCU9QVElPTkFMLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXN5c0luZm9UeXBlMTctdjRiMGV4dAkJCVN5c0luZm9UeXBlMTctdjRiMGV4dC1JRXMsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCVNFUVVFTkNFIHsKKwkJCQlzeXNJbmZvVHlwZTE3LXY1OTBleHQJCQlTeXNJbmZvVHlwZTE3LXY1OTBleHQtSUVzCQlPUFRJT05BTCwKKwkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXN5c0luZm9UeXBlMTctdjd4eWV4dAkJCVN5c0luZm9UeXBlMTctdjd4eWV4dC1JRXMsCisJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCU9QVElPTkFMCisJCQkJfQkJCQkJCQlPUFRJT05BTAorCQkJfQkJCQkJCQlPUFRJT05BTAorCQl9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTctdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwl0ZGQxMjhTcGVjaWZpY0luZm8JCQkJU0VRVUVOQ0UgeworCQlwdXNjaC1TeXNJbmZvTGlzdAkJCQlQVVNDSC1TeXNJbmZvTGlzdC1MQ1ItcjQJCU9QVElPTkFMLAorCQlwZHNjaC1TeXNJbmZvTGlzdAkJCQlQRFNDSC1TeXNJbmZvTGlzdC1MQ1ItcjQJCU9QVElPTkFMCisJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNy12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWhjci1yNS1TcGVjaWZpY0luZm8JCQkJU0VRVUVOQ0UgeworCQlwdXNjaC1TeXNJbmZvTGlzdAkJCVBVU0NILVN5c0luZm9MaXN0LUhDUi1yNQlPUFRJT05BTCwKKwkJcGRzY2gtU3lzSW5mb0xpc3QJCQlQRFNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUJT1BUSU9OQUwKKwl9CQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNy12N3h5ZXh0LUlFcyA6Oj0JCVNFUVVFTkNFIHsKKwlwdXNjaC1TeXNJbmZvTGlzdC1TRk4tVkhDUgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1WSENSCQlPUFRJT05BTCwKKwlwZHNjaC1TeXNJbmZvTGlzdC1yNwkJCQlQRFNDSC1TeXNJbmZvTGlzdC1yNwkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTggOjo9CQkJCQkJU0VRVUVOQ0UgeworCQlpZGxlTW9kZVBMTU5JZGVudGl0aWVzCQkJUExNTklkZW50aXRpZXNPZk5laWdoYm91ckNlbGxzCQlPUFRJT05BTCwKKwkJY29ubmVjdGVkTW9kZVBMTU5JZGVudGl0aWVzCVBMTU5JZGVudGl0aWVzT2ZOZWlnaGJvdXJDZWxscwkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlU0IxIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIE90aGVyIElFcworCQlzaWItUmVmZXJlbmNlTGlzdAkJCQlTSUItUmVmZXJlbmNlTGlzdCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZVNCMiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBPdGhlciBJRXMKKwkJc2liLVJlZmVyZW5jZUxpc3QJCQkJU0lCLVJlZmVyZW5jZUxpc3QsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworVERELVVNVFMtRnJlcXVlbmN5LUxpc3QgOjo9IAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhOdW1URERGcmVxcykpIE9GCisJCQkJCQkJCQkJCUZyZXF1ZW5jeUluZm9UREQKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIEFOU0ktNDEgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuOSkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQU5TSS00MS1HbG9iYWxTZXJ2aWNlUmVkaXJlY3RJbmZvIDo6PSAJQU5TSS00MS1OQVMtUGFyYW1ldGVyCitBTlNJLTQxLVByaXZhdGVOZWlnaGJvdXJMaXN0SW5mbyA6Oj0gCUFOU0ktNDEtTkFTLVBhcmFtZXRlcgorQU5TSS00MS1SQU5ELUluZm9ybWF0aW9uIDo6PQkJCUFOU0ktNDEtTkFTLVBhcmFtZXRlcgorQU5TSS00MS1Vc2VyWm9uZUlELUluZm9ybWF0aW9uIDo6PSAJCUFOU0ktNDEtTkFTLVBhcmFtZXRlcgorQU5TSS00MS1OQVMtUGFyYW1ldGVyIDo6PQkJCQlCSVQgU1RSSU5HIChTSVpFICgxLi4yMDQ4KSkKKworTWluLVAtUkVWIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkKKworTkFTLVN5c3RlbUluZm9ybWF0aW9uQU5TSS00MSA6Oj0JCUFOU0ktNDEtTkFTLVBhcmFtZXRlcgorTklEIDo6PQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKKworUC1SRVYgOjo9CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkKKworU0lEIDo6PQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE1KSkKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIE1CTVMgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuOWEpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVMtQWNjZXNzUHJvYmFiaWxpdHlGYWN0b3IgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWFwZjAsIGFwZjMyLCBhcGY2NCwgYXBmOTYsIGFwZjEyOCwgYXBmMTYwLCBhcGYxOTIsCisJCQkJCQkJCQkJYXBmMjI0LCBhcGYyNTYsIGFwZjI4OCwgYXBmMzIwLCBhcGYzNTIsIGFwZjM4NCwgYXBmNDE2LAorCQkJCQkJCQkJCWFwZjQ0OCwgYXBmNDgwLCBhcGY1MTIsIGFwZjU0NCwgYXBmNTc2LCBhcGY2MDgsIGFwZjY0MCwKKwkJCQkJCQkJCQlhcGY2NzIsIGFwZjcwNCwgYXBmNzM2LCBhcGY3NjgsIGFwZjgwMCwgYXBmODMyLCBhcGY4NjQsCisJCQkJCQkJCQkJYXBmODk2LCBhcGY5MjgsIGFwZjk2MCwgYXBmMTAwMCB9CisKK01CTVMtQ2VsbEdyb3VwSWRlbnRpdHktcjYgOjo9CQlCSVQgU1RSSU5HIChTSVpFICgxMikpCisKK01CTVMtQ29tbW9uQ0NUckNoSWRlbnRpdHkgOjo9CQlJTlRFR0VSICgxLi4zMikKKworTUJNUy1Db21tb25QaHlDaElkZW50aXR5IDo6PQkJSU5URUdFUiAoMS4uMzIpCisKK01CTVMtQ29tbW9uUkJJZGVudGl0eSA6Oj0JCQlJTlRFR0VSICgxLi4zMikKKworTUJNUy1Db21tb25SQkluZm9ybWF0aW9uLXI2IDo6PQkJU0VRVUVOQ0UgeworCWNvbW1vblJCSWRlbnRpdHkJCQkJCU1CTVMtQ29tbW9uUkJJZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLXI0LAorCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvLU1UQ0gtcjYKK30KKworTUJNUy1Db21tb25SQkluZm9ybWF0aW9uTGlzdC1yNiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtQ29tbW9uUkIpKSBPRgorCQkJCQkJCQkJCU1CTVMtQ29tbW9uUkJJbmZvcm1hdGlvbi1yNgorCitNQk1TLUNvbW1vblRyQ2hJZGVudGl0eSA6Oj0JCQlJTlRFR0VSICgxLi4zMikKKworTUJNUy1Db25uZWN0ZWRNb2RlQ291bnRpbmdTY29wZSA6Oj0gU0VRVUVOQ0UgeworCWNvdW50aW5nRm9yVXJhUENICQkJCQkJCQlCT09MRUFOLAorCWNvdW50aW5nRm9yQ2VsbFBDSAkJCQkJCQkJQk9PTEVBTiwKKwljb3VudGluZ0ZvckNlbGxGQUNICQkJCQkJCQlCT09MRUFOCit9CisKK01CTVMtQ3VycmVudENlbGwtU0NDUENILXI2IDo6PQkJU0VRVUVOQ0UgeworCXNjY3BjaElkZW50aXR5CQkJCQkJTUJNUy1TQ0NQQ0hJZGVudGl0eQkJCQkJT1BUSU9OQUwsCisJc2Vjb25kYXJ5Q0NQQ0gtSW5mbwkJCQkJTUJNUy1Db21tb25QaHlDaElkZW50aXR5LAorCXNvZnRDb21iLVRpbWluZ09mZnNldAkJCQlNQk1TLVNvZnRDb21iLVRpbWluZ09mZnNldAkJCU9QVElPTkFMLAorCS0tIElmIHRoZSBJRSB0cmFuc3BDaC1JbmZvQ29tbW9uRm9yQWxsVHJDaCBpcyBhYnNlbnQsIHRoZSBkZWZhdWx0IFRGQ1MgYXMgc3BlY2lmaWVkCisJLS0gaW4gMTQuMTAuMSBhcHBsaWVzCisJdHJhbnNwQ2gtSW5mb0NvbW1vbkZvckFsbFRyQ2gJCU1CTVMtQ29tbW9uQ0NUckNoSWRlbnRpdHkJCQlPUFRJT05BTCwKKwl0cmFuc3BDSEluZm9ybWF0aW9uCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1DdXJyTGlzdAorfQorCitNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSExpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgorCQkJCQkJCQkJCU1CTVMtQ3VycmVudENlbGwtU0NDUENILXI2CisKK01CTVMtRkFDSENhcnJ5aW5nTVRDSC1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgorCQkJCQkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKKworTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNiA6Oj0JCVNFUVVFTkNFIHsKKwlwLVRNU0kJCQkJCQkJCVAtVE1TSS1HU00tTUFQCQkJCQkJT1BUSU9OQUwKK30KKworTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTMyIDo6PQkJU0VRVUVOQ0UgeworCS0tIEFjdHVhbCBMMSBjb21iaW5pbmcgc2NoZWR1bGUgdmFsdWVzIChvZmZzZXQsIHN0YXJ0LCBkdXJhdGlvbikgPSBJRSB2YWx1ZSAqIDQKKwljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi43KQkJCQkJCU9QVElPTkFMLAorCW10Y2gtTDFDb21iaW5pbmdQZXJpb2RMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtTDFDUCkpIE9GIFNFUVVFTkNFIHsKKwkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uNyksCisJCXBlcmlvZER1cmF0aW9uCQkJCQkJSU5URUdFUiAoMS4uOCkKKwl9Cit9CisKK01CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS02NCA6Oj0JCVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CisJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uMTUpCQkJCQkJT1BUSU9OQUwsCisJbXRjaC1MMUNvbWJpbmluZ1BlcmlvZExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1MMUNQKSkgT0YgU0VRVUVOQ0UgeworCQlwZXJpb2RTdGFydAkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJCXBlcmlvZER1cmF0aW9uCQkJCQkJSU5URUdFUiAoMS4uMTYpCisJfQorfQorCitNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMTI4IDo6PQlTRVFVRU5DRSB7CisJLS0gQWN0dWFsIEwxIGNvbWJpbmluZyBzY2hlZHVsZSB2YWx1ZXMgKG9mZnNldCwgc3RhcnQsIGR1cmF0aW9uKSA9IElFIHZhbHVlICogNAorCWN5Y2xlT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAuLjMxKQkJCQkJCU9QVElPTkFMLAorCW10Y2gtTDFDb21iaW5pbmdQZXJpb2RMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtTDFDUCkpIE9GIFNFUVVFTkNFIHsKKwkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCQlwZXJpb2REdXJhdGlvbgkJCQkJCUlOVEVHRVIgKDEuLjMyKQorCX0KK30KKworTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTI1NiA6Oj0JU0VRVUVOQ0UgeworCS0tIEFjdHVhbCBMMSBjb21iaW5pbmcgc2NoZWR1bGUgdmFsdWVzIChvZmZzZXQsIHN0YXJ0LCBkdXJhdGlvbikgPSBJRSB2YWx1ZSAqIDQKKwljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi42MykJCQkJCQlPUFRJT05BTCwKKwltdGNoLUwxQ29tYmluaW5nUGVyaW9kTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUwxQ1ApKSBPRiBTRVFVRU5DRSB7CisJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwkJcGVyaW9kRHVyYXRpb24JCQkJCQlJTlRFR0VSICgxLi42NCkKKwl9Cit9CisKK01CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS01MTIgOjo9CVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CisJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uMTI3KQkJCQkJCU9QVElPTkFMLAorCW10Y2gtTDFDb21iaW5pbmdQZXJpb2RMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtTDFDUCkpIE9GIFNFUVVFTkNFIHsKKwkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKKwkJcGVyaW9kRHVyYXRpb24JCQkJCQlJTlRFR0VSICgxLi4xMjgpCisJfQorfQorCitNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMTAyNCA6Oj0JU0VRVUVOQ0UgeworCS0tIEFjdHVhbCBMMSBjb21iaW5pbmcgc2NoZWR1bGUgdmFsdWVzIChvZmZzZXQsIHN0YXJ0LCBkdXJhdGlvbikgPSBJRSB2YWx1ZSAqIDQKKwljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi4yNTUpCQkJCQkJT1BUSU9OQUwsCisJbXRjaC1MMUNvbWJpbmluZ1BlcmlvZExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1MMUNQKSkgT0YgU0VRVUVOQ0UgeworCQlwZXJpb2RTdGFydAkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCQlwZXJpb2REdXJhdGlvbgkJCQkJCUlOVEVHRVIgKDEuLjI1NikKKwl9Cit9CisKK01CTVMtTDFDb21iaW5pbmdTY2hlZHVsZSA6Oj0JCUNIT0lDRSB7CisJY3ljbGVMZW5ndGgtMzIJCQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMzIsCisJY3ljbGVMZW5ndGgtNjQJCQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtNjQsCisJY3ljbGVMZW5ndGgtMTI4CQkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTEyOCwKKwljeWNsZUxlbmd0aC0yNTYJCQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtMjU2LAorCWN5Y2xlTGVuZ3RoLTUxMgkJCQkJCU1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS01MTIsCisJY3ljbGVMZW5ndGgtMTAyNAkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTEwMjQKK30KKworTUJNUy1MMUNvbWJpbmluZ1RyYW5zbVRpbWVEaWZmIDo6PQlJTlRFR0VSICgwLi4zKQorCitNQk1TLUwyM0NvbmZpZ3VyYXRpb24gOjo9CQkJQ0hPSUNFIHsKKwlzYW1lQXNDdXJyZW50CQkJCQkJU0VRVUVOQ0UgeworCQljdXJyZW50Q2VsbC1TQ0NQQ0gJCQkJCU1CTVMtU0NDUENISWRlbnRpdHksCisJCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTAorCX0sCisJZGlmZmVyZW50CQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gSWYgdGhlIElFIHRyYW5zcENoLUluZm9Db21tb25Gb3JBbGxUckNoIGlzIGFic2VudCwgdGhlIGRlZmF1bHQgVEZDUyBhcyBzcGVjaWZpZWQKKwkJLS0gaW4gMTQuMTAuMSBhcHBsaWVzCisJCXRyYW5zcENoLUluZm9Db21tb25Gb3JBbGxUckNoCQlNQk1TLUNvbW1vbkNDVHJDaElkZW50aXR5CQkJT1BUSU9OQUwsCisJCXRyYW5zcENISW5mb3JtYXRpb24JCQkJCU1CTVMtVHJDSEluZm9ybWF0aW9uLU5laWdoYkxpc3QKKwl9Cit9CisKK01CTVMtTG9naWNhbENoSWRlbnRpdHkgOjo9CQkJSU5URUdFUiAoMS4uMTUpCisKK01CTVMtTUNDSC1Db25maWd1cmF0aW9uSW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCWFjY2Vzc0luZm9QZXJpb2RDb2VmZmljaWVudAkJCUlOVEVHRVIgKDAuLjMpLAorCXJlcGV0aXRpb25QZXJpb2RDb2VmZmljaWVudAkJCUlOVEVHRVIgKDAuLjMpLAorCW1vZGlmaWNhdGlvblBlcmlvZENvZWZmaWNpZW50CQlJTlRFR0VSICg3Li4xMCksCisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tTUNDSC1yNiwKKwl0Y3RmLVByZXNlbmNlCQkJCQkJTUJNUy1UQ1RGLVByZXNlbmNlCQkJCQlPUFRJT05BTAorfQorCitNQk1TLU1JQ0hDb25maWd1cmF0aW9uSW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCW1pY2hQb3dlck9mZnNldAkJCQkJCU1CTVMtTUlDSFBvd2VyT2Zmc2V0LAorCW1vZGUJCQkJCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZTI1NgkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYsCisJCQluaS1Db3VudFBlckZyYW1lCQkJCQlNQk1TLU5JLUNvdW50UGVyRnJhbWUsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwkJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCisJCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtTUlDSAkJT1BUSU9OQUwsCisJCQltYm1zTm90aWZpY2F0aW9uSW5kTGVuZ3RoCQkJTUJNUy1NSUNITm90aWZpY2F0aW9uSW5kTGVuZ3RoCURFRkFVTFQgbW40CisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAorCQkJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0LAorCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCisJCQkJCQkJCQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAorCQkJbWJtc05vdGlmaWNhdGlvbkluZExlbmd0aAkJCU1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aAlERUZBVUxUIG1uNAorCQl9CisJfQorfQorCitNQk1TLU1JQ0hDb25maWd1cmF0aW9uSW5mby1yNyA6Oj0JU0VRVUVOQ0UgeworCW1pY2hQb3dlck9mZnNldAkJCQkJCU1CTVMtTUlDSFBvd2VyT2Zmc2V0LAorCW1vZGUJCQkJCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZTI1NgkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYsCisJCQluaS1Db3VudFBlckZyYW1lCQkJCQlNQk1TLU5JLUNvdW50UGVyRnJhbWUsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwkJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCisJCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtTUlDSAkJT1BUSU9OQUwsCisJCQltYm1zTm90aWZpY2F0aW9uSW5kTGVuZ3RoCQkJTUJNUy1NSUNITm90aWZpY2F0aW9uSW5kTGVuZ3RoCURFRkFVTFQgbW40CisJCX0sCisJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1WSENSLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCisJCQlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtTUlDSAkJT1BUSU9OQUwsCisJCQltYm1zTm90aWZpY2F0aW9uSW5kTGVuZ3RoCQkJTUJNUy1NSUNITm90aWZpY2F0aW9uSW5kTGVuZ3RoCURFRkFVTFQgbW40CisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAorCQkJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0LAorCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCisJCQkJCQkJCQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAorCQkJbWJtc05vdGlmaWNhdGlvbkluZExlbmd0aAkJCU1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aAlERUZBVUxUIG1uNAorCQl9CisJfQorfQorCitNQk1TLU1JQ0hOb3RpZmljYXRpb25JbmRMZW5ndGggOjo9CUVOVU1FUkFURUQgeyBtbjQsIG1uOCwgbW4xNiB9CisKK01CTVMtTUlDSFBvd2VyT2Zmc2V0IDo6PQkJCUlOVEVHRVIgKC0xMC4uNSkKKworTUJNUy1Nb2RpZmVkU2VydmljZS1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJbWJtcy1UcmFuc21pc3Npb25JZGVudGl0eQkJCU1CTVMtVHJhbnNtaXNzaW9uSWRlbnRpdHksCisJbWJtcy1SZXF1aXJlZFVFQWN0aW9uCQkJCU1CTVMtUmVxdWlyZWRVRUFjdGlvbi1Nb2QsCisJbWJtcy1QcmVmZXJyZWRGcmVxdWVuY3kJCQkJQ0hPSUNFIHsKKwkJbWNjaAkJCQkJCQkJTUJNUy1QRkxJbmRleCwKKwkJZGNjaAkJCQkJCQkJTUJNUy1QRkxJbmZvCisJfQkJT1BUSU9OQUwsCisJbWJtcy1EaXNwZXJzaW9uSW5kaWNhdG9yCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJY29udGludWVNQ0NIUmVhZGluZwkJCQkJQk9PTEVBTgorfQorCitNQk1TLU1vZGlmZWRTZXJ2aWNlTGlzdC1yNiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1Tc2Vydk1vZGlmKSkgT0YKKwkJCQkJCQkJCQlNQk1TLU1vZGlmZWRTZXJ2aWNlLXI2CisKK01CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCW1zY2hTaGVkdWxpbmdJbmZvCQkJCQlNQk1TLU1TQ0hTY2hlZHVsaW5nSW5mbwkJCQlPUFRJT05BTCwKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1NU0NILXI2CQkJCQlPUFRJT05BTCwKKwl0Y3RmLVByZXNlbmNlCQkJCQkJTUJNUy1UQ1RGLVByZXNlbmNlCQkJCQlPUFRJT05BTAorfQorCitNQk1TLU1TQ0hTY2hlZHVsaW5nSW5mbyA6Oj0JCQlDSE9JQ0UgeworCXNjaGVkdWxpbmdQZXJpb2QtMzItT2Zmc2V0CQkJSU5URUdFUiAoMC4uMzEpLAorCXNjaGVkdWxpbmdQZXJpb2QtNjQtT2Zmc2V0CQkJSU5URUdFUiAoMC4uNjMpLAorCXNjaGVkdWxpbmdQZXJpb2QtMTI4LU9mZnNldAkJCUlOVEVHRVIgKDAuLjEyNyksCisJc2NoZWR1bGluZ1BlcmlvZC0yNTYtT2Zmc2V0CQkJSU5URUdFUiAoMC4uMjU1KSwKKwlzY2hlZHVsaW5nUGVyaW9kLTUxMi1PZmZzZXQJCQlJTlRFR0VSICgwLi41MTEpLAorCXNjaGVkdWxpbmdQZXJpb2QtMTAyNC1PZmZzZXQJCUlOVEVHRVIgKDAuLjEwMjMpCit9CisKK01CTVMtTmVpZ2hib3VyaW5nQ2VsbFNDQ1BDSC1yNiA6Oj0JU0VRVUVOQ0UgeworCXNlY29uZGFyeUNDUENILUluZm8JCQkJCU1CTVMtQ29tbW9uUGh5Q2hJZGVudGl0eSwKKwlzZWNvbmRhcnlDQ1BDSFB3ck9mZnNldERpZmYJCQlNQk1TLVNDQ1BDSFB3ck9mZnNldERpZmYJCQlPUFRJT05BTCwKKwlsYXllcjFDb21iaW5pbmcJCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzb2Z0Q29tYi1UaW1pbmdPZmZzZXQJCQkJTUJNUy1Tb2Z0Q29tYi1UaW1pbmdPZmZzZXQsCisJCQltYm1zLUwxQ29tYmluaW5nVHJhbnNtVGltZURpZmYJCU1CTVMtTDFDb21iaW5pbmdUcmFuc21UaW1lRGlmZiwKKwkJCW1ibXMtTDFDb21iaW5pbmdTY2hlZHVsZQkJCU1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlOVUxMCisJfQkJT1BUSU9OQUwsCisJbWJtcy1MMjNDb25maWd1cmF0aW9uCQkJCU1CTVMtTDIzQ29uZmlndXJhdGlvbgorfQorCitNQk1TLU5laWdoYm91cmluZ0NlbGxTQ0NQQ0hMaXN0LXI2IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKKwkJCQkJCQkJCQlNQk1TLU5laWdoYm91cmluZ0NlbGxTQ0NQQ0gtcjYKKworTUJNUy1OSS1Db3VudFBlckZyYW1lIDo6PQkJCUVOVU1FUkFURUQgeyBuaTE4LCBuaTM2LCBuaTcyLCBuaTE0NCB9CisKK01CTVMtTnVtYmVyT2ZOZWlnaGJvdXJDZWxscy1yNiA6Oj0JCUlOVEVHRVIgKDAuLjMyKQorCitNQk1TLVBGTEluZGV4IDo6PQkJCQkJSU5URUdFUiAoMS4ubWF4TUJNUy1GcmVxKQorCitNQk1TLVBGTEluZm8gOjo9CQkJCQlGcmVxdWVuY3lJbmZvCisKK01CTVMtUGh5Q2hJbmZvcm1hdGlvbi1yNiA6Oj0JCVNFUVVFTkNFIHsKKwltYm1zLUNvbW1vblBoeUNoSWRlbnRpdHkJCQlNQk1TLUNvbW1vblBoeUNoSWRlbnRpdHksCisJc2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMJCQkJU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjYKK30KKworTUJNUy1QaHlDaEluZm9ybWF0aW9uTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtQ29tbW9uUGh5Q2gpKSBPRgorCQkJCQkJCQkJCU1CTVMtUGh5Q2hJbmZvcm1hdGlvbi1yNgorCitNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYgOjo9CUVOVU1FUkFURUQgeyB0cnVlIH0KKworTUJNUy1QcmVmZXJyZWRGcmVxUmVxdWVzdC1yNiA6Oj0JU0VRVUVOQ0UgeworCXByZWZlcnJlZEZyZXFSZXF1ZXN0CQkJCUZyZXF1ZW5jeUluZm8KK30KKworTUJNUy1QcmVmZXJyZWRGcmVxdWVuY3lJbmZvLXI2IDo6PQlTRVFVRU5DRSB7CisJbWJtc1ByZWZlcnJlZEZyZXF1ZW5jeQkJCQlJTlRFR0VSICgxLi5tYXhNQk1TLUZyZXEpCQkJT1BUSU9OQUwsCisJbGF5ZXJDb252ZXJnZW5jZUluZm9ybWF0aW9uCQkJQ0hPSUNFIHsKKwkJbWJtcy1Rb2Zmc2V0CQkJCQkJTUJNUy1Rb2Zmc2V0LAorCQltYm1zLUhDU29mZnNldAkJCQkJCUlOVEVHRVIgKDAuLjcpCisJfSwKKwltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK01CTVMtUHJlZmVycmVkRnJlcXVlbmN5TGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtRnJlcSkpIE9GCisJCQkJCQkJCQkJTUJNUy1QcmVmZXJyZWRGcmVxdWVuY3lJbmZvLXI2CisKK01CTVMtUFRNQWN0aXZhdGlvblRpbWUtcjYgOjo9CQlJTlRFR0VSICgwLi4yMDQ3KQorCitNQk1TLVBUTS1SQkluZm9ybWF0aW9uLUMgOjo9CQlTRVFVRU5DRSB7CisJcmJJbmZvcm1hdGlvbgkJCQkJCU1CTVMtQ29tbW9uUkJJZGVudGl0eSwKKwlzaG9ydFRyYW5zbWlzc2lvbklECQkJCQlNQk1TLVNob3J0VHJhbnNtaXNzaW9uSUQsCisJbG9naWNhbENoSWRlbnRpdHkJCQkJCU1CTVMtTG9naWNhbENoSWRlbnRpdHkKK30KKworTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1DTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCcGVyVHJDaCkpIE9GCisJCQkJCQkJCQkJTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1DCisKK01CTVMtUFRNLVJCSW5mb3JtYXRpb24tTiA6Oj0JCVNFUVVFTkNFIHsKKwlzaG9ydFRyYW5zbWlzc2lvbklECQkJCQlNQk1TLVNob3J0VHJhbnNtaXNzaW9uSUQsCisJbG9naWNhbENoSWRlbnRpdHkJCQkJCU1CTVMtTG9naWNhbENoSWRlbnRpdHksCisJbGF5ZXIxLUNvbWJpbmluZ1N0YXR1cwkJCQlCT09MRUFOfQorCitNQk1TLVBUTS1SQkluZm9ybWF0aW9uLU5MaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJUckNoKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLU4KKworTUJNUy1Rb2Zmc2V0IDo6PQkJCQkJRU5VTUVSQVRFRCB7IHE0LCBxOCwgcTEyLCBxMTYsIHEyMCwgcTMwLCBxNDAsIHFJbmZpbml0eSB9CisKK01CTVMtUmVxdWlyZWRVRUFjdGlvbi1Nb2QgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub25lLAorCQkJCQkJCQkJCWFjcXVpcmVDb3VudGluZ0luZm8sCisJCQkJCQkJCQkJYWNxdWlyZUNvdW50aW5nSW5mb1BUTS1SQnNVbm1vZGlmaWVkLAorCQkJCQkJCQkJCWFjcXVpcmVQVE0tUkJJbmZvLAorCQkJCQkJCQkJCXJlcXVlc3RQVFBSQiwKKwkJCQkJCQkJCQlyZWxlYXNlUFRNLVJCIH0KKworTUJNUy1SZXF1aXJlZFVFQWN0aW9uLVVNb2QgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub25lLAorCQkJCQkJCQkJCWFjcXVpcmVQVE0tUkJJbmZvLAorCQkJCQkJCQkJCXJlcXVlc3RQVFBSQiB9CisKK01CTVMtU0NDUENISWRlbnRpdHkgOjo9CQkJCUlOVEVHRVIgKDEuLm1heFNDQ1BDSCkKKworTUJNUy1TQ0NQQ0hQd3JPZmZzZXREaWZmIDo6PQkJRU5VTUVSQVRFRCB7IG1jcG8tbWludXM2LCBtY3BvLW1pbnVzMywgbWNwby1wbHVzMywgbWNwby1wbHVzNiB9CisKK01CTVMtU2VydmljZUFjY2Vzc0luZm8tcjYgOjo9CQlTRVFVRU5DRSB7CisJc2hvcnRUcmFuc21pc3Npb25JRAkJCQkJTUJNUy1TaG9ydFRyYW5zbWlzc2lvbklELAorCWFjY2Vzc3Byb2JhYmlsaXR5RmFjdG9yLUlkbGUJCU1CTVMtQWNjZXNzUHJvYmFiaWxpdHlGYWN0b3IsCisJYWNjZXNzcHJvYmFiaWxpdHlGYWN0b3ItVXJhUENICQlNQk1TLUFjY2Vzc1Byb2JhYmlsaXR5RmFjdG9yCQlPUFRJT05BTCwKKwltYm1zLUNvbm5lY3RlZE1vZGVDb3VudGluZ1Njb3BlCQlNQk1TLUNvbm5lY3RlZE1vZGVDb3VudGluZ1Njb3BlCit9CisKK01CTVMtU2VydmljZUFjY2Vzc0luZm9MaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNU3NlcnZDb3VudCkpIE9GCisJCQkJCQkJCQkJTUJNUy1TZXJ2aWNlQWNjZXNzSW5mby1yNgorCitNQk1TLVNlcnZpY2VJZGVudGl0eS1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJc2VydmljZUlkZW50aXR5CQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICgzKSksCisJcGxtbi1JZGVudGl0eQkJCQkJCUNIT0lDRSB7CisJCS0tIFRoZSAnc2FtZUFzTUlCLVBMTU4tSWQnIGNob2ljZSByZWZlcnMgdG8gdGhlICdQTE1OIElkZW50aXR5JyAoUjk5KSBpbiBNSUIuCisJCXNhbWVBc01JQi1QTE1OLUlkCQkJCQlOVUxMLAorCQlvdGhlcgkJCQkJCQkJQ0hPSUNFIHsKKwkJCS0tIFRoZSAnc2FtZUFzTUlCLU11bHRpUExNTi1JZCcgY2hvaWNlIHJlZmVycyB0byBvbmUgb2YgdGhlICgxLi41KSBQTE1OIElkZW50aXRpZXMKKwkJCS0tIHByb3ZpZGVkIGluIHRoZSAnTXVsdGlwbGUgUExNTiBMaXN0JyAoUkVMLTYpIGluIE1JQi4KKwkJCXNhbWVBc01JQi1NdWx0aVBMTU4tSWQJCQkJSU5URUdFUiAoMS4uNSksCisJCQlleHBsaWNpdFBMTU4tSWQJCQkJCQlQTE1OLUlkZW50aXR5CisJCX0KKwl9Cit9CisKK01CTVMtU2VydmljZVNjaGVkdWxpbmdJbmZvLXI2IDo6PQlTRVFVRU5DRSB7CisJbWJtcy1UcmFuc21pc3Npb25JZGVudGl0eQkJCU1CTVMtVHJhbnNtaXNzaW9uSWRlbnRpdHksCisJbWJtcy1TZXJ2aWNlVHJhbnNtSW5mb0xpc3QJCQlNQk1TLVNlcnZpY2VUcmFuc21JbmZvTGlzdAkJCU9QVElPTkFMLAorCW5leHRTY2hlZHVsaW5ncGVyaW9kCQkJCUlOVEVHRVIgKDAuLjMxKQorfQorCitNQk1TLVNlcnZpY2VTY2hlZHVsaW5nSW5mb0xpc3QtcjYgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1Tc2VydlNjaGVkKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVNlcnZpY2VTY2hlZHVsaW5nSW5mby1yNgorCitNQk1TLVNlcnZpY2VUcmFuc21JbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgdmFsdWVzIChzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWVzICogNAorCXN0YXJ0CQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCWR1cmF0aW9uCQkJCQkJCUlOVEVHRVIgKDEuLjI1NikKK30KKworTUJNUy1TZXJ2aWNlVHJhbnNtSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNU1RyYW5zbWlzKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVNlcnZpY2VUcmFuc21JbmZvCisKK01CTVMtU2Vzc2lvbklkZW50aXR5IDo6PQkJCU9DVEVUIFNUUklORyAoU0laRSAoMSkpCisKK01CTVMtU2hvcnRUcmFuc21pc3Npb25JRCA6Oj0JCUlOVEVHRVIgKDEuLm1heE1CTVNzZXJ2VW5tb2RpZikKKworTUJNUy1TSUJUeXBlNS1TQ0NQQ0gtcjYgOjo9CQkJU0VRVUVOQ0UgeworCXNjY3BjaElkZW50aXR5CQkJCQkJTUJNUy1TQ0NQQ0hJZGVudGl0eSwKKwl0cmFuc3BDSEluZm9ybWF0aW9uCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1TSUI1TGlzdAorfQorCitNQk1TLVNJQlR5cGU1LVNDQ1BDSExpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVNJQlR5cGU1LVNDQ1BDSC1yNgorCitNQk1TLVNvZnRDb21iLVRpbWluZ09mZnNldCA6Oj0JCUVOVU1FUkFURUQgeyBtczAsIG1zMTAsIG1zMjAsIG1zNDAgfQorCitNQk1TLVRDVEYtUHJlc2VuY2UgOjo9CQkJCUVOVU1FUkFURUQgeyBmYWxzZSB9CisKK01CTVMtVGltZXJzQW5kQ291bnRlcnMtcjYgOjo9CQlTRVFVRU5DRSB7CisJdC0zMTgJCQkJCQkJCVQtMzE4CQkJCQkJCQlERUZBVUxUIG1zMTAwMAorfQorCitNQk1TLVRyYW5zbWlzc2lvbklkZW50aXR5IDo6PQkJU0VRVUVOQ0UgeworCW1ibXMtU2VydmljZUlkZW50aXR5CQkJCU1CTVMtU2VydmljZUlkZW50aXR5LXI2LAorCW1ibXMtU2Vzc2lvbklkZW50aXR5CQkJCU1CTVMtU2Vzc2lvbklkZW50aXR5CQkJCU9QVElPTkFMCit9CisKK01CTVMtVHJhbnNwQ2hJbmZvRm9yQ0NUckNoLXI2IDo6PQlTRVFVRU5DRSB7CisJY29tbW9uQ0NUckNoSWRlbnRpdHkJCQkJTUJNUy1Db21tb25DQ1RyQ2hJZGVudGl0eSwKKwl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvblNldAkJVEZDUworfQorCisKK01CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaENDVHJDaC1yNiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtQ29tbW9uQ0NUckNoKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVRyYW5zcENoSW5mb0ZvckNDVHJDaC1yNgorCitNQk1TLVRyYW5zcENoSW5mb0ZvckVhY2hUckNoLXI2IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1Db21tb25UckNoKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVRyYW5zcENoSW5mb0ZvclRyQ2gtcjYKKworTUJNUy1UcmFuc3BDaEluZm9Gb3JUckNoLXI2IDo6PQkJU0VRVUVOQ0UgeworCWNvbW1vblRyQ2hJZGVudGl0eQkJCQkJTUJNUy1Db21tb25UckNoSWRlbnRpdHksCisJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKK30KKworTUJNUy1UckNISW5mb3JtYXRpb24tQ3VyciA6Oj0JCVNFUVVFTkNFIHsKKwl0cmFuc3BDaC1JbmZvCQkJCQkJTUJNUy1Db21tb25UckNoSWRlbnRpdHksCisJcmJJbmZvcm1hdGlvbgkJCQkJCU1CTVMtUFRNLVJCSW5mb3JtYXRpb24tQ0xpc3QJCU9QVElPTkFMLAorCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTAorfQorCitNQk1TLVRyQ0hJbmZvcm1hdGlvbi1DdXJyTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgorCQkJCQkJCQkJCU1CTVMtVHJDSEluZm9ybWF0aW9uLUN1cnIKKworTUJNUy1UckNISW5mb3JtYXRpb24tTmVpZ2hiIDo6PQkJU0VRVUVOQ0UgeworCXRyYW5zcENoLUluZm8JCQkJCQlNQk1TLUNvbW1vblRyQ2hJZGVudGl0eSwKKwl0cmFuc3BDaC1Db21iaW5pbmdTdGF0dXMJCQlCT09MRUFOLAorCXJiSW5mb3JtYXRpb24JCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLU5MaXN0CQlPUFRJT05BTCwKKwltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgkJT1BUSU9OQUwKK30KKworTUJNUy1UckNISW5mb3JtYXRpb24tTmVpZ2hiTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgorCQkJCQkJCQkJCU1CTVMtVHJDSEluZm9ybWF0aW9uLU5laWdoYgorCitNQk1TLVRyQ0hJbmZvcm1hdGlvbi1TSUI1IDo6PQkJU0VRVUVOQ0UgeworCXRyYW5zcENoLUlkZW50aXR5CQkJCQlJTlRFR0VSICgxLi5tYXhGQUNIUENIKSwKKwlyYkluZm9ybWF0aW9uCQkJCQkJTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1DTGlzdAkJT1BUSU9OQUwsCisJbXNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYJCU9QVElPTkFMCit9CisKK01CTVMtVHJDSEluZm9ybWF0aW9uLVNJQjVMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RkFDSFBDSCkpIE9GCisJCQkJCQkJCQkJTUJNUy1UckNISW5mb3JtYXRpb24tU0lCNQorCitNQk1TLVVubW9kaWZpZWRTZXJ2aWNlLXI2IDo6PQkJU0VRVUVOQ0UgeworCW1ibXMtVHJhbnNtaXNzaW9uSWRlbnRpdHkJCQlNQk1TLVRyYW5zbWlzc2lvbklkZW50aXR5LAorCW1ibXMtUmVxdWlyZWRVRUFjdGlvbgkJCQlNQk1TLVJlcXVpcmVkVUVBY3Rpb24tVU1vZCwKKwltYm1zLVByZWZlcnJlZEZyZXF1ZW5jeQkJCQlNQk1TLVBGTEluZGV4CQkJCQkJT1BUSU9OQUwKK30KKworTUJNUy1Vbm1vZGlmaWVkU2VydmljZUxpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1Tc2VydlVubW9kaWYpKSBPRgorCQkJCQkJCQkJCU1CTVMtVW5tb2RpZmllZFNlcnZpY2UtcjYKKworRU5ECisKK0NvbnN0YW50LWRlZmluaXRpb25zIERFRklOSVRJT05TIEFVVE9NQVRJQyBUQUdTIDo6PQorCitCRUdJTgorCitoaVBEU0NIaWRlbnRpdGllcwkJCUlOVEVHRVIgOjo9IDY0CitoaVBVU0NIaWRlbnRpdGllcwkJCUlOVEVHRVIgOjo9IDY0CitoaVJNCQkJCQkJSU5URUdFUiA6Oj0gMjU2CittYXhBQwkJCQkJCUlOVEVHRVIgOjo9IDE2CittYXhBZGRpdGlvbmFsTWVhcyAJCQlJTlRFR0VSIDo6PSA0CittYXhBU0MJCQkJCQlJTlRFR0VSIDo6PSA4CittYXhBU0NtYXAJCQkJCUlOVEVHRVIgOjo9IDcKK21heEFTQ3BlcnNpc3QJCQkJSU5URUdFUiA6Oj0gNgorbWF4Q0NUckNICQkJCQlJTlRFR0VSIDo6PSA4CittYXhDZWxsTWVhcyAJCQkJSU5URUdFUiA6Oj0gMzIKK21heENlbGxNZWFzLTEJCQkJSU5URUdFUiA6Oj0gMzEKK21heENOZG9tYWlucwkJCQlJTlRFR0VSIDo6PSA0CittYXhDUENIc2V0cwkJCQkJSU5URUdFUiA6Oj0gMTYKK21heERQQ0gtRExjaGFuCQkJCUlOVEVHRVIgOjo9IDgKK21heERQRENILVVMCQkJCQlJTlRFR0VSIDo6PSA2CittYXhEUkFDY2xhc3NlcwkJCQlJTlRFR0VSIDo6PSA4CittYXhFLURDSE1BQ2RGbG93CQkJSU5URUdFUiA6Oj0gOAorbWF4RS1EQ0hNQUNkRmxvdy0xCQkJSU5URUdFUiA6Oj0gNworbWF4RURDSFJMCQkJCQlJTlRFR0VSIDo6PSA0CittYXhGQUNIUENICQkJCQlJTlRFR0VSIDo6PSA4CittYXhGcmVxCQkJCQkJSU5URUdFUiA6Oj0gOAorbWF4RnJlcUJhbmRzRkRECQkJCUlOVEVHRVIgOjo9IDgKK21heEZyZXFCYW5kc0ZERC1leHQJCQlJTlRFR0VSIDo6PSAxNQktLSBtYXhGcmVxQmFuZHNGREQtZXh0IDo6PSAyMiDQIChtYXhGcmVxQmFuZHNGREQg0CAxKQorbWF4RnJlcUJhbmRzVERECQkJCUlOVEVHRVIgOjo9IDQKK21heEZyZXFCYW5kc0dTTQkJCQlJTlRFR0VSIDo6PSAxNgorbWF4R0VSQU4tU0kJCQkJCUlOVEVHRVIgOjo9IDgKK21heEdTTVRhcmdldENlbGxzCQkJSU5URUdFUiA6Oj0gMzIKK21heEhQcm9jZXNzZXMgCQkJCUlOVEVHRVIgOjo9IDgKK21heEhTRFNDSFRCSW5kZXgJCQlJTlRFR0VSIDo6PSA2NAorbWF4SFNEU0NIVEJJbmRleC10ZGQzODQJCUlOVEVHRVIgOjo9IDUxMgorbWF4SFNTQ0NIcwkJCQkJSU5URUdFUiA6Oj0gNAorbWF4SW50ZXJTeXNNZXNzYWdlcyAJCUlOVEVHRVIgOjo9IDQKK21heExvQ0hwZXJSTEMJCQkJSU5URUdFUiA6Oj0gMgorbWF4TUFDLWQtUERVc2l6ZXMJCQlJTlRFR0VSIDo6PSA4CittYXhNQk1TLUNvbW1vbkNDVHJDaAkJSU5URUdFUiA6Oj0gMzIKK21heE1CTVMtQ29tbW9uUGh5Q2gJCQlJTlRFR0VSIDo6PSAzMgorbWF4TUJNUy1Db21tb25SQgkJCUlOVEVHRVIgOjo9IDMyCittYXhNQk1TLUNvbW1vblRyQ2gJCQlJTlRFR0VSIDo6PSAzMgorbWF4TUJNUy1GcmVxCQkJCUlOVEVHRVIgOjo9IDQKK21heE1CTVMtTDFDUAkJCQlJTlRFR0VSIDo6PSA0CittYXhNQk1Tc2VydkNvdW50CQkJSU5URUdFUiA6Oj0gOAorbWF4TUJNU3NlcnZNb2RpZgkJCUlOVEVHRVIgOjo9IDMyCittYXhNQk1Tc2VydlNjaGVkCQkJSU5URUdFUiA6Oj0gMTYKK21heE1CTVNzZXJ2VW5tb2RpZgkJCUlOVEVHRVIgOjo9IDY0CittYXhNQk1TVHJhbnNtaXMJCQkJSU5URUdFUiA6Oj0gNAorbWF4TWVhc0V2ZW50CQkJCUlOVEVHRVIgOjo9IDgKK21heE1lYXNJbnRlcnZhbHMJCQlJTlRFR0VSIDo6PSAzCittYXhNZWFzUGFyRXZlbnQJCQkJSU5URUdFUiA6Oj0gMgorbWF4TnVtQ0RNQTIwMDBGcmVxcwkJCUlOVEVHRVIgOjo9ICA4CittYXhOdW1HU01GcmVxUmFuZ2VzCQkJSU5URUdFUiA6Oj0gMzIKK21heE51bUZEREZyZXFzCQkJCUlOVEVHRVIgOjo9ICA4CittYXhOdW1URERGcmVxcwkJCQlJTlRFR0VSIDo6PSAgOAorbWF4Tm9PZk1lYXMJCQkJCUlOVEVHRVIgOjo9IDE2CittYXhPdGhlclJBVAkJCQkJSU5URUdFUiA6Oj0gMTUKK21heE90aGVyUkFULTE2CQkJCUlOVEVHRVIgOjo9IDE2CittYXhQYWdlMQkJCQkJSU5URUdFUiA6Oj0gOAorbWF4UENQQ0gtQVBzaWcJCQkJSU5URUdFUiA6Oj0gMTYKK21heFBDUENILUFQc3ViQ2gJCQlJTlRFR0VSIDo6PSAxMgorbWF4UENQQ0gtQ0RzaWcJCQkJSU5URUdFUiA6Oj0gMTYKK21heFBDUENILUNEc3ViQ2gJCQlJTlRFR0VSIDo6PSAxMgorbWF4UENQQ0gtU0YJCQkJCUlOVEVHRVIgOjo9IDcKK21heFBDUENIcwkJCQkJSU5URUdFUiA6Oj0gNjQKK21heFBEQ1BBbGdvVHlwZQkJCQlJTlRFR0VSIDo6PSA4CittYXhQRFNDSAkJCQkJSU5URUdFUiA6Oj0gOAorbWF4UERTQ0gtVEZDSWdyb3VwcwkgCQlJTlRFR0VSIDo6PSAyNTYKK21heFBSQUNICQkJCQlJTlRFR0VSIDo6PSAxNgorbWF4UFJBQ0gtRlBBQ0gJCQkJSU5URUdFUiA6Oj0gOAorbWF4UHJlZGVmQ29uZmlnCQkJCUlOVEVHRVIgOjo9IDE2CittYXhQVVNDSAkJCQkJSU5URUdFUiA6Oj0gOAorbWF4UXVldWVJRHMJCQkJCUlOVEVHRVIgOjo9IDgKK21heFJBQnNldHVwCQkJCQlJTlRFR0VSIDo6PSAxNgorbWF4UkFUCQkJCQkJSU5URUdFUiA6Oj0gMTYKK21heFJCCQkJCQkJSU5URUdFUiA6Oj0gMzIKK21heFJCYWxsUkFCcwkJCQlJTlRFR0VSIDo6PSAyNworbWF4UkJNdXhPcHRpb25zCQkJCUlOVEVHRVIgOjo9IDgKK21heFJCcGVyUkFCCQkJCQlJTlRFR0VSIDo6PSA4CittYXhSQnBlclRyQ2gJCQkJSU5URUdFUiA6Oj0gMTYKK21heFJlcG9ydGVkR1NNQ2VsbHMJCQlJTlRFR0VSIDo6PSA4CittYXhSTAkJCQkJCUlOVEVHRVIgOjo9IDgKK21heFJMLTEJCQkJCQlJTlRFR0VSIDo6PSA3CittYXhSTENQRFVzaXplUGVyTG9nQ2hhbgkJSU5URUdFUiA6Oj0gMzIKK21heFJGQzMwOTUtQ0lECQkJCUlOVEVHRVIgOjo9IDE2Mzg0CittYXhST0hDLVBhY2tldFNpemVzLXI0CQlJTlRFR0VSIDo6PSAxNgorbWF4Uk9IQy1Qcm9maWxlLXI0CQkJSU5URUdFUiA6Oj0gOAorbWF4U2F0CQkJCQkJSU5URUdFUiA6Oj0gMTYKK21heFNDQ1BDSAkJCQkJSU5URUdFUiA6Oj0gMTYKK21heFNJQgkJCQkJCUlOVEVHRVIgOjo9IDMyCittYXhTSUItRkFDSAkJCQkJSU5URUdFUiA6Oj0gOAorbWF4U0lCcGVyTXNnCQkJCUlOVEVHRVIgOjo9IDE2CittYXhTUkJzZXR1cAkJCQkJSU5URUdFUiA6Oj0gOAorbWF4U3lzdGVtQ2FwYWJpbGl0eQkJCUlOVEVHRVIgOjo9IDE2CittYXhURgkJCQkJCUlOVEVHRVIgOjo9IDMyCittYXhURi1DUENICQkJCQlJTlRFR0VSIDo6PSAxNgorbWF4VEZDCQkJCQkJSU5URUdFUiA6Oj0gMTAyNAorbWF4VEZDc3ViCQkJCQlJTlRFR0VSIDo6PSAxMDI0CittYXhURkNJLTItQ29tYnMJIAkJCUlOVEVHRVIgOjo9IDUxMgorbWF4VEdQUwkJCQkJCUlOVEVHRVIgOjo9IDYKK21heFRyQ0gJCQkJCQlJTlRFR0VSIDo6PSAzMgorLS0gbWF4VHJDSHByZWNvbmYgc2hvdWxkIGJlIDE2IGJ1dCBoYXMgYmVlbiBzZXQgdG8gMzIgZm9yIGNvbXBhdGliaWxpdHkKK21heFRyQ0hwcmVjb25mCQkJCUlOVEVHRVIgOjo9IDMyCittYXhUUwkJCQkJCUlOVEVHRVIgOjo9IDE0CittYXhUUy0xCQkJCQkJSU5URUdFUiA6Oj0gMTMgCittYXhUUy0yCQkJCQkJSU5URUdFUiA6Oj0gMTIKK21heFRTLUxDUgkJCQkJSU5URUdFUiA6Oj0gNgorbWF4VFMtTENSLTEJCQkJCUlOVEVHRVIgOjo9IDUgCittYXhVUkEJCQkJCQlJTlRFR0VSIDo6PSA4CittYXhVUk5USS1Hcm91cAkJCQlJTlRFR0VSIDo6PSA4CisKK0VORAorCitJbnRlcm5vZGUtZGVmaW5pdGlvbnMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9CisKK0JFR0lOCisKK0lNUE9SVFMKKworCUhhbmRvdmVyVG9VVFJBTkNvbW1hbmQsCisJTWVhc3VyZW1lbnRSZXBvcnQsCisJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLAorCVJhZGlvQmVhcmVyUmVsZWFzZSwKKwlSYWRpb0JlYXJlclNldHVwLAorCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQtSUVzLAorCVJSQy1GYWlsdXJlSW5mbywKKwlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXIzLWFkZC1leHQtSUVzCitGUk9NIFBEVS1kZWZpbml0aW9ucworCistLSBDb3JlIE5ldHdvcmsgSUVzIDoKKwlDTi1Eb21haW5JZGVudGl0eSwKKwlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3QsCisJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbCwKKwlDTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCwKKwlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAorLS0gVVRSQU4gTW9iaWxpdHkgSUVzIDoKKwlDZWxsSWRlbnRpdHksCisJVVJBLUlkZW50aXR5LAorLS0gVXNlciBFcXVpcG1lbnQgSUVzIDoKKwlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciwKKwlDLVJOVEksCisJQ2hpcFJhdGVDYXBhYmlsaXR5LAorCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZywKKwlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQsCisJREwtUGh5c0NoQ2FwYWJpbGl0eVRERCwKKwlETC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNCwKKwlHU00tTWVhc3VyZW1lbnRzLAorCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKKwlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwlNYXhIY0NvbnRleHRTcGFjZSwKKwlNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcCwKKwlNYXhpbXVtUkxDLVdpbmRvd1NpemUsCisJTWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQsCisJTWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQsCisJTWF4UGh5c0NoUGVyRnJhbWUsCisJTWF4UGh5c0NoUGVyU3ViRnJhbWUtcjQsCisJTWF4UGh5c0NoUGVyVFMsCisJTWF4Uk9IQy1Db250ZXh0U2Vzc2lvbnMtcjQsCisJTWF4VFMtUGVyRnJhbWUsCisJTWF4VFMtUGVyU3ViRnJhbWUtcjQsCisJTWluaW11bVNGLURMLAorCU11bHRpTW9kZUNhcGFiaWxpdHksCisJTXVsdGlSQVQtQ2FwYWJpbGl0eSwKKwlOZXR3b3JrQXNzaXN0ZWRHUFMtU3VwcG9ydGVkLAorCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktZWRjaC1yNiwKKwlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI3LAorCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCisJUkYtQ2FwYWJpbGl0eS1yNywKKwlSTEMtQ2FwYWJpbGl0eSwKKwlSUkMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyLAorCVNlY3VyaXR5Q2FwYWJpbGl0eSwKKwlTaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1SZWNlcHRpb24sCisJU1RBUlRMaXN0LAorCVNUQVJUU2luZ2xlLAorCVNUQVJULVZhbHVlLAorCVN1cHBvcnRPZkRlZGljYXRlZFBpbG90c0ZvckNoRXN0aW1hdGlvbiwKKwlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKKwlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbiwKKwlVLVJOVEksCisJVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMsCisJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHksCisJVUUtUG93ZXJDbGFzc0V4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0MiwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QtZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dCwKKwlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRELAorCVVMLVBoeXNDaENhcGFiaWxpdHlGREQtcjYsCisJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERCwKKwlVTC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNCwKKy0tIFJhZGlvIEJlYXJlciBJRXMgOgorCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0LAorCVByZWRlZmluZWRDb25maWdWYWx1ZVRhZywKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSwKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKwlSQi1JZGVudGl0eSwKKwlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1LAorCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKy0tIFRyYW5zcG9ydCBDaGFubmVsIElFcyA6CisJQ1BDSC1TZXRJRCwKKwlETC1Db21tb25UcmFuc0NoSW5mbywKKwlETC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0LAorCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSwKKwlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdCwKKwlVTC1Db21tb25UcmFuc0NoSW5mbywKKwlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2LAorLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMgOgorCVByaW1hcnlDUElDSC1JbmZvLAorCVRQQy1Db21iaW5hdGlvbkluZGV4LAorCVNjcmFtYmxpbmdDb2RlQ2hhbmdlLAorCVRHQ0ZOLAorCVRHUFNJLAorCVRHUFMtQ29uZmlndXJhdGlvblBhcmFtcywKKy0tIE1lYXN1cmVtZW50IElFcyA6CisJRXZlbnQxai1yNiwKKwlIeXN0ZXJlc2lzLAorCUludGVyLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAorCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAorCUludHJhRnJlcUV2ZW50LTFkLXI1LAorCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1LAorCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uLAorCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcSwKKwlNZWFzdXJlbWVudElkZW50aXR5LAorCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZSwKKwlNZWFzdXJlbWVudFR5cGUsCisJTWVhc3VyZW1lbnRUeXBlLXI0LAorCU1lYXN1cmVtZW50VHlwZS1yNiwKKwlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0LAorCVBvc2l0aW9uRXN0aW1hdGUsCisJUmVwb3J0aW5nQ2VsbFN0YXR1cywKKwlUaW1lVG9UcmlnZ2VyLAorLS0gTUJNUyBJRXMgOgorCU1CTVMtSm9pbmVkSW5mb3JtYXRpb24tcjYsCistLSBPdGhlciBJRXMgOgorCUdFUkFOSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LAorCUdTTS1NUy1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCisJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdCwKKwlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCwKKwlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dCwKKwlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZSwKKwlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQKKworRlJPTSBJbmZvcm1hdGlvbkVsZW1lbnRzCisKKwltYXhDTmRvbWFpbnMsCisJbWF4Tm9PZk1lYXMsCisKKwltYXhSQiwKKwltYXhSQmFsbFJBQnMsCisJbWF4UkZDMzA5NS1DSUQsCisJbWF4U1JCc2V0dXAsCisJbWF4UkwsCisJbWF4VEdQUworRlJPTSBDb25zdGFudC1kZWZpbml0aW9ucworOworCistLSBQYXJ0IDE6IENsYXNzIGRlZmluaXRpb25zIHNpbWlsYXIgdG8gd2hhdCBoYXMgYmVlbiBkZWZpbmVkIGluIDExLjEgZm9yIFJSQyBtZXNzYWdlcworLS0gSW5mb3JtYXRpb24gdGhhdCBpcyB0cmFuZmVycmVkIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhbmQgYWNyb3NzIHRoZSBzYW1lIHBhdGggaXMgZ3JvdXBlZAorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgaW5mb3JtYXRpb24sIHRvIHRhcmdldCBSTkMKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tIFJSQyBJbmZvcm1hdGlvbiB0byB0YXJnZXQgUk5DIHNlbnQgZWl0aGVyIGZyb20gc291cmNlIFJOQyBvciBmcm9tIGFub3RoZXIgUkFUCisKK1RvVGFyZ2V0Uk5DLUNvbnRhaW5lciA6Oj0gQ0hPSUNFIHsKKwlpbnRlclJBVEhhbmRvdmVySW5mbwkJCQlJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy1yMywKKwlzcm5jUmVsb2NhdGlvbgkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tcjMsCisJcmZjMzA5NS1Db250ZXh0SW5mbwkJCQkJUkZDMzA5NS1Db250ZXh0SW5mby1yNSwKKwlleHRlbnNpb24JCQkJCQkJTlVMTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgaW5mb3JtYXRpb24sIHRhcmdldCBSTkMgdG8gc291cmNlIFJOQworLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisKK1RhcmdldFJOQy1Ub1NvdXJjZVJOQy1Db250YWluZXIgOjo9IENIT0lDRSB7CisJcmFkaW9CZWFyZXJTZXR1cAkJCQkJUmFkaW9CZWFyZXJTZXR1cCwKKwlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbgkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLAorCXJhZGlvQmVhcmVyUmVsZWFzZQkJCQkJUmFkaW9CZWFyZXJSZWxlYXNlLAorCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24JCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCisJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCisJcnJjLUZhaWx1cmVJbmZvCQkJCQkJUlJDLUZhaWx1cmVJbmZvLAorCS0tIElFIGRsLURDQ0htZXNzYWdlIGNvbnNpc3RzIG9mIGFuIG9jdGV0IHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZSBJRSBETC1EQ0NILU1lc3NhZ2UKKwlkTC1EQ0NIbWVzc2FnZQkJCQkJCU9DVEVUIFNUUklORywKKwlleHRlbnNpb24JCQkJCQkJTlVMTAorfQorCistLSBQYXJ0IDI6IENvbnRhaW5lciBkZWZpbml0aW9ucywgc2ltaWxhciB0byB0aGUgUERVIGRlZmluaXRpb25zIGluIDExLjIgZm9yIFJSQyBtZXNzYWdlcworLS0gSW4gYWxwaGFiZXRpY2FsIG9yZGVyCisKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gSGFuZG92ZXIgdG8gVVRSQU4gaW5mb3JtYXRpb24KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtcjMgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gSUUgSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtcjMtSUVzIGFsc28gCisJCS0tIGluY2x1ZGVzIG5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCWludGVyUkFUSGFuZG92ZXJJbmZvLXIzCQkJSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtcjMtSUVzLAorCQl2MzkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlpbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12MzkwZXh0CisJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtdjM5MGV4dC1JRXMsCisJCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KKwkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlpbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12NjkwZXh0CisJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtdjY5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JCU9QVElPTkFMCisJfSwKKwljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtcjMtSUVzIDo6PQkJU0VRVUVOQ0UgeworCQktLSBUaGUgb3JkZXIgb2YgdGhlIElFcyBtYXkgbm90IHJlZmxlY3QgdGhlIHRhYnVsYXIgZm9ybWF0CisJCS0tICBidXQgaGFzIGJlZW4gY2hvc2VuIHRvIHNpbXBsaWZ5IHRoZSBoYW5kbGluZyBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIEJTQworCS0tCU90aGVyIElFcworCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHkJCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QJT1BUSU9OQUwsCisJCS0tIGludGVyUkFUSGFuZG92ZXJJbmZvLCBPY3RldCBzdHJpbmcgaXMgdXNlZCB0byBvYnRhaW4gOCBiaXQgbGVuZ3RoIGZpZWxkIHByaW9yIHRvIAorCQktLSBhY3R1YWwgaW5mb3JtYXRpb24uICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBCU1MgdG8gdHJhbnNwYXJlbnRseSBoYW5kbGUgaW5mb3JtYXRpb24KKwkJLS0gcmVjZWl2ZWQgdmlhIEdTTSBhaXIgaW50ZXJmYWNlIGV2ZW4gd2hlbiBpdCBpbmNsdWRlcyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucy4KKwkJLS0gVGhlIG9jdGV0IHN0cmluZyBzaGFsbCBpbmNsdWRlIHRoZSBJbnRlclJBVEhhbmRvdmVySW5mbyBpbmZvcm1hdGlvbgorCQktLSBUaGUgQlNTIGNhbiByZS11c2UgdGhlIDQ0LjAxOCBsZW5ndGggZmllbGQgcmVjZWl2ZWQgZnJvbSB0aGUgTVMKKwkJaW50ZXJSQVRIYW5kb3ZlckluZm8JCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDAuLjI1NSkpCit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXYzOTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCQlPUFRJT05BTAorfQorCitJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIE90aGVyIElFcworCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjY5MGV4dAlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dAlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSRkMzMDk1IGNvbnRleHQsIHNvdXJjZSBSTkMgdG8gdGFyZ2V0IFJOQworLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSRkMzMDk1LUNvbnRleHRJbmZvLXI1IDo6PSBDSE9JQ0UgeworCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCXJGQzMwOTUtQ29udGV4dEluZm9MaXN0LXI1CQlSRkMzMDk1LUNvbnRleHRJbmZvTGlzdC1yNSwKKwkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJfSwKKwljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KK30KKworUkZDMzA5NS1Db250ZXh0SW5mb0xpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKKwkJCQkJCQkJCQlSRkMzMDk1LUNvbnRleHRJbmZvCisKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU1JOQyBSZWxvY2F0aW9uIGluZm9ybWF0aW9uCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NSTkMtUmVsb2NhdGlvbkluZm8tcjMgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJc1JOQy1SZWxvY2F0aW9uSW5mby1yMwkJCVNSTkMtUmVsb2NhdGlvbkluZm8tcjMtSUVzLAorCQl2MzgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12MzgwZXh0CVNSTkMtUmVsb2NhdGlvbkluZm8tdjM4MGV4dC1JRXMsCisJCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KKwkJCXYzOTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12MzkwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12MzkwZXh0LUlFcywKKwkJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXYzYTBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXYzYTBleHQtSUVzLAorCQkJCQl2M2IwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2IwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2IwZXh0LUlFcywKKwkJCQkJCXYzYzBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2MwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2MwZXh0LUlFcywKKwkJCQkJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2QwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2QwZXh0LUlFcywKKwkJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjMtYWRkLWV4dAkJQklUIFNUUklORworCQkJCQkJCQkJCQkJKENPTlRBSU5JTkcJU1JOQy1SZWxvY2F0aW9uSW5mby12M2gwZXh0LUlFcykJCU9QVElPTkFMLAorCQkJCQkJCQl2M2cwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2cwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2cwZXh0LUlFcywKKwkJCQkJCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NGIwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NGIwZXh0LUlFcywKKwkJCQkJCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1OTBleHQKKwkJCQkJCQkJCQkJCQkJCQkJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1OTBleHQtSUVzLAorCQkJCQkJCQkJCQl2NWEwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWEwZXh0CisJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWEwZXh0LUlFcywKKwkJCQkJCQkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWIwZXh0CisJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWIwZXh0LUlFcywKKwkJCQkJCQkJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQKKwkJCQkJCQkJCQkJCQkJCQkJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQtSUVzLAorCQkJCQkJCQkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY2OTBleHQKKwkJCQkJCQkJCQkJCQkJCQkJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY2OTBleHQtSUVzLAorCQkJCQkJCQkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucyBTRVFVRU5DRSB7CisJCQkJCQkJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0CisJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0LUlFcywKKwkJCQkJCQkJCQkJCQkJCQktLSBSZXNlcnZlZCBmb3IgZnV0dXJlIG5vbiBjcml0aWNhbCBleHRlbnNpb24KKwkJCQkJCQkJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCQkJCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCX0JCU9QVElPTkFMCisJCQkJCX0JCU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JCU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlDSE9JQ0UgeworCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc1JOQy1SZWxvY2F0aW9uSW5mby1yNAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tcjQtSUVzLAorCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjRkMGV4dAkJU1JOQy1SZWxvY2F0aW9uSW5mby12NGQwZXh0LUlFcywKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0LUlFcywKKwkJCQkJdjVhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dC1JRXMsCisJCQkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dC1JRXMsCisJCQkJCQkJdjVjME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0LUlFcywKKwkJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjY5MGV4dAkJU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcywKKwkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0CisJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dC1JRXMsCisJCQkJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0sCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI1CQkJU1JOQy1SZWxvY2F0aW9uSW5mby1yNS1JRXMsCisJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby1yNS1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY1YTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWEwZXh0CQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQtSUVzLAorCQkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dC1JRXMsCisJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVjMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjVjMGV4dC1JRXMsCisJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcywKKwkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY3eHlleHQKKwkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0LUlFcywKKwkJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI2CQkJU1JOQy1SZWxvY2F0aW9uSW5mby1yNi1JRXMsCisJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjYtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0CQlTUk5DLVJlbG9jYXRpb25JbmZvLXY3eHlleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJU0VRVUVOQ0Uge30KKwkJCX0KKwkJfQorCX0KK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby1yMy1JRXMgOjo9CQlTRVFVRU5DRSB7CisJLS0gTm9uLVJSQyBJRXMKKwkJc3RhdGVPZlJSQwkJCQkJCVN0YXRlT2ZSUkMsCisJCXN0YXRlT2ZSUkMtUHJvY2VkdXJlCQkJU3RhdGVPZlJSQy1Qcm9jZWR1cmUsCisJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCisJLS0gSWYgdGhlIGV4dGVuc2lvbiB2MzgwIGlzIGluY2x1ZGVkIHVzZSB0aGUgZXh0ZW5zaW9uIGZvciB0aGUgY2lwaGVyaW5nIHN0YXR1cyBwZXIgQ04gZG9tYWluCisJCWNpcGhlcmluZ1N0YXR1cwkJCQkJQ2lwaGVyaW5nU3RhdHVzLAorCQktLSBJZiBjaXBoZXJpbmcgc3RhdHVzIGlzIHN0YXJ0ZWQgYW5kIHRoZSBJRSBsYXRlc3RDb25maWd1cmVkQ04tRG9tYWluIHNob3VsZCBiZSBpbmNsdWRlZCwKKwkJLS0gdGhlIElFIGNuLURvbWFpbklkZW50aXR5IChpbiBTUk5DLVJlbG9jYXRpb25JbmZvLXYzODBleHQtSUVzKSBzaGFsbCBiZSB1c2VkIGluc3RlYWQuCisJCWNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJQ2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiBvY2N1cnJlbmNlIGluIHRoZSBJRSBjaXBoZXJpbmdJbmZvUGVyUkItTGlzdCBpcyB0aGUKKwkJLS0gc2FtZSBhcyB0aGUgUkJzIGluIFNSQi1JbmZvcm1hdGlvblNldHVwTGlzdCBpbiBSQUItSW5mb3JtYXRpb25TZXR1cExpc3QuCisJCS0tIFRoZSBzaWduYWxsaW5nIFJCcyBhcmUgc3VwcG9zZWQgdG8gYmUgbGlzdGVkCisJCS0tIGZpcnN0LiBPbmx5IFVNIGFuZCBBTSBSQnMgdGhhdCBhcmUgY2lwaGVyZWQgYXJlIGxpc3RlZCBoZXJlCisJCWNpcGhlcmluZ0luZm9QZXJSQi1MaXN0CQkJQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QJCQkJT1BUSU9OQUwsCisJCWNvdW50LUMtTGlzdAkJCQkJQ09VTlQtQy1MaXN0CQkJCQkJT1BUSU9OQUwsCisJCWludGVncml0eVByb3RlY3Rpb25TdGF0dXMJCUludGVncml0eVByb3RlY3Rpb25TdGF0dXMsCisJCS0tIEluIHRoZSBJRSBzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbywgdGhlIGZpcnN0IGluZm9ybWF0aW9uIGxpc3RlZCBjb3JyZXNwb25kcyB0bworICAgICAgLS0gc2lnbmFsbGluZyByYWRpbyBiZWFyZXIgUkIwIGFuZCBhZnRlciB0aGUgb3JkZXIgb2Ygb2NjdXJyZW5jZSBpcyB0aGUgc2FtZSBhcyB0aGUgU1JCcyBpbgorCSAtLSBTUkItSW5mb3JtYXRpb25TZXR1cExpc3QKKwkJLS0gVGhlIHRhcmdldCBSTkMgbWF5IGlnbm9yZSB0aGUgSUUgc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8gaWYgdGhlCisJCS0tIElFIGludGVncml0eVByb3RlY3Rpb25TdGF0dXMgaGFzIHRoZSB2YWx1ZSAibm90IHN0YXJ0ZWQiLgorCQlzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbwlTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mb0xpc3QsCisJCWltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJSW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwkJT1BUSU9OQUwsCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCWMtUk5USQkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSwKKwkJdWUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQlVRS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0CU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAorCQljbi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQlvbmdvaW5nTWVhc1JlcExpc3QJCQkJT25nb2luZ01lYXNSZXBMaXN0CQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0CQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdCwKKwkJc3JiLUluZm9ybWF0aW9uTGlzdAkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJCXJhYi1JbmZvcm1hdGlvbkxpc3QJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCXVsLVRyYW5zQ2hJbmZvTGlzdAkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQlkbC1UcmFuc0NoSW5mb0xpc3QJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CisJCW1lYXN1cmVtZW50UmVwb3J0CQkJCU1lYXN1cmVtZW50UmVwb3J0CQkJCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzODBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCisJCS0tIEluIHRoZSBTUk5DLVJlbG9jYXRpb25JbmZvLXIzLUlFcywgdGhlIElFICdjbi1Eb21haW5JZGVudGl0eScgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIAorCQktLSBJRSAnTGF0ZXN0IGNvbmZpZ3VyZWQgQ04gZG9tYWluJyBpbiB0aGUgdGFidWxhci4KKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCQljaXBoZXJpbmdTdGF0dXNMaXN0CQkJCQlDaXBoZXJpbmdTdGF0dXNMaXN0Cit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjM5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0LXYzOTBleHQJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0LXYzOTBleHQJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0CQlPUFRJT05BTCwKKwkJZGwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0CQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQsCisJCWZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWNpcGhlcmluZ0luZm9Gb3JTUkIxLXYzYTBleHQJCUNpcGhlcmluZ0luZm9QZXJSQi1MaXN0LXYzYTBleHQsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CQlPUFRJT05BTCwKKwkJLS0gY24tZG9tYWluIGlkZW50aXR5IGZvciBJRSBzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYTBleHQgaXMgc3BlY2lmaWVkCisJCS0tIGluIHN1YnNlcXVlbnQgZXh0ZW5zaW9uIChTUk5DLVJlbG9jYXRpb25JbmZvLXYzYjBleHQtSUVzKQorCQlzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYTBleHQJCVNUQVJULVZhbHVlCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjNiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJLS0gY24tZG9tYWluIGlkZW50aXR5IGZvciBJRSBzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYTBleHQgaW5jbHVkZWQgaW4gcHJldmlvdXMgZXh0ZW5zaW9uCisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQktLSB0aGUgSUUgc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2IwZXh0IGNvbnRhaW5zIHRoZSBzdGFydCB2YWx1ZXMgZm9yIGVhY2ggQ04gRG9tYWluLiBUaGUgCisJCS0tIHZhbHVlIG9mIHN0YXJ0IGluZGljYXRlZCBieSB0aGUgSUUgc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2EwZXh0IHNob3VsZCBiZSBzZXQgdG8gdGhlCisJCS0tIHNhbWUgdmFsdWUgYXMgdGhlIHN0YXJ0LVZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbi1Eb21haW5JZGVudGl0eSBpbiB0aGUgSUUgCisJCS0tIHN0YXJ0VmFsdWVGb3JDaXBoZXJpbmctdjNiMGV4dAorCQlzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYjBleHQJCVNUQVJUTGlzdDIJCQkJCQkJCU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjNjMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJLS0gSUUgcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UgaW5jbHVkZXMgdGhlIGlkZW50aXR5IG9mIHRoZSBSQiB1c2VkIGJ5IHRoZSBzb3VyY2UgU1JOQworCQktLSB0byBzZW5kIHRoZSBtZXNzYWdlIGNvbnRhaW5lZCBpbiB0aGUgSUUg0lRhcmdldFJOQy1Ub1NvdXJjZVJOQy1Db250YWluZXLTLgorCQktLSBPbmx5IGluY2x1ZGVkIGlmIHR5cGUgaXMg0lVFIGludm9sdmVk0worCQlyYi1JZGVudGl0eUZvckhPTWVzc2FnZQkJCQlSQi1JZGVudGl0eSAgCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwsCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzZzBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzaDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXRwYy1Db21iaW5hdGlvbkluZm9MaXN0CQkJVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QJCU9QVElPTkFMLAorCQlub25Dcml0aWNhbEV4dGVuc2lvbgkJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXY0ZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXRwYy1Db21iaW5hdGlvbkluZm9MaXN0CQlUUEMtQ29tYmluYXRpb25JbmZvTGlzdAkJT1BUSU9OQUwKK30KKworVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCVRQQy1Db21iaW5hdGlvbi1JbmZvCisKK1NUQVJUTGlzdDIgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDIuLm1heENOZG9tYWlucykpIE9GCisJCQkJCQkJCQkJU1RBUlRTaW5nbGUKKworU1JOQy1SZWxvY2F0aW9uSW5mby12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAkJT1BUSU9OQUwsCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eS12NTkwZXh0CUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJc3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvCQlTdG9yZWRDb21wcmVzc2VkTW9kZUluZm8JT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12NWIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJSW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0CQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12N3h5ZXh0CQlPUFRJT05BTAorfQorCitDaXBoZXJpbmdJbmZvUGVyUkItTGlzdC12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CisJCWRsLVVNLVNOCQkJCQkJQklUIFNUUklORyAoU0laRSAoNykpCit9CisKK0NpcGhlcmluZ1N0YXR1c0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENOZG9tYWlucykpIE9GCisJCQkJCQkJCQkJQ2lwaGVyaW5nU3RhdHVzQ05kb21haW4KKworQ2lwaGVyaW5nU3RhdHVzQ05kb21haW4gOjo9CQkJCVNFUVVFTkNFIHsKKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJCWNpcGhlcmluZ1N0YXR1cwkJCQkJQ2lwaGVyaW5nU3RhdHVzCit9CisKK0NvZGVDaGFuZ2VTdGF0dXNMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQlDb2RlQ2hhbmdlU3RhdHVzCisKK0NvZGVDaGFuZ2VTdGF0dXMgOjo9IFNFUVVFTkNFIHsKKwkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQlzY3JhbWJsaW5nQ29kZUNoYW5nZQkJCQlTY3JhbWJsaW5nQ29kZUNoYW5nZQorfQorCitTdG9yZWRDb21wcmVzc2VkTW9kZUluZm8gOjo9IFNFUVVFTkNFIHsKKwkJc3RvcmVkVEdQLVNlcXVlbmNlTGlzdAkJU3RvcmVkVEdQLVNlcXVlbmNlTGlzdCwKKwkJY29kZUNoYW5nZVN0YXR1c0xpc3QJCUNvZGVDaGFuZ2VTdGF0dXNMaXN0CU9QVElPTkFMCit9CisKK1N0b3JlZFRHUC1TZXF1ZW5jZUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRHUFMpKSBPRgorCQkJCQkJCQkJCVN0b3JlZFRHUC1TZXF1ZW5jZQorCitTdG9yZWRUR1AtU2VxdWVuY2UgOjo9CQkJCVNFUVVFTkNFIHsKKwl0Z3BzaQkJCQkJCQkJVEdQU0ksCisJY3VycmVudC10Z3BzLVN0YXR1cwkJCQkJQ0hPSUNFIHsKKwkJYWN0aXZlCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0Z2NmbgkJCQkJCQkJVEdDRk4KKwkJfSwKKwkJaW5hY3RpdmUJCQkJCQkJTlVMTAorCX0sCisJdGdwcy1Db25maWd1cmF0aW9uUGFyYW1zCQkJVEdQUy1Db25maWd1cmF0aW9uUGFyYW1zCQkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby1yNC1JRXMgOjo9CQkJU0VRVUVOQ0UgeworCS0tIE5vbi1SUkMgSUVzCisJCS0tIElFIHJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlIGluY2x1ZGVzIHRoZSBpZGVudGl0eSBvZiB0aGUgUkIgdXNlZCBieSB0aGUgc291cmNlIFNSTkMKKwkJLS0gdG8gc2VuZCB0aGUgbWVzc2FnZSBjb250YWluZWQgaW4gdGhlIElFINJUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVy0y4KKwkJLS0gT25seSBpbmNsdWRlZCBpZiB0eXBlIGlzINJVRSBpbnZvbHZlZNMKKwkJcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UJCQlSQi1JZGVudGl0eQkJCQkJCQlPUFRJT05BTCwKKwkJc3RhdGVPZlJSQwkJCQkJCVN0YXRlT2ZSUkMsCisJCXN0YXRlT2ZSUkMtUHJvY2VkdXJlCQkJU3RhdGVPZlJSQy1Qcm9jZWR1cmUsCisJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCisJCWNpcGhlcmluZ1N0YXR1c0xpc3QJCQkJQ2lwaGVyaW5nU3RhdHVzTGlzdC1yNCwKKwkJbGF0ZXN0Q29uZmlndXJlZENOLURvbWFpbgkJQ04tRG9tYWluSWRlbnRpdHksCisJCWNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJQ2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nCQkJT1BUSU9OQUwsCisJCWNvdW50LUMtTGlzdAkJCQkJQ09VTlQtQy1MaXN0CQkJCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ0luZm9QZXJSQi1MaXN0CQkJQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QtcjQJCQlPUFRJT05BTCwKKwktLSBJbnRlZ3JpdHkgcHJvdGVjdGlvbiByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzCQlJbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzLAorCQktLSBUaGUgdGFyZ2V0IFJOQyBtYXkgaWdub3JlIHRoZSBJRSBzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbyBpZiB0aGUKKwkJLS0gSUUgaW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cyBoYXMgdGhlIHZhbHVlICJub3Qgc3RhcnRlZCIuCisJCXNyYi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvCVNSQi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvTGlzdCwKKwkJaW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwlJbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCQlPUFRJT05BTCwKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdS1STlRJCQkJCQkJCVUtUk5USSwKKwkJYy1STlRJCQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI0LAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdAkJT1BUSU9OQUwsCisJCXVlLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJVUUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQkJT1BUSU9OQUwsCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwsCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0CU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAorCQljbi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQlvbmdvaW5nTWVhc1JlcExpc3QJCQkJT25nb2luZ01lYXNSZXBMaXN0LXI0CQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0LAorCQlzcmItSW5mb3JtYXRpb25MaXN0CQkJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdCwKKwkJcmFiLUluZm9ybWF0aW9uTGlzdAkJCQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQJCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtVHJhbnNDaEluZm9MaXN0CQkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1UcmFuc0NoSW5mb0xpc3QJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCByZXBvcnQKKwkJbWVhc3VyZW1lbnRSZXBvcnQJCQkJTWVhc3VyZW1lbnRSZXBvcnQJCQkJCU9QVElPTkFMLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tcjUtSUVzIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBOb24tUlJDIElFcworCQktLSBJRSByYi1JZGVudGl0eUZvckhPTWVzc2FnZSBpbmNsdWRlcyB0aGUgaWRlbnRpdHkgb2YgdGhlIFJCIHVzZWQgYnkgdGhlIHNvdXJjZSBTUk5DCisJCS0tIHRvIHNlbmQgdGhlIG1lc3NhZ2UgY29udGFpbmVkIGluIHRoZSBJRSDSVGFyZ2V0Uk5DLVRvU291cmNlUk5DLUNvbnRhaW5lctMuCisJCS0tIE9ubHkgaW5jbHVkZWQgaWYgdHlwZSBpcyAiVUUgaW52b2x2ZWQiCisJCXJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCisJCXN0YXRlT2ZSUkMJCQkJCQlTdGF0ZU9mUlJDLAorCQlzdGF0ZU9mUlJDLVByb2NlZHVyZQkJCVN0YXRlT2ZSUkMtUHJvY2VkdXJlLAorCS0tIENpcGhlcmluZyByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCQljaXBoZXJpbmdTdGF0dXNMaXN0CQkJCUNpcGhlcmluZ1N0YXR1c0xpc3QtcjQsCisJCWxhdGVzdENvbmZpZ3VyZWRDTi1Eb21haW4JCUNOLURvbWFpbklkZW50aXR5LAorCQljYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCUNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJCU9QVElPTkFMLAorCQljb3VudC1DLUxpc3QJCQkJCUNPVU5ULUMtTGlzdAkJCQkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdJbmZvUGVyUkItTGlzdAkJCUNpcGhlcmluZ0luZm9QZXJSQi1MaXN0LXI0CQkJT1BUSU9OQUwsCisJLS0gSW50ZWdyaXR5IHByb3RlY3Rpb24gcmVsYXRlZCBpbmZvcm1hdGlvbiBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cwkJSW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cywKKwkJc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8JU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm9MaXN0CU9QVElPTkFMLAorCQlpbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCUltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJCU9QVElPTkFMLAorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCQljLVJOVEkJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjUsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1leHQJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0CQlPUFRJT05BTCwKKwkJdWUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQlVRS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCQlPUFRJT05BTCwKKwkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUKKwkJCQkJCQkJCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwsCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAorCQkJCQkJCQkJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdC1yNQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKKwkJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJb25nb2luZ01lYXNSZXBMaXN0CQkJCU9uZ29pbmdNZWFzUmVwTGlzdC1yNQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0CQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdCwKKwkJc3JiLUluZm9ybWF0aW9uTGlzdAkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCisJCXJhYi1JbmZvcm1hdGlvbkxpc3QJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1CQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLVRyYW5zQ2hJbmZvTGlzdAkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtVHJhbnNDaEluZm9MaXN0CQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5Q0ggSUVzCisJCXRwYy1Db21iaW5hdGlvbkluZm9MaXN0CQkJVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QJCQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CisJCW1lYXN1cmVtZW50UmVwb3J0CQkJCU1lYXN1cmVtZW50UmVwb3J0CQkJCQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXY2OTBleHQtSUVzIDo6PQlTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCS0tIElFIHVlQ2FwYWJpbGl0eUNvbnRhaW5lciBpcyB1c2VkIGZvciB0aGUgdHJhbnNwYXJlbnQgdHJhbnNmZXIgb2YgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbgorCQktLSByZWNlaXZlZCBmcm9tIHRoZSBVRQorCQl1ZUNhcGFiaWxpdHlDb250YWluZXIJCQlCSVQgU1RSSU5HCisJCQkJCQkJCQkJCShDT05UQUlOSU5HIFVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzKQlPUFRJT05BTCwKKwkJLS0gSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyLVJTQyBhbmQgSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyLVVDSSBhcmUgdXNlZCBmb3IgdGhlIAorCQktLSB0cmFuc3BhcmVudCB0cmFuc2ZlciBvZiBjYXBhYmlsaXR5IGluZm9ybWF0aW9uIHJlY2VpdmVkIGZyb20gdGhlIFVFIHRoYXQgd2FzIGludHJvZHVjZWQgCisJCS0tIGluIGEgcmVsZWFzZSBpbmRlcGVuZGVudCBtYW5uZXIsIGkuZS4sIHRyYW5zZmVycmVkIHdpdGhpbiBhIFZMRUMuIFRoZXNlIFVFIGNhcGFiaWxpdGllcyAKKwkJLS0gYXJlIGluY2x1ZGVkIGJvdGggaW4gdGhlIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFIGFuZCB0aGUgVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTiAKKwkJLS0gbWVzc2FnZXMuIE9ubHkgdGhlIFZMRUMgb2Ygb25lIG1lc3NhZ2UgbmVlZHMgdG8gYmUgaW5jbHVkZWQgaS5lLiB0aGUgb25lIGZyb20gdGhlc2UKKwkJLS0gbWVzc2FnZXMgdGhhdCB3YXMgbGFzdCByZWNlaXZlZC4KKwkJLS0gQ2FzZSAxOiBJZiB0aGUgbGFzdCByZWNlaXZlZCBtZXNzYWdlIHdhcyBhIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFIChSU0MpCisJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lci1SU0MJCUJJVCBTVFJJTkcKKwkJCQkJCQkoQ09OVEFJTklORyBSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS1yMy1hZGQtZXh0LUlFcykJT1BUSU9OQUwsCisJCS0tIENhc2UgMjogSWYgdGhlIGxhc3QgcmVjZWl2ZWQgbWVzc2FnZSB3YXMgYSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIChVQ0kpCisJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lci1VQ0kJCUJJVCBTVFJJTkcKKwkJCQkJCQkoQ09OVEFJTklORyBVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcykJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0CQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCByZXBvcnQKKwkJbWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1Kb2luZWRJbmZvcm1hdGlvbgkJCU1CTVMtSm9pbmVkSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2LWV4dAkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby1yNi1JRXMgOjo9CQkJU0VRVUVOQ0UgeworCS0tIE5vbi1SUkMgSUVzCisJCS0tIElFIHJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlIGluY2x1ZGVzIHRoZSBpZGVudGl0eSBvZiB0aGUgUkIgdXNlZCBieSB0aGUgc291cmNlIFNSTkMKKwkJLS0gdG8gc2VuZCB0aGUgbWVzc2FnZSBjb250YWluZWQgaW4gdGhlIElFINJUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVy0y4KKwkJLS0gT25seSBpbmNsdWRlZCBpZiB0eXBlIGlzICJVRSBpbnZvbHZlZCIKKwkJcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UJCQlSQi1JZGVudGl0eQkJCQkJCQlPUFRJT05BTCwKKwkJc3RhdGVPZlJSQwkJCQkJCVN0YXRlT2ZSUkMsCisJCXN0YXRlT2ZSUkMtUHJvY2VkdXJlCQkJU3RhdGVPZlJSQy1Qcm9jZWR1cmUsCisJLS0gQ2lwaGVyaW5nIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCisJCWNpcGhlcmluZ1N0YXR1c0xpc3QJCQkJQ2lwaGVyaW5nU3RhdHVzTGlzdC1yNCwKKwkJbGF0ZXN0Q29uZmlndXJlZENOLURvbWFpbgkJQ04tRG9tYWluSWRlbnRpdHksCisJCWNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJQ2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nCQkJT1BUSU9OQUwsCisJCWNvdW50LUMtTGlzdAkJCQkJQ09VTlQtQy1MaXN0CQkJCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ0luZm9QZXJSQi1MaXN0CQkJQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QtcjQJCQlPUFRJT05BTCwKKwktLSBJbnRlZ3JpdHkgcHJvdGVjdGlvbiByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzCQlJbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzLAorCQlzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbwlTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mb0xpc3QJT1BUSU9OQUwsCisJCWltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJSW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwkJT1BUSU9OQUwsCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCWMtUk5USQkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNiwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QJCU9QVElPTkFMLAorCQl1ZS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCVVFLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJCU9QVElPTkFMLAorCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQorCQkJCQkJCQkJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlPUFRJT05BTCwKKwkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCisJCQkJCQkJCQkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCQlPUFRJT05BTCwKKwkJLS0gSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyIGlzIHVzZWQgZm9yIHRoZSB0cmFuc3BhcmVudCB0cmFuc2ZlciBvZiBjYXBhYmlsaXR5IGluZm9ybWF0aW9uCisJCS0tIHJlY2VpdmVkIGZyb20gdGhlIFVFCisJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lcgkJCUJJVCBTVFJJTkcKKwkJCQkJCQkJCQkJKENPTlRBSU5JTkcgVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMpCU9QVElPTkFMLAorCQktLSBJRSB1ZUNhcGFiaWxpdHlDb250YWluZXItUlNDIGFuZCBJRSB1ZUNhcGFiaWxpdHlDb250YWluZXItVUNJIGFyZSB1c2VkIGZvciB0aGUgCisJCS0tIHRyYW5zcGFyZW50IHRyYW5zZmVyIG9mIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24gcmVjZWl2ZWQgZnJvbSB0aGUgVUUgdGhhdCB3YXMgaW50cm9kdWNlZCAKKwkJLS0gaW4gYSByZWxlYXNlIGluZGVwZW5kZW50IG1hbm5lciwgaS5lLiwgdHJhbnNmZXJyZWQgd2l0aGluIGEgVkxFQy4gVGhlc2UgVUUgY2FwYWJpbGl0aWVzIAorCQktLSBhcmUgaW5jbHVkZWQgYm90aCBpbiB0aGUgUlJDIENPTk5FQ1RJT04gU0VUVVAgQ09NUExFVEUgYW5kIHRoZSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIAorCQktLSBtZXNzYWdlcy4gT25seSB0aGUgVkxFQyBvZiBvbmUgbWVzc2FnZSBuZWVkcyB0byBiZSBpbmNsdWRlZCBpLmUuIHRoZSBvbmUgZnJvbSB0aGVzZQorCQktLSBtZXNzYWdlcyB0aGF0IHdhcyBsYXN0IHJlY2VpdmVkLgorCQktLSBDYXNlIDE6IElmIHRoZSBsYXN0IHJlY2VpdmVkIG1lc3NhZ2Ugd2FzIGEgUlJDIENPTk5FQ1RJT04gU0VUVVAgQ09NUExFVEUgKFJTQykKKwkJdWVDYXBhYmlsaXR5Q29udGFpbmVyLVJTQwkJQklUIFNUUklORworCQkJCQkJCShDT05UQUlOSU5HIFJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQtSUVzKQlPUFRJT05BTCwKKwkJLS0gQ2FzZSAyOiBJZiB0aGUgbGFzdCByZWNlaXZlZCBtZXNzYWdlIHdhcyBhIFVFIENBUEFCSUxJVFkgSU5GT1JNQVRJT04gKFVDSSkKKwkJdWVDYXBhYmlsaXR5Q29udGFpbmVyLVVDSQkJQklUIFNUUklORworCQkJCQkJCShDT05UQUlOSU5HIFVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXIzLWFkZC1leHQtSUVzKQkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdC1yNQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKKwkJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJb25nb2luZ01lYXNSZXBMaXN0CQkJCU9uZ29pbmdNZWFzUmVwTGlzdC1yNgkJCQlPUFRJT05BTCwKKwkJaW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCisJCXNyYi1JbmZvcm1hdGlvbkxpc3QJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LAorCQlyYWItSW5mb3JtYXRpb25MaXN0CQkJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1UcmFuc0NoSW5mb0xpc3QJCQkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtVHJhbnNDaEluZm9MaXN0CQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5Q0ggSUVzCisJCXRwYy1Db21iaW5hdGlvbkluZm9MaXN0CQkJVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QJCQkJT1BUSU9OQUwsCisJCXN0b3JlZENvbXByZXNzZWRNb2RlSW5mbwkJU3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvCQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CisJCW1lYXN1cmVtZW50UmVwb3J0CQkJCUJJVCBTVFJJTkcKKwkJCQkJCQkoQ09OVEFJTklORyBNZWFzdXJlbWVudFJlcG9ydCkJCQkJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyCQkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtSm9pbmVkSW5mb3JtYXRpb24JCQlNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwKK30KKworLS0gSUUgZGVmaW5pdGlvbnMKKworQ2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nIDo6PQkJU0VRVUVOQ0UgeworCWNlbGwtSWQJCQkJCQkJCUNlbGxJZGVudGl0eSwKKwlzZm4JCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KQorfQorCitDaXBoZXJpbmdJbmZvUGVyUkIgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1IRk4JCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwLi4yNSkpLAorCXVsLUhGTgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjAuLjI1KSkKK30KKworQ2lwaGVyaW5nSW5mb1BlclJCLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlkbC1IRk4JCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwLi4yNSkpLAorCWRsLVVNLVNOCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDcpKSAJCQkJT1BUSU9OQUwsCisJdWwtSEZOCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMC4uMjUpKQorfQorCistLSBUQUJVTEFSOiBDaXBoZXJpbmdJbmZvUGVyUkItTGlzdCwgbXVsdGlwbGljaXR5IHZhbHVlIG51bWJlck9mUmFkaW9CZWFyZXJzIAorLS0gaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBtYXhSQi4KK0NpcGhlcmluZ0luZm9QZXJSQi1MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCisJCQkJCQkJCQkJQ2lwaGVyaW5nSW5mb1BlclJCCisKK0NpcGhlcmluZ0luZm9QZXJSQi1MaXN0LXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlDaXBoZXJpbmdJbmZvUGVyUkItcjQKKworCitDaXBoZXJpbmdTdGF0dXMgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzdGFydGVkLCBub3RTdGFydGVkIH0KKworQ2lwaGVyaW5nU3RhdHVzTGlzdC1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlDaXBoZXJpbmdTdGF0dXNDTmRvbWFpbi1yNAorCitDaXBoZXJpbmdTdGF0dXNDTmRvbWFpbi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJCWNpcGhlcmluZ1N0YXR1cwkJCQkJQ2lwaGVyaW5nU3RhdHVzLAorCQlzdGFydC1WYWx1ZQkJCQkJCVNUQVJULVZhbHVlCit9CisKK0NOLURvbWFpbkluZm9ybWF0aW9uLXYzOTBleHQgOjo9CQlTRVFVRU5DRSB7CisJY24tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCQkJQ04tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQKK30KKworQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0LXYzOTBleHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCUNOLURvbWFpbkluZm9ybWF0aW9uLXYzOTBleHQKKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1yNCA6Oj0JU0VRVUVOQ0UgeworCWZkZC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4sCisJLS0gVEFCVUxBUjogVGhlIElFcyB0ZGQtTWVhc3VyZW1lbnRzLCBnc20tTWVhc3VyZW1lbnRzIGFuZCBtdWx0aUNhcnJpZXJNZWFzdXJlbWVudHMKKwktLSBhcmUgbWFkZSBvcHRpb25hbCBzaW5jZSB0aGV5IGFyZSBjb25kaXRpb25hbCBiYXNlZCBvbiBhbm90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnQuCisJLS0gVGhlaXIgYWJzZW5jZSBjb3JyZXNwb25kcyB0byB0aGUgY2FzZSB3aGVyZSB0aGUgY29uZGl0aW9uIGlzIG5vdCB0cnVlLgorCXRkZDM4NC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMLAorCXRkZDEyOC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMLAorCWdzbS1NZWFzdXJlbWVudHMJCQkJCUdTTS1NZWFzdXJlbWVudHMJCQkJCU9QVElPTkFMLAorCW11bHRpQ2Fycmllck1lYXN1cmVtZW50cwkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMCit9CisKK0NPVU5ULUMtTGlzdCA6Oj0JCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlDT1VOVC1DU2luZ2xlCisKK0NPVU5ULUNTaW5nbGUgOjo9CQkJCQkJU0VRVUVOQ0UgeworCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwljb3VudC1DCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpCQkJCit9CisKK0RMLVBoeXNDaENhcGFiaWxpdHlGREQtcjQgOjo9CQlTRVFVRU5DRSB7CisJLS0gVGhlIElFINJtYXhOb0RQQ0gtUERTQ0gtQ29kZXPTIG9ubHkgZ2l2ZXMgaW5mb3JtYXRpb24gb24gdGhlIG1heGltdW0gbnVtYmVyIG9mIERQQ0ggQ29kZXMuCisJbWF4Tm9EUENILVBEU0NILUNvZGVzCQkJCUlOVEVHRVIgKDEuLjgpLAorCW1heE5vUGh5c0NoQml0c1JlY2VpdmVkCQkJCU1heE5vUGh5c0NoQml0c1JlY2VpdmVkLAorCXN1cHBvcnRGb3JTRi01MTIJCQkJCUJPT0xFQU4sCisJLS0gZHVtbXksIGR1bW15MiBhbmQgZHVtbXkzIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwktLSBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJQk9PTEVBTiwKKwlkdW1teTIJCQkJCQkJCVNpbXVsdGFuZW91c1NDQ1BDSC1EUENILVJlY2VwdGlvbiwKKwlkdW1teTMJCQkJCQkJCVN1cHBvcnRPZkRlZGljYXRlZFBpbG90c0ZvckNoRXN0aW1hdGlvbgkJT1BUSU9OQUwKK30KKworREwtUGh5c0NoQ2FwYWJpbGl0eUZERC1yNSA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUaGUgSUUg0m1heE5vRFBDSC1QRFNDSC1Db2Rlc9Mgb25seSBnaXZlcyBpbmZvcm1hdGlvbiBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgRFBDSCBDb2Rlcy4KKwltYXhOb0RQQ0gtUERTQ0gtQ29kZXMJCQkJSU5URUdFUiAoMS4uOCksCisJbWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQJCQkJTWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQsCisJc3VwcG9ydEZvclNGLTUxMgkJCQkJQk9PTEVBTiwKKwktLSBkdW1teSwgZHVteTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCUJPT0xFQU4sCisJZHVtbXkyCQkJCQkJCQlTaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1SZWNlcHRpb24sCisJZHVtbXkzCQkJCQkJCQlTdXBwb3J0T2ZEZWRpY2F0ZWRQaWxvdHNGb3JDaEVzdGltYXRpb24JCU9QVElPTkFMLAorCWZkZC1oc3Bkc2NoCQkJCQkJCUNIT0lDRSB7CisJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CisJCQloc2RzY2gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnkJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKKwkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCQkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teQkJCQkJCQkJQk9PTEVBTiwKKwkJCWR1bW15MgkJCQkJCQkJQk9PTEVBTgorCQl9LAorCQl1bnN1cHBvcnRlZAkJCQkJCQlOVUxMCisJfQorfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5VERELXI1IDo6PQkJU0VRVUVOQ0UgeworCW1heFRTLVBlckZyYW1lCQkJCQkJTWF4VFMtUGVyRnJhbWUsCisJbWF4UGh5c0NoUGVyRnJhbWUJCQkJCU1heFBoeXNDaFBlckZyYW1lLAorCW1pbmltdW1TRgkJCQkJCQlNaW5pbXVtU0YtREwsCisJc3VwcG9ydE9mUERTQ0gJCQkJCQlCT09MRUFOLAorCW1heFBoeXNDaFBlclRTCQkJCQkJTWF4UGh5c0NoUGVyVFMsCisJdGRkMzg0LWhzcGRzY2gJCQkJCQlDSE9JQ0UgeworCQlzdXBwb3J0ZWQJCQkJCQkJSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5LAorCQl1bnN1cHBvcnRlZAkJCQkJCQlOVUxMCisJfQorfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNSA6Oj0JU0VRVUVOQ0UgeworCW1heFRTLVBlclN1YkZyYW1lCQkJCQlNYXhUUy1QZXJTdWJGcmFtZS1yNCwKKwltYXhQaHlzQ2hQZXJGcmFtZQkJCQkJTWF4UGh5c0NoUGVyU3ViRnJhbWUtcjQsCisJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1ETCwKKwlzdXBwb3J0T2ZQRFNDSAkJCQkJCUJPT0xFQU4sCisJbWF4UGh5c0NoUGVyVFMJCQkJCQlNYXhQaHlzQ2hQZXJUUywKKwlzdXBwb3J0T2Y4UFNLCQkJCQkJQk9PTEVBTiwKKwl0ZGQxMjgtaHNwZHNjaAkJCQkJCUNIT0lDRSB7CisJCXN1cHBvcnRlZAkJCQkJCQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJCXVuc3VwcG9ydGVkCQkJCQkJCU5VTEwKKwl9Cit9CisKK0RMLVJGQzMwOTUtQ29udGV4dCA6Oj0JCQkJU0VRVUVOQ0UgeworCXJmYzMwOTUtQ29udGV4dC1JZGVudGl0eQkJCUlOVEVHRVIgKDAuLjE2MzgzKSwKKwlkbC1tb2RlCQkJCQkJCQlFTlVNRVJBVEVEIHt1LCBvLCByfSwKKwlkbC1yZWYtaXIJCQkJCQkJT0NURVQgU1RSSU5HICggU0laRSAoMS4uMzAwMCkpLAorCWRsLXJlZi10aW1lCQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCQlPUFRJT05BTCwKKwlkbC1jdXJyLXRpbWUJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQkJT1BUSU9OQUwsCisJZGwtc3luLW9mZnNldC1pZAkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJT1BUSU9OQUwsCisJZGwtc3luLXNsb3BlLXRzCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAorCWRsLWR5bi1jaGFuZ2VkCQkJCQkJQk9PTEVBTgorfQorCitJbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zIDo6PQlCSVQgU1RSSU5HIChTSVpFICgxLi41MTIpKQorCisKK0ludGVncml0eVByb3RlY3Rpb25TdGF0dXMgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzdGFydGVkLCBub3RTdGFydGVkIH0KKworSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdC1yNSA6Oj0JU0VRVUVOQ0UgeworCWludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0LAorCWdlcmFuSXUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlHRVJBTkl1LVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNi1leHQgOjo9IFNFUVVFTkNFIHsKKwktLSBUaGUgY29udGVudCBvZiB0aGUgdjY5MCBub24tY3JpdGljYWwgZXh0ZW5zaW9uIHNob3VsZCBiZQorCS0tIGNvbnNpZGVyZWQgYXMgYW4gZXh0ZW5zaW9uIG9mIElFIEludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0CisJZXZlbnQJCQkJCQkJCUV2ZW50MWotcjYsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CisKKy0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCistLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCitNYXhIY0NvbnRleHRTcGFjZS1yNSA6Oj0JCQkJRU5VTUVSQVRFRCB7IAorCQkJCQkJCQkJCQlkdW1teSwgYnkxMDI0LCBieTIwNDgsIGJ5NDA5NiwgYnk4MTkyLCAKKwkJCQkJCQkJCQkJYnkxNjM4NCwgYnkzMjc2OCwgYnk2NTUzNiwgYnkxMzEwNzIgfQorCitNZWFzdXJlbWVudENhcGFiaWxpdHktcjQgOjo9CQlTRVFVRU5DRSB7CisJZG93bmxpbmtDb21wcmVzc2VkTW9kZQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5LXI0LAorCXVwbGlua0NvbXByZXNzZWRNb2RlCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktcjQJCit9CisKK01lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlIDo6PQkJQ0hPSUNFIHsKKwlzZXR1cAkJCQkJCQkJTWVhc3VyZW1lbnRUeXBlLAorCW1vZGlmeQkJCQkJCQkJTlVMTCwKKwlyZWxlYXNlCQkJCQkJCQlOVUxMCit9CisKK01lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI0IDo6PQlDSE9JQ0UgeworCXNldHVwCQkJCQkJCQlNZWFzdXJlbWVudFR5cGUtcjQsCisJbW9kaWZ5CQkJCQkJCQlOVUxMLAorCXJlbGVhc2UJCQkJCQkJCU5VTEwKK30KKworTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjYgOjo9CUNIT0lDRSB7CisJc2V0dXAJCQkJCQkJCU1lYXN1cmVtZW50VHlwZS1yNiwKKwltb2RpZnkJCQkJCQkJCU5VTEwsCisJcmVsZWFzZQkJCQkJCQkJTlVMTAorfQorCitPbmdvaW5nTWVhc1JlcCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwltZWFzdXJlbWVudElkZW50aXR5CQkJCQlNZWFzdXJlbWVudElkZW50aXR5LAorCS0tIFRBQlVMQVI6IFRoZSBDSE9JQ0UgTWVhc3VyZW1lbnQgaW4gdGhlIHRhYnVsYXIgZGVzY3JpcHRpb24gaXMgaW5jbHVkZWQKKwktLSBpbiBNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZQorCW1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlCQkJTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUsCisJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCisJYWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwKK30KKworT25nb2luZ01lYXNSZXAtcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwltZWFzdXJlbWVudElkZW50aXR5CQkJCQlNZWFzdXJlbWVudElkZW50aXR5LAorCS0tIFRBQlVMQVI6IFRoZSBDSE9JQ0UgTWVhc3VyZW1lbnQgaW4gdGhlIHRhYnVsYXIgZGVzY3JpcHRpb24gaXMgaW5jbHVkZWQKKwktLSBpbiBNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZS1yNC4KKwltZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZQkJCU1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI0LAorCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAorCWFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCUFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCU9QVElPTkFMCit9CisKK09uZ29pbmdNZWFzUmVwLXI1IDo6PQkJCQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRJZGVudGl0eQkJCQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwktLSBUQUJVTEFSOiBUaGUgQ0hPSUNFIE1lYXN1cmVtZW50IGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uIGlzIGluY2x1ZGVkCisJLS0gaW4gTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjQuCisJbWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUJCQlNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZS1yNCwKKwltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKKwlhZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTCwKKwltZWFzdXJlbWVudENvbW1hbmQtdjU5MGV4dAkJCUNIT0lDRSB7CisJCS0tIHRoZSBjaG9pY2UgImludHJhLWZyZXF1ZW5jeSIgc2hhbGwgYmUgdXNlZCBmb3IgdGhlIGNhc2Ugb2YgaW50cmEtZnJlcXVlbmN5IG1lYXN1cmVtZW50LAorCQktLSBhcyB3ZWxsIGFzIHdoZW4gaW50cmEtZnJlcXVlbmN5IGV2ZW50cyBhcmUgY29uZmlndXJlZCBmb3IgaW50ZXItZnJlcXVlbmN5IG1lYXN1cmVtZW50CisJCWludHJhLWZyZXF1ZW5jeQkJCQkJCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAorCQlpbnRlci1mcmVxdWVuY3kJCQkJCQlJbnRlci1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dAorCX0JCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQlPUFRJT05BTCwKKwlpbnRyYUZyZXFFdmVudC0xZC1yNQkJCQkJSW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJT1BUSU9OQUwKK30KKworT25nb2luZ01lYXNSZXAtcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwltZWFzdXJlbWVudElkZW50aXR5CQkJCQlNZWFzdXJlbWVudElkZW50aXR5LAorCW1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlCQkJTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjYsCisJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCisJYWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwKK30KKworT25nb2luZ01lYXNSZXBMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgorCQkJCQkJCQkJCU9uZ29pbmdNZWFzUmVwCisKK09uZ29pbmdNZWFzUmVwTGlzdC1yNCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgorCQkJCQkJCQkJCU9uZ29pbmdNZWFzUmVwLXI0CisKK09uZ29pbmdNZWFzUmVwTGlzdC1yNSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgorCQkJCQkJCQkJCU9uZ29pbmdNZWFzUmVwLXI1CisKK09uZ29pbmdNZWFzUmVwTGlzdC1yNiA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Tm9PZk1lYXMpKSBPRgorCQkJCQkJCQkJCU9uZ29pbmdNZWFzUmVwLXI2CisKK1BEQ1AtQ2FwYWJpbGl0eS1yNCA6Oj0JCQkJU0VRVUVOQ0UgeworCWxvc3NsZXNzU1JOUy1SZWxvY2F0aW9uU3VwcG9ydAkJQk9PTEVBTiwKKwlzdXBwb3J0Rm9yUmZjMjUwNwkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCU1heEhjQ29udGV4dFNwYWNlCisJfSwKKwlzdXBwb3J0Rm9yUmZjMzA5NQkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1heFJPSEMtQ29udGV4dFNlc3Npb25zCQkJCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0CURFRkFVTFQgczE2LAorCQkJcmV2ZXJzZUNvbXByZXNzaW9uRGVwdGgJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJREVGQVVMVCAwCisJCX0KKwl9Cit9CisKK1BEQ1AtQ2FwYWJpbGl0eS1yNSA6Oj0JCQkJU0VRVUVOQ0UgeworCWxvc3NsZXNzU1JOUy1SZWxvY2F0aW9uU3VwcG9ydAkJQk9PTEVBTiwKKwlzdXBwb3J0Rm9yUmZjMjUwNwkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCU1heEhjQ29udGV4dFNwYWNlLXI1CisJfSwKKwlzdXBwb3J0Rm9yUmZjMzA5NQkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1heFJPSEMtQ29udGV4dFNlc3Npb25zCQkJCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0CURFRkFVTFQgczE2LAorCQkJcmV2ZXJzZUNvbXByZXNzaW9uRGVwdGgJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJREVGQVVMVCAwLAorCQkJc3VwcG9ydEZvclJmYzMwOTVDb250ZXh0UmVsb2NhdGlvbglCT09MRUFOCisJCX0KKwl9Cit9CisKK1BEQ1AtQ2FwYWJpbGl0eS1yNiA6Oj0JCQkJU0VRVUVOQ0UgeworCWxvc3NsZXNzU1JOUy1SZWxvY2F0aW9uU3VwcG9ydAkJQk9PTEVBTiwKKwlsb3NzbGVzc0RMUkxDLVBEVVNpemVDaGFuZ2UJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwlzdXBwb3J0Rm9yUmZjMjUwNwkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCU1heEhjQ29udGV4dFNwYWNlLXI1CisJfSwKKwlzdXBwb3J0Rm9yUmZjMzA5NQkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1heFJPSEMtQ29udGV4dFNlc3Npb25zCQkJCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0CURFRkFVTFQgczE2LAorCQkJcmV2ZXJzZUNvbXByZXNzaW9uRGVwdGgJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJREVGQVVMVCAwLAorCQkJc3VwcG9ydEZvclJmYzMwOTVDb250ZXh0UmVsb2NhdGlvbglCT09MRUFOCisJCX0KKwl9Cit9CisKK1BoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjQgOjo9CQlTRVFVRU5DRSB7CisJCWZkZFBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlGREQtcjQsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlGREQKKwkJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCXRkZDM4NC1QaHlzQ2hDYXBhYmlsaXR5CQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQKKwkJfQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCXRkZDEyOC1QaHlzQ2hDYXBhYmlsaXR5CQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0LAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNAorCQl9CQkJCQkJCQkJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI1IDo6PQkJU0VRVUVOQ0UgeworCQlmZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI1LAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGQzODQtUGh5c0NoQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELXI1LAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGQxMjgtUGh5c0NoQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNSwKKwkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQKKwkJfQkJCQkJCQkJCQkJT1BUSU9OQUwKK30KKworUkYtQ2FwYWJpbGl0eS1yNCA6Oj0JCQkJU0VRVUVOQ0UgeworCQlmZGRSRi1DYXBhYmlsaXR5CQkJCVNFUVVFTkNFIHsKKwkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3NFeHQsCisJCQl0eFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgkJCVR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCisJCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCXRkZDM4NC1SRi1DYXBhYmlsaXR5CQkJU0VRVUVOQ0UgeworCQkJdWUtUG93ZXJDbGFzcwkJCQkJVUUtUG93ZXJDbGFzc0V4dCwKKwkJCXJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCisJCQljaGlwUmF0ZUNhcGFiaWxpdHkJCQkJQ2hpcFJhdGVDYXBhYmlsaXR5CisJCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCXRkZDEyOC1SRi1DYXBhYmlsaXR5CQkJU0VRVUVOQ0UgeworCQkJdWUtUG93ZXJDbGFzcwkJCQkJVUUtUG93ZXJDbGFzc0V4dCwKKwkJCXJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCisJCQljaGlwUmF0ZUNhcGFiaWxpdHkJCQkJQ2hpcFJhdGVDYXBhYmlsaXR5CisJCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKK30KKworUkZDMzA5NS1Db250ZXh0SW5mbyA6Oj0gCQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXJmYzMwOTUtQ29udGV4dC1MaXN0CQkJCVJGQzMwOTUtQ29udGV4dC1MaXN0Cit9CisKK1JGQzMwOTUtQ29udGV4dC1MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSRkMzMDk1LUNJRCkpIE9GIFNFUVVFTkNFIHsKKwlkbC1SRkMzMDk1LUNvbnRleHQJCQkJCURMLVJGQzMwOTUtQ29udGV4dAkJT1BUSU9OQUwsCisJdWwtUkZDMzA5NS1Db250ZXh0CQkJCQlVTC1SRkMzMDk1LUNvbnRleHQJCU9QVElPTkFMCit9CisKK1JMQy1DYXBhYmlsaXR5LXI1IDo6PQkJCQlTRVFVRU5DRSB7CisJdG90YWxSTEMtQU0tQnVmZmVyU2l6ZQkJCQlUb3RhbFJMQy1BTS1CdWZmZXJTaXplLXI1LAorCW1heGltdW1STEMtV2luZG93U2l6ZQkJCQlNYXhpbXVtUkxDLVdpbmRvd1NpemUsCisJbWF4aW11bUFNLUVudGl0eU51bWJlcgkJCQlNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcAorfQorCisKK1NSQi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvIDo6PQlTRVFVRU5DRSB7CisJdWwtUlJDLUhGTgkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyOCkpLAorCWRsLVJSQy1IRk4JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjgpKSwKKwl1bC1SUkMtU2VxdWVuY2VOdW1iZXIJCQkJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlciwKKwlkbC1SUkMtU2VxdWVuY2VOdW1iZXIJCQkJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlcgorfQorCitTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mb0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICg0Li5tYXhTUkJzZXR1cCkpIE9GCisJCQkJCQkJCQkJU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8KKworU3RhdGVPZlJSQyA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljZWxsLURDSCwgY2VsbC1GQUNILAorCQkJCQkJCQkJCWNlbGwtUENILCB1cmEtUENIIH0KKworU3RhdGVPZlJSQy1Qcm9jZWR1cmUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYXdhaXROb1JSQy1NZXNzYWdlLAorCQkJCQkJCQkJCWF3YWl0UkItUmVsZWFzZUNvbXBsZXRlLAorCQkJCQkJCQkJCWF3YWl0UkItU2V0dXBDb21wbGV0ZSwKKwkJCQkJCQkJCQlhd2FpdFJCLVJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAorCQkJCQkJCQkJCWF3YWl0VHJhbnNwb3J0Q0gtUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJCQkJCQkJCQkJYXdhaXRQaHlzaWNhbENILVJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAorCQkJCQkJCQkJCWF3YWl0QWN0aXZlU2V0VXBkYXRlQ29tcGxldGUsCisJCQkJCQkJCQkJYXdhaXRIYW5kb3ZlckNvbXBsZXRlLAorCQkJCQkJCQkJCXNlbmRDZWxsVXBkYXRlQ29uZmlybSwKKwkJCQkJCQkJCQlzZW5kVXJhVXBkYXRlQ29uZmlybSwKKwkJCQkJCQkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbgorCQkJCQkJCQkJCS0tIEl0IHNob3VsZCBub3QgYmUgc2VudAorCQkJCQkJCQkJCWR1bW15LAorCQkJCQkJCQkJCW90aGVyU3RhdGVzIAorfQorCitUb3RhbFJMQy1BTS1CdWZmZXJTaXplLXI1IDo6PQkJRU5VTUVSQVRFRCB7IAorCQkJCQkJCQkJCWtiMTAsIGtiNTAsIGtiMTAwLCBrYjE1MCwga2IyMDAsIAorCQkJCQkJCQkJCWtiMzAwLCBrYjQwMCwga2I1MDAsIGtiNzUwLCBrYjEwMDAgfQorCitUUEMtQ29tYmluYXRpb24tSW5mbyA6Oj0gU0VRVUVOQ0UgeworCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4Cit9CisKK1VFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXI1IDo6PQlTRVFVRU5DRSB7CisJbXVsdGlSQVQtQ2FwYWJpbGl0eUxpc3QJCQkJTXVsdGlSQVQtQ2FwYWJpbGl0eSwKKwltdWx0aU1vZGVDYXBhYmlsaXR5CQkJCQlNdWx0aU1vZGVDYXBhYmlsaXR5LAorCXN1cHBvcnRPZlVUUkFOLVRvR0VSQU4tTkFDQwkJCUJPT0xFQU4KK30KKworVUUtUG9zaXRpb25pbmctQ2FwYWJpbGl0eS1yNCA6Oj0JU0VRVUVOQ0UgeworCXN0YW5kYWxvbmVMb2NNZXRob2RzU3VwcG9ydGVkCQkJQk9PTEVBTiwKKwl1ZS1CYXNlZE9URE9BLVN1cHBvcnRlZAkJCQkJQk9PTEVBTiwKKwluZXR3b3JrQXNzaXN0ZWRHUFMtU3VwcG9ydGVkCQkJTmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZCwKKwlzdXBwb3J0Rm9yVUUtR1BTLVRpbWluZ09mQ2VsbEZyYW1lcwkJQk9PTEVBTiwKKwlzdXBwb3J0Rm9ySVBETAkJCQkJCQlCT09MRUFOLAorCXJ4LXR4LVRpbWVEaWZmZXJlbmNlVHlwZTJDYXBhYmxlIAkJQk9PTEVBTiwKKwl2YWxpZGl0eS1DZWxsUENILVVyYVBDSCAJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJT1BUSU9OQUwsCisJc2ZuLXNmblR5cGUyQ2FwYWJpbGl0eQkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcyA6Oj0JCVNFUVVFTkNFIHsgCisJCXNmbgkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSksCisJCWNlbGwtaWQJCQkJCQkJQ2VsbElkZW50aXR5LAorCQlwb3NpdGlvbkVzdGltYXRlCQkJCVBvc2l0aW9uRXN0aW1hdGUKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI0IDo6PQkJU0VRVUVOQ0UgeworCWFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciwKKwlwZGNwLUNhcGFiaWxpdHkJCQkJCQlQRENQLUNhcGFiaWxpdHktcjQsCisJcmxjLUNhcGFiaWxpdHkJCQkJCQlSTEMtQ2FwYWJpbGl0eSwKKwl0cmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eQkJCVRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5LAorCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI0LAorCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHkJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI0LAorCXVlLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5CQkJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHksCisJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCisJdWUtcG9zaXRpb25pbmctQ2FwYWJpbGl0eQkJCVVFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHktcjQsCisJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eS1yNAkJT1BUSU9OQUwKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI1IDo6PQkJU0VRVUVOQ0UgeworCWFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciwKKwlkbC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcKKwkJCQkJCQkJCQlETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcJT1BUSU9OQUwsCisJcGRjcC1DYXBhYmlsaXR5CQkJCQkJUERDUC1DYXBhYmlsaXR5LXI1LAorCXJsYy1DYXBhYmlsaXR5CQkJCQkJUkxDLUNhcGFiaWxpdHktcjUsCisJdHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkJCQlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKKwlyZi1DYXBhYmlsaXR5CQkJCQkJUkYtQ2FwYWJpbGl0eS1yNCwKKwlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNSwKKwl1ZS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eQkJCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXI1LAorCXNlY3VyaXR5Q2FwYWJpbGl0eQkJCQkJU2VjdXJpdHlDYXBhYmlsaXR5LAorCXVlLXBvc2l0aW9uaW5nLUNhcGFiaWxpdHkJCQlVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5LXI0LAorCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHktcjQJCU9QVElPTkFMCit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNiA6Oj0JCVNFUVVFTkNFIHsKKwlhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCisJZGwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCisJCQkJCQkJCQkJREwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCU9QVElPTkFMLAorCXBkY3AtQ2FwYWJpbGl0eQkJCQkJCVBEQ1AtQ2FwYWJpbGl0eS1yNiwKKwlybGMtQ2FwYWJpbGl0eQkJCQkJCVJMQy1DYXBhYmlsaXR5LXI1LAorCXRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5CQkJVHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHksCisJcmYtQ2FwYWJpbGl0eQkJCQkJCVJGLUNhcGFiaWxpdHktcjQsCisJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eQkJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjUsCisJdWUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHkJCQlVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS1yNSwKKwlzZWN1cml0eUNhcGFiaWxpdHkJCQkJCVNlY3VyaXR5Q2FwYWJpbGl0eSwKKwl1ZS1wb3NpdGlvbmluZy1DYXBhYmlsaXR5CQkJVUUtUG9zaXRpb25pbmctQ2FwYWJpbGl0eS1yNCwKKwltZWFzdXJlbWVudENhcGFiaWxpdHkJCQkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0CQlPUFRJT05BTAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjcgOjo9CQlTRVFVRU5DRSB7CisJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yLAorCWRsLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZworCQkJCQkJCQkJCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlPUFRJT05BTCwKKwlwZGNwLUNhcGFiaWxpdHkJCQkJCQlQRENQLUNhcGFiaWxpdHktcjYsCisJcmxjLUNhcGFiaWxpdHkJCQkJCQlSTEMtQ2FwYWJpbGl0eS1yNSwKKwl0cmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eQkJCVRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5LAorCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI3LAorCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHkJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI3LAorCXVlLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5CQkJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHktcjUsCisJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCisJdWUtcG9zaXRpb25pbmctQ2FwYWJpbGl0eQkJCVVFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHktcjQsCisJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eS1yNAkJT1BUSU9OQUwKK30KKworVUwtUkZDMzA5NS1Db250ZXh0IDo6PQkJCQlTRVFVRU5DRSB7CisJcmZjMzA5NS1Db250ZXh0LUlkZW50aXR5CQkJSU5URUdFUiAoMC4uMTYzODMpLAorCXVsLW1vZGUJCQkJCQkJCUVOVU1FUkFURUQge3UsIG8sIHJ9LAorCXVsLXJlZi1pcgkJCQkJCQlPQ1RFVCBTVFJJTkcgKCBTSVpFICgxLi4zMDAwKSksCisJdWwtcmVmLXRpbWUJCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAorCXVsLWN1cnItdGltZQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCQlPUFRJT05BTCwKKwl1bC1zeW4tb2Zmc2V0LWlkCQkJCQlJTlRFR0VSICgwLi42NTUzNSkJCQlPUFRJT05BTCwKKwl1bC1zeW4tc2xvcGUtdHMJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQkJT1BUSU9OQUwsCisJdWwtcmVmLXNuLTEJCQkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJT1BUSU9OQUwKK30KKworRU5ECisKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3NhbXBsZS5zb3VyY2UuUlJDL1JFQURNRSBiL2V4YW1wbGVzL3NhbXBsZS5zb3VyY2UuUlJDL1JFQURNRQppbmRleCA1NjM5YzU4Li5mYzdlNmI5IDEwMDY0NAotLS0gYS9leGFtcGxlcy9zYW1wbGUuc291cmNlLlJSQy9SRUFETUUKKysrIGIvZXhhbXBsZXMvc2FtcGxlLnNvdXJjZS5SUkMvUkVBRE1FCkBAIC0yLDM0ICsyLDIyIEBACiBHRU5FUkFMIElORk9STUFUSU9OCiA9PT09PT09PT09PT09PT09PT09CiAKLVRoZSAzR1BQIFRTIDI1LjMzMSBSUkMgKFJhZGlvIFJlc291cmNlIENvbnRyb2wpIFBFUiBkZWNvZGVyLgorVGhlIDNHUFAgVFMgMjUuMzMxIHZlcnNpb24gNy4xLjAgUlJDIChSYWRpbyBSZXNvdXJjZSBDb250cm9sKSBQRVIgZGVjb2Rlci4KIEludm9raW5nIGBtYWtlYCB3aWxsIGNvbXBpbGUgdGhlIEFTTi4xIHNwZWNpZmljYXRpb25zIGZyb20gdGhlCiAuLi9ycmMuYXNuMSBmaWxlLgogCi1USEVSRSBJUyBOTyBycmMuYXNuMSBGSUxFIFRIRVJFIFlFVCEKLQogT0JUQUlOSU5HIFRIRSBSUkMgU1BFQ0lGSUNBVElPTgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotRHVlIHRvIGxpY2Vuc2luZyByZXN0cmljdGlvbnMsIGFzbjFjIGNhbiBub3QgaW5jbHVkZSB0aGUgUlJDIEFTTi4xIG1vZHVsZQotaW4gaXRzIGRpc3RyaWJ1dGlvbi4KLQotVG8gb2J0YWluIHRoZSBSUkMgQVNOLjEgc3BlY2lmaWNhdGlvbiwgeW91IHNob3VsZCBnbyB0bworVG8gb2J0YWluIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgUlJDIEFTTi4xIHNwZWNpZmljYXRpb24sIHlvdSBzaG91bGQgZ28gdG8KIAlodHRwOi8vd3d3LjNncHAub3JnL2Z0cC9TcGVjcy9odG1sLWluZm8vMjUzMzEuaHRtCi1hbmQgZG93bmxvYWQgYW55IHZlcnNpb24gb2YgUlJDIHNwZWNpZmljYXRpb24gKHByZWZlcmFibHkgNy4xLjAsIDIwMDYtMDYpLgorYW5kIGRvd25sb2FkIGFueSB2ZXJzaW9uIG9mIFJSQyBzcGVjaWZpY2F0aW9uIHlvdSBsaWtlLgogCiBBIC5aSVAgZmlsZSB3aXRoIGEgTWljcm9zb2Z0IFdvcmQgLkRPQyBmaWxlcyB3aWxsIGRvd25sb2FkIHNob3J0bHkuCiAKLVlvdSBzaG91bGQgZXh0cmFjdCB0aGUgQVNOLjEgbW9kdWxlcyBmcm9tIHRoZSBjaGFwdGVyIDExIG9mIHRoYXQgLkRPQyBmaWxlLAotYW5kIHNhdmUgaXQgYXMgdGhlIC4uL3JyYy5hc24xIGZpbGUuIFRoZSAuLi9ycmMuYXNuMSBmaWxlIHNob3VsZCBzdGFydCB3aXRoCi10aGUgZm9sbG93aW5nIGxpbmUKLQkiQ2xhc3MtZGVmaW5pdGlvbnMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9IgotYW5kIGVuZCB3aXRoIHRoZSAiRU5EIiB0b2tlbi4KK1lvdSBzaG91bGQgZXh0cmFjdCB0aGUgQVNOLjEgbW9kdWxlcyBmcm9tIHRoZSBjaGFwdGVyIDExIG9mIHRoYXQgLkRPQyBmaWxlLgogQmUgY2FyZWZ1bCBub3QgdG8gY29weSBhbnkgcHJlYW1ibGVzLCBjaGFwdGVyIHRpdGxlcyBhbmQgb3RoZXIgbm9uLUFTTi4xIHRleHQuCiAKLUFmdGVyIG9idGFpbmluZyB0aGUgcnJjLmFzbjEsIHR5cGUgYG1ha2VgIGluIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZwotdGhpcyBSRUFETUUgZmlsZS4KLQogcnJjLWR1bXAgVVNBR0UKID09PT09PT09PT09PT09CiAK