ZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3JyYy5hc24xIGIvZXhhbXBsZXMvcnJjLmFzbjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkMTA1MgotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL3JyYy5hc24xCkBAIC0wLDAgKzEsMjEyOTEgQEAKKy8qCisgKiBSYWRpbyBSZXNvdXJjZSBDb250cm9sIFRlY2huaWNhbCBTcGVjaWZpY2F0aW9uIEFTTi4xIG1vZHVsZS4KKyAqIDNHUFAgMjUuMzMxIChUUyAxMjUgMzMxKSAoRVRTSSByZWYgUlRTL1RTR1ItMDIyNTMzMXY3MTApIFsyMDA2LTA2XQorICogRXh0cmFjdGVkIGFuZCB2ZXJpZmllZCBieSBMZXYgV2Fsa2luIDx2bG1AbGlvbmV0LmluZm8+CisgKgorICogRE8gTk9UIFJFRElTVFJJQlVURS4gT2J0YWluIHlvdXIgb3duIGNvcHkgb2YgM0dQUCBSUkMgc3BlY2lmaWNhdGlvbgorICogaWYgeW91IG5lZWQgdG8gY3JlYXRlIHByb2R1Y3RzIGJhc2VkIG9uIHRoaXMgUlJDIEFTTi4xIG1vZHVsZS4KKyAqCisgKiBUaGUgRVRTSSBoYXMgZ3JhbnRlZCBtZSB0aGUgcmlnaHQgdG8gcmVwcm9kdWNlIHRoaXMgQVNOLjEgUlJDCisgKiAoUmFkaW8gUmVzb3VyY2UgQ29udHJvbCkgbW9kdWxlIHByb3ZpZGVkIHRoYXQgSSBpbnNlcnQgdGhlIGZvbGxvd2luZworICogcGFyYWdyYXBoOgorICoKKyAqIDNHUFAodG0pIFRTcyBhbmQgVFJzIGFyZSB0aGUgcHJvcGVydHkgb2YgQVJJQiwgQVRJUywgRVRTSSwgQ0NTQSwgVFRBIGFuZCBUVEMKKyAqIHdobyBqb2ludGx5IG93biB0aGUgY29weXJpZ2h0IGluIHRoZW0uIFRoZXkgYXJlIHN1YmplY3QgdG8gZnVydGhlcgorICogbW9kaWZpY2F0aW9ucyBhbmQgYXJlIHRoZXJlZm9yZSBwcm92aWRlZCB0byB5b3UgImFzIGlzIiBmb3IgaW5mb3JtYXRpb24KKyAqIHB1cnBvc2VzIG9ubHkuIEZ1cnRoZXIgdXNlIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuCisgKi8KKworQ2xhc3MtZGVmaW5pdGlvbnMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9CisKK0JFR0lOCisKK0lNUE9SVFMKKworCUFjdGl2ZVNldFVwZGF0ZSwKKwlBY3RpdmVTZXRVcGRhdGVDb21wbGV0ZSwKKwlBY3RpdmVTZXRVcGRhdGVGYWlsdXJlLAkKKwlBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LAorCUNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTiwKKwlDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU5GYWlsdXJlLAorCUNlbGxVcGRhdGUsCisJQ2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSCwKKwlDZWxsVXBkYXRlQ29uZmlybSwKKwlDb3VudGVyQ2hlY2ssCisJQ291bnRlckNoZWNrUmVzcG9uc2UsCisJRG93bmxpbmtEaXJlY3RUcmFuc2ZlciwKKwlIYW5kb3ZlclRvVVRSQU5Db21wbGV0ZSwKKwlJbml0aWFsRGlyZWN0VHJhbnNmZXIsCisJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUsCisJSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTSwKKwlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAsCisJSGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlLAorCU1CTVNBY2Nlc3NJbmZvcm1hdGlvbiwKKwlNQk1TQ29tbW9uUFRNUkJJbmZvcm1hdGlvbiwKKwlNQk1TQ3VycmVudENlbGxQVE1SQkluZm9ybWF0aW9uLAorCU1CTVNHZW5lcmFsSW5mb3JtYXRpb24sCisJTUJNU01vZGlmaWNhdGlvblJlcXVlc3QsCisJTUJNU01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiwKKwlNQk1TTmVpZ2hib3VyaW5nQ2VsbFBUTVJCSW5mb3JtYXRpb24sCisJTUJNU1NjaGVkdWxpbmdJbmZvcm1hdGlvbiwKKwlNQk1TVW5tb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24sCisJTWVhc3VyZW1lbnRDb250cm9sLAorCU1lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUsCisJTWVhc3VyZW1lbnRSZXBvcnQsCisJUGFnaW5nVHlwZTEsCisJUGFnaW5nVHlwZTIsCisJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAorCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUsCisJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiwKKwlQVVNDSENhcGFjaXR5UmVxdWVzdCwKKwlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKKwlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAorCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKKwlSYWRpb0JlYXJlclJlbGVhc2UsCisJUmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUsCisJUmFkaW9CZWFyZXJSZWxlYXNlRmFpbHVyZSwKKwlSYWRpb0JlYXJlclNldHVwLAorCVJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZSwKKwlSYWRpb0JlYXJlclNldHVwRmFpbHVyZSwKKwlSUkNDb25uZWN0aW9uUmVqZWN0LAorCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLAorCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gsCisJUlJDQ29ubmVjdGlvblJlbGVhc2VDb21wbGV0ZSwKKwlSUkNDb25uZWN0aW9uUmVxdWVzdCwKKwlSUkNDb25uZWN0aW9uU2V0dXAsCisJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUsCisJUlJDU3RhdHVzLAorCVNlY3VyaXR5TW9kZUNvbW1hbmQsCisJU2VjdXJpdHlNb2RlQ29tcGxldGUsCisJU2VjdXJpdHlNb2RlRmFpbHVyZSwKKwlTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UsCisJU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlSW5kaWNhdGlvbiwKKwlTeXN0ZW1JbmZvcm1hdGlvbi1CQ0gsCisJU3lzdGVtSW5mb3JtYXRpb24tRkFDSCwKKwlTeXN0ZW1JbmZvcm1hdGlvbkNoYW5nZUluZGljYXRpb24sCisJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbiwKKwlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUsCisJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sLAorCVRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbEZhaWx1cmUsCisJVUVDYXBhYmlsaXR5RW5xdWlyeSwKKwlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbiwKKwlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0sCisJVXBsaW5rRGlyZWN0VHJhbnNmZXIsCisJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbCwKKwlVUkFVcGRhdGUsCisJVVJBVXBkYXRlQ29uZmlybSwKKwlVUkFVcGRhdGVDb25maXJtLUNDQ0gsCisJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLAorCVVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0sCisJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uRmFpbHVyZQorRlJPTSBQRFUtZGVmaW5pdGlvbnMKKworLS0gVXNlciBFcXVpcG1lbnQgSUVzIDoKKwlJbnRlZ3JpdHlDaGVja0luZm8KK0ZST00gSW5mb3JtYXRpb25FbGVtZW50czsKKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIERvd25saW5rIERDQ0ggbWVzc2FnZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0RMLURDQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgeworCWludGVncml0eUNoZWNrSW5mbwkJSW50ZWdyaXR5Q2hlY2tJbmZvCQlPUFRJT05BTCwKKwltZXNzYWdlCQkJCQlETC1EQ0NILU1lc3NhZ2VUeXBlCit9CisKK0RMLURDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJYWN0aXZlU2V0VXBkYXRlCQkJCQkJQWN0aXZlU2V0VXBkYXRlLAorCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnkJCQkJQXNzaXN0YW5jZURhdGFEZWxpdmVyeSwKKwljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4gCQkJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLAorCWNlbGxVcGRhdGVDb25maXJtCQkJCQlDZWxsVXBkYXRlQ29uZmlybSwKKwljb3VudGVyQ2hlY2sJCQkJCQlDb3VudGVyQ2hlY2ssCisJZG93bmxpbmtEaXJlY3RUcmFuc2ZlcgkJCQlEb3dubGlua0RpcmVjdFRyYW5zZmVyLAorCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00JCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00sCisJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMCwKKwltZWFzdXJlbWVudENvbnRyb2wJCQkJCU1lYXN1cmVtZW50Q29udHJvbCwKKwlwYWdpbmdUeXBlMgkJCQkJCQlQYWdpbmdUeXBlMiwKKwlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24JCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiwKKwlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uCQlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLAorCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24sCisJcmFkaW9CZWFyZXJSZWxlYXNlCQkJCQlSYWRpb0JlYXJlclJlbGVhc2UsCisJcmFkaW9CZWFyZXJTZXR1cAkJCQkJUmFkaW9CZWFyZXJTZXR1cCwKKwlycmNDb25uZWN0aW9uUmVsZWFzZQkJCQlSUkNDb25uZWN0aW9uUmVsZWFzZSwKKwlzZWN1cml0eU1vZGVDb21tYW5kCQkJCQlTZWN1cml0eU1vZGVDb21tYW5kLAorCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZQkJCVNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZSwKKwl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbAlUcmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2wsCisJdWVDYXBhYmlsaXR5RW5xdWlyeQkJCQkJVUVDYXBhYmlsaXR5RW5xdWlyeSwKKwl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0JCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybSwKKwl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sCQlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLAorCXVyYVVwZGF0ZUNvbmZpcm0JCQkJCVVSQVVwZGF0ZUNvbmZpcm0sCisJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uCQkJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLAorCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1CUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HRVJBTkl1LAorCW1ibXNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24JCU1CTVNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24sCisJc3BhcmU1CQkJCQkJCQlOVUxMLAorCXNwYXJlNAkJCQkJCQkJTlVMTCwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVXBsaW5rIERDQ0ggbWVzc2FnZXMKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VMLURDQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgeworCWludGVncml0eUNoZWNrSW5mbwkJSW50ZWdyaXR5Q2hlY2tJbmZvCQlPUFRJT05BTCwKKwltZXNzYWdlCQkJCQlVTC1EQ0NILU1lc3NhZ2VUeXBlCit9CisKK1VMLURDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJYWN0aXZlU2V0VXBkYXRlQ29tcGxldGUJCQkJQWN0aXZlU2V0VXBkYXRlQ29tcGxldGUsCisJYWN0aXZlU2V0VXBkYXRlRmFpbHVyZQkJCQlBY3RpdmVTZXRVcGRhdGVGYWlsdXJlLAorCWNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUgCUNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUsCisJY291bnRlckNoZWNrUmVzcG9uc2UJCQkJQ291bnRlckNoZWNrUmVzcG9uc2UsCisJaGFuZG92ZXJUb1VUUkFOQ29tcGxldGUJCQkJSGFuZG92ZXJUb1VUUkFOQ29tcGxldGUsCisJaW5pdGlhbERpcmVjdFRyYW5zZmVyCQkJCUluaXRpYWxEaXJlY3RUcmFuc2ZlciwKKwloYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUJCQlIYW5kb3ZlckZyb21VVFJBTkZhaWx1cmUsCisJbWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZQkJCU1lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUsCisJbWVhc3VyZW1lbnRSZXBvcnQJCQkJCU1lYXN1cmVtZW50UmVwb3J0LAorCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlCisJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZQorCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUsCisJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAorCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uRmFpbHVyZQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkZhaWx1cmUsCisJcmFkaW9CZWFyZXJSZWxlYXNlQ29tcGxldGUJCQlSYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZSwKKwlyYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlCQkJUmFkaW9CZWFyZXJSZWxlYXNlRmFpbHVyZSwKKwlyYWRpb0JlYXJlclNldHVwQ29tcGxldGUJCQlSYWRpb0JlYXJlclNldHVwQ29tcGxldGUsCisJcmFkaW9CZWFyZXJTZXR1cEZhaWx1cmUJCQkJUmFkaW9CZWFyZXJTZXR1cEZhaWx1cmUsCisJcnJjQ29ubmVjdGlvblJlbGVhc2VDb21wbGV0ZQkJUlJDQ29ubmVjdGlvblJlbGVhc2VDb21wbGV0ZSwKKwlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLAorCXJyY1N0YXR1cwkJCQkJCQlSUkNTdGF0dXMsCisJc2VjdXJpdHlNb2RlQ29tcGxldGUJCQkJU2VjdXJpdHlNb2RlQ29tcGxldGUsCisJc2VjdXJpdHlNb2RlRmFpbHVyZQkJCQkJU2VjdXJpdHlNb2RlRmFpbHVyZSwKKwlzaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2VJbmRpY2F0aW9uCisJCQkJCQkJCQkJU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlSW5kaWNhdGlvbiwKKwl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUKKwkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUsCisJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUKKwkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZSwKKwl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2xGYWlsdXJlCisJCQkJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sRmFpbHVyZSwKKwl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbgkJCQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbiwKKwl1cGxpbmtEaXJlY3RUcmFuc2ZlcgkJCQlVcGxpbmtEaXJlY3RUcmFuc2ZlciwKKwl1dHJhbk1vYmlsaXR5SW5mb3JtYXRpb25Db25maXJtCQlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLAorCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbkZhaWx1cmUJCVVUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbkZhaWx1cmUsCisJbWJtc01vZGlmaWNhdGlvblJlcXVlc3QJCQkJTUJNU01vZGlmaWNhdGlvblJlcXVlc3QsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBEb3dubGluayBDQ0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitETC1DQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwlpbnRlZ3JpdHlDaGVja0luZm8JCUludGVncml0eUNoZWNrSW5mbwkJT1BUSU9OQUwsCisJbWVzc2FnZQkJCQkJREwtQ0NDSC1NZXNzYWdlVHlwZQorfQorCitETC1DQ0NILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgewkKKwljZWxsVXBkYXRlQ29uZmlybQkJCQkJQ2VsbFVwZGF0ZUNvbmZpcm0tQ0NDSCwKKwlycmNDb25uZWN0aW9uUmVqZWN0CQkJCQlSUkNDb25uZWN0aW9uUmVqZWN0LAorCXJyY0Nvbm5lY3Rpb25SZWxlYXNlCQkJCVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gsCisJcnJjQ29ubmVjdGlvblNldHVwCQkJCQlSUkNDb25uZWN0aW9uU2V0dXAsCisJdXJhVXBkYXRlQ29uZmlybQkJCQkJVVJBVXBkYXRlQ29uZmlybS1DQ0NILAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVcGxpbmsgQ0NDSCBtZXNzYWdlcworLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVUwtQ0NDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJaW50ZWdyaXR5Q2hlY2tJbmZvCQlJbnRlZ3JpdHlDaGVja0luZm8JCU9QVElPTkFMLAorCW1lc3NhZ2UJCQkJCVVMLUNDQ0gtTWVzc2FnZVR5cGUKK30KKworVUwtQ0NDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwljZWxsVXBkYXRlCQkJCQkJCUNlbGxVcGRhdGUsCisJcnJjQ29ubmVjdGlvblJlcXVlc3QJCQkJUlJDQ29ubmVjdGlvblJlcXVlc3QsCisJdXJhVXBkYXRlCQkJCQkJCVVSQVVwZGF0ZSwKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUENDSCBtZXNzYWdlcworLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUENDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJbWVzc2FnZQkJCQlQQ0NILU1lc3NhZ2VUeXBlCit9CisKK1BDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJcGFnaW5nVHlwZTEJCQkJCQkJUGFnaW5nVHlwZTEsCisJc3BhcmUJCQkJCQkJCU5VTEwKK30KKworLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIERvd25saW5rIFNIQ0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitETC1TSENDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJbWVzc2FnZQkJCQkJREwtU0hDQ0gtTWVzc2FnZVR5cGUKK30KKworREwtU0hDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbgkJUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiwKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVXBsaW5rIFNIQ0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVTC1TSENDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJbWVzc2FnZQkJCQkJVUwtU0hDQ0gtTWVzc2FnZVR5cGUKK30KKworVUwtU0hDQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJcHVzY2hDYXBhY2l0eVJlcXVlc3QJCQkJUFVTQ0hDYXBhY2l0eVJlcXVlc3QsCisJc3BhcmUJCQkJCQkJCU5VTEwKK30KKworCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQkNDSCBtZXNzYWdlcyBzZW50IG9uIEZBQ0gKKy0tCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0JDQ0gtRkFDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJbWVzc2FnZQkJCQlCQ0NILUZBQ0gtTWVzc2FnZVR5cGUKK30KKworQkNDSC1GQUNILU1lc3NhZ2VUeXBlIDo6PSBDSE9JQ0UgeworCXN5c3RlbUluZm9ybWF0aW9uCQkJCQlTeXN0ZW1JbmZvcm1hdGlvbi1GQUNILAorCXN5c3RlbUluZm9ybWF0aW9uQ2hhbmdlSW5kaWNhdGlvbglTeXN0ZW1JbmZvcm1hdGlvbkNoYW5nZUluZGljYXRpb24sCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQkNDSCBtZXNzYWdlcyBzZW50IG9uIEJDSAorLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQkNDSC1CQ0gtTWVzc2FnZSA6Oj0gU0VRVUVOQ0UgeworCW1lc3NhZ2UJCQkJU3lzdGVtSW5mb3JtYXRpb24tQkNICit9CisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQ0NIIG1lc3NhZ2VzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQ0NILU1lc3NhZ2UgOjo9IFNFUVVFTkNFIHsKKwltZXNzYWdlCQkJCU1DQ0gtTWVzc2FnZVR5cGUKK30KKworTUNDSC1NZXNzYWdlVHlwZSA6Oj0gQ0hPSUNFIHsKKwltYm1zQWNjZXNzSW5mb3JtYXRpb24JCQkJTUJNU0FjY2Vzc0luZm9ybWF0aW9uLAorCW1ibXNDb21tb25QVE1SQkluZm9ybWF0aW9uCQkJTUJNU0NvbW1vblBUTVJCSW5mb3JtYXRpb24sCisJbWJtc0N1cnJlbnRDZWxsUFRNUkJJbmZvcm1hdGlvbgkJTUJNU0N1cnJlbnRDZWxsUFRNUkJJbmZvcm1hdGlvbiwKKwltYm1zR2VuZXJhbEluZm9ybWF0aW9uCQkJCU1CTVNHZW5lcmFsSW5mb3JtYXRpb24sCisJbWJtc01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbgkJTUJNU01vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiwKKwltYm1zTmVpZ2hib3VyaW5nQ2VsbFBUTVJCSW5mb3JtYXRpb24KKwkJCQkJCQkJCQlNQk1TTmVpZ2hib3VyaW5nQ2VsbFBUTVJCSW5mb3JtYXRpb24sCisJbWJtc1VubW9kaWZpZWRTZXJ2aWNlc0luZm9ybWF0aW9uCU1CTVNVbm1vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiwKKwlzcGFyZTkJCQkJCQkJCU5VTEwsCisJc3BhcmU4CQkJCQkJCQlOVUxMLAorCXNwYXJlNwkJCQkJCQkJTlVMTCwKKwlzcGFyZTYJCQkJCQkJCU5VTEwsCisJc3BhcmU1CQkJCQkJCQlOVUxMLAorCXNwYXJlNAkJCQkJCQkJTlVMTCwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCistLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTVNDSCBtZXNzYWdlcworLS0KKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTVNDSC1NZXNzYWdlIDo6PSBTRVFVRU5DRSB7CisJbWVzc2FnZQkJCQlNU0NILU1lc3NhZ2VUeXBlCit9CisKK01TQ0gtTWVzc2FnZVR5cGUgOjo9IENIT0lDRSB7CisJbWJtc1NjaGVkdWxpbmdJbmZvcm1hdGlvbgkJCU1CTVNTY2hlZHVsaW5nSW5mb3JtYXRpb24sCisJc3BhcmUzCQkJCQkJCQlOVUxMLAorCXNwYXJlMgkJCQkJCQkJTlVMTCwKKwlzcGFyZTEJCQkJCQkJCU5VTEwKK30KKworRU5ECisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBUQUJVTEFSOiBUaGUgbWVzc2FnZSB0eXBlIGFuZCBpbnRlZ3JpdHkgY2hlY2sgaW5mbyBhcmUgbm90CistLSB2aXNpYmxlIGluIHRoaXMgbW9kdWxlIGFzIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIG1vZHVsZS4gCistLSBBbHNvLCBhbGwgRkREL1RERCBzcGVjaWZpYyBjaG9pY2VzIGhhdmUgdGhlIEZERCBvcHRpb24gZmlyc3QgCistLSBhbmQgVEREIHNlY29uZCwganVzdCBmb3IgY29uc2lzdGVuY3kuCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitQRFUtZGVmaW5pdGlvbnMgREVGSU5JVElPTlMgQVVUT01BVElDIFRBR1MgOjo9CisKK0JFR0lOCisKKy0tKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBJRSBwYXJhbWV0ZXIgdHlwZXMgZnJvbSBvdGhlciBtb2R1bGVzCistLQorLS0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitJTVBPUlRTCisKKy0tIENvcmUgTmV0d29yayBJRXMgOgorCUNOLURvbWFpbklkZW50aXR5LAorCUNOLUluZm9ybWF0aW9uSW5mbywKKwlDTi1JbmZvcm1hdGlvbkluZm8tcjYsCisJQ04tSW5mb3JtYXRpb25JbmZvRnVsbCwKKwlOQVMtTWVzc2FnZSwKKwlQYWdpbmdSZWNvcmRUeXBlSUQsCisJUExNTi1JZGVudGl0eSwKKy0tIFVUUkFOIE1vYmlsaXR5IElFcyA6CisJQ2VsbElkZW50aXR5LAorCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0LAorCVVSQS1JZGVudGl0eSwKKy0tIFVzZXIgRXF1aXBtZW50IElFcyA6CisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1yNywKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QyLAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdC1leHQsCisJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCisJQWN0aXZhdGlvblRpbWUsCisJQy1STlRJLAorCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCwKKwlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQsCisJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0LWV4dCwKKwlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjUsCisJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dCwKKwlDZWxsVXBkYXRlQ2F1c2UsCisJQ2VsbFVwZGF0ZUNhdXNlLWV4dCwKKwlDaXBoZXJpbmdBbGdvcml0aG0sCisJQ2lwaGVyaW5nTW9kZUluZm8sCisJRGVsYXlSZXN0cmljdGlvbkZsYWcsCisJRFNDSC1STlRJLAorCUUtUk5USSwKKwlFc3RhYmxpc2htZW50Q2F1c2UsCisJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnJUcklkLAorCUdyb3VwUmVsZWFzZUluZm9ybWF0aW9uLAorCUgtUk5USSwKKwlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZSwKKwlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQsCisJSW5pdGlhbFVFLUlkZW50aXR5LAorCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbywKKwlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8sCisJTi0zMDgsCisJUGFnaW5nQ2F1c2UsCisJUGFnaW5nUmVjb3JkTGlzdCwKKwlQYWdpbmdSZWNvcmQyTGlzdC1yNSwKKwlQcm90b2NvbEVycm9ySW5kaWNhdG9yLAorCVByb3RvY29sRXJyb3JJbmRpY2F0b3JXaXRoTW9yZUluZm8sCisJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKKwlSYi10aW1lci1pbmRpY2F0b3IsCisJUmVkaXJlY3Rpb25JbmZvLAorCVJlZGlyZWN0aW9uSW5mby1yNiwKKwlSZWplY3Rpb25DYXVzZSwKKwlSZWxlYXNlQ2F1c2UsCisJUkYtQ2FwYWJpbGl0eUNvbXAsCisJUlJDLVN0YXRlSW5kaWNhdG9yLAorCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJU2VjdXJpdHlDYXBhYmlsaXR5LAorCVNUQVJULVZhbHVlLAorCVNUQVJUTGlzdCwKKwlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS12NTkwZXh0LAorCVUtUk5USSwKKwlVLVJOVEktU2hvcnQsCisJVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzgwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjgwZXh0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1leHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcDIsCisJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0LAorCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMsCisJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0LAorCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtcjUsCisJVUUtU2VjdXJpdHlJbmZvcm1hdGlvbiwKKwlVRS1TZWN1cml0eUluZm9ybWF0aW9uMiwKKwlVUkEtVXBkYXRlQ2F1c2UsCisJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJV2FpdFRpbWUsCistLSBSYWRpbyBCZWFyZXIgSUVzIDoKKwlEZWZhdWx0Q29uZmlnSWRlbnRpdHksCisJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI0LAorCURlZmF1bHRDb25maWdJZGVudGl0eS1yNSwKKwlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYsCisJRGVmYXVsdENvbmZpZ01vZGUsCisJREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8sCisJREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUsCisJUERDUC1ST0hDLVRhcmdldE1vZGUsCisJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0LAorCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0Q29tcCwKKwlQcmVkZWZpbmVkQ29uZmlnU2V0V2l0aERpZmZlcmVudFZhbHVlVGFnLAorCVJBQi1JbmZvLAorCVJBQi1JbmZvLXI2LAorCVJBQi1JbmZvLVBvc3QsCisJUkFCLUluZm9ybWF0aW9uTGlzdCwKKwlSQUItSW5mb3JtYXRpb25MaXN0LXI2LAorCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCwKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSwKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYtZXh0LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKwlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0LAorCVJCLUNPVU5ULUMtSW5mb3JtYXRpb25MaXN0LAorCVJCLUNPVU5ULUMtTVNCLUluZm9ybWF0aW9uTGlzdCwKKwlSQi1JZGVudGl0eUxpc3QsCisJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QsCisJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjUsCisJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYsCisJUkItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdC1yNiwKKwlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdCwKKwlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNCwKKwlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNSwKKwlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNiwKKwlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0LAorCVJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QsCisJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LAorCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSwKKwlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYsCisJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0MiwKKwlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLXI2LAorCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLAorLS0gVHJhbnNwb3J0IENoYW5uZWwgSUVzOgorCUNQQ0gtU2V0SUQsCisJREwtQWRkUmVjb25mVHJhbnNDaEluZm8yTGlzdCwKKwlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0LAorCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSwKKwlETC1Db21tb25UcmFuc0NoSW5mbywKKwlETC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LAorCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUsCisJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QsCisJUG93ZXJPZmZzZXRJbmZvU2hvcnQsCisJVEZDLVN1YnNldCwKKwlURkNTLUlkZW50aXR5LAorCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKKwlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYsCisJVUwtQ29tbW9uVHJhbnNDaEluZm8sCisJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdCwKKwlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2LAorLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMgOgorCUFscGhhLAorCUJFQUNPTi1QTC1Fc3QsCisJQ0NUckNILVBvd2VyQ29udHJvbEluZm8sCisJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjQsCisJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjUsCisJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjcsCisJQ29uc3RhbnRWYWx1ZSwKKwlDb25zdGFudFZhbHVlVGRkLAorCUNQQ0gtU2V0SW5mbywKKwlESFMtU3luYywKKwlETC1Db21tb25JbmZvcm1hdGlvbiwKKwlETC1Db21tb25JbmZvcm1hdGlvbi1yNCwKKwlETC1Db21tb25JbmZvcm1hdGlvbi1yNSwKKwlETC1Db21tb25JbmZvcm1hdGlvbi1yNiwKKwlETC1Db21tb25JbmZvcm1hdGlvbi1yNywKKwlETC1Db21tb25JbmZvcm1hdGlvblBvc3QsCisJREwtSFNQRFNDSC1JbmZvcm1hdGlvbiwKKwlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2LAorCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcsCisJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LAorCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNCwKKwlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUsCisJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1YmlzLAorCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNiwKKwlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcsCisJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0UG9zdEZERCwKKwlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQsCisJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELUxDUi1yNCwKKwlETC1QRFNDSC1JbmZvcm1hdGlvbiwKKwlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0LAorCURQQy1Nb2RlLAorCURQQ0gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvLAorCUR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsLAorCUUtRENILVJlY29uZmlndXJhdGlvbkluZm8sCisJRVhULVVMLVRpbWluZ0FkdmFuY2UsCisJRnJlcXVlbmN5SW5mbywKKwlGcmVxdWVuY3lJbmZvRkRELAorCUZyZXF1ZW5jeUluZm9UREQsCisJSEFSUS1QcmVhbWJsZS1Nb2RlLAorCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCwKKwlIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQ3NjgsCisJTWF4QWxsb3dlZFVMLVRYLVBvd2VyLAorCU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0LAorCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8sCisJUERTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNCwKKwlQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI3LAorCVBEU0NILUlkZW50aXR5LAorCVByaW1hcnlDUElDSC1JbmZvLAorCVByaW1hcnlDQ1BDSC1UWC1Qb3dlciwKKwlQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLAorCVBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQsCisJUFVTQ0gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mby1yNywKKwlQVVNDSC1JZGVudGl0eSwKKwlQVVNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUsCisJUERTQ0gtU3lzSW5mb0xpc3QtSENSLXI1LAorCVJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LAorCVJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LXI2LAorCVJMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QsCisJU2VydmluZy1IU0RTQ0gtQ2VsbEluZm9ybWF0aW9uLAorCVNwZWNpYWxCdXJzdFNjaGVkdWxpbmcsCisJU1NEVC1JbmZvcm1hdGlvbiwKKwlTU0RULUluZm9ybWF0aW9uLXI0LAorCVRGQy1Db250cm9sRHVyYXRpb24sCisJU1NEVC1VTCwKKwlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQsCisJVGltZXNsb3RMaXN0LAorCVRpbWVzbG90TGlzdC1yNCwKKwlUWC1EaXZlcnNpdHlNb2RlLAorCVVMLUNoYW5uZWxSZXF1aXJlbWVudCwKKwlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQsCisJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1LAorCVVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELAorCVVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELXI0LAorCVVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELXI1LAorCVVMLURQQ0gtSW5mbywKKwlVTC1EUENILUluZm8tcjQsCisJVUwtRFBDSC1JbmZvLXI1LAorCVVMLURQQ0gtSW5mby1yNiwKKwlVTC1EUENILUluZm8tcjcsCisJVUwtRFBDSC1JbmZvUG9zdEZERCwKKwlVTC1EUENILUluZm9Qb3N0VERELAorCVVMLURQQ0gtSW5mb1Bvc3RUREQtTENSLXI0LAorCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYsCisJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNCwKKwlVTC1UaW1pbmdBZHZhbmNlLAorCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLAorCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0LAorCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3LAorCVVMLVRpbWluZ0FkdmFuY2UtVkhDUiwKKy0tIE1lYXN1cmVtZW50IElFcyA6CisJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdCwKKwlEZWx0YVJTQ1AsCisJRnJlcXVlbmN5LUJhbmQsCisJRXZlbnRSZXN1bHRzLAorCUludGVyLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAorCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0LAorCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1LAorCUludHJhRnJlcUV2ZW50LTFkLXI1LAorCUludHJhRnJlcUNlbGxJRCwKKwlJbnRlckZyZXFFdmVudFJlc3VsdHMtTENSLXI0LWV4dCwKKwlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbiwKKwlJbnRlclJBVC1UYXJnZXRDZWxsRGVzY3JpcHRpb24sCisJTWVhc3VyZWRSZXN1bHRzLAorCU1lYXN1cmVkUmVzdWx0cy12MzkwZXh0LAorCU1lYXN1cmVkUmVzdWx0cy12NTkwZXh0LAorCU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJTWVhc3VyZWRSZXN1bHRzTGlzdC1MQ1ItcjQtZXh0LAorCU1lYXN1cmVkUmVzdWx0c09uUkFDSCwKKwlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEsCisJTWVhc3VyZW1lbnRDb21tYW5kLAorCU1lYXN1cmVtZW50Q29tbWFuZC1yNCwKKwlNZWFzdXJlbWVudENvbW1hbmQtcjYsCisJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCisJUHJpbWFyeUNDUENILVJTQ1AsCisJU0ZOLU9mZnNldC1WYWxpZGl0eSwKKwlUaW1lc2xvdExpc3RXaXRoSVNDUCwKKwlUcmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEsCisJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dCwKKwlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudC12N3h5ZXh0LAorCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLAorCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0ZXh0LAorCVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQiwKKwlWZWxvY2l0eUVzdGltYXRlLAorCVVFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzLXI3LAorLS0gT3RoZXIgSUVzIDoKKwlCQ0NILU1vZGlmaWNhdGlvbkluZm8sCisJQ0RNQTIwMDAtTWVzc2FnZUxpc3QsCisJR1NNLVRhcmdldENlbGxJbmZvTGlzdCwKKwlHRVJBTkl1LU1lc3NhZ2VMaXN0LAorCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uLAorCUdTTS1NZXNzYWdlTGlzdCwKKwlJbnRlclJBVC1DaGFuZ2VGYWlsdXJlQ2F1c2UsCisJSW50ZXJSQVQtSE8tRmFpbHVyZUNhdXNlLAorCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QsCisJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQsCisJSW50ZXJSQVQtVUUtU2VjdXJpdHlDYXBMaXN0LAorCUludHJhRG9tYWluTmFzTm9kZVNlbGVjdG9yLAorCVByb3RvY29sRXJyb3JNb3JlSW5mb3JtYXRpb24sCisJUnBsbW4tSW5mb3JtYXRpb24sCisJUnBsbW4tSW5mb3JtYXRpb24tcjQsCisJU2VnQ291bnQsCisJU2VnbWVudEluZGV4LAorCVNGTi1QcmltZSwKKwlTSUItRGF0YS1maXhlZCwKKwlTSUItRGF0YS12YXJpYWJsZSwKKwlTSUItVHlwZSwKKy0tIE1CTVMgSUVzOgorCU1CTVMtQ2VsbEdyb3VwSWRlbnRpdHktcjYsCisJTUJNUy1Db21tb25SQkluZm9ybWF0aW9uTGlzdC1yNiwKKwlNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSExpc3QtcjYsCisJTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNiwKKwlNQk1TLU1JQ0hDb25maWd1cmF0aW9uSW5mby1yNiwKKwlNQk1TLU1JQ0hDb25maWd1cmF0aW9uSW5mby1yNywKKwlNQk1TLU1vZGlmZWRTZXJ2aWNlTGlzdC1yNiwKKwlNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYsCisJTUJNUy1OZWlnaGJvdXJpbmdDZWxsU0NDUENITGlzdC1yNiwKKwlNQk1TLU51bWJlck9mTmVpZ2hib3VyQ2VsbHMtcjYsCisJTUJNUy1QaHlDaEluZm9ybWF0aW9uTGlzdC1yNiwKKwlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYsCisJTUJNUy1QcmVmZXJyZWRGcmVxUmVxdWVzdC1yNiwKKwlNQk1TLVByZWZlcnJlZEZyZXF1ZW5jeUxpc3QtcjYsCisJTUJNUy1QVE1BY3RpdmF0aW9uVGltZS1yNiwKKwlNQk1TLVNlcnZpY2VBY2Nlc3NJbmZvTGlzdC1yNiwKKwlNQk1TLVNlcnZpY2VJZGVudGl0eS1yNiwKKwlNQk1TLVNlcnZpY2VTY2hlZHVsaW5nSW5mb0xpc3QtcjYsCisJTUJNUy1TSUJUeXBlNS1TQ0NQQ0hMaXN0LXI2LAorCU1CTVMtVGltZXJzQW5kQ291bnRlcnMtcjYsCisJTUJNUy1UcmFuc3BDaEluZm9Gb3JFYWNoQ0NUckNoLXI2LAorCU1CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaFRyQ2gtcjYsCisJTUJNUy1Vbm1vZGlmaWVkU2VydmljZUxpc3QtcjYKK0ZST00gSW5mb3JtYXRpb25FbGVtZW50cworCisJbWF4U0lCcGVyTXNnLAorCW1heFVSTlRJLUdyb3VwCitGUk9NIENvbnN0YW50LWRlZmluaXRpb25zOworCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBBQ1RJVkUgU0VUIFVQREFURSAoRkREIG9ubHkpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FjdGl2ZVNldFVwZGF0ZSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlhY3RpdmVTZXRVcGRhdGUtcjMJCQkJQWN0aXZlU2V0VXBkYXRlLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJYWN0aXZlU2V0VXBkYXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCWFjdGl2ZVNldFVwZGF0ZS12NGIwZXh0CQlBY3RpdmVTZXRVcGRhdGUtdjRiMGV4dC1JRXMsCisJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQlhY3RpdmVTZXRVcGRhdGUtdjU5MGV4dAkJCUFjdGl2ZVNldFVwZGF0ZS12NTkwZXh0LUlFcywKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJYWN0aXZlU2V0VXBkYXRlLXY2OTBleHQJCQlBY3RpdmVTZXRVcGRhdGUtdjY5MGV4dC1JRXMsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfSBPUFRJT05BTAorCQl9IE9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlhY3RpdmVTZXRVcGRhdGUtcjYJCQkJQWN0aXZlU2V0VXBkYXRlLXI2LUlFcywKKwkJCQlhY3RpdmVTZXRVcGRhdGUtcjYtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCX0KKwl9Cit9CisKK0FjdGl2ZVNldFVwZGF0ZS1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJZHVtbXkyCQkJCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3VS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJLS0gZHVtbXkzIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkzCQkJCQkJREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJcmwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QJCVJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCisJCXJsLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCVJMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwkJdHgtRGl2ZXJzaXR5TW9kZQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJCQlPUFRJT05BTCwKKwkJLS0gZHVtbXk0IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXk0CQkJCQkJCVNTRFQtSW5mb3JtYXRpb24JCQkJCU9QVElPTkFMCit9CisKK0FjdGl2ZVNldFVwZGF0ZS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKKwkJLS0gaW4gSUUgUkwtQWRkaXRpb25JbmZvcm1hdGlvbkxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworQWN0aXZlU2V0VXBkYXRlLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZHBjLU1vZGUJCQkJCQkJRFBDLU1vZGUsCisJCWRsLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitBY3RpdmVTZXRVcGRhdGUtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwKK30KKworQWN0aXZlU2V0VXBkYXRlLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlhY3RpdmF0aW9uVGltZQkJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ld1UtUk5USQkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdILVJOVEkJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQlybC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdAkJCVJMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LXI2CQlPUFRJT05BTCwKKwkJcmwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdAkJCVJMLVJlbW92YWxJbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwkJdHgtRGl2ZXJzaXR5TW9kZQkJCQkJVFgtRGl2ZXJzaXR5TW9kZQkJCQkJT1BUSU9OQUwsCisJCWRwYy1Nb2RlCQkJCQkJCURQQy1Nb2RlCQkJCQkJCU9QVElPTkFMLAorCQlzZXJ2aW5nLUhTRFNDSC1DZWxsSW5mb3JtYXRpb24JCVNlcnZpbmctSFNEU0NILUNlbGxJbmZvcm1hdGlvbgkJT1BUSU9OQUwsCisJCWUtZGNoLVJlY29uZmlndXJhdGlvbkluZm8JCQlFLURDSC1SZWNvbmZpZ3VyYXRpb25JbmZvCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQUNUSVZFIFNFVCBVUERBVEUgQ09NUExFVEUgKEZERCBvbmx5KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBY3RpdmVTZXRVcGRhdGVDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQktLSBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkyCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkdW1teTMJCQkJCQlVTC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWFjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBBQ1RJVkUgU0VUIFVQREFURSBGQUlMVVJFIChGREQgb25seSkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQWN0aXZlU2V0VXBkYXRlRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlhY3RpdmVTZXRVcGRhdGVGYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEFzc2lzdGFuY2UgRGF0YSBEZWxpdmVyeQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5IDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnktcjMJCUFzc2lzdGFuY2VEYXRhRGVsaXZlcnktcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlhc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXYzYTBleHQJQXNzaXN0YW5jZURhdGFEZWxpdmVyeS12M2EwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQlhc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCisJCQkJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjRiMGV4dAorCQkJCQkJCQkJCQkJCUFzc2lzdGFuY2VEYXRhRGVsaXZlcnktdjRiMGV4dC1JRXMsCisJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gTWVhc3VyZW1lbnQgSW5mb3JtYXRpb24gRWxlbWVudHMKKwl1ZS1wb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQlVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCQlPUFRJT05BTAorfQorCitBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwlzZm4tT2Zmc2V0LVZhbGlkaXR5CQkJCQlTRk4tT2Zmc2V0LVZhbGlkaXR5CQlPUFRJT05BTAorfQorCitBc3Npc3RhbmNlRGF0YURlbGl2ZXJ5LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJdWUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjRleHQJT1BUSU9OQUwKK30KKworIC0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIENFTEwgQ0hBTkdFIE9SREVSIEZST00gVVRSQU4KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTi1JRXMJCUNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTi1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLXY1OTBleHQJQ2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLXY1OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQktLSB0aGUgSUUgcmFiLUluZm9ybWF0aW9uTGlzdCBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuIFRoZSBJRSBtYXkgYmUgdXNlZCBpbiBhIGxhdGVyCisJCS0tIHZlcnNpb24gb2YgdGhlIHByb3RvY29sIGFuZCBoZW5jZSBpdCBpcyBub3QgY2hhbmdlZCBpbnRvIGEgZHVtbXkKKwkJcmFiLUluZm9ybWF0aW9uTGlzdAkJCQlSQUItSW5mb3JtYXRpb25MaXN0CQkJCQlPUFRJT05BTCwKKwkJaW50ZXJSQVQtVGFyZ2V0Q2VsbERlc2NyaXB0aW9uCUludGVyUkFULVRhcmdldENlbGxEZXNjcmlwdGlvbgorfQorCitDZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU4tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsJCQorCQlnZXJhbi1TeXN0ZW1JbmZvVHlwZQkJCQlDSE9JQ0UJewkJCisJCQlzSQkJCQkJCQkJCUdFUkFOLVN5c3RlbUluZm9ybWF0aW9uLAorCQkJcFNJCQkJCQkJCQkJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24KKwkJfQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ0VMTCBDSEFOR0UgT1JERVIgRlJPTSBVVFJBTiBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFORmFpbHVyZS1yMworCQkJCQkJCQkJCUNlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUtcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQljZWxsQ2hhbmdlT3JkZXJGcm9tVVRSQU5GYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kIGl0CisJLS0gc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK0NlbGxDaGFuZ2VPcmRlckZyb21VVFJBTkZhaWx1cmUtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWludGVyUkFULUNoYW5nZUZhaWx1cmVDYXVzZQkJSW50ZXJSQVQtQ2hhbmdlRmFpbHVyZUNhdXNlCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIENFTEwgVVBEQVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NlbGxVcGRhdGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdS1STlRJCQkJCQkJCVUtUk5USSwKKwkJc3RhcnRMaXN0CQlTVEFSVExpc3QsCisJCWFtLVJMQy1FcnJvckluZGljYXRpb25SYjItM29yNAkJQk9PTEVBTiwKKwkJYW0tUkxDLUVycm9ySW5kaWNhdGlvblJiNW9yQWJvdmUJQk9PTEVBTiwKKwkJY2VsbFVwZGF0ZUNhdXNlCQkJCQlDZWxsVXBkYXRlQ2F1c2UsCisJCS0tIFRBQlVMQVI6IFJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIGlzIG5lc3RlZCBpbiBGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyclRySWQKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyclRySWQJCQlPUFRJT05BTCwKKwkJcmItdGltZXItaW5kaWNhdG9yCQkJCVJiLXRpbWVyLWluZGljYXRvciwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQljZWxsVXBkYXRlLXIzLWFkZC1leHQJCQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7CisJCQkJY2VsbFVwZGF0ZS12NTkwZXh0CUNlbGxVcGRhdGUtdjU5MGV4dCwgCisJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQljZWxsVXBkYXRlLXY2OTBleHQJCQkJQ2VsbFVwZGF0ZS12NjkwZXh0LUlFcywKKwkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZS12N3h5ZXh0CQkJCUNlbGxVcGRhdGUtdjd4eWV4dC1JRXMsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGUtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCWVzdGFibGlzaG1lbnRDYXVzZQkJCQlFc3RhYmxpc2htZW50Q2F1c2UJT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZS12NjkwZXh0LUlFcyA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWNlbGxVcGRhdGVDYXVzZS1leHQJCQkJQ2VsbFVwZGF0ZUNhdXNlLWV4dAkJCQkJT1BUSU9OQUwsCisJCXRyYWZmaWNWb2x1bWVJbmRpY2F0b3IJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJT1BUSU9OQUwsCisJCXJlY29uZmlndXJhdGlvblN0YXR1c0luZGljYXRvcglFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlLXY3eHlleHQtSUVzIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBDYWxsIFR5cGUgSUUKKwkJY3NDYWxsVHlwZQkJCQkJCUVOVU1FUkFURUQgeyBzcGVlY2gsIHZpZGVvLCBvdGhlciwgc3BhcmUgfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBDRUxMIFVQREFURSBDT05GSVJNCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NlbGxVcGRhdGVDb25maXJtIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWNlbGxVcGRhdGVDb25maXJtLXIzCQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQljZWxsVXBkYXRlQ29uZmlybS12M2EwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12M2EwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQljZWxsVXBkYXRlQ29uZmlybS1yMy1hZGQtZXh0CUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NGIwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NGIwZXh0LUlFcywKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQtSUVzLAorCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0LUlFcywKKwkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAorCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjQJCQlDZWxsVXBkYXRlQ29uZmlybS1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNC1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dC1JRXMsCisJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQljZWxsVXBkYXRlQ29uZmlybS1yNQkJCUNlbGxVcGRhdGVDb25maXJtLXI1LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjUtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI2CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjYtSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI2LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI3CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjctSUVzLAorCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC04CisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjctYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworQ2VsbFVwZGF0ZUNvbmZpcm0tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmIyLTNvcjQJCUJPT0xFQU4sCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjVvckFib3ZlCQlCT09MRUFOLAorCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNUcmFuc0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQkJT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZUNvbmZpcm0tdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIKKwktLSBpcyB1bnNwZWNpZmllZAorCW5ldy1EU0NILVJOVEkJCQkJRFNDSC1STlRJCQkJCQkJCQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlQ29uZmlybS12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKKwkJLS0gaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQorCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGVDb25maXJtLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgeworCS0tUmFkaW8gQmVhcmVyIElFcworCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMCit9CitDZWxsVXBkYXRlQ29uZmlybS1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmIyLTNvcjQJCUJPT0xFQU4sCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjVvckFib3ZlCUJPT0xFQU4sCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNAkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljVHJhbnNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQJCQlPUFRJT05BTAorfQorCitDZWxsVXBkYXRlQ29uZmlybS1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiMi0zb3I0CQlCT09MRUFOLAorCQlybGMtUmUtZXN0YWJsaXNoSW5kaWNhdG9yUmI1b3JBYm92ZQlCT09MRUFOLAorCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjUJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNUcmFuc0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNQkJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGVDb25maXJtLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjItM29yNAkJQk9PTEVBTiwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiNW9yQWJvdmUJCUJPT0xFQU4sCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2CQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI2CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMgOjo9CVNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisJCS0tIElmIGluY2x1ZGVkIGluIHRoZSByMyBvciByNCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCB0aGUgVUUgc2hvdWxkIGlnbm9yZSB0aGUgSUUKKwkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQkJCQkJT1BUSU9OQUwsCisJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAorCQlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJCWRocy1zeW5jCQkJCQkJREhTLVN5bmMJCQkJCQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK0NlbGxVcGRhdGVDb25maXJtLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJCXJsYy1SZS1lc3RhYmxpc2hJbmRpY2F0b3JSYjItM29yNAkJQk9PTEVBTiwKKwkJcmxjLVJlLWVzdGFibGlzaEluZGljYXRvclJiNW9yQWJvdmUJCUJPT0xFQU4sCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJiLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2CQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNwkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ0VMTCBVUERBVEUgQ09ORklSTSBmb3IgQ0NDSAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDZWxsVXBkYXRlQ29uZmlybS1DQ0NIIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQkJdS1STlRJCQkJCQkJVS1STlRJLAorCQktLSBUaGUgcmVzdCBvZiB0aGUgbWVzc2FnZSBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBzZW50IG9uIERDQ0guCisJCQljZWxsVXBkYXRlQ29uZmlybS1yMwkJCQlDZWxsVXBkYXRlQ29uZmlybS1yMy1JRXMsCisJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCWNlbGxVcGRhdGVDb25maXJtLUNDQ0gtcjMtYWRkLWV4dAkJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NGIwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NGIwZXh0LUlFcywKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjU5MGV4dC1JRXMsCisJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJQ2VsbFVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gVGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2UgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgorCQkJCWNlbGxVcGRhdGVDb25maXJtLXI0CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCWNlbGxVcGRhdGVDb25maXJtLUNDQ0gtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY1OTBleHQtSUVzLAorCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0LUlFcywKKwkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQJCUNlbGxVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAorCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjUJCQlDZWxsVXBkYXRlQ29uZmlybS1yNS1JRXMsCisJCQkJCWNlbGxVcGRhdGVDb25maXJtLUNDQ0gtcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CisJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NWQwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQljZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0CQlDZWxsVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0sCQkKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWNlbGxVcGRhdGVDb25maXJtLXI2CQkJQ2VsbFVwZGF0ZUNvbmZpcm0tcjYtSUVzLAorCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjYtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjcJCQlDZWxsVXBkYXRlQ29uZmlybS1yNy1JRXMsCisJCQkJCQkJY2VsbFVwZGF0ZUNvbmZpcm0tcjctYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ09VTlRFUiBDSEVDSworLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3VudGVyQ2hlY2sgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY291bnRlckNoZWNrLXIzCQkJCQlDb3VudGVyQ2hlY2stcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQljb3VudGVyQ2hlY2stcjMtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK0NvdW50ZXJDaGVjay1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJiLUNPVU5ULUMtTVNCLUluZm9ybWF0aW9uTGlzdAlSQi1DT1VOVC1DLU1TQi1JbmZvcm1hdGlvbkxpc3QKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ09VTlRFUiBDSEVDSyBSRVNQT05TRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3VudGVyQ2hlY2tSZXNwb25zZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmItQ09VTlQtQy1JbmZvcm1hdGlvbkxpc3QJCVJCLUNPVU5ULUMtSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWNvdW50ZXJDaGVja1Jlc3BvbnNlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBET1dOTElOSyBESVJFQ1QgVFJBTlNGRVIKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworRG93bmxpbmtEaXJlY3RUcmFuc2ZlciA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlkb3dubGlua0RpcmVjdFRyYW5zZmVyLXIzCQlEb3dubGlua0RpcmVjdFRyYW5zZmVyLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJZG93bmxpbmtEaXJlY3RUcmFuc2Zlci1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK0Rvd25saW5rRGlyZWN0VHJhbnNmZXItcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJbmFzLU1lc3NhZ2UJCQkJCQlOQVMtTWVzc2FnZQorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBIQU5ET1ZFUiBUTyBVVFJBTiBDT01NQU5ECistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKworSGFuZG92ZXJUb1VUUkFOQ29tbWFuZCA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQloYW5kb3ZlclRvVVRSQU5Db21tYW5kLXIzCQlIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXIzLUlFcywKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKKwl9LAorCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNAkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNC1JRXMsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfSwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjUJCUhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjUtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjYJCUhhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjYtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJaGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNwkJSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNy1JRXMsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQluZXctVS1STlRJCQkJCQkJVS1STlRJLVNob3J0LAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nQWxnb3JpdGhtCQkJCUNpcGhlcmluZ0FsZ29yaXRobQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJCQkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QJCQlPUFRJT05BTCwKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8sCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8sCisJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLAorCQkJCQkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbiBPUFRJT05BTCwKKwkJCQkJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm8JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJTlVMTAorCQkJCX0sCisJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbiwKKwkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdCwKKwkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CistLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAorLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHkKKwkJCQkJfQorCQkJCX0sCisJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1Qb3N0CQlPUFRJT05BTCwKKwkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0RkRELAorCQkJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0CQlETC1Db21tb25JbmZvcm1hdGlvblBvc3QsCisJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCisJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvRkRECisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERCwKKwkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAorCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQsCisJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCit9CisKK0hhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEktU2hvcnQsCisJCWNpcGhlcmluZ0FsZ29yaXRobQkJCQlDaXBoZXJpbmdBbGdvcml0aG0JCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LAorCQkJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0CQkJT1BUSU9OQUwsCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0LAorCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI0LAorCQkJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwKKwkJCQkJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24gT1BUSU9OQUwsCisJCQkJCQlkdW1teTIJCQkJCQkJQ1BDSC1TZXRJbmZvCQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJCQl9LAorCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQsCisJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQsCisJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbworCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKy0tIG9uZSBmb3IgdGhlIEZERCBvbmx5IGVsZW1lbnRzIGFuZCBvbmUgZm9yIHRoZSBUREQgb25seSBlbGVtZW50cywgc28gdGhhdCBvbmUKKy0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI0CisJCQkJCX0KKwkJCQl9LAorCQkJCXJhYi1JbmZvCQkJCQkJUkFCLUluZm8tUG9zdAkJT1BUSU9OQUwsCisJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdEZERCwKKwkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAorCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3RQb3N0RkRELAorCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb0ZERAorCQkJCQl9LAorCQkJCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CisJCQkJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERCwKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKKwkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJCQkJfSwKKwkJCQkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELUxDUi1yNCwKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERC1MQ1ItcjQsCisJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKKwkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIKK30KKworSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USS1TaG9ydCwKKwkJY2lwaGVyaW5nQWxnb3JpdGhtCQkJCUNpcGhlcmluZ0FsZ29yaXRobQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCisJCQkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUJCQlPUFRJT05BTCwKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUsCisJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjUsCisJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLAorCQkJCQkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbiBPUFRJT05BTCwKKwkJCQkJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm8JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJTlVMTAorCQkJCX0sCisJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNCwKKwkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNSwKKwkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CistLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAorLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjUKKwkJCQkJfQorCQkJCX0sCisJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1Qb3N0CQlPUFRJT05BTCwKKwkJCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0RkRELAorCQkJCQkJZGwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0CQlETC1Db21tb25JbmZvcm1hdGlvblBvc3QsCisJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQsCisJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvRkRECisJCQkJCX0sCisJCQkJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKKwkJCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm9Qb3N0VERELAorCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9LAorCQkJCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RUREQtTENSLXI0LAorCQkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0VERELUxDUi1yNCwKKwkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgorfQorCitIYW5kb3ZlclRvVVRSQU5Db21tYW5kLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQluZXctVS1STlRJCQkJCQkJVS1STlRJLVNob3J0LAorCQljaXBoZXJpbmdBbGdvcml0aG0JCQkJQ2lwaGVyaW5nQWxnb3JpdGhtCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKwkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1LAorCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI2LAorCQkJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQkJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2LAorCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2LAorCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8KKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAorCQkJCS0tIG9uZSBmb3IgdGhlIEZERCBvbmx5IGVsZW1lbnRzIGFuZCBvbmUgZm9yIHRoZSBUREQgb25seSBlbGVtZW50cywgc28gdGhhdCBvbmUKKwkJCQktLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCisJCQkJcHJlQ29uZmlnTW9kZQkJCQkJQ0hPSUNFIHsKKwkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNgorCQkJCQl9CisJCQkJfSwKKwkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLVBvc3QJCU9QVElPTkFMLAorCQkJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RGREQsCisJCQkJCQlkbC1Db21tb25JbmZvcm1hdGlvblBvc3QJCURMLUNvbW1vbkluZm9ybWF0aW9uUG9zdCwKKwkJCQkJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0UG9zdEZERCwKKwkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9GREQKKwkJCQkJfSwKKwkJCQkJdGRkCQkJCQkJCQlDSE9JQ0UgeworCQkJCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mb1Bvc3RUREQsCisJCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQsCisJCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb1RERCwKKwkJCQkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCQkJCX0sCisJCQkJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQsCisJCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0LAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCit9CisKK0hhbmRvdmVyVG9VVFJBTkNvbW1hbmQtcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEktU2hvcnQsCisJCWNpcGhlcmluZ0FsZ29yaXRobQkJCQlDaXBoZXJpbmdBbGdvcml0aG0JCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKwkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0LAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1LAorCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3LAorCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQsCisJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcsCisJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbworCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2CisJCQkJCX0KKwkJCQl9LAorCQkJCXJhYi1JbmZvCQkJCQkJUkFCLUluZm8tUG9zdAkJT1BUSU9OQUwsCisJCQkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdEZERCwKKwkJCQkJCWRsLUNvbW1vbkluZm9ybWF0aW9uUG9zdAkJREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0LAorCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3RQb3N0RkRELAorCQkJCQkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mb0ZERAorCQkJCQl9LAorCQkJCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CisJCQkJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvUG9zdFRERCwKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtUG9zdFRERCwKKwkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJCQkJfSwKKwkJCQkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcsCisJCQkJCQkJZGwtSW5mb3JtYXRpb25QZXJSTAkJCQlETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0LAorCQkJCQkJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm9UREQsCisJCQkJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQkJCQl9LAorCQkJCQkJdGRkNzY4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNywKKwkJCQkJCQlkbC1JbmZvcm1hdGlvblBlclJMCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNywKKwkJCQkJCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvVERELAorCQkJCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBIQU5ET1ZFUiBUTyBVVFJBTiBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitIYW5kb3ZlclRvVVRSQU5Db21wbGV0ZSA6Oj0gU0VRVUVOQ0UgeworCS0tVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJLS0gVEFCVUxBUjogc3RhcnRMaXN0IGlzIGNvbmRpdGlvbmFsIG9uIGhpc3RvcnkuCisJCXN0YXJ0TGlzdAkJCQkJCVNUQVJUTGlzdAkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQloYW5kb3ZlclRvVVRSQU5Db21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gSU5JVElBTCBESVJFQ1QgVFJBTlNGRVIKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworSW5pdGlhbERpcmVjdFRyYW5zZmVyIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJaW50cmFEb21haW5OYXNOb2RlU2VsZWN0b3IJCUludHJhRG9tYWluTmFzTm9kZVNlbGVjdG9yLAorCQluYXMtTWVzc2FnZQkJCQkJCU5BUy1NZXNzYWdlLAorCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJaW5pdGlhbERpcmVjdFRyYW5zZmVyLXYzYTBleHQJSW5pdGlhbERpcmVjdFRyYW5zZmVyLXYzYTBleHQsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCWluaXRpYWxEaXJlY3RUcmFuc2Zlci1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJaW5pdGlhbERpcmVjdFRyYW5zZmVyLXY1OTBleHQJSW5pdGlhbERpcmVjdFRyYW5zZmVyLXY1OTBleHQsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCWluaXRpYWxEaXJlY3RUcmFuc2Zlci12NjkwZXh0CUluaXRpYWxEaXJlY3RUcmFuc2Zlci12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK0luaXRpYWxEaXJlY3RUcmFuc2Zlci12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gc3RhcnQtdmFsdWUgc2hhbGwgYWx3YXlzIGJlIGluY2x1ZGVkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wKKwlzdGFydC1WYWx1ZQkJCQkJCVNUQVJULVZhbHVlCQkJCQkJCU9QVElPTkFMCit9CitJbml0aWFsRGlyZWN0VHJhbnNmZXItdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCWVzdGFibGlzaG1lbnRDYXVzZQkJRXN0YWJsaXNobWVudENhdXNlCU9QVElPTkFMCit9CisKK0luaXRpYWxEaXJlY3RUcmFuc2Zlci12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcGxtbi1JZGVudGl0eQkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLUpvaW5lZEluZm9ybWF0aW9uCQkJTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEhBTkRPVkVSIEZST00gVVRSQU4gQ09NTUFORAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjMKKwkJCQkJCQkJCQlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXIzLUlFcywKKwkJLS0gVVRSQU4gc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBJRSBsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucyB3aGVuIGl0IHNldHMgdGhlIElFIAorCQktLSBnc20tbWVzc2FnZSBpbmNsdWRlZCBpbiBoYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXIzIHRvIHNpbmdsZS1HU00tTWVzc2FnZS4gVGhlIFVFCisJCS0tIGJlaGF2aW91ciB1cG9uIHJlY2VpdmluZyBhIG1lc3NhZ2Ugd2l0aCB0aGlzIGNvbWJpbmF0aW9uIG9mIElFIHZhbHVlcyBpcyB1bnNwZWNpZmllZC4KKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJLS0gVVRSQU4gbWF5IGFwcGx5IHRoZSByMyB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlIHRvIHBlcmZvcm0gUFMgaGFuZG92ZXIKKwkJCS0tIGZvciBhIHNpbmdsZSBSQUIgb25seQorCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tdjY5MGV4dAlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjYJCUhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjYtSUVzLAorCQkJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1HU00tcjYtYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQl9CisJfQorfQorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXRvSGFuZG92ZXJSQUItSW5mbwkJCQlSQUItSW5mbwkJCQkJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJZnJlcXVlbmN5LWJhbmQJCQkJCUZyZXF1ZW5jeS1CYW5kLAorCS0tIE90aGVyIElFcworCQlnc20tbWVzc2FnZQkJCQkJCUNIT0lDRSB7CisJCQktLSBJbiB0aGUgc2luZ2xlLUdTTS1NZXNzYWdlIGNhc2UgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToKKwkJCS0tIDE+IHRoZSBHU00gbWVzc2FnZSBkaXJlY3RseSBmb2xsb3dzIHRoZSBiYXNpYyBwcm9kdWN0aW9uOyB0aGUgZmluYWwgcGFkZGluZyB0aGF0CisJCQktLSAgICByZXN1bHRzIHdoZW4gUEVSIGVuY29kaW5nIHRoZSBhYnN0cmFjdCBzeW50YXggdmFsdWUgaXMgcmVtb3ZlZCBwcmlvciB0byBhcHBlbmRpbmcgCisJCQktLSAgICB0aGUgR1NNIG1lc3NhZ2UuCisJCQktLSAyPiB0aGUgUlJDIG1lc3NhZ2UgZXhjbHVkaW5nIHRoZSBHU00gcGFydCwgZG9lcyBub3QgY29udGFpbiBhIGxlbmd0aCBkZXRlcm1pbmFudDsgCisJCQktLSAgICB0aGVyZSBpcyBubyBleHBsaWNpdCBwYXJhbWV0ZXIgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUgaW5jbHVkZWQgR1NNIG1lc3NhZ2UuCisJCQktLSAzPiBkZXBlbmRpbmcgb24gbmVlZCwgZmluYWwgcGFkZGluZyAoYWxsINIw03MpIGlzIGFkZGVkIHRvIGVuc3VyZSB0aGUgZmluYWwgcmVzdWx0CisJCQktLSAgICBjb21wcmlzZXMgYSBmdWxsIG51bWJlciBvZiBvY3RldHMKKwkJCXNpbmdsZS1HU00tTWVzc2FnZQkJCQlTRVFVRU5DRSB7fSwKKwkJCWdzbS1NZXNzYWdlTGlzdAkJCQkJU0VRVUVOQ0UgeworCQkJCWdzbS1NZXNzYWdlcwkJCQkJR1NNLU1lc3NhZ2VMaXN0CisJCQl9CisJCX0KK30KKworSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdTTS1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQl0b0hhbmRvdmVyUkFCLUluZm8JCQkJUkFCLUluZm9ybWF0aW9uTGlzdC1yNgkJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJZnJlcXVlbmN5LWJhbmQJCQkJCUZyZXF1ZW5jeS1CYW5kLAorCS0tIE90aGVyIElFcworCQlnc20tbWVzc2FnZQkJCQkJCUNIT0lDRSB7CisJCQktLSBJbiB0aGUgc2luZ2xlLUdTTS1NZXNzYWdlIGNhc2UgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToKKwkJCS0tIDE+IHRoZSBHU00gbWVzc2FnZSBkaXJlY3RseSBmb2xsb3dzIHRoZSBiYXNpYyBwcm9kdWN0aW9uOyB0aGUgZmluYWwgcGFkZGluZyB0aGF0CisJCQktLSAgICByZXN1bHRzIHdoZW4gUEVSIGVuY29kaW5nIHRoZSBhYnN0cmFjdCBzeW50YXggdmFsdWUgaXMgcmVtb3ZlZCBwcmlvciB0byBhcHBlbmRpbmcgCisJCQktLSAgICB0aGUgR1NNIG1lc3NhZ2UuCisJCQktLSAyPiB0aGUgUlJDIG1lc3NhZ2UgZXhjbHVkaW5nIHRoZSBHU00gcGFydCwgZG9lcyBub3QgY29udGFpbiBhIGxlbmd0aCBkZXRlcm1pbmFudDsgCisJCQktLSAgICB0aGVyZSBpcyBubyBleHBsaWNpdCBwYXJhbWV0ZXIgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUgaW5jbHVkZWQgR1NNIG1lc3NhZ2UuCisJCQktLSAzPiBkZXBlbmRpbmcgb24gbmVlZCwgZmluYWwgcGFkZGluZyAoYWxsINIw03MpIGlzIGFkZGVkIHRvIGVuc3VyZSB0aGUgZmluYWwgcmVzdWx0CisJCQktLSAgICBjb21wcmlzZXMgYSBmdWxsIG51bWJlciBvZiBvY3RldHMKKwkJCXNpbmdsZS1HU00tTWVzc2FnZQkJCQlTRVFVRU5DRSB7fSwKKwkJCWdzbS1NZXNzYWdlTGlzdAkJCQkJU0VRVUVOQ0UgeworCQkJCWdzbS1NZXNzYWdlcwkJCQkJR1NNLU1lc3NhZ2VMaXN0CisJCQl9CisJCX0sCisJCWdlcmFuLVN5c3RlbUluZm9UeXBlCQkJCUNIT0lDRQl7CQkKKwkJCXNJCQkJCQkJCQkJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24sCisJCQlwU0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbgorCQl9CQlPUFRJT05BTAorfQorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR1NNLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWdlcmFuLVN5c3RlbUluZm9UeXBlCQkJCUNIT0lDRQl7CQkKKwkJCXNJCQkJCQkJCQkJR0VSQU4tU3lzdGVtSW5mb3JtYXRpb24sCisJCQlwU0kJCQkJCQkJCQlHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbgorCQl9CQlPUFRJT05BTAorfQorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdSA6Oj0gU0VRVUVOQ0UgeworCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUJQ0hPSUNFIHsKKwkJcjUJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdS1yNQorCQkJCQkJCQkJCQlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdS1yNS1JRXMsCisJCQktLSBVVFJBTiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIElFIG5vbkNyaXRpY2FsRXh0ZW5zaW9ucyB3aGVuIGl0IHNldHMKKwkJCS0tIHRoZSBJRSBnZXJhbkl1LW1lc3NhZ2UgaW5jbHVkZWQgaW4gaGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUdFUkFOSXUtcjUgdG8gCisJCQktLSBzaW5nbGUtR0VSQU5JdS1NZXNzYWdlCisJCQktLSBUaGUgVUUgYmVoYXZpb3VyIHVwb24gcmVjZWl2aW5nIGEgbWVzc2FnZSBpbmNsdWRpbmcgdGhpcyBjb21iaW5hdGlvbiBvZiBJRSB2YWx1ZXMgaXMKKwkJCS0tIG5vdCBzcGVjaWZpZWQKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCX0sCisJCWxhdGVyLXRoYW4tcjUJCQkJCVNFUVVFTkNFIHsKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQl9CisJfQorfQorCitIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtR0VSQU5JdS1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCWZyZXF1ZW5jeS1CYW5kCQkJCQlGcmVxdWVuY3ktQmFuZCwKKwktLSBPdGhlciBJRXMKKwkJZ2VyYW5JdS1NZXNzYWdlCQkJCQkJQ0hPSUNFIHsKKwkJCS0tIEluIHRoZSBzaW5nbGUtR0VSQU5JdS1NZXNzYWdlIGNhc2UgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseToKKwkJCS0tIDE+IHRoZSBHRVJBTiBJdSBtZXNzYWdlIGRpcmVjdGx5IGZvbGxvd3MgdGhlIGJhc2ljIHByb2R1Y3Rpb247IHRoZSBmaW5hbCBwYWRkaW5nIHRoYXQKKwkJCS0tICAgIHJlc3VsdHMgd2hlbiBQRVIgZW5jb2RpbmcgdGhlIGFic3RyYWN0IHN5bnRheCB2YWx1ZSBpcyByZW1vdmVkIHByaW9yIHRvIGFwcGVuZGluZyAKKwkJCS0tICAgIHRoZSBHRVJBTiBJdSBtZXNzYWdlLgorCQkJLS0gMj4gdGhlIFJSQyBtZXNzYWdlIGV4Y2x1ZGluZyB0aGUgR0VSQU4gSXUgcGFydCBkb2VzIG5vdCBjb250YWluIGEgbGVuZ3RoIGRldGVybWluYW50OyAKKy0tICAgIHRoZXJlIGlzIG5vIGV4cGxpY2l0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZSBpbmNsdWRlZCBHRVJBTiBJdQorLS0gICAgbWVzc2FnZS4KKwkJCS0tIDM+IGRlcGVuZGluZyBvbiBuZWVkLCBmaW5hbCBwYWRkaW5nIChhbGwg0jDTcykgaXMgYWRkZWQgdG8gZW5zdXJlIHRoZSBmaW5hbCByZXN1bHQKKwkJCS0tICAgIGNvbXByaXNlcyBhIGZ1bGwgbnVtYmVyIG9mIG9jdGV0cy4KKwkJCXNpbmdsZS1HRVJBTkl1LU1lc3NhZ2UJCQlTRVFVRU5DRSB7fSwKKwkJCWdlcmFuSXUtTWVzc2FnZUxpc3QJCQkJU0VRVUVOQ0UgeworCQkJCWdlcmFuSXUtTWVzc2FnZXMJCQkJR0VSQU5JdS1NZXNzYWdlTGlzdAorCQkJfQorCQl9Cit9CisKK0hhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMCA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQloYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAtcjMKKwkJCQkJCQkJCQlIYW5kb3ZlckZyb21VVFJBTkNvbW1hbmQtQ0RNQTIwMDAtcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucyAKKwkJCWhhbmRvdmVyRnJvbVVUUkFOQ29tbWFuZC1DRE1BMjAwMC1yMy1hZGQtZXh0CQkKKwkJCQkJCQkJCQkJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworSGFuZG92ZXJGcm9tVVRSQU5Db21tYW5kLUNETUEyMDAwLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXRvSGFuZG92ZXJSQUItSW5mbwkJCQlSQUItSW5mbwkJCQkJCQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJY2RtYTIwMDAtTWVzc2FnZUxpc3QJCQlDRE1BMjAwMC1NZXNzYWdlTGlzdAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBIQU5ET1ZFUiBGUk9NIFVUUkFOIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworSGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gT3RoZXIgSUVzCisJCWludGVyUkFULUhPLUZhaWx1cmVDYXVzZQkJSW50ZXJSQVQtSE8tRmFpbHVyZUNhdXNlCQkJT1BUSU9OQUwsCisJCS0tIEluIGNhc2UgdGhlIGludGVyUkFUTWVzc2FnZSB0byBiZSB0cmFuc2ZlcnJlZCBpcyBmb3IgR0VSQU4gSXUgbW9kZSwgdGhlCisJCS0tIG1lc3NhZ2Ugc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgSGFuZG92ZXJGcm9tVXRyYW5GYWlsdXJlLXY1OTBleHQtSUVzCisJCS0tIG5vbi1jcml0aWNhbCBleHRlbnNpb24gY29udGFpbmVyLgorCQlpbnRlclJBVE1lc3NhZ2UJCQkJCUNIT0lDRSB7CisJCQlnc20JCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlnc20tTWVzc2FnZUxpc3QJCQkJCQlHU00tTWVzc2FnZUxpc3QKKwkJCX0sCisJCQljZG1hMjAwMAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJY2RtYTIwMDAtTWVzc2FnZUxpc3QJCQkJQ0RNQTIwMDAtTWVzc2FnZUxpc3QKKwkJCX0KKwkJfQkJCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJaGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJT1BUSU9OQUwsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJaGFuZG92ZXJGcm9tVVRSQU5GYWlsdXJlLXY1OTBleHQJSGFuZG92ZXJGcm9tVXRyYW5GYWlsdXJlLXY1OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK0hhbmRvdmVyRnJvbVV0cmFuRmFpbHVyZS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWdlcmFuSXUtTWVzc2FnZUxpc3QJCQkJCQlHRVJBTkl1LU1lc3NhZ2VMaXN0CQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gSU5URVIgUkFUIEhBTkRPVkVSIElORk8KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworSW50ZXJSQVRIYW5kb3ZlckluZm8gOjo9IFNFUVVFTkNFIHsKKwktLSBUaGlzIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCA0NC4wMTgKKwlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJQ0hPSUNFIHsKKwkJYWJzZW50CQkJCQkJCU5VTEwsCisJCXByZXNlbnQJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QKKwl9LAorCXVFLVNlY3VyaXR5SW5mb3JtYXRpb24JCQlDSE9JQ0UgeworCQlhYnNlbnQJCQkJCQkJTlVMTCwKKwkJcHJlc2VudAkJCQkJCQlVRS1TZWN1cml0eUluZm9ybWF0aW9uCisJfSwKKwl1ZS1DYXBhYmlsaXR5Q29udGFpbmVyCQkJQ0hPSUNFIHsKKwkJYWJzZW50CQkJCQkJCU5VTEwsCisJCS0tIHByZXNlbnQgaXMgYW4gb2N0ZXQgYWxpZ25lZCBzdHJpbmcgY29udGFpbmluZyBJRSBVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlJbmZvCisJCXByZXNlbnQJCQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICgwLi42MykpCisJfSwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCXYzOTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCUNIT0lDRSB7CisJCWFic2VudAkJCQkJCQlOVUxMLAorCQlwcmVzZW50CQkJCQkJCVNFUVVFTkNFIHsKKwkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXYzOTBleHQJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjM5MGV4dC1JRXMsCisJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSAgeworCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXYzYTBleHQJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNhMGV4dC1JRXMsCisJCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjNkMGV4dCAJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNkMGV4dC1JRXMsCisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCisJCQkJCQkJCShDT05UQUlOSU5HIEludGVyUkFUSGFuZG92ZXJJbmZvLXIzLWFkZC1leHQtSUVzKQlPUFRJT05BTCwKKwkJCQkJdjNnME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXYzZzBleHQJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNnMGV4dC1JRXMsCisJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjRiMGV4dAlJbnRlclJBVEhhbmRvdmVySW5mby12NGIwZXh0LUlFcywKKwkJCQkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCWludGVyUkFUSGFuZG92ZXJJbmZvLXY0ZDBleHQJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjRkMGV4dC1JRXMsCisJCQkJCQkJCS0tIFJlc2VydmVkIGZvciBmdXR1cmUgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbgorCQkJCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCQlpbnRlclJBVEhhbmRvdmVySW5mby12NTkwZXh0CisJCQkJCQkJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjU5MGV4dC1JRXMsCisJCQkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dAorCQkJCQkJCQkJCQkJCQkJCUludGVyUkFUSGFuZG92ZXJJbmZvLXY2OTBleHQtSUVzLAorCQkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm8tdjd4eWV4dAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJSW50ZXJSQVRIYW5kb3ZlckluZm8tdjd4eWV4dC1JRXMsCisJCQkJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQkJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CisJfQorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12MzkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAkJT1BUSU9OQUwsCisJCWRsLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0Cit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CQlPUFRJT05BTAorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12M2QwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjNnMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJCU9QVElPTkFMCit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXIzLWFkZC1leHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWludGVyUkFUSGFuZG92ZXJJbmZvLXY2OTBleHQxCQlJbnRlclJBVEhhbmRvdmVySW5mby12NjkwZXh0MS1JRXMsCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXY0ZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJdGRkMTI4LVJGLUNhcGFiaWxpdHkJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3RDb21wCQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdENvbXAJCQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcAkJCU9QVElPTkFMCit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvLXY2OTBleHQxLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2NTBleHQJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm8tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtU2VjdXJpdHlJbmZvcm1hdGlvbjIJCQkJVUUtU2VjdXJpdHlJbmZvcm1hdGlvbjIJCQkJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wCQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wLWV4dAkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAyCQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlDb21wMgorfQorCitJbnRlclJBVEhhbmRvdmVySW5mby12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUNvbXAtcjcJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNRUFTVVJFTUVOVCBDT05UUk9MCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01lYXN1cmVtZW50Q29udHJvbCA6Oj0gQ0hPSUNFIHsKKwktLSBUaGUgUmVsLTQgZnVuY3Rpb25hbGl0eSBvZiBVRSBQb3NpdGlvbmluZyBPVERPQSBBc3Npc3RhbmNlRGF0YSBUREQgaXMgb25seSBhdmFpbGFibGUKKwktLSBpbiB0aGUgbGF0ZXItdGhhbi1yMyBicmFuY2ggb2YgdGhpcyBtZXNzYWdlIChpLmUuIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgSUUKKwktLSB1ZS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1yNCkKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQltZWFzdXJlbWVudENvbnRyb2wtcjMJCQlNZWFzdXJlbWVudENvbnRyb2wtcjMtSUVzLAorCQl2Mzkwbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQltZWFzdXJlbWVudENvbnRyb2wtdjM5MGV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXYzOTBleHQsCisJCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCW1lYXN1cmVtZW50Q29udHJvbC12M2EwZXh0CQkJTWVhc3VyZW1lbnRDb250cm9sLXYzYTBleHQsCisJCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJCW1lYXN1cmVtZW50Q29udHJvbC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0V7CisJCQkJCQktLSBUaGUgY29udGVudCBvZiB0aGUgdjRiMCBub24tY3JpdGljYWwgZXh0ZW5zaW9uIGhhcyBiZWVuIHJlbW92ZWQuIElmIHNlbnQgCisJCQkJCQktLSB0byBhIFVFIG9mIEFTIHJlbGVhc2UgNCwgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4gQSBVRSBvZiBBUyAKKwkJCQkJCS0tIHJlbGVhc2UgNSBvbndhcmQgc2hhbGwgY29tcGx5IHdpdGggdGhlIHY0YjAgYW5kIGxhdGVyIGV4dGVuc2lvbnMgaW4gdGhpcyAKKwkJCQkJCS0tIGJyYW5jaCBvZiB0aGUgbWVzc2FnZS4KKwkJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQltZWFzdXJlbWVudENvbnRyb2wtdjU5MGV4dAkJTWVhc3VyZW1lbnRDb250cm9sLXY1OTBleHQtSUVzLAorCQkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NWIwZXh0LUlFcywKKwkJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQJCU1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0LUlFcywKKwkJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCQl9CQkJCQkJT1BUSU9OQUwKKwkJCQkJCQl9CQkJCQkJT1BUSU9OQUwKKwkJCQkJCX0JCQkJCQlPUFRJT05BTAorCQkJCQl9CQkJCQkJT1BUSU9OQUwKKwkJCQl9CQkJCQkJT1BUSU9OQUwKKwkJCX0JCQkJCQlPUFRJT05BTAorCQl9CQkJCQkJT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCW1lYXN1cmVtZW50Q29udHJvbC1yNAkJCU1lYXN1cmVtZW50Q29udHJvbC1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRXsKKwkJCQkJCW1lYXN1cmVtZW50Q29udHJvbC12NTkwZXh0CQlNZWFzdXJlbWVudENvbnRyb2wtdjU5MGV4dC1JRXMsCisJCQkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY1YjBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NWIwZXh0LUlFcywKKwkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCW1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0CQlNZWFzdXJlbWVudENvbnRyb2wtdjd4eWV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQlsYXRlci10aGFuLXI0CQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gTW9zdCBzaWduaWZpY2FudCBwYXJ0IG9mICJSUkMgdHJhbnNhY3Rpb24gaWRlbnRpZmllciIgKE1TUCksCisJCQkJLS0gIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiA9IHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQICogNCArIAorCQkJCS0tIHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIKKwkJCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUAkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCW1lYXN1cmVtZW50Q29udHJvbC1yNgkJCU1lYXN1cmVtZW50Q29udHJvbC1yNi1JRXMsCisJCQkJCQl2NmEwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJbWVhc3VyZW1lbnRDb250cm9sLXY2YTBleHQJCU1lYXN1cmVtZW50Q29udHJvbC12NmEwZXh0LUlFcywKKwkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCW1lYXN1cmVtZW50Q29udHJvbC12N3h5ZXh0CQlNZWFzdXJlbWVudENvbnRyb2wtdjd4eWV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitNZWFzdXJlbWVudENvbnRyb2wtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW1lYXN1cmVtZW50SWRlbnRpdHkJCU1lYXN1cmVtZW50SWRlbnRpdHksCisJCS0tIFRBQlVMQVI6IFRoZSBtZWFzdXJlbWVudCB0eXBlIGlzIGluY2x1ZGVkIGluIE1lYXN1cmVtZW50Q29tbWFuZC4KKwkJbWVhc3VyZW1lbnRDb21tYW5kCQkJCU1lYXN1cmVtZW50Q29tbWFuZCwKKwkJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKKwkJYWRkaXRpb25hbE1lYXN1cmVtZW50TGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZHBjaC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JRFBDSC1Db21wcmVzc2VkTW9kZVN0YXR1c0luZm8JCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50Q29udHJvbC12MzkwZXh0IDo6PSBTRVFVRU5DRSB7CisJCXVlLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXYzOTBleHQJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXYzOTBleHQJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwlzZm4tT2Zmc2V0LVZhbGlkaXR5CQkJCVNGTi1PZmZzZXQtVmFsaWRpdHkJCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50Q29udHJvbC1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZW1lbnRJZGVudGl0eQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwkJLS0gVEFCVUxBUjogVGhlIG1lYXN1cmVtZW50IHR5cGUgaXMgaW5jbHVkZWQgaW4gbWVhc3VyZW1lbnRDb21tYW5kLgorCQltZWFzdXJlbWVudENvbW1hbmQJCQkJTWVhc3VyZW1lbnRDb21tYW5kLXI0LAorCQltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAorCQlhZGRpdGlvbmFsTWVhc3VyZW1lbnRMaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkcGNoLUNvbXByZXNzZWRNb2RlU3RhdHVzSW5mbwlEUENILUNvbXByZXNzZWRNb2RlU3RhdHVzSW5mbwkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRDb21tYW5kLXY1OTBleHQgCQkJQ0hPSUNFIHsKKwkJLS0gdGhlIGNob2ljZSDSaW50cmEtZnJlcXVlbmN50yBzaGFsbCBiZSB1c2VkIGZvciB0aGUgY2FzZSBvZiBpbnRyYS1mcmVxdWVuY3kgbWVhc3VyZW1lbnQsCisJCS0tIGFzIHdlbGwgYXMgd2hlbiBpbnRyYS1mcmVxdWVuY3kgZXZlbnRzIGFyZSBjb25maWd1cmVkIGZvciBpbnRlci1mcmVxdWVuY3kgbWVhc3VyZW1lbnQKKwkJaW50cmEtZnJlcXVlbmN5CQkJCQkJSW50cmEtRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQsCisJCWludGVyLWZyZXF1ZW5jeQkJCQkJCUludGVyLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0CisJfQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CU9QVElPTkFMLAorCWludHJhRnJlcUV2ZW50LTFkLXI1CQkJCQlJbnRyYUZyZXFFdmVudC0xZC1yNQkJCQlPUFRJT05BTCwKKwktLSBtb3N0IHNpZ25pZmljYW50IHBhcnQgb2YgIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiAoTVNQKSwKKwktLSAiUlJDIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIiID0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AtdjU5MGV4dCAqIDQgKyAKKwktLSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCisJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AtdjU5MGV4dAlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCit9CisKK01lYXN1cmVtZW50Q29udHJvbC12NWIwZXh0LUlFcyA6Oj0gCVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXI2LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlbWVudElkZW50aXR5CQlNZWFzdXJlbWVudElkZW50aXR5LAorCQktLSBUQUJVTEFSOiBUaGUgbWVhc3VyZW1lbnQgdHlwZSBpcyBpbmNsdWRlZCBpbiBtZWFzdXJlbWVudENvbW1hbmQuCisJCW1lYXN1cmVtZW50Q29tbWFuZAkJCQlNZWFzdXJlbWVudENvbW1hbmQtcjYsCisJCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCisJCWFkZGl0aW9uYWxNZWFzdXJlbWVudExpc3QJCUFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWRwY2gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvCURQQ0gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvCQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudENvbnRyb2wtdjZhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRDb250cm9sLXY3eHlleHQtSUVzIDo6PQlTRVFVRU5DRSB7CisJdWUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjd4eWV4dAkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjd4eWV4dAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNRUFTVVJFTUVOVCBDT05UUk9MIEZBSUxVUkUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQltZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCW1lYXN1cmVtZW50Q29udHJvbEZhaWx1cmUtdjU5MGV4dAkJTWVhc3VyZW1lbnRDb250cm9sRmFpbHVyZS12NTkwZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitNZWFzdXJlbWVudENvbnRyb2xGYWlsdXJlLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gbW9zdCBzaWduaWZpY2FudCBwYXJ0IG9mICJSUkMgdHJhbnNhY3Rpb24gaWRlbnRpZmllciIgKE1TUCksCisJLS0gIlJSQyB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIiA9IHJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQLXY1OTBleHQgKiA0ICsgCisJLS0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgorCS0tIElmIHRoZSBycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLU1TUC12NTkwZXh0IHdhcyBub3QgcmVjZWl2ZWQgaW4gdGhlIE1FQVNVUkVNRU5UIENPTlRST0wgCisJLS0gbWVzc2FnZSwgdGhlbiB0aGUgcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllci1NU1AtdjU5MGV4dCBzaGFsbCBiZSBzZXQgdG8gemVybworCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXItTVNQLXY1OTBleHQJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllcgorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNRUFTVVJFTUVOVCBSRVBPUlQKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTWVhc3VyZW1lbnRSZXBvcnQgOjo9IFNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZW1lbnRJZGVudGl0eQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwkJbWVhc3VyZWRSZXN1bHRzCQkJCQlNZWFzdXJlZFJlc3VsdHMJCQkJCQlPUFRJT05BTCwKKwkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAorCQlhZGRpdGlvbmFsTWVhc3VyZWRSZXN1bHRzCQlNZWFzdXJlZFJlc3VsdHNMaXN0CQkJCQlPUFRJT05BTCwKKwkJZXZlbnRSZXN1bHRzCQkJCQlFdmVudFJlc3VsdHMJCQkJCQlPUFRJT05BTCwKKwktLSBOb24tY3JpdGljYWwgZXh0ZW5zaW9ucworCQl2Mzkwbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJbWVhc3VyZW1lbnRSZXBvcnQtdjM5MGV4dAkJTWVhc3VyZW1lbnRSZXBvcnQtdjM5MGV4dCwKKwkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJbWVhc3VyZW1lbnRSZXBvcnQtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQltZWFzdXJlbWVudFJlcG9ydC12NGIwZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12NGIwZXh0LUlFcywKKwkJCQkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLVJlbDQgaW5mb3JtYXRpb24KKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7CisJCQkJCQltZWFzdXJlbWVudFJlcG9ydC12NTkwZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12NTkwZXh0LUlFcywKKwkJCQkJCXY1YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQltZWFzdXJlbWVudFJlcG9ydC12NWIwZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12NWIwZXh0LUlFcywKKwkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQltZWFzdXJlbWVudFJlcG9ydC12NjkwZXh0CQlNZWFzdXJlbWVudFJlcG9ydC12NjkwZXh0LUlFcywKKwkJCQkJCQkJCisJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCW1lYXN1cmVtZW50UmVwb3J0LXY3eHlleHQJCU1lYXN1cmVtZW50UmVwb3J0LXY3eHlleHQtSUVzLAorCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJT1BUSU9OQUwKKwkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQkJT1BUSU9OQUwKKwkJCQl9CQlPUFRJT05BTAorCQkJfQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRSZXBvcnQtdjM5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCQltZWFzdXJlZFJlc3VsdHMtdjM5MGV4dAkJCU1lYXN1cmVkUmVzdWx0cy12MzkwZXh0CQkJCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50UmVwb3J0LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJaW50ZXJGcmVxRXZlbnRSZXN1bHRzLUxDUgkJSW50ZXJGcmVxRXZlbnRSZXN1bHRzLUxDUi1yNC1leHQJCU9QVElPTkFMLAorCS0tIGFkZGl0aW9uYWxNZWFzdXJlZFJlc3VsdHMtTENSIHNoYWxsIGNvbnRhaW4gbWVhc3VyZW1lbnQgcmVzdWx0cyBhbmQgYWRkaXRpb25hbCBtZWFzdXJlbWVudAorCS0tIHJlc3VsdHMgbGlzdC4KKwlhZGRpdGlvbmFsTWVhc3VyZWRSZXN1bHRzLUxDUglNZWFzdXJlZFJlc3VsdHNMaXN0LUxDUi1yNC1leHQJCQlPUFRJT05BTCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uIEl0IHNob3VsZCBub3QgYmUgc2VudCBhbmQKKwktLSBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50UmVwb3J0LXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJbWVhc3VyZWRSZXN1bHRzLXY1OTBleHQJCQkJTWVhc3VyZWRSZXN1bHRzLXY1OTBleHQJCQkJT1BUSU9OQUwKK30KKworTWVhc3VyZW1lbnRSZXBvcnQtdjViMGV4dC1JRXMgOjo9IAlTRVFVRU5DRSB7CisJaW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24JCQlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50UmVwb3J0LXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJbWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxCQlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50UmVwb3J0LXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJdmVsb2NpdHlFc3RpbWF0ZQkJCQkJVmVsb2NpdHlFc3RpbWF0ZQkJCQkJT1BUSU9OQUwsCisJdWUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMJCQlVRS1JbnRlcm5hbE1lYXN1cmVkUmVzdWx0cy1yNwkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUEFHSU5HIFRZUEUgMQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitQYWdpbmdUeXBlMSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlwYWdpbmdSZWNvcmRMaXN0CQkJCVBhZ2luZ1JlY29yZExpc3QJCQkJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQliY2NoLU1vZGlmaWNhdGlvbkluZm8JCQlCQ0NILU1vZGlmaWNhdGlvbkluZm8JCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXBhZ2luZ1R5cGUxLXIzLWFkZC1leHQJCQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlwYWdpbmdUeXBlMS12NTkwZXh0CQkJCVBhZ2luZ1R5cGUxLXY1OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1BhZ2luZ1R5cGUxLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXBhZ2luZ1JlY29yZDJMaXN0CQkJCVBhZ2luZ1JlY29yZDJMaXN0LXI1CQkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFBBR0lORyBUWVBFIDIKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUGFnaW5nVHlwZTIgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJcGFnaW5nQ2F1c2UJCQkJCQlQYWdpbmdDYXVzZSwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQlwYWdpbmdSZWNvcmRUeXBlSUQJCQkJUGFnaW5nUmVjb3JkVHlwZUlELAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlwYWdpbmdUeXBlMi1yMy1hZGQtZXh0CQkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBQSFlTSUNBTCBDSEFOTkVMIFJFQ09ORklHVVJBVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzCisJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzLUlFcywKKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12M2EwZXh0CQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCwKKwkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXIzLWFkZC1leHQJCQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY0YjBleHQKKwkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NGIwZXh0LUlFcywKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAorCQkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAkJCisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQKKwkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNC1JRXMsCisJCQkJdjRkME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NTkwZXh0CisJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQJCQorCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1CisJCQkJCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAkJCisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNgorCQkJCQkJCQkJCQkJCQlQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKKwkJCQkJCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI3CisJCQkJCQkJCQkJCQkJCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1JRXMsCisJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKKwkJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctYWRkLWV4dAlCSVQgU1RSSU5HCU9QVElPTkFMLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfSwKKwkJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90CisJCS0tIGNoYW5nZWQgdG8ga2VlcCBpdCBhbGlnbmVkIHdpdGggUjk5LgorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnRXaXRoQ1BDSC1TZXRJRAkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyCisJLS0gaXMgdW5zcGVjaWZpZWQKKwluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSBpbiBJRSBETC1JbmZvcm1hdGlvblBlclJMLUxpc3QgaW5jbHVkZWQgaW4gdGhpcyBtZXNzYWdlCisJCWNlbGwtaWQtUGVyUkwtTGlzdAkJCQkJQ2VsbElkZW50aXR5LVBlclJMLUxpc3QJCQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQktLSBOb3RlOiB0aGUgcmVmZXJlbmNlIHRvIENQQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QuIFRoZSBuYW1lIGlzIG5vdAorCQktLSBjaGFuZ2VkIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjQJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0CQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKKwkJLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElELXI1CU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCWRlbGF5UmVzdHJpY3Rpb25GbGFnCQkJRGVsYXlSZXN0cmljdGlvbkZsYWcJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIEVxdWlwbWVudCBJRXMKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZyAJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gVGhlIElFIGhhcnEtUHJlYW1ibGUtTW9kZSBzaG91bGQgbm90IGJlIHVzZWQgaW4gdGhlIHIzIGFuZCByNCB2ZXJzaW9ucyBvZiB0aGUgbWVzc2FnZQorCQktLSBJZiBpbmNsdWRlZCBpbiB0aGUgcjMgb3IgcjQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgdGhlIFVFIHNob3VsZCBpZ25vcmUgdGhlIElFCisJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUJCQkJCU9QVElPTkFMLAorCQliZWFjb25QTEVzdAkJCQkJCUJFQUNPTi1QTC1Fc3QJCQkJCQlPUFRJT05BTCwKKwkJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCQlkaHMtc3luYwkJCQkJCURIUy1TeW5jCQkJCQkJCU9QVElPTkFMLAorCQl0aW1pbmdNYWludGFpbmVkU3luY2hJbmQJCVRpbWluZ01haW50YWluZWRTeW5jaEluZAkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCWRlbGF5UmVzdHJpY3Rpb25GbGFnCQkJRGVsYXlSZXN0cmljdGlvbkZsYWcJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFBIWVNJQ0FMIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OIENPTVBMRVRFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKKwkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgorCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwkJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJcGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dAorCQkJCQkJCQkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMgOjo9CVNFUVVFTkNFIHsKKwkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBQSFlTSUNBTCBDSEFOTkVMIFJFQ09ORklHVVJBVElPTiBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJCU9QVElPTkFMLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUEhZU0lDQUwgU0hBUkVEIENIQU5ORUwgQUxMT0NBVElPTiAoVEREIG9ubHkpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1BoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi1yMworCQkJCQkJCQkJCVBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlkc2NoLVJOVEkJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlwaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXI0CisJCQkJCQkJCQkJCQlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tdjY5MGV4dAorCQkJCQkJCQkJCQkJCQlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCXBoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tdjd4eWV4dAorCQkJCQkJCQkJCQkJCQlQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXY3eHlleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQkJT1BUSU9OQUwKKwkJCQl9CQlPUFRJT05BTAorCQkJfSwKKwkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCQl9CisJfQorfQorCitQaHlzaWNhbFNoYXJlZENoYW5uZWxBbGxvY2F0aW9uLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlkc2NoLVJOVEkJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJdWwtVGltaW5nQWR2YW5jZQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbAkJCQlPUFRJT05BTCwKKwkJcHVzY2gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbwlQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJcGRzY2gtQ2FwYWNpdHlBbGxvY2F0aW9uSW5mbwlQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJLS0gVEFCVUxBUjogSWYgY29uZmlybVJlcXVlc3QgaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0IHZhbHVlICJObyBDb25maXJtIgorCQktLSBzaGFsbCBiZSB1c2VkIGFzIHNwZWNpZmllZCBpbiAxMC4yLjI1LgkJCisJCWNvbmZpcm1SZXF1ZXN0CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQkJY29uZmlybVBEU0NILCBjb25maXJtUFVTQ0ggfQlPUFRJT05BTCwKKwkJdHJhZmZpY1ZvbHVtZVJlcG9ydFJlcXVlc3QJCUlOVEVHRVIgKDAuLjI1NSkJCQkJCU9QVElPTkFMLAkKKwkJaXNjcFRpbWVzbG90TGlzdAkJCQkJVGltZXNsb3RMaXN0CQkJCQkJT1BUSU9OQUwsCisJCXJlcXVlc3RQQ0NQQ0hSU0NQCQkJCQlCT09MRUFOCit9CisKK1BoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJdWwtVGltaW5nQWR2YW5jZQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNAkJCU9QVElPTkFMLAorCQlwdXNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQJCU9QVElPTkFMLAorCQlwZHNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQJCU9QVElPTkFMLAorCQktLSBUQUJVTEFSOiBJZiBjb25maXJtUmVxdWVzdCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUgIk5vIENvbmZpcm0iCisJCS0tIHNoYWxsIGJlIHVzZWQgYXMgc3BlY2lmaWVkIGluIDEwLjIuMjUuCQkKKwkJY29uZmlybVJlcXVlc3QJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCQljb25maXJtUERTQ0gsIGNvbmZpcm1QVVNDSCB9CU9QVElPTkFMLAorCQl0cmFmZmljVm9sdW1lUmVwb3J0UmVxdWVzdAkJSU5URUdFUiAoMC4uMjU1KQkJCQkJT1BUSU9OQUwsCisJCWlzY3BUaW1lc2xvdExpc3QJCQkJVGltZXNsb3RMaXN0LXI0CQkJCQkJT1BUSU9OQUwsCisJCXJlcXVlc3RQQ0NQQ0hSU0NQCQkJCUJPT0xFQU4KK30KKworUGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIENoYW5uZWwgSUVzCisJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMCit9CisKK1BoeXNpY2FsU2hhcmVkQ2hhbm5lbEFsbG9jYXRpb24tdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJdWwtVGltaW5nQWR2YW5jZQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNwkJCU9QVElPTkFMLAorCQlwdXNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcJCU9QVElPTkFMLAorCQlwZHNjaC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvCVBEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFBVU0NIIENBUEFDSVRZIFJFUVVFU1QgKFRERCBvbmx5KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitQVVNDSENhcGFjaXR5UmVxdWVzdCA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlkc2NoLVJOVEkJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCXRyYWZmaWNWb2x1bWUJCQkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHNMaXN0CU9QVElPTkFMLAorCQl0aW1lc2xvdExpc3RXaXRoSVNDUAkJCVRpbWVzbG90TGlzdFdpdGhJU0NQCQkJCU9QVElPTkFMLAorCQlwcmltYXJ5Q0NQQ0gtUlNDUAkJCQlQcmltYXJ5Q0NQQ0gtUlNDUAkJCQkJT1BUSU9OQUwsCisJCWFsbG9jYXRpb25Db25maXJtYXRpb24JCQlDSE9JQ0UgeworCQkJcGRzY2hDb25maXJtYXRpb24JCQkJUERTQ0gtSWRlbnRpdHksCisJCQlwdXNjaENvbmZpcm1hdGlvbgkJCQlQVVNDSC1JZGVudGl0eQorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJcHJvdG9jb2xFcnJvckluZGljYXRvcgkJCVByb3RvY29sRXJyb3JJbmRpY2F0b3JXaXRoTW9yZUluZm8sCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXB1c2NoQ2FwYWNpdHlSZXF1ZXN0LXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXB1c2NoQ2FwYWNpdHlSZXF1ZXN0LXY1OTBleHQJUFVTQ0hDYXBhY2l0eVJlcXVlc3QtdjU5MGV4dCwKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJfQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitQVVNDSENhcGFjaXR5UmVxdWVzdC12NTkwZXh0IDo6PSBTRVFVRU5DRSB7CisJcHJpbWFyeUNDUENILVJTQ1AtZGVsdGEJCQkJRGVsdGFSU0NQCQkJT1BUSU9OQUwKK30KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJBRElPIEJFQVJFUiBSRUNPTkZJR1VSQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjMJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjMtSUVzLAorCQktLSBQcmVmaXggInYzYW8iIGlzIHVzZWQgKGluIG9uZSBpbnN0YW5jZSkgdG8ga2VlcCBhbGlnbm1lbnQgd2l0aCBSOTkKKwkJdjNhb05vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dAlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12M2EwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NGIwZXh0CQorCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAkKKwkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCisJCQkJCQl2NWQwTm9uQ3JpdGljYWxFeHRlbnN0aW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NWQwZXh0CisJCQkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NWQwZXh0LUlFcywKKwkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY2OTBleHQKKwkJCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjQJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAkKKwkJCQkJCQkJCQkJCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NTkwZXh0LUlFcywKKwkJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQKKwkJCQkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAorCQkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI1LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjVkMGV4dAlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NWQwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAorCQkJCQkJCQkJCQkJCQkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNgkJUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjYtSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKKwkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI2LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJCXI3CQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI3CQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNy1JRXMsCisJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTggCQkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9LAorCQkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gTk9URTogSUUgcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3Qgc2hvdWxkIGJlIG9wdGlvbmFsIGluIGxhdGVyIHZlcnNpb25zCisJCS0tIG9mIHRoaXMgbWVzc2FnZQorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mbzJMaXN0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCS0tIE5PVEU6IElFIGRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdCBpcyBvcHRpb25hbCBpbiBsYXRlciB2ZXJzaW9ucworCQktLSBvZiB0aGlzIG1lc3NhZ2UKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QKK30KKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIKKwktLSBpcyB1bnNwZWNpZmllZAorCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKKwkJLS0gaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQorCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NWQwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tUmFkaW8gQmVhcmVyIElFcworCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNAkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjQJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNCAJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIAorCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBSYWRpbyBiZWFyZXIgSUVzCisJCQkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjUJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNQkJT1BUSU9OQUwsCisJCQkJcmItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAlSQi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CQlPUFRJT05BTCwKKwkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlCisJCQkJLS0gc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJdGRkCQkJCQkJCQlOVUxMCisJCQkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwKKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKwkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQktLSBvbmUgZm9yIHRoZSBGREQgb25seSBlbGVtZW50cyBhbmQgb25lIGZvciB0aGUgVEREIG9ubHkgZWxlbWVudHMsIHNvIHRoYXQgb25lCisJCQktLSBGREQvVEREIGNob2ljZSBpbiB0aGlzIGxldmVsIGlzIHN1ZmZpY2llbnQuCisJCQkJcHJlQ29uZmlnTW9kZQkJCQkJQ0hPSUNFIHsKKwkJCQkJcHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5CQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJCQkJCWRlZmF1bHRDb25maWcJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCQkJZGVmYXVsdENvbmZpZ0lkZW50aXR5IAkJCURlZmF1bHRDb25maWdJZGVudGl0eS1yNQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjUJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUgCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBTcGVjaWZpY2F0aW9uIG1vZGUgaW5mb3JtYXRpb24KKwkJc3BlY2lmaWNhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCWNvbXBsZXRlCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gUmFkaW8gYmVhcmVyIElFcworCQkJCXJhYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkFCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQkJCXJiLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJUkItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAkJT1BUSU9OQUwsCisJCQkJcGRjcC1ST0hDLVRhcmdldE1vZGUJCQlQRENQLVJPSEMtVGFyZ2V0TW9kZQkJCQlPUFRJT05BTCwKKwkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQktLSBBbGwgSUVzIHRoYXQgaW5jbHVkZSBhbiBGREQvVEREIGNob2ljZSBhcmUgc3BsaXQgaW4gdHdvIElFcyBmb3IgdGhpcyBtZXNzYWdlLAorCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJLS0gRkREL1RERCBjaG9pY2UgaW4gdGhpcyBsZXZlbCBpcyBzdWZmaWNpZW50LgorCQkJCXByZUNvbmZpZ01vZGUJCQkJCUNIT0lDRSB7CisJCQkJCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJUHJlZGVmaW5lZENvbmZpZ0lkZW50aXR5LAorCQkJCQlkZWZhdWx0Q29uZmlnCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgRXF1aXBtZW50IElFcworCQlkZWxheVJlc3RyaWN0aW9uRmxhZwkJCURlbGF5UmVzdHJpY3Rpb25GbGFnCQkJCU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKKwkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQorCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCQkJCQlPUFRJT05BTCwKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCisJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwkJZGhzLXN5bmMJCQkJCQlESFMtU3luYwkJCQkJCQlPUFRJT05BTCwKKwkJdGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24tcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCWRlbGF5UmVzdHJpY3Rpb25GbGFnCQkJRGVsYXlSZXN0cmljdGlvbkZsYWcJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlyYi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CVJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QJCU9QVElPTkFMLAorCQkJCXBkY3AtUk9IQy1UYXJnZXRNb2RlCQkJUERDUC1ST0hDLVRhcmdldE1vZGUJCQkJT1BUSU9OQUwsCisJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAorCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJLS0gQWxsIElFcyB0aGF0IGluY2x1ZGUgYW4gRkREL1RERCBjaG9pY2UgYXJlIHNwbGl0IGluIHR3byBJRXMgZm9yIHRoaXMgbWVzc2FnZSwKKwkJCS0tIG9uZSBmb3IgdGhlIEZERCBvbmx5IGVsZW1lbnRzIGFuZCBvbmUgZm9yIHRoZSBUREQgb25seSBlbGVtZW50cywgc28gdGhhdCBvbmUKKwkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNwkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkFESU8gQkVBUkVSIFJFQ09ORklHVVJBVElPTiBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKKwkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgorCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwkJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQKKwkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uQ29tcGxldGUtdjd4eWV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWV4dC11bC1UaW1pbmdBZHZhbmNlCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkFESU8gQkVBUkVSIFJFQ09ORklHVVJBVElPTiBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyUmVjb25maWd1cmF0aW9uRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcG90ZW50aWFsbHlTdWNjZXNmdWxCZWFyZXJMaXN0CVJCLUlkZW50aXR5TGlzdAkJCQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJBRElPIEJFQVJFUiBSRUxFQVNFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JhZGlvQmVhcmVyUmVsZWFzZSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlyYWRpb0JlYXJlclJlbGVhc2UtcjMJCQlSYWRpb0JlYXJlclJlbGVhc2UtcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlyYWRpb0JlYXJlclJlbGVhc2UtdjNhMGV4dAkJUmFkaW9CZWFyZXJSZWxlYXNlLXYzYTBleHQsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS12NGIwZXh0CQlSYWRpb0JlYXJlclJlbGVhc2UtdjRiMGV4dC1JRXMsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS12NTkwZXh0CQlSYWRpb0JlYXJlclJlbGVhc2UtdjU5MGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fSBPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI0CQkJUmFkaW9CZWFyZXJSZWxlYXNlLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS12NTkwZXh0CQlSYWRpb0JlYXJlclJlbGVhc2UtdjU5MGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjUJCQlSYWRpb0JlYXJlclJlbGVhc2UtcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjUtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXY2OTBleHQJCVJhZGlvQmVhcmVyUmVsZWFzZS12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNgkJCVJhZGlvQmVhcmVyUmVsZWFzZS1yNi1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNworCQkJCQkJcmFkaW9CZWFyZXJSZWxlYXNlLXI2LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCQlyNwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCXJhZGlvQmVhcmVyUmVsZWFzZS1yNwkJCVJhZGlvQmVhcmVyUmVsZWFzZS1yNy1JRXMsCisJCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKKwkJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UtcjctYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCSAgICAgCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm8yTGlzdAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudAkJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyCisJLS0gaXMgdW5zcGVjaWZpZWQKKwluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1VTAkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBvcmRlciBvZiB0aGUgUkxzIGluIElFIGNlbGwtaWQtUGVyUkwtTGlzdCBpcyB0aGUgc2FtZSBhcworCQktLSAgaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQorCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVsZWFzZS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWRsLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxJbmRpY2F0aW9uCUNOLURvbWFpbklkZW50aXR5CQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQkJT1BUSU9OQUwsCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNAkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVsZWFzZS1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCSAgICAgCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI1CQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJTlVMTAorCQl9LAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNQkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclJlbGVhc2UtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisJCS0tIElmIGluY2x1ZGVkIGluIHRoZSByMyBvciByNCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCB0aGUgVUUgc2hvdWxkIGlnbm9yZSB0aGUgSUUKKwkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQkJCQkJT1BUSU9OQUwsCisJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAorCQlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJCWRocy1zeW5jCQkJCQkJREhTLVN5bmMJCQkJCQkJT1BUSU9OQUwsCisJCXRpbWluZ01haW50YWluZWRTeW5jaEluZAkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMLAorCQltYm1zLVJCLUxpc3RSZWxlYXNlZFRvQ2hhbmdlVHJhbnNmZXJNb2RlCisJCQkJCQkJCQkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVsZWFzZS1yNi1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxJbmRpY2F0aW9uCUNOLURvbWFpbklkZW50aXR5CQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdCwKKwkJcmItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2CQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCURMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI2CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwsCisJCW1ibXMtUkItTGlzdFJlbGVhc2VkVG9DaGFuZ2VUcmFuc2Zlck1vZGUKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJSZWxlYXNlLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCQlzaWduYWxsaW5nQ29ubmVjdGlvblJlbEluZGljYXRpb24JQ04tRG9tYWluSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlyYWItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCVJBQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0CQlSQi1JbmZvcm1hdGlvblJlbGVhc2VMaXN0LAorCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAorCQlyYi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QtcjYJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTCwKKwkJbWJtcy1SQi1MaXN0UmVsZWFzZWRUb0NoYW5nZVRyYW5zZmVyTW9kZQorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSQURJTyBCRUFSRVIgUkVMRUFTRSBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclJlbGVhc2VDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQl1bC1JbnRlZ1Byb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCQkJT1BUSU9OQUwsCisJCS0tIFRBQlVMQVI6IFVMLVRpbWluZ0FkdmFuY2UgaXMgYXBwbGljYWJsZSBmb3IgVEREIG1vZGUgb25seS4KKwkJdWwtVGltaW5nQWR2YW5jZQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWNvdW50LUMtQWN0aXZhdGlvblRpbWUJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KKwkJZHVtbXkJCQkJCQkJUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAorCQl1bC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlVTC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXJhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlLXY3eHlleHQKKwkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlLXY3eHlleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyUmVsZWFzZUNvbXBsZXRlLXY3eHlleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWV4dC11bC1UaW1pbmdBZHZhbmNlCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkFESU8gQkVBUkVSIFJFTEVBU0UgRkFJTFVSRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclJlbGVhc2VGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwb3RlbnRpYWxseVN1Y2Nlc2Z1bEJlYXJlckxpc3QJUkItSWRlbnRpdHlMaXN0CQkJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJhZGlvQmVhcmVyUmVsZWFzZUZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSQURJTyBCRUFSRVIgU0VUVVAKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUmFkaW9CZWFyZXJTZXR1cCA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQlyYWRpb0JlYXJlclNldHVwLXIzCQkJCVJhZGlvQmVhcmVyU2V0dXAtcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlyYWRpb0JlYXJlclNldHVwLXYzYTBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjNhMGV4dCwKKwkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJcmFkaW9CZWFyZXJTZXR1cC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjRiMGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NGIwZXh0LUlFcywKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NTkwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1OTBleHQtSUVzLAorCQkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXY1ZDBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjVkMGV4dC1JRXMsCisJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXY2OTBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9IE9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlyYWRpb0JlYXJlclNldHVwLXI0CQkJCVJhZGlvQmVhcmVyU2V0dXAtcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXJhZGlvQmVhcmVyU2V0dXAtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjU5MGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NTkwZXh0LUlFcywKKwkJCQkJCXY1ZDBOb25Dcml0aWNhbEV4dGVuc3Rpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY1ZDBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0CQlSYWRpb0JlYXJlclNldHVwLXY2OTBleHQtSUVzLAorCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNQkJCQlSYWRpb0JlYXJlclNldHVwLXI1LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNS1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjVkME5vbkNyaXRpY2FsRXh0ZW5zdGlvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXJhZGlvQmVhcmVyU2V0dXAtdjVkMGV4dAkJUmFkaW9CZWFyZXJTZXR1cC12NWQwZXh0LUlFcywKKwkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXY2OTBleHQJCVJhZGlvQmVhcmVyU2V0dXAtdjY5MGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNgkJCQlSYWRpb0JlYXJlclNldHVwLXI2LUlFcywKKwkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC03CisJCQkJCQlyYWRpb0JlYXJlclNldHVwLXI2LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0sCisJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQlyYWRpb0JlYXJlclNldHVwLXI3CQkJCVJhZGlvQmVhcmVyU2V0dXAtcjctSUVzLAorCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC04CisJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cC1yNy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUmFkaW9CZWFyZXJTZXR1cC1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJT1BUSU9OQUwsCisJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8JCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQJCQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyCisJLS0gaXMgdW5zcGVjaWZpZWQKKwluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJTZXR1cC12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKKwkJLS0gaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQorCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXAtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXAtdjVkMGV4dC1JRXMgOjo9CVNFUVVFTkNFIHsKKwktLVJhZGlvIEJlYXJlciBJRXMKKwkJcGRjcC1ST0hDLVRhcmdldE1vZGUJCQlQRENQLVJPSEMtVGFyZ2V0TW9kZQkJCQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJT1BUSU9OQUwsCisJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0CQkJT1BUSU9OQUwsCisJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdAkJCU9QVElPTkFMLAorCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI0CQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJTZXR1cC1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCQktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUJCQlPUFRJT05BTCwKKwkJcmFiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI1CQlPUFRJT05BTCwKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLWRlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCVVMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50LXI1CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY1BoeXNDaEluZm8JCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlETC1QRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24JCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjUJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI1CQkJT1BUSU9OQUwKK30KKworUmFkaW9CZWFyZXJTZXR1cC12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIFRoZSBJRSBoYXJxLVByZWFtYmxlLU1vZGUgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSByMyBhbmQgcjQgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKKwkJLS0gSWYgaW5jbHVkZWQgaW4gdGhlIHIzIG9yIHI0IHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIHRoZSBVRSBzaG91bGQgaWdub3JlIHRoZSBJRQorCQloYXJxLVByZWFtYmxlLU1vZGUJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCQkJCQlPUFRJT05BTCwKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCisJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwkJZGhzLXN5bmMJCQkJCQlESFMtU3luYwkJCQkJCQlPUFRJT05BTCwKKwkJdGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LWV4dAkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK1JhZGlvQmVhcmVyU2V0dXAtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJCQlzcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJCU9QVElPTkFMLAorCQkJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2CQkJT1BUSU9OQUwsCisJCQkJcmFiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QJCQlPUFRJT05BTCwKKwkJCQlyYi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdAkJUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0CQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwsCisJCQkJcGRjcC1ST0hDLVRhcmdldE1vZGUJCQlQRENQLVJPSEMtVGFyZ2V0TW9kZQkJCQlPUFRJT05BTCwKKwkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtZGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJVUwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQkJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJZGwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdAkJREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJCQkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMCisJCQl9LAorCQkJcHJlY29uZmlndXJhdGlvbgkJCQlTRVFVRU5DRSB7CisJCQkJcmFiLUluZm8JCQkJCQlSQUItSW5mby1yNiwKKwkJCQlkZWZhdWx0Q29uZmlnTW9kZQkJCQlEZWZhdWx0Q29uZmlnTW9kZSwKKwkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2LAorCQkJCXJiLUluZm9ybWF0aW9uQ2hhbmdlZExpc3QJCVJCLUluZm9ybWF0aW9uQ2hhbmdlZExpc3QtcjYJCU9QVElPTkFMLAorCQkJCXBvd2VyT2Zmc2V0SW5mb1Nob3J0CQkJUG93ZXJPZmZzZXRJbmZvU2hvcnQKKwkJCX0KKwkJfSwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjYJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwLXI3LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwKKwkJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3UHJpbWFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3U2Vjb25kYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvLXI2CQkJCU9QVElPTkFMLAorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBSYWRpbyBiZWFyZXIgSUVzCisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYJCQlPUFRJT05BTCwKKwkJCQlyYWItSW5mb3JtYXRpb25TZXR1cExpc3QJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNgkJCU9QVElPTkFMLAorCQkJCXJiLUluZm9ybWF0aW9uUmVjb25maWdMaXN0CQlSQi1JbmZvcm1hdGlvblJlY29uZmlnTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJcmItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QJCVJCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwkJCQlwZGNwLVJPSEMtVGFyZ2V0TW9kZQkJCVBEQ1AtUk9IQy1UYXJnZXRNb2RlCQkJCU9QVElPTkFMLAorCQkJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCQkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQl1bC1kZWxldGVkVHJhbnNDaEluZm9MaXN0CQlVTC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJCQlkbC1EZWxldGVkVHJhbnNDaEluZm9MaXN0CQlETC1EZWxldGVkVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwkJCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwKKwkJCX0sCisJCQlwcmVjb25maWd1cmF0aW9uCQkJCVNFUVVFTkNFIHsKKwkJCQlyYWItSW5mbwkJCQkJCVJBQi1JbmZvLXI2LAorCQkJCWRlZmF1bHRDb25maWdNb2RlCQkJCURlZmF1bHRDb25maWdNb2RlLAorCQkJCWRlZmF1bHRDb25maWdJZGVudGl0eSAJCQlEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYsCisJCQkJcmItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdAkJUkItSW5mb3JtYXRpb25DaGFuZ2VkTGlzdC1yNgkJT1BUSU9OQUwsCisJCQkJcG93ZXJPZmZzZXRJbmZvU2hvcnQJCQlQb3dlck9mZnNldEluZm9TaG9ydAorCQkJfQorCQl9LAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1EUENILUluZm8JCQkJCVVMLURQQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMLAorCQl1bC1FRENILUluZm9ybWF0aW9uCQkJCVVMLUVEQ0gtSW5mb3JtYXRpb24tcjYJCQkJT1BUSU9OQUwsCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uLXI3CQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vbkluZm9ybWF0aW9uCQkJREwtQ29tbW9uSW5mb3JtYXRpb24tcjcJCQkJT1BUSU9OQUwsCisJCWRsLUluZm9ybWF0aW9uUGVyUkwtTGlzdAkJREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3CQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJBRElPIEJFQVJFUiBTRVRVUCBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclNldHVwQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAorCQktLSBUQUJVTEFSOiBVTC1UaW1pbmdBZHZhbmNlIGlzIGFwcGxpY2FibGUgZm9yIFRERCBtb2RlIG9ubHkuCisJCXVsLVRpbWluZ0FkdmFuY2UJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQkJT1BUSU9OQUwsCisJCXN0YXJ0LVZhbHVlCQkJCVNUQVJULVZhbHVlCQkJCQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQljb3VudC1DLUFjdGl2YXRpb25UaW1lCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15CQkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJdWwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JVUwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlyYWRpb0JlYXJlclNldHVwQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJcmFkaW9CZWFyZXJTZXR1cENvbXBsZXRlLXY3eHlleHQKKwkJCQkJCQkJCQkJCVJhZGlvQmVhcmVyU2V0dXBDb21wbGV0ZS12N3h5ZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitSYWRpb0JlYXJlclNldHVwQ29tcGxldGUtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSQURJTyBCRUFSRVIgU0VUVVAgRkFJTFVSRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSYWRpb0JlYXJlclNldHVwRmFpbHVyZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlmYWlsdXJlQ2F1c2UJCQkJCUZhaWx1cmVDYXVzZVdpdGhQcm90RXJyLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcG90ZW50aWFsbHlTdWNjZXNmdWxCZWFyZXJMaXN0CVJCLUlkZW50aXR5TGlzdAkJCQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlyYWRpb0JlYXJlclNldHVwRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJSQyBDT05ORUNUSU9OIFJFSkVDVAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkNDb25uZWN0aW9uUmVqZWN0IDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJyY0Nvbm5lY3Rpb25SZWplY3QtcjMJCQlSUkNDb25uZWN0aW9uUmVqZWN0LXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcnJjQ29ubmVjdGlvblJlamVjdC1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJcnJjQ29ubmVjdGlvblJlamVjdC12NjkwZXh0CQlSUkNDb25uZWN0aW9uUmVqZWN0LXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTCAKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlpbml0aWFsVUUtSWRlbnRpdHkJCQkJSW5pdGlhbFVFLUlkZW50aXR5LAorCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK1JSQ0Nvbm5lY3Rpb25SZWplY3QtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWluaXRpYWxVRS1JZGVudGl0eQkJCQlJbml0aWFsVUUtSWRlbnRpdHksCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXJlamVjdGlvbkNhdXNlCQkJCQlSZWplY3Rpb25DYXVzZSwKKwkJd2FpdFRpbWUJCQkJCQlXYWl0VGltZSwKKwkJcmVkaXJlY3Rpb25JbmZvCQkJCQlSZWRpcmVjdGlvbkluZm8JCQkJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uUmVqZWN0LXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJcmVkaXJlY3Rpb25JbmZvLXY2OTBleHQJCQkJR1NNLVRhcmdldENlbGxJbmZvTGlzdAkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJSQyBDT05ORUNUSU9OIFJFTEVBU0UKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUlJDQ29ubmVjdGlvblJlbGVhc2UgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcnJjQ29ubmVjdGlvblJlbGVhc2UtcjMJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsgCisJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dAlSUkNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwgCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXI0CQkJUlJDQ29ubmVjdGlvblJlbGVhc2UtcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CisJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dAorCQkJCQkJCQkJCQkJUlJDQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dC1JRXMsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJfQorCX0KK30KKworUlJDQ29ubmVjdGlvblJlbGVhc2UtcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCS0tIG4tMzA4IGlzIGNvbmRpdGlvbmFsIG9uIHRoZSBVRSBzdGF0ZQorCQluLTMwOAkJCQkJCQlOLTMwOAkJCQkJCQkJT1BUSU9OQUwsCisJCXJlbGVhc2VDYXVzZQkJCQkJUmVsZWFzZUNhdXNlLAorCQlycGxtbi1pbmZvcm1hdGlvbgkJCQlScGxtbi1JbmZvcm1hdGlvbgkJCQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblJlbGVhc2UtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCS0tIG4tMzA4IGlzIGNvbmRpdGlvbmFsIG9uIHRoZSBVRSBzdGF0ZS4KKwkJbi0zMDgJCQkJCQkJTi0zMDgJCQkJCQkJCU9QVElPTkFMLAorCQlyZWxlYXNlQ2F1c2UJCQkJCVJlbGVhc2VDYXVzZSwKKwkJcnBsbW4taW5mb3JtYXRpb24JCQkJUnBsbW4tSW5mb3JtYXRpb24tcjQJCQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlyZWRpcmVjdGlvbkluZm8tdjY5MGV4dAkJCQlSZWRpcmVjdGlvbkluZm8tcjYJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIENPTk5FQ1RJT04gUkVMRUFTRSBmb3IgQ0NDSAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NIIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjMJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLXY2OTBleHQJUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC12NjkwZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI0CVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCisJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0CVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtdjY5MGV4dC1JRXMsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBUQUJVTEFSOiBDSE9JQ0UgSWRlbnRpdHlUeXBlIChVLVJOVEksIEdyb3VwSWRlbnRpdHkpIGlzIHJlcGxhY2VkIHdpdGggdGhlIAorCQkJCS0tIG9wdGlvbmFsIGVsZW1lbnQgZ3JvdXBJZGVudGl0eSwgc2luY2UgdGhlIFUtUk5USSBpcyBtYW5kYXRvcnkgaW4gQVNOLjEuCisJCQkJLS0gSW4gY2FzZSBDSE9JQ0UgSWRlbnRpdHlUeXBlIGlzIGVxdWFsIHRvIEdyb3VwSWRlbnRpdHkgdGhlIHZhbHVlIG9mIHRoZSBVLVJOVEkgCisJCQkJLS0gc2hhbGwgYmUgaWdub3JlZCBieSBhIFVFIGNvbXBseWluZyB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZS4KKwkJCQlncm91cElkZW50aXR5CQlTRVFVRU5DRSAoIFNJWkUgKDEgLi4gbWF4VVJOVEktR3JvdXApICkgT0YKKwkJCQkJCQkJCQkJR3JvdXBSZWxlYXNlSW5mb3JtYXRpb24JCU9QVElPTkFMLAorCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJcnJjQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNQlSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI1LUlFcywKKwkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CisJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZS12NjkwZXh0CVJSQ0Nvbm5lY3Rpb25SZWxlYXNlLUNDQ0gtdjY5MGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCS0tIFRoZSByZXN0IG9mIHRoZSBtZXNzYWdlIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIHNlbnQgb24gRENDSC4KKwkJcnJjQ29ubmVjdGlvblJlbGVhc2UJCQlSUkNDb25uZWN0aW9uUmVsZWFzZS1yMy1JRXMKK30KKworUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUaGUgcmVzdCBvZiB0aGUgbWVzc2FnZSBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBzZW50IG9uIERDQ0guCisJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlCQkJUlJDQ29ubmVjdGlvblJlbGVhc2UtcjQtSUVzCit9CisKKy0tIFRoZSBSNSBhbmQgUjQgc2VxdWVuY2Ugb2YgSUVzIGFyZSBpZGVudGljYWwgaW4gdGhpcyBtZXNzYWdlCitSUkNDb25uZWN0aW9uUmVsZWFzZS1DQ0NILXI1LUlFcyA6Oj0gUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC1yNC1JRXMKKworLS0gVGhlIFI2IG5vbi1jcml0aWNhbCBleHRlbnNpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgc2VudCBvbiBEQ0NILgorUlJDQ29ubmVjdGlvblJlbGVhc2UtQ0NDSC12NjkwZXh0LUlFcyA6Oj0gUlJDQ29ubmVjdGlvblJlbGVhc2UtdjY5MGV4dC1JRXMKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIENPTk5FQ1RJT04gUkVMRUFTRSBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkNDb25uZWN0aW9uUmVsZWFzZUNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWVycm9ySW5kaWNhdGlvbgkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIJCQkJT1BUSU9OQUwsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJyY0Nvbm5lY3Rpb25SZWxlYXNlQ29tcGxldGUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgQ09OTkVDVElPTiBSRVFVRVNUCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JSQ0Nvbm5lY3Rpb25SZXF1ZXN0IDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWluaXRpYWxVRS1JZGVudGl0eQkJCQlJbml0aWFsVUUtSWRlbnRpdHksCisJCWVzdGFibGlzaG1lbnRDYXVzZQkJCQlFc3RhYmxpc2htZW50Q2F1c2UsCisJCS0tIHByb3RvY29sRXJyb3JJbmRpY2F0b3IgaXMgTUQsIGJ1dCBmb3IgY29tcGFjdG5lc3MgcmVhc29ucyBubyBkZWZhdWx0IHZhbHVlCisJCS0tIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGl0LgorCQlwcm90b2NvbEVycm9ySW5kaWNhdG9yCQkJUHJvdG9jb2xFcnJvckluZGljYXRvciwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJbWVhc3VyZWRSZXN1bHRzT25SQUNICQkJTWVhc3VyZWRSZXN1bHRzT25SQUNICQkJCU9QVElPTkFMLAorCS0tCU5vbiBjcml0aWNhbCBFeHRlbnNpb25zCisJCXYzZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQlyUkNDb25uZWN0aW9uUmVxdWVzdC12M2QwZXh0IAlSUkNDb25uZWN0aW9uUmVxdWVzdC12M2QwZXh0LUlFcywKKwkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCXJyY0Nvbm5lY3Rpb25SZXF1ZXN0LXY0YjBleHQJCVJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXY0YjBleHQtSUVzLAorCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXJyY0Nvbm5lY3Rpb25SZXF1ZXN0LXY1OTBleHQJCVJSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXY1OTBleHQtSUVzLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJcnJjQ29ubmVjdGlvblJlcXVlc3QtdjY5MGV4dAlSUkNDb25uZWN0aW9uUmVxdWVzdC12NjkwZXh0LUlFcywKKwkJCQkJCS0tIFJlc2VydmVkIGZvciBmdXR1cmUgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbgorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0gCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25SZXF1ZXN0LXYzZDBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblJlcXVlc3QtdjRiMGV4dC1JRXMgOjo9IAlTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCQkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IKK30KKworUlJDQ29ubmVjdGlvblJlcXVlc3QtdjU5MGV4dC1JRXMgOjo9IAlTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXByZWRlZmluZWRDb25maWdTdGF0dXNJbmZvCQkJQk9PTEVBTgorfQorCitSUkNDb25uZWN0aW9uUmVxdWVzdC12NjkwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZUNhcGFiaWxpdHlJbmRpY2F0aW9uCQkJCUVOVU1FUkFURUQgeyBoc2RjaCwgaHNkY2gtZWRjaCB9CU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IElFcworCQltZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJCU9QVElPTkFMLAorCQlkb21haW5JbmRpY2F0b3IgCQkJCQlDSE9JQ0UgeworCQkJY3MtZG9tYWluCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQljc0NhbGxUeXBlCQkJCQkJCUVOVU1FUkFURUQge3NwZWVjaCwgdmlkZW8sIG90aGVyLCBzcGFyZSB9CisJCQl9LAorCQkJcHMtZG9tYWluIAkJCQkJCQlOVUxMCisJCX0KK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIENPTk5FQ1RJT04gU0VUVVAKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUlJDQ29ubmVjdGlvblNldHVwIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yMwkJCVJSQ0Nvbm5lY3Rpb25TZXR1cC1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yMy1hZGQtZXh0CUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCQlycmNDb25uZWN0aW9uU2V0dXAtdjRiMGV4dAkJUlJDQ29ubmVjdGlvblNldHVwLXY0YjBleHQtSUVzLAorCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsgCisJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12NTkwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjU5MGV4dC1JRXMsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjY5MGV4dC1JRXMsCisJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY3eHlleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlpbml0aWFsVUUtSWRlbnRpdHkJCQkJSW5pdGlhbFVFLUlkZW50aXR5LAorCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI0CQkJUlJDQ29ubmVjdGlvblNldHVwLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjQtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12NTkwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjU5MGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY2OTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0LUlFcywKKwkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dC1JRXMsCisJCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJCUNIT0lDRSB7CisJCQkJcjUJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI1CQkJUlJDQ29ubmVjdGlvblNldHVwLXI1LUlFcywKKwkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTYKKwkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI1LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12NjkwZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjY5MGV4dC1JRXMsCisJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXY3eHlleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0sCisJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCXI2CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjYJCQlSUkNDb25uZWN0aW9uU2V0dXAtcjYtSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTcKKwkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC1yNi1hZGQtZXh0CUJJVCBTVFJJTkcJCQkJCU9QVElPTkFMLAorCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cC12N3h5ZXh0CQlSUkNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0sCisJCQkJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlDSE9JQ0UgeworCQkJCQkJcjcJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXAtcjcJCQlSUkNDb25uZWN0aW9uU2V0dXAtcjctSUVzLAorCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC04CisJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwLXI3LWFkZC1leHQJQklUIFNUUklORwkJCQkJT1BUSU9OQUwsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCU9QVElPTkFMCisJCQkJCQl9LAorCQkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW5pdGlhbFVFLUlkZW50aXR5CQkJCUluaXRpYWxVRS1JZGVudGl0eSwKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCisJCW5ldy1jLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJCS0tIFRBQlVMQVI6IElmIGNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUKKwkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgorCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQktLSBOT1RFOiB1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3Qgc2hvdWxkIGJlIG9wdGlvbmFsIGluIGxhdGVyIHZlcnNpb25zIG9mCisJCS0tIHRoaXMgbWVzc2FnZQorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJLS0gTk9URTogZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IHNob3VsZCBiZSBvcHRpb25hbCBpbiBsYXRlciB2ZXJzaW9ucworCQktLSBvZiB0aGlzIG1lc3NhZ2UKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudAkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXAtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0LWV4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0CU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKKwkJLS0gaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQorCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlzeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcQkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEtdjU5MGV4dAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZGwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdAlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXAtcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJLAorCQluZXctYy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50LAorCQktLSBUQUJVTEFSOiBJZiBjYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQgaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0IHZhbHVlCisJCS0tIGRlZmluZWQgaW4gMTAuMy4zLjIgc2hhbGwgYmUgdXNlZC4KKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNAkJCU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cC1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBJbnRlZ3JpdHkgcHJvdGVjdGlvbiBzaGFsbCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoaXMgbWVzc2FnZS4KKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEksCisJCW5ldy1jLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJCS0tIFRBQlVMQVI6IElmIGNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudCBpcyBub3QgcHJlc2VudCwgdGhlIGRlZmF1bHQgdmFsdWUKKwkJLS0gZGVmaW5lZCBpbiAxMC4zLjMuMiBzaGFsbCBiZSB1c2VkLgorCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNQkJT1BUSU9OQUwsCisJLS0gU3BlY2lmaWNhdGlvbiBtb2RlIGluZm9ybWF0aW9uCisJCXNwZWNpZmljYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQljb21wbGV0ZQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBSYWRpbyBiZWFyZXIgSUVzCisJCQkJc3JiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyLAorCQkJCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQkJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCQkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI0CQlPUFRJT05BTAorCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI1CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI0CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNWJpcwkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgQ2hhbm5lbCBJRXMKKwkJYmVhY29uUExFc3QJCQkJCQlCRUFDT04tUEwtRXN0CQkJCQkJT1BUSU9OQUwsCisJCXBvc3RWZXJpZmljYXRpb25QZXJpb2QJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXAtcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJLAorCQluZXctYy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50LAorCQktLSBUQUJVTEFSOiBJZiBjYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQgaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0IHZhbHVlCisJCS0tIGRlZmluZWQgaW4gMTAuMy4zLjIgc2hhbGwgYmUgdXNlZC4KKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjUJCU9QVElPTkFMLAorCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gUmFkaW8gYmVhcmVyIElFcworCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0Mi1yNiwKKwkJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAorCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI2CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXAtcjctSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJLAorCQluZXctYy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50LAorCQktLSBUQUJVTEFSOiBJZiBjYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQgaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0IHZhbHVlCisJCS0tIGRlZmluZWQgaW4gMTAuMy4zLjIgc2hhbGwgYmUgdXNlZC4KKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjUJCU9QVElPTkFMLAorCS0tIFNwZWNpZmljYXRpb24gbW9kZSBpbmZvcm1hdGlvbgorCQlzcGVjaWZpY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJY29tcGxldGUJCQkJCQlTRVFVRU5DRSB7CisJCQkJLS0gUmFkaW8gYmVhcmVyIElFcworCQkJCXNyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0Mi1yNiwKKwkJCQktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCXVsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2CQlPUFRJT05BTCwKKwkJCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQkJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTAorCQkJfSwKKwkJCXByZWNvbmZpZ3VyYXRpb24JCQkJU0VRVUVOQ0UgeworCQkJCS0tIEFsbCBJRXMgdGhhdCBpbmNsdWRlIGFuIEZERC9UREQgY2hvaWNlIGFyZSBzcGxpdCBpbiB0d28gSUVzIGZvciB0aGlzIG1lc3NhZ2UsCisJCQkJLS0gb25lIGZvciB0aGUgRkREIG9ubHkgZWxlbWVudHMgYW5kIG9uZSBmb3IgdGhlIFRERCBvbmx5IGVsZW1lbnRzLCBzbyB0aGF0IG9uZQorCQkJCS0tIEZERC9UREQgY2hvaWNlIGluIHRoaXMgbGV2ZWwgaXMgc3VmZmljaWVudC4KKwkJCQlwcmVDb25maWdNb2RlCQkJCQlDSE9JQ0UgeworCQkJCQlwcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eSwKKwkJCQkJZGVmYXVsdENvbmZpZwkJCQkJU0VRVUVOQ0UgeworCQkJCQkJZGVmYXVsdENvbmZpZ01vZGUJCQkJRGVmYXVsdENvbmZpZ01vZGUsCisJCQkJCQlkZWZhdWx0Q29uZmlnSWRlbnRpdHkgCQkJRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI2CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0sCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI3CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjcJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNwkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjcJCQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXAtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjctZXh0CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgQ09OTkVDVElPTiBTRVRVUCBDT01QTEVURQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZSA6Oj0gU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQlzdGFydExpc3QJCQkJCQlTVEFSVExpc3QsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQkJT1BUSU9OQUwsCisJLS0JT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAlPUFRJT05BTCwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQl2MzcwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjM3MGV4dAlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzcwZXh0LAorCQkJdjM4ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzgwZXh0CVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzODBleHQtSUVzLAorCQkJCS0tIFJlc2VydmVkIGZvciBmdXR1cmUgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbgorCQkJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzYTBleHQJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjNhMGV4dC1JRXMsCisJCQkJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCisJCQkJCQkJCShDT05UQUlOSU5HIFJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQtSUVzKQlPUFRJT05BTCwKKwkJCQkJCXYzZzBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJcnJjQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjNnMGV4dAlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12M2cwZXh0LUlFcywKKwkJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NGIwZXh0CisJCQkJCQkJCQkJCQkJCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjRiMGV4dC1JRXMsCisJCQkJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NTkwZXh0CisJCQkJCQkJCQkJCQkJCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjU5MGV4dC1JRXMsCisJCQkJCQkJCQl2NWMwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY1YzBleHQKKwkJCQkJCQkJCQkJCQkJCQlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NWMwZXh0LUlFcywKKwkJCQkJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQlycmNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjkwZXh0CisJCQkJCQkJCQkJCQkJCQkJUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY5MGV4dC1JRXMsCisJCQkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJCXJyY0NvbmVjdGlvblNldHVwQ29tcGxldGUtdjd4eWV4dAorCQkJCQkJCQkJCQkJCQkJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY3eHlleHQtSUVzLAorCQkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQkJT1BUSU9OQUwKKwkJCQl9CQlPUFRJT05BTAorCQkJfQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjM3MGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM3MGV4dAlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12MzgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAkJT1BUSU9OQUwsCisJCWRsLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0Cit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXYzZzBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CU9QVElPTkFMCit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXIzLWFkZC1leHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2NTBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2NTBleHQtSUVzCU9QVElPTkFMLAorCQl2NjgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHsKKwkJCXJyY0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2ODBleHQJCVJSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2ODBleHQtSUVzLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NGIwZXh0CQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjU5MGV4dAkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjVjMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1YzBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0CQlPUFRJT05BTAorfQorCitSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS12NjUwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2NTBleHQKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjY4MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjgwZXh0Cit9CisKK1JSQ0Nvbm5lY3Rpb25TZXR1cENvbXBsZXRlLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lcgkJCQlCSVQgU1RSSU5HCisJCQkJCQkJCQkJCQkoQ09OVEFJTklORyBVRS1DYXBhYmlsaXR5Q29udGFpbmVyLUlFcykJT1BUSU9OQUwKK30KKworUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFJSQyBGQUlMVVJFIElORk8KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUlJDLUZhaWx1cmVJbmZvIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJSQy1GYWlsdXJlSW5mby1yMwkJCQkJCQlSUkMtRmFpbHVyZUluZm8tcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlycmMtRmFpbHVyZUluZm8tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwljcml0aWNhbEV4dGVuc2lvbnMJCQkJCQkJU0VRVUVOQ0Uge30KK30KKworUlJDLUZhaWx1cmVJbmZvLXIzLUlFcyA6Oj0JCVNFUVVFTkNFIHsKKwktLSBOb24tUlJDIElFcworCQlmYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBSUkMgU1RBVFVTCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JSQ1N0YXR1cyA6Oj0gU0VRVUVOQ0UgeworCS0tIE90aGVyIElFcworCQktLSBUQUJVTEFSOiBJZGVudGlmaWNhdGlvbiBvZiByZWNlaXZlZCBtZXNzYWdlIGlzIG5lc3RlZCBpbgorCQktLSBQcm90b2NvbEVycm9yTW9yZUluZm9ybWF0aW9uCisJCXByb3RvY29sRXJyb3JJbmZvcm1hdGlvbgkJUHJvdG9jb2xFcnJvck1vcmVJbmZvcm1hdGlvbiwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJcnJjU3RhdHVzLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU0VDVVJJVFkgTU9ERSBDT01NQU5ECistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1NlY3VyaXR5TW9kZUNvbW1hbmQgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJc2VjdXJpdHlNb2RlQ29tbWFuZC1yMwkJCVNlY3VyaXR5TW9kZUNvbW1hbmQtcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlzZWN1cml0eU1vZGVDb21tYW5kLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitTZWN1cml0eU1vZGVDb21tYW5kLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworLS0gVEFCVUxBUjogSW50ZWdyaXR5IHByb3RlY3Rpb24gc2hhbGwgYWx3YXlzIGJlIHBlcmZvcm1lZCBvbiB0aGlzIG1lc3NhZ2UuCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXNlY3VyaXR5Q2FwYWJpbGl0eQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCS0tIE90aGVyIElFcworCQl1ZS1TeXN0ZW1TcGVjaWZpY1NlY3VyaXR5Q2FwCUludGVyUkFULVVFLVNlY3VyaXR5Q2FwTGlzdAkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFNFQ1VSSVRZIE1PREUgQ09NUExFVEUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU2VjdXJpdHlNb2RlQ29tcGxldGUgOjo9IFNFUVVFTkNFIHsKKy0tIFRBQlVMQVI6IEludGVncml0eSBwcm90ZWN0aW9uIHNoYWxsIGFsd2F5cyBiZSBwZXJmb3JtZWQgb24gdGhpcyBtZXNzYWdlLgorCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJiLVVMLUNpcGhBY3RpdmF0aW9uVGltZUluZm8JUkItQWN0aXZhdGlvblRpbWVJbmZvTGlzdAkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlzZWN1cml0eU1vZGVDb21wbGV0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFNFQ1VSSVRZIE1PREUgRkFJTFVSRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTZWN1cml0eU1vZGVGYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXNlY3VyaXR5TW9kZUZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBTSUdOQUxMSU5HIENPTk5FQ1RJT04gUkVMRUFTRQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2UgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLXIzCVNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZS1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCisJfSwKKwlsYXRlci10aGFuLXIzCQkJCQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworU2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHkKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU0lHTkFMTElORyBDT05ORUNUSU9OIFJFTEVBU0UgSU5ESUNBVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTaWduYWxsaW5nQ29ubmVjdGlvblJlbGVhc2VJbmRpY2F0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJc2lnbmFsbGluZ0Nvbm5lY3Rpb25SZWxlYXNlSW5kaWNhdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFNZU1RFTSBJTkZPUk1BVElPTiBmb3IgQkNICistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1N5c3RlbUluZm9ybWF0aW9uLUJDSCA6Oj0gU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXNmbi1QcmltZQkJCQkJCVNGTi1QcmltZSwKKwkJcGF5bG9hZCAJCQkJCQlDSE9JQ0UgeworCQkJbm9TZWdtZW50CQkJCQkJTlVMTCwKKwkJCWZpcnN0U2VnbWVudAkJCQkJRmlyc3RTZWdtZW50LAorCQkJc3Vic2VxdWVudFNlZ21lbnQJCQkJU3Vic2VxdWVudFNlZ21lbnQsCisJCQlsYXN0U2VnbWVudFNob3J0CQkJCQkJTGFzdFNlZ21lbnRTaG9ydCwKKwkJCWxhc3RBbmRGaXJzdAkJCQkJU0VRVUVOQ0UgeworCQkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKKwkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CisJCQl9LAorCQkJbGFzdEFuZENvbXBsZXRlCQkJCQlTRVFVRU5DRSB7CisJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdAorCQkJfSwKKwkJCWxhc3RBbmRDb21wbGV0ZUFuZEZpcnN0CQkJU0VRVUVOQ0UgeworCQkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKKwkJCQljb21wbGV0ZVNJQi1MaXN0CQkJCUNvbXBsZXRlU0lCLUxpc3QsCisJCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnRTaG9ydAorCQkJfSwKKwkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKKwkJCWNvbXBsZXRlQW5kRmlyc3QJCQkJU0VRVUVOQ0UgeworCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKKwkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CisJCQl9LAorCQkJY29tcGxldGVTSUIJCQkJCQlDb21wbGV0ZVNJQiwKKwkJCWxhc3RTZWdtZW50CQkJCQkJTGFzdFNlZ21lbnQsCisJCQlzcGFyZTUJCQkJCQkJTlVMTCwKKwkJCXNwYXJlNAkJCQkJCQlOVUxMLAorCQkJc3BhcmUzCQkJCQkJCU5VTEwsCisJCQlzcGFyZTIJCQkJCQkJTlVMTCwKKwkJCXNwYXJlMQkJCQkJCQlOVUxMCisJCX0KK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU1lTVEVNIElORk9STUFUSU9OIGZvciBGQUNICistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1N5c3RlbUluZm9ybWF0aW9uLUZBQ0ggOjo9IFNFUVVFTkNFIHsKKwktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cworCQlwYXlsb2FkIAkJCQkJCUNIT0lDRSB7CisJCQlub1NlZ21lbnQJCQkJCQlOVUxMLAorCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnQsCisJCQlzdWJzZXF1ZW50U2VnbWVudAkJCQlTdWJzZXF1ZW50U2VnbWVudCwKKwkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKKwkJCWxhc3RBbmRGaXJzdAkJCQkJU0VRVUVOQ0UgeworCQkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKKwkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CisJCQl9LAorCQkJbGFzdEFuZENvbXBsZXRlCQkJCQlTRVFVRU5DRSB7CisJCQkJbGFzdFNlZ21lbnRTaG9ydAkJCQlMYXN0U2VnbWVudFNob3J0LAorCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdAorCQkJfSwKKwkJCWxhc3RBbmRDb21wbGV0ZUFuZEZpcnN0CQkJU0VRVUVOQ0UgeworCQkJCWxhc3RTZWdtZW50U2hvcnQJCQkJTGFzdFNlZ21lbnRTaG9ydCwKKwkJCQljb21wbGV0ZVNJQi1MaXN0CQkJCUNvbXBsZXRlU0lCLUxpc3QsCisJCQkJZmlyc3RTZWdtZW50CQkJCQlGaXJzdFNlZ21lbnRTaG9ydAorCQkJfSwKKwkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKKwkJCWNvbXBsZXRlQW5kRmlyc3QJCQkJU0VRVUVOQ0UgeworCQkJCWNvbXBsZXRlU0lCLUxpc3QJCQkJQ29tcGxldGVTSUItTGlzdCwKKwkJCQlmaXJzdFNlZ21lbnQJCQkJCUZpcnN0U2VnbWVudFNob3J0CisJCQl9LAorCQkJY29tcGxldGVTSUIJCQkJCQlDb21wbGV0ZVNJQiwKKwkJCWxhc3RTZWdtZW50CQkJCQkJTGFzdFNlZ21lbnQsCisJCQlzcGFyZTUJCQkJCQkJTlVMTCwKKwkJCXNwYXJlNAkJCQkJCQlOVUxMLAorCQkJc3BhcmUzCQkJCQkJCU5VTEwsCisJCQlzcGFyZTIJCQkJCQkJTlVMTCwKKwkJCXNwYXJlMQkJCQkJCQlOVUxMCisJCX0KK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gRmlyc3Qgc2VnbWVudAorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitGaXJzdFNlZ21lbnQgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKKwkJc2VnLUNvdW50CQkJCQkJU2VnQ291bnQsCisJCXNpYi1EYXRhLWZpeGVkCQkJCQlTSUItRGF0YS1maXhlZAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBGaXJzdCBzZWdtZW50IChzaG9ydCkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworRmlyc3RTZWdtZW50U2hvcnQgOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cworCQlzaWItVHlwZQkJCQkJCVNJQi1UeXBlLAorCQlzZWctQ291bnQJCQkJCQlTZWdDb3VudCwKKwkJc2liLURhdGEtdmFyaWFibGUJCQkJU0lCLURhdGEtdmFyaWFibGUKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gU3Vic2VxdWVudCBzZWdtZW50CistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1N1YnNlcXVlbnRTZWdtZW50IDo6PQkJCQlTRVFVRU5DRSB7CisJLS0gT3RoZXIgaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJc2liLVR5cGUJCQkJCQlTSUItVHlwZSwKKwkJc2VnbWVudEluZGV4CQkJCQlTZWdtZW50SW5kZXgsCisJCXNpYi1EYXRhLWZpeGVkCQkJCQlTSUItRGF0YS1maXhlZAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBMYXN0IHNlZ21lbnQKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTGFzdFNlZ21lbnQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCisJCXNlZ21lbnRJbmRleAkJCQkJU2VnbWVudEluZGV4LAorCQktLSBGb3Igc2liLURhdGEtZml4ZWQsIGluIGNhc2UgdGhlIFNJQiBkYXRhIGlzIGxlc3MgdGhhbiAyMjIgYml0cywgcGFkZGluZworCQktLSBzaGFsbCBiZSB1c2VkLiBUaGUgc2FtZSBwYWRkaW5nIGJpdHMgc2hhbGwgYmUgdXNlZCBhcyBkZWZpbmVkIGluIGNsYXVzZSAxMi4xCisJCXNpYi1EYXRhLWZpeGVkCQkJCQlTSUItRGF0YS1maXhlZAorfQorCitMYXN0U2VnbWVudFNob3J0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwktLSBPdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50cworCQlzaWItVHlwZQkJCQkJCVNJQi1UeXBlLAorCQlzZWdtZW50SW5kZXgJCQkJCVNlZ21lbnRJbmRleCwKKwkJc2liLURhdGEtdmFyaWFibGUJCQkJU0lCLURhdGEtdmFyaWFibGUKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gQ29tcGxldGUgU0lCCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0NvbXBsZXRlU0lCLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTSUJwZXJNc2cpKSBPRgorCQkJCQkJCQkJCUNvbXBsZXRlU0lCc2hvcnQKKworQ29tcGxldGVTSUIgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCisJCS0tIEZvciBzaWItRGF0YS1maXhlZCwgaW4gY2FzZSB0aGUgU0lCIGRhdGEgaXMgbGVzcyB0aGFuIDIyNiBiaXRzLCBwYWRkaW5nCisJCS0tIHNoYWxsIGJlIHVzZWQuIFRoZSBzYW1lIHBhZGRpbmcgYml0cyBzaGFsbCBiZSB1c2VkIGFzIGRlZmluZWQgaW4gY2xhdXNlIDEyLjEKKwkJc2liLURhdGEtZml4ZWQJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIyNikpCit9CisKK0NvbXBsZXRlU0lCc2hvcnQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIE90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCXNpYi1UeXBlCQkJCQkJU0lCLVR5cGUsCisJCXNpYi1EYXRhLXZhcmlhYmxlCQkJCVNJQi1EYXRhLXZhcmlhYmxlCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFNZU1RFTSBJTkZPUk1BVElPTiBDSEFOR0UgSU5ESUNBVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTeXN0ZW1JbmZvcm1hdGlvbkNoYW5nZUluZGljYXRpb24gOjo9IAlTRVFVRU5DRSB7CisJLS0gT3RoZXIgSUVzCisJCWJjY2gtTW9kaWZpY2F0aW9uSW5mbwkJCQlCQ0NILU1vZGlmaWNhdGlvbkluZm8sCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQlzeXN0ZW1JbmZvcm1hdGlvbkNoYW5nZUluZGljYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorIAorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVFJBTlNQT1JUIENIQU5ORUwgUkVDT05GSUdVUkFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24gOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMworCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjMtSUVzLAorCQl2M2EwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXYzYTBleHQKKwkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12M2EwZXh0LAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjRiMGV4dAkKKwkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY0YjBleHQtSUVzLAorCQkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQJCisJCQkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0CQorCQkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQkJT1BUSU9OQUwKKwkJCQl9CQlPUFRJT05BTAorCQkJfQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQKKwkJCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtSUVzLAorCQkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC01CisJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dAkKKwkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXY1OTBleHQtSUVzLAorCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAkKKwkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0sCisJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1CisJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNS1JRXMsCisJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaW5nIG5vbiBjcml0aWNhbCBleHRlbnNpb25zIGFmdGVyIGZyZWV6aW5nIFJFTC02CisJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjUtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dAkKKwkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYKKwkJCQkJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1JRXMsCisJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNworCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNi1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9LAorCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNworCQkJCQkJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI3LUlFcywKKwkJCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtOAorCQkJCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjctYWRkLWV4dAkJQklUIFNUUklORwlPUFRJT05BTCwKKwkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJCX0sCisJCQkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1JbmZvcm1hdGlvbkluZm8JCQkJQ04tSW5mb3JtYXRpb25JbmZvCQkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJVUwtQ2hhbm5lbFJlcXVpcmVtZW50CQkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCQlPUFRJT05BTAorfQorCitUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXYzYTBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJCVNTRFQtVUwJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2YgdGhlIFJMcyBpbiBJRSBjZWxsLWlkLVBlclJMLUxpc3QgaXMgdGhlIHNhbWUgYXMKKwkJLS0gaW4gSUUgREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IGluY2x1ZGVkIGluIHRoaXMgbWVzc2FnZQorCQljZWxsLWlkLVBlclJMLUxpc3QJCQkJCUNlbGxJZGVudGl0eS1QZXJSTC1MaXN0CQkJCU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlkbC1UUEMtUG93ZXJPZmZzZXRQZXJSTC1MaXN0CURMLVRQQy1Qb3dlck9mZnNldFBlclJMLUxpc3QJCU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwkJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCQktLSAnZHVtbXknLCAnZHVtbXkxJyBhbmQgJ2R1bW15MicgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwkJLS0gdGhleSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkdW1teTEJCQkJCQkJQ1BDSC1TZXRJRAkJCQkJT1BUSU9OQUwsCisJCQkJZHVtbXkyCQkJCQkJCURSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLUNoYW5uZWxSZXF1aXJlbWVudAkJCVVMLUNoYW5uZWxSZXF1aXJlbWVudC1yNAkJCU9QVElPTkFMLAorCQltb2RlU3BlY2lmaWNQaHlzQ2hJbmZvCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJREwtUERTQ0gtSW5mb3JtYXRpb24JCU9QVElPTkFMCisJCQl9LAorCQkJdGRkCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNAkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjQJCQlPUFRJT05BTAorfQorCitUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLXI1LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCWFjdGl2YXRpb25UaW1lCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCS0tIFRoZSBJRSDSbmV3LURTQ0gtUk5USdMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKKwkJbmV3LURTQ0gtUk5USQkJCQkJRFNDSC1STlRJCQkJCQkJCU9QVElPTkFMLAorCQluZXctSC1STlRJCQkJCQkJSC1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWZyZXF1ZW5jeUluZm8JCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwkJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCQl1bC1DaGFubmVsUmVxdWlyZW1lbnQJCQlVTC1DaGFubmVsUmVxdWlyZW1lbnQtcjUJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljUGh5c0NoSW5mbwkJCUNIT0lDRSB7CisJCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJCWR1bW15CQkJCQkJCURMLVBEU0NILUluZm9ybWF0aW9uCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQlOVUxMCisJCX0sCisJCWRsLUhTUERTQ0gtSW5mb3JtYXRpb24JCQlETC1IU1BEU0NILUluZm9ybWF0aW9uCQkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI1CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNQkJCU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIEVxdWlwbWVudCBJRXMKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCXByaW1hcnktcGxtbi1JZGVudGl0eQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBUaGUgSUUgaGFycS1QcmVhbWJsZS1Nb2RlIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgcjMgYW5kIHI0IHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisJCS0tIElmIGluY2x1ZGVkIGluIHRoZSByMyBvciByNCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCB0aGUgVUUgc2hvdWxkIGlnbm9yZSB0aGUgSUUKKwkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCUhBUlEtUHJlYW1ibGUtTW9kZQkJCQkJT1BUSU9OQUwsCisJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMLAorCQlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJCWRocy1zeW5jCQkJCQkJREhTLVN5bmMJCQkJCQkJT1BUSU9OQUwsCisJCXRpbWluZ01haW50YWluZWRTeW5jaEluZAkJVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kCQkJT1BUSU9OQUwsCisJLS0gTUJNUyBJRXMKKwkJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQlNQk1TLVBMLVNlcnZpY2VSZXN0cmljdEluZm8tcjYJCU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb24tcjYtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCWRlbGF5UmVzdHJpY3Rpb25GbGFnCQkJRGVsYXlSZXN0cmljdGlvbkZsYWcJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gVGhlIElFINJuZXctRFNDSC1STlRJ0yBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIEZERCBtb2RlLAorCQktLSBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCQluZXctRFNDSC1STlRJCQkJCQlEU0NILVJOVEkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1ILVJOVEkJCQkJCQlILVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdQcmltYXJ5LUUtUk5USQkJCQlFLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXdTZWNvbmRhcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXJyYy1TdGF0ZUluZGljYXRvcgkJCQlSUkMtU3RhdGVJbmRpY2F0b3IsCisJCXV0cmFuLURSWC1DeWNsZUxlbmd0aENvZWZmCQlVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8tcjYJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYJCU9QVElPTkFMLAorCQlkbC1Db21tb25UcmFuc0NoSW5mbwkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQlkbC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNQkJT1BUSU9OQUwsCisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJZnJlcXVlbmN5SW5mbwkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCQltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJCXVsLURQQ0gtSW5mbwkJCQkJVUwtRFBDSC1JbmZvLXI2CQkJCQkJT1BUSU9OQUwsCisJCXVsLUVEQ0gtSW5mb3JtYXRpb24JCQkJVUwtRURDSC1JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJCURMLUhTUERTQ0gtSW5mb3JtYXRpb24tcjYJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uSW5mb3JtYXRpb24JCQlETC1Db21tb25JbmZvcm1hdGlvbi1yNgkJCQlPUFRJT05BTCwKKwkJZGwtSW5mb3JtYXRpb25QZXJSTC1MaXN0CQlETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjYJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLVBMLVNlcnZpY2VSZXN0cmljdEluZm8JCU1CTVMtUEwtU2VydmljZVJlc3RyaWN0SW5mby1yNgkJT1BUSU9OQUwKK30KKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbi1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQlhY3RpdmF0aW9uVGltZQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwkJZGVsYXlSZXN0cmljdGlvbkZsYWcJCQlEZWxheVJlc3RyaWN0aW9uRmxhZwkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQktLSBUaGUgSUUg0m5ldy1EU0NILVJOVEnTIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRkREIG1vZGUsCisJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkCisJCW5ldy1EU0NILVJOVEkJCQkJCURTQ0gtUk5USQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUgtUk5USQkJCQkJCUgtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1ByaW1hcnktRS1STlRJCQkJCUUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ld1NlY29uZGFyeS1FLVJOVEkJCQkJRS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mby1yNgkJCQlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCWRsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCURMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvLXI1CU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1CQlPUFRJT05BTCwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlmcmVxdWVuY3lJbmZvCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwkJdWwtRFBDSC1JbmZvCQkJCQlVTC1EUENILUluZm8tcjcJCQkJCQlPUFRJT05BTCwKKwkJdWwtRURDSC1JbmZvcm1hdGlvbgkJCQlVTC1FRENILUluZm9ybWF0aW9uLXI2CQkJCU9QVElPTkFMLAorCQlkbC1IU1BEU0NILUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNwkJCU9QVElPTkFMLAorCQlkbC1Db21tb25JbmZvcm1hdGlvbgkJCURMLUNvbW1vbkluZm9ybWF0aW9uLXI3CQkJCU9QVElPTkFMLAorCQlkbC1JbmZvcm1hdGlvblBlclJMLUxpc3QJCURMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNwkJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtUEwtU2VydmljZVJlc3RyaWN0SW5mbwkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBUUkFOU1BPUlQgQ0hBTk5FTCBSRUNPTkZJR1VSQVRJT04gQ09NUExFVEUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXVsLUludGVnUHJvdEFjdGl2YXRpb25JbmZvCQlJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8JCQlPUFRJT05BTCwKKwkJLS0gVEFCVUxBUjogVUwtVGltaW5nQWR2YW5jZSBpcyBhcHBsaWNhYmxlIGZvciBUREQgbW9kZSBvbmx5LgorCQl1bC1UaW1pbmdBZHZhbmNlCQkJCVVMLVRpbWluZ0FkdmFuY2UJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwkJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXRyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0CisJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbkNvbXBsZXRlLXY3eHlleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25Db21wbGV0ZS12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQlleHQtdWwtVGltaW5nQWR2YW5jZQkJCUVYVC1VTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFRSQU5TUE9SVCBDSEFOTkVMIFJFQ09ORklHVVJBVElPTiBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYW5zcG9ydENoYW5uZWxSZWNvbmZpZ3VyYXRpb25GYWlsdXJlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uRmFpbHVyZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFRSQU5TUE9SVCBGT1JNQVQgQ09NQklOQVRJT04gQ09OVFJPTCBpbiBBTSBvciBVTSBSTEMgbW9kZQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUcmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2wgOjo9IFNFUVVFTkNFIHsKKwkJLS0gcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllciBpcyBhbHdheXMgaW5jbHVkZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCQlPUFRJT05BTCwKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJCU5VTEwsCisJCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eQlPUFRJT05BTAorCQkJfQkKKwkJfSwKKwkJZHBjaC1URkNTLUluVXBsaW5rCQkJCQlURkMtU3Vic2V0LAorCQlhY3RpdmF0aW9uVGltZUZvclRGQ1N1YnNldAkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCXRmYy1Db250cm9sRHVyYXRpb24JCQkJCVRGQy1Db250cm9sRHVyYXRpb24JCQkJCU9QVElPTkFMLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25Db250cm9sLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFRSQU5TUE9SVCBGT1JNQVQgQ09NQklOQVRJT04gQ09OVFJPTCBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbEZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbEZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVRSBDQVBBQklMSVRZIEVOUVVJUlkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVUVDYXBhYmlsaXR5RW5xdWlyeSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQl1ZUNhcGFiaWxpdHlFbnF1aXJ5LXIzCQkJVUVDYXBhYmlsaXR5RW5xdWlyeS1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXVlQ2FwYWJpbGl0eUVucXVpcnktcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJCXVlQ2FwYWJpbGl0eUVucXVpcnktdjRiMGV4dAkJVUVDYXBhYmlsaXR5RW5xdWlyeS12NGIwZXh0LUlFcywKKwkJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXVlQ2FwYWJpbGl0eUVucXVpcnktdjU5MGV4dAkJVUVDYXBhYmlsaXR5RW5xdWlyeS12NTkwZXh0LUlFcywKKwkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJdWVDYXBhYmlsaXR5RW5xdWlyeS12N3h5ZXh0CQlVRUNhcGFiaWxpdHlFbnF1aXJ5LXY3eHlleHQtSUVzLAorCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitVRUNhcGFiaWxpdHlFbnF1aXJ5LXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQJCUNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAorfQorCitVRUNhcGFiaWxpdHlFbnF1aXJ5LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNC1leHQJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI0LWV4dAorfQorCitVRUNhcGFiaWxpdHlFbnF1aXJ5LXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxCQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcS12NTkwZXh0Cit9CisKK1VFQ2FwYWJpbGl0eUVucXVpcnktdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJY2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dAkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAkJT1BUSU9OQUwsCisJCXYzNzBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12MzcwZXh0CVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzNzBleHQsCisJCQl2MzgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzODBleHQJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzODBleHQtSUVzLAorCQkJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQtSUVzLAorCQkJCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dAkJQklUIFNUUklORworCQkJCQkJCQkJKENPTlRBSU5JTkcgVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dC1JRXMpCU9QVElPTkFMLAorCQkJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY0YjBleHQJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY0YjBleHQsCisJCQkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjU5MGV4dAkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjU5MGV4dCwKKwkJCQkJCQkJdjVjME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY1YzBleHQKKwkJCQkJCQkJCQkJCQkJCQkJVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjVjMGV4dCwKKwkJCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dAorCQkJCQkJCQkJCQkJCQkJCVVFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY3eHlleHQKKwkJCQkJCQkJCQkJCQkJCQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12N3h5ZXh0LUlFcywKKwkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJCX0JCU9QVElPTkFMCisJCQkJCX0JCU9QVElPTkFMCisJCQkJfQkJT1BUSU9OQUwKKwkJCX0JCU9QVElPTkFMCisJCX0JCU9QVElPTkFMCit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXYzNzBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0CQlPUFRJT05BTAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12MzgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQJCU9QVElPTkFMLAorCQlkbC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2EwZXh0CQlPUFRJT05BTAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjUwZXh0CQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjUwZXh0LUlFcwkJT1BUSU9OQUwsCisJCXY2ODBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjgwZXh0CQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjgwZXh0LUlFcywKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjRiMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQJCU9QVElPTkFMCit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12M2cwZXh0CQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NTkwZXh0CQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5LXY1OTBleHQJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJT1BUSU9OQUwKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjVjMGV4dCA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1YzBleHQJCU9QVElPTkFMCit9CisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uLXY2NTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjUwZXh0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY1MGV4dAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12NjgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY4MGV4dAkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQKK30KKworVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWVDYXBhYmlsaXR5Q29udGFpbmVyCQkJCUJJVCBTVFJJTkcKKwkJCQkJCQkJCQkJCShDT05UQUlOSU5HIFVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzKQlPUFRJT05BTAorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTiBDT05GSVJNCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VFQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybSA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQl1ZUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMKKwkJCQkJCQkJCQlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMtSUVzLAorCQlsYXRlck5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJdWVDYXBhYmlsaXR5SW5mb3JtYXRpb25Db25maXJtLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJfQorfQorCitVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVVBMSU5LIERJUkVDVCBUUkFOU0ZFUgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVcGxpbmtEaXJlY3RUcmFuc2ZlciA6Oj0gU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tRG9tYWluSWRlbnRpdHkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJCW5hcy1NZXNzYWdlCQkJCQkJTkFTLU1lc3NhZ2UsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCU1lYXN1cmVkUmVzdWx0c09uUkFDSAkJCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXVwbGlua0RpcmVjdFRyYW5zZmVyLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQl1cGxpbmtEaXJlY3RUcmFuc2Zlci12NjkwZXh0CQlVcGxpbmtEaXJlY3RUcmFuc2Zlci12NjkwZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworVXBsaW5rRGlyZWN0VHJhbnNmZXItdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwltZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQkJCQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVUExJTksgUEhZU0lDQUwgQ0hBTk5FTCBDT05UUk9MCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wgOjo9IENIT0lDRSB7CisJcjMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yMwlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXIzLUlFcywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJdXBsaW5rUHlzaWNhbENoYW5uZWxDb250cm9sLXY0YjBleHQJCVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjRiMGV4dC1JRXMsCisJCQkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLXJlbGVhc2UgNCBpbmZvcm1hdGlvbgorCQkJCW5vbmNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNAlVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI0LUlFcywKKwkJCQl2NGQwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNQorCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NjkwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJQ0hPSUNFIHsKKwkJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI1CVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjUtSUVzLAorCQkJCQktLSBDb250YWluZXIgZm9yIGFkZGluZyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucyBhZnRlciBmcmVlemluZyBSRUwtNgorCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI1LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY2OTBleHQJVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NjkwZXh0LUlFcywKKwkJCQkJCXY2YTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFeworCQkJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjZhMGV4dAorCQkJCQkJCQkJCQkJCQkJCVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjZhMGV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKKwkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0sCisJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJCXI3CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI3CVVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjctSUVzLAorCQkJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTgKKwkJCQkJCXVwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjctYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQkJfSwKKwkJCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXIzLUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLCAKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQljY1RyQ0gtUG93ZXJDb250cm9sSW5mbwkJCUNDVHJDSC1Qb3dlckNvbnRyb2xJbmZvCQkJCU9QVElPTkFMLAorCQl0aW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbAkJCQlPUFRJT05BTCwKKwkJYWxwaGEJCQkJCQkJQWxwaGEJCQkJCQkJCU9QVElPTkFMLAorCQlzcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJU3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCQlPUFRJT05BTCwKKwkJcHJhY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJCQlPUFRJT05BTCwKKwkJcHVzY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJCQlPUFRJT05BTAorfQorCitVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gSW4gY2FzZSBvZiBUREQsIG9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVEREIGlzIGluY2x1ZGVkIGluc3RlYWQgb2YgSUUKKwktLSB1cC1JUERMLVBhcmFtZXRlcnMgaW4gdXAtT1RET0EtQXNzaXN0YW5jZURhdGEKKwlvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTAorfQorCitVcGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLXI0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWNjVHJDSC1Qb3dlckNvbnRyb2xJbmZvCQkJQ0NUckNILVBvd2VyQ29udHJvbEluZm8tcjQJCQlPUFRJT05BTCwKKwkJc3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCVNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQkJT1BUSU9OQUwsCisJCXRkZE9wdGlvbgkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CU9QVElPTkFMLAorCQkJCWFscGhhCQkJCQkJCUFscGhhCQkJCQkJT1BUSU9OQUwsCisJCQkJcHJhY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCisJCQkJcHVzY2gtQ29uc3RhbnRWYWx1ZQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwsCisJCQkJb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQJT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXVsLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTAorCQkJfQorCQl9Cit9CisKK1VwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtcjUtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJY2NUckNILVBvd2VyQ29udHJvbEluZm8JCQlDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNQkJCU9QVElPTkFMLAorCQlzcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJU3BlY2lhbEJ1cnN0U2NoZWR1bGluZwkJCQlPUFRJT05BTCwKKwkJdGRkT3B0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCisJCQkJYWxwaGEJCQkJCQkJQWxwaGEJCQkJCQlPUFRJT05BTCwKKwkJCQlwcmFjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKKwkJCQlwdXNjaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWVUZGQJCQlPUFRJT05BTCwKKwkJCQlvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTCwKKwkJCQlocy1TSUNILVBvd2VyQ29udHJvbAkJCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMCisJCQl9CisJCX0KK30KKworVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC12NjkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIENoYW5uZWwgSUVzCisJCWJlYWNvblBMRXN0CQkJCQkJQkVBQ09OLVBMLUVzdAkJCQkJCU9QVElPTkFMCit9CisKK1VwbGlua1BoeXNpY2FsQ2hhbm5lbENvbnRyb2wtdjZhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBDaGFubmVsIElFcworCQlkZXNpcmVkLUhTLVNJQ0gtUG93ZXJMZXZlbAkJSU5URUdFUiAoLTEyMC4uLTU4KQkJCQkJT1BUSU9OQUwsCisJCXRwYy1TdGVwLVNpemUJCQkJCUVOVU1FUkFURUQgeyBzMSwgczIsIHMzICwgc3BhcmUxIH0JT1BUSU9OQUwKK30KKworVXBsaW5rUGh5c2ljYWxDaGFubmVsQ29udHJvbC1yNy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQljY1RyQ0gtUG93ZXJDb250cm9sSW5mbwkJCUNDVHJDSC1Qb3dlckNvbnRyb2xJbmZvLXI3CQkJT1BUSU9OQUwsCisJCXNwZWNpYWxCdXJzdFNjaGVkdWxpbmcJCQlTcGVjaWFsQnVyc3RTY2hlZHVsaW5nCQkJCU9QVElPTkFMLAorCQl0ZGRPcHRpb24JCQkJCQlDSE9JQ0UgeworCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl0aW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNAlPUFRJT05BTCwKKwkJCQlhbHBoYQkJCQkJCQlBbHBoYQkJCQkJCU9QVElPTkFMLAorCQkJCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAorCQkJCXB1c2NoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAorCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAorCQkJCWhzLVNJQ0gtUG93ZXJDb250cm9sCQkJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVEREMzg0CU9QVElPTkFMCisJCQl9LAorCQkJdGRkNzY4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl0aW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNwlPUFRJT05BTCwKKwkJCQlhbHBoYQkJCQkJCQlBbHBoYQkJCQkJCU9QVElPTkFMLAorCQkJCXByYWNoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAorCQkJCXB1c2NoLUNvbnN0YW50VmFsdWUJCQkJQ29uc3RhbnRWYWx1ZVRkZAkJCU9QVElPTkFMLAorCQkJCW9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERECU9wZW5Mb29wUG93ZXJDb250cm9sLUlQREwtVERELXI0CU9QVElPTkFMLAorCQkJCWhzLVNJQ0gtUG93ZXJDb250cm9sCQkJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVERENzY4CU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1bC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCVVMLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQJT1BUSU9OQUwsCisJCQkJZGVzaXJlZC1IUy1TSUNILVBvd2VyTGV2ZWwJCUlOVEVHRVIgKC0xMjAuLi01OCkJCQkJT1BUSU9OQUwsCisJCQkJdHBjLVN0ZXAtU2l6ZQkJCQkJRU5VTUVSQVRFRCB7IHMxLCBzMiwgczMgLCBzcGFyZTEgfQlPUFRJT05BTAorCQkJfQorCQl9Cit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVSQSBVUERBVEUKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVVJBVXBkYXRlIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCXVyYS1VcGRhdGVDYXVzZQkJCQkJVVJBLVVwZGF0ZUNhdXNlLAorCQlwcm90b2NvbEVycm9ySW5kaWNhdG9yCQkJUHJvdG9jb2xFcnJvckluZGljYXRvcldpdGhNb3JlSW5mbywKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXVyYVVwZGF0ZS1yMy1hZGQtZXh0CQlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVSQSBVUERBVEUgQ09ORklSTQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitVUkFVcGRhdGVDb25maXJtIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXVyYVVwZGF0ZUNvbmZpcm0tcjMJCQkJVVJBVXBkYXRlQ29uZmlybS1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQl1cmFVcGRhdGVDb25maXJtLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXVyYVVwZGF0ZUNvbmZpcm0tdjY5MGV4dAkJCVVSQVVwZGF0ZUNvbmZpcm0tdjY5MGV4dC1JRXMsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQl9CU9QVElPTkFMCisJCX0JT1BUSU9OQUwKKwl9LAorCWxhdGVyLXRoYW4tcjMJCQkJCVNFUVVFTkNFIHsKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwKKwkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXVyYVVwZGF0ZUNvbmZpcm0tcjUJCQkJVVJBVXBkYXRlQ29uZmlybS1yNS1JRXMsCisJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQl1cmFVcGRhdGVDb25maXJtLXY2OTBleHQJCQlVUkFVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCX0KKwl9Cit9CisKK1VSQVVwZGF0ZUNvbmZpcm0tcjMtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCUludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdNb2RlSW5mbwkJCQlDaXBoZXJpbmdNb2RlSW5mbwkJCQkJT1BUSU9OQUwsCisJCW5ldy1VLVJOVEkJCQkJCQlVLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQluZXctQy1STlRJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLVN0YXRlSW5kaWNhdG9yCQkJCVJSQy1TdGF0ZUluZGljYXRvciwKKwkJdXRyYW4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmYJCVVUUkFOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50CU9QVElPTkFMLAorCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm8JCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JCU9QVElPTkFMCit9CisKK1VSQVVwZGF0ZUNvbmZpcm0tcjUtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQlycmMtU3RhdGVJbmRpY2F0b3IJCQkJUlJDLVN0YXRlSW5kaWNhdG9yLAorCQl1dHJhbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJVVRSQU4tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQJT1BUSU9OQUwsCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mbwkJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mby1yNQlPUFRJT05BTAorfQorCitVUkFVcGRhdGVDb25maXJtLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQkJUExNTi1JZGVudGl0eQkJCQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVVJBIFVQREFURSBDT05GSVJNIGZvciBDQ0NICistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VSQVVwZGF0ZUNvbmZpcm0tQ0NDSCA6Oj0gQ0hPSUNFIHsKKwlyMwkJCQkJCQkJU0VRVUVOQ0UgeworCQl1cmFVcGRhdGVDb25maXJtLUNDQ0gtcjMJCVVSQVVwZGF0ZUNvbmZpcm0tQ0NDSC1yMy1JRXMsCisJCWxhdGVyTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQl1cmFVcGRhdGVDb25maXJtLUNDQ0gtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJdXJhVXBkYXRlQ29uZmlybS12NjkwZXh0CQkJVVJBVXBkYXRlQ29uZmlybS12NjkwZXh0LUlFcywKKwkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30KKwl9Cit9CisKK1VSQVVwZGF0ZUNvbmZpcm0tQ0NDSC1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdS1STlRJCQkJCQkJCVUtUk5USSwKKwktLSBUaGUgcmVzdCBvZiB0aGUgbWVzc2FnZSBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBzZW50IG9uIERDQ0guCisJCXVyYVVwZGF0ZUNvbmZpcm0JCQkJVVJBVXBkYXRlQ29uZmlybS1yMy1JRXMKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gVVRSQU4gTU9CSUxJVFkgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbi1yMwkJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLXIzLUlFcywKKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQJVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uLXYzYTBleHQtSUVzLAorCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpdGlvbmFsIFI5OSBleHRlbnNpb25zCisJCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0CVV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbi12NjkwZXh0LUlFcywKKwkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXI1CQlVVFJBTk1vYmlsaXR5SW5mb3JtYXRpb24tcjUtSUVzLAorCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQJVXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CisJCX0KKwl9Cit9CisKK1VUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi1yMy1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJUlJDLVRyYW5zYWN0aW9uSWRlbnRpZmllciwgCisJCWludGVncml0eVByb3RlY3Rpb25Nb2RlSW5mbwkJSW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQkJT1BUSU9OQUwsCisJCWNpcGhlcmluZ01vZGVJbmZvCQkJCUNpcGhlcmluZ01vZGVJbmZvCQkJCQlPUFRJT05BTCwKKwkJbmV3LVUtUk5USQkJCQkJCVUtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCW5ldy1DLVJOVEkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQl1ZS1Db25uVGltZXJzQW5kQ29uc3RhbnRzCQlVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzCQkJT1BUSU9OQUwsCisJLS0gQ04gaW5mb3JtYXRpb24gZWxlbWVudHMKKwkJY24tSW5mb3JtYXRpb25JbmZvCQkJCUNOLUluZm9ybWF0aW9uSW5mb0Z1bGwJCQkJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlkbC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwlETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbwkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKK1VUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi12M2EwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCXVlLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAkJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0Cit9CisKK1VUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbi1yNS1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvbk1vZGVJbmZvCQlJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8JCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nTW9kZUluZm8JCQkJQ2lwaGVyaW5nTW9kZUluZm8JCQkJCU9QVElPTkFMLAorCQluZXctVS1STlRJCQkJCQkJVS1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJbmV3LUMtUk5USQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXVlLUNvbm5UaW1lcnNBbmRDb25zdGFudHMJCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtcjUJCU9QVElPTkFMLAorCS0tIENOIGluZm9ybWF0aW9uIGVsZW1lbnRzCisJCWNuLUluZm9ybWF0aW9uSW5mbwkJCQlDTi1JbmZvcm1hdGlvbkluZm9GdWxsCQkJCU9QVElPTkFMLAorCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQl1cmEtSWRlbnRpdHkJCQkJCVVSQS1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJZGwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8JREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUJT1BUSU9OQUwKK30KKworVXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQlwcmltYXJ5LXBsbW4tSWRlbnRpdHkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFVUUkFOIE1PQklMSVRZIElORk9STUFUSU9OIENPTkZJUk0KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVVRSQU5Nb2JpbGl0eUluZm9ybWF0aW9uQ29uZmlybSA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLCAKKwkJdWwtSW50ZWdQcm90QWN0aXZhdGlvbkluZm8JCUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJY291bnQtQy1BY3RpdmF0aW9uVGltZQkJCUFjdGl2YXRpb25UaW1lCQkJCQkJT1BUSU9OQUwsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwkJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCQlkdW1teQkJCQkJCQlSQi1BY3RpdmF0aW9uVGltZUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCXVsLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCVVMLUNvdW50ZXJTeW5jaHJvbmlzYXRpb25JbmZvCQlPUFRJT05BTCwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbkNvbmZpcm0tcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBVVFJBTiBNT0JJTElUWSBJTkZPUk1BVElPTiBGQUlMVVJFCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1VUUkFOTW9iaWxpdHlJbmZvcm1hdGlvbkZhaWx1cmUgOjo9IFNFUVVFTkNFIHsKKwktLSBVRSBpbmZvcm1hdGlvbiBlbGVtZW50cworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLCAKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVyciwKKwkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQktLSBDb250YWluZXIgZm9yIGFkZGl0aW9uYWwgUjk5IGV4dGVuc2lvbnMKKwkJCXV0cmFuTW9iaWxpdHlJbmZvcm1hdGlvbkZhaWx1cmUtcjMtYWRkLWV4dAkJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIEFDQ0VTUyBJTkZPUk1BVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQk1TQWNjZXNzSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBBY2Nlc3MgSW5mb3JtYXRpb24gSUVzCisJCW1ibXMtU2VydmljZUFjY2Vzc0luZm9MaXN0CQlNQk1TLVNlcnZpY2VBY2Nlc3NJbmZvTGlzdC1yNiwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTUJNUyBDT01NT04gUFRNIFJCIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVNDb21tb25QVE1SQkluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gQ29tbW9uIFBUTSBSQiBJbmZvcm1hdGlvbiBJRXMKKwkJbWJtcy1Db21tb25SQkluZm9ybWF0aW9uTGlzdAlNQk1TLUNvbW1vblJCSW5mb3JtYXRpb25MaXN0LXI2LAorCQltYm1zLVRyYW5zcENoSW5mb0ZvckVhY2hUckNoCU1CTVMtVHJhbnNwQ2hJbmZvRm9yRWFjaFRyQ2gtcjYsCisJCW1ibXMtVHJhbnNwQ2hJbmZvRm9yRWFjaENDVHJDaAlNQk1TLVRyYW5zcENoSW5mb0ZvckVhY2hDQ1RyQ2gtcjYJT1BUSU9OQUwsCisJCW1ibXMtUGh5Q2hJbmZvcm1hdGlvbkxpc3QJCU1CTVMtUGh5Q2hJbmZvcm1hdGlvbkxpc3QtcjYsCisJLS0gTm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1CTVMgQ1VSUkVOVCBDRUxMIFBUTSBSQiBJTkZPUk1BVElPTgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQk1TQ3VycmVudENlbGxQVE1SQkluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gQ3VycmVudCBDZWxsIFBUTSBSQiBJbmZvcm1hdGlvbiBJRXMKKwkJbWJtcy1DdXJyZW50Q2VsbC1TQ0NQQ0hMaXN0CQlNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSExpc3QtcjYJCU9QVElPTkFMLAorCQltYm1zLVNJQlR5cGU1LVNDQ1BDSExpc3QJCU1CTVMtU0lCVHlwZTUtU0NDUENITGlzdC1yNgkJCU9QVElPTkFMLAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIEdFTkVSQUwgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU0dlbmVyYWxJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCS0tIE1CTVMgR2VuZXJhbCBJbmZvcm1hdGlvbiBJRXMKKwkJbWJtcy1QcmVmZXJyZWRGcmVxdWVuY3lJbmZvCQlNQk1TLVByZWZlcnJlZEZyZXF1ZW5jeUxpc3QtcjYJCU9QVElPTkFMLAorCQltYm1zLVRpbWVyc0FuZENvdW50ZXJzCQkJTUJNUy1UaW1lcnNBbmRDb3VudGVycy1yNiwKKwkJbWljaENvbmZpZ3VyYXRpb25JbmZvCQkJTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjYsCisJCWNlbGxHcm91cElkZW50aXR5CQkJCU1CTVMtQ2VsbEdyb3VwSWRlbnRpdHktcjYsCisJCW1zY2hEZWZhdWx0Q29uZmlndXJhdGlvbkluZm8JTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTCwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQltYm1zR2VuZXJBbEluZm9ybWF0aW9uLXY3eHlleHQJTUJNU0dlbmVyYWxJbmZvcm1hdGlvbi12N3h5ZXh0LUlFcywKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQl9Cit9CisKK01CTVNHZW5lcmFsSW5mb3JtYXRpb24tdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJbWJtc01JQ0hDb25maWd1cmF0aW9uLXY3eHlleHQJTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjcJCU9QVElPTkFMCit9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIE1CTVMgTU9ESUZJQ0FUSU9OIFJFUVVFU1QKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU01vZGlmaWNhdGlvblJlcXVlc3QgOjo9IFNFUVVFTkNFIHsKKwktLSBNQk1TIE1vZGlmaWNhdGlvbiBSZXF1ZXN0IElFcworCQltYm1zLVByZWZlcnJlZEZyZXFSZXF1ZXN0CQlNQk1TLVNlcnZpY2VJZGVudGl0eS1yNgkJCQlPUFRJT05BTCwKKwkJcmItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJUkItSW5mb3JtYXRpb25SZWxlYXNlTGlzdAkJCU9QVElPTkFMLAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSBNQk1TIE1PRElGSUVEIFNFUlZJQ0VTIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVNNb2RpZmllZFNlcnZpY2VzSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBNQk1TIE1vZGlmaWVkIFNlcnZpY2VzIEluZm9ybWF0aW9uIElFcworCQltb2RpZmVkU2VydmljZUxpc3QJCQkJTUJNUy1Nb2RpZmVkU2VydmljZUxpc3QtcjYJCQlPUFRJT05BTCwKKwkJbWJtcy1SZWFjcXVpcmVNQ0NICQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCQltYm1zLUR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsCUR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsCQkJCU9QVElPTkFMLAorCQllbmRPZk1vZGlmaWVkTUNDSEluZm9ybWF0aW9uCUlOVEVHRVIgKDEuLjE2KQkJCQkJCU9QVElPTkFMLAorCQltYm1zTnVtYmVyT2ZOZWlnaGJvdXJDZWxscwkJTUJNUy1OdW1iZXJPZk5laWdoYm91ckNlbGxzLXI2LAorCQltYm1zLUFsbFVubW9kaWZpZWRQVE1TZXJ2aWNlcwlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTCwKKwkJbWJtcy1QVE1BY3RpdmF0aW9uVGltZQkJCU1CTVMtUFRNQWN0aXZhdGlvblRpbWUtcjYJCQlPUFRJT05BTCwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTUJNUyBORUlHSEJPVVJJTkcgQ0VMTCBQVE0gUkIgSU5GT1JNQVRJT04KKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworTUJNU05laWdoYm91cmluZ0NlbGxQVE1SQkluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJLS0gTUJNUyBOZWlnaGJvdXJpbmcgQ2VsbCBQVE0gUkIgSW5mb3JtYXRpb24gSUVzCisJCW5laWdoYm91cmluZ0NlbGxJZGVudGl0eQkJSW50cmFGcmVxQ2VsbElELAorCQluZWlnaGJvdXJpbmdDZWxsU0NDUENITGlzdAkJTUJNUy1OZWlnaGJvdXJpbmdDZWxsU0NDUENITGlzdC1yNiwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTUJNUyBTQ0hFRFVMSU5HIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVNTY2hlZHVsaW5nSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKKwktLSBNQk1TIFNjaGVkdWxpbmcgSW5mb3JtYXRpb24gSUVzCisJCXNlcnZpY2VTY2hlZHVsaW5nSW5mb0xpc3QJCU1CTVMtU2VydmljZVNjaGVkdWxpbmdJbmZvTGlzdC1yNiwKKwktLSBOb24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gTUJNUyBVTk1PRElGSUVEIFNFUlZJQ0VTIElORk9STUFUSU9OCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK01CTVNVbm1vZGlmaWVkU2VydmljZXNJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgeworCS0tIE1CTVMgVW5tb2RpZmllZCBTZXJ2aWNlcyBJbmZvcm1hdGlvbiBJRXMKKwkJdW5tb2RpZmllZFNlcnZpY2VMaXN0CQkJTUJNUy1Vbm1vZGlmaWVkU2VydmljZUxpc3QtcjYJCU9QVElPTkFMLAorCS0tIE5vbiBjcml0aWNhbCBleHRlbnNpb25zCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCitFTkQKKworSW5mb3JtYXRpb25FbGVtZW50cyBERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIENPUkUgTkVUV09SSyBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy4xKQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitCRUdJTgorCitJTVBPUlRTCisKKwloaVBEU0NIaWRlbnRpdGllcywKKwloaVBVU0NIaWRlbnRpdGllcywKKwloaVJNLAorCW1heEFDLAorCW1heEFkZGl0aW9uYWxNZWFzLAorCW1heEFTQywKKwltYXhBU0NtYXAsCisJbWF4QVNDcGVyc2lzdCwKKwltYXhDQ1RyQ0gsCisJbWF4Q2VsbE1lYXMsCisJbWF4Q2VsbE1lYXMtMSwKKwltYXhDTmRvbWFpbnMsCisJbWF4Q1BDSHNldHMsCisJbWF4RFBDSC1ETGNoYW4sCisJbWF4RFBEQ0gtVUwsCisJbWF4RFJBQ2NsYXNzZXMsCisJbWF4RS1EQ0hNQUNkRmxvdywKKwltYXhFLURDSE1BQ2RGbG93LTEsCisJbWF4RkFDSFBDSCwKKwltYXhGcmVxLAorCW1heEZyZXFCYW5kc0ZERCwKKwltYXhGcmVxQmFuZHNGREQtZXh0LAorCW1heEZyZXFCYW5kc1RERCwKKwltYXhGcmVxQmFuZHNHU00sCisJbWF4R0VSQU4tU0ksCisJbWF4SFByb2Nlc3NlcywKKwltYXhIU0RTQ0hUQkluZGV4LAorCW1heEhTRFNDSFRCSW5kZXgtdGRkMzg0LAorCW1heEhTU0NDSHMsCisJbWF4SW50ZXJTeXNNZXNzYWdlcywKKwltYXhMb0NIcGVyUkxDLAorCW1heE1BQy1kLVBEVXNpemVzLAorCW1heE1CTVMtQ29tbW9uQ0NUckNoLAorCW1heE1CTVMtQ29tbW9uUGh5Q2gsCisJbWF4TUJNUy1Db21tb25SQiwKKwltYXhNQk1TLUNvbW1vblRyQ2gsCisJbWF4TUJNUy1GcmVxLAorCW1heE1CTVMtTDFDUCwKKwltYXhNQk1Tc2VydkNvdW50LAorCW1heE1CTVNzZXJ2TW9kaWYsCisJbWF4TUJNU3NlcnZTY2hlZCwKKwltYXhNQk1Tc2VydlVubW9kaWYsCisJbWF4TUJNU1RyYW5zbWlzLAorCW1heE1lYXNFdmVudCwKKwltYXhNZWFzSW50ZXJ2YWxzLAorCW1heE1lYXNQYXJFdmVudCwKKwltYXhOdW1DRE1BMjAwMEZyZXFzLAorCW1heE51bUZEREZyZXFzLAorCW1heE51bUdTTUZyZXFSYW5nZXMsCisJbWF4R1NNVGFyZ2V0Q2VsbHMsCisJbWF4TnVtVERERnJlcXMsCisJbWF4T3RoZXJSQVQsCisJbWF4T3RoZXJSQVQtMTYsCisJbWF4UGFnZTEsCisJbWF4UENQQ0gtQVBzaWcsCisJbWF4UENQQ0gtQVBzdWJDaCwKKwltYXhQQ1BDSC1DRHNpZywKKwltYXhQQ1BDSC1DRHN1YkNoLAorCW1heFBDUENILVNGLAorCW1heFBDUENIcywKKwltYXhQRENQQWxnb1R5cGUsCisJbWF4UERTQ0gsCisJbWF4UERTQ0gtVEZDSWdyb3VwcywKKwltYXhQUkFDSCwKKwltYXhQUkFDSC1GUEFDSCwKKwltYXhQcmVkZWZDb25maWcsCisJbWF4UFVTQ0gsCisJbWF4UXVldWVJRHMsCisJbWF4UkFCc2V0dXAsCisJbWF4UkFULAorCW1heFJCLAorCW1heFJCYWxsUkFCcywKKwltYXhSQnBlclRyQ2gsCisJbWF4UkJNdXhPcHRpb25zLAorCW1heFJCcGVyUkFCLAorCW1heFJlcG9ydGVkR1NNQ2VsbHMsCisJbWF4UkxDUERVc2l6ZVBlckxvZ0NoYW4sCisJbWF4U1JCc2V0dXAsCisJbWF4UkwsCisJbWF4UkwtMSwKKwltYXhFRENIUkwsCisJbWF4Uk9IQy1QYWNrZXRTaXplcy1yNCwKKwltYXhST0hDLVByb2ZpbGUtcjQsCisJbWF4U0NDUENILAorCW1heFNhdCwKKwltYXhTSUIsCisJbWF4U0lCLUZBQ0gsCisJbWF4U3lzdGVtQ2FwYWJpbGl0eSwKKwltYXhURiwKKwltYXhURi1DUENILAorCW1heFRGQywKKwltYXhURkNzdWIsCisJbWF4VEZDSS0yLUNvbWJzLAorCW1heFRHUFMsCisJbWF4VHJDSCwKKwltYXhUckNIcHJlY29uZiwKKwltYXhUUywKKwltYXhUUy0xLAorCW1heFRTLTIsCisJbWF4VFMtTENSLAorCW1heFRTLUxDUi0xLAorCW1heFVSQSwKKwltYXhVUk5USS1Hcm91cAorRlJPTSBDb25zdGFudC1kZWZpbml0aW9uczsKKworQW5zaS00MS1JRE5OUyA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTQpKQorCitDTi1Eb21haW5JZGVudGl0eSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY3MtZG9tYWluLAorCQkJCQkJCQkJCXBzLWRvbWFpbiB9CisKK0NOLURvbWFpbkluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJY24tRG9tYWluU3BlY2lmaWNOQVMtSW5mbwkJCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAKK30KKworQ04tRG9tYWluSW5mb3JtYXRpb25GdWxsIDo6PQkJU0VRVUVOQ0UgeworCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwljbi1Eb21haW5TcGVjaWZpY05BUy1JbmZvCQkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKKwljbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJCQlDTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAorfQorCitDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlDTi1Eb21haW5JbmZvcm1hdGlvbgorCitDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlDTi1Eb21haW5JbmZvcm1hdGlvbkZ1bGwKKworQ04tRG9tYWluU3lzSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwljbi1UeXBlCQkJCQkJCQlDSE9JQ0UgeworCQlnc20tTUFQCQkJCQkJCQlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAorCQlhbnNpLTQxCQkJCQkJCQlOQVMtU3lzdGVtSW5mb3JtYXRpb25BTlNJLTQxCisJfSwKKwljbi1EUlgtQ3ljbGVMZW5ndGhDb2VmZgkJCQlDTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudAorfQorCitDTi1Eb21haW5TeXNJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlDTi1Eb21haW5TeXNJbmZvCisKK0NOLUluZm9ybWF0aW9uSW5mbyA6Oj0gCQkJCVNFUVVFTkNFIHsKKwlwbG1uLUlkZW50aXR5CQkJCQkJUExNTi1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAJCU9QVElPTkFMLAorCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJCUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMCit9CisKK0NOLUluZm9ybWF0aW9uSW5mby1yNiA6Oj0gCQkJU0VRVUVOQ0UgeworCXBsbW4tSWRlbnRpdHkJCQkJCQlQTE1OLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwkJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUAkJT1BUSU9OQUwsCisJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCisJcHJpbWFyeS1wbG1uLUlkZW50aXR5CQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTAorfQorCitDTi1JbmZvcm1hdGlvbkluZm9GdWxsIDo6PSAJCQlTRVFVRU5DRSB7CisJcGxtbi1JZGVudGl0eQkJCQkJCVBMTU4tSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwljbi1Db21tb25HU00tTUFQLU5BUy1TeXNJbmZvCQlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQCQlPUFRJT05BTCwKKwljbi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsCQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsCQlPUFRJT05BTAorfQorCitEaWdpdCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uOSkKKworR3NtLW1hcC1JRE5OUyA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCXJvdXRpbmdiYXNpcwkJCQkJCQkJCUNIT0lDRSB7CisJCWxvY2FsUFRNU0kJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgorCQl9LAorCQl0TVNJb2ZzYW1lUExNTgkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKKwkJfSwKKwkJdE1TSW9mZGlmZmVyZW50UExNTgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgorCQl9LAorCQlpTVNJcmVzcG9uc2V0b3BhZ2luZwkJCQkJCQlTRVFVRU5DRSB7CisJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCisJCX0sCisJCWlNU0ljYXVzZVVFaW5pdGlhdGVkRXZlbnQJCQkJCQlTRVFVRU5DRSB7CisJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCisJCX0sCisJCWlNRUkJCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJvdXRpbmdwYXJhbWV0ZXIJCQkJCQkJCVJvdXRpbmdQYXJhbWV0ZXIKKwkJfSwKKwkJc3BhcmUyCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyb3V0aW5ncGFyYW1ldGVyCQkJCQkJCQlSb3V0aW5nUGFyYW1ldGVyCisJCX0sCisJCXNwYXJlMQkJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcm91dGluZ3BhcmFtZXRlcgkJCQkJCQkJUm91dGluZ1BhcmFtZXRlcgorCQl9CisJfSwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCWR1bW15CQkJCQkJCQkJQk9PTEVBTgorfQorCitJTUVJIDo6PQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMTUpKSBPRgorCQkJCQkJCQkJCUlNRUktRGlnaXQKKworSU1FSS1EaWdpdCA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNSkKKworSU1TSS1HU00tTUFQIDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDYuLjIxKSkgT0YKKwkJCQkJCQkJCQlEaWdpdAorCitJbnRyYURvbWFpbk5hc05vZGVTZWxlY3RvciA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl2ZXJzaW9uCQkJCQkJCQkJCQlDSE9JQ0UgeworCQlyZWxlYXNlOTkJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY24tVHlwZQkJCQkJCQkJCQkJQ0hPSUNFIHsKKwkJCQlnc20tTWFwLUlETk5TCQkJCQkJCQkJR3NtLW1hcC1JRE5OUywKKwkJCQlhbnNpLTQxLUlETk5TCQkJCQkJCQkJQW5zaS00MS1JRE5OUworCQkJfQorCQl9LAorCQlsYXRlcgkJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZnV0dXJlY29kaW5nCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTUpKQorCQl9CisJfQorfQorCitMQUkgOjo9CQkJCQkJCQlTRVFVRU5DRSB7CisJcGxtbi1JZGVudGl0eQkJCQkJCVBMTU4tSWRlbnRpdHksCisJbGFjCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQorfQorCitNQ0MgOjo9CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMykpIE9GCisJCQkJCQkJCQkJRGlnaXQKKworTU5DIDo6PQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDIuLjMpKSBPRgorCQkJCQkJCQkJCURpZ2l0CisKK011bHRpcGxlUExNTi1MaXN0LXI2IDo6PQkJCVNFUVVFTkNFIHsKKwltaWJQTE1OLUlkZW50aXR5CQkJCQlCT09MRUFOLAorCW11bHRpcGxlUExNTnMJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uNSkpIE9GCisJCQkJCQkJCQkJCVBMTU4tSWRlbnRpdHlXaXRoT3B0aW9uYWxNQ0MtcjYKK30KKworTkFTLU1lc3NhZ2UgOjo9CQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICgxLi40MDk1KSkKKworTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IgOjo9CUJJVCBTVFJJTkcoU0laRSg0KSkKKworTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCA6Oj0gCU9DVEVUIFNUUklORyAoU0laRSAoMS4uOCkpCisKK1AtVE1TSS1HU00tTUFQIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKQorCitQYWdpbmdSZWNvcmRUeXBlSUQgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWltc2ktR1NNLU1BUCwKKwkJCQkJCQkJCQl0bXNpLUdTTS1NQVAtUC1UTVNJLAorCQkJCQkJCQkJCWltc2ktRFMtNDEsCisJCQkJCQkJCQkJdG1zaS1EUy00MSB9CisKK1BMTU4tSWRlbnRpdHkgOjo9CQkJCQlTRVFVRU5DRSB7CisJbWNjCQkJCQkJCQkJTUNDLAorCW1uYwkJCQkJCQkJCU1OQworfQorCitQTE1OLUlkZW50aXR5V2l0aE9wdGlvbmFsTUNDLXI2IDo6PQlTRVFVRU5DRSB7CisJbWNjCQkJCQkJCQkJTUNDCQkJCQkJT1BUSU9OQUwsCisJbW5jCQkJCQkJCQkJTU5DCit9CisKK1BMTU4tVHlwZSA6Oj0JCQkJCQlDSE9JQ0UgeworCWdzbS1NQVAJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcGxtbi1JZGVudGl0eQkJCQkJCVBMTU4tSWRlbnRpdHkKKwl9LAorCWFuc2ktNDEJCQkJCQkJU0VRVUVOQ0UgeworCQlwLVJFVgkJCQkJCQlQLVJFViwKKwkJbWluLVAtUkVWCQkJCQkJTWluLVAtUkVWLAorCQlzaWQJCQkJCQkJCVNJRCwKKwkJbmlkCQkJCQkJCQlOSUQKKwl9LAorCWdzbS1NQVAtYW5kLUFOU0ktNDEJCQkJU0VRVUVOQ0UgeworCQlwbG1uLUlkZW50aXR5CQkJCQlQTE1OLUlkZW50aXR5LAorCQlwLVJFVgkJCQkJCQlQLVJFViwKKwkJbWluLVAtUkVWCQkJCQkJTWluLVAtUkVWLAorCQlzaWQJCQkJCQkJCVNJRCwKKwkJbmlkCQkJCQkJCQlOSUQKKwl9LAorCXNwYXJlCQkJCQkJCU5VTEwKK30KKworUkFCLUlkZW50aXR5IDo6PQkJCQkJQ0hPSUNFIHsKKwlnc20tTUFQLVJBQi1JZGVudGl0eQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYW5zaS00MS1SQUItSWRlbnRpdHkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCit9CisKK1JBSSA6Oj0JCQkJCQkJCVNFUVVFTkNFIHsKKwlsYWkJCQkJCQkJCQlMQUksCisJcmFjCQkJCQkJCQkJUm91dGluZ0FyZWFDb2RlCit9CisKK1JvdXRpbmdBcmVhQ29kZSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQorCitSb3V0aW5nUGFyYW1ldGVyIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxMCkpCisKK1RNU0ktR1NNLU1BUCA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSkKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIFVUUkFOIE1PQklMSVRZIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjIpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FjY2Vzc0NsYXNzQmFycmVkIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQliYXJyZWQsIG5vdEJhcnJlZCB9CisKK0FjY2Vzc0NsYXNzQmFycmVkTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAobWF4QUMpKSBPRgorCQkJCQkJCQkJCUFjY2Vzc0NsYXNzQmFycmVkCisKK0FsbG93ZWRJbmRpY2F0b3IgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWFsbG93ZWQsIG5vdEFsbG93ZWQgfQorCitDZWxsQWNjZXNzUmVzdHJpY3Rpb24gOjo9CQkJU0VRVUVOQ0UgeworCWNlbGxCYXJyZWQJCQkJCQkJQ2VsbEJhcnJlZCwKKwljZWxsUmVzZXJ2ZWRGb3JPcGVyYXRvclVzZQkJCVJlc2VydmVkSW5kaWNhdG9yLAorCWNlbGxSZXNlcnZhdGlvbkV4dGVuc2lvbgkJCVJlc2VydmVkSW5kaWNhdG9yLAorCS0tIE5PVEU6IElFIGFjY2Vzc0NsYXNzQmFycmVkTGlzdCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGlmIHRoZSBJRSBDZWxsQWNjZXNzUmVzdHJpY3Rpb24KKwktLSBpcyBpbmNsdWRlZCBpbiB0aGUgSUUgU3lzSW5mb1R5cGU0CisJYWNjZXNzQ2xhc3NCYXJyZWRMaXN0CQkJCUFjY2Vzc0NsYXNzQmFycmVkTGlzdAkJCQlPUFRJT05BTAorfQorCitDZWxsQmFycmVkIDo6PQkJCQkJCUNIT0lDRSB7CisJYmFycmVkCQkJCQkJCQlTRVFVRU5DRSB7CisJCWludHJhRnJlcUNlbGxSZXNlbGVjdGlvbkluZAkJCUFsbG93ZWRJbmRpY2F0b3IsCisJCXQtQmFycmVkCQkJCQkJCVQtQmFycmVkCisJfSwKKwlub3RCYXJyZWQJCQkJCQkJTlVMTAorfQorCitDZWxsSWRlbnRpdHkgOjo9CQkJCQlCSVQgU1RSSU5HIChTSVpFICgyOCkpCisKK0NlbGxJZGVudGl0eS1QZXJSTC1MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GIENlbGxJZGVudGl0eQorCitDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTMtNCA6Oj0JU0VRVUVOQ0UgeworCW1hcHBpbmdJbmZvCQkJCQkJCU1hcHBpbmdJbmZvCQkJCQkJCU9QVElPTkFMLAorCWNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZQkJCUNIT0lDRSB7CisJCWNwaWNoLUVjLU4wCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIERlZmF1bHQgdmFsdWUgZm9yIHEtSFlTVC0yLVMgaXMgcS1IWVNULTEtUworCQkJcS1IWVNULTItUwkJCQkJCQlRLUh5c3QtUwkJCQkJT1BUSU9OQUwKKwkJCS0tIERlZmF1bHQgdmFsdWUgZm9yIHEtSFlTVC0yLVMgaXMgcS1IWVNULTEtUworCQl9LAorCQljcGljaC1SU0NQCQkJCQkJCU5VTEwKKwl9LAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXMtSW50cmFzZWFyY2gJCQkJCQlTLVNlYXJjaFF1YWwJCQkJT1BUSU9OQUwsCisJCQlzLUludGVyc2VhcmNoCQkJCQkJUy1TZWFyY2hRdWFsCQkJCU9QVElPTkFMLAorCQkJcy1TZWFyY2hIQ1MJCQkJCQkJUy1TZWFyY2hSWExFVgkJCQlPUFRJT05BTCwKKwkJCXJhdC1MaXN0CQkJCQkJCVJBVC1GREQtSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJCXEtUXVhbE1pbgkJCQkJCQlRLVF1YWxNaW4sCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcy1JbnRyYXNlYXJjaAkJCQkJCVMtU2VhcmNoUlhMRVYJCQkJT1BUSU9OQUwsCisJCQlzLUludGVyc2VhcmNoCQkJCQkJUy1TZWFyY2hSWExFVgkJCQlPUFRJT05BTCwKKwkJCXMtU2VhcmNoSENTCQkJCQkJCVMtU2VhcmNoUlhMRVYJCQkJT1BUSU9OQUwsCisJCQlyYXQtTGlzdAkJCQkJCQlSQVQtVERELUluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4KKwkJfQorCX0sCQorCXEtSHlzdC1sLVMJCQkJCQkJUS1IeXN0LVMsCisJdC1SZXNlbGVjdGlvbi1TCQkJCQkJVC1SZXNlbGVjdGlvbi1TLAorCWhjcy1TZXJ2aW5nQ2VsbEluZm9ybWF0aW9uCQkJSENTLVNlcnZpbmdDZWxsSW5mb3JtYXRpb24JCQlPUFRJT05BTCwKKwltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCit9CisKK0RvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25Gb3JTaGFyZWROZXR3b3JrLXY2NzBleHQgOjo9IENIT0lDRSB7CisJCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdGljdGlvbkxpc3QJCQkJCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25MaXN0LXY2NzBleHQsCisJCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdGljdGlvblBhcmFtZXRlcnNGb3JBbGwJCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbS12NjcwZXh0Cit9CisKK0RvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25MaXN0LXY2NzBleHQgOjo9IFNFUVVFTkNFIHsKKwkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjEKKwkJCQkJCQkJCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbS12NjcwZXh0CU9QVElPTkFMLAorCQlkb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW1ldGVyc0Zvck9wZXJhdG9yMgorCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCisJCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbWV0ZXJzRm9yT3BlcmF0b3IzCisJCQkJCQkJCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW0tdjY3MGV4dAlPUFRJT05BTCwKKwkJZG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtZXRlcnNGb3JPcGVyYXRvcjQKKwkJCQkJCQkJCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25QYXJhbS12NjcwZXh0CU9QVElPTkFMLAorCQlkb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW1ldGVyc0Zvck9wZXJhdG9yNQorCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwKK30KKworRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQgOjo9IFNFUVVFTkNFIHsJCQorCQljU0RvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb24JCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb24tdjY3MGV4dCwKKwkJcFNEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uCQlEb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uLXY2NzBleHQKK30KKworRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvbi12NjcwZXh0IDo6PSBDSE9JQ0UgeworCQlub1Jlc3RyaWN0aW9uCQlOVUxMLAorCQlyZXN0cmljdGlvbgkJCVNFUVVFTkNFIHsKKwkJCWRvbWFpblNwZWNmaWNBY2Nlc3NDbGFzc0JhcnJlZExpc3QJCUFjY2Vzc0NsYXNzQmFycmVkTGlzdAlPUFRJT05BTAorCQl9Cit9CisKK01hcFBhcmFtZXRlciA6Oj0JCQkJCUlOVEVHRVIgKDAuLjk5KQorCitNYXBwaW5nIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJcmF0CQkJCQkJCQkJUkFULAorCW1hcHBpbmdGdW5jdGlvblBhcmFtZXRlckxpc3QJCU1hcHBpbmdGdW5jdGlvblBhcmFtZXRlckxpc3QKK30KKworTWFwcGluZy1MQ1ItcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJbWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdAkJTWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdAorfQorCitNYXBwaW5nRnVuY3Rpb25QYXJhbWV0ZXIgOjo9CQlTRVFVRU5DRSB7CisJZnVuY3Rpb25UeXBlCQkJCQkJTWFwcGluZ0Z1bmN0aW9uVHlwZSwKKwltYXBQYXJhbWV0ZXIxCQkJCQkJTWFwUGFyYW1ldGVyCQkJCQkJT1BUSU9OQUwsCisJbWFwUGFyYW1ldGVyMgkJCQkJCU1hcFBhcmFtZXRlciwKKwktLSBUaGUgcHJlc2VuY2Ugb2YgdXBwZXJMaW1pdCBpcyBjb25kaXRpb25hbCBvbiB0aGUgbnVtYmVyIG9mIHJlcGV0aXRpb24KKwl1cHBlckxpbWl0CQkJCQkJCVVwcGVyTGltaXQJCQkJCQkJT1BUSU9OQUwKK30KKworTWFwcGluZ0Z1bmN0aW9uUGFyYW1ldGVyTGlzdCA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzSW50ZXJ2YWxzKSkgT0YKKwkJCQkJCQkJCQlNYXBwaW5nRnVuY3Rpb25QYXJhbWV0ZXIKKworTWFwcGluZ0Z1bmN0aW9uVHlwZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbGluZWFyLAorCQkJCQkJCQkJCWZ1bmN0aW9uVHlwZTIsCisJCQkJCQkJCQkJZnVuY3Rpb25UeXBlMywKKwkJCQkJCQkJCQlmdW5jdGlvblR5cGU0IH0KKworLS0gSW4gTWFwcGluZ0luZm8gbGlzdCwgbWFwcGluZyBmb3IgRkREIGFuZCAzLjg0TWNwcyBUREQgaXMgZGVmaW5lZC4KKy0tIEZvciAxLjI4TWNwcyBUREQsIE1hcHBpbmctTENSLXI0IGlzIHVzZWQgaW5zdGVhZC4KK01hcHBpbmdJbmZvIDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQVQpKSBPRgorCQkJCQkJCQkJCU1hcHBpbmcKKworLS0gQWN0dWFsIHZhbHVlIFEtSHlzdC1TID0gSUUgdmFsdWUgKiAyCitRLUh5c3QtUyA6Oj0JCQkJCQlJTlRFR0VSICgwLi4yMCkKKworUS1IeXN0LVMtRmluZSA6Oj0gSU5URUdFUiAoMC4uNDApCisKK1JBVCA6Oj0JCQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXV0cmEtRkRELAorCQkJCQkJCQkJCXV0cmEtVERELAorCQkJCQkJCQkJCWdzbSwKKwkJCQkJCQkJCQljZG1hMjAwMCB9CisKK1JBVC1GREQtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlyYXQtSWRlbnRpZmllcgkJCQkJCVJBVC1JZGVudGlmaWVyLAorCXMtU2VhcmNoUkFUCQkJCQkJCVMtU2VhcmNoUXVhbCwKKwlzLUhDUy1SQVQJCQkJCQkJUy1TZWFyY2hSWExFVgkJCQkJCQlPUFRJT05BTCwKKwlzLUxpbWl0LVNlYXJjaFJBVAkJCQkJUy1TZWFyY2hRdWFsCit9CisKK1JBVC1GREQtSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVCkpIE9GCisJCQkJCQkJCQkJUkFULUZERC1JbmZvCisKK1JBVC1JZGVudGlmaWVyIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZ3NtLCBjZG1hMjAwMCB9CisKK1JBVC1UREQtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlyYXQtSWRlbnRpZmllcgkJCQkJCVJBVC1JZGVudGlmaWVyLAorCXMtU2VhcmNoUkFUCQkJCQkJCVMtU2VhcmNoUlhMRVYsCisJcy1IQ1MtUkFUCQkJCQkJCVMtU2VhcmNoUlhMRVYJCQkJCQlPUFRJT05BTCwKKwlzLUxpbWl0LVNlYXJjaFJBVAkJCQkJUy1TZWFyY2hSWExFVgorfQorCitSQVQtVERELUluZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4T3RoZXJSQVQpKSBPRgorCQkJCQkJCQkJCVJBVC1UREQtSW5mbworCitSZXNlcnZlZEluZGljYXRvciA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcmVzZXJ2ZWQsCisJCQkJCQkJCQkJbm90UmVzZXJ2ZWQgfQorCistLSBBY3R1YWwgdmFsdWUgUy1TZWFyY2hRdWFsID0gSUUgdmFsdWUgKiAyCitTLVNlYXJjaFF1YWwgOjo9CQkJCQkJSU5URUdFUiAoLTE2Li4xMCkKKworLS0gQWN0dWFsIHZhbHVlIFMtU2VhcmNoUlhMRVYgPSAoSUUgdmFsdWUgKiAyKSArIDEKK1MtU2VhcmNoUlhMRVYgOjo9CQkJCQkJSU5URUdFUiAoLTUzLi40NSkKKworLS0gQWN0dWFsIHZhbHVlIFNjYWxpbmdGYWN0b3IgPSBJRSB2YWx1ZSAqIDAuMQorU3BlZWREZXBlbmRlbnRTY2FsaW5nRmFjdG9yIDo6PQkJSU5URUdFUiAoMC4uMTApCisKK1QtQmFycmVkIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMxMCwgczIwLCBzNDAsIHM4MCwKKwkJCQkJCQkJCQlzMTYwLCBzMzIwLCBzNjQwLCBzMTI4MCB9CisKK1QtUmVzZWxlY3Rpb24tUyA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMxKQorCistLSBBY3R1YWwgdmFsdWUgVC1SZXNlbGVjdGlvbi1TLUZpbmUgPSBJRSB2YWx1ZSAqIDAuMgorVC1SZXNlbGVjdGlvbi1TLUZpbmUgOjo9CQkJSU5URUdFUiAoMC4uMzEpCisKKy0tIEFjdHVhbCB2YWx1ZSBTY2FsaW5nRmFjdG9yID0gSUUgdmFsdWUgKiAwLjI1CitUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yIDo6PQkJSU5URUdFUiAoNC4uMTkpCisKKy0tIEZvciBVcHBlckxpbWl0LCB0aGUgdXNlZCByYW5nZSBkZXBlbmRzIG9uIHRoZSBSQVQgdXNlZC4KK1VwcGVyTGltaXQgOjo9CQkJCQkJSU5URUdFUiAoMS4uOTEpCisKK1VSQS1JZGVudGl0eSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSkKKworVVJBLUlkZW50aXR5TGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFVSQSkpIE9GCisJCQkJCQkJCQkJVVJBLUlkZW50aXR5CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBVU0VSIEVRVUlQTUVOVCBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy4zKQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcmVsLTQsIHJlbC01LCByZWwtNiwgcmVsLTcsCisJCQkJCQkJCQkJc3BhcmUxMiwgc3BhcmUxMSwgc3BhcmUxMCwgc3BhcmU5LCBzcGFyZTgsCisJCQkJCQkJCQkJc3BhcmU3LAlzcGFyZTYsCXNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsCisJCQkJCQkJCQkJc3BhcmUyLCBzcGFyZTEgfQorCistLSBUQUJVTEFSIDogZm9yIEFjdGl2YXRpb25UaW1lLCB2YWx1ZSAnbm93JyBhbHdheXMgYXBwZWFyIGFzIGRlZmF1bHQsIGFuZCBpcyBlbmNvZGVkCistLSBieSBhYnNlbmNlIG9mIHRoZSBmaWVsZAorQWN0aXZhdGlvblRpbWUgOjo9CQkJCQlJTlRFR0VSICgwLi4yNTUpCisKK0JhY2tvZmZDb250cm9sUGFyYW1zIDo6PQkJCVNFUVVFTkNFIHsKKwluLUFQLVJldHJhbnNNYXgJCQkJCQlOLUFQLVJldHJhbnNNYXgsCisJbi1BY2Nlc3NGYWlscwkJCQkJCU4tQWNjZXNzRmFpbHMsCisJbmYtQk8tTm9BSUNICQkJCQkJTkYtQk8tTm9BSUNILAorCW5zLUJPLUJ1c3kJCQkJCQkJTlMtQk8tQnVzeSwKKwluZi1CTy1BbGxCdXN5CQkJCQkJTkYtQk8tQWxsQnVzeSwKKwluZi1CTy1NaXNtYXRjaAkJCQkJCU5GLUJPLU1pc21hdGNoLAorCXQtQ1BDSAkJCQkJCQkJVC1DUENICit9CisKK0MtUk5USSA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQorCitDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQgOjo9CQlTRVFVRU5DRSB7CisJdWUtUmFkaW9DYXBhYmlsaXR5RkREVXBkYXRlUmVxdWlyZW1lbnQJQk9PTEVBTiwKKwktLSB1ZS1SYWRpb0NhcGFiaWxpdHlURERVcGRhdGVSZXF1aXJlbWVudCBpcyBmb3IgMy44NE1jcHMgVEREIHVwZGF0ZSByZXF1aXJlbWVudAorCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50CUJPT0xFQU4sCisJc3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0CQlTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QJCU9QVElPTkFMCit9CisKK0NhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNC1leHQgOjo9IFNFUVVFTkNFIHsKKwl1ZS1SYWRpb0NhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1UREQxMjgJQk9PTEVBTgorfQorCitDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1SYWRpb0NhcGFiaWxpdHlGRERVcGRhdGVSZXF1aXJlbWVudC1GREQJQk9PTEVBTiwKKwl1ZS1SYWRpb0NhcGFiaWxpdHlURERVcGRhdGVSZXF1aXJlbWVudC1UREQzODQJQk9PTEVBTiwKKwl1ZS1SYWRpb0NhcGFiaWxpdHlURERVcGRhdGVSZXF1aXJlbWVudC1UREQxMjgJQk9PTEVBTiwKKwlzeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QJCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdAkJT1BUSU9OQUwKK30KKworQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dCA6Oj0gU0VRVUVOQ0UgeworCXVlLVJhZGlvQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LVRERDc2OAlCT09MRUFOCit9CisKKy0tIElmIHRoZSBJRSBDZWxsVXBkYXRlQ2F1c2UgaGFzIHRoZSB2YWx1ZSAnY2VsbFVwZGF0ZUNhdXNlLWV4dCcsIHRoZSBhY3R1YWwgdmFsdWUgaXMKKy0tIGRlZmluZWQgaW4gdGhlIElFIENlbGxVcGRhdGVDYXVzZS1leHQuCitDZWxsVXBkYXRlQ2F1c2UgOjo9CQkJCQlFTlVNRVJBVEVEIHsgCisJCQkJCQkJCQkJY2VsbFJlc2VsZWN0aW9uLAorCQkJCQkJCQkJCXBlcmlvZGljYWxDZWxsVXBkYXRlLAorCQkJCQkJCQkJCXVwbGlua0RhdGFUcmFuc21pc3Npb24sCisJCQkJCQkJCQkJdXRyYW4tcGFnaW5nUmVzcG9uc2UsCisJCQkJCQkJCQkJcmUtZW50ZXJlZFNlcnZpY2VBcmVhLAorCQkJCQkJCQkJCXJhZGlvbGlua0ZhaWx1cmUsCisJCQkJCQkJCQkJcmxjLXVucmVjb3ZlcmFibGVFcnJvciwKKwkJCQkJCQkJCQljZWxsVXBkYXRlQ2F1c2UtZXh0IH0KKworLS0gVGhlIElFIENlbGxVcGRhdGVDYXVzZS1leHQgc2hhbGwgYmUgcHJlc2VudCwgaWYgdGhlIElFIENlbGxVcGRhdGVDYXVzZSBoYXMgdGhlCistLSB2YWx1ZSAnY2VsbFVwZGF0ZUNhdXNlLWV4dCcuCitDZWxsVXBkYXRlQ2F1c2UtZXh0IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltYm1zLVJlY2VwdGlvbiwKKwkJCQkJCQkJCQltYm1zLVBUUC1SQi1SZXF1ZXN0LCBzcGFyZTIsIHNwYXJlMSB9CisKK0NoaXBSYXRlQ2FwYWJpbGl0eSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbWNwczMtODQsIG1jcHMxLTI4IH0KKworQ2hpcFJhdGVDYXBhYmlsaXR5LXI3IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltY3BzMy04NCwgbWNwczctNjgsIG1jcHMxLTI4IH0KKworQ2lwaGVyaW5nQWxnb3JpdGhtIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl1ZWEwLCB1ZWExIH0KKworQ2lwaGVyaW5nTW9kZUNvbW1hbmQgOjo9CQkJQ0hPSUNFIHsKKwlzdGFydFJlc3RhcnQJCQkJCQlDaXBoZXJpbmdBbGdvcml0aG0sCisJZHVtbXkJCQkJCQlOVUxMCit9CisKK0NpcGhlcmluZ01vZGVJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogVGhlIGNpcGhlcmluZyBhbGdvcml0aG0gaXMgaW5jbHVkZWQgaW4gdGhlIENpcGhlcmluZ01vZGVDb21tYW5kLgorCWNpcGhlcmluZ01vZGVDb21tYW5kCQkJCUNpcGhlcmluZ01vZGVDb21tYW5kLAorCWFjdGl2YXRpb25UaW1lRm9yRFBDSAkJCQlBY3RpdmF0aW9uVGltZQkJCQkJCU9QVElPTkFMLAorCXJiLURMLUNpcGhBY3RpdmF0aW9uVGltZUluZm8JCVJCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QJCQlPUFRJT05BTAorfQorCitDTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCA6Oj0JSU5URUdFUiAoNi4uOSkKKworQ04tUGFnZWRVRS1JZGVudGl0eSA6Oj0JCQkJQ0hPSUNFIHsKKwlpbXNpLUdTTS1NQVAJCQkJCQlJTVNJLUdTTS1NQVAsCisJdG1zaS1HU00tTUFQCQkJCQkJVE1TSS1HU00tTUFQLAorCXAtVE1TSS1HU00tTUFQCQkJCQkJUC1UTVNJLUdTTS1NQVAsCisJaW1zaS1EUy00MQkJCQkJCQlJTVNJLURTLTQxLAorCXRtc2ktRFMtNDEJCQkJCQkJVE1TSS1EUy00MSwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5IDo6PSAJU0VRVUVOQ0UgeworCWZkZC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4sCisJLS0gVEFCVUxBUjogVGhlIElFcyB0ZGQtTWVhc3VyZW1lbnRzLCBnc20tTWVhc3VyZW1lbnRzIGFuZCBtdWx0aUNhcnJpZXJNZWFzdXJlbWVudHMKKwktLSBhcmUgbWFkZSBvcHRpb25hbCBzaW5jZSB0aGV5IGFyZSBjb25kaXRpb25hbCBiYXNlZCBvbiBhbm90aGVyIGluZm9ybWF0aW9uIGVsZW1lbnQuCisJLS0gVGhlaXIgYWJzZW5jZSBjb3JyZXNwb25kcyB0byB0aGUgY2FzZSB3aGVyZSB0aGUgY29uZGl0aW9uIGlzIG5vdCB0cnVlLgorCXRkZC1NZWFzdXJlbWVudHMJCQkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMLAorCWdzbS1NZWFzdXJlbWVudHMJCQkJCUdTTS1NZWFzdXJlbWVudHMJCQkJCU9QVElPTkFMLAorCW11bHRpQ2Fycmllck1lYXN1cmVtZW50cwkJCUJPT0xFQU4JCQkJCQkJCU9QVElPTkFMCit9CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJdGRkMTI4LU1lYXN1cmVtZW50cwkJCQkJCUJPT0xFQU4JCQkJCQkJT1BUSU9OQUwKK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKKwkJCQkJCQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERAorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QyIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKKwkJCQkJCQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERDIKKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0LWV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERCkpIE9GCisJCQkJCQkJCQkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRELWV4dAorCitDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERCA6Oj0JCVNFUVVFTkNFIHsKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRGREQJCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRECU9QVElPTkFMLAorCWRsLU1lYXN1cmVtZW50c0ZERAkJCQkJQk9PTEVBTiwKKwl1bC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4KK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGREQyIDo6PQkJU0VRVUVOQ0UgeworCS0tIFVFIG1heSBvbWl0IGJvdGggSUVzIGlmIHRoaXMgSUUgaW5kaWNhdGVzIHRoZSBjb21wcmVzc2VkIG1vZGUgY2FwYWJpbGl0eSB3aXRoaW4gdGhlIHNhbWUKKwktLSBmcmVxdWVuY3kgYmFuZC4gT3RoZXJ3aXNlLCB0aGUgVUUgc2hhbGwgaW5jbHVkZSBlaXRoZXIgb25lIG9mIHRoZSBmb2xsb3dpbmcgT1BUSU9OQUwgSUVzLgorCXJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQJT1BUSU9OQUwsCisJcmFkaW9GcmVxdWVuY3lCYW5kRkREMgkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyCU9QVElPTkFMLAorCWRsLU1lYXN1cmVtZW50c0ZERAkJCQkJQk9PTEVBTiwKKwl1bC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4KK30KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGREQtZXh0IDo6PQkJU0VRVUVOQ0UgeworCXJhZGlvRnJlcXVlbmN5QmFuZEZERDIJCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkREMiwKKwlkbC1NZWFzdXJlbWVudHNGREQJCQkJCUJPT0xFQU4sCisJdWwtTWVhc3VyZW1lbnRzRkRECQkJCQlCT09MRUFOCit9CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiVERETGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc1RERCkpIE9GCisJCQkJCQkJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJUREQKKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJUREQgOjo9CQlTRVFVRU5DRSB7CisJcmFkaW9GcmVxdWVuY3lCYW5kVERECQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERCwKKwlkbC1NZWFzdXJlbWVudHNUREQJCQkJCUJPT0xFQU4sCisJdWwtTWVhc3VyZW1lbnRzVERECQkJCQlCT09MRUFOCit9CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiR1NNTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0dTTSkpIE9GCisJCQkJCQkJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU00KKworQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU00gOjo9CQlTRVFVRU5DRSB7CisJcmFkaW9GcmVxdWVuY3lCYW5kR1NNCQkJCVJhZGlvRnJlcXVlbmN5QmFuZEdTTSwKKwlkbC1NZWFzdXJlbWVudHNHU00JCQkJCUJPT0xFQU4sCisJdWwtTWVhc3VyZW1lbnRzR1NNCQkJCQlCT09MRUFOCit9CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMgOjo9CQlTRVFVRU5DRSB7CisJZGwtTWVhc3VyZW1lbnRzTUMJCQkJCUJPT0xFQU4sCisJdWwtTWVhc3VyZW1lbnRzTUMJCQkJCUJPT0xFQU4KK30KKworQ1BDSC1QYXJhbWV0ZXJzIDo6PQkJCQkJU0VRVUVOQ0UgeworCWluaXRpYWxQcmlvcml0eURlbGF5TGlzdAkJCUluaXRpYWxQcmlvcml0eURlbGF5TGlzdAkJCU9QVElPTkFMLAorCWJhY2tvZmZDb250cm9sUGFyYW1zCQkJCUJhY2tvZmZDb250cm9sUGFyYW1zLAorCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KKwlwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtLAorCWRsLURQQ0NILUJFUgkJCQkJCURMLURQQ0NILUJFUgorfQorCitETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcgOjo9CUVOVU1FUkFURUR7a2JwczMyLCBrYnBzNjQsIGticHMxMjgsIGticHMzODR9CisKK0RMLURQQ0NILUJFUiA6Oj0JCQkJCUlOVEVHRVIgKDAuLjYzKQorCitETC1QaHlzQ2hDYXBhYmlsaXR5RkREIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBUaGUgSUUg0m1heE5vRFBDSC1QRFNDSC1Db2Rlc9Mgb25seSBnaXZlcyBpbmZvcm1hdGlvbiBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgRFBDSCBDb2Rlcy4KKwltYXhOb0RQQ0gtUERTQ0gtQ29kZXMJCQkJSU5URUdFUiAoMS4uOCksCisJbWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQJCQkJTWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQsCisJc3VwcG9ydEZvclNGLTUxMgkJCQkJQk9PTEVBTiwKKwktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwktLSBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJQk9PTEVBTiwKKwlkdW1teTIJCQkJCQkJCVNpbXVsdGFuZW91c1NDQ1BDSC1EUENILVJlY2VwdGlvbgorfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXYzODBleHQgOjo9CQkJU0VRVUVOQ0UgeworCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQkJCVN1cHBvcnRPZkRlZGljYXRlZFBpbG90c0ZvckNoRXN0aW1hdGlvbgkJT1BUSU9OQUwKK30KKworU3VwcG9ydE9mRGVkaWNhdGVkUGlsb3RzRm9yQ2hFc3RpbWF0aW9uIDo6PQkJCUVOVU1FUkFURUQgeyB0cnVlIH0KKworREwtUGh5c0NoQ2FwYWJpbGl0eVRERCA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4VFMtUGVyRnJhbWUJCQkJCQlNYXhUUy1QZXJGcmFtZSwKKwltYXhQaHlzQ2hQZXJGcmFtZQkJCQkJTWF4UGh5c0NoUGVyRnJhbWUsCisJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1ETCwKKwlzdXBwb3J0T2ZQRFNDSAkJCQkJCUJPT0xFQU4sCisJbWF4UGh5c0NoUGVyVFMJCQkJCQlNYXhQaHlzQ2hQZXJUUwkKK30KKworREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwltYXhUUy1QZXJTdWJGcmFtZQkJCQkJTWF4VFMtUGVyU3ViRnJhbWUtcjQsCisJbWF4UGh5c0NoUGVyRnJhbWUJCQkJCU1heFBoeXNDaFBlclN1YkZyYW1lLXI0LAorCW1pbmltdW1TRgkJCQkJCQlNaW5pbXVtU0YtREwsCisJc3VwcG9ydE9mUERTQ0gJCQkJCQlCT09MRUFOLAorCW1heFBoeXNDaFBlclRTCQkJCQkJTWF4UGh5c0NoUGVyVFMsCisJc3VwcG9ydE9mOFBTSwkJCQkJCUJPT0xFQU4KK30KKworREwtUGh5c0NoQ2FwYWJpbGl0eVRERC03NjggOjo9CQlTRVFVRU5DRSB7CisJbWF4VFMtUGVyRnJhbWUJCQkJCQlNYXhUUy1QZXJGcmFtZSwKKwltYXhQaHlzQ2hQZXJGcmFtZQkJCQkJTWF4UGh5c0NoUGVyRnJhbWUtNzY4LAorCW1pbmltdW1TRgkJCQkJCQlNaW5pbXVtU0YtREwtNzY4LAorCXN1cHBvcnRPZlBEU0NICQkJCQkJQk9PTEVBTiwKKwltYXhQaHlzQ2hQZXJUUwkJCQkJCU1heFBoeXNDaFBlclRTLTc2OAorfQorCitETC1UcmFuc0NoQ2FwYWJpbGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4Tm9CaXRzUmVjZWl2ZWQJCQkJCU1heE5vQml0cywKKwltYXhDb252Q29kZUJpdHNSZWNlaXZlZAkJCQlNYXhOb0JpdHMsCisJdHVyYm9EZWNvZGluZ1N1cHBvcnQJCQkJVHVyYm9TdXBwb3J0LAorCW1heFNpbXVsdGFuZW91c1RyYW5zQ2hzCQkJCU1heFNpbXVsdGFuZW91c1RyYW5zQ2hzREwsCisJbWF4U2ltdWx0YW5lb3VzQ0NUckNILUNvdW50CQkJTWF4U2ltdWx0YW5lb3VzQ0NUckNILUNvdW50LAorCW1heFJlY2VpdmVkVHJhbnNwb3J0QmxvY2tzCQkJTWF4VHJhbnNwb3J0QmxvY2tzREwsCisJbWF4TnVtYmVyT2ZURkMJCQkJCQlNYXhOdW1iZXJPZlRGQy1ETCwKKwltYXhOdW1iZXJPZlRGCQkJCQkJTWF4TnVtYmVyT2ZURgorfQorCitEUkFDLVN5c0luZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJdHJhbnNtaXNzaW9uUHJvYmFiaWxpdHkJCQkJVHJhbnNtaXNzaW9uUHJvYmFiaWxpdHksCisJbWF4aW11bUJpdFJhdGUJCQkJCQlNYXhpbXVtQml0UmF0ZQorfQorCitEUkFDLVN5c0luZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RFJBQ2NsYXNzZXMpKSBPRgorCQkJCQkJCQkJCURSQUMtU3lzSW5mbworCitEU0NILVJOVEkgOjo9CQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQorCitEZWxheVJlc3RyaWN0aW9uRmxhZyA6Oj0JCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CisKK0UtUk5USSA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQorCitFU04tRFMtNDEgOjo9CQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKQorCitFc3RhYmxpc2htZW50Q2F1c2UgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW9yaWdpbmF0aW5nQ29udmVyc2F0aW9uYWxDYWxsLAorCQkJCQkJCQkJCW9yaWdpbmF0aW5nU3RyZWFtaW5nQ2FsbCwgCisJCQkJCQkJCQkJb3JpZ2luYXRpbmdJbnRlcmFjdGl2ZUNhbGwsCisJCQkJCQkJCQkJb3JpZ2luYXRpbmdCYWNrZ3JvdW5kQ2FsbCwKKwkJCQkJCQkJCQlvcmlnaW5hdGluZ1N1YnNjcmliZWRUcmFmZmljQ2FsbCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0NvbnZlcnNhdGlvbmFsQ2FsbCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ1N0cmVhbWluZ0NhbGwsCisJCQkJCQkJCQkJdGVybWluYXRpbmdJbnRlcmFjdGl2ZUNhbGwsCisJCQkJCQkJCQkJdGVybWluYXRpbmdCYWNrZ3JvdW5kQ2FsbCwKKwkJCQkJCQkJCQllbWVyZ2VuY3lDYWxsLAorCQkJCQkJCQkJCWludGVyUkFULUNlbGxSZXNlbGVjdGlvbiwKKwkJCQkJCQkJCQlpbnRlclJBVC1DZWxsQ2hhbmdlT3JkZXIsCisJCQkJCQkJCQkJcmVnaXN0cmF0aW9uLAorCQkJCQkJCQkJCWRldGFjaCwKKwkJCQkJCQkJCQlvcmlnaW5hdGluZ0hpZ2hQcmlvcml0eVNpZ25hbGxpbmcsCisJCQkJCQkJCQkJb3JpZ2luYXRpbmdMb3dQcmlvcml0eVNpZ25hbGxpbmcsCisJCQkJCQkJCQkJY2FsbFJlLWVzdGFibGlzaG1lbnQsCisJCQkJCQkJCQkJdGVybWluYXRpbmdIaWdoUHJpb3JpdHlTaWduYWxsaW5nLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nTG93UHJpb3JpdHlTaWduYWxsaW5nLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nQ2F1c2VVbmtub3duLAorCQkJCQkJCQkJCW1ibXMtUmVjZXB0aW9uLAorCQkJCQkJCQkJCW1ibXMtUFRQLVJCLVJlcXVlc3QsCisJCQkJCQkJCQkJc3BhcmUxMCwKKwkJCQkJCQkJCQlzcGFyZTksCisJCQkJCQkJCQkJc3BhcmU4LAorCQkJCQkJCQkJCXNwYXJlNywKKwkJCQkJCQkJCQlzcGFyZTYsCisJCQkJCQkJCQkJc3BhcmU1LAorCQkJCQkJCQkJCXNwYXJlNCwKKwkJCQkJCQkJCQlzcGFyZTMsCisJCQkJCQkJCQkJc3BhcmUyLAorCQkJCQkJCQkJCXNwYXJlMSB9CisKK0ZhaWx1cmVDYXVzZVdpdGhQcm90RXJyIDo6PQkJCUNIT0lDRSB7CisJY29uZmlndXJhdGlvblVuc3VwcG9ydGVkCQkJTlVMTCwKKwlwaHlzaWNhbENoYW5uZWxGYWlsdXJlCQkJCU5VTEwsCisJaW5jb21wYXRpYmxlU2ltdWx0YW5lb3VzUmVjb25maWd1cmF0aW9uCisJCQkJCQkJCQkJTlVMTCwKKwljb21wcmVzc2VkTW9kZVJ1bnRpbWVFcnJvcgkJCVRHUFNJLAorCXByb3RvY29sRXJyb3IJCQkJCQlQcm90b2NvbEVycm9ySW5mb3JtYXRpb24sCisJY2VsbFVwZGF0ZU9jY3VycmVkCQkJCQlOVUxMLAorCWludmFsaWRDb25maWd1cmF0aW9uCQkJCU5VTEwsCisJY29uZmlndXJhdGlvbkluY29tcGxldGUJCQkJTlVMTCwKKwl1bnN1cHBvcnRlZE1lYXN1cmVtZW50CQkJCU5VTEwsCisJbWJtc1Nlc3Npb25BbHJlYWR5UmVjZWl2ZWRDb3JyZWN0bHkJTlVMTCwKKwlsb3dlclByaW9yaXR5TUJNU1NlcnZpY2UJCQlOVUxMLAorCXNwYXJlNQkJCQkJCQkJTlVMTCwKKwlzcGFyZTQJCQkJCQkJCU5VTEwsCisJc3BhcmUzCQkJCQkJCQlOVUxMLAorCXNwYXJlMgkJCQkJCQkJTlVMTCwKKwlzcGFyZTEJCQkJCQkJCU5VTEwKK30KKworRmFpbHVyZUNhdXNlV2l0aFByb3RFcnJUcklkIDo6PQkJU0VRVUVOQ0UgeworCQlycmMtVHJhbnNhY3Rpb25JZGVudGlmaWVyCQlSUkMtVHJhbnNhY3Rpb25JZGVudGlmaWVyLCAKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgorfQorCitHcm91cElkZW50aXR5V2l0aFJlbGVhc2VJbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwkJcnJjLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24JCVJSQy1Db25uZWN0aW9uUmVsZWFzZUluZm9ybWF0aW9uLAorCQlncm91cFJlbGVhc2VJbmZvcm1hdGlvbgkJCQkJR3JvdXBSZWxlYXNlSW5mb3JtYXRpb24KKwl9CisKK0dyb3VwUmVsZWFzZUluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwl1Uk5USS1Hcm91cAkJCQkJCQlVLVJOVEktR3JvdXAKK30KKworR1NNLU1lYXN1cmVtZW50cyA6Oj0JCQkJU0VRVUVOQ0UgeworCWdzbTkwMAkJCQkJCQkJQk9PTEVBTiwKKwlkY3MxODAwCQkJCQkJCQlCT09MRUFOLAorCWdzbTE5MDAJCQkJCQkJCUJPT0xFQU4KK30KKworSC1STlRJIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCisKK0hTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSA6Oj0JCUlOVEVHRVIgKDEuLjY0KQorCitVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZSA6Oj0gQklUIFNUUklORyAoU0laRSAoNCkpCisKK1VFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVCA6Oj0gQklUIFNUUklORyAoU0laRSAoOCkpCisKKworSU1TSS1hbmQtRVNOLURTLTQxIDo6PQkJCQlTRVFVRU5DRSB7CisJaW1zaS1EUy00MQkJCQkJCQlJTVNJLURTLTQxLAorCWVzbi1EUy00MQkJCQkJCQlFU04tRFMtNDEKK30KKworSU1TSS1EUy00MSA6Oj0JCQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDUuLjcpKQorCitJbml0aWFsUHJpb3JpdHlEZWxheUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QVNDKSkgT0YKKwkJCQkJCQkJCQlOUy1JUAorCitJbml0aWFsVUUtSWRlbnRpdHkgOjo9CQkJCUNIT0lDRSB7CisJaW1zaQkJCQkJCQkJSU1TSS1HU00tTUFQLAorCXRtc2ktYW5kLUxBSQkJCQkJCVRNU0ktYW5kLUxBSS1HU00tTUFQLAorCXAtVE1TSS1hbmQtUkFJCQkJCQkJUC1UTVNJLWFuZC1SQUktR1NNLU1BUCwKKwlpbWVpCQkJCQkJCQlJTUVJLAorCWVzbi1EUy00MQkJCQkJCQlFU04tRFMtNDEsCisJaW1zaS1EUy00MQkJCQkJCQlJTVNJLURTLTQxLAorCWltc2ktYW5kLUVTTi1EUy00MQkJCQkJSU1TSS1hbmQtRVNOLURTLTQxLAorCXRtc2ktRFMtNDEJCQkJCQkJVE1TSS1EUy00MQorfQorCitJbnRlZ3JpdHlDaGVja0luZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwltZXNzYWdlQXV0aGVudGljYXRpb25Db2RlCQkJTWVzc2FnZUF1dGhlbnRpY2F0aW9uQ29kZSwKKwlycmMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyCQkJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlcgorfQorCitJbnRlZ3JpdHlQcm90QWN0aXZhdGlvbkluZm8gOjo9CQlTRVFVRU5DRSB7CisJcnJjLU1lc3NhZ2VTZXF1ZW5jZU51bWJlckxpc3QJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXJMaXN0Cit9CisKK0ludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0gOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXVpYTEgfQorCisKK0ludGVncml0eVByb3RlY3Rpb25Nb2RlQ29tbWFuZCA6Oj0gCUNIT0lDRSB7CisJc3RhcnRJbnRlZ3JpdHlQcm90ZWN0aW9uCQkJU0VRVUVOQ0UgeworCQlpbnRlZ3JpdHlQcm90SW5pdE51bWJlcgkJCQlJbnRlZ3JpdHlQcm90SW5pdE51bWJlcgorCX0sCisJbW9kaWZ5CQkJCQkJCQlTRVFVRU5DRSB7CisJCWRsLUludGVncml0eVByb3RBY3RpdmF0aW9uSW5mbwkJSW50ZWdyaXR5UHJvdEFjdGl2YXRpb25JbmZvCisJfQorfQorCitJbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUluZm8gOjo9CQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogREwgaW50ZWdyaXR5IHByb3RlY3Rpb24gYWN0aXZhdGlvbiBpbmZvIGFuZCBJbnRlZ3JpdHkKKwktLSBwcm90ZWN0aW9uIGludGlhbGlzYXRpb24gbnVtYmVyIGhhdmUgYmVlbiBuZXN0ZWQgaW5zaWRlIAorCS0tIEludGVncml0eVByb3RlY3Rpb25Nb2RlQ29tbWFuZC4KKwlpbnRlZ3JpdHlQcm90ZWN0aW9uTW9kZUNvbW1hbmQJCUludGVncml0eVByb3RlY3Rpb25Nb2RlQ29tbWFuZCwKKwlpbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCQlJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtCQlPUFRJT05BTAkKK30KKworSW50ZWdyaXR5UHJvdEluaXROdW1iZXIgOjo9CQkJQklUIFNUUklORyAoU0laRSAoMzIpKQorCistLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorTWF4SGNDb250ZXh0U3BhY2UgOjo9CQkJCQlFTlVNRVJBVEVECXsKKwkJCQkJCQkJCQkJZHVtbXksIGJ5MTAyNCwgYnkyMDQ4LCBieTQwOTYsIAorCQkJCQkJCQkJCQlieTgxOTIgfQorCitNYXhIY0NvbnRleHRTcGFjZS1yNS1leHQgOjo9CQkJRU5VTUVSQVRFRAl7CisJCQkJCQkJCQkJCWJ5MTYzODQsIGJ5MzI3NjgsIGJ5NjU1MzYsIGJ5MTMxMDcyIH0KKworCitNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNCA6Oj0JCUVOVU1FUkFURUQJeworCQkJCQkJCQkJCQlzMiwgczQsIHM4LCBzMTIsIHMxNiwgczI0LCBzMzIsIHM0OCwKKwkJCQkJCQkJCQkJczY0LCBzMTI4LCBzMjU2LCBzNTEyLCBzMTAyNCwgczE2Mzg0IH0KKworTWF4aW11bUFNLUVudGl0eU51bWJlclJMQy1DYXAgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWR1bW15LCBhbTQsIGFtNSwgYW02LCAKKwkJCQkJCQkJCQlhbTgsIGFtMTYsIGFtMzAgfQorCistLSBBY3R1YWwgdmFsdWUgTWF4aW11bUJpdFJhdGUgPSBJRSB2YWx1ZSAqIDE2CitNYXhpbXVtQml0UmF0ZSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjMyKQorCitNYXhpbXVtUkxDLVdpbmRvd1NpemUgOjo9CQkJRU5VTUVSQVRFRCB7IG13czIwNDcsIG13czQwOTUgfQorCitNYXhOb0RQRENILUJpdHNUcmFuc21pdHRlZCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWI2MDAsIGIxMjAwLCBiMjQwMCwgYjQ4MDAsIAorCQkJCQkJCQkJCWI5NjAwLCBiMTkyMDAsIGIyODgwMCwgYjM4NDAwLAorCQkJCQkJCQkJCWI0ODAwMCwgYjU3NjAwIH0KKworTWF4Tm9CaXRzIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWI2NDAsIGIxMjgwLCBiMjU2MCwgYjM4NDAsIGI1MTIwLAorCQkJCQkJCQkJCWI2NDAwLCBiNzY4MCwgYjg5NjAsIGIxMDI0MCwKKwkJCQkJCQkJCQliMjA0ODAsIGI0MDk2MCwgYjgxOTIwLCBiMTYzODQwIH0KKworTWF4Tm9QaHlzQ2hCaXRzUmVjZWl2ZWQgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHVtbXksIGIxMjAwLCBiMjQwMCwgYjM2MDAsIAorCQkJCQkJCQkJCWI0ODAwLCBiNzIwMCwgYjk2MDAsIGIxNDQwMCwgCisJCQkJCQkJCQkJYjE5MjAwLCBiMjg4MDAsIGIzODQwMCwgYjQ4MDAwLCAKKwkJCQkJCQkJCQliNTc2MDAsIGI2NzIwMCwgYjc2ODAwIH0KKworTWF4Tm9TQ0NQQ0gtUkwgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlybDEgfQorCitNYXhOdW1iZXJPZlRGIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGYzMiwgdGY2NCwgdGYxMjgsIHRmMjU2LAorCQkJCQkJCQkJCXRmNTEyLCB0ZjEwMjQgfQorCitNYXhOdW1iZXJPZlRGQy1ETCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGZjMTYsIHRmYzMyLCB0ZmM0OCwgdGZjNjQsIHRmYzk2LCAKKwkJCQkJCQkJCQl0ZmMxMjgsIHRmYzI1NiwgdGZjNTEyLCB0ZmMxMDI0IH0KKworTWF4TnVtYmVyT2ZURkMtVUwgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWR1bW15MSwgZHVtbXkyLCB0ZmMxNiwgdGZjMzIsIHRmYzQ4LCB0ZmM2NCwgCisJCQkJCQkJCQkJdGZjOTYsIHRmYzEyOCwgdGZjMjU2LCB0ZmM1MTIsIHRmYzEwMjQgfQorCistLSB0aGUgdmFsdWVzIDEgyTQgZm9yIE1heFBoeXNDaFBlckZyYW1lIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sIAorTWF4UGh5c0NoUGVyRnJhbWUgOjo9CQkJCUlOVEVHRVIgKDEuLjIyNCkKKworTWF4UGh5c0NoUGVyRnJhbWUtNzY4IDo6PQkJCUlOVEVHRVIgKDEuLjQ0OCkKKworTWF4UGh5c0NoUGVyU3ViRnJhbWUtcjQgOjo9CQkJSU5URUdFUiAoMS4uOTYpCisKK01heFBoeXNDaFBlclRpbWVzbG90IDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRzMSwgdHMyIH0KKworLS0gdGhlIHZhbHVlcyAxIMk0IGZvciBNYXhQaHlzQ2hQZXJUUyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCAKK01heFBoeXNDaFBlclRTIDo6PQkJCQkJSU5URUdFUiAoMS4uMTYpCisKK01heFBoeXNDaFBlclRTLTc2OCA6Oj0JCQkJSU5URUdFUiAoMS4uMzIpCisKK01heFNpbXVsdGFuZW91c0NDVHJDSC1Db3VudCA6Oj0JCUlOVEVHRVIgKDEuLjgpCisKK01heFNpbXVsdGFuZW91c1RyYW5zQ2hzREwgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllNCwgZTgsIGUxNiwgZTMyIH0KKworTWF4U2ltdWx0YW5lb3VzVHJhbnNDaHNVTCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWR1bW15LCBlNCwgZTgsIGUxNiwgZTMyIH0KKworTWF4VHJhbnNwb3J0QmxvY2tzREwgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGI0LCB0YjgsIHRiMTYsIHRiMzIsIHRiNDgsCisJCQkJCQkJCQkJdGI2NCwgdGI5NiwgdGIxMjgsIHRiMjU2LCB0YjUxMiB9CisKK01heFRyYW5zcG9ydEJsb2Nrc1VMIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWR1bW15LCB0YjQsIHRiOCwgdGIxNiwgdGIzMiwgdGI0OCwKKwkJCQkJCQkJCQl0YjY0LCB0Yjk2LCB0YjEyOCwgdGIyNTYsIHRiNTEyIH0KKworTWF4VFMtUGVyRnJhbWUgOjo9CQkJCQlJTlRFR0VSICgxLi4xNCkKKworTWF4VFMtUGVyU3ViRnJhbWUtcjQgOjo9CQkJSU5URUdFUiAoMS4uNikKKworLS0gVEFCVUxBUjogTWVhc3VyZW1lbnRDYXBhYmlsaXR5IGNvbnRhaW5zIGRlcGVuZGVuY2llcyB0byBVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eSwKKy0tIHRoZSBjb25kaXRpb25hbCBmaWVsZHMgaGF2ZSBiZWVuIGxlZnQgbWFuZGF0b3J5IGZvciBub3cuCitNZWFzdXJlbWVudENhcGFiaWxpdHkgOjo9CQkJU0VRVUVOQ0UgeworCWRvd25saW5rQ29tcHJlc3NlZE1vZGUJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eSwKKwl1cGxpbmtDb21wcmVzc2VkTW9kZQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5CQorfQorCitNZWFzdXJlbWVudENhcGFiaWxpdHlFeHQgOjo9IAkJU0VRVUVOQ0V7CisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJURERMaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYlRERExpc3QJT1BUSU9OQUwsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU01MaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkdTTUxpc3QJT1BUSU9OQUwsCisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJNQwkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMJCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50Q2FwYWJpbGl0eUV4dDIgOjo9IAkJU0VRVUVOQ0V7CisJY29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0CQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYkZERExpc3QyLAorCWNvbXByZXNzZWRNb2RlTWVhc0NhcGFiVERETGlzdAkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJURERMaXN0CU9QVElPTkFMLAorCWNvbXByZXNzZWRNb2RlTWVhc0NhcGFiR1NNTGlzdAkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJHU01MaXN0CU9QVElPTkFMLAorCWNvbXByZXNzZWRNb2RlTWVhc0NhcGFiTUMJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYk1DCQlPUFRJT05BTAorfQorCisKK01lYXN1cmVtZW50Q2FwYWJpbGl0eS1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwlkb3dubGlua0NvbXByZXNzZWRNb2RlLUxDUgkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktTENSLXI0LAorCXVwbGlua0NvbXByZXNzZWRNb2RlLUxDUgkJCUNvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktTENSLXI0Cit9CisKK01lc3NhZ2VBdXRoZW50aWNhdGlvbkNvZGUgOjo9CQlCSVQgU1RSSU5HIChTSVpFICgzMikpCisKK01pbmltdW1TRi1ETCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmMSwgc2YxNiB9CisKK01pbmltdW1TRi1ETC03NjggOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmMSwgc2YzMiB9CisKK01pbmltdW1TRi1VTCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmMSwgc2YyLCBzZjQsIHNmOCwgZHVtbXkgfQorCitNdWx0aU1vZGVDYXBhYmlsaXR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZGQsIGZkZCwgZmRkLXRkZCB9CisKK011bHRpUkFULUNhcGFiaWxpdHkgOjo9CQkJCVNFUVVFTkNFIHsKKwlzdXBwb3J0T2ZHU00JCQkJCQlCT09MRUFOLAorCXN1cHBvcnRPZk11bHRpY2FycmllcgkJCQlCT09MRUFOCit9IAorCitNdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NTkwZXh0IDo6PQlTRVFVRU5DRSB7CisJc3VwcG9ydE9mVVRSQU4tVG9HRVJBTi1OQUNDCQkJQk9PTEVBTgorfQorCitNdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NjgwZXh0IDo6PQlTRVFVRU5DRSB7CisJc3VwcG9ydE9mSGFuZG92ZXJUb0dBTgkJCQlFTlVNRVJBVEVEIHsgZG9lc1N1cHBvcnRIYW5kb3ZlclRvR0FOIH0JCU9QVElPTkFMCit9CisKK04tMzAwIDo6PQkJCQkJCQlJTlRFR0VSICgwLi43KQorCitOLTMwMSA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNykKKworTi0zMDIgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjcpCisKK04tMzA0IDo6PQkJCQkJCQlJTlRFR0VSICgwLi43KQorCitOLTMwOCA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uOCkKKworTi0zMTAgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjcpCisKK04tMzEyIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMSwgczUwLCBzMTAwLCBzMjAwLCBzNDAwLAorCQkJCQkJCQkJCXM2MDAsIHM4MDAsIHMxMDAwIH0KKworTi0zMTJleHQgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczIsIHM0LCBzMTAsIHMyMCB9CisKK04tMzEyLXI1IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMSwgczIsIHM0LCBzMTAsIHMyMCwKKwkJCQkJCQkJCQlzNTAsIHMxMDAsIHMyMDAsIHM0MDAsCisJCQkJCQkJCQkJczYwMCwgczgwMCwgczEwMDAgfQorCitOLTMxMyA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczEsIHMyLCBzNCwgczEwLCBzMjAsCisJCQkJCQkJCQkJIHM1MCwgczEwMCwgczIwMCB9CisKK04tMzE1IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMSwgczUwLCBzMTAwLCBzMjAwLCBzNDAwLAorCQkJCQkJCQkJCXM2MDAsIHM4MDAsIHMxMDAwIH0KKworTi0zMTVleHQgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJczIsIHM0LCBzMTAsIHMyMCB9CisKK04tMzE1LXI1IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMSwgczIsIHM0LCBzMTAsIHMyMCwKKwkJCQkJCQkJCQlzNTAsIHMxMDAsIHMyMDAsIHM0MDAsCisJCQkJCQkJCQkJczYwMCwgczgwMCwgczEwMDAgfQorCisKK04tQWNjZXNzRmFpbHMgOjo9CQkJCQlJTlRFR0VSICgxLi42NCkKKworTi1BUC1SZXRyYW5zTWF4IDo6PQkJCQkJSU5URUdFUiAoMS4uNjQpCisKK05ldHdvcmtBc3Npc3RlZEdQUy1TdXBwb3J0ZWQgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5ldHdvcmtCYXNlZCwgCisJCQkJCQkJCQkJdWUtQmFzZWQsCisJCQkJCQkJCQkJYm90aE5ldHdvcmtBbmRVRS1CYXNlZCwKKwkJCQkJCQkJCQlub05ldHdvcmtBc3Npc3RlZEdQUyB9CisKK05GLUJPLUFsbEJ1c3kgOjo9CQkJCQlJTlRFR0VSICgwLi4zMSkKKworTkYtQk8tTm9BSUNIIDo6PQkJCQkJSU5URUdFUiAoMC4uMzEpCisKK05GLUJPLU1pc21hdGNoIDo6PQkJCQkJSU5URUdFUiAoMC4uMTI3KQorCitOUy1CTy1CdXN5IDo6PQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCitOUy1JUCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uMjgpCisKK1AtVE1TSS1hbmQtUkFJLUdTTS1NQVAgOjo9CQkJU0VRVUVOQ0UgeworCXAtVE1TSQkJCQkJCQkJUC1UTVNJLUdTTS1NQVAsCisJcmFpCQkJCQkJCQkJUkFJCit9CisKK1BhZ2luZ0NhdXNlIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRlcm1pbmF0aW5nQ29udmVyc2F0aW9uYWxDYWxsLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nU3RyZWFtaW5nQ2FsbCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0ludGVyYWN0aXZlQ2FsbCwKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0JhY2tncm91bmRDYWxsLAorCQkJCQkJCQkJCXRlcm1pbmF0aW5nSGlnaFByaW9yaXR5U2lnbmFsbGluZywKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0xvd1ByaW9yaXR5U2lnbmFsbGluZywKKwkJCQkJCQkJCQl0ZXJtaW5hdGluZ0NhdXNlVW5rbm93biwKKwkJCQkJCQkJCQlzcGFyZQorIH0KKworUGFnaW5nUmVjb3JkIDo6PQkJCQkJQ0hPSUNFIHsKKwljbi1JZGVudGl0eQkJCQkJCQlTRVFVRU5DRSB7CisJCXBhZ2luZ0NhdXNlCQkJCQkJCVBhZ2luZ0NhdXNlLAorCQljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJCWNuLXBhZ2VkVUUtSWRlbnRpdHkJCQkJCUNOLVBhZ2VkVUUtSWRlbnRpdHkKKwl9LAorCXV0cmFuLUlkZW50aXR5CQkJCQkJU0VRVUVOQ0UgeworCQl1LVJOVEkJCQkJCQkJCVUtUk5USSwKKwkJY24tT3JpZ2luYXRlZFBhZ2UtY29ubmVjdGVkTW9kZS1VRQlTRVFVRU5DRSB7CisJCQlwYWdpbmdDYXVzZQkJCQkJCQlQYWdpbmdDYXVzZSwKKwkJCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJCXBhZ2luZ1JlY29yZFR5cGVJRAkJCQkJUGFnaW5nUmVjb3JkVHlwZUlECisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJfQorfQorCitQYWdpbmdSZWNvcmQyLXI1IDo6PQkJCQlDSE9JQ0UgeworCXV0cmFuLVNpbmdsZVVFLUlkZW50aXR5CQkJCVNFUVVFTkNFIHsKKwkJdS1STlRJCQkJCQkJCQlVLVJOVEksCisJCWNuLU9yaWdpbmF0ZWRQYWdlLWNvbm5lY3RlZE1vZGUtVUUJU0VRVUVOQ0UgeworCQkJcGFnaW5nQ2F1c2UJCQkJCQkJUGFnaW5nQ2F1c2UsCisJCQljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJCQlwYWdpbmdSZWNvcmRUeXBlSUQJCQkJCVBhZ2luZ1JlY29yZFR5cGVJRAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJcnJjLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24JCVJSQy1Db25uZWN0aW9uUmVsZWFzZUluZm9ybWF0aW9uCisJfSwKKwl1dHJhbi1Hcm91cElkZW50aXR5CQkJCQkJU0VRVUVOQ0UgKCBTSVpFICgxIC4uIG1heFVSTlRJLUdyb3VwKSApIE9GCisJCQkJCQkJCQkJCQlHcm91cElkZW50aXR5V2l0aFJlbGVhc2VJbmZvcm1hdGlvbgorfQorCitQYWdpbmdSZWNvcmRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UGFnZTEpKSBPRgorCQkJCQkJCQkJCVBhZ2luZ1JlY29yZAorCitQYWdpbmdSZWNvcmQyTGlzdC1yNSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UGFnZTEpKSBPRgorCQkJCQkJCQkJCVBhZ2luZ1JlY29yZDItcjUKKworUERDUC1DYXBhYmlsaXR5IDo6PQkJCQkJU0VRVUVOQ0UgeworCWxvc3NsZXNzU1JOUy1SZWxvY2F0aW9uU3VwcG9ydAkJQk9PTEVBTiwKKwktLSBJZiBwcmVzZW50LCB0aGUgIm1heEhjQ29udGV4dFNwYWNlIiBpbiB0aGUgSUUgIlBEQ1AtQ2FwYWJpbGl0eS1yNS1leHQiIG92ZXJyaWRlcyB0aGUKKwktLSAic3VwcG9ydGVkIiB2YWx1ZSBpbiB0aGlzIElFLiBUaGUgdmFsdWUgaW4gdGhpcyBJRSBtYXkgYmUgdXNlZCBieSBhIHByZS1SRUwtNSBVVFJBTi4KKwlzdXBwb3J0Rm9yUmZjMjUwNwkJCQkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJCU1heEhjQ29udGV4dFNwYWNlCisJfQorfQorCitQRENQLUNhcGFiaWxpdHktcjQtZXh0IDo6PQkJCVNFUVVFTkNFIHsKKwlzdXBwb3J0Rm9yUmZjMzA5NQkJCQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCQlOVUxMLAorCQlzdXBwb3J0ZWQJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWF4Uk9IQy1Db250ZXh0U2Vzc2lvbnMJCQkJTWF4Uk9IQy1Db250ZXh0U2Vzc2lvbnMtcjQJREVGQVVMVCBzMTYsCisJCQlyZXZlcnNlQ29tcHJlc3Npb25EZXB0aAkJCQlJTlRFR0VSICgwLi42NTUzNSkJCQlERUZBVUxUIDAKKwkJfQorCX0KK30KKworUERDUC1DYXBhYmlsaXR5LXI1LWV4dCA6Oj0JCQlTRVFVRU5DRSB7CisJc3VwcG9ydEZvclJmYzMwOTVDb250ZXh0UmVsb2NhdGlvbgkJQk9PTEVBTiwKKwltYXhIY0NvbnRleHRTcGFjZQkJCQkJCU1heEhjQ29udGV4dFNwYWNlLXI1LWV4dAlPUFRJT05BTAorfQorCitQRENQLUNhcGFiaWxpdHktcjUtZXh0MiA6Oj0JCQlTRVFVRU5DRSB7CisJbG9zc2xlc3NETFJMQy1QRFVTaXplQ2hhbmdlCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eSA6Oj0JCVNFUVVFTkNFIHsKKwkJZmRkUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERCwKKwkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eUZERAorCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJLS0gdGRkUGh5c0NoQ2FwYWJpbGl0eSBkZXNjcmliZXMgdGhlIDMuODRNY3BzIFRERCBwaHlzaWNhbCBjaGFubmVsIGNhcGFiaWxpdHkKKwkJdGRkUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERCwKKwkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERAorCQl9CQkJCQkJCQkJCQlPUFRJT05BTAorfQorCitQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI3IDo6PQkJU0VRVUVOQ0UgeworCQlmZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQktLSB0ZGRQaHlzQ2hDYXBhYmlsaXR5IGRlc2NyaWJlcyB0aGUgMy44NE1jcHMgVEREIHBoeXNpY2FsIGNoYW5uZWwgY2FwYWJpbGl0eQorCQl0ZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQktLSB0ZGRQaHlzaWNhbENoYUNhcGFiaWxpdHktNzY4IGRlc2NyaWJlcyB0aGUgNy42OCBUREQgcGh5c2ljYWwgY2hhbm5lbCBjYXBhYmlsaXR5CisJCXRkZFBoeXNDaENhcGFiaWxpdHktNzY4CQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQtNzY4LAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECisJCX0KK30KKworLS0gUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1MQ1ItcjQgZGVzY3JpYmVzIHRoZSAxLjI4TWNwcyBUREQgcGh5c2ljYWwgY2hhbm5lbCBjYXBhYmlsaXR5CitQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwkJdGRkMTI4LVBoeXNDaENhcGFiaWxpdHkJCQkJCVNFUVVFTkNFIHsKKwkJCWRvd25saW5rUGh5c0NoQ2FwYWJpbGl0eQkJCURMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0LAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNAorCQl9CQkJCQkJCQkJCQlPUFRJT05BTAorfQorCistLSBQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWhzcGRzY2gtcjUgZGVzY3JpYmVzIHRoZSBIUy1QRFNDSCBwaHlzaWNhbCBjaGFubmVsIGNhcGFiaWxpdHkKK1BoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktaHNwZHNjaC1yNSA6Oj0JCVNFUVVFTkNFIHsKKwlmZGQtaHNwZHNjaAkJCQkJCQkJCQlDSE9JQ0UgeworCQlzdXBwb3J0ZWQJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaHNkc2NoLXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5CQkJCQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwkJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkJCQkJCQkJCQkJCUJPT0xFQU4sCisJCQlkdW1teTIJCQkJCQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdW5zdXBwb3J0ZWQJCQkJCQkJCQkJTlVMTAorCX0sCisJdGRkMzg0LWhzcGRzY2gJCQkJCQkJCQlDSE9JQ0UgeworCQlzdXBwb3J0ZWQJCQkJCQkJCQkJSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5LAorCQl1bnN1cHBvcnRlZAkJCQkJCQkJCQlOVUxMCisJfSwKKwl0ZGQxMjgtaHNwZHNjaAkJCQkJCQkJCUNIT0lDRSB7CisJCXN1cHBvcnRlZAkJCQkJCQkJCQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJCXVuc3VwcG9ydGVkCQkJCQkJCQkJCU5VTEwKKwl9Cit9CisKK1BOQlNDSC1BbGxvY2F0aW9uLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJCW51bWJlck9mUmVwZXRpdGlvbnNQZXJTRk5QZXJpb2QJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJCWMyLCBjMywgYzQsIGM1LCBjNiwgYzcsIGM4LCBjOSwgYzEwLAorCQkJCQkJCQkJCQljMTIsIGMxNCwgYzE2LCBjMTgsIGMyMCwgYzI0LCBjMjgsIGMzMiwKKwkJCQkJCQkJCQkJYzM2LCBjNDAsIGM0OCwgYzU2LCBjNjQsIGM3MiwgYzgwICB9Cit9CisKK1Byb3RvY29sRXJyb3JDYXVzZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYXNuMS1WaW9sYXRpb25PckVuY29kaW5nRXJyb3IsCisJCQkJCQkJCQkJbWVzc2FnZVR5cGVOb25leGlzdGVudCwKKwkJCQkJCQkJCQltZXNzYWdlTm90Q29tcGF0aWJsZVdpdGhSZWNlaXZlclN0YXRlLAorCQkJCQkJCQkJCWllLVZhbHVlTm90Q29tcHJlaGVuZGVkLAorCQkJCQkJCQkJCWluZm9ybWF0aW9uRWxlbWVudE1pc3NpbmcsCisJCQkJCQkJCQkJbWVzc2FnZUV4dGVuc2lvbk5vdENvbXByZWhlbmRlZCwKKwkJCQkJCQkJCQlzcGFyZTIsIHNwYXJlMSB9CisKK1Byb3RvY29sRXJyb3JJbmRpY2F0b3IgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9FcnJvciwgZXJyb3JPY2N1cnJlZCB9CisKK1Byb3RvY29sRXJyb3JJbmRpY2F0b3JXaXRoTW9yZUluZm8gOjo9IAorCQkJCQkJCQkJQ0hPSUNFIHsKKwlub0Vycm9yCQkJCQkJCQlOVUxMLAorCWVycm9yT2NjdXJyZWQJCQkJCQlTRVFVRU5DRSB7CQkKKwkJcnJjLVRyYW5zYWN0aW9uSWRlbnRpZmllcgkJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsIAorCQlwcm90b2NvbEVycm9ySW5mb3JtYXRpb24JCQlQcm90b2NvbEVycm9ySW5mb3JtYXRpb24KKwl9Cit9CisKK1Byb3RvY29sRXJyb3JNb3JlSW5mb3JtYXRpb24gOjo9CVNFUVVFTkNFIHsKKwlkaWFnbm9zdGljc1R5cGUJCQkJCQlDSE9JQ0UgeworCQl0eXBlMQkJCQkJCQkJQ0hPSUNFIHsKKwkJCWFzbjEtVmlvbGF0aW9uT3JFbmNvZGluZ0Vycm9yCQlOVUxMLAorCQkJbWVzc2FnZVR5cGVOb25leGlzdGVudAkJCQlOVUxMLAorCQkJbWVzc2FnZU5vdENvbXBhdGlibGVXaXRoUmVjZWl2ZXJTdGF0ZQorCQkJCQkJCQkJCQkJSWRlbnRpZmljYXRpb25PZlJlY2VpdmVkTWVzc2FnZSwKKwkJCWllLVZhbHVlTm90Q29tcHJlaGVuZGVkCQkJCUlkZW50aWZpY2F0aW9uT2ZSZWNlaXZlZE1lc3NhZ2UsCisJCQljb25kaXRpb25hbEluZm9ybWF0aW9uRWxlbWVudEVycm9yCUlkZW50aWZpY2F0aW9uT2ZSZWNlaXZlZE1lc3NhZ2UsCisJCQltZXNzYWdlRXh0ZW5zaW9uTm90Q29tcHJlaGVuZGVkCQlJZGVudGlmaWNhdGlvbk9mUmVjZWl2ZWRNZXNzYWdlLAorCQkJc3BhcmUxCQkJCQkJCQlOVUxMLCAKKwkJCXNwYXJlMgkJCQkJCQkJTlVMTCAKKwkJfSwKKwkJc3BhcmUJCQkJCQkJCU5VTEwKKwl9Cit9CisKK1JhZGlvRnJlcXVlbmN5QmFuZEZERCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwktLSBmZGQyMTAwLCBmZGQxOTAwLCBmZGQxODAwIGNvcnJlc3BvbmQgdG8gQmFuZCBJLCBCYW5kIElJIGFuZCBCYW5kIElJSSByZXNwZWN0aXZlbHkKKwkJCQkJCQkJCQlmZGQyMTAwLAorCQkJCQkJCQkJCWZkZDE5MDAsCisJCQkJCQkJCQkJZmRkMTgwMCwgCisJCQkJCQkJCQkJYmFuZFZJLCAKKwkJCQkJCQkJCQliYW5kSVYsCisJCQkJCQkJCQkJYmFuZFYsCisJCQkJCQkJCQkJYmFuZFZJSSwKKwkJCQkJCQkJCQlleHRlbnNpb24taW5kaWNhdG9yIH0KKworUmFkaW9GcmVxdWVuY3lCYW5kRkREMiA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQliYW5kVklJSSwKKwkJCQkJCQkJCQliYW5kSVgsCisJCQkJCQkJCQkJYmFuZFgsCisJCQkJCQkJCQkJYmFuZFhJLAorCQkJCQkJCQkJCWJhbmRYSUksCisJCQkJCQkJCQkJYmFuZFhJSUksCisJCQkJCQkJCQkJYmFuZFhJViwKKwkJCQkJCQkJCQliYW5kWFYsCisJCQkJCQkJCQkJYmFuZFhWSSwKKwkJCQkJCQkJCQliYW5kWFZJSSwgCisJCQkJCQkJCQkJYmFuZFhWSUlJLAorCQkJCQkJCQkJCWJhbmRYSVgsCisJCQkJCQkJCQkJYmFuZFhYLAorCQkJCQkJCQkJCWJhbmRYWEksCisJCQkJCQkJCQkJYmFuZFhYSUksCisJCQkJCQkJCQkJZXh0ZW5zaW9uLWluZGljYXRvciB9CisKK1JhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhLCBiLCBjLCBhYiwgYWMsIGJjLCBhYmMsIHNwYXJlIH0KKworUmFkaW9GcmVxdWVuY3lCYW5kVEREIDo6PQkJCUVOVU1FUkFURUQge2EsIGIsIGMsIHNwYXJlfQorCitSYWRpb0ZyZXF1ZW5jeUJhbmRHU00gOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZ3NtNDUwLAorCQkJCQkJCQkJCWdzbTQ4MCwKKwkJCQkJCQkJCQlnc204NTAsCisJCQkJCQkJCQkJZ3NtOTAwUCwKKwkJCQkJCQkJCQlnc205MDBFLAorCQkJCQkJCQkJCWdzbTE4MDAsCisJCQkJCQkJCQkJZ3NtMTkwMCwKKwkJCQkJCQkJCQlzcGFyZTksIHNwYXJlOCwgc3BhcmU3LCBzcGFyZTYsIHNwYXJlNSwKKwkJCQkJCQkJCQlzcGFyZTQsIHNwYXJlMywgc3BhcmUyLCBzcGFyZTF9CisKK1JiLXRpbWVyLWluZGljYXRvciA6Oj0JCQkJU0VRVUVOQ0UgeworCXQzMTQtZXhwaXJlZAkJCQkJCUJPT0xFQU4sCisJdDMxNS1leHBpcmVkCQkJCQkJQk9PTEVBTiB9CisKK1JlLUVzdGFibGlzaG1lbnRUaW1lciA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl1c2VUMzE0LCB1c2VUMzE1Cit9CisKK1JlZGlyZWN0aW9uSW5mbyA6Oj0JCQkJCUNIT0lDRSB7CisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8sCisJaW50ZXJSQVRJbmZvCQkJCQkJSW50ZXJSQVRJbmZvCit9CisKK1JlZGlyZWN0aW9uSW5mby1yNiA6Oj0JCQkJQ0hPSUNFIHsKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKKwlpbnRlclJBVEluZm8JCQkJCQlJbnRlclJBVEluZm8tcjYKK30KKworUmVqZWN0aW9uQ2F1c2UgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljb25nZXN0aW9uLAorCQkJCQkJCQkJCXVuc3BlY2lmaWVkIH0KKworUmVsZWFzZUNhdXNlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9ybWFsRXZlbnQsCisJCQkJCQkJCQkJdW5zcGVjaWZpZWQsCisJCQkJCQkJCQkJcHJlLWVtcHRpdmVSZWxlYXNlLAorCQkJCQkJCQkJCWNvbmdlc3Rpb24sCisJCQkJCQkJCQkJcmUtZXN0YWJsaXNobWVudFJlamVjdCwKKwkJCQkJCQkJCQlkaXJlY3RlZHNpZ25hbGxpbmdjb25uZWN0aW9ucmUtZXN0YWJsaXNobWVudCwKKwkJCQkJCQkJCQl1c2VySW5hY3Rpdml0eSwKKwkJCQkJCQkJCQlzcGFyZSB9CisKK1JGLUNhcGFiaWxpdHkgOjo9CQkJCQlTRVFVRU5DRSB7CisJCWZkZFJGLUNhcGFiaWxpdHkJCQkJU0VRVUVOQ0UgeworCQkJdWUtUG93ZXJDbGFzcwkJCQkJVUUtUG93ZXJDbGFzcywKKwkJCXR4UnhGcmVxdWVuY3lTZXBhcmF0aW9uCQkJVHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24KKwkJfQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGRSRi1DYXBhYmlsaXR5CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVlLVBvd2VyQ2xhc3MJCQkJVUUtUG93ZXJDbGFzcywKKwkJCXJhZGlvRnJlcXVlbmN5VEREQmFuZExpc3QJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdCwKKwkJCWNoaXBSYXRlQ2FwYWJpbGl0eQkJCUNoaXBSYXRlQ2FwYWJpbGl0eQorCQl9CQkJCQkJCQkJT1BUSU9OQUwKK30KKworUkYtQ2FwYWJpbGl0eS1yNC1leHQgOjo9CQkJCVNFUVVFTkNFIHsKKwkJdGRkUkYtQ2FwYWJpbGl0eQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1Qb3dlckNsYXNzCQkJCVVFLVBvd2VyQ2xhc3MsCisJCQlyYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCisJCQljaGlwUmF0ZUNhcGFiaWxpdHkJCQlDaGlwUmF0ZUNhcGFiaWxpdHkKKwkJfQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1JGLUNhcGFiaWxpdHktcjcgOjo9CQkJCVNFUVVFTkNFIHsKKwkJZmRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1Qb3dlckNsYXNzCQkJCQlVRS1Qb3dlckNsYXNzLAorCQkJdHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24JCQlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgorCQl9CQkJCQkJCQkJT1BUSU9OQUwsCisJCXRkZFJGLUNhcGFiaWxpdHkJCQkJU0VRVUVOQ0UgeworCQkJdWUtUG93ZXJDbGFzcwkJCQkJVUUtUG93ZXJDbGFzcywKKwkJCXJhZGlvRnJlcXVlbmN5VEREQmFuZExpc3QJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QsCisJCQljaGlwUmF0ZUNhcGFiaWxpdHkJCQkJQ2hpcFJhdGVDYXBhYmlsaXR5LXI3CisJCX0JT1BUSU9OQUwKK30KKworUkxDLUNhcGFiaWxpdHkgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gSWYgcHJlc2VudCwgdGhlICJ0b3RhbFJMQy1BTS1CdWZmZXJTaXplIiBpbiB0aGUgSUUgIlJMQy1DYXBhYmlsaXR5LXI1LWV4dCIgb3ZlcnJpZGVzIHRoZQorCS0tIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhpcyBJRS4gVGhlIHZhbHVlIGluIHRoaXMgSUUgbWF5IGJlIHVzZWQgYnkgYSBwcmUtUkVMLTUgVVRSQU4uCisJdG90YWxSTEMtQU0tQnVmZmVyU2l6ZQkJCQlUb3RhbFJMQy1BTS1CdWZmZXJTaXplLAorCW1heGltdW1STEMtV2luZG93U2l6ZQkJCQlNYXhpbXVtUkxDLVdpbmRvd1NpemUsCisJbWF4aW11bUFNLUVudGl0eU51bWJlcgkJCQlNYXhpbXVtQU0tRW50aXR5TnVtYmVyUkxDLUNhcAorfQorCitSTEMtQ2FwYWJpbGl0eS1yNS1leHQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdG90YWxSTEMtQU0tQnVmZmVyU2l6ZQkJCQlUb3RhbFJMQy1BTS1CdWZmZXJTaXplLXI1LWV4dAkJT1BUSU9OQUwKK30KKworUlJDLUNvbm5lY3Rpb25SZWxlYXNlSW5mb3JtYXRpb24gOjo9CUNIT0lDRSB7CisJbm9SZWxlYXNlCQkJCQkJCQlOVUxMLAorCXJlbGVhc2UJCQkJCQkJCQlTRVFVRU5DRSB7CisJCXJlbGVhc2VDYXVzZQkJCQkJCQlSZWxlYXNlQ2F1c2UKKwl9Cit9CisKK1JSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIgOjo9CQlJTlRFR0VSICgwLi4xNSkKKworCitSUkMtTWVzc2FnZVNlcXVlbmNlTnVtYmVyTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDQuLjUpKSBPRgorCQkJCQkJCQkJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIKKworUlJDLVN0YXRlSW5kaWNhdG9yIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljZWxsLURDSCwgY2VsbC1GQUNILCBjZWxsLVBDSCwgdXJhLVBDSCB9CisKK1JSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIgOjo9CQlJTlRFR0VSICgwLi4zKQorCitTLVJOVEkgOjo9CQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwKSkKKworUy1STlRJLTIgOjo9CQkJCQkJQklUIFNUUklORyAoU0laRSAoMTApKQorCitTZWN1cml0eUNhcGFiaWxpdHkgOjo9CQkJCVNFUVVFTkNFIHsKKwljaXBoZXJpbmdBbGdvcml0aG1DYXAJCQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJLS0gRm9yIGVhY2ggYml0IHZhbHVlINIw0yBtZWFucyBmYWxzZS8gbm90IHN1cHBvcnRlZAorCQkJCQkJCQkJCQlzcGFyZTE1KDApLAorCQkJCQkJCQkJCQlzcGFyZTE0KDEpLAorCQkJCQkJCQkJCQlzcGFyZTEzKDIpLAorCQkJCQkJCQkJCQlzcGFyZTEyKDMpLAorCQkJCQkJCQkJCQlzcGFyZTExKDQpLAorCQkJCQkJCQkJCQlzcGFyZTEwKDUpLAorCQkJCQkJCQkJCQlzcGFyZTkoNiksCisJCQkJCQkJCQkJCXNwYXJlOCg3KSwKKwkJCQkJCQkJCQkJc3BhcmU3KDgpLAorCQkJCQkJCQkJCQlzcGFyZTYoOSksCisJCQkJCQkJCQkJCXNwYXJlNSgxMCksCisJCQkJCQkJCQkJCXNwYXJlNCgxMSksCisJCQkJCQkJCQkJCXNwYXJlMygxMiksCisJCQkJCQkJCQkJCXNwYXJlMigxMyksCisJCQkJCQkJCQkJCXVlYTEoMTQpLAorCQkJCQkJCQkJCQl1ZWEwKDE1KQorCQkJCQkJCQkJCQl9CShTSVpFICgxNikpLAorCWludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG1DYXAJCUJJVCBTVFJJTkcgeworCQkJCQkJCQkJCS0tIEZvciBlYWNoIGJpdCB2YWx1ZSDSMNMgbWVhbnMgZmFsc2UvIG5vdCBzdXBwb3J0ZWQKKwkJCQkJCQkJCQkJc3BhcmUxNSgwKSwKKwkJCQkJCQkJCQkJc3BhcmUxNCgxKSwKKwkJCQkJCQkJCQkJc3BhcmUxMygyKSwKKwkJCQkJCQkJCQkJc3BhcmUxMigzKSwKKwkJCQkJCQkJCQkJc3BhcmUxMSg0KSwKKwkJCQkJCQkJCQkJc3BhcmUxMCg1KSwKKwkJCQkJCQkJCQkJc3BhcmU5KDYpLAorCQkJCQkJCQkJCQlzcGFyZTgoNyksCisJCQkJCQkJCQkJCXNwYXJlNyg4KSwKKwkJCQkJCQkJCQkJc3BhcmU2KDkpLAorCQkJCQkJCQkJCQlzcGFyZTUoMTApLAorCQkJCQkJCQkJCQlzcGFyZTQoMTEpLAorCQkJCQkJCQkJCQlzcGFyZTMoMTIpLAorCQkJCQkJCQkJCQlzcGFyZTIoMTMpLAorCQkJCQkJCQkJCQl1aWExKDE0KSwKKwkJCQkJCQkJCQkJc3BhcmUwKDE1KQorCQkJCQkJCQkJCSAJfSAJIChTSVpFICgxNikpCit9CisKK1NlcnZpbmctSFNEU0NILUNlbGxJbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwlkZWx0YUFDSwkJCQkJCURlbHRhQUNLCQkJCQlPUFRJT05BTCwKKwlkZWx0YU5BQ0sJCQkJCQlEZWx0YU5BQ0sJCQkJCU9QVElPTkFMLAorCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQlIQVJRLVByZWFtYmxlLU1vZGUsCisJcHJpbWFyeUNQSUNILUluZm8JCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKKwlkbC1oc3Bkc2NoLUluZm9ybWF0aW9uCQkJREwtSFNQRFNDSC1JbmZvcm1hdGlvbgkJT1BUSU9OQUwsCisJaGFycUluZm8JCQkJCQlIQVJRLUluZm8gCQkJCQlPUFRJT05BTCwKKwltYWMtaHNSZXNldEluZGljYXRvcgkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTCAKK30KKworU2ltdWx0YW5lb3VzU0NDUENILURQQ0gtUmVjZXB0aW9uIDo6PSBDSE9JQ0UgeworCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJc3VwcG9ydGVkCQkJCQkJCVNFUVVFTkNFIHsKKwkJbWF4Tm9TQ0NQQ0gtUkwJCQkJCQlNYXhOb1NDQ1BDSC1STCwKKwkJLS0gc2ltdWx0YW5lb3VzU0NDUENILURQQ0gtRFBEQ0gtUmVjZXB0aW9uIGlzIGFwcGxpY2FibGUgb25seSBpZiAKKwkJLS0gdGhlIElFIFN1cHBvcnQgb2YgUERTQ0ggPSBUUlVFCisJCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gRFBEQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QgKHNlZSB0YWJ1bGFyKS4gVGhlIAorCQktLSBuYW1lIGlzIG5vdCBjaGFuZ2VkLCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCisJCXNpbXVsdGFuZW91c1NDQ1BDSC1EUENILURQRENILVJlY2VwdGlvbgkJQk9PTEVBTgorCX0KK30KKworU1JOQy1JZGVudGl0eSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEyKSkKKworCitTVEFSVC1WYWx1ZSA6Oj0JCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMCkpCisKK1NUQVJUTGlzdCA6Oj0JCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlTVEFSVFNpbmdsZQorCitTVEFSVFNpbmdsZSA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCXN0YXJ0LVZhbHVlCQkJCQkJCVNUQVJULVZhbHVlCQkJCit9CisKK0NhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNSA6Oj0JU0VRVUVOQ0UgeworCXVlLVJhZGlvQ2FwYWJpbGl0eUZERFVwZGF0ZVJlcXVpcmVtZW50LUZERAlCT09MRUFOLAorCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50LVRERDM4NAlCT09MRUFOLAorCXVlLVJhZGlvQ2FwYWJpbGl0eVRERFVwZGF0ZVJlcXVpcmVtZW50LVRERDEyOAlCT09MRUFOLAorCXN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxTGlzdAkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0LXI1CQlPUFRJT05BTAorfQorCitTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcSA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWdzbSB9CisKK1N5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxLXY1OTBleHQgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlnZXJhbkl1IH0KKworU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEtcjUgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlnc20sIGdlcmFuSXUgfQorCitTeXN0ZW1TcGVjaWZpY0NhcFVwZGF0ZVJlcUxpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhTeXN0ZW1DYXBhYmlsaXR5KSkgT0YgCisJCQkJCQkJCQkJU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXEKKworU3lzdGVtU3BlY2lmaWNDYXBVcGRhdGVSZXFMaXN0LXI1IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4U3lzdGVtQ2FwYWJpbGl0eSkpIE9GIAorCQkJCQkJCQkJCVN5c3RlbVNwZWNpZmljQ2FwVXBkYXRlUmVxLXI1CisKK1QtMzAwIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltczEwMCwgbXMyMDAsIG1zNDAwLCBtczYwMCwgbXM4MDAsCisJCQkJCQkJCQkJbXMxMDAwLCBtczEyMDAsIG1zMTQwMCwgbXMxNjAwLAorCQkJCQkJCQkJCW1zMTgwMCwgbXMyMDAwLCBtczMwMDAsIG1zNDAwMCwKKwkJCQkJCQkJCQltczYwMDAsIG1zODAwMCB9CisKK1QtMzAxIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltczEwMCwgbXMyMDAsIG1zNDAwLCBtczYwMCwgbXM4MDAsCisJCQkJCQkJCQkJbXMxMDAwLCBtczEyMDAsIG1zMTQwMCwgbXMxNjAwLAorCQkJCQkJCQkJCW1zMTgwMCwgbXMyMDAwLCBtczMwMDAsIG1zNDAwMCwKKwkJCQkJCQkJCQltczYwMDAsIG1zODAwMCwgc3BhcmUgfQorCitULTMwMiA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXMxMDAsIG1zMjAwLCBtczQwMCwgbXM2MDAsIG1zODAwLAorCQkJCQkJCQkJCW1zMTAwMCwgbXMxMjAwLCBtczE0MDAsIG1zMTYwMCwKKwkJCQkJCQkJCQltczE4MDAsIG1zMjAwMCwgbXMzMDAwLCBtczQwMDAsCisJCQkJCQkJCQkJbXM2MDAwLCBtczgwMDAsIHNwYXJlIH0KKworVC0zMDQgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zMTAwLCBtczIwMCwgbXM0MDAsIAorCQkJCQkJCQkJCW1zMTAwMCwgbXMyMDAwLCBzcGFyZTMsIHNwYXJlMiwgc3BhcmUxIH0KKworVC0zMDUgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5vVXBkYXRlLCBtNSwgbTEwLCBtMzAsCisJCQkJCQkJCQkJbTYwLCBtMTIwLCBtMzYwLCBtNzIwIH0KKworVC0zMDcgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXM1LCBzMTAsIHMxNSwgczIwLAorCQkJCQkJCQkJCXMzMCwgczQwLCBzNTAsIHNwYXJlIH0KKworVC0zMDggOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zNDAsIG1zODAsIG1zMTYwLCBtczMyMCB9CisKK1QtMzA5IDo6PQkJCQkJCQlJTlRFR0VSICgxLi44KQorCitULTMxMCA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXM0MCwgbXM4MCwgbXMxMjAsIG1zMTYwLAorCQkJCQkJCQkJCW1zMjAwLCBtczI0MCwgbXMyODAsIG1zMzIwIH0KKworVC0zMTEgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zMjUwLCBtczUwMCwgbXM3NTAsIG1zMTAwMCwKKwkJCQkJCQkJCQltczEyNTAsIG1zMTUwMCwgbXMxNzUwLCBtczIwMDAgfQorCistLSBUaGUgdmFsdWUgMCBmb3IgVC0zMTIgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCitULTMxMiA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uMTUpCisKK1QtMzEzIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4xNSkKKworVC0zMTQgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMwLCBzMiwgczQsIHM2LCBzOCwKKwkJCQkJCQkJCQlzMTIsIHMxNiwgczIwIH0KKworVC0zMTUgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXMwLCBzMTAsIHMzMCwgczYwLCBzMTgwLAorCQkJCQkJCQkJCXM2MDAsIHMxMjAwLCBzMTgwMCB9CisKK1QtMzE2IDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMCwgczEwLCBzMjAsIHMzMCwgczQwLAorCQkJCQkJCQkJCXM1MCwgcy1pbmYsIHNwYXJlIH0KKworLS0gQWxsIHRoZSB2YWx1ZXMgYXJlIGNoYW5nZWQgdG8gImluZmluaXR5IiBpbiBSZWwtNQorVC0zMTcgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWluZmluaXR5MCwgIGluZmluaXR5MSwgIGluZmluaXR5MiwgaW5maW5pdHkzLCBpbmZpbml0eTQsCisJCQkJCQkJCQkJaW5maW5pdHk1LCBpbmZpbml0eTYsIGluZmluaXR5N30KKworVC0zMTggOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zMjUwLCBtczUwMCwgbXM3NTAsIG1zMTAwMCwgbXMxMjUwLCBtczE1MDAsCisJCQkJCQkJCQkJbXMxNzUwLCBtczIwMDAsIG1zMzAwMCwgbXM0MDAwLCBtczYwMDAsIG1zODAwMCwKKwkJCQkJCQkJCQltczEwMDAwLCBtczEyMDAwLCBtczE2MDAwIH0KKworVC1DUENIIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljdDAsIGN0MSB9CisKK1RNU0ktYW5kLUxBSS1HU00tTUFQIDo6PQkJCVNFUVVFTkNFIHsKKwl0bXNpCQkJCQkJCQlUTVNJLUdTTS1NQVAsCisJbGFpCQkJCQkJCQkJTEFJCit9CisKK1RNU0ktRFMtNDEgOjo9CQkJCQkJT0NURVQgU1RSSU5HIChTSVpFICgyLi4xNykpCisKK1RvdGFsUkxDLUFNLUJ1ZmZlclNpemUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHVtbXksIGtiMTAsIGtiNTAsIGtiMTAwLAorCQkJCQkJCQkJCWtiMTUwLCBrYjUwMCwga2IxMDAwLCBzcGFyZSB9CisKK1RvdGFsUkxDLUFNLUJ1ZmZlclNpemUtcjUtZXh0IDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlrYjIwMCwga2IzMDAsIGtiNDAwLCBrYjc1MCB9CisKKy0tIEFjdHVhbCB2YWx1ZSBUcmFuc21pc3Npb25Qcm9iYWJpbGl0eSA9IElFIHZhbHVlICogMC4xMjUKK1RyYW5zbWlzc2lvblByb2JhYmlsaXR5IDo6PQkJCUlOVEVHRVIgKDEuLjgpCisKK1RyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5IDo6PQkJU0VRVUVOQ0UgeworCWRsLVRyYW5zQ2hDYXBhYmlsaXR5CQkJCURMLVRyYW5zQ2hDYXBhYmlsaXR5LAorCXVsLVRyYW5zQ2hDYXBhYmlsaXR5CQkJCVVMLVRyYW5zQ2hDYXBhYmlsaXR5CQorfQorCitUdXJib1N1cHBvcnQgOjo9CQkJCQlDSE9JQ0UgeworCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJc3VwcG9ydGVkCQkJCQkJCU1heE5vQml0cworfQorCistLSBWYWx1ZXMgZGVmaW5lZCBhcyBzcGFyZSBzaGFsbCBub3QgYmUgc2VudCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLiBJZiBhIHNwYXJlIHZhbHVlIGlzCistLSByZWNlaXZlZCwgaXQgc2hvdWxkIGJlIGludGVycHJldGVkIGFzICdkZWZhdWx0LVJ4VFgtc3BhcmF0aW9uJy4KK1R4UnhGcmVxdWVuY3lTZXBhcmF0aW9uIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWRlZmF1bHQtVHhSeC1zZXBhcmF0aW9uLCBzcGFyZTIsIHNwYXJlMSB9CisKK1UtUk5USSA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCXNybmMtSWRlbnRpdHkJCQkJCQlTUk5DLUlkZW50aXR5LAorCXMtUk5USQkJCQkJCQkJUy1STlRJCit9CisKK1UtUk5USS1Hcm91cCA6Oj0JCQkJCUNIT0lDRSB7CistLSBUQUJVTEFSOiBub3QgZm9sbG93aW5nIHRoZSB0YWJ1bGFyIHN0cmljdGx5LCBidXQgdGhpcyB3aWxsIG1vc3QgbGlrZWx5IHNhdmUgYml0cworCWFsbAkJCQkJCQkJCU5VTEwsCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMSkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjIJCQkJQklUIFNUUklORyAoU0laRSAoMzApKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIzCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI5KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iNAkJCQlCSVQgU1RSSU5HIChTSVpFICgyOCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjUJCQkJQklUIFNUUklORyAoU0laRSAoMjcpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWI2CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI2KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iNwkJCQlCSVQgU1RSSU5HIChTSVpFICgyNSkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjgJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWI5CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIzKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTAJCQkJQklUIFNUUklORyAoU0laRSAoMjIpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxMQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMSkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjEyCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTMJCQkJQklUIFNUUklORyAoU0laRSAoMTkpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxNAkJCQlCSVQgU1RSSU5HIChTSVpFICgxOCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjE1CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE3KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTYJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIxNwkJCQlCSVQgU1RSSU5HIChTSVpFICgxNSkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjE4CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE0KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMTkJCQkJQklUIFNUUklORyAoU0laRSAoMTMpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyMAkJCQlCSVQgU1RSSU5HIChTSVpFICgxMikpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjIxCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDExKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMjIJCQkJQklUIFNUUklORyAoU0laRSAoMTApKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyMwkJCQlCSVQgU1RSSU5HIChTSVpFICg5KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMjQJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjI1CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDcpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyNgkJCQlCSVQgU1RSSU5HIChTSVpFICg2KSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMjcJCQkJQklUIFNUUklORyAoU0laRSAoNSkpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjI4CQkJCUJJVCBTVFJJTkcgKFNJWkUgKDQpKSwKKwl1LVJOVEktQml0TWFza0luZGV4LWIyOQkJCQlCSVQgU1RSSU5HIChTSVpFICgzKSksCisJdS1STlRJLUJpdE1hc2tJbmRleC1iMzAJCQkJQklUIFNUUklORyAoU0laRSAoMikpLAorCXUtUk5USS1CaXRNYXNrSW5kZXgtYjMxCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEpKQorfQorCitVLVJOVEktU2hvcnQgOjo9CQkJCQlTRVFVRU5DRSB7CisJc3JuYy1JZGVudGl0eQkJCQkJCVNSTkMtSWRlbnRpdHksCisJcy1STlRJLTIJCQkJCQkJUy1STlRJLTIKK30KKworVUUtQ2FwYWJpbGl0eUNvbnRhaW5lci1JRXMgOjo9IAkJCVNFUVVFTkNFIHsKKy0tIENvbnRhaW5lciBmb3IgdHJhbnNwYXJlbnQgdHJhbnNmZXIgb2YgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbiBub3QgcmVsYXRlZCB0bworLS0gZmVhdHVyZXMgZm9yIHdoaWNoIGVhcmx5IGltcGxlbWVudGF0aW9uIGlzIGRlc2lyZWQKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQsCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eS12NjkwZXh0CUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NjkwZXh0CU9QVElPTkFMLAorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCit9CisKK1VFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMgOjo9CQlTRVFVRU5DRSB7CistLSBPcHRpb25hbCBpcyB1c2VkIGFsc28gZm9yIHBhcmFtZXRlcnMgZm9yIHdoaWNoIHRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBsYXN0IG9uZSByZWFkIGluIFNJQjEKKy0tIHQtMzAxIGFuZCBuLTMwMSBzaG91bGQgbm90IGJlIHVzZWQgYnkgdGhlIFVFIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCXQtMzAxCQkJCQkJCQlULTMwMQkJCQkJCQkJREVGQVVMVCBtczIwMDAsCisJbi0zMDEJCQkJCQkJCU4tMzAxCQkJCQkJCQlERUZBVUxUIDIsCisJdC0zMDIJCQkJCQkJCVQtMzAyCQkJCQkJCQlERUZBVUxUIG1zNDAwMCwKKwluLTMwMgkJCQkJCQkJTi0zMDIJCQkJCQkJCURFRkFVTFQgMywKKwl0LTMwNAkJCQkJCQkJVC0zMDQJCQkJCQkJCURFRkFVTFQgbXMyMDAwLAorCW4tMzA0CQkJCQkJCQlOLTMwNAkJCQkJCQkJREVGQVVMVCAyLAorCXQtMzA1CQkJCQkJCQlULTMwNQkJCQkJCQkJREVGQVVMVCBtMzAsCisJdC0zMDcJCQkJCQkJCVQtMzA3CQkJCQkJCQlERUZBVUxUIHMzMCwKKwl0LTMwOAkJCQkJCQkJVC0zMDgJCQkJCQkJCURFRkFVTFQgbXMxNjAsCisJdC0zMDkJCQkJCQkJCVQtMzA5CQkJCQkJCQlERUZBVUxUIDUsCisJdC0zMTAJCQkJCQkJCVQtMzEwCQkJCQkJCQlERUZBVUxUIG1zMTYwLAorCW4tMzEwCQkJCQkJCQlOLTMxMAkJCQkJCQkJREVGQVVMVCA0LAorCXQtMzExCQkJCQkJCQlULTMxMQkJCQkJCQkJREVGQVVMVCBtczIwMDAsCisJdC0zMTIJCQkJCQkJCVQtMzEyCQkJCQkJCQlERUZBVUxUIDEsCisJLS0gbi0zMTIgc2hhbGwgYmUgaWdub3JlZCBpZiBuLTMxMiBpbiBVRS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQgaXMgcHJlc2VudCwgYW5kIHRoZQorCS0tIHZhbHVlIG9mIHRoYXQgZWxlbWVudCBzaGFsbCBiZSB1c2VkIGluc3RlYWQuCisJbi0zMTIJCQkJCQkJCU4tMzEyCQkJCQkJCQlERUZBVUxUIHMxLAorCXQtMzEzCQkJCQkJCQlULTMxMwkJCQkJCQkJREVGQVVMVCAzLAorCW4tMzEzCQkJCQkJCQlOLTMxMwkJCQkJCQkJREVGQVVMVCBzMjAsCisJdC0zMTQJCQkJCQkJCVQtMzE0CQkJCQkJCQlERUZBVUxUIHMxMiwKKwl0LTMxNQkJCQkJCQkJVC0zMTUJCQkJCQkJCURFRkFVTFQgczE4MCwKKwktLSBuLTMxNSBzaGFsbCBiZSBpZ25vcmVkIGlmIG4tMzE1IGluIFVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCBpcyBwcmVzZW50LCBhbmQgdGhlCisJLS0gdmFsdWUgb2YgdGhhdCBlbGVtZW50IHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4KKwluLTMxNQkJCQkJCQkJTi0zMTUJCQkJCQkJCURFRkFVTFQgczEsCisJdC0zMTYJCQkJCQkJCVQtMzE2CQkJCQkJCQlERUZBVUxUIHMzMCwKKwl0LTMxNwkJCQkJCQkJVC0zMTcJCQkJCQkJCURFRkFVTFQgaW5maW5pdHk0Cit9CisKK1VFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCA6Oj0JCVNFUVVFTkNFIHsKKwluLTMxMgkJCQkJCQkJTi0zMTJleHQJCQkJCQkJCU9QVElPTkFMLAorCW4tMzE1CQkJCQkJCQlOLTMxNWV4dAkJCQkJCQkJT1BUSU9OQUwKK30KKworVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cy1yNSA6Oj0JCVNFUVVFTkNFIHsKKy0tIE9wdGlvbmFsIGlzIHVzZWQgYWxzbyBmb3IgcGFyYW1ldGVycyBmb3Igd2hpY2ggdGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIGxhc3Qgb25lIHJlYWQgaW4gU0lCMQorLS0gdC0zMDEgYW5kIG4tMzAxIHNob3VsZCBub3QgYmUgdXNlZCBieSB0aGUgVUUgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJdC0zMDEJCQkJCQkJCVQtMzAxCQkJCQkJCQlERUZBVUxUIG1zMjAwMCwKKwluLTMwMQkJCQkJCQkJTi0zMDEJCQkJCQkJCURFRkFVTFQgMiwKKwl0LTMwMgkJCQkJCQkJVC0zMDIJCQkJCQkJCURFRkFVTFQgbXM0MDAwLAorCW4tMzAyCQkJCQkJCQlOLTMwMgkJCQkJCQkJREVGQVVMVCAzLAorCXQtMzA0CQkJCQkJCQlULTMwNAkJCQkJCQkJREVGQVVMVCBtczIwMDAsCisJbi0zMDQJCQkJCQkJCU4tMzA0CQkJCQkJCQlERUZBVUxUIDIsCisJdC0zMDUJCQkJCQkJCVQtMzA1CQkJCQkJCQlERUZBVUxUIG0zMCwKKwl0LTMwNwkJCQkJCQkJVC0zMDcJCQkJCQkJCURFRkFVTFQgczMwLAorCXQtMzA4CQkJCQkJCQlULTMwOAkJCQkJCQkJREVGQVVMVCBtczE2MCwKKwl0LTMwOQkJCQkJCQkJVC0zMDkJCQkJCQkJCURFRkFVTFQgNSwKKwl0LTMxMAkJCQkJCQkJVC0zMTAJCQkJCQkJCURFRkFVTFQgbXMxNjAsCisJbi0zMTAJCQkJCQkJCU4tMzEwCQkJCQkJCQlERUZBVUxUIDQsCisJdC0zMTEJCQkJCQkJCVQtMzExCQkJCQkJCQlERUZBVUxUIG1zMjAwMCwKKwl0LTMxMgkJCQkJCQkJVC0zMTIJCQkJCQkJCURFRkFVTFQgMSwKKwluLTMxMgkJCQkJCQkJTi0zMTItcjUJCQkJCQkJREVGQVVMVCBzMSwKKwl0LTMxMwkJCQkJCQkJVC0zMTMJCQkJCQkJCURFRkFVTFQgMywKKwluLTMxMwkJCQkJCQkJTi0zMTMJCQkJCQkJCURFRkFVTFQgczIwLAorCXQtMzE0CQkJCQkJCQlULTMxNAkJCQkJCQkJREVGQVVMVCBzMTIsCisJdC0zMTUJCQkJCQkJCVQtMzE1CQkJCQkJCQlERUZBVUxUIHMxODAsCisJbi0zMTUJCQkJCQkJCU4tMzE1LXI1CQkJCQkJCURFRkFVTFQgczEsCisJdC0zMTYJCQkJCQkJCVQtMzE2CQkJCQkJCQlERUZBVUxUIHMzMCwKKwl0LTMxNwkJCQkJCQkJVC0zMTcJCQkJCQkJCURFRkFVTFQgaW5maW5pdHk0Cit9CisKK1VFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMgOjo9CQlTRVFVRU5DRSB7CisJdC0zMDAJCQkJCQkJCVQtMzAwLAorCW4tMzAwCQkJCQkJCQlOLTMwMCwKKwl0LTMxMgkJCQkJCQkJVC0zMTIsCisJLS0gbi0zMTIgc2hhbGwgYmUgaWdub3JlZCBpZiBuLTMxMiBpbiBVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQgaXMgcHJlc2VudCwgYW5kIHRoZQorCS0tIHZhbHVlIG9mIHRoYXQgZWxlbWVudCBzaGFsbCBiZSB1c2VkIGluc3RlYWQuCisJbi0zMTIJCQkJCQkJCU4tMzEyCQorfQorCitVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQgOjo9CQlTRVFVRU5DRSB7CisJbi0zMTIJCQkJCQkJCU4tMzEyZXh0CQkJCQkJCQlPUFRJT05BTAorfQorCitVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eSA6Oj0JCVNFUVVFTkNFIHsKKwltdWx0aVJBVC1DYXBhYmlsaXR5TGlzdAkJCQlNdWx0aVJBVC1DYXBhYmlsaXR5LAorCW11bHRpTW9kZUNhcGFiaWxpdHkJCQkJCU11bHRpTW9kZUNhcGFiaWxpdHkKK30KKworVUUtUG93ZXJDbGFzcyA6Oj0JCQkJCUlOVEVHRVIgKDEuLjQpCisKK1VFLVBvd2VyQ2xhc3NFeHQgOjo9CQkJCUVOVU1FUkFURUQge2NsYXNzMSwgY2xhc3MyLCBjbGFzczMsIGNsYXNzNCwKKwkJCQkJCQkJCQkgc3BhcmU0LCBzcGFyZTMsIHNwYXJlMiwgc3BhcmUxIH0KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IDo6PQkJU0VRVUVOQ0UgeworCS0tIFVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSBpcyBjb21wYXRpYmxlIHdpdGggUjk5LCBhbHRob3VnaCBhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciAKKwktLSBpcyByZW1vdmVkIGZyb20gdGhpcyBJRSwgc2luY2UgaXRzIGVuY29kaW5nIGRpZCBub3QgZG9lcyBpbiBiaXRzLiBUaGUgCisJLS0gYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IgaXMgcHJvdmlkZWQgaW4gdGhlIHJlbGV2YW50IFJFTC00IGV4dGVuc2lvbiBJRXMuCisJcGRjcC1DYXBhYmlsaXR5CQkJCQkJUERDUC1DYXBhYmlsaXR5LAorCXJsYy1DYXBhYmlsaXR5CQkJCQkJUkxDLUNhcGFiaWxpdHksCisJdHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkJCQlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKKwlyZi1DYXBhYmlsaXR5CQkJCQkJUkYtQ2FwYWJpbGl0eSwKKwlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eSwKKwl1ZS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eQkJCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LAorCXNlY3VyaXR5Q2FwYWJpbGl0eQkJCQkJU2VjdXJpdHlDYXBhYmlsaXR5LAorCXVlLXBvc2l0aW9uaW5nLUNhcGFiaWxpdHkJCQlVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5LAorCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHkJCU9QVElPTkFMCit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUluZm8gOjo9CQlTRVFVRU5DRSB7CisJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LAorCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0Cit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12MzcwZXh0IDo6PQlTRVFVRU5DRSB7CisJdWUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0CQlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjM4MAkJVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzODAKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNhMAkJVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzYTAKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjNnMAkJVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzZzAKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2NTBleHQgOjo9CVNFUVVFTkNFIHsKKwl1ZS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QyCQlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QyLAorCS0tIFRoaXMgSUUgc2hhbGwgYmUgaW5jbHVkZWQgaWYgdGhlIFVFIGFsc28gc3VwcG9ydHMgQmFuZCBJLVZJSQorCXVlLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdC1leHQJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dAlPUFRJT05BTAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjY5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCQlwaHlzaWNhbGNoYW5uZWxjYXBhYmlsaXR5LWVkY2gJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2LAorCQktLSBUQUJVTEFSOiBkZXZpY2VUeXBlIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KKwkJLS0gRGVmYXVsdCB2YWx1ZSBpcyAnZG9lc0JlbmVmaXRGcm9tQmF0dGVyeUNvbnN1bXB0aW9uT3B0aW1pc2F0aW9uJworCQlkZXZpY2VUeXBlCQlFTlVNRVJBVEVEIHsgZG9lc05vdEJlbmVmaXRGcm9tQmF0dGVyeUNvbnN1bXB0aW9uT3B0aW1pc2F0aW9uIH0JT1BUSU9OQUwKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQgOjo9CQlTRVFVRU5DRSB7CisJcmYtQ2FwYWJpbGl0eQkJCQkJCQkJUkYtQ2FwYWJpbGl0eS1yNwkJCQlPUFRJT05BTCwKKwlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI3CQkJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjcJT1BUSU9OQUwKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0MiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERCkpIE9GCisJCQkJCQkJCQkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkREMgorCitVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERDIgOjo9CVNFUVVFTkNFIHsKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRGREQyCQkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERDIsCisJZmRkUkYtQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgeworCQl1ZS1Qb3dlckNsYXNzCQkJCQkJVUUtUG93ZXJDbGFzc0V4dCwKKwkJdHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24JCQkJVHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24KKwl9CQlPUFRJT05BTCwKKwltZWFzdXJlbWVudENhcGFiaWxpdHkyCQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eUV4dDIKK30KKworCitVRS1Qb3NpdGlvbmluZ0NhcGFiaWxpdHlFeHQtdjM4MCA6Oj0JU0VRVUVOQ0UgeworCXJ4LXR4LVRpbWVEaWZmZXJlbmNlVHlwZTJDYXBhYmxlCQlCT09MRUFOCit9CisKK1VFLVBvc2l0aW9uaW5nQ2FwYWJpbGl0eUV4dC12M2EwIDo6PQlTRVFVRU5DRSB7CisJdmFsaWRpdHktQ2VsbFBDSC1VcmFQQ0gJCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0KK30KKworVUUtUG9zaXRpb25pbmdDYXBhYmlsaXR5RXh0LXYzZzAgOjo9CVNFUVVFTkNFIHsKKwlzZm4tc2ZuVHlwZTJDYXBhYmlsaXR5CQkJCUVOVU1FUkFURUQgeyB0cnVlIH0KK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcUJhbmRzRkREKSkgT0YKKwkJCQkJCQkJCQkJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGREQKKworVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERCkpIE9GIAorCQkJCQkJCQkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRELWV4dAorCitVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERCA6Oj0JU0VRVUVOQ0V7CisJcmFkaW9GcmVxdWVuY3lCYW5kRkRECQkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERCwKKwlmZGRSRi1DYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCXVlLVBvd2VyQ2xhc3MJCQkJCQlVRS1Qb3dlckNsYXNzRXh0LAorCQl0eFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgkJCQlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgorCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eUV4dAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERC1leHQgOjo9IFNFUVVFTkNFIHsKKwlyYWRpb0ZyZXF1ZW5jeUJhbmRGREQJCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRELAorCWNvbXByZXNzZWRNb2RlTWVhc0NhcGFiRkRETGlzdC1leHQJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJGRERMaXN0LWV4dAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjRiMGV4dCA6Oj0JU0VRVUVOQ0UgeworCXBkY3AtQ2FwYWJpbGl0eS1yNC1leHQJCQkJUERDUC1DYXBhYmlsaXR5LXI0LWV4dCwKKwl0ZGQtQ2FwYWJpbGl0eUV4dAkJCQkJU0VRVUVOQ0UgeworCQlyZi1DYXBhYmlsaXR5CQkJCQkJUkYtQ2FwYWJpbGl0eS1yNC1leHQsCisJCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktTENSCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LUxDUi1yNCwKKwkJbWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0LWV4dAkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0LWV4dAorCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCS0tIElFICIgQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IiIGlzIG5vdCBuZWVkZWQgaW4gUlJDIENPTk5FQ1RJT04gU0VUVVAgQ09NUExFVEUKKwlhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciAJT1BUSU9OQUwKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcCA6Oj0gU0VRVUVOQ0UgeworCXRvdGFsQU0tUkxDTWVtb3J5RXhjZWVkczEwa0IJCQlCT09MRUFOLAorCXJmLUNhcGFiaWxpdHlDb21wCQkJCQkJUkYtQ2FwYWJpbGl0eUNvbXAKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1leHQgOjo9IFNFUVVFTkNFIHsKKwlyZi1DYXBhYmlsaXR5RkREQ29tcAkJCQlSRi1DYXBhYkJhbmRMaXN0RkREQ29tcC1leHQKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcC1yNyA6Oj0gU0VRVUVOQ0UgeworCXRvdGFsQU0tUkxDTWVtb3J5RXhjZWVkczEwa0IJCQlCT09MRUFOLAorCXJmLUNhcGFiaWxpdHlDb21wCQkJCQkJUkYtQ2FwYWJpbGl0eUNvbXAtcjcKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5Q29tcDIgOjo9CQlTRVFVRU5DRSB7CisJZmRkUGh5c2ljYWxDaGFubmVsQ2FwYWItaHNwZHNjaC1lZGNoCVNFUVVFTkNFIHsKKwkJZGwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCisJCQkJCQkJCQkJCQlETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcJT1BUSU9OQUwsCisJCXBoeXNpY2FsQ2hhbm5lbENhcGFiQ29tcC1oc3Bkc2NoLXI2CQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktZWRjaC1yNgkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2CisJfQkJT1BUSU9OQUwKK30KKworUkYtQ2FwYWJpbGl0eUNvbXAgOjo9IFNFUVVFTkNFIHsKKwlmZGQgCQkJCQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCVJGLUNhcGFiQmFuZExpc3RGRERDb21wCisJfSwKKwl0ZGQzODQtUkYtQ2FwYWJpbGl0eQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QKKwl9LAorCXRkZDEyOC1SRi1DYXBhYmlsaXR5CUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAorCX0KK30KKworUkYtQ2FwYWJpbGl0eUNvbXAtcjcgOjo9IFNFUVVFTkNFIHsKKwlmZGQgCQkJCQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCVJGLUNhcGFiQmFuZExpc3RGRERDb21wCisJfSwKKwl0ZGQzODQtUkYtQ2FwYWJpbGl0eQlDSE9JQ0UgeworCQlub3RTdXBwb3J0ZWQJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCVJhZGlvRnJlcXVlbmN5QmFuZFRERExpc3QKKwl9LAorCXRkZDc2OC1SRi1DYXBhYmlsaXR5CUNIT0lDRQl7CisJCW5vdFN1cHBvcnRlZAkJCQkJTlVMTCwKKwkJc3VwcG9ydGVkCQkJCQkJUmFkaW9GcmVxdWVuY3lCYW5kVERETGlzdAorCX0sCisJdGRkMTI4LVJGLUNhcGFiaWxpdHkJQ0hPSUNFIHsKKwkJbm90U3VwcG9ydGVkCQkJCQlOVUxMLAorCQlzdXBwb3J0ZWQJCQkJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CisJfQorfQorCistLSBOT1RFOiBUaGlzIElFIGRlZmluZXMgdGhlIHN1cHBvcnRlZCBUWC9SWCBmcmVxdWVuY3kgc2VwYXJhdGlvbiBmb3IgdGhlIHJlc3BlY3RpdmUgc3VwcG9ydGVkCistLSBmcmVxdWVuY3kgYmFuZC4gVmFsdWVzIGRlZmluZWQgYXMgc3BhcmUgc2hhbGwgbm90IGJlIHNlbnQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbC4KKy0tIElmIGEgc3BhcmUgdmFsdWUgaXMgcmVjZWl2ZWQsIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyAnZGVmYXVsdC1SeFRYLXNwYXJhdGlvbicuCitSRi1DYXBhYkJhbmRGRERDb21wIDo6PQkJCQlFTlVNRVJBVEVEIHsgbm90U3VwcG9ydGVkLAorCQkJCQkJCQkJCWRlZmF1bHQtVHhSeC1zZXBhcmF0aW9uLCBzcGFyZTIsIHNwYXJlMSB9CisKK1JGLUNhcGFiQmFuZExpc3RGRERDb21wIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxQmFuZHNGREQpKSBPRgorCS0tIFRoZSBmaXJzdCBlbnRyeSBjb3JyZXNwb25kcyB3aXRoIHRoZSBmaXJzdCB2YWx1ZSBvZiBJRSBSYWRpb0ZyZXF1ZW5jeUJhbmRGREQsCisJLS0gZmRkMjEwMCwgYW5kIHNvIG9uLiBObyBtb3JlIHRoYW4gc2V2ZW4gZW50cmllcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhpcyBJRS4gVGhlCisJLS0gOCd0aCBlbnRyeSwgaWYgcHJlc2VudCwgc2hhbGwgYmUgaWdub3JlZC4KKwktLSBBbiBleHRlbnNpb24gb2YgdGhpcyBJRSBtYXkgYmUgcHJvdmlkZWQgdXNpbmcgdGhlIElFICdSRi1DYXBhYkJhbmRMaXN0RkREQ29tcC1leHQnLgorCVJGLUNhcGFiQmFuZEZERENvbXAKKworUkYtQ2FwYWJCYW5kTGlzdEZERENvbXAtZXh0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXFCYW5kc0ZERC1leHQpKSBPRgorCS0tIFRoZSBmaXJzdCBlbnRyeSBjb3JyZXNwb25kcyB3aXRoIHRoZSBmaXJzdCB2YWx1ZSBvZiBJRSBSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyLAorCS0tIGJhbmRWSUlJLCBhbmQgc28gb24uCisJUkYtQ2FwYWJCYW5kRkREQ29tcAorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dCA6Oj0JU0VRVUVOQ0UgeworCWRsLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcJT1BUSU9OQUwsCisJcGRjcC1DYXBhYmlsaXR5LXI1LWV4dAkJCQlQRENQLUNhcGFiaWxpdHktcjUtZXh0LAorCXJsYy1DYXBhYmlsaXR5LXI1LWV4dAkJCQlSTEMtQ2FwYWJpbGl0eS1yNS1leHQsCisJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eQkJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktaHNwZHNjaC1yNSwKKwltdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NTkwZXh0CQlNdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NTkwZXh0Cit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS12NWMwZXh0IDo6PSBTRVFVRU5DRSB7CisJcGRjcC1DYXBhYmlsaXR5LXI1LWV4dDIJCQkJUERDUC1DYXBhYmlsaXR5LXI1LWV4dDIKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2ODBleHQgOjo9IFNFUVVFTkNFIHsKKwltdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NjgwZXh0CQlNdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS12NjgwZXh0Cit9CisKK1VMLVBoeXNDaENhcGFiaWxpdHlGREQgOjo9CQkJU0VRVUVOQ0UgeworCW1heE5vRFBEQ0gtQml0c1RyYW5zbWl0dGVkCQkJTWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KKwlkdW1teQkJCQkJCQkJQk9PTEVBTgkKK30KKworVUwtUGh5c0NoQ2FwYWJpbGl0eUZERC1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJbWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQJCQkJTWF4Tm9EUERDSC1CaXRzVHJhbnNtaXR0ZWQsCisJcGh5c2ljYWxjaGFubmVsY2FwYWJpbGl0eS1lZGNoCQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1lZGNoLXI2Cit9CisKK1VMLVBoeXNDaENhcGFiaWxpdHlUREQgOjo9CQkJU0VRVUVOQ0UgeworCW1heFRTLVBlckZyYW1lCQkJCQkJTWF4VFMtUGVyRnJhbWUsCisJbWF4UGh5c0NoUGVyVGltZXNsb3QJCQkJTWF4UGh5c0NoUGVyVGltZXNsb3QsCisJbWluaW11bVNGCQkJCQkJCU1pbmltdW1TRi1VTCwKKwlzdXBwb3J0T2ZQVVNDSAkJCQkJCUJPT0xFQU4JCit9CisKK1VMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJbWF4VFMtUGVyU3ViRnJhbWUJCQkJCU1heFRTLVBlclN1YkZyYW1lLXI0LAorCW1heFBoeXNDaFBlclRpbWVzbG90CQkJCU1heFBoeXNDaFBlclRpbWVzbG90LAorCW1pbmltdW1TRgkJCQkJCQlNaW5pbXVtU0YtVUwsCisJc3VwcG9ydE9mUFVTQ0gJCQkJCQlCT09MRUFOLAorCXN1cHBvcnRPZjhQU0sJCQkJCQlCT09MRUFOCit9CisKK1BoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktZWRjaC1yNiA6Oj0JU0VRVUVOQ0UgeworCWZkZC1lZGNoCQkJCQkJCQlDSE9JQ0UgeworCQlzdXBwb3J0ZWQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWVkY2gtUGh5c2ljYWxMYXllckNhdGVnb3J5CQkJCUlOVEVHRVIgKDEuLjE2KQorCQl9LAorCQl1bnN1cHBvcnRlZAkJCQkJCQkJTlVMTAorCX0KK30KKworVUwtVHJhbnNDaENhcGFiaWxpdHkgOjo9CQkJU0VRVUVOQ0UgeworCW1heE5vQml0c1RyYW5zbWl0dGVkCQkJCU1heE5vQml0cywKKwltYXhDb252Q29kZUJpdHNUcmFuc21pdHRlZAkJCU1heE5vQml0cywKKwl0dXJib0VuY29kaW5nU3VwcG9ydAkJCQlUdXJib1N1cHBvcnQsCisJbWF4U2ltdWx0YW5lb3VzVHJhbnNDaHMJCQkJTWF4U2ltdWx0YW5lb3VzVHJhbnNDaHNVTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlOVUxMLAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQJCQlNYXhTaW11bHRhbmVvdXNDQ1RyQ0gtQ291bnQKKwkJfQorCX0sCisJbWF4VHJhbnNtaXR0ZWRCbG9ja3MJCQkJTWF4VHJhbnNwb3J0QmxvY2tzVUwsCisJbWF4TnVtYmVyT2ZURkMJCQkJCQlNYXhOdW1iZXJPZlRGQy1VTCwKKwltYXhOdW1iZXJPZlRGCQkJCQkJTWF4TnVtYmVyT2ZURgorfQorCitVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5IDo6PQkJU0VRVUVOQ0UgeworCXN0YW5kYWxvbmVMb2NNZXRob2RzU3VwcG9ydGVkCQkJQk9PTEVBTiwKKwl1ZS1CYXNlZE9URE9BLVN1cHBvcnRlZAkJCQkJQk9PTEVBTiwKKwluZXR3b3JrQXNzaXN0ZWRHUFMtU3VwcG9ydGVkCQkJTmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZCwKKwlzdXBwb3J0Rm9yVUUtR1BTLVRpbWluZ09mQ2VsbEZyYW1lcwkJQk9PTEVBTiwKKwlzdXBwb3J0Rm9ySVBETAkJCQkJCQlCT09MRUFOCit9CisKK1VFLVNlY3VyaXR5SW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXN0YXJ0LUNTCQkJCQkJCVNUQVJULVZhbHVlCit9CisKK1VFLVNlY3VyaXR5SW5mb3JtYXRpb24yIDo6PQkJCVNFUVVFTkNFIHsKKwlzdGFydC1QUwkJCQkJCQlTVEFSVC1WYWx1ZQorfQorCitVUkEtVXBkYXRlQ2F1c2UgOjo9CQkJCQlFTlVNRVJBVEVEIHsgCisJCQkJCQkJCQkJY2hhbmdlT2ZVUkEsIAorCQkJCQkJCQkJCXBlcmlvZGljVVJBVXBkYXRlLCAKKwkJCQkJCQkJCQlkdW1teSwKKwkJCQkJCQkJCQlzcGFyZTEgfQorCitVVFJBTi1EUlgtQ3ljbGVMZW5ndGhDb2VmZmljaWVudCA6Oj0gSU5URUdFUiAoMy4uOSkKKworV2FpdFRpbWUgOjo9CQkJCQkJSU5URUdFUiAoMC4uMTUpCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBSQURJTyBCRUFSRVIgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuNCkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQWxnb3JpdGhtU3BlY2lmaWNJbmZvIDo6PQkJCUNIT0lDRSB7CisJcmZjMjUwNy1JbmZvCQkJCQkJUkZDMjUwNy1JbmZvCit9CisKK0FsZ29yaXRobVNwZWNpZmljSW5mby1yNCA6Oj0JCUNIT0lDRSB7CisJcmZjMjUwNy1JbmZvCQkJCQkJUkZDMjUwNy1JbmZvLAorCXJmYzMwOTUtSW5mbwkJCQkJCVJGQzMwOTUtSW5mby1yNAorfQorCitDSUQtSW5jbHVzaW9uSW5mby1yNCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwZGNwLUhlYWRlciwKKwkJCQkJCQkJCQlyZmMzMDk1LVBhY2tldEZvcm1hdCB9CisKKy0tIFVwcGVyIGxpbWl0IG9mIENPVU5ULUMgaXMgMl4zMiAtIDEKK0NPVU5ULUMgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCisKKy0tIFVwcGVyIGxpbWl0IG9mIENPVU5ULUMtTVNCIGlzIDJeMjUgLSAxCitDT1VOVC1DLU1TQiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4zMzU1NDQzMSkKKworRGVmYXVsdENvbmZpZ0lkZW50aXR5IDo6PQkJCUlOVEVHRVIgKDAuLjEwKQorCitEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjQgOjo9CQlJTlRFR0VSICgwLi4xMikKKworRGVmYXVsdENvbmZpZ0lkZW50aXR5LXI1IDo6PQkJSU5URUdFUiAoMC4uMTMpCisKKy0tIERlZmF1bHRDb25maWdJZGVudGl0eS1yNiB2YWx1ZXMgMjMuLjMxIGFyZSBzcGFyZSBhbmQgc2hhbGwgbm90IGJlIHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIAorLS0gdGhlIHByb3RvY29sCitEZWZhdWx0Q29uZmlnSWRlbnRpdHktcjYgOjo9CQlJTlRFR0VSICgwLi4zMSkKKworRGVmYXVsdENvbmZpZ01vZGUgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWZkZCwKKwkJCQkJCQkJCQl0ZGQgfQorCitEREkgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi42MikKKworREwtQU0tUkxDLU1vZGUgOjo9CQkJCQlTRVFVRU5DRSB7CisJaW5TZXF1ZW5jZURlbGl2ZXJ5CQkJCQlCT09MRUFOLAorCXJlY2VpdmluZ1dpbmRvd1NpemUJCQkJCVJlY2VpdmluZ1dpbmRvd1NpemUsCisJZGwtUkxDLVN0YXR1c0luZm8JCQkJCURMLVJMQy1TdGF0dXNJbmZvCit9CisKK0RMLUFNLVJMQy1Nb2RlLXI1IDo6PQkJCQkJU0VRVUVOQ0UgeworCWRsLVJMQy1QRFUtc2l6ZQkJCQkJCU9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxLAorCWluU2VxdWVuY2VEZWxpdmVyeQkJCQkJQk9PTEVBTiwKKwlyZWNlaXZpbmdXaW5kb3dTaXplCQkJCQlSZWNlaXZpbmdXaW5kb3dTaXplLAorCWRsLVJMQy1TdGF0dXNJbmZvCQkJCQlETC1STEMtU3RhdHVzSW5mbworfQorCitETC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwlyQi1XaXRoUERDUC1JbmZvTGlzdAkJCQkJUkItV2l0aFBEQ1AtSW5mb0xpc3QJT1BUSU9OQUwKK30KKworREwtQ291bnRlclN5bmNocm9uaXNhdGlvbkluZm8tcjUgOjo9CVNFUVVFTkNFIHsKKwlyYi1XaXRoUERDUC1JbmZvTGlzdAkJCQkJUkItV2l0aFBEQ1AtSW5mb0xpc3QJCQlPUFRJT05BTCwKKwlyYi1QRENQQ29udGV4dFJlbG9jYXRpb25MaXN0CQkJUkItUERDUENvbnRleHRSZWxvY2F0aW9uTGlzdAlPUFRJT05BTAorfQorCitETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcgOjo9CQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUgY29udGFpbnMgVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5IGFzIHdlbGwuCisJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUsCisJbG9naWNhbENoYW5uZWxJZGVudGl0eQkJCQlMb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCU9QVElPTkFMCit9CisKK0RMLUxvZ2ljYWxDaGFubmVsTWFwcGluZy1yNSA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBETC1UcmFuc3BvcnRDaGFubmVsVHlwZSBjb250YWlucyBUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgYXMgd2VsbC4KKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UcmFuc3BvcnRDaGFubmVsVHlwZS1yNSwKKwlsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJT1BUSU9OQUwKK30KKworREwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heExvQ0hwZXJSTEMpKSBPRgorCQkJCQkJCQkJCURMLUxvZ2ljYWxDaGFubmVsTWFwcGluZworCitETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0LXI1IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TG9DSHBlclJMQykpIE9GCisJCQkJCQkJCQkJREwtTG9naWNhbENoYW5uZWxNYXBwaW5nLXI1CisKK0RMLVJlY2VwdGlvbi1XaW5kb3ctU2l6ZS1yNiA6Oj0JCUVOVU1FUkFURUQgeyBzaXplMzIsIHNpemU0OCwgc2l6ZTY0LCBzaXplODAsIHNpemU5Niwgc2l6ZTExMiB9CisKK0RMLVJGQzMwOTUtcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJY2lkLUluY2x1c2lvbkluZm8JCQkJCUNJRC1JbmNsdXNpb25JbmZvLXI0LAorCW1heC1DSUQJCQkJCQkJCUlOVEVHRVIgKDEuLjE2MzgzKQkJCQkJREVGQVVMVCAxNSwKKwlyZXZlcnNlRGVjb21wcmVzc2lvbkRlcHRoCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJCQlERUZBVUxUIDAKK30KKworREwtUkxDLU1vZGUgOjo9CQkJCQkJQ0hPSUNFIHsKKwlkbC1BTS1STEMtTW9kZQkJCQkJCURMLUFNLVJMQy1Nb2RlLAorCWRsLVVNLVJMQy1Nb2RlCQkJCQkJTlVMTCwKKwlkbC1UTS1STEMtTW9kZQkJCQkJCURMLVRNLVJMQy1Nb2RlCit9CisKK0RMLVJMQy1Nb2RlLXI1IDo6PQkJCQkJQ0hPSUNFIHsKKwlkbC1BTS1STEMtTW9kZQkJCQkJCURMLUFNLVJMQy1Nb2RlLXI1LAorCWRsLVVNLVJMQy1Nb2RlCQkJCQkJREwtVU0tUkxDLU1vZGUtcjUsCisJZGwtVE0tUkxDLU1vZGUJCQkJCQlETC1UTS1STEMtTW9kZQorfQorCitETC1STEMtTW9kZS1yNiA6Oj0JCQkJCUNIT0lDRSB7CisJZGwtQU0tUkxDLU1vZGUJCQkJCQlETC1BTS1STEMtTW9kZS1yNSwKKwlkbC1VTS1STEMtTW9kZQkJCQkJCURMLVVNLVJMQy1Nb2RlLXI2LAorCWRsLVRNLVJMQy1Nb2RlCQkJCQkJREwtVE0tUkxDLU1vZGUKK30KKworREwtUkxDLVN0YXR1c0luZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwl0aW1lclN0YXR1c1Byb2hpYml0CQkJCQlUaW1lclN0YXR1c1Byb2hpYml0CQkJCQlPUFRJT05BTCwKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZCBub3QgYmUgc2VudCAKKwktLSBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQlUaW1lckVQQwkJCQkJCQlPUFRJT05BTCwKKwltaXNzaW5nUERVLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwl0aW1lclN0YXR1c1BlcmlvZGljCQkJCQlUaW1lclN0YXR1c1BlcmlvZGljCQkJCQlPUFRJT05BTAorfQorCitETC1UTS1STEMtTW9kZSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlzZWdtZW50YXRpb25JbmRpY2F0aW9uCQkJCQlCT09MRUFOCit9CisKK0RMLVRyYW5zcG9ydENoYW5uZWxUeXBlIDo6PQkJCUNIT0lDRSB7CisJZGNoCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWZhY2gJCQkJCQkJCU5VTEwsCisJLS0gVGhlIGNob2ljZSDSZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQKKwktLSB0aGUgVUUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkLgorCWRzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwktLSBUaGUgY2hvaWNlINJkY2gtYW5kLWRzY2jTIHNob3VsZCBub3QgYmUgdXNlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRQorCS0tIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCWRjaC1hbmQtZHNjaAkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eURDSGFuZERTQ0gKK30KKworREwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUtcjUgOjo9CQkJQ0hPSUNFIHsKKwlkY2gJCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJZmFjaAkJCQkJCQkJTlVMTCwKKwktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQuCisJZHNjaAkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCS0tIFRoZSBjaG9pY2Ug0mRjaC1hbmQtZHNjaNMgc2hvdWxkIG5vdCBiZSB1c2VkIGluIEZERCBtb2RlLCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIAorCS0tIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZAorCWRjaC1hbmQtZHNjaAkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eURDSGFuZERTQ0gsCisJaHNkc2NoCQkJCQkJCQlNQUMtZC1GbG93SWRlbnRpdHksCisJZGNoLWFuZC1oc2RzY2gJCQkJCQlNQUMtZC1GbG93SWRlbnRpdHlEQ0hhbmRIU0RTQ0gKK30KKworREwtVU0tUkxDLUxJLXNpemUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzaXplNywgc2l6ZTE1IH0KKworREwtVU0tUkxDLU1vZGUtcjUgOjo9CQkJCQlTRVFVRU5DRSB7CisJZGwtVU0tUkxDLUxJLXNpemUJCQkJCURMLVVNLVJMQy1MSS1zaXplCit9CisKK0RMLVVNLVJMQy1Nb2RlLXI2IDo6PQkJCQlTRVFVRU5DRSB7CisJZGwtVU0tUkxDLUxJLXNpemUJCQkJCURMLVVNLVJMQy1MSS1zaXplLAorCWRsLVJlY2VwdGlvbi1XaW5kb3ctU2l6ZQkJCURMLVJlY2VwdGlvbi1XaW5kb3ctU2l6ZS1yNgkJCU9QVElPTkFMCit9CisKK0V4cGVjdFJlb3JkZXJpbmcgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXJlb3JkZXJpbmdOb3RFeHBlY3RlZCwKKwkJCQkJCQkJCQlyZW9yZGVyaW5nRXhwZWN0ZWQgfQorCitFeHBsaWNpdERpc2NhcmQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGltZXJNUlcJCQkJCQkJVGltZXJNUlcsCisJdGltZXJEaXNjYXJkCQkJCQkJVGltZXJEaXNjYXJkLAorCW1heE1SVwkJCQkJCQkJTWF4TVJXCit9CisKK0hlYWRlckNvbXByZXNzaW9uSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJYWxnb3JpdGhtU3BlY2lmaWNJbmZvCQkJCUFsZ29yaXRobVNwZWNpZmljSW5mbworfQorCitIZWFkZXJDb21wcmVzc2lvbkluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEQ1BBbGdvVHlwZSkpIE9GCisJCQkJCQkJCQkJSGVhZGVyQ29tcHJlc3Npb25JbmZvCisKK0hlYWRlckNvbXByZXNzaW9uSW5mby1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlhbGdvcml0aG1TcGVjaWZpY0luZm8JCQkJQWxnb3JpdGhtU3BlY2lmaWNJbmZvLXI0Cit9CisKK0hlYWRlckNvbXByZXNzaW9uSW5mb0xpc3QtcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRENQQWxnb1R5cGUpKSBPRgorCQkJCQkJCQkJCUhlYWRlckNvbXByZXNzaW9uSW5mby1yNAorCitMb2dpY2FsQ2hhbm5lbElkZW50aXR5IDo6PQkJCUlOVEVHRVIgKDEuLjE1KQorCitMb3NzbGVzc1NSTlMtUmVsb2NTdXBwb3J0IDo6PQkJQ0hPSUNFIHsKKwlzdXBwb3J0ZWQJCQkJCQkJTWF4UERDUC1TTi1XaW5kb3dTaXplLAorCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwKK30KKworTUFDLWQtSEZOLWluaXRpYWwtdmFsdWUgOjo9CQkJQklUIFNUUklORyAoU0laRSAoMjQpKQorCitNQUMtTG9naWNhbENoYW5uZWxQcmlvcml0eSA6Oj0gCQlJTlRFR0VSICgxLi44KQorCitNYXhEQVQgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWRhdDEsIGRhdDIsIGRhdDMsIGRhdDQsIGRhdDUsIGRhdDYsCisJCQkJCQkJCQkJZGF0NywgZGF0OCwgZGF0OSwgZGF0MTAsIGRhdDE1LCBkYXQyMCwKKwkJCQkJCQkJCQlkYXQyNSwgZGF0MzAsIGRhdDM1LCBkYXQ0MCB9CisKK01heERBVC1SZXRyYW5zbWlzc2lvbnMgOjo9CQkJU0VRVUVOQ0UgeworCW1heERBVAkJCQkJCQkJTWF4REFULAorCXRpbWVyTVJXCQkJCQkJCVRpbWVyTVJXLAorCW1heE1SVwkJCQkJCQkJTWF4TVJXCit9CisKK01heE1SVyA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbW0xLCBtbTQsIG1tNiwgbW04LCBtbTEyLCBtbTE2LAorCQkJCQkJCQkJCW1tMjQsIG1tMzIgfQorCitNYXhQRENQLVNOLVdpbmRvd1NpemUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc24yNTUsIHNuNjU1MzUgfQorCitNYXhSU1QgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXJzdDEsIHJzdDQsIHJzdDYsIHJzdDgsIHJzdDEyLAorCQkJCQkJCQkJCXJzdDE2LCByc3QyNCwgcnN0MzIgfQorCitOb0V4cGxpY2l0RGlzY2FyZCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZHQxMCwgZHQyMCwgZHQzMCwgZHQ0MCwgZHQ1MCwKKwkJCQkJCQkJCQlkdDYwLCBkdDcwLCBkdDgwLCBkdDkwLCBkdDEwMCB9CisKK1BEQ1AtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJbG9zc2xlc3NTUk5TLVJlbG9jU3VwcG9ydAkJCUxvc3NsZXNzU1JOUy1SZWxvY1N1cHBvcnQJCQlPUFRJT05BTCwKKwktLSBUQUJVTEFSOiBwZGNwLVBEVS1IZWFkZXIgaXMgTUQgaW4gdGhlIHRhYnVsYXIgZm9ybWF0IGFuZCBpdCBjYW4gYmUgZW5jb2RlZAorCS0tIGluIG9uZSBiaXQsIHNvIHRoZSBPUFRJT05BTCBpcyByZW1vdmVkIGZvciBjb21wYWN0bmVzcy4KKwlwZGNwLVBEVS1IZWFkZXIJCQkJCQlQRENQLVBEVS1IZWFkZXIsCisJaGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdAkJCUhlYWRlckNvbXByZXNzaW9uSW5mb0xpc3QJCQlPUFRJT05BTAorfQorCitQRENQLUluZm8tcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJbG9zc2xlc3NTUk5TLVJlbG9jU3VwcG9ydAkJCUxvc3NsZXNzU1JOUy1SZWxvY1N1cHBvcnQJCQlPUFRJT05BTCwKKwktLSBUQUJVTEFSOiBwZGNwLVBEVS1IZWFkZXIgaXMgTUQgaW4gdGhlIHRhYnVsYXIgZm9ybWF0IGFuZCBpdCBjYW4gYmUgZW5jb2RlZAorCS0tIGluIG9uZSBiaXQsIHNvIHRoZSBPUFRJT05BTCBpcyByZW1vdmVkIGZvciBjb21wYWN0bmVzcy4KKwlwZGNwLVBEVS1IZWFkZXIJCQkJCQlQRENQLVBEVS1IZWFkZXIsCisJaGVhZGVyQ29tcHJlc3Npb25JbmZvTGlzdAkJCUhlYWRlckNvbXByZXNzaW9uSW5mb0xpc3QtcjQJCU9QVElPTkFMCit9CisKK1BEQ1AtSW5mb1JlY29uZmlnIDo6PQkJCQlTRVFVRU5DRSB7CisJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mbywKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJLS0gaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQorfQorCitQRENQLUluZm9SZWNvbmZpZy1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mby1yNAorfQorCitQRENQLVBEVS1IZWFkZXIgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwcmVzZW50LCBhYnNlbnQgfQorCitQRENQLVJPSEMtVGFyZ2V0TW9kZSA6Oj0JCQlFTlVNRVJBVEVEIHsgby1Nb2RlLCByLU1vZGUgfQorCitQRENQLVNOLUluZm8gOjo9CQkJCQlJTlRFR0VSICgwLi42NTUzNSkKKworUG9sbC1QRFUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGR1MSwgcGR1MiwgcGR1NCwgcGR1OCwgcGR1MTYsIAorCQkJCQkJCQkJCXBkdTMyLCBwZHU2NCwgcGR1MTI4IH0KKworUG9sbC1TRFUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2R1MSwgc2R1NCwgc2R1MTYsIHNkdTY0IH0KKworUG9sbGluZ0luZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCXRpbWVyUG9sbFByb2hpYml0CQkJCQlUaW1lclBvbGxQcm9oaWJpdAkJCQkJT1BUSU9OQUwsCisJdGltZXJQb2xsCQkJCQkJCVRpbWVyUG9sbAkJCQkJCQlPUFRJT05BTCwKKwlwb2xsLVBEVQkJCQkJCQlQb2xsLVBEVQkJCQkJCQlPUFRJT05BTCwKKwlwb2xsLVNEVQkJCQkJCQlQb2xsLVNEVQkJCQkJCQlPUFRJT05BTCwKKwlsYXN0VHJhbnNtaXNzaW9uUERVLVBvbGwJCQlCT09MRUFOLAorCWxhc3RSZXRyYW5zbWlzc2lvblBEVS1Qb2xsCQkJQk9PTEVBTiwKKwlwb2xsV2luZG93CQkJCQkJCVBvbGxXaW5kb3cJCQkJCQkJT1BUSU9OQUwsCisJdGltZXJQb2xsUGVyaW9kaWMJCQkJCVRpbWVyUG9sbFBlcmlvZGljCQkJCQlPUFRJT05BTAorfQorCitQb2xsV2luZG93IDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXB3NTAsIHB3NjAsIHB3NzAsIHB3ODAsIHB3ODUsIAorCQkJCQkJCQkJCXB3OTAsIHB3OTUsIHB3OTkgfQorCitQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHkgOjo9CQlJTlRFR0VSICgwLi4xNSkKKworUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnIDo6PQkJSU5URUdFUiAoMC4uMTUpCisKK1ByZWRlZmluZWRSQi1Db25maWd1cmF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCXJlLUVzdGFibGlzaG1lbnRUaW1lcgkJCQlSZS1Fc3RhYmxpc2htZW50VGltZXIsCisJc3JiLUluZm9ybWF0aW9uTGlzdAkJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LAorCXJiLUluZm9ybWF0aW9uTGlzdAkJCQkJUkItSW5mb3JtYXRpb25TZXR1cExpc3QKK30KKworUHJlRGVmUmFkaW9Db25maWd1cmF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcHJlZGVmaW5lZFJCLUNvbmZpZ3VyYXRpb24JCQlQcmVkZWZpbmVkUkItQ29uZmlndXJhdGlvbiwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJcHJlRGVmVHJhbnNDaENvbmZpZ3VyYXRpb24JCQlQcmVEZWZUcmFuc0NoQ29uZmlndXJhdGlvbiwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlwcmVEZWZQaHlDaENvbmZpZ3VyYXRpb24JCQlQcmVEZWZQaHlDaENvbmZpZ3VyYXRpb24KK30KKworUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFIChtYXhQcmVkZWZDb25maWcpKSBPRgorCQkJCQkJCQkJCQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzSW5mbworCitQcmVkZWZpbmVkQ29uZmlnU3RhdHVzSW5mbyA6Oj0JCUNIT0lDRSB7CisJc3RvcmVkV2l0aFZhbHVlVGFnU2FtZUFzUHJldml1cwkJTlVMTCwKKwlvdGhlcgkJCQkJCQkJQ0hPSUNFIHsKKwkJbm90U3RvcmVkCQkJCQkJCU5VTEwsCisJCXN0b3JlZFdpdGhEaWZmZXJlbnRWYWx1ZVRhZwkJCVByZWRlZmluZWRDb25maWdWYWx1ZVRhZworCX0KK30KKworUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3RDb21wIDo6PSBTRVFVRU5DRSB7CisJc2V0c1dpdGhEaWZmZXJlbnRWYWx1ZVRhZwkJCVByZWRlZmluZWRDb25maWdTZXRzV2l0aERpZmZlcmVudFZhbHVlVGFnLAorCW90aGVyRW50cmllcwkJCQkJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0VmFyU3oJCQkJT1BUSU9OQUwKK30KKworUHJlZGVmaW5lZENvbmZpZ1NldHNXaXRoRGlmZmVyZW50VmFsdWVUYWcgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQkJCVByZWRlZmluZWRDb25maWdTZXRXaXRoRGlmZmVyZW50VmFsdWVUYWcKKworUHJlZGVmaW5lZENvbmZpZ1NldFdpdGhEaWZmZXJlbnRWYWx1ZVRhZyA6Oj0gU0VRVUVOQ0UgeworCXN0YXJ0UG9zaXRpb24JCQkJCQkJCUlOVEVHRVIgKDAuLjEwKQkJREVGQVVMVCAwLAorCS0tIG51bWJlck9mRW50cmllcwkJCQkJCQlJTlRFR0VSICg2Li4xNiksCisJLS0gbnVtYmVyT2ZFbnRyaWVzIGlzIGNvdmVyZWQgYnkgdGhlIHNpemUgb2YgdGhlIGxpc3QgaW4gSUUgUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnTGlzdAorCXZhbHVlVGFnTGlzdAkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnTGlzdAorfQorCisKK1ByZWRlZmluZWRDb25maWdWYWx1ZVRhZ0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UHJlZGVmQ29uZmlnKSkgT0YKKwkJCQkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnCisKK1ByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0VmFyU3ogOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UHJlZGVmQ29uZmlnKSkgT0YKKwkJCQkJCQkJCQkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0luZm8KKworUkFCLUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCXJhYi1JZGVudGl0eQkJCQkJCVJBQi1JZGVudGl0eSwKKwljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJbmFzLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IJCU5BUy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yCU9QVElPTkFMLAorCXJlLUVzdGFibGlzaG1lbnRUaW1lcgkJCQlSZS1Fc3RhYmxpc2htZW50VGltZXIKK30KKworUkFCLUluZm8tcjYtZXh0IDo6PQkJCQkJU0VRVUVOQ0UgeworCW1ibXMtU2Vzc2lvbklkZW50aXR5CQkJCU1CTVMtU2Vzc2lvbklkZW50aXR5CQkJCU9QVElPTkFMCit9CisKK1JBQi1JbmZvLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwlyYWItSWRlbnRpdHkJCQkJCQlSQUItSWRlbnRpdHksCisJbWJtcy1TZXNzaW9uSWRlbnRpdHkJCQkJTUJNUy1TZXNzaW9uSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJY24tRG9tYWluSWRlbnRpdHkJCQkJCUNOLURvbWFpbklkZW50aXR5LAorCW5hcy1TeW5jaHJvbmlzYXRpb24tSW5kaWNhdG9yCQlOQVMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJT1BUSU9OQUwsCisJcmUtRXN0YWJsaXNobWVudFRpbWVyCQkJCVJlLUVzdGFibGlzaG1lbnRUaW1lcgorfQorCitSQUItSW5mb3JtYXRpb25MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgorCQkJCQkJCQkJCVJBQi1JbmZvCisKK1JBQi1JbmZvcm1hdGlvbkxpc3QtcjYgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlSQUItSW5mby1yNgorCitSQUItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QgOjo9IAlTRVFVRU5DRSAoU0laRSAoMS4uIG1heFJBQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlSQUItSW5mb3JtYXRpb25SZWNvbmZpZworCitSQUItSW5mb3JtYXRpb25SZWNvbmZpZyA6Oj0JCQlTRVFVRU5DRSB7CisJcmFiLUlkZW50aXR5CQkJCQkJUkFCLUlkZW50aXR5LAorCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwluYXMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IKK30KKworUkFCLUluZm8tUG9zdCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJcmFiLUlkZW50aXR5CQkJCQkJUkFCLUlkZW50aXR5LAorCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwluYXMtU3luY2hyb25pc2F0aW9uLUluZGljYXRvcgkJTkFTLVN5bmNocm9uaXNhdGlvbi1JbmRpY2F0b3IJT1BUSU9OQUwKK30KKworUkFCLUluZm9ybWF0aW9uU2V0dXAgOjo9CQkJU0VRVUVOQ0UgeworCXJhYi1JbmZvCQkJCQkJCVJBQi1JbmZvLAorCXJiLUluZm9ybWF0aW9uU2V0dXBMaXN0CQkJCVJCLUluZm9ybWF0aW9uU2V0dXBMaXN0Cit9CisKK1JBQi1JbmZvcm1hdGlvblNldHVwLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlyYWItSW5mbwkJCQkJCQlSQUItSW5mbywKKwlyYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCQlSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNAorfQorCitSQUItSW5mb3JtYXRpb25TZXR1cC1yNSA6Oj0JCQlTRVFVRU5DRSB7CisJcmFiLUluZm8JCQkJCQkJUkFCLUluZm8sCisJcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCQkJUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUKK30KKworUkFCLUluZm9ybWF0aW9uU2V0dXAtcjYtZXh0IDo6PQkJU0VRVUVOQ0UgeworCXJhYi1JbmZvLXI2LWV4dAkJCQkJCVJBQi1JbmZvLXI2LWV4dAorfQorCitSQUItSW5mb3JtYXRpb25TZXR1cC1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJcmFiLUluZm8JCQkJCQkJUkFCLUluZm8tcjYsCisJcmItSW5mb3JtYXRpb25TZXR1cExpc3QJCQkJUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYKK30KKworUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlSQUItSW5mb3JtYXRpb25TZXR1cAorCitSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkFCc2V0dXApKSBPRgorCQkJCQkJCQkJCVJBQi1JbmZvcm1hdGlvblNldHVwLXI0CisKK1JBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQUJzZXR1cCkpIE9GCisJCQkJCQkJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXAtcjUKKworUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJBQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlSQUItSW5mb3JtYXRpb25TZXR1cC1yNgorCistLSBUaGUgSUUgJ1JBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNi1leHQnIHByb3ZpZGVzIGVsZW1lbnRzIG9mIGV4dGVuc2lvbiBpbmZvcm1hdGlvbiwgd2hpY2gKKy0tIGFyZSBhZGRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0aGUgSUUgJ1JBQi1JbmZvcm1hdGlvblNldHVwTGlzdC8tcjQvLXI1Jy4KK1JBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNi1leHQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhSQUJzZXR1cCkpIE9GCisJCQkJCQkJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXAtcjYtZXh0CisKK1JCLUFjdGl2YXRpb25UaW1lSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcmxjLVNlcXVlbmNlTnVtYmVyCQkJCQlSTEMtU2VxdWVuY2VOdW1iZXIKK30JCisKK1JCLUFjdGl2YXRpb25UaW1lSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUFjdGl2YXRpb25UaW1lSW5mbworCitSQi1DT1VOVC1DLUluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwljb3VudC1DLVVMCQkJCQkJCUNPVU5ULUMsCisJY291bnQtQy1ETAkJCQkJCQlDT1VOVC1DCit9CisKK1JCLUNPVU5ULUMtSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCYWxsUkFCcykpIE9GCisJCQkJCQkJCQkJUkItQ09VTlQtQy1JbmZvcm1hdGlvbgorCitSQi1DT1VOVC1DLU1TQi1JbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwljb3VudC1DLU1TQi1VTAkJCQkJCUNPVU5ULUMtTVNCLAorCWNvdW50LUMtTVNCLURMCQkJCQkJQ09VTlQtQy1NU0IKK30KKworUkItQ09VTlQtQy1NU0ItSW5mb3JtYXRpb25MaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJhbGxSQUJzKSkgT0YKKwkJCQkJCQkJCQlSQi1DT1VOVC1DLU1TQi1JbmZvcm1hdGlvbgorCitSQi1JZGVudGl0eSA6Oj0JCQkJCQlJTlRFR0VSICgxLi4zMikKKworUkItSWRlbnRpdHlMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JZGVudGl0eQorCitSQi1JbmZvcm1hdGlvbkFmZmVjdGVkIDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvCit9CisKK1JCLUluZm9ybWF0aW9uQWZmZWN0ZWQtcjUgOjo9CQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNQorfQorCitSQi1JbmZvcm1hdGlvbkFmZmVjdGVkLXI2IDo6PQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8tcjYKK30KKworUkItSW5mb3JtYXRpb25BZmZlY3RlZExpc3QgOjo9IAkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkCisKK1JCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI1IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkLXI1CisKK1JCLUluZm9ybWF0aW9uQWZmZWN0ZWRMaXN0LXI2IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvbkFmZmVjdGVkLXI2CisKK1JCLUluZm9ybWF0aW9uQ2hhbmdlZC1yNiA6Oj0JCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlyYi1DaGFuZ2UJCQkJCQkJQ0hPSUNFIHsKKwkJcmVsZWFzZQkJCQkJCQkJTlVMTCwKKwkJcmUtbWFwVG9EZWZhdWx0UmIJCQkJCVJCLUlkZW50aXR5CisJfQorfQorCitSQi1JbmZvcm1hdGlvbkNoYW5nZWRMaXN0LXI2IDo6PSAJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCisJCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uQ2hhbmdlZC1yNgorCitSQi1JbmZvcm1hdGlvblJlY29uZmlnIDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvUmVjb25maWcJCQkJCU9QVElPTkFMLAorCXBkY3AtU04tSW5mbwkJCQkJCVBEQ1AtU04tSW5mbwkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvCQkJCQkJCU9QVElPTkFMLAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8JCQkJCQlPUFRJT05BTCwKKwlyYi1TdG9wQ29udGludWUJCQkJCQlSQi1TdG9wQ29udGludWUJCQkJCQlPUFRJT05BTAorfQorCitSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI0IDo6PQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm9SZWNvbmZpZy1yNAkJCQlPUFRJT05BTCwKKwlwZGNwLVNOLUluZm8JCQkJCQlQRENQLVNOLUluZm8JCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mbwkJCQkJCQlPUFRJT05BTCwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvCQkJCQkJT1BUSU9OQUwsCisJcmItU3RvcENvbnRpbnVlCQkJCQkJUkItU3RvcENvbnRpbnVlCQkJCQkJT1BUSU9OQUwKK30KKworUkItSW5mb3JtYXRpb25SZWNvbmZpZy1yNSA6Oj0JCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvUmVjb25maWctcjQJCQkJT1BUSU9OQUwsCisJcGRjcC1TTi1JbmZvCQkJCQkJUERDUC1TTi1JbmZvCQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tcjUJCQkJCQkJT1BUSU9OQUwsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNQkJCQkJT1BUSU9OQUwsCisJcmItU3RvcENvbnRpbnVlCQkJCQkJUkItU3RvcENvbnRpbnVlCQkJCQkJT1BUSU9OQUwKK30KKworUkItSW5mb3JtYXRpb25SZWNvbmZpZy1yNiA6Oj0JCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvUmVjb25maWctcjQJCQkJT1BUSU9OQUwsCisJcGRjcC1TTi1JbmZvCQkJCQkJUERDUC1TTi1JbmZvCQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tcjYJCQkJCQkJT1BUSU9OQUwsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNgkJCQkJT1BUSU9OQUwsCisJcmItU3RvcENvbnRpbnVlCQkJCQkJUkItU3RvcENvbnRpbnVlCQkJCQkJT1BUSU9OQUwKK30KKworUkItSW5mb3JtYXRpb25SZWNvbmZpZ0xpc3QgOjo9IAkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnCisKK1JCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI0IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI0CisKK1JCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI1IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI1CisKK1JCLUluZm9ybWF0aW9uUmVjb25maWdMaXN0LXI2IDo6PSAJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCKSkgT0YKKwkJCQkJCQkJCQlSQi1JbmZvcm1hdGlvblJlY29uZmlnLXI2CisKK1JCLUluZm9ybWF0aW9uUmVsZWFzZUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVJCLUlkZW50aXR5CisKK1JCLUluZm9ybWF0aW9uU2V0dXAgOjo9CQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvCQkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mbworfQorCitSQi1JbmZvcm1hdGlvblNldHVwLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlwZGNwLUluZm8JCQkJCQkJUERDUC1JbmZvLXI0CQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZSwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvCit9CisKK1JCLUluZm9ybWF0aW9uU2V0dXAtcjUgOjo9CQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5LAorCXBkY3AtSW5mbwkJCQkJCQlQRENQLUluZm8tcjQJCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLXI1LAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8tcjUKK30KKworUkItSW5mb3JtYXRpb25TZXR1cC1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mby1yNAkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UtcjYsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNgorfQorCitSQi1JbmZvcm1hdGlvblNldHVwTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uU2V0dXAKKworUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uU2V0dXAtcjQKKworUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uU2V0dXAtcjUKKworUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJwZXJSQUIpKSBPRgorCQkJCQkJCQkJCVJCLUluZm9ybWF0aW9uU2V0dXAtcjYKKworUkItTWFwcGluZ0luZm8gOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkJNdXhPcHRpb25zKSkgT0YKKwkJCQkJCQkJCQlSQi1NYXBwaW5nT3B0aW9uCisKK1JCLU1hcHBpbmdJbmZvLXI1IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCTXV4T3B0aW9ucykpIE9GCisJCQkJCQkJCQkJUkItTWFwcGluZ09wdGlvbi1yNQorCitSQi1NYXBwaW5nSW5mby1yNiA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQk11eE9wdGlvbnMpKSBPRgorCQkJCQkJCQkJCVJCLU1hcHBpbmdPcHRpb24tcjYKKworUkItTWFwcGluZ09wdGlvbiA6Oj0gCQkJCVNFUVVFTkNFIHsKKwl1bC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5ncwkJCU9QVElPTkFMLAorCWRsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QJCURMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QJCU9QVElPTkFMCit9CisKK1JCLU1hcHBpbmdPcHRpb24tcjUgOjo9IAkJCQlTRVFVRU5DRSB7CisJdWwtTG9naWNhbENoYW5uZWxNYXBwaW5ncwkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MJCQlPUFRJT05BTCwKKwlkbC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0CQlETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0LXI1CQlPUFRJT05BTAorfQorCitSQi1NYXBwaW5nT3B0aW9uLXI2IDo6PSAJCQkJU0VRVUVOQ0UgeworCXVsLUxvZ2ljYWxDaGFubmVsTWFwcGluZ3MJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdzLXI2CQlPUFRJT05BTCwKKwlkbC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0CQlETC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdMaXN0LXI1CQlPUFRJT05BTAorfQorCitSQi1QRENQQ29udGV4dFJlbG9jYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXJiLUlkZW50aXR5CQkJCQkJCQlSQi1JZGVudGl0eSwKKwlkbC1SRkMzMDk1LUNvbnRleHQtUmVsb2NhdGlvbgkJCUJPT0xFQU4sCisJdWwtUkZDMzA5NS1Db250ZXh0LVJlbG9jYXRpb24JCQlCT09MRUFOCit9CisKK1JCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbkxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCYWxsUkFCcykpIE9GCisJCQkJCQkJCQkJCVJCLVBEQ1BDb250ZXh0UmVsb2NhdGlvbgorCitSQi1TdG9wQ29udGludWUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzdG9wUkIsIGNvbnRpbnVlUkIgfQorCitSQi1XaXRoUERDUC1JbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcGRjcC1TTi1JbmZvCQkJCQkJUERDUC1TTi1JbmZvCit9CisKK1JCLVdpdGhQRENQLUluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQmFsbFJBQnMpKSBPRgorCQkJCQkJCQkJCVJCLVdpdGhQRENQLUluZm8KKworUmVjZWl2aW5nV2luZG93U2l6ZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcncxLCBydzgsIHJ3MTYsIHJ3MzIsIHJ3NjQsIHJ3MTI4LCBydzI1NiwKKwkJCQkJCQkJCQlydzUxMiwgcnc3NjgsIHJ3MTAyNCwgcncxNTM2LCBydzIwNDcsIAorCQkJCQkJCQkJCXJ3MjU2MCwgcnczMDcyLCBydzM1ODQsIHJ3NDA5NSB9CisKK1JGQzI1MDctSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlmLU1BWC1QRVJJT0QJCQkJCQlJTlRFR0VSICgxLi42NTUzNSkJCQkJCURFRkFVTFQgMjU2LAorCWYtTUFYLVRJTUUJCQkJCQkJSU5URUdFUiAoMS4uMjU1KQkJCQkJREVGQVVMVCA1LAorCW1heC1IRUFERVIJCQkJCQkJSU5URUdFUiAoNjAuLjY1NTM1KQkJCQkJREVGQVVMVCAxNjgsCisJdGNwLVNQQUNFCQkJCQkJCUlOVEVHRVIgKDMuLjI1NSkJCQkJCURFRkFVTFQgMTUsCisJbm9uLVRDUC1TUEFDRQkJCQkJCUlOVEVHRVIgKDMuLjY1NTM1KQkJCQkJREVGQVVMVCAxNSwKKwktLSBUQUJVTEFSOiBleHBlY3RSZW9yZGVyaW5nIGhhcyBvbmx5IHR3byBwb3NzaWJsZSB2YWx1ZXMsIHNvIHVzaW5nIE9wdGlvbmFsIG9yIERlZmF1bHQKKwktLSB3b3VsZCBiZSB3YXN0ZWZ1bAorCWV4cGVjdFJlb3JkZXJpbmcJCQkJCUV4cGVjdFJlb3JkZXJpbmcKK30KKworUkZDMzA5NS1JbmZvLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJcm9oY1Byb2ZpbGVMaXN0CQkJCQkJUk9IQy1Qcm9maWxlTGlzdC1yNCwKKwl1bC1SRkMzMDk1CQkJCQkJCVVMLVJGQzMwOTUtcjQJCQkJCQlPUFRJT05BTCwKKwlkbC1SRkMzMDk1CQkJCQkJCURMLVJGQzMwOTUtcjQJCQkJCQlPUFRJT05BTAorfQorCitSTEMtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdWwtUkxDLU1vZGUJCQkJCQkJVUwtUkxDLU1vZGUJCQkJCQkJT1BUSU9OQUwsCisJZGwtUkxDLU1vZGUJCQkJCQkJREwtUkxDLU1vZGUJCQkJCQkJT1BUSU9OQUwKK30KKworUkxDLUluZm8tcjUgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXVsLVJMQy1Nb2RlCQkJCQkJCVVMLVJMQy1Nb2RlCQkJCQkJCU9QVElPTkFMLAorCWRsLVJMQy1Nb2RlCQkJCQkJCURMLVJMQy1Nb2RlLXI1CQkJCQkJT1BUSU9OQUwsCisJcmxjLU9uZVNpZGVkUmVFc3QJCQkJCUJPT0xFQU4KK30KKworUkxDLUluZm8tcjYgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXVsLVJMQy1Nb2RlCQkJCQkJCVVMLVJMQy1Nb2RlCQkJCQkJCU9QVElPTkFMLAorCWRsLVJMQy1Nb2RlCQkJCQkJCURMLVJMQy1Nb2RlLXI2CQkJCQkJT1BUSU9OQUwsCisJcmxjLU9uZVNpZGVkUmVFc3QJCQkJCUJPT0xFQU4sCisJYWx0RS1iaXRJbnRlcnByZXRhdGlvbgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQlPUFRJT05BTAorfQorCitSTEMtSW5mby1NQ0NILXI2IDo6PQkJCQlTRVFVRU5DRSB7CisJZGwtVU0tUkxDLUxJLXNpemUJCQkJCURMLVVNLVJMQy1MSS1zaXplLAorCWRsLVVNLVJMQy1PdXRPU2VxRGVsaXZlcnktSW5mbwkJVU0tUkxDLU91dE9TZXFEZWxpdmVyeS1JbmZvLXI2CQlPUFRJT05BTAorfQorCitSTEMtSW5mby1NU0NILXI2IDo6PQkJCQlTRVFVRU5DRSB7CisJZGwtVU0tUkxDLUxJLXNpemUJCQkJCURMLVVNLVJMQy1MSS1zaXplCit9CisKK1JMQy1JbmZvLU1UQ0gtcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1VTS1STEMtTEktc2l6ZQkJCQkJREwtVU0tUkxDLUxJLXNpemUsCisJZGwtVU0tUkxDLUR1cGxBdm9pZC1SZW9yZC1JbmZvCQlVTS1STEMtRHVwbEF2b2lkLVJlb3JkLUluZm8tcjYJCU9QVElPTkFMCit9CisKK1JMQy1JbmZvQ2hvaWNlIDo6PQkJCQkJQ0hPSUNFIHsKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mbywKKwlzYW1lLWFzLVJCCQkJCQkJCVJCLUlkZW50aXR5Cit9CisKK1JMQy1JbmZvQ2hvaWNlLXI1IDo6PQkJCQlDSE9JQ0UgeworCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvLXI1LAorCXNhbWUtYXMtUkIJCQkJCQkJUkItSWRlbnRpdHkKK30KKworUkxDLUluZm9DaG9pY2UtcjYgOjo9CQkJCUNIT0lDRSB7CisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tcjYsCisJc2FtZS1hcy1SQgkJCQkJCQlSQi1JZGVudGl0eQorfQorCitSTEMtUERVLVNpemUgOjo9CQkJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQorCitSTEMtUERVLVNpemVMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkxDUERVc2l6ZVBlckxvZ0NoYW4pKSBPRgorCQkJCQkJCQkJCVJMQy1QRFUtU2l6ZQorCitSTEMtU2VxdWVuY2VOdW1iZXIgOjo9CQkJCUlOVEVHRVIgKDAuLjQwOTUpCisKK1JMQy1TaXplSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlybGMtU2l6ZUluZGV4CQkJCQkJSU5URUdFUiAoMS4ubWF4VEYpCit9CisKK1JMQy1TaXplRXhwbGljaXRMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFCSgxLi5tYXhURikpCU9GCisJCQkJCQkJCQkJUkxDLVNpemVJbmZvCisKK1JPSEMtUHJvZmlsZS1yNCA6Oj0JCQkJCUlOVEVHRVIgKDEuLjMpCisKK1JPSEMtUHJvZmlsZUxpc3QtcjQgOjo9CQkJCVNFUVVFTkNFIChTSVpFCSgxLi5tYXhST0hDLVByb2ZpbGUtcjQpKQlPRgorCQkJCQkJCQkJCVJPSEMtUHJvZmlsZS1yNAorCitST0hDLVBhY2tldFNpemUtcjQgOjo9CQkJCUlOVEVHRVIgKDIuLjE1MDApCisKK1JPSEMtUGFja2V0U2l6ZUxpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUJKDEuLm1heFJPSEMtUGFja2V0U2l6ZXMtcjQpKQlPRgorCQkJCQkJCQkJCVJPSEMtUGFja2V0U2l6ZS1yNAorCitTUkItSW5mb3JtYXRpb25TZXR1cCA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHJiLUlkZW50aXR5IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSBub3QgdXNlZCB5ZXQuCisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCisJcmxjLUluZm9DaG9pY2UJCQkJCQlSTEMtSW5mb0Nob2ljZSwKKwlyYi1NYXBwaW5nSW5mbwkJCQkJCVJCLU1hcHBpbmdJbmZvCit9CisKK1NSQi1JbmZvcm1hdGlvblNldHVwLXI1IDo6PQkJCVNFUVVFTkNFIHsKKwktLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgcmItSWRlbnRpdHkgaXMgdGhlIHNtYWxsZXN0IHZhbHVlIG5vdCB1c2VkIHlldC4KKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eQkJCQkJCQlPUFRJT05BTCwKKwlybGMtSW5mb0Nob2ljZQkJCQkJCVJMQy1JbmZvQ2hvaWNlLXI1LAorCXJiLU1hcHBpbmdJbmZvCQkJCQkJUkItTWFwcGluZ0luZm8tcjUKK30KKworU1JCLUluZm9ybWF0aW9uU2V0dXAtcjYgOjo9CQkJU0VRVUVOQ0UgeworCS0tIFRoZSBkZWZhdWx0IHZhbHVlIGZvciByYi1JZGVudGl0eSBpcyB0aGUgc21hbGxlc3QgdmFsdWUgbm90IHVzZWQgeWV0LgorCXJiLUlkZW50aXR5CQkJCQkJCVJCLUlkZW50aXR5CQkJCQkJCU9QVElPTkFMLAorCXJsYy1JbmZvQ2hvaWNlCQkJCQkJUkxDLUluZm9DaG9pY2UtcjYsCisJcmItTWFwcGluZ0luZm8JCQkJCQlSQi1NYXBwaW5nSW5mby1yNgorfQorCitTUkItSW5mb3JtYXRpb25TZXR1cExpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U1JCc2V0dXApKSBPRgorCQkJCQkJCQkJCVNSQi1JbmZvcm1hdGlvblNldHVwCisKK1NSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTUkJzZXR1cCkpIE9GCisJCQkJCQkJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXAtcjUKKworU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNSQnNldHVwKSkgT0YKKwkJCQkJCQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cC1yNgorCitTUkItSW5mb3JtYXRpb25TZXR1cExpc3QyIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDMuLjQpKSBPRgorCQkJCQkJCQkJCVNSQi1JbmZvcm1hdGlvblNldHVwCisKK1NSQi1JbmZvcm1hdGlvblNldHVwTGlzdDItcjYgOjo9CVNFUVVFTkNFIChTSVpFICgzLi40KSkgT0YKKwkJCQkJCQkJCQlTUkItSW5mb3JtYXRpb25TZXR1cC1yNgorCitUaW1lckRBUi1yNiA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltczQwLCBtczgwLCBtczEyMCwgbXMxNjAsIG1zMjQwLCBtczMyMCwgbXM0ODAsIG1zNjQwLAorCQkJCQkJCQkJCW1zOTYwLCBtczEyODAsIG1zMTkyMCwgbXMyNTYwLCBtczM4NDAsIG1zNTEyMCB9CisKK1RpbWVyRGlzY2FyZCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRkMC0xLCB0ZDAtMjUsIHRkMC01LCB0ZDAtNzUsCisJCQkJCQkJCQkJdGQxLCB0ZDEtMjUsIHRkMS01LCB0ZDEtNzUsCisJCQkJCQkJCQkJdGQyLCB0ZDItNSwgdGQzLCB0ZDMtNSwgdGQ0LAorCQkJCQkJCQkJCXRkNC01LCB0ZDUsIHRkNy01IH0KKworVGltZXJFUEMgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGU1MCwgdGU2MCwgdGU3MCwgdGU4MCwgdGU5MCwKKwkJCQkJCQkJCQl0ZTEwMCwgdGUxMjAsIHRlMTQwLCB0ZTE2MCwgdGUxODAsCisJCQkJCQkJCQkJdGUyMDAsIHRlMzAwLCB0ZTQwMCwgdGU1MDAsIHRlNzAwLAorCQkJCQkJCQkJCXRlOTAwIH0KKworVGltZXJNUlcgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGU1MCwgdGU2MCwgdGU3MCwgdGU4MCwgdGU5MCwgdGUxMDAsIAorCQkJCQkJCQkJCXRlMTIwLCB0ZTE0MCwgdGUxNjAsIHRlMTgwLCB0ZTIwMCwgCisJCQkJCQkJCQkJdGUzMDAsIHRlNDAwLCB0ZTUwMCwgdGU3MDAsIHRlOTAwIH0KKworVGltZXJPU0QtcjYgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbXM0MCwgbXM4MCwgbXMxMjAsIG1zMTYwLCBtczI0MCwgbXMzMjAsIG1zNDgwLCBtczY0MCwKKwkJCQkJCQkJCQltczk2MCwgbXMxMjgwLCBtczE5MjAsIG1zMjU2MCwgbXMzODQwLCBtczUxMjAgfQorCitUaW1lclBvbGwgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHAxMCwgdHAyMCwgdHAzMCwgdHA0MCwgdHA1MCwKKwkJCQkJCQkJCQl0cDYwLCB0cDcwLCB0cDgwLCB0cDkwLCB0cDEwMCwKKwkJCQkJCQkJCQl0cDExMCwgdHAxMjAsIHRwMTMwLCB0cDE0MCwgdHAxNTAsCisJCQkJCQkJCQkJdHAxNjAsIHRwMTcwLCB0cDE4MCwgdHAxOTAsIHRwMjAwLAorCQkJCQkJCQkJCXRwMjEwLCB0cDIyMCwgdHAyMzAsIHRwMjQwLCB0cDI1MCwKKwkJCQkJCQkJCQl0cDI2MCwgdHAyNzAsIHRwMjgwLCB0cDI5MCwgdHAzMDAsCisJCQkJCQkJCQkJdHAzMTAsIHRwMzIwLCB0cDMzMCwgdHAzNDAsIHRwMzUwLAorCQkJCQkJCQkJCXRwMzYwLCB0cDM3MCwgdHAzODAsIHRwMzkwLCB0cDQwMCwKKwkJCQkJCQkJCQl0cDQxMCwgdHA0MjAsIHRwNDMwLCB0cDQ0MCwgdHA0NTAsCisJCQkJCQkJCQkJdHA0NjAsIHRwNDcwLCB0cDQ4MCwgdHA0OTAsIHRwNTAwLAorCQkJCQkJCQkJCXRwNTEwLCB0cDUyMCwgdHA1MzAsIHRwNTQwLCB0cDU1MCwKKwkJCQkJCQkJCQl0cDYwMCwgdHA2NTAsIHRwNzAwLCB0cDc1MCwgdHA4MDAsCisJCQkJCQkJCQkJdHA4NTAsIHRwOTAwLCB0cDk1MCwgdHAxMDAwIH0KKworVGltZXJQb2xsUGVyaW9kaWMgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRwZXIxMDAsIHRwZXIyMDAsIHRwZXIzMDAsIHRwZXI0MDAsCisJCQkJCQkJCQkJdHBlcjUwMCwgdHBlcjc1MCwgdHBlcjEwMDAsIHRwZXIyMDAwIH0KKworVGltZXJQb2xsUHJvaGliaXQgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRwcDEwLCB0cHAyMCwgdHBwMzAsIHRwcDQwLCB0cHA1MCwKKwkJCQkJCQkJCQl0cHA2MCwgdHBwNzAsIHRwcDgwLCB0cHA5MCwgdHBwMTAwLAorCQkJCQkJCQkJCXRwcDExMCwgdHBwMTIwLCB0cHAxMzAsIHRwcDE0MCwgdHBwMTUwLAorCQkJCQkJCQkJCXRwcDE2MCwgdHBwMTcwLCB0cHAxODAsIHRwcDE5MCwgdHBwMjAwLAorCQkJCQkJCQkJCXRwcDIxMCwgdHBwMjIwLCB0cHAyMzAsIHRwcDI0MCwgdHBwMjUwLAorCQkJCQkJCQkJCXRwcDI2MCwgdHBwMjcwLCB0cHAyODAsIHRwcDI5MCwgdHBwMzAwLAorCQkJCQkJCQkJCXRwcDMxMCwgdHBwMzIwLCB0cHAzMzAsIHRwcDM0MCwgdHBwMzUwLAorCQkJCQkJCQkJCXRwcDM2MCwgdHBwMzcwLCB0cHAzODAsIHRwcDM5MCwgdHBwNDAwLAorCQkJCQkJCQkJCXRwcDQxMCwgdHBwNDIwLCB0cHA0MzAsIHRwcDQ0MCwgdHBwNDUwLAorCQkJCQkJCQkJCXRwcDQ2MCwgdHBwNDcwLCB0cHA0ODAsIHRwcDQ5MCwgdHBwNTAwLAorCQkJCQkJCQkJCXRwcDUxMCwgdHBwNTIwLCB0cHA1MzAsIHRwcDU0MCwgdHBwNTUwLAorCQkJCQkJCQkJCXRwcDYwMCwgdHBwNjUwLCB0cHA3MDAsIHRwcDc1MCwgdHBwODAwLAorCQkJCQkJCQkJCXRwcDg1MCwgdHBwOTAwLCB0cHA5NTAsIHRwcDEwMDAgfQorCitUaW1lclJTVCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0cjUwLCB0cjEwMCwgdHIxNTAsIHRyMjAwLCB0cjI1MCwgdHIzMDAsIAorCQkJCQkJCQkJCXRyMzUwLCB0cjQwMCwgdHI0NTAsIHRyNTAwLCB0cjU1MCwKKwkJCQkJCQkJCQl0cjYwMCwgdHI3MDAsIHRyODAwLCB0cjkwMCwgdHIxMDAwIH0KKworVGltZXJTdGF0dXNQZXJpb2RpYyA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHNwMTAwLCB0c3AyMDAsCXRzcDMwMCwgdHNwNDAwLCB0c3A1MDAsCisJCQkJCQkJCQkJdHNwNzUwLCB0c3AxMDAwLCB0c3AyMDAwIH0KKworVGltZXJTdGF0dXNQcm9oaWJpdCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHNwMTAsdHNwMjAsdHNwMzAsdHNwNDAsdHNwNTAsCisJCQkJCQkJCQkJdHNwNjAsdHNwNzAsdHNwODAsdHNwOTAsdHNwMTAwLAorCQkJCQkJCQkJCXRzcDExMCx0c3AxMjAsdHNwMTMwLHRzcDE0MCx0c3AxNTAsCisJCQkJCQkJCQkJdHNwMTYwLHRzcDE3MCx0c3AxODAsdHNwMTkwLHRzcDIwMCwKKwkJCQkJCQkJCQl0c3AyMTAsdHNwMjIwLHRzcDIzMCx0c3AyNDAsdHNwMjUwLAorCQkJCQkJCQkJCXRzcDI2MCx0c3AyNzAsdHNwMjgwLHRzcDI5MCx0c3AzMDAsCisJCQkJCQkJCQkJdHNwMzEwLHRzcDMyMCx0c3AzMzAsdHNwMzQwLHRzcDM1MCwKKwkJCQkJCQkJCQl0c3AzNjAsdHNwMzcwLHRzcDM4MCx0c3AzOTAsdHNwNDAwLAorCQkJCQkJCQkJCXRzcDQxMCx0c3A0MjAsdHNwNDMwLHRzcDQ0MCx0c3A0NTAsCisJCQkJCQkJCQkJdHNwNDYwLHRzcDQ3MCx0c3A0ODAsdHNwNDkwLHRzcDUwMCwKKwkJCQkJCQkJCQl0c3A1MTAsdHNwNTIwLHRzcDUzMCx0c3A1NDAsdHNwNTUwLAorCQkJCQkJCQkJCXRzcDYwMCx0c3A2NTAsdHNwNzAwLHRzcDc1MCx0c3A4MDAsCisJCQkJCQkJCQkJdHNwODUwLHRzcDkwMCx0c3A5NTAsdHNwMTAwMCB9CisKK1RyYW5zbWlzc2lvblJMQy1EaXNjYXJkIDo6PQkJCUNIT0lDRSB7CisJdGltZXJCYXNlZEV4cGxpY2l0CQkJCQlFeHBsaWNpdERpc2NhcmQsCisJdGltZXJCYXNlZE5vRXhwbGljaXQJCQkJTm9FeHBsaWNpdERpc2NhcmQsCisJbWF4REFULVJldHJhbnNtaXNzaW9ucwkJCQlNYXhEQVQtUmV0cmFuc21pc3Npb25zLAorCW5vRGlzY2FyZAkJCQkJCQlNYXhEQVQKK30KKworVHJhbnNtaXNzaW9uV2luZG93U2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0dzEsIHR3OCwgdHcxNiwgdHczMiwgdHc2NCwgdHcxMjgsIHR3MjU2LAorCQkJCQkJCQkJCXR3NTEyLCB0dzc2OCwgdHcxMDI0LCB0dzE1MzYsIHR3MjA0NywgCisJCQkJCQkJCQkJdHcyNTYwLCB0dzMwNzIsIHR3MzU4NCwgdHc0MDk1IH0KKworVUwtQU0tUkxDLU1vZGUgOjo9CQkJCQlTRVFVRU5DRSB7CisJdHJhbnNtaXNzaW9uUkxDLURpc2NhcmQJCQkJVHJhbnNtaXNzaW9uUkxDLURpc2NhcmQsCisJdHJhbnNtaXNzaW9uV2luZG93U2l6ZQkJCQlUcmFuc21pc3Npb25XaW5kb3dTaXplLAorCXRpbWVyUlNUCQkJCQkJCVRpbWVyUlNULAorCW1heC1SU1QJCQkJCQkJCU1heFJTVCwKKwlwb2xsaW5nSW5mbwkJCQkJCQlQb2xsaW5nSW5mbwkJCQkJCQlPUFRJT05BTAorfQorCitVTC1Db3VudGVyU3luY2hyb25pc2F0aW9uSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwlyQi1XaXRoUERDUC1JbmZvTGlzdAkJCQkJUkItV2l0aFBEQ1AtSW5mb0xpc3QgCU9QVElPTkFMLAorCXN0YXJ0TGlzdAkJCQkJCQkJU1RBUlRMaXN0Cit9CisKK1VMLUxvZ2ljYWxDaGFubmVsTWFwcGluZyA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSBjb250YWlucyBUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkgYXMgd2VsbC4KKwl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSwKKwlsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJcmxjLVNpemVMaXN0CQkJCQkJQ0hPSUNFIHsKKwkJYWxsU2l6ZXMJCQkJCQkJTlVMTCwKKwkJY29uZmlndXJlZAkJCQkJCQlOVUxMLAorCQlleHBsaWNpdExpc3QJCQkJCQlSTEMtU2l6ZUV4cGxpY2l0TGlzdAorCX0sCisJbWFjLUxvZ2ljYWxDaGFubmVsUHJpb3JpdHkJCQlNQUMtTG9naWNhbENoYW5uZWxQcmlvcml0eQorfQorCitVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmctcjYgOjo9CQlTRVFVRU5DRSB7CisJdWwtVHJDSC1UeXBlCQkJCQkJQ0hPSUNFIHsKKwkJZGNoLXJhY2gtdXNjaAkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIFRBQlVMQVI6IFVMLVRyYW5zcG9ydENoYW5uZWxUeXBlIGNvbnRhaW5zIFRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSBhcyB3ZWxsLgorCQkJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUsCisJCQlsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJCQlybGMtU2l6ZUxpc3QJCQkJCQlDSE9JQ0UgeworCQkJCWFsbFNpemVzCQkJCQkJCU5VTEwsCisJCQkJY29uZmlndXJlZAkJCQkJCQlOVUxMLAorCQkJCWV4cGxpY2l0TGlzdAkJCQkJCVJMQy1TaXplRXhwbGljaXRMaXN0CisJCQl9CisJCX0sCisJCWUtZGNoCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlsb2dpY2FsQ2hhbm5lbElkZW50aXR5CQkJCUxvZ2ljYWxDaGFubmVsSWRlbnRpdHksCisJCQllLURDSC1NQUMtZC1GbG93SWRlbnRpdHkJCQlFLURDSC1NQUMtZC1GbG93SWRlbnRpdHksCisJCQlkZGkJCQkJCQkJCQlEREksCisJCQlybGMtUERVLVNpemVMaXN0CQkJCQlSTEMtUERVLVNpemVMaXN0LAorCQkJaW5jbHVkZUluU2NoZWR1bGluZ0luZm8JCQkJQk9PTEVBTgorCQl9CisJfSwKKwltYWMtTG9naWNhbENoYW5uZWxQcmlvcml0eQkJCU1BQy1Mb2dpY2FsQ2hhbm5lbFByaW9yaXR5Cit9CisKK1VMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QgOjo9CVNFUVVFTkNFIHsKKwktLSBybGMtTG9naWNhbENoYW5uZWxNYXBwaW5nSW5kaWNhdG9yIHNoYWxsIGJlIHNldCB0byBUUlVFIGluIHRoaXMgdmVyc2lvbgorCS0tIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJcmxjLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0luZGljYXRvcglCT09MRUFOLAorCXVsLUxvZ2ljYWxDaGFubmVsTWFwcGluZwkJCVNFUVVFTkNFIChTSVpFIChtYXhMb0NIcGVyUkxDKSkgT0YKKwkJCQkJCQkJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmcKK30KKworVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgeworCS0tIHJsYy1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmdJbmRpY2F0b3Igc2hhbGwgYmUgc2V0IHRvIFRSVUUgaW4gdGhpcyB2ZXJzaW9uCisJLS0gb2YgdGhlIHNwZWNpZmljYXRpb24KKwlybGMtTG9naWNhbENoYW5uZWxNYXBwaW5nSW5kaWNhdG9yCUJPT0xFQU4sCisJdWwtTG9naWNhbENoYW5uZWxNYXBwaW5nCQkJU0VRVUVOQ0UgKFNJWkUgKG1heExvQ0hwZXJSTEMpKSBPRgorCQkJCQkJCQkJCQlVTC1Mb2dpY2FsQ2hhbm5lbE1hcHBpbmctcjYKK30KKworVUwtTG9naWNhbENoYW5uZWxNYXBwaW5ncyA6Oj0JCUNIT0lDRSB7CisJb25lTG9naWNhbENoYW5uZWwJCQkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZywKKwl0d29Mb2dpY2FsQ2hhbm5lbHMJCQkJCVVMLUxvZ2ljYWxDaGFubmVsTWFwcGluZ0xpc3QKK30KKworVUwtTG9naWNhbENoYW5uZWxNYXBwaW5ncy1yNiA6Oj0JQ0hPSUNFIHsKKwlvbmVMb2dpY2FsQ2hhbm5lbAkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nLXI2LAorCXR3b0xvZ2ljYWxDaGFubmVscwkJCQkJVUwtTG9naWNhbENoYW5uZWxNYXBwaW5nTGlzdC1yNgorfQorCitVTC1SRkMzMDk1LXI0IDo6PQkJCQkJU0VRVUVOQ0UgeworCWNpZC1JbmNsdXNpb25JbmZvCQkJCQlDSUQtSW5jbHVzaW9uSW5mby1yNCwKKwltYXgtQ0lECQkJCQkJCQlJTlRFR0VSICgxLi4xNjM4MykJCQkJCURFRkFVTFQgMTUsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCS0tIGl0IHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRoZSByZWNlaXZlci4KKwlkdW1teQkJCQkJCQkJUk9IQy1QYWNrZXRTaXplTGlzdC1yNAorfQorCitVTC1STEMtTW9kZSA6Oj0JCQkJCQlDSE9JQ0UgeworCXVsLUFNLVJMQy1Nb2RlCQkJCQkJVUwtQU0tUkxDLU1vZGUsCisJdWwtVU0tUkxDLU1vZGUJCQkJCQlVTC1VTS1STEMtTW9kZSwKKwl1bC1UTS1STEMtTW9kZQkJCQkJCVVMLVRNLVJMQy1Nb2RlLAorCXNwYXJlCQkJCQkJCQlOVUxMCit9CisKK1VMLVRNLVJMQy1Nb2RlIDo6PQkJCQkJU0VRVUVOQ0UgeworCXRyYW5zbWlzc2lvblJMQy1EaXNjYXJkCQkJCVRyYW5zbWlzc2lvblJMQy1EaXNjYXJkCQkJCU9QVElPTkFMLAorCXNlZ21lbnRhdGlvbkluZGljYXRpb24JCQkJQk9PTEVBTgorfQorCitVTC1VTS1STEMtTW9kZSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmFuc21pc3Npb25STEMtRGlzY2FyZAkJCQlUcmFuc21pc3Npb25STEMtRGlzY2FyZAkJCQlPUFRJT05BTAorfQorCitVTC1UcmFuc3BvcnRDaGFubmVsVHlwZSA6Oj0JCQlDSE9JQ0UgeworCWRjaAkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwlyYWNoCQkJCQkJCQlOVUxMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQKKwktLSBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCisJZHVtbXkJCQkJCQkJCU5VTEwsCisJdXNjaAkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5Cit9CisKK1VNLVJMQy1EdXBsQXZvaWQtUmVvcmQtSW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCXRpbWVyLURBUgkJCQkJCQlUaW1lckRBUi1yNiwKKwl3aWRvd1NpemUtREFSCQkJCQkJV2luZG93U2l6ZURBUi1yNgorfQorCitVTS1STEMtT3V0T1NlcURlbGl2ZXJ5LUluZm8tcjYgOjo9CVNFUVVFTkNFIHsKKwl0aW1lci1PU0QJCQkJCQkJVGltZXJPU0QtcjYJCQkJCQkJT1BUSU9OQUwsCisJd2luZG93U2l6ZS1PU0QJCQkJCQlXaW5kb3dTaXplT1NELXI2Cit9CisKK1dpbmRvd1NpemVEQVItcjYgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXdzNCwgd3M4LCB3czE2LCB3czMyLCB3czQwLCB3czQ4LAorCQkJCQkJCQkJCXdzNTYsIHdzNjQgfQorCitXaW5kb3dTaXplT1NELXI2IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl3czgsIHdzMTYsIHdzMzIsIHdzNDAsIHdzNDgsCisJCQkJCQkJCQkJd3M1Niwgd3M2NCB9CisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBUUkFOU1BPUlQgQ0hBTk5FTCBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy41KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBZGRPclJlY29uZk1BQy1kRmxvdyA6Oj0JCQlTRVFVRU5DRSB7CisJbWFjLWhzLUFkZFJlY29uZlF1ZXVlLUxpc3QJCQkJCU1BQy1ocy1BZGRSZWNvbmZRdWV1ZS1MaXN0CU9QVElPTkFMLAorCW1hYy1ocy1EZWxRdWV1ZS1MaXN0CQkJCQkJTUFDLWhzLURlbFF1ZXVlLUxpc3QJT1BUSU9OQUwKK30KKworQWxsb3dlZFRGQy1MaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQykpIE9GCisJCQkJCQkJCQkJVEZDLVZhbHVlCisKK0FsbG93ZWRURkktTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCisJCQkJCQkJCQkJSU5URUdFUiAoMC4uMzEpCisKK0JpdE1vZGVSTEMtU2l6ZUluZm8gOjo9CQkJCUNIT0lDRSB7CisJc2l6ZVR5cGUxCQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCisJLS0gQWN0dWFsIHZhbHVlIHNpemVUeXBlMiA9IChwYXJ0MSAqIDgpICsgMTI4ICsgcGFydDIKKwlzaXplVHlwZTIJCQkJCQkJU0VRVUVOQ0UgeworCQlwYXJ0MQkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uNykJCQkJCU9QVElPTkFMCisJfSwKKwktLSBBY3R1YWwgdmFsdWUgc2l6ZVR5cGUzID0gKHBhcnQxICogMTYpICsgMjU2ICsgcGFydDIKKwlzaXplVHlwZTMJCQkJCQkJU0VRVUVOQ0UgeworCQlwYXJ0MQkJCQkJCQkJSU5URUdFUiAoMC4uNDcpLAorCQlwYXJ0MgkJCQkJCQkJSU5URUdFUiAoMS4uMTUpCQkJCQlPUFRJT05BTAorCX0sCisJLS0gQWN0dWFsIHZhbHVlIHNpemVUeXBlNCA9IChwYXJ0MSAqIDY0KSArIDEwMjQgKyBwYXJ0MgorCXNpemVUeXBlNAkJCQkJCQlTRVFVRU5DRSB7CisJCXBhcnQxCQkJCQkJCQlJTlRFR0VSICgwLi42MiksCisJCXBhcnQyCQkJCQkJCQlJTlRFR0VSICgxLi42MykJCQkJCU9QVElPTkFMCisJfQorfQorCistLSBBY3R1YWwgdmFsdWUgQkxFUi1RdWFsaXR5VmFsdWUgPSBJRSB2YWx1ZSAqIDAuMQorQkxFUi1RdWFsaXR5VmFsdWUgOjo9CQkJCUlOVEVHRVIgKC02My4uMCkKKworQ2hhbm5lbENvZGluZ1R5cGUgOjo9CQkJCUNIT0lDRSB7IAorCS0tIG5vQ29kaW5nIGlzIG9ubHkgdXNlZCBmb3IgVEREIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwktLSBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIGlnbm9yZWQKKwlub0NvZGluZwkJCQkJCQlOVUxMLAorCWNvbnZvbHV0aW9uYWwJCQkJCQlDb2RpbmdSYXRlLAorCXR1cmJvCQkJCQkJCQlOVUxMIAorfQorCitDb2RpbmdSYXRlIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWhhbGYsCisJCQkJCQkJCQkJdGhpcmQgfQorCitDb21tb25EeW5hbWljVEYtSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJcmxjLVNpemUJCQkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJb2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTIJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljb21tb25UREQtQ2hvaWNlCQkJCQlDSE9JQ0UgeworCQkJCWJpdE1vZGVSTEMtU2l6ZUluZm8JCQkJCUJpdE1vZGVSTEMtU2l6ZUluZm8sCisJCQkJb2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQorCQkJfQorCQl9CisJfSwKKwludW1iZXJPZlRiU2l6ZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YJCQorCQkJCQkJCQkJCQlOdW1iZXJPZlRyYW5zcG9ydEJsb2NrcywKKwlsb2dpY2FsQ2hhbm5lbExpc3QJCQkJTG9naWNhbENoYW5uZWxMaXN0Cit9CisKK0NvbW1vbkR5bmFtaWNURi1JbmZvLUR5bmFtaWNUVEkgOjo9CVNFUVVFTkNFIHsKKwljb21tb25UREQtQ2hvaWNlCQkJCQlDSE9JQ0UgeworCQliaXRNb2RlUkxDLVNpemVJbmZvCQkJCQlCaXRNb2RlUkxDLVNpemVJbmZvLAorCQlvY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQkJCU9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUxCisJfSwKKwludW1iZXJPZlRiU2l6ZUFuZFRUSUxpc3QJCQlOdW1iZXJPZlRiU2l6ZUFuZFRUSUxpc3QsCisJbG9naWNhbENoYW5uZWxMaXN0CQkJCQlMb2dpY2FsQ2hhbm5lbExpc3QKK30KKworQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YKKwkJCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mbworCitDb21tb25EeW5hbWljVEYtSW5mb0xpc3QtRHluYW1pY1RUSSA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGKSkgT0YKKwkJCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mby1EeW5hbWljVFRJCisKK0NvbW1vblRyYW5zQ2hURlMgOjo9CQkJCVNFUVVFTkNFIHsKKwl0dGkJCQkJCQkJCQlDSE9JQ0UgeworCQl0dGkxMAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGkyMAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGk0MAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGk4MAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQlkeW5hbWljCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QtRHluYW1pY1RUSQorCX0sCisJc2VtaXN0YXRpY1RGLUluZm9ybWF0aW9uCQkJU2VtaXN0YXRpY1RGLUluZm9ybWF0aW9uCit9CisKK0NvbW1vblRyYW5zQ2hURlMtTENSIDo6PQkJCQlTRVFVRU5DRSB7CisJdHRpCQkJCQkJCQkJQ0hPSUNFIHsKKwkJdHRpNQkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGkxMAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGkyMAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGk0MAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQl0dGk4MAkJCQkJCQkJQ29tbW9uRHluYW1pY1RGLUluZm9MaXN0LAorCQlkeW5hbWljCQkJCQkJCQlDb21tb25EeW5hbWljVEYtSW5mb0xpc3QtRHluYW1pY1RUSQorCX0sCisJc2VtaXN0YXRpY1RGLUluZm9ybWF0aW9uCQkJU2VtaXN0YXRpY1RGLUluZm9ybWF0aW9uCit9CisKK0NQQ0gtU2V0SUQgOjo9CQkJCQkJSU5URUdFUiAoMS4ubWF4Q1BDSHNldHMpCisKK0NSQy1TaXplIDo6PQkJCQkJCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQljcmMwLCBjcmM4LCBjcmMxMiwgY3JjMTYsIGNyYzI0IH0KKworRGVkaWNhdGVkRHluYW1pY1RGLUluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXJsYy1TaXplCQkJCQkJCUNIT0lDRSB7CisJCWJpdE1vZGUJCQkJCQkJCUJpdE1vZGVSTEMtU2l6ZUluZm8sCisJCW9jdGV0TW9kZVR5cGUxCQkJCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEKKwl9LAorCW51bWJlck9mVGJTaXplTGlzdAkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYpKSBPRgkJCQkJCQkJCQlOdW1iZXJPZlRyYW5zcG9ydEJsb2NrcywKKwlsb2dpY2FsQ2hhbm5lbExpc3QJCQkJTG9naWNhbENoYW5uZWxMaXN0IAorfQorCitEZWRpY2F0ZWREeW5hbWljVEYtSW5mby1EeW5hbWljVFRJIDo6PSBTRVFVRU5DRSB7CisJcmxjLVNpemUJCQkJCQkJQ0hPSUNFIHsKKwkJYml0TW9kZQkJCQkJCQkJQml0TW9kZVJMQy1TaXplSW5mbywKKwkJb2N0ZXRNb2RlVHlwZTEJCQkJCQlPY3RldE1vZGVSTEMtU2l6ZUluZm9UeXBlMQorCX0sCisJbnVtYmVyT2ZUYlNpemVBbmRUVElMaXN0CQkJTnVtYmVyT2ZUYlNpemVBbmRUVElMaXN0LAorCWxvZ2ljYWxDaGFubmVsTGlzdAkJCQlMb2dpY2FsQ2hhbm5lbExpc3QgCit9CisKK0RlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCisJCQkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm8KKworRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GCisJCQkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm8tRHluYW1pY1RUSQorCitEZWRpY2F0ZWRUcmFuc0NoVEZTIDo6PQkJCQlTRVFVRU5DRSB7CisJdHRpCQkJCQkJCQkJQ0hPSUNFIHsKKwkJdHRpMTAJCQkJCQkJCURlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCwKKwkJdHRpMjAJCQkJCQkJCURlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCwKKwkJdHRpNDAJCQkJCQkJCURlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCwKKwkJdHRpODAJCQkJCQkJCURlZGljYXRlZER5bmFtaWNURi1JbmZvTGlzdCwKKwkJZHluYW1pYwkJCQkJCQkJRGVkaWNhdGVkRHluYW1pY1RGLUluZm9MaXN0LUR5bmFtaWNUVEkKKwl9LAorCXNlbWlzdGF0aWNURi1JbmZvcm1hdGlvbgkJCVNlbWlzdGF0aWNURi1JbmZvcm1hdGlvbgorfQorCistLSBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgREwtQWRkUmVjb25mVHJhbnNDaEluZm8yTGlzdCBzZXF1ZW5jZSBpcyAxNgorREwtQWRkUmVjb25mVHJhbnNDaEluZm8yTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0hwcmVjb25mKSkgT0YKKwkJCQkJCQkJCQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24yCisKKy0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3Qgc2VxdWVuY2UgaXMgMTYKK0RMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIcHJlY29uZikpIE9GCisJCQkJCQkJCQkJREwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uCisKKy0tIFRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvZiBETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjQgc2VxdWVuY2UgaXMgMTYKK0RMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0hwcmVjb25mKSkgT0YKKwkJCQkJCQkJCQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjQKKworLS0gVGhlIG1heGltdW0gYWxsb3dlZCBzaXplIG9mIERMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNSBzZXF1ZW5jZSBpcyAxNgorREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI1IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSHByZWNvbmYpKSBPRgorCQkJCQkJCQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbi1yNQorCistLSBBU04uMSBmb3IgSUUgIkFkZGVkIG9yIFJlY29uZmlndXJlZCBETCBUckNIIGluZm9ybWF0aW9uIiAKKy0tIGluIGNhc2Ugb2YgbWVzc2FnZXMgb3RoZXIgdGhhbjogUmFkaW8gQmVhcmVyIFJlbGVhc2UgbWVzc2FnZSBhbmQgCistLSBSYWRpbyBCZWFyZXIgUmVjb25maWd1cmF0aW9uIG1lc3NhZ2UKK0RMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbiA6Oj0gCVNFUVVFTkNFIHsKKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGUsCisJZGwtdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCXRmcy1TaWduYWxsaW5nTW9kZQkJCQkJQ0hPSUNFIHsKKwkJZXhwbGljaXQtY29uZmlnCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAorCQlzYW1lQXNVTFRyQ0gJCQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKwl9LAorCWRjaC1RdWFsaXR5VGFyZ2V0CQkJCQlRdWFsaXR5VGFyZ2V0CQkJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQgCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlUTS1TaWduYWxsaW5nSW5mbwkJCQkJT1BUSU9OQUwKK30KKworREwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uLXI0IDo6PSAJU0VRVUVOQ0UgeworCWRsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCURMLVRyQ0gtVHlwZSwKKwlkbC10cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJdGZzLVNpZ25hbGxpbmdNb2RlCQkJCQlDSE9JQ0UgeworCQlleHBsaWNpdC1jb25maWcJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJCXNhbWVBc1VMVHJDSAkJCQkJCVVMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorCX0sCisJZGNoLVF1YWxpdHlUYXJnZXQJCQkJCVF1YWxpdHlUYXJnZXQJCQkJCQlPUFRJT05BTAorfQorCitETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjUgOjo9IAlTRVFVRU5DRSB7CisJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJDSC1UeXBlSWQxLXI1LAorCXRmcy1TaWduYWxsaW5nTW9kZQkJCQkJQ0hPSUNFIHsKKwkJZXhwbGljaXQtY29uZmlnCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAorCQlzYW1lQXNVTFRyQ0gJCQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJCWhzZHNjaAkJCQkJCQkJSFNEU0NILUluZm8KKwl9LAorCWRjaC1RdWFsaXR5VGFyZ2V0CQkJCQlRdWFsaXR5VGFyZ2V0CQkJCQkJT1BUSU9OQUwKK30KKworLS0gQVNOLjEgZm9yIElFICJBZGRlZCBvciBSZWNvbmZpZ3VyZWQgREwgVHJDSCBpbmZvcm1hdGlvbiIgCistLSBpbiBjYXNlIG9mIFJhZGlvIEJlYXJlciBSZWxlYXNlIG1lc3NhZ2UgYW5kIAorLS0gUmFkaW8gQmVhcmVyIFJlY29uZmlndXJhdGlvbiBtZXNzYWdlCitETC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24yIDo6PSBTRVFVRU5DRSB7CisJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJDSC1UeXBlLAorCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwl0ZnMtU2lnbmFsbGluZ01vZGUJCQkJCUNIT0lDRSB7CisJCWV4cGxpY2l0LWNvbmZpZwkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKKwkJc2FtZUFzVUxUckNICQkJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CisJfSwKKwlxdWFsaXR5VGFyZ2V0CQkJCQkJUXVhbGl0eVRhcmdldAkJCQkJCU9QVElPTkFMCit9CisKK0RMLUNvbW1vblRyYW5zQ2hJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwlzY2NwY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKKwktLSBtb2RlU3BlY2lmaWNJbmZvIHNob3VsZCBiZSBvcHRpb25hbC4gQSBuZXcgdmVyc2lvbiBvZiB0aGlzIElFIHNob3VsZCBiZSBkZWZpbmVkIAorCS0tIHRvIGJlIHVzZWQgaW4gbGF0ZXIgdmVyc2lvbnMgb2YgbWVzc2FnZXMgdXNpbmcgdGhpcyBJRQorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLVBhcmFtZXRlcnMJCQkJCQlDSE9JQ0UgeworCQkJCWRsLURDSC1URkNTCQkJCQkJCVRGQ1MsCisJCQkJc2FtZUFzVUwJCQkJCQkJTlVMTAorCQkJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpbmRpdmlkdWFsREwtQ0NUckNILUluZm9MaXN0CQlJbmRpdmlkdWFsREwtQ0NUckNILUluZm9MaXN0CisJCQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworREwtQ29tbW9uVHJhbnNDaEluZm8tcjQgOjo9CQkJU0VRVUVOQ0UgeworCXNjY3BjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLVBhcmFtZXRlcnMJCQkJCQlDSE9JQ0UgeworCQkJCWRsLURDSC1URkNTCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJdGZjcwkJCQkJCQkJVEZDUwkJCQlPUFRJT05BTAorCQkJCX0sCisJCQkJc2FtZUFzVUwJCQkJCQkJTlVMTAorCQkJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpbmRpdmlkdWFsREwtQ0NUckNILUluZm9MaXN0CQlJbmRpdmlkdWFsREwtQ0NUckNILUluZm9MaXN0CisJCQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwkJfQorCX0JT1BUSU9OQUwKK30KKworREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlETC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKworREwtRGVsZXRlZFRyYW5zQ2hJbmZvTGlzdC1yNSA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCURMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eS1yNQkKKworREwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5IDo6PSAJCVNFUVVFTkNFIHsKKwlkbC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlETC1UckNILVR5cGUsCisJZGwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5Cit9CisKK0RMLVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eS1yNSA6Oj0gCQlTRVFVRU5DRSB7CisJZGwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJREwtVHJDSC1UeXBlSWQyLXI1Cit9CisKKy0tIFRoZSBjaG9pY2Ug0mRzY2jTIHNob3VsZCBub3QgYmUgdXNlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQKK0RMLVRyQ0gtVHlwZSA6Oj0JCQkJCUVOVU1FUkFURUQge2RjaCwgZHNjaH0KKworREwtVHJDSC1UeXBlSWQxLXI1IDo6PQkJCQlDSE9JQ0UgeworCWRjaAkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwktLSBUaGUgY2hvaWNlINJkc2No0yBzaG91bGQgbm90IGJlIHVzZWQgaW4gRkREIG1vZGUsIGFuZCBpZiByZWNlaXZlZAorCS0tIHRoZSBVRSBiZWhhdmlvdXIgaXMgdW5zcGVjaWZpZWQuCisJZHNjaAkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWhzZHNjaAkJCQkJCQkJTlVMTAorfQorCitETC1UckNILVR5cGVJZDItcjUgOjo9CQkJCUNIT0lDRSB7CisJZGNoCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCS0tIFRoZSBjaG9pY2Ug0mRzY2jTIHNob3VsZCBub3QgYmUgdXNlZCBpbiBGREQgbW9kZSwgYW5kIGlmIHJlY2VpdmVkCisJLS0gdGhlIFVFIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZC4KKwlkc2NoCQkJCQkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJaHNkc2NoCQkJCQkJCQlNQUMtZC1GbG93SWRlbnRpdHkKK30KKworRFJBQy1DbGFzc0lkZW50aXR5IDo6PQkJCQlJTlRFR0VSICgxLi5tYXhEUkFDY2xhc3NlcykKKworRFJBQy1TdGF0aWNJbmZvcm1hdGlvbiA6Oj0JCQlTRVFVRU5DRSB7CisJdHJhbnNtaXNzaW9uVGltZVZhbGlkaXR5CQkJVHJhbnNtaXNzaW9uVGltZVZhbGlkaXR5LAorCXRpbWVEdXJhdGlvbkJlZm9yZVJldHJ5CQkJCVRpbWVEdXJhdGlvbkJlZm9yZVJldHJ5LAorCWRyYWMtQ2xhc3NJZGVudGl0eQkJCQkJRFJBQy1DbGFzc0lkZW50aXR5Cit9CisKK0RSQUMtU3RhdGljSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRiAKKwkJCQkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uCisKK0UtRENILUFkZFJlY29uZi1NQUMtZC1GbG93IDo6PQkJU0VRVUVOQ0UgeworCW1hYy1kLUZsb3dJZGVudGl0eQkJCQkJRS1EQ0gtTUFDLWQtRmxvd0lkZW50aXR5LAorCW1hYy1kLUZsb3dQb3dlck9mZnNldAkJCQlFLURDSC1NQUMtZC1GbG93UG93ZXJPZmZzZXQJCQlPUFRJT05BTCwKKwltYWMtZC1GbG93TWF4UmV0cmFucwkJCQlFLURDSC1NQUMtZC1GbG93TWF4UmV0cmFucwkJCU9QVElPTkFMLAorCW1hYy1kLUZsb3dNdWx0aXBsZXhpbmdMaXN0CQkJRS1EQ0gtTUFDLWQtRmxvd011bHRpcGxleGluZ0xpc3QJT1BUSU9OQUwsCisJdHJhbnNtaXNzaW9uR3JhbnRUeXBlCQkJCUNIT0lDRSB7CisJCW5vbi1TY2hlZHVsZWRUcmFuc0dyYW50SW5mbwkJCVNFUVVFTkNFIHsKKwkJCW1heE1BQy1lLVBEVUNvbnRlbnRzCQkJCUlOVEVHRVIgKDEuLjE5OTgyKSwKKwkJCW1zMi1Ob25TY2hlZFRyYW5zbUdyYW50SEFSUUFsbG9jCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQkJT1BUSU9OQUwKKwkJfSwKKwkJc2NoZWR1bGVkVHJhbnNtaXNzaW9uR3JhbnRJbmZvCQlOVUxMCisJfQlPUFRJT05BTAorfQorCitFLURDSC1BZGRSZWNvbmYtTUFDLWQtRmxvd0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhFLURDSE1BQ2RGbG93KSkgT0YKKwkJCQkJCQlFLURDSC1BZGRSZWNvbmYtTUFDLWQtRmxvdworCitFLURDSC1NQUMtZC1GbG93SWRlbnRpdHkgOjo9CQlJTlRFR0VSICgwLi5tYXhFLURDSE1BQ2RGbG93LTEpCisKK0UtRENILU1BQy1kLUZsb3dNYXhSZXRyYW5zIDo6PQkJSU5URUdFUiAoMC4uMTUpCisKK0UtRENILU1BQy1kLUZsb3dNdWx0aXBsZXhpbmdMaXN0IDo6PSBCSVQgU1RSSU5HIChTSVpFIChtYXhFLURDSE1BQ2RGbG93KSkKKworRS1EQ0gtTUFDLWQtRmxvd1Bvd2VyT2Zmc2V0IDo6PQkJSU5URUdFUiAoMC4uNikKKworRS1EQ0gtVFRJIDo6PQkJCQkJCUVOVU1FUkFURUQgeyB0dGkyLCB0dGkxMCB9CisKK0V4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uIDo6PQkJQ0hPSUNFIHsKKwljb21wbGV0ZQkJCQkJCQlURkNTLVJlY29uZkFkZCwKKwlhZGRpdGlvbgkJCQkJCQlURkNTLVJlY29uZkFkZCwKKwlyZW1vdmFsCQkJCQkJCQlURkNTLVJlbW92YWxMaXN0LAorCXJlcGxhY2VtZW50CQkJCQkJCVNFUVVFTkNFIHsKKwkJdGZjc1JlbW92YWwJCQkJCQkJVEZDUy1SZW1vdmFsTGlzdCwKKwkJdGZjc0FkZAkJCQkJCQkJVEZDUy1SZWNvbmZBZGQKKwl9Cit9CisKK0dhaW5GYWN0b3IgOjo9CQkJCQkJSU5URUdFUiAoMC4uMTUpCisKK0dhaW5GYWN0b3JJbmZvcm1hdGlvbiA6Oj0JCQlDSE9JQ0UgeworCXNpZ25hbGxlZEdhaW5GYWN0b3JzCQkJCVNpZ25hbGxlZEdhaW5GYWN0b3JzLAorCWNvbXB1dGVkR2FpbkZhY3RvcnMJCQkJCVJlZmVyZW5jZVRGQy1JRAorfQorCitIU0RTQ0gtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJaGFycUluZm8JCQkJCQkJSEFSUS1JbmZvIAkJCQlPUFRJT05BTCwKKwlhZGRPclJlY29uZk1BQy1kRmxvdwkJCQlBZGRPclJlY29uZk1BQy1kRmxvdwlPUFRJT05BTAorfQorCitIQVJRLUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCW51bWJlck9mUHJvY2Vzc2VzCQkJCQlJTlRFR0VSICgxLi44KSwKKwltZW1vcnlQYXJ0aXRpb25pbmcJCQkJCUNIT0lDRSB7CisJCWltcGxpY2l0CQkJCQkJCU5VTEwsCisJCWV4cGxpY2l0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhIUHJvY2Vzc2VzKSkgT0YKKwkJCQkJCQkJCQkJCUhBUlFNZW1vcnlTaXplCisJfQorfQorCitIQVJRTWVtb3J5U2l6ZSA6Oj0gCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlobXM4MDAsIGhtczE2MDAsIGhtczI0MDAsIGhtczMyMDAsIGhtczQwMDAsCisJCQkJCQkJCQkJaG1zNDgwMCwgaG1zNTYwMCwgaG1zNjQwMCwgaG1zNzIwMCwgaG1zODAwMCwKKwkJCQkJCQkJCQlobXM4ODAwLCBobXM5NjAwLCBobXMxMDQwMCwgaG1zMTEyMDAsIGhtczEyMDAwLAorCQkJCQkJCQkJCWhtczEyODAwLCBobXMxMzYwMCwgaG1zMTQ0MDAsIGhtczE1MjAwLCBobXMxNjAwMCwKKwkJCQkJCQkJCQlobXMxNzYwMCwgaG1zMTkyMDAsIGhtczIwODAwLCBobXMyMjQwMCwgaG1zMjQwMDAsCisJCQkJCQkJCQkJaG1zMjU2MDAsIGhtczI3MjAwLCBobXMyODgwMCwgaG1zMzA0MDAsIGhtczMyMDAwLAorCQkJCQkJCQkJCWhtczM2MDAwLCBobXM0MDAwMCwgaG1zNDQwMDAsIGhtczQ4MDAwLCBobXM1MjAwMCwKKwkJCQkJCQkJCQlobXM1NjAwMCwgaG1zNjAwMDAsIGhtczY0MDAwLCBobXM2ODAwMCwgaG1zNzIwMDAsCisJCQkJCQkJCQkJaG1zNzYwMDAsIGhtczgwMDAwLCBobXM4ODAwMCwgaG1zOTYwMDAsIGhtczEwNDAwMCwKKwkJCQkJCQkJCQlobXMxMTIwMDAsIGhtczEyMDAwMCwgaG1zMTI4MDAwLCBobXMxMzYwMDAsIGhtczE0NDAwMCwKKwkJCQkJCQkJCQlobXMxNTIwMDAsIGhtczE2MDAwMCwgaG1zMTc2MDAwLCBobXMxOTIwMDAsIGhtczIwODAwMCwKKwkJCQkJCQkJCQlobXMyMjQwMDAsIGhtczI0MDAwMCwgaG1zMjU2MDAwLCBobXMyNzIwMDAsIGhtczI4ODAwMCwKKwkJCQkJCQkJCQlobXMzMDQwMDAgfQorCitJbmRpdmlkdWFsREwtQ0NUckNILUluZm8gOjo9CQlTRVFVRU5DRSB7CisJZGwtVEZDUy1JZGVudGl0eQkJCQkJVEZDUy1JZGVudGl0eSwKKwl0ZmNzLVNpZ25hbGxpbmdNb2RlCQkJCQlDSE9JQ0UgeworCQlleHBsaWNpdC1jb25maWcJCQkJCQlURkNTLAorCQlzYW1lQXNVTAkJCQkJCQlURkNTLUlkZW50aXR5CisJfQorfQorCitJbmRpdmlkdWFsREwtQ0NUckNILUluZm9MaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlJbmRpdmlkdWFsREwtQ0NUckNILUluZm8KKworSW5kaXZpZHVhbFVMLUNDVHJDSC1JbmZvIDo6PQkJU0VRVUVOQ0UgeworCXVsLVRGQ1MtSWRlbnRpdHkJCQkJCVRGQ1MtSWRlbnRpdHksCisJdWwtVEZDUwkJCQkJCQkJVEZDUyAsCisJdGZjLVN1YnNldAkJCQkJCQlURkMtU3Vic2V0Cit9CisKK0luZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCUluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mbworCitMb2dpY2FsQ2hhbm5lbEJ5UkIgOjo9CQkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwJCisJbG9nQ2hPZlJiCQkJCQkJCUlOVEVHRVIgKDAuLjEpCQkJCQkJT1BUSU9OQUwKK30KKworTG9naWNhbENoYW5uZWxMaXN0IDo6PQkJCQlDSE9JQ0UgeworCQlhbGxTaXplcwkJCQkJCQlOVUxMLAorCQljb25maWd1cmVkCQkJCQkJCU5VTEwsCisJCWV4cGxpY2l0TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi4xNSkpIE9GCisJCQkJCQkJCQkJCQlMb2dpY2FsQ2hhbm5lbEJ5UkIJCQkJCit9CisKK01BQy1kLUZsb3dJZGVudGl0eURDSGFuZEhTRFNDSCA6Oj0JU0VRVUVOQ0UgeworCWRjaC10cmFuc3BvcnQtY2gtaWQJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWhzZHNjaC1tYWMtZC1mbG93LWlkCQkJTUFDLWQtRmxvd0lkZW50aXR5Cit9CisKK01BQy1kLUZsb3dJZGVudGl0eSA6Oj0JCQkJSU5URUdFUiAoMC4uNykKKworTUFDLWQtUERVLVNpemVJbmZvLUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUoMS4uIG1heE1BQy1kLVBEVXNpemVzKSkgT0YKKwkJCQkJCQkJCQlNQUMtZC1QRFVzaXplSW5mbworCistLU1BQy1kLVBkdSBzaXplcyBuZWVkIHRvIGJlIGRlZmluZWQKK01BQy1kLVBEVXNpemVJbmZvIDo6PQkJCQlTRVFVRU5DRXsKKwltYWMtZC1QRFUtU2l6ZQkJCQkJCUlOVEVHRVIgKDEuLjUwMDApLAorCW1hYy1kLVBEVS1JbmRleAkJCQkJCUlOVEVHRVIoMC4uNykKK30KKworTUFDLWhzLUFkZFJlY29uZlF1ZXVlLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFKDEuLm1heFF1ZXVlSURzKSkgT0YKKwkJCQkJCQkJCQlNQUMtaHMtQWRkUmVjb25mUXVldWUKKworTUFDLWhzLUFkZFJlY29uZlF1ZXVlIDo6PQkJCVNFUVVFTkNFIHsKKwltYWMtaHNRdWV1ZUlkCQkJCQkJSU5URUdFUigwLi43KSwKKwltYWMtZEZsb3dJZAkJCQkJCQlNQUMtZC1GbG93SWRlbnRpdHksCisJcmVvcmRlcmluZ1JlbGVhc2VUaW1lcgkJCQlUMS1SZWxlYXNlVGltZXIsCisJbWFjLWhzV2luZG93U2l6ZQkJCQkJTUFDLWhzLVdpbmRvd1NpemUsCisJbWFjLWQtUERVLVNpemVJbmZvLUxpc3QJCQkJTUFDLWQtUERVLVNpemVJbmZvLUxpc3QJCQkJT1BUSU9OQUwKK30KKworTUFDLWhzLURlbFF1ZXVlLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFKDEuLm1heFF1ZXVlSURzKSkgT0YKKwkJCQkJCQkJCQlNQUMtaHMtRGVsUXVldWUKKworTUFDLWhzLURlbFF1ZXVlIDo6PQkJCQkJU0VRVUVOQ0UgeworCW1hYy1oc1F1ZXVlSWQJCQkJCQlJTlRFR0VSKDAuLjcpCit9CisKK01BQy1ocy1XaW5kb3dTaXplIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltd3M0LCBtd3M2LCBtd3M4LCBtd3MxMiwgbXdzMTYsIG13czI0LCBtd3MzMiB9CisKK051bWJlck9mVGJTaXplQW5kVFRJTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURikpIE9GIFNFUVVFTkNFIHsKKwkJbnVtYmVyT2ZUcmFuc3BvcnRCbG9ja3MJCQkJTnVtYmVyT2ZUcmFuc3BvcnRCbG9ja3MsCisJCXRyYW5zbWlzc2lvblRpbWVJbnRlcnZhbAkJCVRyYW5zbWlzc2lvblRpbWVJbnRlcnZhbAorfQorCitNZXNzVHlwZSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0cmFuc3BvcnRGb3JtYXRDb21iaW5hdGlvbkNvbnRyb2wgfQorCitOb24tYWxsb3dlZFRGQy1MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YKKwkJCQkJCQkJCQlURkMtVmFsdWUKKworTnVtYmVyT2ZUcmFuc3BvcnRCbG9ja3MgOjo9CQkJQ0hPSUNFIHsKKwl6ZXJvCQkJCQkJCQlOVUxMLAorCW9uZQkJCQkJCQkJCU5VTEwsCisJc21hbGwJCQkJCQkJCUlOVEVHRVIgKDIuLjE3KSwKKwlsYXJnZQkJCQkJCQkJSU5URUdFUiAoMTguLjUxMikKK30KKworT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTEgOjo9CQlDSE9JQ0UgeworCS0tIEFjdHVhbCBzaXplID0gKDggKiBzaXplVHlwZTEpICsgMTYKKwlzaXplVHlwZTEJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCXNpemVUeXBlMgkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIEFjdHVhbCBzaXplID0gKDMyICogcGFydDEpICsgMjcyICsgKHBhcnQyICogOCkKKwkJcGFydDEJCQkJCQkJCUlOVEVHRVIgKDAuLjIzKSwKKwkJcGFydDIJCQkJCQkJCUlOVEVHRVIgKDEuLjMpCQkJCQlPUFRJT05BTAorCX0sCisJc2l6ZVR5cGUzCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gQWN0dWFsIHNpemUgPSAoNjQgKiBwYXJ0MSkgKyAxMDQwICsgKHBhcnQyICogOCkKKwkJcGFydDEJCQkJCQkJCUlOVEVHRVIgKDAuLjYxKSwKKwkJcGFydDIJCQkJCQkJCUlOVEVHRVIgKDEuLjcpCQkJCQlPUFRJT05BTAorCX0KK30KKworT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTIgOjo9CQlDSE9JQ0UgeworCS0tIEFjdHVhbCBzaXplID0gKHNpemVUeXBlMSAqIDgpICsgNDgKKwlzaXplVHlwZTEJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCS0tIEFjdHVhbCBzaXplID0gKHNpemVUeXBlMiAqIDE2KSArIDMxMgorCXNpemVUeXBlMgkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJLS0gQWN0dWFsIHNpemUgPSAoc2l6ZVR5cGUzICo2NCkgKyAxMzg0CisJc2l6ZVR5cGUzCQkJCQkJCUlOVEVHRVIgKDAuLjU2KQorfQorCitQb3dlck9mZnNldEluZm9TaG9ydCA6Oj0JCQlTRVFVRU5DRSB7CisJcmVmZXJlbmNlVEZDCQkJCQkJVEZDLVZhbHVlLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWdhaW5GYWN0b3JCZXRhQwkJCQkJCUdhaW5GYWN0b3IKKwkJfSwKKwkJdGRkCQkJCQkJCQkJTlVMTAorCX0sCisJZ2FpbkZhY3RvckJldGFECQkJCQkJR2FpbkZhY3RvcgorfQorCitQb3dlck9mZnNldEluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwlnYWluRmFjdG9ySW5mb3JtYXRpb24JCQkJR2FpbkZhY3RvckluZm9ybWF0aW9uLAorCS0tIFBvd2VyT2Zmc2V0UHAtbSBpcyBhbHdheXMgYWJzZW50IGluIFRERAorCXBvd2VyT2Zmc2V0UHAtbQkJCQkJCVBvd2VyT2Zmc2V0UHAtbQkJCQkJCU9QVElPTkFMCit9CisKK1Bvd2VyT2Zmc2V0UHAtbSA6Oj0JCQkJCUlOVEVHRVIgKC01Li4xMCkKKworUHJlRGVmVHJhbnNDaENvbmZpZ3VyYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8sCisJdWwtQWRkUmVjb25mVHJDaEluZm9MaXN0CQkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJCURMLUNvbW1vblRyYW5zQ2hJbmZvLAorCWRsLVRyQ2hJbmZvTGlzdAkJCQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAorfQkKKworUXVhbGl0eVRhcmdldCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlibGVyLVF1YWxpdHlWYWx1ZQkJCQkJQkxFUi1RdWFsaXR5VmFsdWUKK30KKworUmF0ZU1hdGNoaW5nQXR0cmlidXRlIDo6PQkJCUlOVEVHRVIgKDEuLmhpUk0pCisKKworUmVmZXJlbmNlVEZDLUlEIDo6PQkJCQkJSU5URUdFUiAoMC4uMykKKworUmVzdHJpY3RlZFRyQ2hJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJDSC1UeXBlLAorCXJlc3RyaWN0ZWRUckNoSWRlbnRpdHkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWFsbG93ZWRURkktTGlzdAkJCQkJCUFsbG93ZWRURkktTGlzdAkJCQkJCU9QVElPTkFMCit9CisKK1Jlc3RyaWN0ZWRUckNoSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVJlc3RyaWN0ZWRUckNoSW5mbworCitTZW1pc3RhdGljVEYtSW5mb3JtYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogVHJhbnNtaXNzaW9uIHRpbWUgaW50ZXJ2YWwgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIElFIENvbW1vblRyYW5zQ2hURlMuCisJY2hhbm5lbENvZGluZ1R5cGUJCQkJCUNoYW5uZWxDb2RpbmdUeXBlLAorCXJhdGVNYXRjaGluZ0F0dHJpYnV0ZQkJCQlSYXRlTWF0Y2hpbmdBdHRyaWJ1dGUsCisJY3JjLVNpemUJCQkJCQkJQ1JDLVNpemUKK30KKworU2lnbmFsbGVkR2FpbkZhY3RvcnMgOjo9CQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWdhaW5GYWN0b3JCZXRhQwkJCQkJCUdhaW5GYWN0b3IKKwkJfSwKKwkJdGRkCQkJCQkJCQkJTlVMTAorCX0sCisJZ2FpbkZhY3RvckJldGFECQkJCQkJR2FpbkZhY3RvciwKKwlyZWZlcmVuY2VURkMtSUQJCQkJCQlSZWZlcmVuY2VURkMtSUQJCQkJCQlPUFRJT05BTAorfQorCitTcGxpdFRGQ0ktU2lnbmFsbGluZyA6Oj0JCQlTRVFVRU5DRSB7CisJc3BsaXRUeXBlCQkJCQkJCVNwbGl0VHlwZQkJCQkJCU9QVElPTkFMLAorCXRmY2ktRmllbGQyLUxlbmd0aAkJCQkJSU5URUdFUiAoMS4uMTApCQkJCQlPUFRJT05BTCwKKwl0ZmNpLUZpZWxkMS1JbmZvcm1hdGlvbgkJCQlFeHBsaWNpdFRGQ1MtQ29uZmlndXJhdGlvbgkJT1BUSU9OQUwsCisJdGZjaS1GaWVsZDItSW5mb3JtYXRpb24JCQkJVEZDSS1GaWVsZDItSW5mb3JtYXRpb24JCQlPUFRJT05BTAorfQorCitTcGxpdFR5cGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJaGFyZFNwbGl0LCBsb2dpY2FsU3BsaXQgfQorCitUMS1SZWxlYXNlVGltZXIgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlydDEwLCBydDIwLCBydDMwLCBydDQwLCBydDUwLAorCQkJCQkJCQkJCXJ0NjAsIHJ0NzAsIHJ0ODAsIHJ0OTAsIHJ0MTAwLAorCQkJCQkJCQkJCXJ0MTIwLCBydDE0MCwgcnQxNjAsIHJ0MjAwLCBydDMwMCwKKwkJCQkJCQkJCQlydDQwMCB9CisKK1RGQy1TdWJzZXQgOjo9CQkJCQkJQ0hPSUNFIHsKKwltaW5pbXVtQWxsb3dlZFRGQy1OdW1iZXIJCQlURkMtVmFsdWUsCisJYWxsb3dlZFRGQy1MaXN0CQkJCQkJQWxsb3dlZFRGQy1MaXN0LAorCW5vbi1hbGxvd2VkVEZDLUxpc3QJCQkJCU5vbi1hbGxvd2VkVEZDLUxpc3QsCisJcmVzdHJpY3RlZFRyQ2hJbmZvTGlzdAkJCQlSZXN0cmljdGVkVHJDaEluZm9MaXN0LAorCWZ1bGxURkNTCQkJCQkJCU5VTEwKK30KKworVEZDLVN1YnNldExpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uIG1heFRGQ3N1YikpIE9GIFNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlOVUxMLAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5CQkJCU9QVElPTkFMCisJCX0KKwl9LAorCXRmYy1TdWJzZXQJCQkJCQkJVEZDLVN1YnNldAorfQorCitURkMtVmFsdWUgOjo9CQkJCQkJSU5URUdFUiAoMC4uMTAyMykKKworVEZDSS1GaWVsZDItSW5mb3JtYXRpb24gOjo9CQkJQ0hPSUNFIHsKKwl0ZmNpLVJhbmdlCQkJCQkJCVRGQ0ktUmFuZ2VMaXN0LAorCWV4cGxpY2l0LWNvbmZpZwkJCQkJCUV4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uCit9CisKK1RGQ0ktUmFuZ2UgOjo9CQkJCQkJU0VRVUVOQ0UgeworCW1heFRGQ0lGaWVsZDJWYWx1ZQkJCQkJSU5URUdFUiAoMS4uMTAyMyksCisJdGZjcy1JbmZvRm9yRFNDSAkJCQkJVEZDUy1JbmZvRm9yRFNDSAorfQorCitURkNJLVJhbmdlTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSC1URkNJZ3JvdXBzKSkgT0YKKwkJCQkJCQkJCQlURkNJLVJhbmdlCisKK1RGQ1MgOjo9CQkJCQkJCUNIT0lDRSB7CisJbm9ybWFsVEZDSS1TaWduYWxsaW5nCQkJCUV4cGxpY2l0VEZDUy1Db25maWd1cmF0aW9uLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15CQkJCQkJCQlTcGxpdFRGQ0ktU2lnbmFsbGluZworfQorCitURkNTLUlkZW50aXR5IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCXNoYXJlZENoYW5uZWxJbmRpY2F0b3IJCQkJQk9PTEVBTgorfQorCitURkNTLUlkZW50aXR5UGxhaW4gOjo9CQkJCUlOVEVHRVIgKDEuLjgpCisKK1RGQ1MtSW5mb0ZvckRTQ0ggOjo9CQkJCUNIT0lDRSB7CisJY3RmYzJiaXQJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJY3RmYzRiaXQJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCWN0ZmM2Yml0CQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwljdGZjOGJpdAkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCWN0ZmMxMmJpdAkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKKwljdGZjMTZiaXQJCQkJCQkJSU5URUdFUiAoMC4uNjU1MzUpLAorCWN0ZmMyNGJpdAkJCQkJCQlJTlRFR0VSICgwLi4xNjc3NzIxNSkKK30KKworVEZDUy1SZWNvbmZBZGQgOjo9CQkJCQlTRVFVRU5DRXsKKwljdGZjU2l6ZQkJCQkJCQlDSE9JQ0V7CisJCWN0ZmMyQml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjMgkJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJCQlwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQlPUFRJT05BTAorCQl9LAorCQljdGZjNEJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgeworCQkJY3RmYzQgCQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJCQlwb3dlck9mZnNldEluZm9ybWF0aW9uCQkJCVBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQlPUFRJT05BTAorCQl9LAorCQljdGZjNkJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgeworCQkJY3RmYzYJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCWN0ZmM4Qml0CQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjOAkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCWN0ZmMxMkJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSgxLi5tYXhURkMpKSBPRiBTRVFVRU5DRSB7CisJCQljdGZjMTIJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorIAkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCWN0ZmMxNkJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgeworCQkJY3RmYzE2CQkJCQkJCQlJTlRFR0VSKDAuLjY1NTM1KSwKKwkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0sCisJCWN0ZmMyNEJpdAkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YgU0VRVUVOQ0UgeworCQkJY3RmYzI0CQkJCQkJCQlJTlRFR0VSKDAuLjE2Nzc3MjE1KSwKKwkJCXBvd2VyT2Zmc2V0SW5mb3JtYXRpb24JCQkJUG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1RGQ1MtUmVtb3ZhbCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0ZmNpCQkJCQkJCQlJTlRFR0VSICgwLi4xMDIzKQorfQorCitURkNTLVJlbW92YWxMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEZDKSkgT0YKKwkJCQkJCQkJCQlURkNTLVJlbW92YWwKKworVGltZUR1cmF0aW9uQmVmb3JlUmV0cnkgOjo9CQkJSU5URUdFUiAoMS4uMjU2KQorCitUTS1TaWduYWxsaW5nSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCW1lc3NUeXBlCQkJCQkJCU1lc3NUeXBlLAorCXRtLVNpZ25hbGxpbmdNb2RlCQkJCQlDSE9JQ0UgeworCQltb2RlMQkJCQkJCQkJTlVMTCwKKwkJbW9kZTIJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIGluIHVsLWNvbnRyb2xsZWRUckNoTGlzdCwgVHJDSC1UeXBlIGlzIGFsd2F5cyBEQ0gKKwkJCXVsLWNvbnRyb2xsZWRUckNoTGlzdAkJCQlVTC1Db250cm9sbGVkVHJDaExpc3QKKwkJfQorCX0KK30KKworVHJhbnNtaXNzaW9uVGltZUludGVydmFsIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHRpMTAsIHR0aTIwLCB0dGk0MCwgdHRpODAgfQorCitUcmFuc21pc3Npb25UaW1lVmFsaWRpdHkgOjo9CQlJTlRFR0VSICgxLi4yNTYpCisKK1RyYW5zcG9ydENoYW5uZWxJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDEuLjMyKQorCitUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHlEQ0hhbmREU0NIIDo6PQlTRVFVRU5DRSB7CisJZGNoLXRyYW5zcG9ydC1jaC1pZAkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJZHNjaC10cmFuc3BvcnQtY2gtaWQJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKK30KKworCitUcmFuc3BvcnRGb3JtYXRTZXQgOjo9CQkJCUNIT0lDRSB7CisJZGVkaWNhdGVkVHJhbnNDaFRGUwkJCQkJRGVkaWNhdGVkVHJhbnNDaFRGUywKKwljb21tb25UcmFuc0NoVEZTCQkJCQlDb21tb25UcmFuc0NoVEZTCit9CisKK1RyYW5zcG9ydEZvcm1hdFNldC1MQ1IgOjo9CQkJCUNIT0lDRSB7CisJZGVkaWNhdGVkVHJhbnNDaFRGUwkJCQkJRGVkaWNhdGVkVHJhbnNDaFRGUywKKwljb21tb25UcmFuc0NoVEZTLUxDUgkJCQlDb21tb25UcmFuc0NoVEZTLUxDUgorfQorCistLSBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0IHNlcXVlbmNlIGlzIDE2CitVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSHByZWNvbmYpKSBPRgorCQkJCQkJCQkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvcm1hdGlvbgorCistLSBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LXI2IHNlcXVlbmNlIGlzIDMyCitVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjYKKworVUwtQWRkUmVjb25mVHJhbnNDaEluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7CisJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJDSC1UeXBlLAorCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwl0cmFuc3BvcnRGb3JtYXRTZXQJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAorfQorCitVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb3JtYXRpb24tcjYgOjo9IENIT0lDRSB7CisJZGNoLXVzY2gJCQkJCQkJU0VRVUVOQ0UgeworCQl1bC1UcmFuc3BvcnRDaGFubmVsVHlwZQkJCQlVTC1UckNILVR5cGUsCisJCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwkJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKKwl9LAorCWUtZGNoCQkJCQkJCQlTRVFVRU5DRSB7CisJCXR0aQkJCQkJCQkJCUUtRENILVRUSSwKKwkJaGFycS1JbmZvCQkJCQkJCUVOVU1FUkFURUQgeyBydjAsIHJ2dGFibGUgfSwKKwkJYWRkUmVjb25mLU1BQy1kLUZsb3dMaXN0CQkJRS1EQ0gtQWRkUmVjb25mLU1BQy1kLUZsb3dMaXN0CU9QVElPTkFMCisJfQorfQorCitVTC1Db21tb25UcmFuc0NoSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogdGZjLXN1YnNldCBpcyBhcHBsaWNhYmxlIHRvIEZERCBvbmx5LCBUREQgc3BlY2lmaWVzIHRmYy1zdWJzZXQgaW4gaW5kaXZpZHVhbCAKKwktLSBDQ1RyQ0ggSW5mby4KKwl0ZmMtU3Vic2V0CQkJCQkJCVRGQy1TdWJzZXQJCQkJCQkJT1BUSU9OQUwsCisJcHJhY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1URkNTCQkJCQkJCVRGQ1MKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCisJCQlpbmRpdmlkdWFsVUwtQ0NUckNILUluZm9MaXN0CQlJbmRpdmlkdWFsVUwtQ0NUckNILUluZm9MaXN0CisJCQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwkJfQorCX0JCQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorfQorCitVTC1Db21tb25UcmFuc0NoSW5mby1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogdGZjLXN1YnNldCBpcyBhcHBsaWNhYmxlIHRvIEZERCBvbmx5LCBUREQgc3BlY2lmaWVzIHRmYy1zdWJzZXQgaW4gaW5kaXZpZHVhbCAKKwktLSBDQ1RyQ0ggSW5mby4KKwl0ZmMtU3Vic2V0CQkJCQkJCVRGQy1TdWJzZXQJCQkJCQkJT1BUSU9OQUwsCisJcHJhY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1URkNTCQkJCQkJCQlURkNTCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QJCUluZGl2aWR1YWxVTC1DQ1RyQ0gtSW5mb0xpc3QJCU9QVElPTkFMCisJCX0KKwl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJdGZjLVN1YnNldExpc3QJCQkJCQlURkMtU3Vic2V0TGlzdAkJCQkJCU9QVElPTkFMCit9CisKKy0tIEluIFVMLUNvbnRyb2xsZWRUckNoTGlzdCwgVHJDSC1UeXBlIGlzIGFsd2F5cyBEQ0gKK1VMLUNvbnRyb2xsZWRUckNoTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CisKK1VMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CisKK1VMLURlbGV0ZWRUcmFuc0NoSW5mb0xpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlVTC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHktcjYKKworVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5IDo6PQkJU0VRVUVOQ0UgeworCXVsLVRyYW5zcG9ydENoYW5uZWxUeXBlCQkJCVVMLVRyQ0gtVHlwZSwKKwl1bC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKK30KKworVUwtVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LXI2IDo6PQlDSE9JQ0UgeworCWRjaC11c2NoCQkJCQkJCVNFUVVFTkNFIHsKKwkJdWwtVHJhbnNwb3J0Q2hhbm5lbFR5cGUJCQkJVUwtVHJDSC1UeXBlLAorCQl1bC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkKKwl9LAorCWUtZGNoCQkJCQkJCQlFLURDSC1NQUMtZC1GbG93SWRlbnRpdHkKK30KKworVUwtVHJDSC1UeXBlIDo6PQkJCQkJRU5VTUVSQVRFRCB7ZGNoLCB1c2NofQorCitVU0NILVRyYW5zcG9ydENoYW5uZWxzSW5mbyA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJdXNjaC1UcmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJdXNjaC1URlMJCQkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAorfQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gICAgIFBIWVNJQ0FMIENIQU5ORUwgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuNikKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQUNLLU5BQ0stcmVwZXRpdGlvbkZhY3RvciA6Oj0JCUlOVEVHRVIoMS4uNCkKKworQUMtVG8tQVNDLU1hcHBpbmcgOjo9CQkJCUlOVEVHRVIgKDAuLjcpCisKK0FDLVRvLUFTQy1NYXBwaW5nVGFibGUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKG1heEFTQ21hcCkpIE9GCisJCQkJCQkJCQkJQUMtVG8tQVNDLU1hcHBpbmcKKworQWNjZXNzU2VydmljZUNsYXNzLUZERCA6Oj0JCQlTRVFVRU5DRSB7CisJYXZhaWxhYmxlU2lnbmF0dXJlU3RhcnRJbmRleAkJSU5URUdFUiAoMC4uMTUpLAorCWF2YWlsYWJsZVNpZ25hdHVyZUVuZEluZGV4CQkJSU5URUdFUiAoMC4uMTUpLAorCisJYXNzaWduZWRTdWJDaGFubmVsTnVtYmVyCQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJCWIzKDApLAorCQkJCQkJCQkJCQliMigxKSwKKwkJCQkJCQkJCQkJYjEoMiksCisJCQkJCQkJCQkJCWIwKDMpCisJCQkJCQkJCQkJCX0JIChTSVpFKDQpKQorfQorCitBY2Nlc3NTZXJ2aWNlQ2xhc3MtVEREIDo6PQkJCVNFUVVFTkNFIHsKKwljaGFubmVsaXNhdGlvbkNvZGVJbmRpY2VzCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCWNoQ29kZUluZGV4NygwKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXg2KDEpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDUoMiksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4NCgzKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgzKDQpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDIoNSksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4MSg2KSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgwKDcpCisJCQkJCQkJCQkJCX0gKFNJWkUoOCkpCQkJCU9QVElPTkFMLAorCXN1YmNoYW5uZWxTaXplCQkJCQkJQ0hPSUNFIHsKKwkJc2l6ZTEJCQkJCQkJCU5VTEwsCisJCXNpemUyCQkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBzdWJjaDAgbWVhbnMgYml0c3RyaW5nICcwMScgaW4gdGhlIHRhYnVsYXIsIHN1YmNoMSBtZWFucyBiaXRzcmluZyAnMTAnCisJCQlzdWJjaGFubmVscwkJCQkJCQlFTlVNRVJBVEVECXsgc3ViY2gwLCBzdWJjaDEgfQlPUFRJT05BTAorCQl9LAorCQlzaXplNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2gzKDApLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDIoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoMSgyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gwKDMpIAorCQkJCQkJCQkJCQkJCX0gKFNJWkUoNCkpCQlPUFRJT05BTAorCQl9LAorCQlzaXplOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2g3KDApLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDYoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoNSgyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g0KDMpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDMoNCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMig1KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gxKDYpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDAoNykgCisJCQkJCQkJCQkJCQkJfSAoU0laRSg4KSkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0FjY2Vzc1NlcnZpY2VDbGFzcy1UREQtcjcgOjo9CQkJU0VRVUVOQ0UgeworCWNoYW5uZWxpc2F0aW9uQ29kZUluZGljZXMJCQlCSVQgU1RSSU5HCXsKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxNSgwKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxNCgxKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxMygyKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxMigzKSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxMSg0KSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXgxMCg1KSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXg5KDYpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDgoNyksCisJCQkJCQkJCQkJCWNoQ29kZUluZGV4Nyg4KSwKKwkJCQkJCQkJCQkJY2hDb2RlSW5kZXg2KDkpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDUoMTApLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDQoMTEpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDMoMTIpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDIoMTMpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDEoMTQpLAorCQkJCQkJCQkJCQljaENvZGVJbmRleDAoMTUpCisJCQkJCQkJCQkJCX0gKFNJWkUoMTYpKQkJCQlPUFRJT05BTCwKKwlzdWJjaGFubmVsU2l6ZQkJCQkJCUNIT0lDRSB7CisJCXNpemUxCQkJCQkJCQlOVUxMLAorCQlzaXplMgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gc3ViY2gwIG1lYW5zIGJpdHN0cmluZyAnMDEnIGluIHRoZSB0YWJ1bGFyLCBzdWJjaDEgbWVhbnMgYml0c3JpbmcgJzEwJworCQkJc3ViY2hhbm5lbHMJCQkJCQkJRU5VTUVSQVRFRAl7IHN1YmNoMCwgc3ViY2gxIH0JT1BUSU9OQUwKKwkJfSwKKwkJc2l6ZTQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJeworCQkJCQkJCQkJCQkJCXN1YkNoMygwKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gyKDEpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDEoMiksIAorCQkJCQkJCQkJCQkJCXN1YkNoMCgzKSAKKwkJCQkJCQkJCQkJCQl9IChTSVpFKDQpKQkJT1BUSU9OQUwKKwkJfSwKKwkJc2l6ZTgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJeworCQkJCQkJCQkJCQkJCXN1YkNoNygwKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g2KDEpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDUoMiksIAorCQkJCQkJCQkJCQkJCXN1YkNoNCgzKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gzKDQpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDIoNSksIAorCQkJCQkJCQkJCQkJCXN1YkNoMSg2KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gwKDcpIAorCQkJCQkJCQkJCQkJCX0gKFNJWkUoOCkpCQlPUFRJT05BTAorCQl9LAorCQlzaXplMTYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJeworCQkJCQkJCQkJCQkJCXN1YkNoMTUoMCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMTQoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoMTMoMiksIAorCQkJCQkJCQkJCQkJCXN1YkNoMTIoMyksIAorCQkJCQkJCQkJCQkJCXN1YkNoMTEoNCksIAorCQkJCQkJCQkJCQkJCXN1YkNoMTAoNSksIAorCQkJCQkJCQkJCQkJCXN1YkNoOSg2KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g4KDcpLAorCQkJCQkJCQkJCQkJCXN1YkNoNyg4KSwKKwkJCQkJCQkJCQkJCQlzdWJDaDYoOSksCisJCQkJCQkJCQkJCQkJc3ViQ2g1KDEwKSwKKwkJCQkJCQkJCQkJCQlzdWJDaDQoMTEpLAorCQkJCQkJCQkJCQkJCXN1YkNoMygxMiksCisJCQkJCQkJCQkJCQkJc3ViQ2gyKDEzKSwKKwkJCQkJCQkJCQkJCQlzdWJDaDEoMTQpLAorCQkJCQkJCQkJCQkJCXN1YkNoMCgxNSkgCisJCQkJCQkJCQkJCQkJfSAoU0laRSgxNikpCQlPUFRJT05BTAorCQl9CisJfQorfQorCitBY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWF2YWlsYWJsZVNZTkMtVWxDb2Rlc0luZGljcwkJICAgIEJJVCBTVFJJTkcgeworCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXg3KDApLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXg2KDEpLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXg1KDIpLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXg0KDMpLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXgzKDQpLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXgyKDUpLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXgxKDYpLAorCQkJCQkJCQkJCQlzdWxDb2RlSW5kZXgwKDcpCisJCQkJCQkJCQkJCX0gKFNJWkUoOCkpICAgICAgICAgICAgICAgT1BUSU9OQUwsCisJc3ViY2hhbm5lbFNpemUJCQkJCQlDSE9JQ0UgeworCQlzaXplMQkJCQkJCQkJTlVMTCwKKwkJc2l6ZTIJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIHN1YmNoMCBtZWFucyBiaXRzdHJpbmcgJzAxJyBpbiB0aGUgdGFidWxhciwgc3ViY2gxIG1lYW5zIGJpdHNyaW5nICcxMCcuCisJCQlzdWJjaGFubmVscwkJCQkJCQlFTlVNRVJBVEVECXsgc3ViY2gwLCBzdWJjaDEgfQlPUFRJT05BTAorCQl9LAorCQlzaXplNAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc3ViY2hhbm5lbHMJCQkJCQkJQklUIFNUUklORwl7CisJCQkJCQkJCQkJCQkJc3ViQ2gzKDApLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDIoMSksIAorCQkJCQkJCQkJCQkJCXN1YkNoMSgyKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gwKDMpIAorCQkJCQkJCQkJCQkJCX0gKFNJWkUoNCkpCQkJT1BUSU9OQUwKKwkJfSwKKwkJc2l6ZTgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXN1YmNoYW5uZWxzCQkJCQkJCUJJVCBTVFJJTkcJeworCQkJCQkJCQkJCQkJCXN1YkNoNygwKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2g2KDEpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDUoMiksIAorCQkJCQkJCQkJCQkJCXN1YkNoNCgzKSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gzKDQpLCAKKwkJCQkJCQkJCQkJCQlzdWJDaDIoNSksIAorCQkJCQkJCQkJCQkJCXN1YkNoMSg2KSwgCisJCQkJCQkJCQkJCQkJc3ViQ2gwKDcpIAorCQkJCQkJCQkJCQkJCX0gKFNJWkUoOCkpCQkJT1BUSU9OQUwKKwkJfQorCX0KKwkKK30KKworQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtSUVzIDo6PSBTRVFVRU5DRSB7CisJcG93ZXJPZmZzZXRJbmZvcm1hdGlvbgkJCQlQb3dlck9mZnNldEluZm9ybWF0aW9uLAorCWR5bmFtaWNURkluZm9ybWF0aW9uQ0NDSAkJCUR5bmFtaWNURkluZm9ybWF0aW9uQ0NDSAorfQorCitBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSCA6Oj0JU0VRVUVOQ0UgeworCWFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUlFcwlBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1JRXMJT1BUSU9OQUwKK30KKworLS0gVGhlIG9yZGVyIGlzIHRoZSBzYW1lIGFzIGluIHRoZSBQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QKK0FkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhQUkFDSCkpIE9GCisJCQkJCQkJCQkJQWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gKKworQUlDSC1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwljaGFubmVsaXNhdGlvbkNvZGUyNTYJCQkJQ2hhbm5lbGlzYXRpb25Db2RlMjU2LAorCXN0dGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTiwKKwlhaWNoLVRyYW5zbWlzc2lvblRpbWluZwkJCQlBSUNILVRyYW5zbWlzc2lvblRpbWluZworfQorCitBSUNILVBvd2VyT2Zmc2V0IDo6PQkJCQlJTlRFR0VSICgtMjIuLjUpCisKK0FJQ0gtVHJhbnNtaXNzaW9uVGltaW5nIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWUwLCBlMSB9CisKK0FsbG9jYXRpb25QZXJpb2RJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwlhbGxvY2F0aW9uQWN0aXZhdGlvblRpbWUJCQlJTlRFR0VSICgwLi4yNTUpLAorCWFsbG9jYXRpb25EdXJhdGlvbgkJCQkJSU5URUdFUiAoMS4uMjU2KQorfQorCistLSBBY3R1YWwgdmFsdWUgQWxwaGEgPSBJRSB2YWx1ZSAqIDAuMTI1CitBbHBoYSA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uOCkKKworQVAtQUlDSC1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CQlJTlRFR0VSICgwLi4yNTUpCisKK0FQLVByZWFtYmxlU2NyYW1ibGluZ0NvZGUgOjo9CQlJTlRFR0VSICgwLi43OSkKKworQVAtU2lnbmF0dXJlIDo6PQkJCQkJSU5URUdFUiAoMC4uMTUpCisKK0FQLVNpZ25hdHVyZS1WQ0FNIDo6PQkJCQlTRVFVRU5DRSB7CisJYXAtU2lnbmF0dXJlCQkJCQkJQVAtU2lnbmF0dXJlLAorCWF2YWlsYWJsZUFQLVN1YmNoYW5uZWxMaXN0CQkJQXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QgT1BUSU9OQUwKK30KKworQVAtU3ViY2hhbm5lbCA6Oj0JCQkJCUlOVEVHRVIgKDAuLjExKQorCitBU0NTZXR0aW5nLUZERCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogYWNjZXNzU2VydmljZUNsYXNzLUZERCBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCisJLS0gRGVmYXVsdCB2YWx1ZSBpcyBwcmV2aW91cyBBU0MKKwktLSBJZiB0aGlzIGlzIHRoZSBmaXJzdCBBU0MsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFsbCBhdmFpbGFibGUgc2lnbmF0dXJlIGFuZCBzdWItY2hhbm5lbHMKKwlhY2Nlc3NTZXJ2aWNlQ2xhc3MtRkRECQkJCQlBY2Nlc3NTZXJ2aWNlQ2xhc3MtRkRECU9QVElPTkFMCit9CisKK0FTQ1NldHRpbmctVEREIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBhY2Nlc3NTZXJ2aWNlQ2xhc3MtVEREIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KKwktLSBEZWZhdWx0IHZhbHVlIGlzIHByZXZpb3VzIEFTQworCS0tIElmIHRoaXMgaXMgdGhlIGZpcnN0IEFTQywgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYWxsIGF2YWlsYWJsZSBjaGFubmVsaXNhdGlvbiBjb2RlcyBhbmQKKwktLSBhbGwgYXZhaWxhYmxlIHN1Yi1jaGFubmVscyB3aXRoIHN1YmNoYW5uZWxTaXplPXNpemUxLgorCWFjY2Vzc1NlcnZpY2VDbGFzcy1UREQJCQkJCUFjY2Vzc1NlcnZpY2VDbGFzcy1UREQJT1BUSU9OQUwKK30KKworQVNDU2V0dGluZy1UREQtcjcgOjo9CQkJCQkJU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IGFjY2Vzc1NlcnZpY2VDbGFzcy1UREQgaXMgTUQgaW4gdGFidWxhciBkZXNjcmlwdGlvbgorCS0tIERlZmF1bHQgdmFsdWUgaXMgcHJldmlvdXMgQVNDCisJLS0gSWYgdGhpcyBpcyB0aGUgZmlyc3QgQVNDLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhbGwgYXZhaWxhYmxlIGNoYW5uZWxpc2F0aW9uIGNvZGVzIGFuZAorCS0tIGFsbCBhdmFpbGFibGUgc3ViLWNoYW5uZWxzIHdpdGggc3ViY2hhbm5lbFNpemU9c2l6ZTEuCisJYWNjZXNzU2VydmljZUNsYXNzLVRERAkJCQkJCUFjY2Vzc1NlcnZpY2VDbGFzcy1UREQtcjcJT1BUSU9OQUwKK30KKworQVNDU2V0dGluZy1UREQtTENSLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBhY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELUxDUiBpcyBNRCBpbiB0YWJ1bGFyIGRlc2NyaXB0aW9uCisJLS0gRGVmYXVsdCB2YWx1ZSBpcyBwcmV2aW91cyBBU0MKKwktLSBJZiB0aGlzIGlzIHRoZSBmaXJzdCBBU0MsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFsbCBhdmFpbGFibGUgU1lOQ19VTCBjb2RlcyBhbmQKKwktLSBhbGwgYXZhaWxhYmxlIHN1Yi1jaGFubmVscyB3aXRoIHN1YmNoYW5uZWxTaXplPXNpemUxLiAKKwlhY2Nlc3NTZXJ2aWNlQ2xhc3MtVERELUxDUgkJCQkJQWNjZXNzU2VydmljZUNsYXNzLVRERC1MQ1ItcjQgIAlPUFRJT05BTAorfQorCitBdmFpbGFibGVBUC1TaWduYXR1cmUtVkNBTUxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhQQ1BDSC1BUHNpZykpIE9GCisJCQkJCQkJCQkJQVAtU2lnbmF0dXJlLVZDQU0KKworQXZhaWxhYmxlQVAtU2lnbmF0dXJlTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQQ1BDSC1BUHNpZykpIE9GCisJCQkJCQkJCQkJQVAtU2lnbmF0dXJlCisKK0F2YWlsYWJsZUFQLVN1YmNoYW5uZWxMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUFQc3ViQ2gpKSBPRgorCQkJCQkJCQkJCUFQLVN1YmNoYW5uZWwKKworQXZhaWxhYmxlTWluaW11bVNGLUxpc3RWQ0FNIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILVNGKSkgT0YKKwkJCQkJCQkJCQlBdmFpbGFibGVNaW5pbXVtU0YtVkNBTQorCitBdmFpbGFibGVNaW5pbXVtU0YtVkNBTSA6Oj0JCQlTRVFVRU5DRSB7CisJbWluaW11bVNwcmVhZGluZ0ZhY3RvcgkJCQlNaW5pbXVtU3ByZWFkaW5nRmFjdG9yLAorCW5mLU1heAkJCQkJCQkJTkYtTWF4LAorCW1heEF2YWlsYWJsZVBDUENILU51bWJlcgkJCU1heEF2YWlsYWJsZVBDUENILU51bWJlciwKKwlhdmFpbGFibGVBUC1TaWduYXR1cmUtVkNBTUxpc3QJCUF2YWlsYWJsZUFQLVNpZ25hdHVyZS1WQ0FNTGlzdAorfQorCitBdmFpbGFibGVTaWduYXR1cmVzIDo6PQkJCUJJVCBTVFJJTkcgeworCQkJCQkJCQkJc2lnbmF0dXJlMTUoMCksCisJCQkJCQkJCQlzaWduYXR1cmUxNCgxKSwKKwkJCQkJCQkJCXNpZ25hdHVyZTEzKDIpLAorCQkJCQkJCQkJc2lnbmF0dXJlMTIoMyksCisJCQkJCQkJCQlzaWduYXR1cmUxMSg0KSwKKwkJCQkJCQkJCXNpZ25hdHVyZTEwKDUpLAorCQkJCQkJCQkJc2lnbmF0dXJlOSg2KSwKKwkJCQkJCQkJCXNpZ25hdHVyZTgoNyksCisJCQkJCQkJCQlzaWduYXR1cmU3KDgpLAorCQkJCQkJCQkJc2lnbmF0dXJlNig5KSwKKwkJCQkJCQkJCXNpZ25hdHVyZTUoMTApLAorCQkJCQkJCQkJc2lnbmF0dXJlNCgxMSksCisJCQkJCQkJCQlzaWduYXR1cmUzKDEyKSwKKwkJCQkJCQkJCXNpZ25hdHVyZTIoMTMpLAorCQkJCQkJCQkJc2lnbmF0dXJlMSgxNCksCisJCQkJCQkJCQlzaWduYXR1cmUwKDE1KQorCQkJCQkJCQkJfQkgKFNJWkUoMTYpKQorCitBdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycyA6Oj0JCUJJVCBTVFJJTkcgeworCQkJCQkJCQkJCXN1YkNoMTEoMCksCisJCQkJCQkJCQkJc3ViQ2gxMCgxKSwKKwkJCQkJCQkJCSAJc3ViQ2g5KDIpLAorCQkJCQkJCQkJIAlzdWJDaDgoMyksCisJCQkJCQkJCQkgCXN1YkNoNyg0KSwKKwkJCQkJCQkJCSAJc3ViQ2g2KDUpLAorCQkJCQkJCQkJIAlzdWJDaDUoNiksCisJCQkJCQkJCQkgCXN1YkNoNCg3KSwKKwkJCQkJCQkJCSAJc3ViQ2gzKDgpLAorCQkJCQkJCQkJIAlzdWJDaDIoOSksCisJCQkJCQkJCQkgCXN1YkNoMSgxMCksCisJCQkJCQkJCQkgCXN1YkNoMCgxMSkKKwkJCQkJCQkJCQl9IAkgKFNJWkUoMTIpKQorCitCRUFDT04tUEwtRXN0IDo6PQkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQorCitCdXJzdFR5cGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdHlwZTEsIHR5cGUyIH0KKworLS0gQWN0dWFsIHZhbHVlIEJsZXItVGFyZ2V0ID0gSUUgdmFsdWUgKiAwLjA1CitCbGVyLVRhcmdldCA6Oj0JCQkJCQlJTlRFR0VSICgtNjMuLjApCisKK0NDVHJDSC1Qb3dlckNvbnRyb2xJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlkZW50aXR5CQkJCQkJVEZDUy1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mbworfQorCitDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNCA6Oj0JCVNFUVVFTkNFIHsKKwl0ZmNzLUlkZW50aXR5CQkJCQkJVEZDUy1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNAorfQorCitDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNSA6Oj0JCVNFUVVFTkNFIHsKKwl0ZmNzLUlkZW50aXR5CQkJCQkJVEZDUy1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNQorfQorCitDQ1RyQ0gtUG93ZXJDb250cm9sSW5mby1yNyA6Oj0JCVNFUVVFTkNFIHsKKwl0ZmNzLUlkZW50aXR5CQkJCQkJVEZDUy1JZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNworfQorCitDRC1BY2Nlc3NTbG90U3ViY2hhbm5lbCA6Oj0JCQlJTlRFR0VSICgwLi4xMSkKKworQ0QtQWNjZXNzU2xvdFN1YmNoYW5uZWxMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUNEc3ViQ2gpKSBPRgorCQkJCQkJCQkJCUNELUFjY2Vzc1Nsb3RTdWJjaGFubmVsCisKK0NELUNBLUlDSC1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CUlOVEVHRVIgKDAuLjI1NSkKKworQ0QtUHJlYW1ibGVTY3JhbWJsaW5nQ29kZSA6Oj0JCUlOVEVHRVIgKDAuLjc5KQorCitDRC1TaWduYXR1cmVDb2RlIDo6PQkJCQlJTlRFR0VSICgwLi4xNSkKKworQ0QtU2lnbmF0dXJlQ29kZUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBDUENILUNEc2lnKSkgT0YKKwkJCQkJCQkJCQlDRC1TaWduYXR1cmVDb2RlCisKK0NlbGxBbmRDaGFubmVsSWRlbnRpdHkgOjo9CQkJU0VRVUVOQ0UgeworCS0tIGJ1cnN0VHlwZSBtYXkgYmUgc2V0IHRvIGVpdGhlciB2YWx1ZSBhbmQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyIGZvciAxLjI4IE1jcHMgVERELgorCWJ1cnN0VHlwZQkJCQkJCQlCdXJzdFR5cGUsCisJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nLAorCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQKKwl9CisKK0NlbGxQYXJhbWV0ZXJzSUQgOjo9CQkJCUlOVEVHRVIgKDAuLjEyNykKKworQ2ZudGFyZ2V0c2ZuZnJhbWVvZmZzZXQgOjo9CQkJCUlOVEVHRVIoMC4uMjU1KQorCitDaGFubmVsQXNzaWdubWVudEFjdGl2ZSA6Oj0JCQlDSE9JQ0UgeworCW5vdEFjdGl2ZQkJCQkJCQlOVUxMLAorCWlzQWN0aXZlCQkJCQkJCUF2YWlsYWJsZU1pbmltdW1TRi1MaXN0VkNBTQorfQorCitDaGFubmVsaXNhdGlvbkNvZGUyNTYgOjo9CQkJSU5URUdFUiAoMC4uMjU1KQorCitDaGFubmVsUmVxUGFyYW1zRm9yVUNTTSA6Oj0JCQlTRVFVRU5DRSB7CisJYXZhaWxhYmxlQVAtU2lnbmF0dXJlTGlzdAkJCUF2YWlsYWJsZUFQLVNpZ25hdHVyZUxpc3QsCisJYXZhaWxhYmxlQVAtU3ViY2hhbm5lbExpc3QJCQlBdmFpbGFibGVBUC1TdWJjaGFubmVsTGlzdAkJCU9QVElPTkFMCit9CisKK0Nsb3NlZExvb3BUaW1pbmdBZGpNb2RlIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNsb3QxLCBzbG90MiB9CisKK0NvZGVOdW1iZXJEU0NIIDo6PQkJCQkJSU5URUdFUiAoMC4uMjU1KQorCitDb2RlUmFuZ2UgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXBkc2NoLUNvZGVNYXBMaXN0CQkJCQlQRFNDSC1Db2RlTWFwTGlzdAorfQorCitDb2RlV29yZFNldCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlsb25nQ1dTLAorCQkJCQkJCQkJCW1lZGl1bUNXUywKKwkJCQkJCQkJCQlzaG9ydENXUywKKwkJCQkJCQkJCQlzc2R0T2ZmIH0KKworQ29tbW9uVGltZXNsb3RJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogc2Vjb25kSW50ZXJsZWF2aW5nTW9kZSBpcyBNRCwgYnV0IHNpbmNlIGl0IGNhbiBiZSBlbmNvZGVkIGluIGEgc2luZ2xlCisJLS0gYml0IGl0IGlzIG5vdCBkZWZpbmVkIGFzIE9QVElPTkFMLgorCXNlY29uZEludGVybGVhdmluZ01vZGUJCQkJU2Vjb25kSW50ZXJsZWF2aW5nTW9kZSwKKwl0ZmNpLUNvZGluZwkJCQkJCQlURkNJLUNvZGluZwkJCQkJCQlPUFRJT05BTCwKKwlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQsCisJcmVwZXRpdGlvblBlcmlvZEFuZExlbmd0aAkJCVJlcGV0aXRpb25QZXJpb2RBbmRMZW5ndGgJCQlPUFRJT05BTAorfQorCitDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0ggOjo9CQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogc2Vjb25kSW50ZXJsZWF2aW5nTW9kZSBpcyBNRCwgYnV0IHNpbmNlIGl0IGNhbiBiZSBlbmNvZGVkIGluIGEgc2luZ2xlCisJLS0gYml0IGl0IGlzIG5vdCBkZWZpbmVkIGFzIE9QVElPTkFMLgorCXNlY29uZEludGVybGVhdmluZ01vZGUJCQkJU2Vjb25kSW50ZXJsZWF2aW5nTW9kZSwKKwl0ZmNpLUNvZGluZwkJCQkJCQlURkNJLUNvZGluZwkJCQkJCQlPUFRJT05BTCwKKwlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQsCisJcmVwZXRpdGlvblBlcmlvZExlbmd0aEFuZE9mZnNldAkJUmVwZXRpdGlvblBlcmlvZExlbmd0aEFuZE9mZnNldAkJT1BUSU9OQUwKK30KKworQ29uc3RhbnRWYWx1ZSA6Oj0JCQkJCUlOVEVHRVIgKC0zNS4uLTEwKQorCitDb25zdGFudFZhbHVlVGRkIDo6PQkJCQlJTlRFR0VSICgtMzUuLjEwKQorCitDUENILVBlcnNpc3RlbmNlTGV2ZWxzIDo6PQkJCVNFUVVFTkNFIHsKKwljcGNoLVNldElECQkJCQkJCUNQQ0gtU2V0SUQsCisJZHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxURi1MaXN0CQlEeW5hbWljUGVyc2lzdGVuY2VMZXZlbFRGLUxpc3QJCit9CisKK0NQQ0gtUGVyc2lzdGVuY2VMZXZlbHNMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENQQ0hzZXRzKSkgT0YKKwkJCQkJCQkJCQlDUENILVBlcnNpc3RlbmNlTGV2ZWxzCisKK0NQQ0gtU2V0SW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwljcGNoLVNldElECQkJCQkJCUNQQ0gtU2V0SUQsCisJdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJdGZjcwkJCQkJCQkJVEZDUywKKwlhcC1QcmVhbWJsZVNjcmFtYmxpbmdDb2RlCQkJQVAtUHJlYW1ibGVTY3JhbWJsaW5nQ29kZSwKKwlhcC1BSUNILUNoYW5uZWxpc2F0aW9uQ29kZQkJCUFQLUFJQ0gtQ2hhbm5lbGlzYXRpb25Db2RlLAorCWNkLVByZWFtYmxlU2NyYW1ibGluZ0NvZGUJCQlDRC1QcmVhbWJsZVNjcmFtYmxpbmdDb2RlLAorCWNkLUNBLUlDSC1DaGFubmVsaXNhdGlvbkNvZGUJCUNELUNBLUlDSC1DaGFubmVsaXNhdGlvbkNvZGUsCisJY2QtQWNjZXNzU2xvdFN1YmNoYW5uZWxMaXN0CQkJQ0QtQWNjZXNzU2xvdFN1YmNoYW5uZWxMaXN0CQkJT1BUSU9OQUwsCisJY2QtU2lnbmF0dXJlQ29kZUxpc3QJCQkJQ0QtU2lnbmF0dXJlQ29kZUxpc3QJCQkJT1BUSU9OQUwsCisJZGVsdGFQcC1tCQkJCQkJCURlbHRhUHAtbSwKKwl1bC1EUENDSC1TbG90Rm9ybWF0CQkJCQlVTC1EUENDSC1TbG90Rm9ybWF0LAorCW4tU3RhcnRNZXNzYWdlCQkJCQkJTi1TdGFydE1lc3NhZ2UsCisJbi1FT1QJCQkJCQkJCU4tRU9ULAorCS0tIFRBQlVMQVI6IFZDQU0gaW5mbyBoYXMgYmVlbiBuZXN0ZWQgaW5zaWRlIENoYW5uZWxBc3NpZ25tZW50QWN0aXZlLAorCS0tIHdoaWNoIGluIHR1cm4gaXMgbWFuZGF0b3J5IHNpbmNlIGl0J3Mgb25seSBhIGJpbmFyeSBjaG9pY2UuCisJY2hhbm5lbEFzc2lnbm1lbnRBY3RpdmUJCQkJQ2hhbm5lbEFzc2lnbm1lbnRBY3RpdmUsCisJY3BjaC1TdGF0dXNJbmRpY2F0aW9uTW9kZQkJCUNQQ0gtU3RhdHVzSW5kaWNhdGlvbk1vZGUsCisJcGNwY2gtQ2hhbm5lbEluZm9MaXN0CQkJCVBDUENILUNoYW5uZWxJbmZvTGlzdAorfQorCitDUENILVNldEluZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q1BDSHNldHMpKSBPRgorCQkJCQkJCQkJCUNQQ0gtU2V0SW5mbworCitDUENILVN0YXR1c0luZGljYXRpb25Nb2RlIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGEtbW9kZSwKKwkJCQkJCQkJCQlwYW1zZi1tb2RlIH0KKworQ1FJLVJlcGV0aXRpb25GYWN0b3IgOjo9CQkJSU5URUdFUigxLi40KQorCitDU0lDSC1Qb3dlck9mZnNldCA6Oj0JCQkJSU5URUdFUiAoLTEwLi41KQorCistLSBEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZUZERCBhbmQgRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVUREQgY29ycmVzcG9uZHMgdG8gCistLSBJRSAiRGVmYXVsdCBEUENIIE9mZnNldCBWYWx1ZSIgZGVwZW5kaW5nIG9uIHRoZSBtb2RlLgorLS0gQWN0dWFsIHZhbHVlIERlZmF1bHREUENILU9mZnNldFZhbHVlRkREID0gSUUgdmFsdWUgKiA1MTIgCitEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZUZERCA6Oj0JCUlOVEVHRVIgKDAuLjU5OSkKKworRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVUREQgOjo9CQlJTlRFR0VSICgwLi43KQorCitEZWx0YVBwLW0gOjo9CQkJCQkJSU5URUdFUiAoLTEwLi4xMCkKKworRGVsdGFDUUkgOjo9CQkJCQkJSU5URUdFUiAoMC4uOCkKKworRGVsdGFOQUNLIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjgpCisKK0RlbHRhQUNLIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjgpCisKKy0tIEFjdHVhbCB2YWx1ZSBEZWx0YVNJUiA9IElFIHZhbHVlICogMC4xCitEZWx0YVNJUiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4zMCkKKworREhTLVN5bmMgOjo9CQkJCQkJSU5URUdFUiAoLTIwLi4xMCkKKworREwtQ0NUckNoIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwl0aW1lSW5mbwkJCQkJCQlUaW1lSW5mbywKKwljb21tb25UaW1lc2xvdEluZm8JCQkJCUNvbW1vblRpbWVzbG90SW5mbwkJCQkJT1BUSU9OQUwsCisJZGwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcwkJCQlPUFRJT05BTCwKKwl1bC1DQ1RyQ2hUUENMaXN0CQkJCQlVTC1DQ1RyQ2hUUENMaXN0CQkJCQlPUFRJT05BTAkKK30KKworREwtQ0NUckNoLXI0IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCXRpbWVJbmZvCQkJCQkJCVRpbWVJbmZvLAorCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKKwl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCU9QVElPTkFMCisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKKwkJfQorCX0sCisJdWwtQ0NUckNoVFBDTGlzdAkJCQkJVUwtQ0NUckNoVFBDTGlzdAkJT1BUSU9OQUwKK30KKworREwtQ0NUckNoLXI3IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCXRpbWVJbmZvCQkJCQkJCVRpbWVJbmZvLAorCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKKwl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzCU9QVElPTkFMCisJCX0sCisJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSCQlPUFRJT05BTAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0CU9QVElPTkFMCisJCX0KKwl9LAorCXVsLUNDVHJDaFRQQ0xpc3QJCQkJCVVMLUNDVHJDaFRQQ0xpc3QJCU9QVElPTkFMCit9CisKK0RMLUNDVHJDaExpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlETC1DQ1RyQ2gKKworREwtQ0NUckNoTGlzdC1yNyA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJREwtQ0NUckNoLXI3CisKK0RMLUNDVHJDaExpc3QtcjQgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCURMLUNDVHJDaC1yNAorCitETC1DQ1RyQ2hMaXN0VG9SZW1vdmUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCisKK0RMLUNDVHJDaFRQQ0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgwLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCQlURkNTLUlkZW50aXR5CisKK0RMLUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCQlTRVFVRU5DRSB7CisJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJT1BUSU9OQUwsCisJc2YtQW5kQ29kZU51bWJlcgkJCQkJU0Y1MTItQW5kQ29kZU51bWJlciwKKwlzY3JhbWJsaW5nQ29kZUNoYW5nZQkJCQlTY3JhbWJsaW5nQ29kZUNoYW5nZQkJCQlPUFRJT05BTAorfQorCitETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heERQQ0gtRExjaGFuKSkgT0YKKwkJCQkJCQkJCQlETC1DaGFubmVsaXNhdGlvbkNvZGUKKworREwtQ29tbW9uSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVGREQJT1BUSU9OQUwsCisJCQlkcGNoLUNvbXByZXNzZWRNb2RlSW5mbwkJCQlEUENILUNvbXByZXNzZWRNb2RlSW5mbwkJT1BUSU9OQUwsCisJCQl0eC1EaXZlcnNpdHlNb2RlCQkJCQlUWC1EaXZlcnNpdHlNb2RlCQkJT1BUSU9OQUwsCisJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkJCQkJCQkJCVNTRFQtSW5mb3JtYXRpb24JCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERAlPUFRJT05BTAorCQl9CisJfQorfQorCitETC1Db21tb25JbmZvcm1hdGlvbi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjQJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlRkRECU9QVElPTkFMLAorCQkJZHBjaC1Db21wcmVzc2VkTW9kZUluZm8JCQkJRFBDSC1Db21wcmVzc2VkTW9kZUluZm8JCU9QVElPTkFMLAorCQkJdHgtRGl2ZXJzaXR5TW9kZQkJCQkJVFgtRGl2ZXJzaXR5TW9kZQkJCU9QVElPTkFMLAorCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15CQkJCQkJCQlTU0RULUluZm9ybWF0aW9uLXI0CQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJdGRkMzg0CQkJCQkJCQlOVUxMLAorCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJCQl9CisJCQl9LAorCQkJZGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWUJCQkJRGVmYXVsdERQQ0gtT2Zmc2V0VmFsdWVUREQJT1BUSU9OQUwKKwkJfQorCX0KK30KKworCitETC1Db21tb25JbmZvcm1hdGlvbi1yNSA6Oj0JCQlTRVFVRU5DRSB7CisJZGwtRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1EUENILUluZm9Db21tb24tcjQJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZUZERAlPUFRJT05BTCwKKwkJCWRwY2gtQ29tcHJlc3NlZE1vZGVJbmZvCQkJCURQQ0gtQ29tcHJlc3NlZE1vZGVJbmZvCQlPUFRJT05BTCwKKwkJCXR4LURpdmVyc2l0eU1vZGUJCQkJCVRYLURpdmVyc2l0eU1vZGUJCQlPUFRJT05BTCwKKwkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teQkJCQkJCQkJU1NEVC1JbmZvcm1hdGlvbi1yNAkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJCXRkZDM4NAkJCQkJCQkJTlVMTCwKKwkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJCQkJfQorCQkJfSwKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlVERECU9QVElPTkFMCisJCX0KKwl9LAorCW1hYy1oc1Jlc2V0SW5kaWNhdG9yCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTAorfQorCitETC1Db21tb25JbmZvcm1hdGlvbi1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJZGwtZHBjaEluZm9Db21tb24JCQkJCUNIT0lDRSB7CisJCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uLXI2LAorCQlkbC1GRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1GRFBDSC1JbmZvQ29tbW9uLXI2CisJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlRkRECU9QVElPTkFMLAorCQkJZHBjaC1Db21wcmVzc2VkTW9kZUluZm8JCQkJRFBDSC1Db21wcmVzc2VkTW9kZUluZm8JCU9QVElPTkFMLAorCQkJdHgtRGl2ZXJzaXR5TW9kZQkJCQkJVFgtRGl2ZXJzaXR5TW9kZQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJCXRkZDM4NAkJCQkJCQkJTlVMTCwKKwkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJCQkJfQorCQkJfSwKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlVERECU9QVElPTkFMCisJCX0KKwl9LAorCW1hYy1oc1Jlc2V0SW5kaWNhdG9yCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTCwKKwlwb3N0VmVyaWZpY2F0aW9uUGVyaW9kCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTAorfQorCitETC1Db21tb25JbmZvcm1hdGlvbi1yNyA6Oj0JCQlTRVFVRU5DRSB7CisJZGwtZHBjaEluZm9Db21tb24JCQkJCUNIT0lDRSB7CisJCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uLXI2LAorCQlkbC1GRFBDSC1JbmZvQ29tbW9uCQkJCQlETC1GRFBDSC1JbmZvQ29tbW9uLXI2CisJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRlZmF1bHREUENILU9mZnNldFZhbHVlCQkJCURlZmF1bHREUENILU9mZnNldFZhbHVlRkRECU9QVElPTkFMLAorCQkJZHBjaC1Db21wcmVzc2VkTW9kZUluZm8JCQkJRFBDSC1Db21wcmVzc2VkTW9kZUluZm8JCU9QVElPTkFMLAorCQkJdHgtRGl2ZXJzaXR5TW9kZQkJCQkJVFgtRGl2ZXJzaXR5TW9kZQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJCXRkZDM4NAkJCQkJCQkJTlVMTCwKKwkJCQl0ZGQ3NjgJCQkJCQkJCU5VTEwsCisJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCQkJCX0KKwkJCX0sCisJCQlkZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZQkJCQlEZWZhdWx0RFBDSC1PZmZzZXRWYWx1ZVRERAlPUFRJT05BTAorCQl9CisJfSwKKwltYWMtaHNSZXNldEluZGljYXRvcgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJT1BUSU9OQUwsCisJcG9zdFZlcmlmaWNhdGlvblBlcmlvZAkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJT1BUSU9OQUwKK30KKworREwtQ29tbW9uSW5mb3JtYXRpb25Qb3N0IDo6PQkJU0VRVUVOQ0UgeworCWRsLURQQ0gtSW5mb0NvbW1vbgkJCQkJREwtRFBDSC1JbmZvQ29tbW9uUG9zdAorfQorCitETC1Db21tb25JbmZvcm1hdGlvblByZWRlZiA6Oj0JCVNFUVVFTkNFIHsKKwlkbC1EUENILUluZm9Db21tb24JCQkJCURMLURQQ0gtSW5mb0NvbW1vblByZWRlZglPUFRJT05BTAorfQorCitETC1Db21wcmVzc2VkTW9kZU1ldGhvZCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwkJCQkJCQkJCQlkdW1teSwgc2YtMiwKKwkJCQkJCQkJCQloaWdoZXJMYXllclNjaGVkdWxpbmcgfQorCitETC1EUENILUluZm9Db21tb24gOjo9CQkJCVNFUVVFTkNFIHsKKwljZm5IYW5kbGluZwkJCQkJCQlDSE9JQ0UgeworCQltYWludGFpbgkJCQkJCQlOVUxMLAorCQlpbml0aWFsaXNlCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIElFIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCQkJLS0gVGhlIElFIHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQKKwkJCWR1bW15CQkJCQkJCQlDZm50YXJnZXRzZm5mcmFtZW9mZnNldAkJCQlPUFRJT05BTAorCQl9CisJfSwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQgCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTCwKKwkJCXBvd2VyT2Zmc2V0UGlsb3QtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0UGlsb3QtcGRwZGNoLAorCQkJZGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJT1BUSU9OQUwsCisJCQktLSBUQUJVTEFSOiBUaGUgbnVtYmVyIG9mIHBpbG90IGJpdHMgaXMgbmVzdGVkIGluc2lkZSB0aGUgc3ByZWFkaW5nIGZhY3Rvci4KKwkJCXNwcmVhZGluZ0ZhY3RvckFuZFBpbG90CQkJCVNGNTEyLUFuZFBpbG90LAorCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworREwtRFBDSC1JbmZvQ29tbW9uLXI0IDo6PQkJCVNFUVVFTkNFIHsKKwljZm5IYW5kbGluZwkJCQkJCQlDSE9JQ0UgeworCQltYWludGFpbgkJCQkJCQlOVUxMLAorCQlpbml0aWFsaXNlCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIElFIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCQkJLS0gVGhlIElFIHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQKKwkJCWR1bW15CQkJCQkJCQlDZm50YXJnZXRzZm5mcmFtZW9mZnNldAkJCQlPUFRJT05BTAorCQl9CisJfSwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQgCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkbC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTCwKKwkJCXBvd2VyT2Zmc2V0UGlsb3QtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0UGlsb3QtcGRwZGNoLAorCQkJZGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJRGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJT1BUSU9OQUwsCisJCQktLSBUQUJVTEFSOiBUaGUgbnVtYmVyIG9mIHBpbG90IGJpdHMgaXMgbmVzdGVkIGluc2lkZSB0aGUgc3ByZWFkaW5nIGZhY3Rvci4KKwkJCXNwcmVhZGluZ0ZhY3RvckFuZFBpbG90CQkJCVNGNTEyLUFuZFBpbG90LAorCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJT1BUSU9OQUwKKwkJfQorCX0sCistLSBUaGUgSUUgbWFjLWQtSEZOLWluaXRpYWwtdmFsdWUgc2hvdWxkIGJlIGFic2VudCBpbiB0aGUgUlJDQ29ubmVjdGlvblNldHVwLXI0LUlFcyBvciAKKy0tIFJSQ0Nvbm5lY3Rpb25TZXR1cC1yNS1JRXMgb3IgSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNC1JRXMgb3IgSGFuZG92ZXJUb1VUUkFOQ29tbWFuZC1yNS1JRXMgYW5kCistLSBpZiB0aGUgSUUgaXMgaW5jbHVkZWQsIHRoZSBnZW5lcmFsIGVycm9yIGhhbmRsaW5nIGZvciBjb25kaXRpb25hbCBJRXMgYXBwbGllcy4KKwltYWMtZC1IRk4taW5pdGlhbC12YWx1ZQkJCQlNQUMtZC1IRk4taW5pdGlhbC12YWx1ZQkJCQlPUFRJT05BTAorCit9CisKK0RMLURQQ0gtSW5mb0NvbW1vbi1yNiA6Oj0JCQkJU0VRVUVOQ0UgeworCWNmbkhhbmRsaW5nCQkJCQkJCQlDSE9JQ0UgeworCQltYWludGFpbgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltaW5nbWFpbnRhaW5lZHN5bmNoaW5kCQkJCVRpbWluZ01haW50YWluZWRTeW5jaEluZAkJCU9QVElPTkFMCisJCX0sCisJCWluaXRpYWxpc2UJCQkJCQkJCU5VTEwKKwl9LAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCQlDSE9JQ0UgeworCQlmZGQgCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMLAorCQkJcG93ZXJPZmZzZXRQaWxvdC1wZHBkY2gJCQkJCVBvd2VyT2Zmc2V0UGlsb3QtcGRwZGNoLAorCQkJZGwtcmF0ZS1tYXRjaGluZy1yZXN0cmljdGlvbgkJCURsLXJhdGUtbWF0Y2hpbmctcmVzdHJpY3Rpb24JCU9QVElPTkFMLAorCQkJLS0gVEFCVUxBUjogVGhlIG51bWJlciBvZiBwaWxvdCBiaXRzIGlzIG5lc3RlZCBpbnNpZGUgdGhlIHNwcmVhZGluZyBmYWN0b3IuCisJCQlzcHJlYWRpbmdGYWN0b3JBbmRQaWxvdAkJCQkJU0Y1MTItQW5kUGlsb3QsCisJCQlwb3NpdGlvbkZpeGVkT3JGbGV4aWJsZQkJCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCQlCT09MRUFOCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWRsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCURMLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCU9QVElPTkFMCisJCX0KKwl9LAorCS0tIFRoZSBJRSBtYWMtZC1IRk4taW5pdGlhbC12YWx1ZSBzaG91bGQgYmUgYWJzZW50IGluIHRoZSBSUkNDb25uZWN0aW9uU2V0dXAgYW5kIHRoZQorCS0tIEhhbmRvdmVyVG9VVFJBTkNvbW1hbmQgbWVzc2FnZXMuIElmIHRoZSBJRSBpcyBpbmNsdWRlZCwgdGhlIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcKKwktLSBmb3IgY29uZGl0aW9uYWwgSUVzIGFwcGxpZXMuCisJbWFjLWQtSEZOLWluaXRpYWwtdmFsdWUJCQkJTUFDLWQtSEZOLWluaXRpYWwtdmFsdWUJCQkJT1BUSU9OQUwKK30KKworREwtRFBDSC1JbmZvQ29tbW9uUG9zdCA6Oj0JCQlTRVFVRU5DRSB7CisJZGwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJREwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJCU9QVElPTkFMCit9CisKK0RMLURQQ0gtSW5mb0NvbW1vblByZWRlZiA6Oj0JCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBUQUJVTEFSOiBUaGUgbnVtYmVyIG9mIHBpbG90IGJpdHMgaXMgbmVzdGVkIGluc2lkZSB0aGUgc3ByZWFkaW5nIGZhY3Rvci4KKwkJCXNwcmVhZGluZ0ZhY3RvckFuZFBpbG90CQkJCVNGNTEyLUFuZFBpbG90LAorCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8KKwkJfQorCX0KK30KKworREwtRFBDSC1JbmZvUGVyUkwgOjo9CQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKKwkJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCisJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCQlTU0RULUNlbGxJZGVudGl0eQkJCQlPUFRJT05BTCwKKwkJY2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQkJQ2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQlPUFRJT05BTAorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkbC1DQ1RyQ2hMaXN0VG9Fc3RhYmxpc2gJCQlETC1DQ1RyQ2hMaXN0CQkJCQlPUFRJT05BTCwKKwkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCisJfQorfQorCitETC1EUENILUluZm9QZXJSTC1yNCA6Oj0JCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCisJCWRwY2gtRnJhbWVPZmZzZXQJCQkJCURQQ0gtRnJhbWVPZmZzZXQsCisJCXNlY29uZGFyeUNQSUNILUluZm8JCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCisJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQlETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAorCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleCwKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQkJU1NEVC1DZWxsSWRlbnRpdHkJCQkJT1BUSU9OQUwsCisJCWNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJCUNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJT1BUSU9OQUwKKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZGwtQ0NUckNoTGlzdFRvRXN0YWJsaXNoCQkJREwtQ0NUckNoTGlzdC1yNAkJCQlPUFRJT05BTCwKKwkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCisJfQorfQorCitETC1EUENILUluZm9QZXJSTC1yNSA6Oj0JCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCisJCWRwY2gtRnJhbWVPZmZzZXQJCQkJCURQQ0gtRnJhbWVPZmZzZXQsCisJCXNlY29uZGFyeUNQSUNILUluZm8JCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCisJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQlETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAorCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleCwKKwkJcG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCU9QVElPTkFMLAorCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCWR1bW15CQkJCQkJCQlTU0RULUNlbGxJZGVudGl0eQkJCQlPUFRJT05BTCwKKwkJY2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQkJQ2xvc2VkTG9vcFRpbWluZ0Fkak1vZGUJCQlPUFRJT05BTAorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkbC1DQ1RyQ2hMaXN0VG9Fc3RhYmxpc2gJCQlETC1DQ1RyQ2hMaXN0LXI0CQkJCU9QVElPTkFMLAorCQlkbC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQkJREwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJT1BUSU9OQUwKKwl9Cit9CisKK0RMLURQQ0gtSW5mb1BlclJMLXI2IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwkJZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKKwkJc2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q1BJQ0gtSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QsCisJCXRwYy1Db21iaW5hdGlvbkluZGV4CQkJCVRQQy1Db21iaW5hdGlvbkluZGV4LAorCQlwb3dlck9mZnNldFRQQy1wZHBkY2gJCQkJUG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJT1BUSU9OQUwsCisJCWNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJCUNsb3NlZExvb3BUaW1pbmdBZGpNb2RlCQkJT1BUSU9OQUwKKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZGwtQ0NUckNoTGlzdFRvRXN0YWJsaXNoCQkJREwtQ0NUckNoTGlzdC1yNAkJCQlPUFRJT05BTCwKKwkJZGwtQ0NUckNoTGlzdFRvUmVtb3ZlCQkJCURMLUNDVHJDaExpc3RUb1JlbW92ZQkJCU9QVElPTkFMCisJfQorfQorCitETC1EUENILUluZm9QZXJSTC1yNyA6Oj0JCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCVBDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QsCisJCWRwY2gtRnJhbWVPZmZzZXQJCQkJCURQQ0gtRnJhbWVPZmZzZXQsCisJCXNlY29uZGFyeUNQSUNILUluZm8JCQkJCVNlY29uZGFyeUNQSUNILUluZm8JCQkJT1BUSU9OQUwsCisJCWRsLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQlETC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0LAorCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleCwKKwkJcG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCU9QVElPTkFMLAorCQljbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCQlDbG9zZWRMb29wVGltaW5nQWRqTW9kZQkJCU9QVElPTkFMCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRsLUNDVHJDaExpc3RUb0VzdGFibGlzaAkJCURMLUNDVHJDaExpc3QtcjcJCQkJT1BUSU9OQUwsCisJCWRsLUNDVHJDaExpc3RUb1JlbW92ZQkJCQlETC1DQ1RyQ2hMaXN0VG9SZW1vdmUJCQlPUFRJT05BTAorCX0KK30KKworREwtRkRQQ0gtSW5mb1BlclJMLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlwQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0CQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwlmZHBjaC1GcmFtZU9mZnNldAkJCQkJRFBDSC1GcmFtZU9mZnNldCwKKwlzZWNvbmRhcnlDUElDSC1JbmZvCQkJCQlTZWNvbmRhcnlDUElDSC1JbmZvCQkJCU9QVElPTkFMLAorCXNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCisJZGwtQ2hhbm5lbGlzYXRpb25Db2RlCQkJCUlOVEVHRVIgKDAuLjI1NSksCisJdHBjLUNvbWJpbmF0aW9uSW5kZXgJCQkJVFBDLUNvbWJpbmF0aW9uSW5kZXgKK30KKworREwtRFBDSC1JbmZvUGVyUkwtUG9zdEZERCA6Oj0JCQkJCQkJCVNFUVVFTkNFIHsKKwkJcENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdAkJCQlQQ1BJQ0gtVXNhZ2VGb3JDaGFubmVsRXN0LAorCQlkbC1DaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwkJdHBjLUNvbWJpbmF0aW9uSW5kZXgJCQkJCVRQQy1Db21iaW5hdGlvbkluZGV4Cit9CisKK0RMLURQQ0gtSW5mb1BlclJMLVBvc3RUREQgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1EUENILVRpbWVzbG90c0NvZGVzCQkJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2RlcworfQorCitETC1EUENILUluZm9QZXJSTC1Qb3N0VERELUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlkbC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0Cit9CisKK0RMLURQQ0gtUG93ZXJDb250cm9sSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlkcGMtTW9kZQkJCQkJCQkJRFBDLU1vZGUKKwkJfSwKKwkJdGRkCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRwYy1TdGVwU2l6ZVRERAkJCQkJCQlUUEMtU3RlcFNpemVUREQJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitETC1GRFBDSC1JbmZvQ29tbW9uLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwljZm5IYW5kbGluZwkJCQkJCQlDSE9JQ0UgeworCQltYWludGFpbgkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1pbmdtYWludGFpbmVkc3luY2hpbmQJCQlUaW1pbmdNYWludGFpbmVkU3luY2hJbmQJCQlPUFRJT05BTAorCQl9LAorCQlpbml0aWFsaXNlCQkJCQkJCU5VTEwKKwl9LAorCWRsLUZEUENILVBvd2VyQ29udHJvbEluZm8JCQlETC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlPUFRJT05BTCwKKy0tIEFjdHVhbCB2YWx1ZSBkbC1GRFBDSC1UUENjb21tYW5kRXJyb3JSYXRlID0gSUUgdmFsdWUgKiAwLjAxCistLSBkbC1GRFBDSC1UUENjb21tYW5kRXJyb3JSYXRlIHZhbHVlcyAxMS4uMTYgYXJlIHNwYXJlIGFuZCBzaGFsbCBub3QgYmUgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgCistLSB0aGUgcHJvdG9jb2wKKwlkbC1GRFBDSC1UUENjb21tYW5kRXJyb3JSYXRlCQlJTlRFR0VSICgxLi4xNikJCU9QVElPTkFMCit9CisKK0RMLUZyYW1lVHlwZSA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWRsLUZyYW1lVHlwZUEsIGRsLUZyYW1lVHlwZUIgfQorCitETC1IU1BEU0NILUluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwlocy1zY2NoLUluZm8JCQkJCUhTLVNDQ0gtSW5mbwlPUFRJT05BTCwKKwltZWFzdXJlbWVudC1mZWVkYmFjay1JbmZvCQlNZWFzdXJlbWVudC1GZWVkYmFjay1JbmZvCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwl0ZGQJCQkJCQkJCUNIT0lDRXsKKwkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZGwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uCURMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbgkgIAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJaHMtUERTQ0gtTWlkYW1ibGUtQ29uZmlndXJhdGlvbi10ZGQxMjgKKwkJCQkJCUhTLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tVEREMTI4CQkJCU9QVElPTkFMCisJCQl9CisJCX0sCisJCWZkZAkJCQkJCQlOVUxMCisJfQorfQorCitETC1IU1BEU0NILUluZm9ybWF0aW9uLXI2IDo6PQlTRVFVRU5DRSB7CisJaHMtc2NjaC1JbmZvCQkJCQlIUy1TQ0NILUluZm8tcjYJCQkJCQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnQtZmVlZGJhY2stSW5mbwkJTWVhc3VyZW1lbnQtRmVlZGJhY2stSW5mbwkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCXRkZAkJCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZGwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uCQlETC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWhzLVBEU0NILU1pZGFtYmxlLUNvbmZpZ3VyYXRpb24tdGRkMTI4CisJCQkJCQlIUy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLVRERDEyOAkJCQlPUFRJT05BTAorCQkJfQorCQl9LAorCQlmZGQJCQkJCQkJTlVMTAorCX0KK30KKworREwtSFNQRFNDSC1JbmZvcm1hdGlvbi1yNyA6Oj0JU0VRVUVOQ0UgeworCWhzLXNjY2gtSW5mbwkJCQkJSFMtU0NDSC1JbmZvLXI3CQkJCQkJCU9QVElPTkFMLAorCW1lYXN1cmVtZW50LWZlZWRiYWNrLUluZm8JCU1lYXN1cmVtZW50LUZlZWRiYWNrLUluZm8JCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQl0ZGQJCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWRsLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbgkJREwtSFNQRFNDSC1UUy1Db25maWd1cmF0aW9uCU9QVElPTkFMCisJCQl9LAorCQkJdGRkNzY4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlkbC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24JCURMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbi1WSENSCU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlocy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLXRkZDEyOAorCQkJCQkJSFMtUERTQ0gtTWlkYW1ibGUtQ29uZmlndXJhdGlvbi1UREQxMjgJCQkJCQlPUFRJT05BTAorCQkJfQorCQl9LAorCQlmZGQJCQkJCQkJTlVMTAorCX0KK30KKworLS0gVGhlIElFICdETC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24nIGFwcGxpZXMgdG8gdGRkLTM4NCBSRUwtNSBvbndhcmQKK0RMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbiA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3QJCQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1ETAorfQorCistLSBUaGUgSUUgJ0RMLUhTUERTQ0gtVFMtQ29uZmlndXJhdGlvbi1WSENSJyBhcHBsaWVzIHRvIHRkZC03NjggUkVMLTcgb253YXJkCitETC1IU1BEU0NILVRTLUNvbmZpZ3VyYXRpb24tVkhDUiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLTEpKSBPRgorCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdAkJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLURMLVZIQ1IKK30KKworREwtSW5mb3JtYXRpb25QZXJSTCA6Oj0JCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJCS0tIGR1bW15MSBhbmQgZHVtbXkgMiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15MQkJCQkJCQkJUERTQ0gtU0hPLURDSC1JbmZvCQkJT1BUSU9OQUwsCisJCQlkdW1teTIJCQkJCQkJCVBEU0NILUNvZGVNYXBwaW5nCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8KKwl9LAorCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTAkJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSAkJCQkJT1BUSU9OQUwKK30KKworREwtSW5mb3JtYXRpb25QZXJSTC1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQkJLS0gZHVtbXkxIGFuZCBkdW1teSAyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQlPUFRJT05BTCwKKwkJCWR1bW15MgkJCQkJCQkJUERTQ0gtQ29kZU1hcHBpbmcJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNAorCX0sCisJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLXI0CQkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlTQ0NQQ0gtSW5mb0ZvckZBQ0gtcjQJCQkJT1BUSU9OQUwsCisJY2VsbC1pZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwKK30KKworREwtSW5mb3JtYXRpb25QZXJSTC1yNSA6Oj0JCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQkJLS0gZHVtbXkxIGFuZCBkdW1teSAyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2Ygc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwkJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQlPUFRJT05BTCwKKwkJCWR1bW15MgkJCQkJCQkJUERTQ0gtQ29kZU1hcHBpbmcJCQlPUFRJT05BTCwKKwkJCXNlcnZpbmdIU0RTQ0gtUkwtaW5kaWNhdG9yCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNAorCX0sCisJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLXI1CQkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlTQ0NQQ0gtSW5mb0ZvckZBQ0gtcjQJCQkJT1BUSU9OQUwsCisJY2VsbC1pZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwKK30KKworREwtSW5mb3JtYXRpb25QZXJSTC1yNWJpcyA6Oj0JCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teTEJCQkJCQkJCVBEU0NILVNITy1EQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJZHVtbXkyCQkJCQkJCQlQRFNDSC1Db2RlTWFwcGluZwkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0CisJfSwKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtcjUJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSC1yNAkJCQlPUFRJT05BTCwKKwljZWxsLWlkCQkJCQkJCQlDZWxsSWRlbnRpdHkJCQkJCQlPUFRJT05BTAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQlzZXJ2aW5nSFNEU0NILVJMLWluZGljYXRvcgkJCUJPT0xFQU4sCisJCQlzZXJ2aW5nRURDSC1STC1pbmRpY2F0b3IJCQlCT09MRUFOCisJCX0sCisJCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvLXI0CisJfSwKKwlkbC1kcGNoSW5mbwkJCQkJCQlDSE9JQ0UgeworCQlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtcjYsCisJCWRsLUZEUENILUluZm9QZXJSTAkJCQkJREwtRkRQQ0gtSW5mb1BlclJMLXI2CisJfQkJCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCWUtQUdDSC1JbmZvcm1hdGlvbgkJCQkJRS1BR0NILUluZm9ybWF0aW9uCQkJCQlPUFRJT05BTCwKKwllLUhJQ0gtSW5mbwkJCQkJCQlDSE9JQ0UJeworCQllLUhJQ0gtSW5mb3JtYXRpb24JCQkJCUUtSElDSC1JbmZvcm1hdGlvbiwKKwkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAorCX0JT1BUSU9OQUwsCisJZS1SR0NILUluZm8JCQkJCQkJQ0hPSUNFCXsKKwkJZS1SR0NILUluZm9ybWF0aW9uCQkJCQlFLVJHQ0gtSW5mb3JtYXRpb24sCisJCXJlbGVhc2VJbmRpY2F0b3IJCQkJCU5VTEwKKwl9CU9QVElPTkFMLAorCWNlbGwtaWQJCQkJCQkJCUNlbGxJZGVudGl0eQkJCQkJCU9QVElPTkFMCit9CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtcjcgOjo9CQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJCXNlcnZpbmdIU0RTQ0gtUkwtaW5kaWNhdG9yCQkJQk9PTEVBTiwKKwkJCXNlcnZpbmdFRENILVJMLWluZGljYXRvcgkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8tcjcKKwl9LAorCWRsLWRwY2hJbmZvCQkJCQkJCUNIT0lDRSB7CisJCWRsLURQQ0gtSW5mb1BlclJMCQkJCQlETC1EUENILUluZm9QZXJSTC1yNywKKwkJZGwtRkRQQ0gtSW5mb1BlclJMCQkJCQlETC1GRFBDSC1JbmZvUGVyUkwtcjYKKwl9CQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJZS1BR0NILUluZm9ybWF0aW9uCQkJCQlFLUFHQ0gtSW5mb3JtYXRpb24JCQkJCU9QVElPTkFMLAorCWUtSElDSC1JbmZvCQkJCQkJCUNIT0lDRQl7CisJCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uLAorCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCisJfQlPUFRJT05BTCwKKwllLVJHQ0gtSW5mbwkJCQkJCQlDSE9JQ0UJeworCQllLVJHQ0gtSW5mb3JtYXRpb24JCQkJCUUtUkdDSC1JbmZvcm1hdGlvbiwKKwkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAorCX0JT1BUSU9OQUwsCisJY2VsbC1pZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwKK30KKworREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMCisKK0RMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCQkJCQkJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1yNAorCitETC1JbmZvcm1hdGlvblBlclJMLUxpc3QtcjUgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtcjUKKworREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMLXI2CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtTGlzdC1yNWJpcyA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCQkJCQkJCQkJCURMLUluZm9ybWF0aW9uUGVyUkwtcjViaXMKKworREwtSW5mb3JtYXRpb25QZXJSTC1MaXN0LXI3IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlETC1JbmZvcm1hdGlvblBlclJMLXI3CisKK0RMLUluZm9ybWF0aW9uUGVyUkwtTGlzdFBvc3RGREQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTCkpIE9GCisJCQkJCQkJCQkJREwtSW5mb3JtYXRpb25QZXJSTC1Qb3N0RkRECisKK0RMLUluZm9ybWF0aW9uUGVyUkwtUG9zdEZERCA6Oj0JCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtUG9zdEZERAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQgOjo9CQlTRVFVRU5DRSB7CisJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvUG9zdCwKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwtUG9zdFRERAorfQorCitETC1JbmZvcm1hdGlvblBlclJMLVBvc3RUREQtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvUG9zdFRERC1MQ1ItcjQsCisJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLVBvc3RUREQtTENSLXI0Cit9CisKK0RMLVBEU0NILUluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkxCQkJCQkJCQlQRFNDSC1TSE8tRENILUluZm8JCQkJCU9QVElPTkFMLAorCWR1bW15MgkJCQkJCQkJUERTQ0gtQ29kZU1hcHBpbmcJCQkJCU9QVElPTkFMCit9CisKK0RsLXJhdGUtbWF0Y2hpbmctcmVzdHJpY3Rpb24gOjo9CVNFUVVFTkNFIHsKKwlyZXN0cmljdGVkVHJDSC1JbmZvTGlzdAkJCQlSZXN0cmljdGVkVHJDSC1JbmZvTGlzdAkJCQlPUFRJT05BTAorfQorCitETC1UUEMtUG93ZXJPZmZzZXRQZXJSTCA6Oj0JCVNFUVVFTkNFIHsKKwkJcG93ZXJPZmZzZXRUUEMtcGRwZGNoCQkJCVBvd2VyT2Zmc2V0VFBDLXBkcGRjaAkJCU9QVElPTkFMCit9CisKKy0tIE5PVEU6IFRoZSByYWRpbyBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGxpc3QgaGF2ZSBhIG9uZS10by1vbmUgbWFwcGluZyB3aXRoIHRoZSAKKy0tIHJhZGlvIGxpbmtzIGluIHRoZSBtZXNzYWdlLgorREwtVFBDLVBvd2VyT2Zmc2V0UGVyUkwtTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlETC1UUEMtUG93ZXJPZmZzZXRQZXJSTAorCitETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCisJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAorCQkJCQkJCQkJCWNjMTYtOSwgY2MxNi0xMCwgY2MxNi0xMSwgY2MxNi0xMiwKKwkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KKworREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMzItMSwgY2MzMi0yLCBjYzMyLTMsIGNjMzItNCwKKwkJCQkJCQkJCQljYzEzMi01LCBjYzMyLTYsIGNjMzItNywgY2MzMi04LAorCQkJCQkJCQkJCWNjMzItOSwgY2MzMi0xMCwgY2MzMi0xMSwgY2MzMi0xMiwKKwkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2LAorCQkJCQkJCQkJCWNjMzItMTcsIGNjMzItMTgsIGNjMzItMTksIGNjMzItMjAsCisJCQkJCQkJCQkJY2MzMi0yMSwgY2MzMi0yMiwgY2MzMi0yMywgY2MzMi0yNCwKKwkJCQkJCQkJCQljYzMyLTI1LCBjYzMyLTI2LCBjYzMyLTI3LCBjYzMyLTI4LAorCQkJCQkJCQkJCWNjMzItMjksIGNjMzItMzAsIGNjMzItMzEsIGNjMzItMzIgfQorCitETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQgOjo9CVNFUVVFTkNFIHsKKwljb2Rlc1JlcHJlc2VudGF0aW9uCQkJCQlDSE9JQ0UgeworCQljb25zZWN1dGl2ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQlmaXJzdENoYW5uZWxpc2F0aW9uQ29kZQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCisJCQlsYXN0Q2hhbm5lbGlzYXRpb25Db2RlCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZQorCQl9LAorCQliaXRtYXAJCQkJCQkJCUJJVCBTVFJJTkcgeworCQkJCQkJCQkJCQkJY2hDb2RlMTYtU0YxNigwKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTE1LVNGMTYoMSksCisJCQkJCQkJCQkJCQljaENvZGUxNC1TRjE2KDIpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTMtU0YxNigzKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTEyLVNGMTYoNCksCisJCQkJCQkJCQkJCQljaENvZGUxMS1TRjE2KDUpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTAtU0YxNig2KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTktU0YxNig3KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTgtU0YxNig4KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTctU0YxNig5KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTYtU0YxNigxMCksCisJCQkJCQkJCQkJCQljaENvZGU1LVNGMTYoMTEpLAorCQkJCQkJCQkJCQkJY2hDb2RlNC1TRjE2KDEyKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTMtU0YxNigxMyksCisJCQkJCQkJCQkJCQljaENvZGUyLVNGMTYoMTQpLAorCQkJCQkJCQkJCQkJY2hDb2RlMS1TRjE2KDE1KQorCQkJCQkJCQkJCQkJfSAJKFNJWkUgKDE2KSkKKwl9Cit9CisKK0RMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydC1WSENSIDo6PQlTRVFVRU5DRSB7CisJY29kZXNSZXByZXNlbnRhdGlvbgkJCQkJQ0hPSUNFIHsKKwkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgeworCQkJZmlyc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IsCisJCQlsYXN0Q2hhbm5lbGlzYXRpb25Db2RlCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSCisJCX0sCisJCWJpdG1hcAkJCQkJCQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJCQljaENvZGUzMi1TRjMyKDApLAorCQkJCQkJCQkJCQkJY2hDb2RlMzEtU0YzMigxKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTMwLVNGMzIoMiksCisJCQkJCQkJCQkJCQljaENvZGUyOS1TRjMyKDMpLAorCQkJCQkJCQkJCQkJY2hDb2RlMjgtU0YzMig0KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTI3LVNGMzIoNSksCisJCQkJCQkJCQkJCQljaENvZGUyNi1TRjMyKDYpLAorCQkJCQkJCQkJCQkJY2hDb2RlMjUtU0YzMig3KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTI0LVNGMzIoOCksCisJCQkJCQkJCQkJCQljaENvZGUyMy1TRjMyKDkpLAorCQkJCQkJCQkJCQkJY2hDb2RlMjItU0YzMigxMCksCisJCQkJCQkJCQkJCQljaENvZGUyMS1TRjMyKDExKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTIwLVNGMzIoMTIpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTktU0YzMigxMyksCisJCQkJCQkJCQkJCQljaENvZGUxOC1TRjMyKDE0KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTE3LVNGMzIoMTUpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTYtU0YzMigxNiksCisJCQkJCQkJCQkJCQljaENvZGUxNS1TRjMyKDE3KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTE0LVNGMzIoMTgpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTMtU0YzMigxOSksCisJCQkJCQkJCQkJCQljaENvZGUxMi1TRjMyKDIwKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTExLVNGMzIoMjEpLAorCQkJCQkJCQkJCQkJY2hDb2RlMTAtU0YzMigyMiksCisJCQkJCQkJCQkJCQljaENvZGU5LVNGMzIoMjMpLAorCQkJCQkJCQkJCQkJY2hDb2RlOC1TRjMyKDI0KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTctU0YzMigyNSksCisJCQkJCQkJCQkJCQljaENvZGU2LVNGMzIoMjYpLAorCQkJCQkJCQkJCQkJY2hDb2RlNS1TRjMyKDI3KSwKKwkJCQkJCQkJCQkJCWNoQ29kZTQtU0YzMigyOCksCisJCQkJCQkJCQkJCQljaENvZGUzLVNGMzIoMjkpLAorCQkJCQkJCQkJCQkJY2hDb2RlMi1TRjMyKDMwKSwKKwkJCQkJCQkJCQkJCWNoQ29kZTEtU0YzMigzMSkKKwkJCQkJCQkJCQkJCX0gCShTSVpFICgzMikpCisJfQorfQorCitEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMgOjo9CQlTRVFVRU5DRSB7CisJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgeworCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJfSwKKwkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mbywKKwkJCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CisJCX0KKwl9Cit9CisKK0Rvd25saW5rQWRkaXRpb25hbFRpbWVzbG90cy1WSENSIDo6PSBTRVFVRU5DRSB7CisJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgeworCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJfSwKKwkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1WSENSLAorCQkJZGwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQtVkhDUgorCQl9CisJfQorfQorCitEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgeworCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0CisJCX0sCisJCW5ld1BhcmFtZXRlcnMJCQkJCQlTRVFVRU5DRSB7CisJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAorCQkJZGwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0CQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQKKwkJfQorCX0KK30KKworRG93bmxpbmtUaW1lc2xvdHNDb2RlcyA6Oj0JCVNFUVVFTkNFIHsKKwlmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAorCWRsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydAkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2Rlc1Nob3J0LAorCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgeworCQlub01vcmUJCQkJCQkJCU5VTEwsCisJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CisJCQljb25zZWN1dGl2ZQkJCQkJCQlJTlRFR0VSICgxLi5tYXhUUy0xKSwKKwkJCXRpbWVzbG90TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKKwkJCQkJCQkJCQkJCQlEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMKKwkJfQorCX0KK30KKworRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSIDo6PQkJU0VRVUVOQ0UgeworCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tVkhDUiwKKwlkbC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydCwKKwltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKKwkJbm9Nb3JlCQkJCQkJCQlOVUxMLAorCQlhZGRpdGlvbmFsVGltZXNsb3RzCQkJCQlDSE9JQ0UgeworCQkJY29uc2VjdXRpdmUJCQkJCQkJSU5URUdFUiAoMS4ubWF4VFMtMSksCisJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCisJCQkJCQkJCQkJCQkJRG93bmxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLVZIQ1IKKwkJfQorCX0KK30KKworRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCwKKwlkbC1UUy1DaGFubmVsaXNhdGlvbkNvZGVzU2hvcnQJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZXNTaG9ydCwKKwltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKKwkJbm9Nb3JlCQkJCQkJCQlOVUxMLAorCQlhZGRpdGlvbmFsVGltZXNsb3RzCQkJCQlDSE9JQ0UgeworCQkJY29uc2VjdXRpdmUJCQkJCQkJSU5URUdFUiAoMS4ubWF4VFMtTENSLTEpLAorCQkJdGltZXNsb3RMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLUxDUi0xKSkgT0YKKwkJCQkJCQkJCQkJCQlEb3dubGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI0CisJCX0KKwl9Cit9CisKK0RQQy1Nb2RlIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNpbmdsZVRQQywKKwkJCQkJCQkJCQl0cGNUcmlwbGV0SW5Tb2Z0IH0JCisKKy0tIEFjdHVhbCB2YWx1ZSBEUENDSC1Qb3dlck9mZnNldCA9IElFIHZhbHVlICogMgorRFBDQ0gtUG93ZXJPZmZzZXQgOjo9CQkJCUlOVEVHRVIgKC04Mi4uLTMpCisKKy0tIEFjdHVhbCB2YWx1ZSBEUENDSC1Qb3dlck9mZnNldDIgPSAyICsgKElFIHZhbHVlICogNCkKK0RQQ0NILVBvd2VyT2Zmc2V0MiA6Oj0JCQkJSU5URUdFUiAoLTI4Li4tMTMpCisKK0RQQ0gtQ29tcHJlc3NlZE1vZGVJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwl0Z3AtU2VxdWVuY2VMaXN0CQkJCQlUR1AtU2VxdWVuY2VMaXN0Cit9CisKK0RQQ0gtQ29tcHJlc3NlZE1vZGVTdGF0dXNJbmZvIDo6PQlTRVFVRU5DRSB7CisJdGdwcy1SZWNvbmZpZ3VyYXRpb24tQ0ZOCQkJVEdQUy1SZWNvbmZpZ3VyYXRpb24tQ0ZOLAorCXRncC1TZXF1ZW5jZVNob3J0TGlzdAkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRHUFMpKSBPRgorCQkJCQkJCQkJCQlUR1AtU2VxdWVuY2VTaG9ydAorfQorCistLSBBY3R1YWwgdmFsdWUgRFBDSC1GcmFtZU9mZnNldCA9IElFIHZhbHVlICogMjU2CitEUENILUZyYW1lT2Zmc2V0Ojo9CQkJCQlJTlRFR0VSICgwLi4xNDkpCisKK0RTQ0gtTWFwcGluZyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwltYXhURkNJLUZpZWxkMlZhbHVlCQkJCQlNYXhURkNJLUZpZWxkMlZhbHVlLAorCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNGLVBEU0NILAorCWNvZGVOdW1iZXIJCQkJCQkJQ29kZU51bWJlckRTQ0gsCisJbXVsdGlDb2RlSW5mbwkJCQkJCU11bHRpQ29kZUluZm8KK30KKworRFNDSC1NYXBwaW5nTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NILVRGQ0lncm91cHMpKSBPRgorCQkJCQkJCQkJCURTQ0gtTWFwcGluZworCitEU0NILVJhZGlvTGlua0lkZW50aWZpZXIgOjo9CQlJTlRFR0VSICgwLi41MTEpCisKK0RTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwlkc2NoLXRyYW5zcG9ydC1jaGFubmVsLWlkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWRzY2gtVEZTCQkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQKK30KK0R1cmF0aW9uVGltZUluZm8gOjo9CQkJCUlOVEVHRVIgKDEuLjQwOTYpCisKK0R5bmFtaWNQZXJzaXN0ZW5jZUxldmVsIDo6PQkJCUlOVEVHRVIgKDEuLjgpCisKK0R5bmFtaWNQZXJzaXN0ZW5jZUxldmVsTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQUkFDSCkpIE9GCisJCQkJCQkJCQkJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwKKworRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxURi1MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4VEYtQ1BDSCkpIE9GCisJCQkJCQkJCQkJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWwKKworRHluYW1pY1RGSW5mb3JtYXRpb25DQ0NIIDo6PQkJU0VRVUVOQ0UgeworCW9jdGV0TW9kZVJMQy1TaXplSW5mb1R5cGUyCQkJT2N0ZXRNb2RlUkxDLVNpemVJbmZvVHlwZTIKK30KKworRS1BR0NILUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCUlOVEVHRVIgKDAuLjI1NSkKKworRS1BR0NILUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSB7CisJZS1BR0NILUNoYW5uZWxpc2F0aW9uQ29kZQkJCUUtQUdDSC1DaGFubmVsaXNhdGlvbkNvZGUKK30KKworRS1EQ0gtTWluaW11bVNldC1FLVRGQ0kgOjo9CQkJSU5URUdFUiAoMC4uMTI3KQorCitFLURDSC1SZWNvbmZpZ3VyYXRpb25JbmZvIDo6PQlTRVFVRU5DRSB7CisJZS1EQ0gtUkwtSW5mb05ld1NlcnZpbmdDZWxsCQkJRS1EQ0gtUkwtSW5mb05ld1NlcnZpbmdDZWxsCQkJCU9QVElPTkFMLAorCWUtRENILVJMLUluZm9PdGhlckNlbGxMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEVEQ0hSTCkpIE9GCisJCQkJCQkJCQkJCUUtRENILVJMLUluZm9PdGhlckNlbGwJCQkJT1BUSU9OQUwKK30KKworRS1EQ0gtUkwtSW5mb05ld1NlcnZpbmdDZWxsIDo6PQkJU0VRVUVOQ0UgeworCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwllLUFHQ0gtSW5mb3JtYXRpb24JCQkJCUUtQUdDSC1JbmZvcm1hdGlvbiwKKwlzZXJ2aW5nR3JhbnQJCQkJCQlTRVFVRU5DRSB7CisJCXZhbHVlCQkJCQkJCQlJTlRFR0VSICgwLi4zOCkJCQkJCQlPUFRJT05BTCwKKwkJcHJpbWFyeS1TZWNvbmRhcnktR3JhbnRTZWxlY3RvcgkJRU5VTUVSQVRFRCB7IHByaW1hcnksIHNlY29uZGFyeSB9CisJfQlPUFRJT05BTCwKKwllLURQQ0NILURQQ0NILVBvd2VyT2Zmc2V0CQkJRS1EUENDSC1EUENDSC1Qb3dlck9mZnNldAkJCQlPUFRJT05BTCwKKwlyZWZlcmVuY2UtRS1URkNJcwkJCQkJRS1EUERDSC1SZWZlcmVuY2UtRS1URkNJTGlzdAkJCU9QVElPTkFMLAorCXBvd2VyT2Zmc2V0Rm9yU2NoZWRJbmZvCQkJCUlOVEVHRVIgKDAuLjYpCQkJCQkJCU9QVElPTkFMLAorCXRocmVlSW5kZXhTdGVwVGhyZXNob2xkCQkJCUlOVEVHRVIgKDAuLjM3KQkJCQkJCQlPUFRJT05BTCwKKwl0d29JbmRleFN0ZXBUaHJlc2hvbGQJCQkJSU5URUdFUiAoMC4uMzcpCQkJCQkJCU9QVElPTkFMLAorCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uCQlPUFRJT05BTCwKKwllLVJHQ0gtSW5mbwkJCQkJCQlDSE9JQ0UJeworCQllLVJHQ0gtSW5mb3JtYXRpb24JCQkJCUUtUkdDSC1JbmZvcm1hdGlvbiwKKwkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAorCX0JT1BUSU9OQUwKK30KKworRS1EQ0gtUkwtSW5mb090aGVyQ2VsbCA6Oj0JCQlTRVFVRU5DRSB7CisJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCWUtSElDSC1JbmZvCQkJCQkJCUNIT0lDRSB7CisJCWUtSElDSC1JbmZvcm1hdGlvbgkJCQkJRS1ISUNILUluZm9ybWF0aW9uLAorCQlyZWxlYXNlSW5kaWNhdG9yCQkJCQlOVUxMCisJfQlPUFRJT05BTCwKKwllLVJHQ0gtSW5mbwkJCQkJCQlDSE9JQ0UgeworCQllLVJHQ0gtSW5mb3JtYXRpb24JCQkJCUUtUkdDSC1JbmZvcm1hdGlvbiwKKwkJcmVsZWFzZUluZGljYXRvcgkJCQkJTlVMTAorCX0JT1BUSU9OQUwKK30KKworRS1EUENDSC1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCWUtRFBDQ0gtRFBDQ0gtUG93ZXJPZmZzZXQJCQlFLURQQ0NILURQQ0NILVBvd2VyT2Zmc2V0LAorCWhhcHB5Qml0LURlbGF5Q29uZGl0aW9uCQkJCUhhcHB5Qml0LURlbGF5Q29uZGl0aW9uCit9CisKK0UtRFBDQ0gtRFBDQ0gtUG93ZXJPZmZzZXQgOjo9CQlJTlRFR0VSICgwLi44KQorCitFLURQRENILUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJZS1URkNJLVRhYmxlSW5kZXgJCQkJCUUtVEZDSS1UYWJsZUluZGV4LAorCWUtRENILU1pbmltdW1TZXQtRS1URkNJCQkJCUUtRENILU1pbmltdW1TZXQtRS1URkNJCQkJCU9QVElPTkFMLAorCXJlZmVyZW5jZS1FLVRGQ0lzCQkJCQlFLURQRENILVJlZmVyZW5jZS1FLVRGQ0lMaXN0LAorCW1heENoYW5uZWxpc2F0aW9uQ29kZXMJCQkJRS1EUERDSC1NYXhDaGFubmVsaXNhdGlvbkNvZGVzLAorCXBsLU5vbk1heAkJCQkJCQlFLURQRENILVBMLU5vbk1heCwKKwlzY2hlZHVsaW5nSW5mb0NvbmZpZ3VyYXRpb24JCQlFLURQRENILVNjaGVkdWxpbmdJbmZvQ29uZmlndXJhdGlvbiwKKwl0aHJlZUluZGV4U3RlcFRocmVzaG9sZAkJCQlJTlRFR0VSICgwLi4zNykJCQkJCQlPUFRJT05BTCwKKwl0d29JbmRleFN0ZXBUaHJlc2hvbGQJCQkJSU5URUdFUiAoMC4uMzcpCQkJCQkJT1BUSU9OQUwKK30KKworRS1EUERDSC1QZXJpb2RpY3lPZlNjaGVkSW5mbyA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZXZlcnlFRENIVFRJLCBtczQsIG1zMTAsIG1zMjAsIG1zNTAsIG1zMTAwLCBtczIwMCwgbXM1MDAsCisJCQkJCQkJCQkJbXMxMDAwIH0KKworLS0gVGhlIGFjdHVhbCB2YWx1ZSBvZiBFLURQRENILVBMLU5vbk1heCBpczogSUUgdmFsdWUgKiAwLjA0CitFLURQRENILVBMLU5vbk1heCA6Oj0JCQkJSU5URUdFUiAoMTEuLjI1KQorCitFLURQRENILVJlZmVyZW5jZS1FLVRGQ0kgOjo9CQlTRVFVRU5DRSB7CisJcmVmZXJlbmNlLUUtVEZDSQkJCQkJSU5URUdFUiAoMC4uMTI3KSwKKwlyZWZlcmVuY2UtRS1URkNJLVBPCQkJCQlJTlRFR0VSICgwLi4yOSkKK30KKworRS1EUERDSC1SZWZlcmVuY2UtRS1URkNJTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLjgpKSBPRiBFLURQRENILVJlZmVyZW5jZS1FLVRGQ0kKKworRS1EUERDSC1TY2hlZHVsaW5nSW5mb0NvbmZpZ3VyYXRpb24gOjo9IFNFUVVFTkNFIHsKKwlwZXJpb2RpY2l0eU9mU2NoZWRJbmZvLU5vR3JhbnQJCUUtRFBEQ0gtUGVyaW9kaWN5T2ZTY2hlZEluZm8JCU9QVElPTkFMLAorCXBlcmlvZGljaXR5T2ZTY2hlZEluZm8tR3JhbnQJCUUtRFBEQ0gtUGVyaW9kaWN5T2ZTY2hlZEluZm8JCU9QVElPTkFMLAorCXBvd2VyT2Zmc2V0Rm9yU2NoZWRJbmZvCQkJCUlOVEVHRVIgKDAuLjYpCit9CisKK0UtRFBEQ0gtU2NoZWR1bGluZ1RyYW5zbUNvbmZpZ3VyYXRpb24gOjo9IFNFUVVFTkNFIHsKKwltczItU2NoZWRUcmFuc21HcmFudEhBUlFBbGxvYwkJQklUIFNUUklORyAoU0laRSAoOCkpCQkJCU9QVElPTkFMLAorCXNlcnZpbmdHcmFudAkJCQkJCVNFUVVFTkNFIHsKKwkJdmFsdWUJCQkJCQkJCUlOVEVHRVIgKDAuLjM4KSwKKwkJcHJpbWFyeS1TZWNvbmRhcnktR3JhbnRTZWxlY3RvcgkJRU5VTUVSQVRFRCB7IHByaW1hcnksIHNlY29uZGFyeSB9CisJfQkJT1BUSU9OQUwKK30KKworRS1EUERDSC1NYXhDaGFubmVsaXNhdGlvbkNvZGVzIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzZjI1Niwgc2YxMjgsIHNmNjQsIHNmMzIsIHNmMTYsIHNmOCwgc2Y0LCBzZjR4Miwgc2YyeDIsIHNmNHgyLWFuZC1zZjJ4MiB9CisKK0UtSElDSC1DaGFubmVsaXNhdGlvbkNvZGUgOjo9CQlJTlRFR0VSICgwLi4xMjcpCisKK0UtSElDSC1JbmZvcm1hdGlvbiA6Oj0JCQkJU0VRVUVOQ0UgeworCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJRS1ISUNILUNoYW5uZWxpc2F0aW9uQ29kZSwKKwlzaWduYXR1cmVTZXF1ZW5jZQkJCQkJRS1ISUNILVJHQ0gtU2lnbmF0dXJlU2VxdWVuY2UKK30KKworRS1ISUNILVJHQ0gtU2lnbmF0dXJlU2VxdWVuY2UgOjo9CUlOVEVHRVIgKDAuLjM5KQorCitFLVJHQ0gtQ29tYmluYXRpb25JbmRleCA6Oj0JCQlJTlRFR0VSICgwLi41KQorCitFLVJHQ0gtSW5mb3JtYXRpb24gOjo9CQkJCVNFUVVFTkNFIHsKKwlzaWduYXR1cmVTZXF1ZW5jZQkJCQkJRS1ISUNILVJHQ0gtU2lnbmF0dXJlU2VxdWVuY2UsCisJcmctQ29tYmluYXRpb25JbmRleAkJCQkJRS1SR0NILUNvbWJpbmF0aW9uSW5kZXgKK30KKworRS1URkNJLVRhYmxlSW5kZXggOjo9CQkJCUlOVEVHRVIgKDAuLjEpCisKK0VYVC1VTC1UaW1pbmdBZHZhbmNlIDo6PQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQlleC11bC1UaW1pbmdBZHZhbmNlCQkJSU5URUdFUiAoMC4uMjU1KQorCQl9LAorCQl0ZGQ3NjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJZXgtdWwtVGltaW5nQWR2YW5jZQkJCUlOVEVHRVIgKDAuLjUxMSkKKwkJfQorCX0KK30KKworRkFDSC1QQ0gtSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXRyYW5zcG9ydEZvcm1hdFNldAkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAorCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwljdGNoLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KK30KKworRkFDSC1QQ0gtSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgorCQkJCQkJCQkJCUZBQ0gtUENILUluZm9ybWF0aW9uCisKK0ZlZWRiYWNrLWN5Y2xlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZmMwLCBmYzIsIGZjNCwgZmM4LCBmYzEwLCBmYzIwLCBmYzQwLCBmYzgwLCBmYzE2MH0KKworRlBBQ0gtSW5mby1yNCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAorCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJVERELUZQQUNILUNDb2RlMTYtcjQsCisJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtTENSLXI0LAorICAgIHdpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpLUxDUgorfQorCitGcmVxdWVuY3lJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCUZyZXF1ZW5jeUluZm9GREQsCisJCXRkZAkJCQkJCQkJCUZyZXF1ZW5jeUluZm9UREQJfQorfQorCitGcmVxdWVuY3lJbmZvRkREIDo6PQkJCQlTRVFVRU5DRSB7CisJdWFyZmNuLVVMCQkJCQkJCVVBUkZDTgkJCQlPUFRJT05BTCwKKwl1YXJmY24tREwJCQkJCQkJVUFSRkNOCit9CisKK0ZyZXF1ZW5jeUluZm9UREQgOjo9CQkJCVNFUVVFTkNFIHsKKwl1YXJmY24tTnQJCQkJCQkJVUFSRkNOCit9CisKK0hhcHB5Qml0LURlbGF5Q29uZGl0aW9uIDo6PQkJCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQltczIsIG1zMTAsIG1zMjAsIG1zNTAsIG1zMTAwLCBtczIwMCwgbXM1MDAsIG1zMTAwMCB9CisKK0hBUlEtUHJlYW1ibGUtTW9kZSA6Oj0JCQkJSU5URUdFUiAoMC4uMSkKKworSFMtQ2hhbm5lbGlzYXRpb25Db2RlLUxDUiA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitIUy1QRFNDSC1NaWRhbWJsZS1Db25maWd1cmF0aW9uLVRERDEyOCA6Oj0JU0VRVUVOQ0UgeworCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFeworCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJSU5URUdFUiAoMC4uMTUpCisgICAgfSwKKwktLSBBY3R1YWwgdmFsdWUgbWlkYW1ibGVDb25maWd1cmF0aW9uID0gSUUgdmFsdWUgKiAyCisJbWlkYW1ibGVDb25maWd1cmF0aW9uCQkJCUlOVEVHRVIgKDEuLjgpCit9CisKK0hTLVNDQ0gtSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQloUy1TQ0NIQ2hhbm5lbGlzYXRpb25Db2RlSW5mbwkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgorCQkJCQkJCQkJCQkJCUhTLVNDQ0gtQ29kZXMsCisJCQlkbC1TY3JhbWJsaW5nQ29kZQkJCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKyAgICAgICAgICAgICAgICBuYWNrLWFjay1wb3dlci1vZmZzZXQgICAgICAJCSAgIElOVEVHRVIgKC03Li44KSwgCisgICAgICAgICAgICAgICAgaHMtU0lDSC1Qb3dlckNvbnRyb2wtSW5mbyAgCQkgICBIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQzODQsCisJCQkJaFMtU0NDSC1TZXRDb25maWd1cmF0aW9uIAkJICAgU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgorCQkJCQkJSFMtU0NDSC1UREQzODQKKwkJCQl9LAorCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJSFMtU0NDSC1UREQxMjgKKwkJfQorCX0KK30KKworSFMtU0NDSC1JbmZvLXI2IDo6PQkJCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWhTLVNDQ0hDaGFubmVsaXNhdGlvbkNvZGVJbmZvCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJSFMtU0NDSC1Db2RlcywKKwkJCWRsLVNjcmFtYmxpbmdDb2RlCQkJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQluYWNrLWFjay1wb3dlci1vZmZzZXQJCQkJSU5URUdFUiAoLTcuLjgpLCAKKwkJCQlocy1TSUNILVBvd2VyQ29udHJvbC1JbmZvCQkJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVEREMzg0LAorCQkJCWRocy1zeW5jCQkJCQkJCURIUy1TeW5jCQkJCQlPUFRJT05BTCwKKwkJCQlibGVyLXRhcmdldAkJCQkJCQlCbGVyLVRhcmdldCwKKwkJCQloUy1TQ0NILVNldENvbmZpZ3VyYXRpb24JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMzg0LXI2CisJCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgorCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMTI4CisJCX0KKwl9Cit9CisKK0hTLVNDQ0gtSW5mby1yNyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQloUy1TQ0NIQ2hhbm5lbGlzYXRpb25Db2RlSW5mbwkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgorCQkJCQkJCQkJCQkJCUhTLVNDQ0gtQ29kZXMsCisJCQlkbC1TY3JhbWJsaW5nQ29kZQkJCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlDSE9JQ0UgeworCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJbmFjay1hY2stcG93ZXItb2Zmc2V0CQkJCUlOVEVHRVIgKC03Li44KSwgCisJCQkJaHMtU0lDSC1Qb3dlckNvbnRyb2wtSW5mbwkJCUhTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDM4NCwKKwkJCQlkaHMtc3luYwkJCQkJCQlESFMtU3luYwkJCQkJT1BUSU9OQUwsCisJCQkJaFMtU0NDSC1TZXRDb25maWd1cmF0aW9uCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgorCQkJCQkJCQkJCQkJCQlIUy1TQ0NILVRERDM4NC1yNgorCQkJCX0sCisJCQl0ZGQ3NjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQluYWNrLWFjay1wb3dlci1vZmZzZXQJCQkJSU5URUdFUiAoLTcuLjgpLCAKKwkJCQlocy1TSUNILVBvd2VyQ29udHJvbC1JbmZvCQkJSFMtU0lDSC1Qb3dlci1Db250cm9sLUluZm8tVERENzY4LAorCQkJCWRocy1zeW5jCQkJCQkJCURIUy1TeW5jCQkJCQlPUFRJT05BTCwKKwkJCQlibGVyLXRhcmdldAkJCQkJCQlCbGVyLVRhcmdldCwKKwkJCQloUy1TQ0NILVNldENvbmZpZ3VyYXRpb24JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SFNTQ0NIcykpIE9GCisJCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVERENzY4CisJCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEhTU0NDSHMpKSBPRgorCQkJCQkJCQkJCQkJCUhTLVNDQ0gtVEREMTI4CisJCX0KKwl9Cit9CisKK0hTLVNDQ0gtQ29kZXMgOjo9CQkJCQlJTlRFR0VSICgwLi4xMjcpCisKK0hTLVNDQ0gtVEREMTI4IDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQsCisJZmlyc3RDaGFubmVsaXNhdGlvbkNvZGUJCQkJSFMtQ2hhbm5lbGlzYXRpb25Db2RlLUxDUiwKKwlzZWNvbmRDaGFubmVsaXNhdGlvbkNvZGUJCQlIUy1DaGFubmVsaXNhdGlvbkNvZGUtTENSLAorCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCUlOVEVHRVIoMC4uMTUpCisJfSwKKwktLSBBY3R1YWwgdmFsdWUgbWlkYW1ibGVDb25maWd1cmF0aW9uID0gSUUgdmFsdWUgKiAyCisJbWlkYW1ibGVDb25maWd1cmF0aW9uCQkJCUlOVEVHRVIgKDEuLjgpLAorCWJsZXItdGFyZ2V0CQkJCQkJCUJsZXItVGFyZ2V0LAorCWhzLXNpY2gtY29uZmlndXJhdGlvbgkJCQlIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMTI4Cit9CisKK0hTLVNJQ0gtQ29uZmlndXJhdGlvbi1UREQxMjggOjo9CVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCUhTLUNoYW5uZWxpc2F0aW9uQ29kZS1MQ1IsCisJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQl9CisJfSwKKwktLSBBY3R1YWwgdmFsdWUgbWlkYW1ibGVDb25maWd1cmF0aW9uID0gSUUgdmFsdWUgKiAyCisJbWlkYW1ibGVDb25maWd1cmF0aW9uCQkJCUlOVEVHRVIgKDEuLjgpLAorCW5hY2stYWNrLXBvd2VyLW9mZnNldAkJCQlJTlRFR0VSICgtNy4uOCksCisJcG93ZXItbGV2ZWwtSFNTSUNICQkJCQlJTlRFR0VSICgtMTIwLi4tNTgpLAorCXRwYy1zdGVwLXNpemUJCQkJCQlFTlVNRVJBVEVEIHsgczEsIHMyLCBzMyAsIHNwYXJlMX0KK30KKworCisKK0hTLVNDQ0gtVEREMzg0IDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJfQorCX0sCisJbWlkYW1ibGVjb25maWd1cmF0aW9uCQkJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAorCWJsZXItdGFyZ2V0CQkJCQkJCUJsZXItVGFyZ2V0LAorCWhzLXNpY2gtY29uZmlndXJhdGlvbgkJCQlIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMzg0Cit9CisKK0hTLVNDQ0gtVEREMzg0LXI2IDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJfQorCX0sCisJbWlkYW1ibGVjb25maWd1cmF0aW9uCQkJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAorCWhzLXNpY2gtY29uZmlndXJhdGlvbgkJCQlIUy1TSUNILUNvbmZpZ3VyYXRpb24tVEREMzg0Cit9CisKK0hTLVNDQ0gtVERENzY4IDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwljaGFubmVsaXNhdGlvbkNvZGUJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSLAorCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQl9CisJfSwKKwltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJaHMtc2ljaC1jb25maWd1cmF0aW9uCQkJCUhTLVNJQ0gtQ29uZmlndXJhdGlvbi1UREQ3NjgKK30KKworSFMtU0lDSC1Db25maWd1cmF0aW9uLVRERDM4NCA6Oj0JU0VRVUVOQ0UgeworCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCisJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQl9CisJfSwKKwltaWRhbWJsZWNvbmZpZ3VyYXRpb24JCQkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMKK30KKworSFMtU0lDSC1Db25maWd1cmF0aW9uLVRERDc2OCA6Oj0JU0VRVUVOQ0UgeworCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUtVkhDUiwKKwltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCX0KKwl9LAorCW1pZGFtYmxlY29uZmlndXJhdGlvbgkJCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMworfQorCitIUy1TSUNILVBvd2VyLUNvbnRyb2wtSW5mby1UREQzODQgOjo9IFNFUVVFTkNFIHsKKwktLSBBY3R1YWwgdmFsdWUgdWwtdGFyZ2V0LVNJUiA9IElFIHZhbHVlICogMC41CisJdWwtdGFyZ2V0LVNJUgkJCQkJCUlOVEVHRVIgKC0yMi4uNDApLAorICAgIGhzLXNpY2gtQ29uc3RhbnRWYWx1ZQkJCSAgICBDb25zdGFudFZhbHVlCit9CisKK0hTLVNJQ0gtUG93ZXItQ29udHJvbC1JbmZvLVRERDc2OCA6Oj0gU0VRVUVOQ0UgeworCS0tIEFjdHVhbCB2YWx1ZSB1bC10YXJnZXQtU0lSID0gSUUgdmFsdWUgKiAwLjUKKwl1bC10YXJnZXQtU0lSCQkJCQkJSU5URUdFUiAoLTIyLi40MCksCisJaHMtc2ljaC1Db25zdGFudFZhbHVlCQkJCUNvbnN0YW50VmFsdWUKK30KKworSW5kaXZpZHVhbFRpbWVzbG90SW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlciwKKwl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCisJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUKK30KKworSW5kaXZpZHVhbFRpbWVzbG90SW5mby1WSENSIDo6PQkJCVNFUVVFTkNFIHsKKwl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyLAorCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLVZIQ1IJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtVkhDUgorfQorCitJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAorCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1MQ1ItcjQsCisJbW9kdWxhdGlvbgkJCQkJCQlFTlVNRVJBVEVEIHsgbW9kLVFQU0ssIG1vZC04UFNLIH0sCisJc3MtVFBDLVN5bWJvbHMJCQkJCQlFTlVNRVJBVEVEIHsgemVybywgb25lLCBzaXh0ZWVuT3ZlclNGIH0sCisJYWRkaXRpb25hbFNTLVRQQy1TeW1ib2xzCQkJSU5URUdFUigxLi4xNSkJCU9QVElPTkFMCit9CisKK0luZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LWV4dCA6Oj0JCVNFUVVFTkNFIHsKKy0tIHRpbWVzbG90TnVtYmVyIGFuZCB0ZmNpLUV4aXN0ZW5jZSBpcyB0YWtlbiBmcm9tIEluZGl2aWR1YWxUaW1lc2xvdEluZm8uCistLSBtaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlIGluIEluZGl2aWR1YWxUaW1lc2xvdEluZm8gc2hhbGwgYmUgaWdub3JlZC4KKwltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1MQ1ItcjQsCisJbW9kdWxhdGlvbgkJCQkJCQlFTlVNRVJBVEVEIHsgbW9kLVFQU0ssIG1vZC04UFNLIH0sCisJc3MtVFBDLVN5bWJvbHMJCQkJCQlFTlVNRVJBVEVEIHsgemVybywgb25lLCBzaXh0ZWVuT3ZlclNGIH0KK30KKworSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZSA6Oj0JCVNFUVVFTkNFIHsKKwl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwl1bC1UaW1lc2xvdEludGVyZmVyZW5jZQkJCQlUREQtVUwtSW50ZXJmZXJlbmNlCit9CisKK0luZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgorCQkJCQkJCQkJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2UKKworSVRQIDo6PQkJCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbW9kZTAsIG1vZGUxIH0KKworTmlkZW50aWZ5QWJvcnQgOjo9CUlOVEVHRVIgKDEuLjEyOCkKKworTWF4QWxsb3dlZFVMLVRYLVBvd2VyIDo6PQkJCUlOVEVHRVIgKC01MC4uMzMpCisKK01heEF2YWlsYWJsZVBDUENILU51bWJlciA6Oj0JCUlOVEVHRVIgKDEuLjY0KQorTWF4UG93ZXJJbmNyZWFzZS1yNCA6Oj0JCQkJSU5URUdFUiAoMC4uMykKKworTWF4VEZDSS1GaWVsZDJWYWx1ZSA6Oj0JCQkJSU5URUdFUiAoMS4uMTAyMykKKworTWVhc3VyZW1lbnQtRmVlZGJhY2stSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWVhc3VyZW1lbnRQb3dlck9mZnNldAkJCU1lYXN1cmVtZW50UG93ZXJPZmZzZXQsCisJCQlmZWVkYmFjay1jeWNsZQkJCQkJRmVlZGJhY2stY3ljbGUsCisJCQljcWktUmVwZXRpdGlvbkZhY3RvcgkJCUNRSS1SZXBldGl0aW9uRmFjdG9yLAorCQkJZGVsdGFDUUkJCQkJCQlEZWx0YUNRSQorCQl9LAorCQl0ZGQJCQkJCQkJCU5VTEwKKwl9Cit9CisKKworTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMgOjo9IEVOVU1FUkFURUQge21zNCwgbXM4LCBtczE2fQorCitNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyIDo6PQkJRU5VTUVSQVRFRCB7bXMzLCBtczZ9CisKK01pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTItVkhDUiA6Oj0JCUVOVU1FUkFURUQge21zNCwgbXM4fQorCitNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlIDo6PQkJU0VRVUVOQ0UgeworCWJ1cnN0VHlwZQkJCQkJCQlDSE9JQ0UgewkKKwkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJCQl9CisJCQl9CisJCX0sCisJCXR5cGUyCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdFNob3J0CisJCQkJfQorCQkJfQorCQl9LAorCQl0eXBlMwkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLVZIQ1IgOjo9CVNFUVVFTkNFIHsKKwlidXJzdFR5cGUJCQkJCQkJQ0hPSUNFIHsKKwkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCXVlU3BlY2lmaWNNaWRhbWJsZQkJCQkJU0VRVUVOQ0UgeworCQkJCQltaWRhbWJsZVNoaWZ0CQkJCQkJTWlkYW1ibGVTaGlmdExvbmcKKwkJCQl9CisJCQl9CisJCX0sCisJCXR5cGUyCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyCQlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUyLVZIQ1IsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0U2hvcnQtVkhDUgorCQkJCX0KKwkJCX0KKwkJfSwKKwkJdHlwZTMJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTFhbmQzLAorCQkJbWlkYW1ibGVBbGxvY2F0aW9uTW9kZQkJCQlDSE9JQ0UgeworCQkJCWRlZmF1bHRNaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1ETCA6Oj0JCVNFUVVFTkNFIHsKKwlidXJzdFR5cGUJCQkJCQkJQ0hPSUNFIHsJCisJCXR5cGUxCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMwlNaWRhbWJsZUNvbmZpZ3VyYXRpb25CdXJzdFR5cGUxYW5kMywKKwkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRMb25nCisJCQkJfQorCQkJfQorCQl9LAorCQl0eXBlMgkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMgkJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMiwKKwkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRTaG9ydAorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZS1ETC1WSENSIDo6PSBTRVFVRU5DRSB7CisJYnVyc3RUeXBlCQkJCQkJCUNIT0lDRSB7CQorCQl0eXBlMQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMJTWlkYW1ibGVDb25maWd1cmF0aW9uQnVyc3RUeXBlMWFuZDMsCisJCQltaWRhbWJsZUFsbG9jYXRpb25Nb2RlCQkJCUNIT0lDRSB7CisJCQkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQljb21tb25NaWRhbWJsZQkJCQkJCU5VTEwsCisJCQkJdWVTcGVjaWZpY01pZGFtYmxlCQkJCQlTRVFVRU5DRSB7CisJCQkJCW1pZGFtYmxlU2hpZnQJCQkJCQlNaWRhbWJsZVNoaWZ0TG9uZworCQkJCX0KKwkJCX0KKwkJfSwKKwkJdHlwZTIJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTIJCU1pZGFtYmxlQ29uZmlndXJhdGlvbkJ1cnN0VHlwZTItVkhDUiwKKwkJCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJCQlkZWZhdWx0TWlkYW1ibGUJCQkJCQlOVUxMLAorCQkJCWNvbW1vbk1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbWlkYW1ibGVTaGlmdAkJCQkJCU1pZGFtYmxlU2hpZnRTaG9ydC1WSENSCisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCW1pZGFtYmxlQWxsb2NhdGlvbk1vZGUJCQkJQ0hPSUNFIHsKKwkJZGVmYXVsdE1pZGFtYmxlCQkJCQkJTlVMTCwKKwkJY29tbW9uTWlkYW1ibGUJCQkJCQlOVUxMLAorCQl1ZVNwZWNpZmljTWlkYW1ibGUJCQkJCVNFUVVFTkNFIHsKKwkJCW1pZGFtYmxlU2hpZnQJCQkJCQlJTlRFR0VSICgwLi4xNSkKKwkJfQorCX0sCisJLS0gQWN0dWFsIHZhbHVlIG1pZGFtYmxlQ29uZmlndXJhdGlvbiA9IElFIHZhbHVlICogMgorCW1pZGFtYmxlQ29uZmlndXJhdGlvbgkJCQlJTlRFR0VSICgxLi44KQorfQorCitNaWRhbWJsZVNoaWZ0TG9uZyA6Oj0JCQkJSU5URUdFUiAoMC4uMTUpCisKKworTWlkYW1ibGVTaGlmdFNob3J0IDo6PQkJCQlJTlRFR0VSICgwLi41KQorCitNaWRhbWJsZVNoaWZ0U2hvcnQtVkhDUiA6Oj0JCQlJTlRFR0VSICgwLi43KQorCitNaW5pbXVtU3ByZWFkaW5nRmFjdG9yIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmNCwgc2Y4LCBzZjE2LCBzZjMyLAorCQkJCQkJCQkJCXNmNjQsIHNmMTI4LCBzZjI1NiB9CisKK011bHRpQ29kZUluZm8gOjo9CQkJCQlJTlRFR0VSICgxLi4xNikKKworCitOLUVPVCA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNykKKworTi1HQVAgOjo9CQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWYyLCBmNCwgZjggfQorCitOLVBDSCA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uOCkKKworTi1TdGFydE1lc3NhZ2UgOjo9CQkJCQlJTlRFR0VSICgxLi44KQorCitOQjAxIDo6PQkJCQkJCQlJTlRFR0VSICgwLi41MCkKKworTkYtTWF4IDo6PQkJCQkJCQlJTlRFR0VSICgxLi42NCkKKworTnVtYmVyT2ZEUERDSCA6Oj0JCQkJCUlOVEVHRVIgKDEuLm1heERQRENILVVMKQorCitOdW1iZXJPZkZCSS1CaXRzIDo6PQkJCQlJTlRFR0VSICgxLi4yKQorCitPcGVuTG9vcFBvd2VyQ29udHJvbC1UREQgOjo9CQlTRVFVRU5DRSB7CisJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlciwKKwktLSBhbHBoYSwgcHJhY2gtQ29uc3RhbnRWYWx1ZSwgZHBjaC1Db25zdGFudFZhbHVlIGFuZCBwdXNjaC1Db25zdGFudFZhbHVlCisJLS0gc2hhbGwgYmUgaWdub3JlZCBpbiAxLjI4TWNwcyBUREQgbW9kZS4KKwlhbHBoYQkJCQkJCQkJQWxwaGEJCQkJCQlPUFRJT05BTCwKKwlwcmFjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlVGRkLAorCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZVRkZCwKKwlwdXNjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlVGRkCQkJT1BUSU9OQUwKK30KKworT3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQtcjQgOjo9CVNFUVVFTkNFIHsKKwlpcGRsLWFscGhhCQkJCQkJCUFscGhhLAorCW1heFBvd2VySW5jcmVhc2UJCQkJCU1heFBvd2VySW5jcmVhc2UtcjQKK30KKworUGFnaW5nSW5kaWNhdG9yTGVuZ3RoIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBpNCwgcGk4LCBwaTE2IH0KKworUEMtUHJlYW1ibGUgOjo9CQkJCQkJSU5URUdFUiAoMC4uNykKKworUENQLUxlbmd0aCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhczAsIGFzOCB9CisKK1BDUENILUNoYW5uZWxJbmZvIDo6PQkJCQlTRVFVRU5DRSB7CisJcGNwY2gtVUwtU2NyYW1ibGluZ0NvZGUJCQkJSU5URUdFUiAoMC4uNzkpLAorCXBjcGNoLURMLUNoYW5uZWxpc2F0aW9uQ29kZQkJCUlOVEVHRVIgKDAuLjUxMSksCisJcGNwY2gtREwtU2NyYW1ibGluZ0NvZGUJCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJT1BUSU9OQUwsCisJcGNwLUxlbmd0aAkJCQkJCQlQQ1AtTGVuZ3RoLAorCXVjc20tSW5mbwkJCQkJCQlVQ1NNLUluZm8JCQkJCQkJT1BUSU9OQUwKK30KKworUENQQ0gtQ2hhbm5lbEluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQQ1BDSHMpKSBPRgorCQkJCQkJCQkJCVBDUENILUNoYW5uZWxJbmZvCisKK1BDUElDSC1Vc2FnZUZvckNoYW5uZWxFc3QgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltYXlCZVVzZWQsCisJCQkJCQkJCQkJc2hhbGxOb3RCZVVzZWQgfQorCitQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvIDo6PQlTRVFVRU5DRSB7CisJLS0gcGRzY2gtUG93ZXJDb250cm9sSW5mbyBpcyBjb25kaXRpb25hbCBvbiBuZXctY29uZmlndXJhdGlvbiBicmFuY2ggYmVsb3csIGlmIHRoaXMKKwktLSBzZWxlY3RlZCB0aGUgSUUgaXMgT1BUSU9OQUwgb3RoZXJ3aXNlIGl0IHNob3VsZCBub3QgYmUgc2VudAorCXBkc2NoLVBvd2VyQ29udHJvbEluZm8JCQkJUERTQ0gtUG93ZXJDb250cm9sSW5mbwkJCQlPUFRJT05BTCwKKwlwZHNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAorCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgeworCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CisJCX0sCisJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8sCisJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1BEU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQgOjo9CVNFUVVFTkNFIHsKKwlwZHNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAorCWNvbmZpZ3VyYXRpb24JCQkJCQlDSE9JQ0UgeworCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CisJCX0sCisJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQlwZHNjaC1JbmZvCQkJCQkJCVBEU0NILUluZm8tcjQsCisJCQlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5CQkJCU9QVElPTkFMLAorCQkJcGRzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlQRFNDSC1Qb3dlckNvbnRyb2xJbmZvCQlPUFRJT05BTAorCQl9CisJfQorfQorCitQRFNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvLXI3IDo6PQlTRVFVRU5DRSB7CisJcGRzY2gtQWxsb2NhdGlvblBlcmlvZEluZm8JCQlBbGxvY2F0aW9uUGVyaW9kSW5mbywKKwljb25maWd1cmF0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJb2xkLUNvbmZpZ3VyYXRpb24JCQkJCVNFUVVFTkNFIHsKKwkJCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCQkJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eQorCQl9LAorCQluZXctQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLXI3LAorCQkJcGRzY2gtSWRlbnRpdHkJCQkJCQlQRFNDSC1JZGVudGl0eQkJCQlPUFRJT05BTCwKKwkJCXBkc2NoLVBvd2VyQ29udHJvbEluZm8JCQkJUERTQ0gtUG93ZXJDb250cm9sSW5mbwkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUERTQ0gtQ29kZUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU0YtUERTQ0gsCisJY29kZU51bWJlcgkJCQkJCQlDb2RlTnVtYmVyRFNDSCwKKwltdWx0aUNvZGVJbmZvCQkJCQkJTXVsdGlDb2RlSW5mbworfQorCitQRFNDSC1Db2RlSW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhURkNJLTItQ29tYnMpKSBPRgorCQkJCQkJCQkJCVBEU0NILUNvZGVJbmZvCisKK1BEU0NILUNvZGVNYXAgOjo9CQkJCQlTRVFVRU5DRSB7CisJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU0YtUERTQ0gsCisJbXVsdGlDb2RlSW5mbwkJCQkJCU11bHRpQ29kZUluZm8sCisJY29kZU51bWJlclN0YXJ0CQkJCQkJQ29kZU51bWJlckRTQ0gsCisJY29kZU51bWJlclN0b3AJCQkJCQlDb2RlTnVtYmVyRFNDSAorfQorCitQRFNDSC1Db2RlTWFwTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NILVRGQ0lncm91cHMpKSBPRgorCQkJCQkJCQkJCVBEU0NILUNvZGVNYXAKKworUERTQ0gtQ29kZU1hcHBpbmcgOjo9CQkJCVNFUVVFTkNFIHsKKwlkbC1TY3JhbWJsaW5nQ29kZQkJCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJT1BUSU9OQUwsCisJc2lnbmFsbGluZ01ldGhvZAkJCQkJQ0hPSUNFIHsKKwkJY29kZVJhbmdlCQkJCQkJCUNvZGVSYW5nZSwKKwkJdGZjaS1SYW5nZQkJCQkJCQlEU0NILU1hcHBpbmdMaXN0LAorCQlleHBsaWNpdC1jb25maWcJCQkJCQlQRFNDSC1Db2RlSW5mb0xpc3QsCisJCXJlcGxhY2UJCQkJCQkJCVJlcGxhY2VkUERTQ0gtQ29kZUluZm9MaXN0CisJfQorfQkKKworUERTQ0gtSWRlbnRpdHkgOjo9CQkJCQlJTlRFR0VSICgxLi5oaVBEU0NIaWRlbnRpdGllcykKKworIAorUERTQ0gtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXBkc2NoLVRpbWVzbG90c0NvZGVzCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMJCQkJT1BUSU9OQUwKK30KKworUERTQ0gtSW5mby1yNCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXBkc2NoLVRpbWVzbG90c0NvZGVzCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMJCU9QVElPTkFMCisJCX0sCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUERTQ0gtSW5mby1yNyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXBkc2NoLVRpbWVzbG90c0NvZGVzCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMJCU9QVElPTkFMCisJCX0sCisJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcGRzY2gtVGltZXNsb3RzQ29kZXMJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSCQlPUFRJT05BTAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXBkc2NoLVRpbWVzbG90c0NvZGVzCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0CU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1BEU0NILUluZm8tTENSLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXBkc2NoLVRpbWVzbG90c0NvZGVzCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMtTENSLXI0CQlPUFRJT05BTAorfQorCitQRFNDSC1Qb3dlckNvbnRyb2xJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwl0cGMtU3RlcFNpemVUREQJCQkJCQlUUEMtU3RlcFNpemVUREQJCQkJCQlPUFRJT05BTCwKKwl1bC1DQ1RyQ2hUUENMaXN0CQkJCQlVTC1DQ1RyQ2hUUENMaXN0CQkJCQlPUFRJT05BTAorfQorCitQRFNDSC1TSE8tRENILUluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwlkc2NoLVJhZGlvTGlua0lkZW50aWZpZXIJCQlEU0NILVJhZGlvTGlua0lkZW50aWZpZXIsCisJcmwtSWRlbnRpZmllckxpc3QJCQkJCVJMLUlkZW50aWZpZXJMaXN0CQkJCQlPUFRJT05BTAorfQorCitQRFNDSC1TeXNJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCisJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLAorCWRzY2gtVEZTCQkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAkJCQkJT1BUSU9OQUwsCisJZHNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCit9CisKK1BEU0NILVN5c0luZm8tcjcgOjo9CQkJCVNFUVVFTkNFIHsKKwlwZHNjaC1JZGVudGl0eQkJCQkJCVBEU0NILUlkZW50aXR5LAorCXBkc2NoLUluZm8JCQkJCQkJUERTQ0gtSW5mby1yNywKKwlkc2NoLVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCURTQ0gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJT1BUSU9OQUwsCisJZHNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCit9CisKK1BEU0NILVN5c0luZm8tSENSLXI1IDo6PQkJCQkJU0VRVUVOQ0UgeworCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCisJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLAorCWRzY2gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJRFNDSC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlPUFRJT05BTCwKKwlkc2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKK30KKworUERTQ0gtU3lzSW5mby1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgeworCXBkc2NoLUlkZW50aXR5CQkJCQkJUERTQ0gtSWRlbnRpdHksCisJcGRzY2gtSW5mbwkJCQkJCQlQRFNDSC1JbmZvLUxDUi1yNCwKKwlkc2NoLVRGUwkJCQkJCQlUcmFuc3BvcnRGb3JtYXRTZXQJCQkJCU9QVElPTkFMLAorCWRzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAorfQorCitQRFNDSC1TeXNJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKKwkJCQkJCQkJCQlQRFNDSC1TeXNJbmZvCisKK1BEU0NILVN5c0luZm9MaXN0LXI3IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSCkpIE9GIFBEU0NILVN5c0luZm8tcjcKKworUERTQ0gtU3lzSW5mb0xpc3QtSENSLXI1IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSCkpIE9GIFBEU0NILVN5c0luZm8tSENSLXI1CisKK1BEU0NILVN5c0luZm9MaXN0LUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSCkpIE9GCisJCQkJCQkJCQkJUERTQ0gtU3lzSW5mby1MQ1ItcjQKKworUERTQ0gtU3lzSW5mb0xpc3QtU0ZOIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXBkc2NoLVN5c0luZm8JCQkJCQkJUERTQ0gtU3lzSW5mbywKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitQRFNDSC1TeXNJbmZvTGlzdC1TRk4tSENSLXI1IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQRFNDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXBkc2NoLVN5c0luZm8JCQkJCQkJUERTQ0gtU3lzSW5mby1IQ1ItcjUsCisJc2ZuLVRpbWVJbmZvCQkJCQkJCVNGTi1UaW1lSW5mbwkJCQkJT1BUSU9OQUwKK30KKworUERTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBEU0NIKSkgT0YKKwkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcGRzY2gtU3lzSW5mbwkJCQkJCQlQRFNDSC1TeXNJbmZvLUxDUi1yNCwKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitQZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3IgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlwc2YwLTksIHBzZjAtOCwgcHNmMC03LCBwc2YwLTYsCisJCQkJCQkJCQkJcHNmMC01LCBwc2YwLTQsIHBzZjAtMywgcHNmMC0yIH0KKworUGVyc2lzdGVuY2VTY2FsaW5nRmFjdG9yTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQ3BlcnNpc3QpKSBPRgorCQkJCQkJCQkJCVBlcnNpc3RlbmNlU2NhbGluZ0ZhY3RvcgorCitQSS1Db3VudFBlckZyYW1lIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllMTgsIGUzNiwgZTcyLCBlMTQ0IH0KKworUGljaENoYW5uZWxpc2F0aW9uQ29kZUxpc3QtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCisJCQkJCQkJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZQorCitQSUNILUluZm8gOjo9CQkJCQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWNoYW5uZWxpc2F0aW9uQ29kZTI1NgkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYsCisJCXBpLUNvdW50UGVyRnJhbWUJCQkJCVBJLUNvdW50UGVyRnJhbWUsCisJCXN0dGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJCVRERC1QSUNILUNDb2RlCQkJCQlPUFRJT05BTCwKKwkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCU9QVElPTkFMLAorCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKKwkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LVBJQ0gJCQlPUFRJT05BTCwKKwkJcGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJCVBhZ2luZ0luZGljYXRvckxlbmd0aAkJCURFRkFVTFQgcGk0LAorCQluLUdBUAkJCQkJCQkJTi1HQVAJCQkJCQkJREVGQVVMVCBmNCwKKwkJbi1QQ0gJCQkJCQkJCU4tUENICQkJCQkJCURFRkFVTFQgMgorCX0JCit9CisKK1BJQ0gtSW5mby1yNyA6Oj0JCQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQljaGFubmVsaXNhdGlvbkNvZGUyNTYJCQkJQ2hhbm5lbGlzYXRpb25Db2RlMjU2LAorCQlwaS1Db3VudFBlckZyYW1lCQkJCQlQSS1Db3VudFBlckZyYW1lLAorCQlzdHRkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwl9LAorCXRkZDM4NAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlUREQtUElDSC1DQ29kZQkJCQkJT1BUSU9OQUwsCisJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyCQkJCQlPUFRJT05BTCwKKwkJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUsCisJCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1QSUNICQkJT1BUSU9OQUwsCisJCXBhZ2luZ0luZGljYXRvckxlbmd0aAkJCQlQYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQlERUZBVUxUIHBpNCwKKwkJbi1HQVAJCQkJCQkJCU4tR0FQCQkJCQkJCURFRkFVTFQgZjQsCisJCW4tUENICQkJCQkJCQlOLVBDSAkJCQkJCQlERUZBVUxUIDIKKwl9LAorCXRkZDc2OAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlUREQ3NjgtUElDSC1DQ29kZQkJCQlPUFRJT05BTCwKKwkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIJCQkJCU9QVElPTkFMLAorCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKKwkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LVBJQ0gJCQlPUFRJT05BTCwKKwkJcGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJCVBhZ2luZ0luZGljYXRvckxlbmd0aAkJCURFRkFVTFQgcGk0LAorCQluLUdBUAkJCQkJCQkJTi1HQVAJCQkJCQkJREVGQVVMVCBmNCwKKwkJbi1QQ0gJCQkJCQkJCU4tUENICQkJCQkJCURFRkFVTFQgMgorCX0KK30KKworUElDSC1JbmZvLUxDUi1yNCA6Oj0JCQkJU0VRVUVOQ0UgeworCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNAkJCQlPUFRJT05BTCwKKwlwaWNoQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1MQ1ItcjQJUGljaENoYW5uZWxpc2F0aW9uQ29kZUxpc3QtTENSLXI0LAorCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKKwlyZXBldGl0aW9uUGVyaW9kTGVuZ3RoT2Zmc2V0CQlSZXBQZXJMZW5ndGhPZmZzZXQtUElDSAkJCQlPUFRJT05BTCwKKwlwYWdpbmdJbmRpY2F0b3JMZW5ndGgJCQkJUGFnaW5nSW5kaWNhdG9yTGVuZ3RoCQkJREVGQVVMVCBwaTQsCisJbi1HQVAJCQkJCQkJCU4tR0FQCQkJCQkJCURFRkFVTFQgZjQsCisJbi1QQ0gJCQkJCQkJCU4tUENICQkJCQkJCURFRkFVTFQgMgorfQorCitQSUNILVBvd2VyT2Zmc2V0IDo6PQkJCQlJTlRFR0VSICgtMTAuLjUpCisKK1BpbG90Qml0czEyOCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBiNCwgcGI4IH0KKworUGlsb3RCaXRzMjU2IDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGIyLCBwYjQsIHBiOCB9CisKKwktLSBBY3R1YWwgbWVhc3VyZW1lbnQgcG93ZXIgb2Zmc2V0IHZhbHVlID0gSUUgdmFsdWUgKiAwLjUKK01lYXN1cmVtZW50UG93ZXJPZmZzZXQgOjo9CQkJSU5URUdFUiAoLTEyLi4yNikKKworUExDQ0gtSW5mbwkJOjo9CQkJCQlTRVFVRU5DRSB7CisJcGxjY2hTZXF1ZW5jZU51bWJlcgkJCQlJTlRFR0VSKDEuLjE3KSwKKwl0aW1lc2xvdE51bWJlcgkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0LAorCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlETC1UUy1DaGFubmVsaXNhdGlvbkNvZGUsCisJdHBjQ29tbWFuZFRhcmdldFJhdGUJCQlUUEMtQ29tbWFuZFRhcmdldFJhdGUKK30KKworUG9zaXRpb25GaXhlZE9yRmxleGlibGUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZml4ZWQsCisJCQkJCQkJCQkJZmxleGlibGUgfQorCitQb3dlckNvbnRyb2xBbGdvcml0aG0gOjo9CQkJQ0hPSUNFIHsKKwlhbGdvcml0aG0xCQkJCQkJCVRQQy1TdGVwU2l6ZUZERCwKKwlhbGdvcml0aG0yCQkJCQkJCU5VTEwKK30KKworUG93ZXJPZmZzZXRQaWxvdC1wZHBkY2ggOjo9CQkJSU5URUdFUiAoMC4uMjQpCisKK1Bvd2VyT2Zmc2V0VFBDLXBkcGRjaCA6Oj0JCQlJTlRFR0VSICgwLi4yNCkKKworUG93ZXJSYW1wU3RlcCA6Oj0JCQkJCUlOVEVHRVIgKDEuLjgpCisKK1BSQUNILUNoYW5Db2Rlcy1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjQpKSBPRgorCQkJCQkJCQkJCVRERC1QUkFDSC1DQ29kZS1MQ1ItcjQKKworUFJBQ0gtRGVmaW5pdGlvbi1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgeworCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLVBSQUNILUxDUi1yNCwKKwlwcmFjaC1DaGFuQ29kZXMtTENSCQkJCQlQUkFDSC1DaGFuQ29kZXMtTENSLXI0LAorCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKKwlmcGFjaC1JbmZvCQkJCQkJCUZQQUNILUluZm8tcjQKK30KKworUFJBQ0gtTWlkYW1ibGUgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlkaXJlY3QsCisJCQkJCQkJCQkJZGlyZWN0LUludmVydGVkIH0KKworUFJBQ0gtUGFydGl0aW9uaW5nIDo6PQkJCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBU0MpKSBPRgorCS0tIFRBQlVMQVI6IElmIG9ubHkgIk51bUFTQysxIiAod2l0aCwgTnVtQVNDKzEgPCBtYXhBU0MpIEFTQ1NldHRpbmctRkREIGFyZSBsaXN0ZWQsIAorCS0tIHRoZSByZW1haW5pbmcgKE51bUFTQysyIHRocm91Z2ggbWF4QVNDKSBBU0NzIGFyZSB1bnNwZWNpZmllZC4KKwkJCQkJCQkJCQkJQVNDU2V0dGluZy1GREQsCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCisJLS0gVEFCVUxBUjogSWYgb25seSAiTnVtQVNDKzEiICh3aXRoLCBOdW1BU0MrMSA8IG1heEFTQykgQVNDU2V0dGluZy1UREQgYXJlIGxpc3RlZCwgCisJLS0gdGhlIHJlbWFpbmluZyAoTnVtQVNDKzIgdGhyb3VnaCBtYXhBU0MpIEFTQ3MgYXJlIHVuc3BlY2lmaWVkLgorCQkJCQkJCQkJCQlBU0NTZXR0aW5nLVRERAorfQkKKworUFJBQ0gtUGFydGl0aW9uaW5nLXI3IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCisJLS0gVEFCVUxBUjogSWYgb25seSAiTnVtQVNDKzEiICh3aXRoLCBOdW1BU0MrMSA8IG1heEFTQykgQVNDU2V0dGluZy1GREQgYXJlIGxpc3RlZCwKKwktLSB0aGUgcmVtYWluaW5nIChOdW1BU0MrMiB0aHJvdWdoIG1heEFTQykgQVNDcyBhcmUgdW5zcGVjaWZpZWQuCisJCQkJCQkJCQkJCUFTQ1NldHRpbmctRkRELAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhBU0MpKSBPRgorCS0tIFRBQlVMQVI6IElmIG9ubHkgIk51bUFTQysxIiAod2l0aCwgTnVtQVNDKzEgPCBtYXhBU0MpIEFTQ1NldHRpbmctVEREIGFyZSBsaXN0ZWQsCisJLS0gdGhlIHJlbWFpbmluZyAoTnVtQVNDKzIgdGhyb3VnaCBtYXhBU0MpIEFTQ3MgYXJlIHVuc3BlY2lmaWVkLgorCQkJCQkJCQkJCQlBU0NTZXR0aW5nLVRERC1yNworfQorCitQUkFDSC1QYXJ0aXRpb25pbmctTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFTQykpIE9GCisJLS0gVEFCVUxBUjogSWYgb25seSAiTnVtQVNDKzEiICh3aXRoLCBOdW1BU0MrMSA8IG1heEFTQykgQVNDU2V0dGluZy1UREQtTENSLXI0IGFyZSBsaXN0ZWQsIAorCS0tIHRoZSByZW1haW5pbmcgKE51bUFTQysyIHRocm91Z2ggbWF4QVNDKSBBU0NzIGFyZSB1bnNwZWNpZmllZC4KKwkJCQkJCQkJCQkJQVNDU2V0dGluZy1UREQtTENSLXI0CisKK1BSQUNILVBvd2VyT2Zmc2V0IDo6PQkJCQlTRVFVRU5DRSB7CisJcG93ZXJSYW1wU3RlcAkJCQkJCVBvd2VyUmFtcFN0ZXAsCisJcHJlYW1ibGVSZXRyYW5zTWF4CQkJCQlQcmVhbWJsZVJldHJhbnNNYXgKK30KKworUFJBQ0gtUkFDSC1JbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWF2YWlsYWJsZVNpZ25hdHVyZXMJCQkJCUF2YWlsYWJsZVNpZ25hdHVyZXMsCisJCQlhdmFpbGFibGVTRgkJCQkJCQlTRi1QUkFDSCwKKwkJCXByZWFtYmxlU2NyYW1ibGluZ0NvZGVXb3JkTnVtYmVyCVByZWFtYmxlU2NyYW1ibGluZ0NvZGVXb3JkTnVtYmVyLAorCQkJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0LAorCQkJYXZhaWxhYmxlU3ViQ2hhbm5lbE51bWJlcnMJCQlBdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycworCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJVERELVBSQUNILUNDb2RlTGlzdCwKKwkJCXByYWNoLU1pZGFtYmxlCQkJCQkJUFJBQ0gtTWlkYW1ibGUKKwkJfQorCX0KK30KKworUFJBQ0gtUkFDSC1JbmZvLXI3IDo6PQkJCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJYXZhaWxhYmxlU2lnbmF0dXJlcwkJCQkJQXZhaWxhYmxlU2lnbmF0dXJlcywKKwkJCWF2YWlsYWJsZVNGCQkJCQkJCVNGLVBSQUNILAorCQkJcHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIJUHJlYW1ibGVTY3JhbWJsaW5nQ29kZVdvcmROdW1iZXIsCisJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQsCisJCQlhdmFpbGFibGVTdWJDaGFubmVsTnVtYmVycwkJCUF2YWlsYWJsZVN1YkNoYW5uZWxOdW1iZXJzCisJCX0sCisJCXRkZDM4NAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCQkJY2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlUREQtUFJBQ0gtQ0NvZGVMaXN0LAorCQkJcHJhY2gtTWlkYW1ibGUJCQkJCQlQUkFDSC1NaWRhbWJsZQorCQl9LAorCQl0ZGQ3NjgJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1lc2xvdAkJCQkJCQlUaW1lc2xvdE51bWJlciwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJVERENzY4LVBSQUNILUNDb2RlTGlzdCwKKwkJCXByYWNoLU1pZGFtYmxlCQkJCQkJUFJBQ0gtTWlkYW1ibGUKKwkJfQorCX0KK30KKworUFJBQ0gtUkFDSC1JbmZvLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJc3luYy1VTC1JbmZvCQkJCQkJU1lOQy1VTC1JbmZvLXI0LAorCXByYWNoLURlZmluaXRpb25MaXN0CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQUkFDSC1GUEFDSCkpIE9GCisJCQkJCQkJCQkJCVBSQUNILURlZmluaXRpb24tTENSLXI0Cit9CisKK1BSQUNILVN5c3RlbUluZm9ybWF0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwlwcmFjaC1SQUNILUluZm8JCQkJCQlQUkFDSC1SQUNILUluZm8sCisJdHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCXJhY2gtVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCVRyYW5zcG9ydEZvcm1hdFNldAkJCQkJT1BUSU9OQUwsCisJcmFjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAorCXByYWNoLVBhcnRpdGlvbmluZwkJCQkJUFJBQ0gtUGFydGl0aW9uaW5nCQkJCQlPUFRJT05BTCwKKwlwZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0CQlQZXJzaXN0ZW5jZVNjYWxpbmdGYWN0b3JMaXN0CQlPUFRJT05BTCwKKwlhYy1Uby1BU0MtTWFwcGluZ1RhYmxlCQkJCUFDLVRvLUFTQy1NYXBwaW5nVGFibGUJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQljb25zdGFudFZhbHVlCQkJCQkJQ29uc3RhbnRWYWx1ZQkJCQlPUFRJT05BTCwKKwkJCXByYWNoLVBvd2VyT2Zmc2V0CQkJCQlQUkFDSC1Qb3dlck9mZnNldAkJCU9QVElPTkFMLAorCQkJcmFjaC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzCQkJUkFDSC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzCU9QVElPTkFMLAorCQkJYWljaC1JbmZvCQkJCQkJCUFJQ0gtSW5mbwkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJTlVMTAorCX0JCit9CisKK1BSQUNILVN5c3RlbUluZm9ybWF0aW9uLXI3IDo6PQkJU0VRVUVOQ0UgeworCXByYWNoLVJBQ0gtSW5mbwkJCQkJCVBSQUNILVJBQ0gtSW5mby1yNywKKwl0cmFuc3BvcnRDaGFubmVsSWRlbnRpdHkJCQlUcmFuc3BvcnRDaGFubmVsSWRlbnRpdHksCisJcmFjaC1UcmFuc3BvcnRGb3JtYXRTZXQJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKKwlyYWNoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwsCisJcHJhY2gtUGFydGl0aW9uaW5nCQkJCQlQUkFDSC1QYXJ0aXRpb25pbmctcjcJCQkJT1BUSU9OQUwsCisJcGVyc2lzdGVuY2VTY2FsaW5nRmFjdG9yTGlzdAkJUGVyc2lzdGVuY2VTY2FsaW5nRmFjdG9yTGlzdAkJT1BUSU9OQUwsCisJYWMtVG8tQVNDLU1hcHBpbmdUYWJsZQkJCQlBQy1Uby1BU0MtTWFwcGluZ1RhYmxlCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJY29uc3RhbnRWYWx1ZQkJCQkJCUNvbnN0YW50VmFsdWUJCQkJT1BUSU9OQUwsCisJCQlwcmFjaC1Qb3dlck9mZnNldAkJCQkJUFJBQ0gtUG93ZXJPZmZzZXQJCQlPUFRJT05BTCwKKwkJCXJhY2gtVHJhbnNtaXNzaW9uUGFyYW1ldGVycwkJCVJBQ0gtVHJhbnNtaXNzaW9uUGFyYW1ldGVycwlPUFRJT05BTCwKKwkJCWFpY2gtSW5mbwkJCQkJCQlBSUNILUluZm8JCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCU5VTEwKKwl9Cit9CisKK1BSQUNILVN5c3RlbUluZm9ybWF0aW9uLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCXByYWNoLVJBQ0gtSW5mby1MQ1IJCQkJCVBSQUNILVJBQ0gtSW5mby1MQ1ItcjQsCisJcmFjaC1UcmFuc3BvcnRGb3JtYXRTZXQtTENSCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LUxDUgkJCU9QVElPTkFMLAorCXByYWNoLVBhcnRpdGlvbmluZy1MQ1IJCQkJUFJBQ0gtUGFydGl0aW9uaW5nLUxDUi1yNAkJT1BUSU9OQUwKK30KKworUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKKwkJCQkJCQkJCQlQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbgorCitQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhQUkFDSCkpIE9GCisJCQkJCQkJCQkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb24tcjcKKworUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFBSQUNIKSkgT0YKKwkJCQkJCQkJCQkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb24tTENSLXI0CisKK1ByZWFtYmxlUmV0cmFuc01heCA6Oj0JCQkJSU5URUdFUiAoMS4uNjQpCisKK1ByZWFtYmxlU2NyYW1ibGluZ0NvZGVXb3JkTnVtYmVyIDo6PQlJTlRFR0VSICgwLi4xNSkKKworUHJlRGVmUGh5Q2hDb25maWd1cmF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCXVsLURQQ0gtSW5mb1ByZWRlZgkJCQkJVUwtRFBDSC1JbmZvUHJlZGVmLAorCWRsLUNvbW1vbkluZm9ybWF0aW9uUHJlZGVmCQkJREwtQ29tbW9uSW5mb3JtYXRpb25QcmVkZWYJT1BUSU9OQUwKK30KKworUHJpbWFyeUNDUENILUluZm8gOjo9CQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQktLSBzeW5jQ2FzZSBzaG91bGQgYmUgaWdub3JlZCBmb3IgMS4yOE1jcHMgVEREIG1vZGUKKwkJc3luY0Nhc2UgCQkJCQkJCUNIT0lDRSB7CisJCQlzeW5jQ2FzZTEJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyCQkJCQkKKwkJCX0sCisJCQlzeW5jQ2FzZTIJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXRpbWVzbG90U3luYzIJCQkJCQlUaW1lc2xvdFN5bmMyCisJCQl9CisJCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lECQkJCU9QVElPTkFMLAorCQlzY3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwl9Cit9CisKK1ByaW1hcnlDQ1BDSC1JbmZvLXI0IDo6PQkJCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXN5bmNDYXNlIAkJCQkJCQlDSE9JQ0UgeworCQkJCQlzeW5jQ2FzZTEJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJCQkJfSwKKwkJCQkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRpbWVzbG90U3luYzIJCQkJCQlUaW1lc2xvdFN5bmMyCisJCQkJCX0KKwkJCQl9CQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KKwkJCX0KKwkJfSwKKwkJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRAkJCQlPUFRJT05BTCwKKwkJc2N0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJfQorfQorCitQcmltYXJ5Q0NQQ0gtSW5mby1yNyA6Oj0JCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdHgtRGl2ZXJzaXR5SW5kaWNhdG9yCQkJCUJPT0xFQU4KKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzeW5jQ2FzZSAJCQkJCQkJQ0hPSUNFIHsKKwkJCQkJc3luY0Nhc2UxCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyCisJCQkJCX0sCisJCQkJCXN5bmNDYXNlMgkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl0aW1lc2xvdFN5bmMyCQkJCQkJVGltZXNsb3RTeW5jMgorCQkJCQl9CisJCQkJfQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJCQl9LAorCQkJdGRkNzY4IAkJCQkJCVNFUVVFTkNFIHsKKwkJCQlzeW5jQ2FzZSAJCQkJCQlDSE9JQ0UgeworCQkJCQlzeW5jQ2FzZTEJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl0aW1lc2xvdAkJCQkJCVRpbWVzbG90TnVtYmVyCisJCQkJCX0sCisJCQkJCXN5bmNDYXNlMgkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl0aW1lc2xvdFN5bmMyCQkJCQkJVGltZXNsb3RTeW5jMgorCQkJCQl9CisJCQkJfQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdHN0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJCQl9CisJCX0sCisJCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQJCQkJT1BUSU9OQUwsCisJCXNjdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorCX0KK30KKworUHJpbWFyeUNDUENILUluZm8tTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCXRzdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTiwKKwljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lECQkJCU9QVElPTkFMLAorCXNjdGQtSW5kaWNhdG9yCQkJCQkJQk9PTEVBTgorfQorCistLSBGb3IgMS4yOE1jcHMgVERELCB0aGUgZm9sbG93aW5nIElFIGluY2x1ZGVzIGVsZW1lbnRzIGZvciB0aGUgUENDUENIIEluZm8gYWRkaXRpb25hbCB0byB0aG9zZQorLS0gaW4gUHJpbWFyeUNDUENILUluZm8KK1ByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KK30KKworUHJpbWFyeUNDUENILUluZm9Qb3N0IDo6PQkJCVNFUVVFTkNFIHsKKwlzeW5jQ2FzZSAJCQkJCQkJQ0hPSUNFIHsKKwkJc3luY0Nhc2UxCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyCQkJCQkKKwkJfSwKKwkJc3luY0Nhc2UyCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90U3luYzIJCQkJCQlUaW1lc2xvdFN5bmMyCisJCX0KKwl9LAorCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQsCisJc2N0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCit9CisKK1ByaW1hcnlDQ1BDSC1JbmZvUG9zdFRERC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwl0c3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4sCisJY2VsbFBhcmFtZXRlcnNJRAkJCQkJQ2VsbFBhcmFtZXRlcnNJRCwKKwlzY3RkLUluZGljYXRvcgkJCQkJCUJPT0xFQU4KK30KKworUHJpbWFyeUNDUENILVRYLVBvd2VyIDo6PQkJCUlOVEVHRVIgKDYuLjQzKQorCitQcmltYXJ5Q1BJQ0gtSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCXByaW1hcnlTY3JhbWJsaW5nQ29kZQkJCQlQcmltYXJ5U2NyYW1ibGluZ0NvZGUKK30KKworUHJpbWFyeUNQSUNILVRYLVBvd2VyIDo6PQkJCUlOVEVHRVIgKC0xMC4uNTApCisKK1ByaW1hcnlTY3JhbWJsaW5nQ29kZSA6Oj0JCQlJTlRFR0VSICgwLi41MTEpCisKK1B1bmN0dXJpbmdMaW1pdCA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBsMC00MCwgcGwwLTQ0LCBwbDAtNDgsIHBsMC01MiwgcGwwLTU2LAorCQkJCQkJCQkJCXBsMC02MCwgcGwwLTY0LCBwbDAtNjgsIHBsMC03MiwgcGwwLTc2LAorCQkJCQkJCQkJCXBsMC04MCwgcGwwLTg0LCBwbDAtODgsIHBsMC05MiwgcGwwLTk2LCBwbDEgfQorCitQVVNDSC1DYXBhY2l0eUFsbG9jYXRpb25JbmZvIDo6PQlTRVFVRU5DRSB7CisJcHVzY2gtQWxsb2NhdGlvbgkJCQkJQ0hPSUNFIHsKKwkJcHVzY2gtQWxsb2NhdGlvblBlbmRpbmcJCQkJTlVMTCwKKwkJcHVzY2gtQWxsb2NhdGlvbkFzc2lnbm1lbnQJCQlTRVFVRU5DRSB7CisJCQlwdXNjaC1BbGxvY2F0aW9uUGVyaW9kSW5mbwkJCUFsbG9jYXRpb25QZXJpb2RJbmZvLAorCQkJcHVzY2gtUG93ZXJDb250cm9sSW5mbwkJCQlVTC1UYXJnZXRTSVIJCQkJT1BUSU9OQUwsCisJCQljb25maWd1cmF0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQlERUZBVUxUIDEsCisJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkKKwkJCQl9LAorCQkJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQkJCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mbywKKwkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQkJT1BUSU9OQUwKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1BVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjQgOjo9CVNFUVVFTkNFIHsKKwlwdXNjaC1BbGxvY2F0aW9uCQkJCQlDSE9JQ0UgeworCQlwdXNjaC1BbGxvY2F0aW9uUGVuZGluZwkJCQlOVUxMLAorCQlwdXNjaC1BbGxvY2F0aW9uQXNzaWdubWVudAkJCVNFUVVFTkNFIHsKKwkJCXB1c2NoLUFsbG9jYXRpb25QZXJpb2RJbmZvCQkJQWxsb2NhdGlvblBlcmlvZEluZm8sCisJCQlwdXNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVBVU0NILVBvd2VyQ29udHJvbEluZm8tcjQJT1BUSU9OQUwsCisJCQljb25maWd1cmF0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQlERUZBVUxUIDEsCisJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkKKwkJCQl9LAorCQkJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQkJCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mby1yNCwKKwkJCQkJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eQkJT1BUSU9OQUwKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK1BVU0NILUNhcGFjaXR5QWxsb2NhdGlvbkluZm8tcjcgOjo9CVNFUVVFTkNFIHsKKwlwdXNjaC1BbGxvY2F0aW9uCQkJCQlDSE9JQ0UgeworCQlwdXNjaC1BbGxvY2F0aW9uUGVuZGluZwkJCQlOVUxMLAorCQlwdXNjaC1BbGxvY2F0aW9uQXNzaWdubWVudAkJCVNFUVVFTkNFIHsKKwkJCXB1c2NoLUFsbG9jYXRpb25QZXJpb2RJbmZvCQkJQWxsb2NhdGlvblBlcmlvZEluZm8sCisJCQlwdXNjaC1Qb3dlckNvbnRyb2xJbmZvCQkJCVBVU0NILVBvd2VyQ29udHJvbEluZm8tcjcJT1BUSU9OQUwsCisJCQljb25maWd1cmF0aW9uCQkJCQkJQ0hPSUNFIHsKKwkJCQlvbGQtQ29uZmlndXJhdGlvbgkJCQkJU0VRVUVOQ0UgeworCQkJCQl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQlERUZBVUxUIDEsCisJCQkJCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHkKKwkJCQl9LAorCQkJCW5ldy1Db25maWd1cmF0aW9uCQkJCQlTRVFVRU5DRSB7CisJCQkJCXB1c2NoLUluZm8JCQkJCQkJUFVTQ0gtSW5mby1WSENSLAorCQkJCQlwdXNjaC1JZGVudGl0eQkJCQkJCVBVU0NILUlkZW50aXR5CQlPUFRJT05BTAorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworUFVTQ0gtSWRlbnRpdHkgOjo9CQkJCQlJTlRFR0VSICgxLi5oaVBVU0NIaWRlbnRpdGllcykKKworUFVTQ0gtSW5mbyA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXB1c2NoLVRpbWVzbG90c0NvZGVzCQkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQkJCU9QVElPTkFMCit9CisKK1BVU0NILUluZm8tcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXB1c2NoLVRpbWVzbG90c0NvZGVzCQkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQlPUFRJT05BTAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXB1c2NoLVRpbWVzbG90c0NvZGVzCQkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAlPUFRJT05BTAorCQl9CisJfQorfQorCitQVVNDSC1JbmZvLVZIQ1IgOjo9CQkJCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCQkJCQlERUZBVUxUIDEsCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXB1c2NoLVRpbWVzbG90c0NvZGVzLVZIQ1IJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtSW5mby1MQ1ItcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKworCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKKwlwdXNjaC1UaW1lc2xvdHNDb2RlcwkJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJCQlPUFRJT05BTAorfQorCitQVVNDSC1Qb3dlckNvbnRyb2xJbmZvLXI0IDo6PQkJU0VRVUVOQ0UgeworCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLVBVU0NIZGVzIGZvciAxLjI4TWNwcyBUREQKKwktLSBBY3R1YWwgdmFsdWUgUFJYLVBVU0NIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQorCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKKwl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJdGRkMzg0CQkJCQkJCQlOVUxMLAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRwYy1TdGVwU2l6ZQkJCQkJCVRQQy1TdGVwU2l6ZVRERAkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitQVVNDSC1Qb3dlckNvbnRyb2xJbmZvLXI3IDo6PQkJU0VRVUVOQ0UgeworCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLVBVU0NIZGVzIGZvciAxLjI4TWNwcyBUREQKKwktLSBBY3R1YWwgdmFsdWUgUFJYLVBVU0NIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQorCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUiwKKwl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJdGRkMzg0CQkJCQkJCQlOVUxMLAorCQl0ZGQ3NjgJCQkJCQkJCU5VTEwsCisJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECQkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1BVU0NILVN5c0luZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eSwKKwlwdXNjaC1JbmZvCQkJCQkJCVBVU0NILUluZm8sCisJdXNjaC1URlMJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CQkJCQlPUFRJT05BTCwKKwl1c2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtU3lzSW5mby1WSENSIDo6PQkJCQkJU0VRVUVOQ0UgeworCXB1c2NoLUlkZW50aXR5CQkJCQkJUFVTQ0gtSWRlbnRpdHksCisJcHVzY2gtSW5mby1WSENSCQkJCQkJUFVTQ0gtSW5mby1WSENSLAorCXVzY2gtVHJhbnNwb3J0Q2hhbm5lbHNJbmZvCQkJVVNDSC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlPUFRJT05BTCwKKwl1c2NoLVRGQ1MJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtU3lzSW5mby1IQ1ItcjUgOjo9CQkJCQlTRVFVRU5DRSB7CisJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eSwKKwlwdXNjaC1JbmZvCQkJCQkJCVBVU0NILUluZm8sCisJdXNjaC1UcmFuc3BvcnRDaGFubmVsc0luZm8JCQlVU0NILVRyYW5zcG9ydENoYW5uZWxzSW5mbwkJCU9QVElPTkFMLAorCXVzY2gtVEZDUwkJCQkJCQlURkNTCQkJCQkJCQlPUFRJT05BTAorfQorCitQVVNDSC1TeXNJbmZvLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJcHVzY2gtSWRlbnRpdHkJCQkJCQlQVVNDSC1JZGVudGl0eSwKKwlwdXNjaC1JbmZvCQkJCQkJCVBVU0NILUluZm8tTENSLXI0LAorCXVzY2gtVEZTCQkJCQkJCVRyYW5zcG9ydEZvcm1hdFNldAkJCQkJT1BUSU9OQUwsCisJdXNjaC1URkNTCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMCit9CisKK1BVU0NILVN5c0luZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UFVTQ0gpKSBPRgorCQkJCQkJCQkJCVBVU0NILVN5c0luZm8KKworUFVTQ0gtU3lzSW5mb0xpc3QtSENSLXI1IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GIFBVU0NILVN5c0luZm8tSENSLXI1CisKK1BVU0NILVN5c0luZm9MaXN0LUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCisJCQkJCQkJCQkJUFVTQ0gtU3lzSW5mby1MQ1ItcjQKKworUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXB1c2NoLVN5c0luZm8JCQkJCQkJUFVTQ0gtU3lzSW5mbywKKwlzZm4tVGltZUluZm8JCQkJCQkJU0ZOLVRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitQVVNDSC1TeXNJbmZvTGlzdC1TRk4tSENSLXI1IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXB1c2NoLVN5c0luZm8JCQkJCQkJUFVTQ0gtU3lzSW5mby1IQ1ItcjUsCisJc2ZuLVRpbWVJbmZvCQkJCQkJCVNGTi1UaW1lSW5mbwkJCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhQVVNDSCkpIE9GCisJCQkJCQkJCQkJU0VRVUVOQ0UgeworCXB1c2NoLVN5c0luZm8JCQkJCQkJUFVTQ0gtU3lzSW5mby1MQ1ItcjQsCisJc2ZuLVRpbWVJbmZvCQkJCQkJCVNGTi1UaW1lSW5mbwkJCQkJT1BUSU9OQUwKK30KKworUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLVZIQ1IgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UFVTQ0gpKSBPRgorCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwlwdXNjaC1TeXNJbmZvLVZIQ1IJCQkJCQlQVVNDSC1TeXNJbmZvLVZIQ1IsCisJc2ZuLVRpbWVJbmZvCQkJCQkJCVNGTi1UaW1lSW5mbwkJCQkJT1BUSU9OQUwKK30KKworUkFDSC1UcmFuc21pc3Npb25QYXJhbWV0ZXJzIDo6PQkJU0VRVUVOQ0UgeworCW1tYXgJCQkJCQkJCUlOVEVHRVIgKDEuLjMyKSwKKwluYjAxTWluCQkJCQkJCQlOQjAxLAorCW5iMDFNYXgJCQkJCQkJCU5CMDEKK30KKworUmVkdWNlZFNjcmFtYmxpbmdDb2RlTnVtYmVyIDo6PQkJSU5URUdFUiAoMC4uODE5MSkKKworUmVwZXRpdGlvblBlcmlvZEFuZExlbmd0aCA6Oj0JCUNIT0lDRSB7CisJcmVwZXRpdGlvblBlcmlvZDEJCQkJCU5VTEwsCisJLS0gcmVwZXRpdGlvblBlcmlvZDIgY291bGQganVzdCBhcyB3ZWxsIGJlIE5VTEwgYWxzby4KKwlyZXBldGl0aW9uUGVyaW9kMgkJCQkJSU5URUdFUiAoMS4uMSksCisJcmVwZXRpdGlvblBlcmlvZDQJCQkJCUlOVEVHRVIgKDEuLjMpLAorCXJlcGV0aXRpb25QZXJpb2Q4CQkJCQlJTlRFR0VSICgxLi43KSwKKwlyZXBldGl0aW9uUGVyaW9kMTYJCQkJCUlOVEVHRVIgKDEuLjE1KSwKKwlyZXBldGl0aW9uUGVyaW9kMzIJCQkJCUlOVEVHRVIgKDEuLjMxKSwKKwlyZXBldGl0aW9uUGVyaW9kNjQJCQkJCUlOVEVHRVIgKDEuLjYzKQorfQorCitSZXBldGl0aW9uUGVyaW9kTGVuZ3RoQW5kT2Zmc2V0IDo6PSBDSE9JQ0UgeworCXJlcGV0aXRpb25QZXJpb2QxCQkJCQlOVUxMLAorCXJlcGV0aXRpb25QZXJpb2QyCQkJCQlTRVFVRU5DRSB7CisJCWxlbmd0aAkJCQkJCQkJTlVMTCwKKwkJb2Zmc2V0CQkJCQkJCQlJTlRFR0VSICgwLi4xKQorCX0sCisJcmVwZXRpdGlvblBlcmlvZDQJCQkJCVNFUVVFTkNFIHsKKwkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi4zKSwKKwkJb2Zmc2V0CQkJCQkJCQlJTlRFR0VSICgwLi4zKQorCX0sCisJcmVwZXRpdGlvblBlcmlvZDgJCQkJCVNFUVVFTkNFIHsKKwkJbGVuZ3RoCQkJCQkJCQlJTlRFR0VSICgxLi43KSwKKwkJb2Zmc2V0CQkJCQkJCQlJTlRFR0VSICgwLi43KQorCX0sCisJcmVwZXRpdGlvblBlcmlvZDE2CQkJCQlTRVFVRU5DRSB7CisJCWxlbmd0aAkJCQkJCQkJSU5URUdFUiAoMS4uMTUpLAorCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KQorCX0sCisJcmVwZXRpdGlvblBlcmlvZDMyCQkJCQlTRVFVRU5DRSB7CisJCWxlbmd0aAkJCQkJCQkJSU5URUdFUiAoMS4uMzEpLAorCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKQorCX0sCisJcmVwZXRpdGlvblBlcmlvZDY0CQkJCQlTRVFVRU5DRSB7CisJCWxlbmd0aAkJCQkJCQkJSU5URUdFUiAoMS4uNjMpLAorCQlvZmZzZXQJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCX0KK30KKworUmVwbGFjZWRQRFNDSC1Db2RlSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJdGZjaS1GaWVsZDIJCQkJCQkJTWF4VEZDSS1GaWVsZDJWYWx1ZSwKKwlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTRi1QRFNDSCwKKwljb2RlTnVtYmVyCQkJCQkJCUNvZGVOdW1iZXJEU0NILAorCW11bHRpQ29kZUluZm8JCQkJCQlNdWx0aUNvZGVJbmZvCit9CisKK1JlcGxhY2VkUERTQ0gtQ29kZUluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRGQ0ktMi1Db21icykpIE9GCisJCQkJCQkJCQkJUmVwbGFjZWRQRFNDSC1Db2RlSW5mbworCitSZXBQZXJMZW5ndGhPZmZzZXQtUElDSCA6Oj0JCQlDSE9JQ0UgeworCXJwcDQtMgkJCQkJCQkJSU5URUdFUiAoMC4uMyksIAorCXJwcDgtMgkJCQkJCQkJSU5URUdFUiAoMC4uNyksIAorCXJwcDgtNAkJCQkJCQkJSU5URUdFUiAoMC4uNyksCisJcnBwMTYtMgkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLCAKKwlycHAxNi00CQkJCQkJCQlJTlRFR0VSICgwLi4xNSksIAorCXJwcDMyLTIJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwgCisJcnBwMzItNAkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLCAKKwlycHA2NC0yCQkJCQkJCQlJTlRFR0VSICgwLi42MyksIAorCXJwcDY0LTQJCQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorfQorCitSZXBQZXJMZW5ndGhPZmZzZXQtTUlDSCA6Oj0JCQlDSE9JQ0UgeworCXJwcDQtMgkJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJcnBwOC0yCQkJCQkJCQlJTlRFR0VSICgwLi43KSwKKwlycHA4LTQJCQkJCQkJCUlOVEVHRVIgKDAuLjcpLAorCXJwcDE2LTIJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwlycHAxNi00CQkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJcnBwMzItMgkJCQkJCQkJSU5URUdFUiAoMC4uMzEpLAorCXJwcDMyLTQJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKKwlycHA2NC0yCQkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJcnBwNjQtNAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpCit9CisKK1Jlc3RyaWN0ZWRUckNIIDo6PQkJCQkJU0VRVUVOQ0UgeworCWRsLXJlc3RyaWN0ZWRUckNoLVR5cGUJCQkJREwtVHJDSC1UeXBlLAorCXJlc3RyaWN0ZWRETC1UckNILUlkZW50aXR5CQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCWFsbG93ZWRURklMaXN0CQkJCQkJQWxsb3dlZFRGSS1MaXN0Cit9CisKK1Jlc3RyaWN0ZWRUckNILUluZm9MaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVJlc3RyaWN0ZWRUckNICisKK1JMLUFkZGl0aW9uSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwlkbC1EUENILUluZm9QZXJSTAkJCQkJREwtRFBDSC1JbmZvUGVyUkwsCisJLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24KKwktLSBhbmQgdGhlIElFcyBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teQkJCQkJCQkJQk9PTEVBTiwKKwlkdW1teTIJCQkJCQkJCVNDQ1BDSC1JbmZvRm9yRkFDSAkJCQkJT1BUSU9OQUwKK30KKworUkwtQWRkaXRpb25JbmZvcm1hdGlvbi1yNiA6Oj0JCVNFUVVFTkNFIHsKKwlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJY2VsbC1JZAkJCQkJCQkJQ2VsbElkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJZGwtZHBjaEluZm8JCQkJCQkJQ0hPSUNFIHsKKwkJZGwtRFBDSC1JbmZvUGVyUkwJCQkJCURMLURQQ0gtSW5mb1BlclJMLXI1LAorCQlkbC1GRFBDSC1JbmZvUGVyUkwJCQkJCURMLUZEUENILUluZm9QZXJSTC1yNgorCX0sCisJZS1ISUNILUluZm9ybWF0aW9uCQkJCQlFLUhJQ0gtSW5mb3JtYXRpb24JCQkJCU9QVElPTkFMLAorCWUtUkdDSC1JbmZvcm1hdGlvbgkJCQkJRS1SR0NILUluZm9ybWF0aW9uCQkJCQlPUFRJT05BTAorfQorCitSTC1BZGRpdGlvbkluZm9ybWF0aW9uTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSTC0xKSkgT0YKKwkJCQkJCQkJCQlSTC1BZGRpdGlvbkluZm9ybWF0aW9uCisKK1JMLUFkZGl0aW9uSW5mb3JtYXRpb25MaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwtMSkpIE9GCisJCQkJCQkJCQkJUkwtQWRkaXRpb25JbmZvcm1hdGlvbi1yNgorCitSTC1JZGVudGlmaWVyTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCitSTC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCitSUFAgOjo9CQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltb2RlMCwgbW9kZTEgfQorCitTLUZpZWxkIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllMWJpdCwgZTJiaXRzIH0KKworU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZSA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMzItMSwgY2MzMi0yLCBjYzMyLTMsIGNjMzItNCwKKwkJCQkJCQkJCQljYzMyLTUsIGNjMzItNiwgY2MzMi03LCBjYzMyLTgsCisJCQkJCQkJCQkJY2MzMi05LCBjYzMyLTEwLCBjYzMyLTExLCBjYzMyLTEyLAorCQkJCQkJCQkJCWNjMzItMTMsIGNjMzItMTQsIGNjMzItMTUsIGNjMzItMTYsCisJCQkJCQkJCQkJY2MzMi0xNywgY2MzMi0xOCwgY2MzMi0xOSwgY2MzMi0yMCwKKwkJCQkJCQkJCQljYzMyLTIxLCBjYzMyLTIyLCBjYzMyLTIzLCBjYzMyLTI0LAorCQkJCQkJCQkJCWNjMzItMjUsIGNjMzItMjYsIGNjMzItMjcsIGNjMzItMjgsCisJCQkJCQkJCQkJY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMSwgY2MzMi0zMiB9CisKK1NDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGVMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4uMTYpKSBPRgorCQkJCQkJCQkJCVNDQ1BDSC1DaGFubmVsaXNhdGlvbkNvZGUKKworU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QtVkhDUiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLjMyKSkgT0YKKwkJCQkJCQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IKKworU0NDUENILUluZm9Gb3JGQUNIIDo6PQkJCQlTRVFVRU5DRSB7CisJc2Vjb25kYXJ5Q0NQQ0gtSW5mbwkJCQkJU2Vjb25kYXJ5Q0NQQ0gtSW5mbywKKwl0ZmNzCQkJCQkJCQlURkNTLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QsCisJCQlzaWItUmVmZXJlbmNlTGlzdEZBQ0gJCQkJU0lCLVJlZmVyZW5jZUxpc3RGQUNICisJCX0sCisJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJZmFjaC1QQ0gtSW5mb3JtYXRpb25MaXN0CQkJRkFDSC1QQ0gtSW5mb3JtYXRpb25MaXN0CisJCX0KKwl9Cit9CisKK1NDQ1BDSC1JbmZvRm9yRkFDSC1yNCA6Oj0JCQkJU0VRVUVOQ0UgeworCXNlY29uZGFyeUNDUENILUluZm8JCQkJCVNlY29uZGFyeUNDUENILUluZm8tcjQsCisJdGZjcwkJCQkJCQkJVEZDUywKKwlmYWNoLVBDSC1JbmZvcm1hdGlvbkxpc3QJCQlGQUNILVBDSC1JbmZvcm1hdGlvbkxpc3QsCisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNpYi1SZWZlcmVuY2VMaXN0RkFDSAkJCVNJQi1SZWZlcmVuY2VMaXN0RkFDSAorCQl9LAorCQl0ZGQJCQkJCQkJCU5VTEwKKwl9Cit9CisKK1NDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbiA6Oj0JCVNFUVVFTkNFIHsKKwlzZWNvbmRhcnlDQ1BDSC1JbmZvCQkJCQlTZWNvbmRhcnlDQ1BDSC1JbmZvLAorCXRmY3MJCQkJCQkJCVRGQ1MJCQkJCQkJCU9QVElPTkFMLAorCWZhY2gtUENILUluZm9ybWF0aW9uTGlzdAkJCUZBQ0gtUENILUluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAorCXBpY2gtSW5mbwkJCQkJCQlQSUNILUluZm8JCQkJCQkJT1BUSU9OQUwKK30KKworU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwlzZWNvbmRhcnlDQ1BDSC1MQ1ItRXh0ZW5zaW9ucwlTZWNvbmRhcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQsCisJLS0gcGljaC1JbmZvIGluIHRoZSBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24gSUUgc2hhbGwgYmUgYWJzZW50LAorCS0tIGFuZCBpbnN0ZWFkIHRoZSBmb2xsb3dpbmcgdXNlZC4KKwlwaWNoLUluZm8JCQkJCQlQSUNILUluZm8tTENSLXI0CQkJCQkJT1BUSU9OQUwKK30KKworU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLXI3IDo6PQkJU0VRVUVOQ0UgeworCXNlY29uZGFyeUNDUENILUluZm8JCQkJCVNlY29uZGFyeUNDUENILUluZm8tcjcsCisJdGZjcwkJCQkJCQkJVEZDUwkJCQkJCQkJT1BUSU9OQUwsCisJZmFjaC1QQ0gtSW5mb3JtYXRpb25MaXN0CQkJRkFDSC1QQ0gtSW5mb3JtYXRpb25MaXN0CQkJT1BUSU9OQUwsCisJcGljaC1JbmZvCQkJCQkJCVBJQ0gtSW5mby1yNwkJCQkJCU9QVElPTkFMCit9CisKK1NDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhTQ0NQQ0gpKSBPRgorCQkJCQkJCQkJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbgorCitTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKKwkJCQkJCQkJCQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tcjcKKworLS0gU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQtZXh0IGluY2x1ZGVzIGVsZW1lbnRzIGFkZGl0aW9uYWwgdG8gdGhvc2UgaW4KKy0tIFNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QgZm9yIHRoZSAxLjI4TWNwcyBUREQuIFRoZSBvcmRlciBvZiB0aGUgSUVzCistLSBpbmRpY2F0ZXMgd2hpY2ggU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLUxDUi1yNC1leHQgSUUgZXh0ZW5kcyB3aGljaAorLS0gU0NDUENILVN5c3RlbUluZm9ybWF0aW9uIElFLgorU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKKwkJCQkJCQkJCQkJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1MQ1ItcjQtZXh0CisKKy0tIFRoZSBTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNiBpcyB1c2VkIGZvciBhbiBTLUNDUENIIGRlZGljYXRlZCBmb3IgTUJNUyBwdXJwb3Nlcy4KK1NDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TLXI2IDo6PSBTRVFVRU5DRSB7CisJc2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMJCQkJU2Vjb25kYXJ5Q0NQQ0hJbmZvLU1CTVMtcjYsCisJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25TZXQJCVRGQ1MsCisJZmFjaENhcnJ5aW5nTUNDSAkJCQkJU0VRVUVOQ0UgeworCQltY2NoLXRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJCW1jY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NQ0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CisJfSwKKwlmYWNoQ2FycnlpbmdNVENILUxpc3QJCQkJTUJNUy1GQUNIQ2FycnlpbmdNVENILUxpc3QJCQlPUFRJT05BTCwKKwktLSBJZiBzY2hlZHVsaW5nSW5mb3JtYXRpb24gaXMgcHJvdmlkZWQKKwlmYWNoQ2FycnlpbmdNU0NICQkJCQlTRVFVRU5DRSB7CisJCW1zY2gtdHJhbnNwb3J0Rm9ybWF0U2V0CQkJCVRyYW5zcG9ydEZvcm1hdFNldCwKKwkJbXNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYKKwl9CQlPUFRJT05BTAorfQorCistLSBUaGUgU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLU1CTVMtcjcgaXMgdXNlZCBmb3IgYW4gUy1DQ1BDSCBkZWRpY2F0ZWQgZm9yIE1CTVMgcHVycG9zZXMuCitTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb24tTUJNUy1yNyA6Oj0gU0VRVUVOQ0UgeworCXNlY29uZGFyeUNDUENISW5mby1NQk1TCQkJCVNlY29uZGFyeUNDUENISW5mby1NQk1TLXI3LAorCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uU2V0CQlURkNTLAorCWZhY2hDYXJyeWluZ01DQ0gJCQkJCVNFUVVFTkNFIHsKKwkJbWNjaC10cmFuc3BvcnRGb3JtYXRTZXQJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0LAorCQltY2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTUNDSC1Db25maWd1cmF0aW9uSW5mby1yNgorCX0sCisJZmFjaENhcnJ5aW5nTVRDSC1MaXN0CQkJCU1CTVMtRkFDSENhcnJ5aW5nTVRDSC1MaXN0CQkJT1BUSU9OQUwsCisJLS0gSWYgc2NoZWR1bGluZ0luZm9ybWF0aW9uIGlzIHByb3ZpZGVkCisJZmFjaENhcnJ5aW5nTVNDSAkJCQkJU0VRVUVOQ0UgeworCQltc2NoLXRyYW5zcG9ydEZvcm1hdFNldAkJCQlUcmFuc3BvcnRGb3JtYXRTZXQsCisJCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CisJfQkJT1BUSU9OQUwKK30KKworU2NyYW1ibGluZ0NvZGVDaGFuZ2UgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY29kZUNoYW5nZSwgbm9Db2RlQ2hhbmdlIH0KKworU2NyYW1ibGluZ0NvZGVUeXBlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzaG9ydFNDLAorCQkJCQkJCQkJCWxvbmdTQyB9CisKK1NlY29uZGFyeUNDUENILUluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gZHVtbXkxIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teTEJCQkJCQkJUENQSUNILVVzYWdlRm9yQ2hhbm5lbEVzdCwKKwkJCS0tIGR1bW15MiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uICBJdCBzaG91bGQgbm90CisJCQktLSBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15MgkJCQkJCQlTZWNvbmRhcnlDUElDSC1JbmZvCQkJCU9QVElPTkFMLAorCQkJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMLAorCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQlzZi1BbmRDb2RlTnVtYmVyCQkJCVNGMjU2LUFuZENvZGVOdW1iZXIsCisJCQlwaWxvdFN5bWJvbEV4aXN0ZW5jZQkJCUJPT0xFQU4sCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJQk9PTEVBTiwKKwkJCXBvc2l0aW9uRml4ZWRPckZsZXhpYmxlCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCisJCQl0aW1pbmdPZmZzZXQJCQkJCVRpbWluZ09mZnNldAkJCQkJREVGQVVMVCAwCisJCX0sCisJCXRkZCAJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gVEFCVUxBUjogdGhlIG9mZnNldCBpcyBpbmNsdWRlZCBpbiBDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gKKwkJCWNvbW1vblRpbWVzbG90SW5mbwkJCQlDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gsCisJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mbywKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAorCQl9CisJfQorfQorCitTZWNvbmRhcnlDQ1BDSC1JbmZvLXI0IDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKKwkJCXBpbG90U3ltYm9sRXhpc3RlbmNlCQkJQk9PTEVBTiwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQlCT09MRUFOLAorCQkJcG9zaXRpb25GaXhlZE9yRmxleGlibGUJCQlQb3NpdGlvbkZpeGVkT3JGbGV4aWJsZSwKKwkJCXRpbWluZ09mZnNldAkJCQkJVGltaW5nT2Zmc2V0CQkJCQlERUZBVUxUIDAKKwkJfSwKKwkJdGRkIAkJCQkJCQlTRVFVRU5DRSB7CisJCQktLSBUQUJVTEFSOiB0aGUgb2Zmc2V0IGlzIGluY2x1ZGVkIGluIENvbW1vblRpbWVzbG90SW5mb1NDQ1BDSAorCQkJY29tbW9uVGltZXNsb3RJbmZvCQkJCUNvbW1vblRpbWVzbG90SW5mb1NDQ1BDSCwKKwkJCXRkZE9wdGlvbgkJCQkJCUNIT0lDRSB7CisJCQkJdGRkMzg0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJaW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8KKwkJCQl9LAorCQkJCXRkZDEyOAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNAorCQkJCX0KKwkJCX0sCisJCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QKKwkJfQorCX0KK30KKworU2Vjb25kYXJ5Q0NQQ0gtSW5mby1yNyA6Oj0JCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMLAorCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQlzZi1BbmRDb2RlTnVtYmVyCQkJCVNGMjU2LUFuZENvZGVOdW1iZXIsCisJCQlwaWxvdFN5bWJvbEV4aXN0ZW5jZQkJCUJPT0xFQU4sCisJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJQk9PTEVBTiwKKwkJCXBvc2l0aW9uRml4ZWRPckZsZXhpYmxlCQkJUG9zaXRpb25GaXhlZE9yRmxleGlibGUsCisJCQl0aW1pbmdPZmZzZXQJCQkJCVRpbWluZ09mZnNldAkJCQkJREVGQVVMVCAwCisJCX0sCisJCXRkZCAJCQkJCQkJU0VRVUVOQ0UgeworCQkJLS0gVEFCVUxBUjogdGhlIG9mZnNldCBpcyBpbmNsdWRlZCBpbiBDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gKKwkJCWNvbW1vblRpbWVzbG90SW5mbwkJCQlDb21tb25UaW1lc2xvdEluZm9TQ0NQQ0gsCisJCQl0ZGRPcHRpb24JCQkJCQlDSE9JQ0UgeworCQkJCXRkZDM4NAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAorCQkJCQljaGFubmVsaXNhdGlvbkNvZGUJCQkJU0NDUENILUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QKKwkJCQl9LAorCQkJCXRkZDc2OAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IsCisJCQkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1WSENSCisJCQkJfSwKKwkJCQl0ZGQxMjgJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCisJCQkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQlTQ0NQQ0gtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAorCQkJCX0KKwkJCX0KKwkJfQorCX0KK30KKworU2Vjb25kYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSB7CisJaW5kaXZpZHVhbFRpbWVzbG90TENSLUV4dAkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LWV4dAorfQorCitTZWNvbmRhcnlDQ1BDSEluZm8tTUJNUy1yNiA6Oj0JCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQlTZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCU9QVElPTkFMLAorCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQlzZi1BbmRDb2RlTnVtYmVyCQkJCVNGMjU2LUFuZENvZGVOdW1iZXIsCisJCQl0aW1pbmdPZmZzZXQJCQkJCVRpbWluZ09mZnNldAkJCQkJREVGQVVMVCAwCisJCX0sCisJCXRkZDM4NAkJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLAorCQl0ZGQxMjgJCQkJCQkJRG93bmxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQKKwl9Cit9CisKK1NlY29uZGFyeUNDUENISW5mby1NQk1TLXI3IDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzZWNvbmRhcnlTY3JhbWJsaW5nQ29kZQkJCVNlY29uZGFyeVNjcmFtYmxpbmdDb2RlCQkJT1BUSU9OQUwsCisJCQlzdHRkLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXNmLUFuZENvZGVOdW1iZXIJCQkJU0YyNTYtQW5kQ29kZU51bWJlciwKKwkJCXRpbWluZ09mZnNldAkJCQkJVGltaW5nT2Zmc2V0CQkJCQlERUZBVUxUIDAKKwkJfSwKKwkJdGRkMzg0CQkJCQkJCURvd25saW5rVGltZXNsb3RzQ29kZXMsCisJCXRkZDc2OAkJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLVZIQ1IsCisJCXRkZDEyOAkJCQkJCQlEb3dubGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAorCX0KK30KKworU2Vjb25kYXJ5Q1BJQ0gtSW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCXNlY29uZGFyeURMLVNjcmFtYmxpbmdDb2RlCQkJU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUJCQkJT1BUSU9OQUwsCisJY2hhbm5lbGlzYXRpb25Db2RlCQkJCQlDaGFubmVsaXNhdGlvbkNvZGUyNTYKK30KKworU2Vjb25kYXJ5U2NyYW1ibGluZ0NvZGUgOjo9CQkJSU5URUdFUiAoMS4uMTUpCisKK1NlY29uZEludGVybGVhdmluZ01vZGUgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZnJhbWVSZWxhdGVkLCB0aW1lc2xvdFJlbGF0ZWQgfQorCistLSBTRjI1Ni1BbmRDb2RlTnVtYmVyIGVuY29kZXMgYm90aCAiU3ByZWFkaW5nIGZhY3RvciIgYW5kICJDb2RlIE51bWJlciIKK1NGMjU2LUFuZENvZGVOdW1iZXIgOjo9CQkJCUNIT0lDRSB7CisJc2Y0CQkJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJc2Y4CQkJCQkJCQkJSU5URUdFUiAoMC4uNyksCisJc2YxNgkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCXNmMzIJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKKwlzZjY0CQkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJc2YxMjgJCQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCisJc2YyNTYJCQkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKK30KKworLS0gU0Y1MTItQW5kQ29kZU51bWJlciBlbmNvZGVzIGJvdGggIlNwcmVhZGluZyBmYWN0b3IiIGFuZCAiQ29kZSBOdW1iZXIiCitTRjUxMi1BbmRDb2RlTnVtYmVyIDo6PQkJCQlDSE9JQ0UgeworCXNmNAkJCQkJCQkJCUlOVEVHRVIgKDAuLjMpLAorCXNmOAkJCQkJCQkJCUlOVEVHRVIgKDAuLjcpLAorCXNmMTYJCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwlzZjMyCQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCisJc2Y2NAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCXNmMTI4CQkJCQkJCQlJTlRFR0VSICgwLi4xMjcpLAorCXNmMjU2CQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCXNmNTEyCQkJCQkJCQlJTlRFR0VSICgwLi41MTEpCit9CisKKy0tIFNGNTEyLUFuZFBpbG90IGVuY29kZXMgYm90aCAiU3ByZWFkaW5nIGZhY3RvciIgYW5kICJOdW1iZXIgb2YgYml0cyBmb3IgUGlsb3QgYml0cyIKK1NGNTEyLUFuZFBpbG90IDo6PQkJCQkJQ0hPSUNFIHsKKwlzZmQ0CQkJCQkJCQlOVUxMLCAKKwlzZmQ4CQkJCQkJCQlOVUxMLCAKKwlzZmQxNgkJCQkJCQkJTlVMTCwgCisJc2ZkMzIJCQkJCQkJCU5VTEwsCisJc2ZkNjQJCQkJCQkJCU5VTEwsIAorCXNmZDEyOAkJCQkJCQkJUGlsb3RCaXRzMTI4LCAKKwlzZmQyNTYJCQkJCQkJCVBpbG90Qml0czI1NiwgCisJc2ZkNTEyCQkJCQkJCQlOVUxMCit9CitTRi1QRFNDSCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzZnA0LCBzZnA4LCBzZnAxNiwgc2ZwMzIsCisJCQkJCQkJCQkJc2ZwNjQsIHNmcDEyOCwgc2ZwMjU2IH0KKworU0YtUFJBQ0ggOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2ZwcjMyLCBzZnByNjQsIHNmcHIxMjgsIHNmcHIyNTYgfQorCitTRk4tVGltZUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJYWN0aXZhdGlvblRpbWVTRk4JCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCXBoeXNDaER1cmF0aW9uCQkJCQlEdXJhdGlvblRpbWVJbmZvCit9CisKKy0tIGFjdHVhbCBzY2hlZHVsaW5nIHZhbHVlID0gMihzaWduYWxsZWQgdmFsdWUgKzEpIGFuZCBpcyB0aGUgcGVyaW9kaWNpdHkgb2Ygc2VuZGluZyBzcGVjaWFsIGJ1cnN0IGZyYW1lcworU3BlY2lhbEJ1cnN0U2NoZWR1bGluZyA6Oj0JCQkJSU5URUdFUiAoMC4uNykKKworU3ByZWFkaW5nRmFjdG9yIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2Y0LCBzZjgsIHNmMTYsIHNmMzIsCisJCQkJCQkJCQkJc2Y2NCwgc2YxMjgsIHNmMjU2IH0KKworU1JCLWRlbGF5IDo6PQkJCQkJCUlOVEVHRVIgKDAuLjcpCisKK1NTRFQtQ2VsbElkZW50aXR5IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzc2R0LWlkLWEsIHNzZHQtaWQtYiwgc3NkdC1pZC1jLAorCQkJCQkJCQkJCXNzZHQtaWQtZCwgc3NkdC1pZC1lLCBzc2R0LWlkLWYsCisJCQkJCQkJCQkJc3NkdC1pZC1nLCBzc2R0LWlkLWggfQorCitTU0RULUluZm9ybWF0aW9uIDo6PQkJCQlTRVFVRU5DRSB7CisJcy1GaWVsZAkJCQkJCQkJUy1GaWVsZCwKKwljb2RlV29yZFNldAkJCQkJCQlDb2RlV29yZFNldAorfQorCitTU0RULUluZm9ybWF0aW9uLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJcy1GaWVsZAkJCQkJCQkJUy1GaWVsZCwKKwljb2RlV29yZFNldAkJCQkJCQlDb2RlV29yZFNldCwKKwlzc2R0LVVMLXI0CQkJCQkJCVNTRFQtVUwJCQkJCQkJCQlPUFRJT05BTAorfQorCitTU0RULVVMIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl1bCwgdWwtQW5kREwgfQorCitTeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0IDo6PQlTRVFVRU5DRSB7CisJc3luYy1VTC1Db2Rlc0JpdG1hcAkJCQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJCWNvZGU3KDApLAorCQkJCQkJCQkJCQljb2RlNigxKSwKKwkJCQkJCQkJCQkJY29kZTUoMiksCisJCQkJCQkJCQkJCWNvZGU0KDMpLAorCQkJCQkJCQkJCQljb2RlMyg0KSwKKwkJCQkJCQkJCQkJY29kZTIoNSksCisJCQkJCQkJCQkJCWNvZGUxKDYpLAorCQkJCQkJCQkJCQljb2RlMCg3KQorCQkJCQkJCQkJCQl9IChTSVpFICg4KSksCisJZnBhY2gtSW5mbwkJCQkJCQlGUEFDSC1JbmZvLXI0LAorCS0tIEFjdHVhbCB2YWx1ZSBwcnhVcFBDSGRlcyA9IElFIHZhbHVlIC0gMTIwCisJcHJ4VXBQQ0hkZXMJCQkJCQkJSU5URUdFUiAoMC4uNjIpLAorCXN5bmMtVUwtUHJvY2VkdXJlCQkJCQlTWU5DLVVMLVByb2NlZHVyZS1yNAkJCQkJT1BUSU9OQUwKK30KKworU1lOQy1VTC1Qcm9jZWR1cmUtcjQgOjo9CQkJU0VRVUVOQ0UgeworCW1heC1TWU5DLVVMLVRyYW5zbWlzc2lvbnMJCQlFTlVNRVJBVEVEIHsgdHIxLCB0cjIsIHRyNCwgdHI4IH0sCisJcG93ZXJSYW1wU3RlcAkJCQkJCUlOVEVHRVIgKDAuLjMpCit9CisKK1NZTkMtVUwtSW5mby1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlzeW5jLVVMLUNvZGVzLUJpdG1hcAkJCQlCSVQgU1RSSU5HIHsKKwkJCQkJCQkJCQkJY29kZTcoMCksCisJCQkJCQkJCQkJCWNvZGU2KDEpLAorCQkJCQkJCQkJCQljb2RlNSgyKSwKKwkJCQkJCQkJCQkJY29kZTQoMyksCisJCQkJCQkJCQkJCWNvZGUzKDQpLAorCQkJCQkJCQkJCQljb2RlMig1KSwKKwkJCQkJCQkJCQkJY29kZTEoNiksCisJCQkJCQkJCQkJCWNvZGUwKDcpCisJCQkJCQkJCQkJCX0gKCBTSVpFICg4KSksCisJLS0gQWN0dWFsIHZhbHVlIHByeFVwUENIZGVzID0gSUUgdmFsdWUgLSAxMjAKKwlwcnhVcFBDSGRlcwkJCQkJCQlJTlRFR0VSICgwLi42MiksCisJcG93ZXJSYW1wU3RlcAkJCQkJCUlOVEVHRVIgKDAuLjMpLAorCW1heC1TWU5DLVVMLVRyYW5zbWlzc2lvbnMJCQlFTlVNRVJBVEVEIHsgdHIxLCB0cjIsIHRyNCwgdHI4IH0gLAorICAgIG1tYXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVHRVIoMS4uMzIpCit9CisKK1RERC1GUEFDSC1DQ29kZTE2LXI0IDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYgfQorCitUREQtVUwtSW50ZXJmZXJlbmNlIDo6PQkJCQlJTlRFR0VSICgtMTEwLi4tNTIpCisKK1RERC1QSUNILUNDb2RlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAorCQkJCQkJCQkJCWNjMTYtNSwgY2MxNi02LCBjYzE2LTcsIGNjMTYtOCwKKwkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCisJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CisKK1RERDc2OC1QSUNILUNDb2RlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzMyLTEsIGNjMzItMiwgY2MzMi0zLCBjYzMyLTQsCisJCQkJCQkJCQkJY2MzMi01LCBjYzMyLTYsIGNjMzItNywgY2MzMi04LAorCQkJCQkJCQkJCWNjMzItOSwgY2MzMi0xMCwgY2MzMi0xMSwgY2MzMi0xMiwKKwkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2LAorCQkJCQkJCQkJCWNjMzItMTcsIGNjMzItMTgsIGNjMzItMTksIGNjMzItMjAsCisJCQkJCQkJCQkJY2MzMi0yMSwgY2MzMi0yMiwgY2MzMi0yMywgY2MzMi0yNCwKKwkJCQkJCQkJCQljYzMyLTI1LCBjYzMyLTI2LCBjYzMyLTI3LCBjYzMyLTI4LAorCQkJCQkJCQkJCWNjMzItMjksIGNjMzItMzAsIGNjMzItMzEsIGNjMzItMzIgfQorCitUREQtUFJBQ0gtQ0NvZGU4IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzgtMSwgY2M4LTIsIGNjOC0zLCBjYzgtNCwKKwkJCQkJCQkJCQljYzgtNSwgY2M4LTYsIGNjOC03LCBjYzgtOCB9CisKK1RERC1QUkFDSC1DQ29kZTE2IDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCisJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAorCQkJCQkJCQkJCWNjMTYtOSwgY2MxNi0xMCwgY2MxNi0xMSwgY2MxNi0xMiwKKwkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KKworVERELVBSQUNILUNDb2RlLUxDUi1yNCA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzQtMSwgY2M0LTIsIGNjNC0zLCBjYzQtNCwKKwkJCQkJCQkJCQljYzgtMSwgY2M4LTIsIGNjOC0zLCBjYzgtNCwKKwkJCQkJCQkJCQljYzgtNSwgY2M4LTYsIGNjOC03LCBjYzgtOCwKKwkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCisJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAorCQkJCQkJCQkJCWNjMTYtOSwgY2MxNi0xMCwgY2MxNi0xMSwgY2MxNi0xMiwKKwkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KKworVERELVBSQUNILUNDb2RlTGlzdCA6Oj0gCQkJQ0hPSUNFIHsKKwlzZjgJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uOCkpIE9GIAorCQkJCQkJCQkJCQlUREQtUFJBQ0gtQ0NvZGU4LAorLS0gQ2hhbm5lbGlzYXRpb24gY29kZXMgY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLCBjYzE2LTEzLCBjYzE2LTE0LAorLS0gY2MxNi0xNSBhbmQgY2MxNi0xNiBzaGFsbCBub3QgYmUgdXNlZAorCXNmMTYJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi44KSkgT0YKKwkJCQkJCQkJCQkJVERELVBSQUNILUNDb2RlMTYKK30KKworVERENzY4LVBSQUNILUNDb2RlOCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2M4LTEsIGNjOC0yLCBjYzgtMywgY2M4LTQsCisJCQkJCQkJCQkJY2M4LTUsIGNjOC02LCBjYzgtNywgY2M4LTggfQorCitUREQ3NjgtUFJBQ0gtQ0NvZGUxNiA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MxNi0xLCBjYzE2LTIsIGNjMTYtMywgY2MxNi00LAorCQkJCQkJCQkJCWNjMTYtNSwgY2MxNi02LCBjYzE2LTcsIGNjMTYtOCwKKwkJCQkJCQkJCQljYzE2LTksIGNjMTYtMTAsIGNjMTYtMTEsIGNjMTYtMTIsCisJCQkJCQkJCQkJY2MxNi0xMywgY2MxNi0xNCwgY2MxNi0xNSwgY2MxNi0xNiB9CisKK1RERDc2OC1QUkFDSC1DQ29kZTMyIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzMyLTEsIGNjMzItMiwgY2MzMi0zLCBjYzMyLTQsCisJCQkJCQkJCQkJY2MzMi01LCBjYzMyLTYsIGNjMzItNywgY2MzMi04LAorCQkJCQkJCQkJCWNjMzItOSwgY2MzMi0xMCwgY2MzMi0xMSwgY2MzMi0xMiwKKwkJCQkJCQkJCQljYzMyLTEzLCBjYzMyLTE0LCBjYzMyLTE1LCBjYzMyLTE2IH0KKworVERENzY4LVBSQUNILUNDb2RlTGlzdCA6Oj0gCQkJQ0hPSUNFIHsKKwlzZjMyCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uMTYpKSBPRiAKKwkJCQkJCQkJCQkJVERENzY4LVBSQUNILUNDb2RlMzIsCistLSBDaGFubmVsaXNhdGlvbiBjb2RlcyBjYzMyLTE3LCBjYzMyLTE4LCBjYzMyLTE5LCBjYzMyLTIwLCBjYzMyLTIxLCBjYzMyLTIyLAorLS0gY2MzMi0yMywgY2MzMi0yNCwgY2MzMi0yNSwgY2MzMi0yNiwgY2MzMi0yNywgY2MzMi0yOCwgY2MzMi0yOSwgY2MzMi0zMCwgY2MzMi0zMQorLS0gYW5kIGNjMzItMzIgc2hhbGwgbm90IGJlIHVzZWQKKwlzZjE2CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uMTYpKSBPRgorCQkJCQkJCQkJCQlUREQ3NjgtUFJBQ0gtQ0NvZGUxNiwKKwlzZjgJCQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4uOCkpIE9GCisJCQkJCQkJCQkJCVRERDc2OC1QUkFDSC1DQ29kZTgKK30KKworVEZDLUNvbnRyb2xEdXJhdGlvbiA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGZjLWNkMSwgdGZjLWNkMiwgdGZjLWNkNCwgdGZjLWNkOCwKKwkJCQkJCQkJCQl0ZmMtY2QxNiwgdGZjLWNkMjQsIHRmYy1jZDMyLAorCQkJCQkJCQkJCXRmYy1jZDQ4LCB0ZmMtY2Q2NCwgdGZjLWNkMTI4LAorCQkJCQkJCQkJCXRmYy1jZDE5MiwgdGZjLWNkMjU2LCB0ZmMtY2Q1MTIgfQorCitURkNJLUNvZGluZyA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsgCisJCQkJCQkJCQkJdGZjaS1iaXRzLTQsIHRmY2ktYml0cy04LAorCQkJCQkJCQkJCXRmY2ktYml0cy0xNiwgdGZjaS1iaXRzLTMyIH0KKworVEdDRk4gOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKKworLS0gSW4gVEdELCB2YWx1ZSAyNzAgcmVwcmVzZW50cyAidW5kZWZpbmVkIiBpbiB0aGUgdGFidWxhciBkZXNjcmlwdGlvbi4KK1RHRCA6Oj0JCQkJCQkJCUlOVEVHRVIgKDE1Li4yNzApCisKK1RHTCA6Oj0JCQkJCQkJCUlOVEVHRVIgKDEuLjE0KQorCitUR01QIDo6PQkJCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0ZGQtTWVhc3VyZW1lbnQsIGZkZC1NZWFzdXJlbWVudCwKKwkJCQkJCQkJCQlnc20tQ2FycmllclJTU0lNZWFzdXJlbWVudCwgCisJCQkJCQkJCQkJZ3NtLWluaXRpYWxCU0lDSWRlbnRpZmljYXRpb24sIGdzbUJTSUNSZWNvbmZpcm1hdGlvbiwKKwkJCQkJCQkJCQltdWx0aS1jYXJyaWVyIH0KKworVEdQLVNlcXVlbmNlIDo6PQkJCQkJU0VRVUVOQ0UgeworCXRncHNpCQkJCQkJCQlUR1BTSSwKKwl0Z3BzLVN0YXR1cwkJCQkJCQlDSE9JQ0UgeworCQlhY3RpdmF0ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0Z2NmbgkJCQkJCQkJVEdDRk4KKwkJfSwKKwkJZGVhY3RpdmF0ZQkJCQkJCQlOVUxMCisJfSwKKwl0Z3BzLUNvbmZpZ3VyYXRpb25QYXJhbXMJCQlUR1BTLUNvbmZpZ3VyYXRpb25QYXJhbXMJCQlPUFRJT05BTAorfQorCitUR1BTLVJlY29uZmlndXJhdGlvbi1DRk4gOjo9CQlJTlRFR0VSICgwLi4yNTUpCisKK1RHUC1TZXF1ZW5jZUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUR1BTKSkgT0YKKwkJCQkJCQkJCQlUR1AtU2VxdWVuY2UKKworVEdQLVNlcXVlbmNlU2hvcnQgOjo9CQkJCVNFUVVFTkNFIHsKKwl0Z3BzaQkJCQkJCQkJVEdQU0ksCisJdGdwcy1TdGF0dXMJCQkJCQkJQ0hPSUNFIHsKKwkJYWN0aXZhdGUJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGdjZm4JCQkJCQkJCVRHQ0ZOCisJCX0sCisJCWRlYWN0aXZhdGUJCQkJCQkJTlVMTAorCX0KK30KKworVEdQTCA6Oj0JCQkJCQkJSU5URUdFUiAoMS4uMTQ0KQorCistLSBUQUJVTEFSOiBJbiBUR1BSQywgdmFsdWUgMCByZXByZXNlbnRzICJpbmZpbml0eSIgaW4gdGhlIHRhYnVsYXIgZGVzY3JpcHRpb24uCitUR1BSQyA6Oj0JCQkJCQkJSU5URUdFUiAoMC4uNTExKQorCitUR1BTLUNvbmZpZ3VyYXRpb25QYXJhbXMgOjo9CQlTRVFVRU5DRSB7CisJdGdtcAkJCQkJCQkJVEdNUCwKKwl0Z3ByYwkJCQkJCQkJVEdQUkMsCisJdGdzbgkJCQkJCQkJVEdTTiwKKwl0Z2wxCQkJCQkJCQlUR0wsCisJdGdsMgkJCQkJCQkJVEdMCQkJCQkJCQkJT1BUSU9OQUwsCisJdGdkCQkJCQkJCQkJVEdELAorCXRncGwxCQkJCQkJCQlUR1BMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNoYWxsIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJVEdQTAkJCQkJCQkJT1BUSU9OQUwsCisJcnBwCQkJCQkJCQkJUlBQLAorCWl0cAkJCQkJCQkJCUlUUCwKKwktLSBUQUJVTEFSOiBDb21wcmVzc2VkIG1vZGUgbWV0aG9kIGlzIG5lc3RlZCBpbnNpZGUgVUwtREwtTW9kZQorCXVsLURMLU1vZGUJCQkJCQkJVUwtREwtTW9kZSwKKwlkbC1GcmFtZVR5cGUJCQkJCQlETC1GcmFtZVR5cGUsCisJZGVsdGFTSVIxCQkJCQkJCURlbHRhU0lSLAorCWRlbHRhU0lSQWZ0ZXIxCQkJCQkJRGVsdGFTSVIsCisJZGVsdGFTSVIyCQkJCQkJCURlbHRhU0lSCQkJCQkJCU9QVElPTkFMLAorCWRlbHRhU0lSQWZ0ZXIyCQkJCQkJRGVsdGFTSVIJCQkJCQkJT1BUSU9OQUwsCisJbmlkZW50aWZ5QWJvcnQJCQkJCQlOaWRlbnRpZnlBYm9ydAkJCQkJCU9QVElPTkFMLAorCXRyZWNvbmZpcm1BYm9ydAkJCQkJCVRyZWNvbmZpcm1BYm9ydAkJCQkJCU9QVElPTkFMCit9CisKK1RHUFNJIDo6PQkJCQkJCQlJTlRFR0VSICgxLi5tYXhUR1BTKQorCitUR1NOIDo6PQkJCQkJCQlJTlRFR0VSICgwLi4xNCkKKworVGltZUluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCQlPUFRJT05BTCwKKwlkdXJhdGlvblRpbWVJbmZvCQkJCQlEdXJhdGlvblRpbWVJbmZvCQkJCQlPUFRJT05BTAorfQorCitUaW1lc2xvdExpc3QgOjo9CQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMpKSBPRgorCQkJCQkJCQkJCVRpbWVzbG90TnVtYmVyCisKK1RpbWVzbG90TGlzdC1yNCA6Oj0JCQkJCUNIT0lDRSB7CistLSB0aGUgY2hvaWNlIGZvciA3LjY4IE1jcHMgVEREIGlzIGFzIGZvciAzLjg0IE1jcHMgVEREICAtLQorCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSKSkgT0YKKwkJCQkJCQkJCQkJVGltZXNsb3ROdW1iZXItTENSLXI0Cit9CisKKy0tIElmIFRpbWVzbG90TnVtYmVyIGlzIGluY2x1ZGVkIGZvciBhIDEuMjhNY3BzIFRERCBkZXNjcmlwdGlvbiwgaXQgc2hhbGwgdGFrZSB2YWx1ZXMgZnJvbSAwLi42CitUaW1lc2xvdE51bWJlciA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNCkKKworVGltZXNsb3ROdW1iZXItTENSLXI0IDo6PQkJCQlJTlRFR0VSICgwLi42KQorCitUaW1lc2xvdE51bWJlci1QUkFDSC1MQ1ItcjQgOjo9CQlJTlRFR0VSICgxLi42KQorCitUaW1lc2xvdFN5bmMyIDo6PQkJCQlJTlRFR0VSICgwLi42KQorCistLSBBY3R1YWwgdmFsdWUgVGltaW5nT2Zmc2V0ID0gSUUgdmFsdWUgKiAyNTYKK1RpbWluZ09mZnNldCA6Oj0JCQkJCUlOVEVHRVIgKDAuLjE0OSkKKworVGltaW5nTWFpbnRhaW5lZFN5bmNoSW5kIDo6PQkJRU5VTUVSQVRFRCB7IGZhbHNlIH0KKworVFBDLUNvbWJpbmF0aW9uSW5kZXggOjo9CQkJSU5URUdFUiAoMC4uNSkKKworVFBDLUNvbW1hbmRUYXJnZXRSYXRlIDo6PQkJCUlOVEVHRVIgKDAuLjEwKQorCistLSBBY3R1YWwgdmFsdWUgVFBDLVN0ZXBTaXplRkREID0gSUUgdmFsdWUgKyAxCitUUEMtU3RlcFNpemVGREQgOjo9CQkJCQlJTlRFR0VSICgwLi4xKQorCitUUEMtU3RlcFNpemVUREQgOjo9CQkJCQlJTlRFR0VSICgxLi4zKQorCistLSBBY3R1YWwgdmFsdWUgVHJlY29uZmlybUFib3J0ID0gSUUgdmFsdWUgKiAwLjUgc2Vjb25kcworVHJlY29uZmlybUFib3J0IDo6PQlJTlRFR0VSICgxLi4yMCkKKworVFgtRGl2ZXJzaXR5TW9kZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9EaXZlcnNpdHksCisJCQkJCQkJCQkJc3R0ZCwKKwkJCQkJCQkJCQljbG9zZWRMb29wTW9kZTEsCisJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQkJCQkJCQlkdW1teSB9CisKK1VBUkZDTiA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xNjM4MykKKworVUNTTS1JbmZvIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwltaW5pbXVtU3ByZWFkaW5nRmFjdG9yCQkJCU1pbmltdW1TcHJlYWRpbmdGYWN0b3IsCisJbmYtTWF4CQkJCQkJCQlORi1NYXgsCisJY2hhbm5lbFJlcVBhcmFtc0ZvclVDU00JCQkJQ2hhbm5lbFJlcVBhcmFtc0ZvclVDU00KK30KKworVUwtQ0NUckNIIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCisJdGltZUluZm8JCQkJCQkJVGltZUluZm8sCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQkJCU9QVElPTkFMCit9CisKK1VMLUNDVHJDSC1yNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0ZmNzLUlECQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4JCQkJCURFRkFVTFQgMSwKKwktLSBUaGUgSUUgdWwtVGFyZ2V0U0lSIGNvcnJlc3BvbmRzIHRvIFBSWC1EUENIZGVzIGZvciAxLjI4TWNwcyBUREQKKwktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCisJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSLAorCXRpbWVJbmZvCQkJCQkJCVRpbWVJbmZvLAorCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCQkJCQlPUFRJT05BTCwKKwl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2RlcwkJT1BUSU9OQUwKKwkJfSwKKwkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjQJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUwtQ0NUckNILXI3IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRmY3MtSUQJCQkJCQkJCVRGQ1MtSWRlbnRpdHlQbGFpbgkJCQkJREVGQVVMVCAxLAorCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKKwl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCisJdGltZUluZm8JCQkJCQkJVGltZUluZm8sCisJY29tbW9uVGltZXNsb3RJbmZvCQkJCQlDb21tb25UaW1lc2xvdEluZm8JCQkJCU9QVElPTkFMLAorCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzCQlPUFRJT05BTAorCQl9LAorCQl0ZGQ3NjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzLVZIQ1IJT1BUSU9OQUwKKwkJfSwKKwkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQl1bC1DQ1RyQ0gtVGltZXNsb3RzQ29kZXMJCQlVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjcJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUwtQ0NUckNITGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCVVMLUNDVHJDSAorCitVTC1DQ1RyQ0hMaXN0LXI0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlVTC1DQ1RyQ0gtcjQKKworVUwtQ0NUckNITGlzdC1yNyA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJVUwtQ0NUckNILXI3CisKK1VMLUNDVHJDSExpc3RUb1JlbW92ZSA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlURkNTLUlkZW50aXR5UGxhaW4KKworVUwtQ0NUckNoVFBDTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDAuLm1heENDVHJDSCkpIE9GCisJCQkJCQkJCQkJCVRGQ1MtSWRlbnRpdHkKKworVUwtQ2hhbm5lbFJlcXVpcmVtZW50IDo6PQkJCUNIT0lDRSB7CisJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teQkJCQkJCQkJQ1BDSC1TZXRJbmZvCit9CisKK1VMLUNoYW5uZWxSZXF1aXJlbWVudC1yNCA6Oj0JCUNIT0lDRSB7CisJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLXI0LAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teQkJCQkJCQkJQ1BDSC1TZXRJbmZvCit9CisKK1VMLUNoYW5uZWxSZXF1aXJlbWVudC1yNSA6Oj0JCUNIT0lDRSB7CisJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLXI1LAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teQkJCQkJCQkJQ1BDSC1TZXRJbmZvCit9CisKKy0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90CistLSBjaGFuZ2VkIHRvIGtlZXAgaXQgYWxpZ25lZCB3aXRoIFI5OS4KK1VMLUNoYW5uZWxSZXF1aXJlbWVudFdpdGhDUENILVNldElEIDo6PQlDSE9JQ0UgeworCXVsLURQQ0gtSW5mbwkJCQkJCVVMLURQQ0gtSW5mbywKKwktLSBkdW1teTEgYW5kIGR1bW15IDIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15MQkJCQkJCQkJQ1BDSC1TZXRJbmZvLAorCWR1bW15MgkJCQkJCQkJQ1BDSC1TZXRJRAorfQorCistLSBOb3RlOiB0aGUgcmVmZXJlbmNlIHRvIENQQ0ggaW4gdGhlIGVsZW1lbnQgbmFtZSBiZWxvdyBpcyBpbmNvcnJlY3QuIFRoZSBuYW1lIGlzIG5vdAorLS0gY2hhbmdlZCB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCitVTC1DaGFubmVsUmVxdWlyZW1lbnRXaXRoQ1BDSC1TZXRJRC1yNCA6Oj0JQ0hPSUNFIHsKKwl1bC1EUENILUluZm8JCQkJCQlVTC1EUENILUluZm8tcjQsCisJLS0gZHVtbXkxIGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSAKKwktLSBzaG91bGQgbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teTEJCQkJCQkJCUNQQ0gtU2V0SW5mbywKKwlkdW1teTIJCQkJCQkJCUNQQ0gtU2V0SUQKK30KKworLS0gTm90ZTogdGhlIHJlZmVyZW5jZSB0byBDUENIIGluIHRoZSBlbGVtZW50IG5hbWUgYmVsb3cgaXMgaW5jb3JyZWN0LiBUaGUgbmFtZSBpcyBub3QKKy0tIGNoYW5nZWQgdG8ga2VlcCBpdCBhbGlnbmVkIHdpdGggUjk5LgorVUwtQ2hhbm5lbFJlcXVpcmVtZW50V2l0aENQQ0gtU2V0SUQtcjUgOjo9CUNIT0lDRSB7CisJdWwtRFBDSC1JbmZvCQkJCQkJVUwtRFBDSC1JbmZvLXI1LAorCS0tIGR1bW15MSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIHRoZXkgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KKwlkdW1teTEJCQkJCQkJCUNQQ0gtU2V0SW5mbywKKwlkdW1teTIJCQkJCQkJCUNQQ0gtU2V0SUQKK30KKworVUwtQ29tcHJlc3NlZE1vZGVNZXRob2QgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc2YtMiwgCisJCQkJCQkJCQkJaGlnaGVyTGF5ZXJTY2hlZHVsaW5nIH0KKworVUwtREwtTW9kZSA6Oj0JCQkJCQlDSE9JQ0UgeworCXVsCQkJCQkJCQkJVUwtQ29tcHJlc3NlZE1vZGVNZXRob2QsCisJZGwJCQkJCQkJCQlETC1Db21wcmVzc2VkTW9kZU1ldGhvZCwKKwl1bC1hbmQtZGwJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdWwJCQkJCQkJCQlVTC1Db21wcmVzc2VkTW9kZU1ldGhvZCwKKwkJZGwJCQkJCQkJCQlETC1Db21wcmVzc2VkTW9kZU1ldGhvZAorCX19CisKK1VMLURQQ0NILVNsb3RGb3JtYXQgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNsZjAsIHNsZjEsIHNsZjIgfQorCitVTC1EUENILUluZm8gOjo9CQkJCQlTRVFVRU5DRSB7CisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCisJCQlzY3JhbWJsaW5nQ29kZQkJCQkJCVVMLVNjcmFtYmxpbmdDb2RlLAorCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAorCQkJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU3ByZWFkaW5nRmFjdG9yLAorCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQludW1iZXJPZkZCSS1CaXRzCQkJCQlOdW1iZXJPZkZCSS1CaXRzCQkJT1BUSU9OQUwsCisJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wJCU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdAkJCQkJCVVMLUNDVHJDSExpc3QJCQkJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCQkJVUwtQ0NUckNITGlzdFRvUmVtb3ZlCQlPUFRJT05BTAorCQl9CisJfQorfQorCitVTC1EUENILUluZm8tcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI0CQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCisJCQlzY3JhbWJsaW5nQ29kZQkJCQkJCVVMLVNjcmFtYmxpbmdDb2RlLAorCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAorCQkJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU3ByZWFkaW5nRmFjdG9yLAorCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQludW1iZXJPZkZCSS1CaXRzCQkJCQlOdW1iZXJPZkZCSS1CaXRzCQkJT1BUSU9OQUwsCisJCQlwdW5jdHVyaW5nTGltaXQJCQkJCQlQdW5jdHVyaW5nTGltaXQKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdC1yNAkJCU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdFRvUmVtb3ZlCQkJCVVMLUNDVHJDSExpc3RUb1JlbW92ZQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUwtRFBDSC1JbmZvLXI1IDo6PQkJCQkJU0VRVUVOQ0UgeworCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNjcmFtYmxpbmdDb2RlVHlwZQkJCQkJU2NyYW1ibGluZ0NvZGVUeXBlLAorCQkJc2NyYW1ibGluZ0NvZGUJCQkJCQlVTC1TY3JhbWJsaW5nQ29kZSwKKwkJCW51bWJlck9mRFBEQ0gJCQkJCQlOdW1iZXJPZkRQRENICQkJCURFRkFVTFQgMSwKKwkJCXNwcmVhZGluZ0ZhY3RvcgkJCQkJCVNwcmVhZGluZ0ZhY3RvciwKKwkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwkJCS0tIG51bWJlck9mRkJJLUJpdHMgaXMgY29uZGl0aW9uYWwgYmFzZWQgb24gaGlzdG9yeQorCQkJbnVtYmVyT2ZGQkktQml0cwkJCQkJTnVtYmVyT2ZGQkktQml0cwkJCU9QVElPTkFMLAorCQkJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0CisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0CU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdAkJCQkJCVVMLUNDVHJDSExpc3QtcjQJCQlPUFRJT05BTCwKKwkJCXVsLUNDVHJDSExpc3RUb1JlbW92ZQkJCQlVTC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1VMLURQQ0gtSW5mby1yNiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjYJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlzY3JhbWJsaW5nQ29kZVR5cGUJCQkJCVNjcmFtYmxpbmdDb2RlVHlwZSwKKwkJCXNjcmFtYmxpbmdDb2RlCQkJCQkJVUwtU2NyYW1ibGluZ0NvZGUsCisJCQlkcGRjaFByZXNlbmNlCQkJCQkJQ0hPSUNFIHsKKwkJCQlwcmVzZW50CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCW51bWJlck9mRFBEQ0gJCQkJCQlOdW1iZXJPZkRQRENICQkJCURFRkFVTFQgMSwKKwkJCQkJc3ByZWFkaW5nRmFjdG9yCQkJCQkJU3ByZWFkaW5nRmFjdG9yLAorCQkJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCisJCQkJCS0tIG51bWJlck9mRkJJLUJpdHMgaXMgY29uZGl0aW9uYWwgYmFzZWQgb24gaGlzdG9yeQorCQkJCQludW1iZXJPZkZCSS1CaXRzCQkJCQlOdW1iZXJPZkZCSS1CaXRzCQkJT1BUSU9OQUwsCisJCQkJCXB1bmN0dXJpbmdMaW1pdAkJCQkJCVB1bmN0dXJpbmdMaW1pdAorCQkJCX0sCisJCQkJbm90UHJlc2VudAkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwkJCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTAorCQkJCX0KKwkJCX0KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtcjQJT1BUSU9OQUwsCisJCQl1bC1DQ1RyQ0hMaXN0CQkJCQkJVUwtQ0NUckNITGlzdC1yNAkJCU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdFRvUmVtb3ZlCQkJCVVMLUNDVHJDSExpc3RUb1JlbW92ZQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUwtRFBDSC1JbmZvLXI3IDo6PQkJCQkJU0VRVUVOQ0UgeworCXVsLURQQ0gtUG93ZXJDb250cm9sSW5mbwkJCVVMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNgkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNjcmFtYmxpbmdDb2RlVHlwZQkJCQkJU2NyYW1ibGluZ0NvZGVUeXBlLAorCQkJc2NyYW1ibGluZ0NvZGUJCQkJCQlVTC1TY3JhbWJsaW5nQ29kZSwKKwkJCWRwZGNoUHJlc2VuY2UJCQkJCQlDSE9JQ0UgeworCQkJCXByZXNlbnQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJbnVtYmVyT2ZEUERDSAkJCQkJCU51bWJlck9mRFBEQ0gJCQkJREVGQVVMVCAxLAorCQkJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IsCisJCQkJCXRmY2ktRXhpc3RlbmNlCQkJCQkJQk9PTEVBTiwKKwkJCQkJLS0gbnVtYmVyT2ZGQkktQml0cyBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBoaXN0b3J5CisJCQkJCW51bWJlck9mRkJJLUJpdHMJCQkJCU51bWJlck9mRkJJLUJpdHMJCQlPUFRJT05BTCwKKwkJCQkJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0CisJCQkJCQl9LAorCQkJCW5vdFByZXNlbnQJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQl0ZmNpLUV4aXN0ZW5jZQkJCQkJCUJPT0xFQU4sCisJCQkJCS0tIG51bWJlck9mRkJJLUJpdHMgaXMgY29uZGl0aW9uYWwgYmFzZWQgb24gaGlzdG9yeQorCQkJCQludW1iZXJPZkZCSS1CaXRzCQkJCQlOdW1iZXJPZkZCSS1CaXRzCQkJT1BUSU9OQUwKKwkJCQl9CisJCQl9CisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVsLVRpbWluZ0FkdmFuY2UJCQkJCVVMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI3CU9QVElPTkFMLAorCQkJdWwtQ0NUckNITGlzdAkJCQkJCVVMLUNDVHJDSExpc3QtcjcJCQlPUFRJT05BTCwKKwkJCXVsLUNDVHJDSExpc3RUb1JlbW92ZQkJCQlVTC1DQ1RyQ0hMaXN0VG9SZW1vdmUJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1VMLURQQ0gtSW5mb1Bvc3RGREQgOjo9CQkJCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0RkRELAorCQkJc2NyYW1ibGluZ0NvZGVUeXBlCQkJCQlTY3JhbWJsaW5nQ29kZVR5cGUsCisJCQlyZWR1Y2VkU2NyYW1ibGluZ0NvZGVOdW1iZXIJCQlSZWR1Y2VkU2NyYW1ibGluZ0NvZGVOdW1iZXIsCisJCQlzcHJlYWRpbmdGYWN0b3IJCQkJCQlTcHJlYWRpbmdGYWN0b3IKKworfQorCitVTC1EUENILUluZm9Qb3N0VEREIDo6PQkJCQlTRVFVRU5DRSB7CisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUG9zdFRERCwKKwl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlQ29udHJvbAkJCQkJT1BUSU9OQUwsCisJdWwtQ0NUckNILVRpbWVzbG90c0NvZGVzCQkJVXBsaW5rVGltZXNsb3RzQ29kZXMKK30KKworVUwtRFBDSC1JbmZvUG9zdFRERC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJdWwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvCQkJVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUG9zdFRERC1MQ1ItcjQsCisJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtTENSLXI0CQkJCU9QVElPTkFMLAorCXVsLUNDVHJDSC1UaW1lc2xvdHNDb2RlcwkJCVVwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNAorfQorCitVTC1EUENILUluZm9QcmVkZWYgOjo9CQkJCVNFUVVFTkNFIHsKKwl1bC1EUENILVBvd2VyQ29udHJvbEluZm8JCQlVTC1EUENILVBvd2VyQ29udHJvbEluZm9QcmVkZWYsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGZjaS1FeGlzdGVuY2UJCQkJCQlCT09MRUFOLAorCQkJcHVuY3R1cmluZ0xpbWl0CQkJCQkJUHVuY3R1cmluZ0xpbWl0CisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNvbW1vblRpbWVzbG90SW5mbwkJCQkJQ29tbW9uVGltZXNsb3RJbmZvCisJCX0KKwl9Cit9CisKK1VMLURQQ0gtUG93ZXJDb250cm9sSW5mbyA6Oj0JCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQsCisJCXBjLVByZWFtYmxlCQkJCQkJCVBDLVByZWFtYmxlLAorCQlzUkItZGVsYXkJCQkJCQkJU1JCLWRlbGF5LAorCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCisJCXBvd2VyQ29udHJvbEFsZ29yaXRobQkJCQlQb3dlckNvbnRyb2xBbGdvcml0aG0KKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSCQkJCU9QVElPTkFMLAorCQl1bC1PTC1QQy1TaWduYWxsaW5nCQkJCQlDSE9JQ0UgeworCQkJYnJvYWRjYXN0LVVMLU9MLVBDLWluZm8JCQkJTlVMTCwKKwkJCWluZGl2aWR1YWxseVNpZ25hbGxlZAkJCQlTRVFVRU5DRSB7CisJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAorCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZVRkZCwKKwkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQorCQkJfQkKKwkJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCX0KK30KKworVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI0IDo6PQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRwY2NoLVBvd2VyT2Zmc2V0CQkJCQlEUENDSC1Qb3dlck9mZnNldCwKKwkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCisJCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXksCisJCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KKwkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobQorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQktLSBUaGUgSUUgdWwtVGFyZ2V0U0lSIGNvcnJlc3BvbmRzIHRvIFBSWC1EUENIZGVzIGZvciAxLjI4TWNwcyBUREQKKwkJLS0gQWN0dWFsIHZhbHVlIFBSWC1EUENIZGVzID0gKHZhbHVlIG9mIElFICJ1bC1UYXJnZXRTSVIiINAgMTIwKQorCQl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIJCQkJT1BUSU9OQUwsCisJCXVsLU9MLVBDLVNpZ25hbGxpbmcJCQkJCUNIT0lDRSB7CisJCQlicm9hZGNhc3QtVUwtT0wtUEMtaW5mbwkJCQlOVUxMLAorCQkJaW5kaXZpZHVhbGx5U2lnbmFsbGVkCQkJCVNFUVVFTkNFIHsKKwkJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAkJSW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QsCisJCQkJCQlkcGNoLUNvbnN0YW50VmFsdWUJCQkJCUNvbnN0YW50VmFsdWUKKwkJCQkJfSwKKwkJCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCQl0cGMtU3RlcFNpemUJCQkJCQlUUEMtU3RlcFNpemVUREQKKwkJCQkJfQorCQkJCX0sCisJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJfQorCQl9CisJfQorfQorCitVTC1EUENILVBvd2VyQ29udHJvbEluZm8tcjUgOjo9CQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZHBjY2gtUG93ZXJPZmZzZXQJCQkJCURQQ0NILVBvd2VyT2Zmc2V0LAorCQlwYy1QcmVhbWJsZQkJCQkJCQlQQy1QcmVhbWJsZSwKKwkJc1JCLWRlbGF5CQkJCQkJCVNSQi1kZWxheSwKKwkJLS0gVEFCVUxBUjogVFBDIHN0ZXAgc2l6ZSBuZXN0ZWQgaW5zaWRlIFBvd2VyQ29udHJvbEFsZ29yaXRobQorCQlwb3dlckNvbnRyb2xBbGdvcml0aG0JCQkJUG93ZXJDb250cm9sQWxnb3JpdGhtLAorCQlkZWx0YUFDSwkJCQkJCQlEZWx0YUFDSwlPUFRJT05BTCwKKwkJZGVsdGFOQUNLCQkJCQkJCURlbHRhTkFDSwlPUFRJT05BTCwKKwkJYWNrLU5BQ0stcmVwZXRpdGlvbi1mYWN0b3IJCQlBQ0stTkFDSy1yZXBldGl0aW9uRmFjdG9yCU9QVElPTkFMCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCQktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCisJCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUgkJCQlPUFRJT05BTCwKKwkJdWwtT0wtUEMtU2lnbmFsbGluZwkJCQkJQ0hPSUNFIHsKKwkJCWJyb2FkY2FzdC1VTC1PTC1QQy1pbmZvCQkJCU5VTEwsCisJCQlpbmRpdmlkdWFsbHlTaWduYWxsZWQJCQkJU0VRVUVOQ0UgeworCQkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0CQlJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCwKKwkJCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZQorCQkJCQl9LAorCQkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCXRwYy1TdGVwU2l6ZQkJCQkJCVRQQy1TdGVwU2l6ZVRERAorCQkJCQl9CisJCQkJfSwKKwkJCQlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCisJCQl9CisJCX0KKwl9Cit9CisKK1VMLURQQ0gtUG93ZXJDb250cm9sSW5mby1yNiA6Oj0JCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlkcGNjaC1Qb3dlck9mZnNldAkJCQkJRFBDQ0gtUG93ZXJPZmZzZXQsCisJCXBjLVByZWFtYmxlCQkJCQkJCVBDLVByZWFtYmxlLAorCQlzUkItZGVsYXkJCQkJCQkJU1JCLWRlbGF5LAorCQktLSBUQUJVTEFSOiBUUEMgc3RlcCBzaXplIG5lc3RlZCBpbnNpZGUgUG93ZXJDb250cm9sQWxnb3JpdGhtCisJCXBvd2VyQ29udHJvbEFsZ29yaXRobQkJCQlQb3dlckNvbnRyb2xBbGdvcml0aG0sCisJCWRlbHRhQUNLCQkJCQkJCURlbHRhQUNLCU9QVElPTkFMLAorCQlkZWx0YU5BQ0sJCQkJCQkJRGVsdGFOQUNLCU9QVElPTkFMLAorCQlhY2stTkFDSy1yZXBldGl0aW9uLWZhY3RvcgkJCUFDSy1OQUNLLXJlcGV0aXRpb25GYWN0b3IJT1BUSU9OQUwsCisJCWhhcnEtUHJlYW1ibGUtTW9kZQkJCQkJSEFSUS1QcmVhbWJsZS1Nb2RlCisJfSwKKwl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCQktLSBBY3R1YWwgdmFsdWUgUFJYLURQQ0hkZXMgPSAodmFsdWUgb2YgSUUgInVsLVRhcmdldFNJUiIg0CAxMjApCisJCXVsLVRhcmdldFNJUgkJCQkJCVVMLVRhcmdldFNJUgkJCQlPUFRJT05BTCwKKwkJdWwtT0wtUEMtU2lnbmFsbGluZwkJCQkJQ0hPSUNFIHsKKwkJCWJyb2FkY2FzdC1VTC1PTC1QQy1pbmZvCQkJCU5VTEwsCisJCQlpbmRpdmlkdWFsbHlTaWduYWxsZWQJCQkJU0VRVUVOQ0UgeworCQkJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0CQlJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCwKKwkJCQkJCWRwY2gtQ29uc3RhbnRWYWx1ZQkJCQkJQ29uc3RhbnRWYWx1ZQorCQkJCQl9LAorCQkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJCWJlYWNvblBMRXN0CQkJCQkJCUJFQUNPTi1QTC1Fc3QJCU9QVElPTkFMLAorCQkJCQkJdHBjLVN0ZXBTaXplCQkJCQkJVFBDLVN0ZXBTaXplVERECisJCQkJCX0KKwkJCQl9LAorCQkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIKKwkJCX0KKwkJfQorCX0KK30KKworVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvLXI3IDo6PQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCWRwY2NoLVBvd2VyT2Zmc2V0CQkJCQlEUENDSC1Qb3dlck9mZnNldCwKKwkJcGMtUHJlYW1ibGUJCQkJCQkJUEMtUHJlYW1ibGUsCisJCXNSQi1kZWxheQkJCQkJCQlTUkItZGVsYXksCisJCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KKwkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobSwKKwkJZGVsdGFBQ0sJCQkJCQkJRGVsdGFBQ0sJT1BUSU9OQUwsCisJCWRlbHRhTkFDSwkJCQkJCQlEZWx0YU5BQ0sJT1BUSU9OQUwsCisJCWFjay1OQUNLLXJlcGV0aXRpb24tZmFjdG9yCQkJQUNLLU5BQ0stcmVwZXRpdGlvbkZhY3RvcglPUFRJT05BTCwKKwkJaGFycS1QcmVhbWJsZS1Nb2RlCQkJCQlIQVJRLVByZWFtYmxlLU1vZGUKKwl9LAorCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJLS0gVGhlIElFIHVsLVRhcmdldFNJUiBjb3JyZXNwb25kcyB0byBQUlgtRFBDSGRlcyBmb3IgMS4yOE1jcHMgVERECisJCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKKwkJdWwtVGFyZ2V0U0lSCQkJCQkJVUwtVGFyZ2V0U0lSCQkJCU9QVElPTkFMLAorCQl1bC1PTC1QQy1TaWduYWxsaW5nCQkJCQlDSE9JQ0UgeworCQkJYnJvYWRjYXN0LVVMLU9MLVBDLWluZm8JCQkJTlVMTCwKKwkJCWluZGl2aWR1YWxseVNpZ25hbGxlZAkJCQlTRVFVRU5DRSB7CisJCQkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQkJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAorCQkJCQkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlCisJCQkJCX0sCisJCQkJCXRkZDc2OAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJaW5kaXZpZHVhbFRTLUludGVyZmVyZW5jZUxpc3QJCUluZGl2aWR1YWxUUy1JbnRlcmZlcmVuY2VMaXN0LAorCQkJCQkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlCisJCQkJCX0sCisJCQkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJYmVhY29uUExFc3QJCQkJCQkJQkVBQ09OLVBMLUVzdAkJT1BUSU9OQUwsCisJCQkJCQl0cGMtU3RlcFNpemUJCQkJCQlUUEMtU3RlcFNpemVUREQKKwkJCQkJfQorCQkJCX0sCisJCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgorCQkJfQorCQl9CisJfQorfQorCitVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0RkREIDo6PQlTRVFVRU5DRSB7CisJLS0gRFBDQ0gtUG93ZXJPZmZzZXQyIGhhcyBhIHNtYWxsZXIgcmFuZ2UgdG8gc2F2ZSBiaXRzCisJZHBjY2gtUG93ZXJPZmZzZXQJCQkJCURQQ0NILVBvd2VyT2Zmc2V0MiwKKwlwYy1QcmVhbWJsZQkJCQkJCQlQQy1QcmVhbWJsZSwKKwlzUkItZGVsYXkJCQkJCQkJU1JCLWRlbGF5Cit9CisKK1VMLURQQ0gtUG93ZXJDb250cm9sSW5mb1Bvc3RUREQgOjo9CVNFUVVFTkNFIHsKKwl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIsCisJdWwtVGltZXNsb3RJbnRlcmZlcmVuY2UJCQkJVERELVVMLUludGVyZmVyZW5jZQorfQorCitVTC1EUENILVBvd2VyQ29udHJvbEluZm9Qb3N0VERELUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCS0tIFRoZSBJRSB1bC1UYXJnZXRTSVIgY29ycmVzcG9uZHMgdG8gUFJYLURQQ0hkZXMgZm9yIDEuMjhNY3BzIFRERAorCS0tIEFjdHVhbCB2YWx1ZSBQUlgtRFBDSGRlcyA9ICh2YWx1ZSBvZiBJRSAidWwtVGFyZ2V0U0lSIiDQIDEyMCkKKwl1bC1UYXJnZXRTSVIJCQkJCQlVTC1UYXJnZXRTSVIKK30KKworVUwtRFBDSC1Qb3dlckNvbnRyb2xJbmZvUHJlZGVmIDo6PQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIFRBQlVMQVI6IFRQQyBzdGVwIHNpemUgbmVzdGVkIGluc2lkZSBQb3dlckNvbnRyb2xBbGdvcml0aG0KKwkJcG93ZXJDb250cm9sQWxnb3JpdGhtCQkJCVBvd2VyQ29udHJvbEFsZ29yaXRobQorCX0sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQktLSBkcGNoLUNvbnN0YW50VmFsdWUgc2hhbGwgYmUgaWdub3JlZCBpZiBpbiAxLjI4TWNwcyBUREQgbW9kZS4KKwkJZHBjaC1Db25zdGFudFZhbHVlCQkJCQlDb25zdGFudFZhbHVlVGRkCisJfQorfQorCitVTC1FRENILUluZm9ybWF0aW9uLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwltYWMtZXMtZS1yZXNldEluZGljYXRvcgkJCQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CQkJCQkJT1BUSU9OQUwsCisJZS1EUENDSC1JbmZvCQkJCQkJRS1EUENDSC1JbmZvCQkJCQkJCU9QVElPTkFMLAorCWUtRFBEQ0gtSW5mbwkJCQkJCUUtRFBEQ0gtSW5mbwkJCQkJCQlPUFRJT05BTCwKKwlzY2hlZHVsaW5nVHJhbnNtQ29uZmlndXJhdGlvbgkJRS1EUERDSC1TY2hlZHVsaW5nVHJhbnNtQ29uZmlndXJhdGlvbglPUFRJT05BTAorfQorCitVTC1JbnRlcmZlcmVuY2UgOjo9CQkJCQlJTlRFR0VSICgtMTEwLi4tNzApCisKK1VMLVNjcmFtYmxpbmdDb2RlIDo6PQkJCQlJTlRFR0VSICgwLi4xNjc3NzIxNSkKKworCitVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0IDo6PQlTRVFVRU5DRSB7CisJc3RlcFNpemUJCQkJCQkJSU5URUdFUiAoMS4uOCksCisJZnJlcXVlbmN5CQkJCQkJCUlOVEVHRVIgKDEuLjgpCit9CisKKy0tIEFjdHVhbCB2YWx1ZSBVTC1UYXJnZXRTSVIgPSAoSUUgdmFsdWUgKiAwLjUpIC0gMTEKK1VMLVRhcmdldFNJUiA6Oj0JCQkJCUlOVEVHRVIgKDAuLjYyKQorCitVTC1UaW1pbmdBZHZhbmNlIDo6PQkJCQlJTlRFR0VSICgwLi42MykKKworVUwtVGltaW5nQWR2YW5jZS1WSENSIDo6PQkJCUlOVEVHRVIgKDAuLjEyNykKKworVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wgOjo9CQkJQ0hPSUNFIHsKKwlkaXNhYmxlZAkJCQkJCQlOVUxMLAorCWVuYWJsZWQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTCwKKwkJYWN0aXZhdGlvblRpbWUJCQkJCQlBY3RpdmF0aW9uVGltZQkJCQkJT1BUSU9OQUwKKwl9Cit9CisKK1VMLVRpbWluZ0FkdmFuY2VDb250cm9sLXI0IDo6PQkJQ0hPSUNFIHsKKwlkaXNhYmxlZAkJCQkJCQlOVUxMLAorCWVuYWJsZWQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJdGRkT3B0aW9uCQkJCQkJCUNIT0lDRSB7CisJCQl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQl1bC1UaW1pbmdBZHZhbmNlCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJCU9QVElPTkFMLAorCQkJCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCU9QVElPTkFMCisJCQl9LAorCQkJdGRkMTI4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdWwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwkJVUwtU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKKwkJCQlzeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQkJU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTAorCQkJfQorCQl9CisJfQorfQorCitVTC1UaW1pbmdBZHZhbmNlQ29udHJvbC1yNyA6Oj0JCUNIT0lDRSB7CisJZGlzYWJsZWQJCQkJCQkJTlVMTCwKKwllbmFibGVkCQkJCQkJCQlTRVFVRU5DRSB7CisJCXRkZE9wdGlvbgkJCQkJCQlDSE9JQ0UgeworCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJdWwtVGltaW5nQWR2YW5jZQkJCQkJVUwtVGltaW5nQWR2YW5jZQkJCQlPUFRJT05BTCwKKwkJCQlleHQtdWwtVGltaW5nQWR2YW5jZQkJCQlFWFQtVUwtVGltaW5nQWR2YW5jZQkJCU9QVElPTkFMLAorCQkJCWFjdGl2YXRpb25UaW1lCQkJCQkJQWN0aXZhdGlvblRpbWUJCQkJCU9QVElPTkFMCisJCQl9LAorCQkJdGRkNzY4CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZXh0LXVsLVRpbWluZ0FkdmFuY2UJCQkJRVhULVVMLVRpbWluZ0FkdmFuY2UJCQlPUFRJT05BTCwKKwkJCQlhY3RpdmF0aW9uVGltZQkJCQkJCUFjdGl2YXRpb25UaW1lCQkJCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZDEyOAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXVsLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMJCVVMLVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQJT1BUSU9OQUwsCisJCQkJc3luY2hyb25pc2F0aW9uUGFyYW1ldGVycwkJCVN5bmNocm9uaXNhdGlvblBhcmFtZXRlcnMtcjQJT1BUSU9OQUwKKwkJCX0KKwkJfQorCX0KK30KKworVUwtVGltaW5nQWR2YW5jZUNvbnRyb2wtTENSLXI0IDo6PQlDSE9JQ0UgeworCWRpc2FibGVkCQkJCQkJCU5VTEwsCisJZW5hYmxlZAkJCQkJCQkJU0VRVUVOQ0UgeworCQl1bC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQlVTC1TeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzLXI0CU9QVElPTkFMLAorCQlzeW5jaHJvbmlzYXRpb25QYXJhbWV0ZXJzCQkJU3luY2hyb25pc2F0aW9uUGFyYW1ldGVycy1yNAlPUFRJT05BTAorCX0KK30KKworVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2MxLTEsIGNjMi0xLCBjYzItMiwKKwkJCQkJCQkJCQljYzQtMSwgY2M0LTIsIGNjNC0zLCBjYzQtNCwKKwkJCQkJCQkJCQljYzgtMSwgY2M4LTIsIGNjOC0zLCBjYzgtNCwKKwkJCQkJCQkJCQljYzgtNSwgY2M4LTYsIGNjOC03LCBjYzgtOCwKKwkJCQkJCQkJCQljYzE2LTEsIGNjMTYtMiwgY2MxNi0zLCBjYzE2LTQsCisJCQkJCQkJCQkJY2MxNi01LCBjYzE2LTYsIGNjMTYtNywgY2MxNi04LAorCQkJCQkJCQkJCWNjMTYtOSwgY2MxNi0xMCwgY2MxNi0xMSwgY2MxNi0xMiwKKwkJCQkJCQkJCQljYzE2LTEzLCBjYzE2LTE0LCBjYzE2LTE1LCBjYzE2LTE2IH0KKworVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGUKKworVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1yNyA6Oj0gCVNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQl1bC1UUy1DaGFubmVsaXNhdGlvbi1Db2RlCQkJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwkJcGxjY2gtaW5mbwkJCQkJCQkJUExDQ0gtSW5mbwkJT1BUSU9OQUwKK30KKworVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLVZIQ1IgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljYzEtMSwgY2MyLTEsIGNjMi0yLAorCQkJCQkJCQkJCWNjNC0xLCBjYzQtMiwgY2M0LTMsIGNjNC00LAorCQkJCQkJCQkJCWNjOC0xLCBjYzgtMiwgY2M4LTMsIGNjOC00LAorCQkJCQkJCQkJCWNjOC01LCBjYzgtNiwgY2M4LTcsIGNjOC04LAorCQkJCQkJCQkJCWNjMTYtMSwgY2MxNi0yLCBjYzE2LTMsIGNjMTYtNCwKKwkJCQkJCQkJCQljYzE2LTUsIGNjMTYtNiwgY2MxNi03LCBjYzE2LTgsCisJCQkJCQkJCQkJY2MxNi05LCBjYzE2LTEwLCBjYzE2LTExLCBjYzE2LTEyLAorCQkJCQkJCQkJCWNjMTYtMTMsIGNjMTYtMTQsIGNjMTYtMTUsIGNjMTYtMTYsCisJCQkJCQkJCQkJY2MzMi0xLCBjYzMyLTIsIGNjMzItMywgY2MzMi00LAorCQkJCQkJCQkJCWNjMzItNSwgY2MzMi02LCBjYzMyLTcsIGNjMzItOCwKKwkJCQkJCQkJCQljYzMyLTksIGNjMzItMTAsIGNjMzItMTEsIGNjMzItMTIsCisJCQkJCQkJCQkJY2MzMi0xMywgY2MzMi0xNCwgY2MzMi0xNSwgY2MzMi0xNiwKKwkJCQkJCQkJCQljYzMyLTE3LCBjYzMyLTE4LCBjYzMyLTE5LCBjYzMyLTIwLAorCQkJCQkJCQkJCWNjMzItMjEsIGNjMzItMjIsIGNjMzItMjMsIGNjMzItMjQsCisJCQkJCQkJCQkJY2MzMi0yNSwgY2MzMi0yNiwgY2MzMi0yNywgY2MzMi0yOCwKKwkJCQkJCQkJCQljYzMyLTI5LCBjYzMyLTMwLCBjYzMyLTMxLCBjYzMyLTMyIH0KKworVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1WSENSIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCisJCQkJCQkJCQkJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZS1WSENSCisKK1VwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMgOjo9CQlTRVFVRU5DRSB7CisJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgeworCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJfSwKKwkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLAorCQkJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJCQlVTC1UUy1DaGFubmVsaXNhdGlvbkNvZGVMaXN0CisJCX0KKwl9Cit9CisKK1VwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJcGFyYW1ldGVycwkJCQkJCQlDSE9JQ0UgeworCQlzYW1lQXNMYXN0CQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIKKwkJfSwKKwkJbmV3UGFyYW1ldGVycwkJCQkJCVNFUVVFTkNFIHsKKwkJCWluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQkJCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLUxDUi1yNCwKKwkJCXVsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAorCQl9CisJfQorfQorCitVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLUxDUi1yNyA6Oj0JU0VRVUVOQ0UgeworCXBhcmFtZXRlcnMJCQkJCQkJQ0hPSUNFIHsKKwkJc2FtZUFzTGFzdAkJCQkJCQlTRVFVRU5DRSB7CisJCQl0aW1lc2xvdE51bWJlcgkJCQkJCVRpbWVzbG90TnVtYmVyCisJCQktLSBwbGNjaC1pbmZvIGFzc2lnbmVkIGFzIHByZXZpb3VzbHkgZGVmaW5lZCBzbG90CisJCX0sCisJCW5ld1BhcmFtZXRlcnMJCQkJCQlTRVFVRU5DRSB7CisJCQlpbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAorCQkJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1yNworCQl9CisJfQorfQorCitVcGxpbmtUaW1lc2xvdHNDb2RlcyA6Oj0JCQlTRVFVRU5DRSB7CisJZHluYW1pY1NGdXNhZ2UJCQkJCQlCT09MRUFOLAorCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8sCisJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCwKKwltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKKwkJbm9Nb3JlCQkJCQkJCQlOVUxMLAorCQlhZGRpdGlvbmFsVGltZXNsb3RzCQkJCQlDSE9JQ0UgeworCQkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgeworCQkJCW51bUFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJSU5URUdFUiAoMS4ubWF4VFMtMSkKKwkJCX0sCisJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtMSkpIE9GCisJCQkJCQkJCQkJCQkJVXBsaW5rQWRkaXRpb25hbFRpbWVzbG90cworCQl9CisJfQorfQorCitVcGxpbmtUaW1lc2xvdHNDb2Rlcy1WSENSIDo6PQkJU0VRVUVOQ0UgeworCWR5bmFtaWNTRnVzYWdlCQkJCQkJQk9PTEVBTiwKKwlmaXJzdEluZGl2aWR1YWxUaW1lc2xvdEluZm8JCQlJbmRpdmlkdWFsVGltZXNsb3RJbmZvLVZIQ1IsCisJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdC1WSENSLAorCW1vcmVUaW1lc2xvdHMJCQkJCQlDSE9JQ0UgeworCQlub01vcmUJCQkJCQkJCU5VTEwsCisJCWFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJCUNIT0lDRSB7CisJCQljb25zZWN1dGl2ZQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy0xKQorCQkJfSwKKwkJCXRpbWVzbG90TGlzdAkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy0xKSkgT0YKKwkJCQkJCQkJCQkJCQlVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzCisJCX0KKwl9Cit9CisKK1VwbGlua1RpbWVzbG90c0NvZGVzLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlkeW5hbWljU0Z1c2FnZQkJCQkJCUJPT0xFQU4sCisJZmlyc3RJbmRpdmlkdWFsVGltZXNsb3RJbmZvCQkJSW5kaXZpZHVhbFRpbWVzbG90SW5mby1MQ1ItcjQsCisJdWwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdAkJVUwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlTGlzdCwKKwltb3JlVGltZXNsb3RzCQkJCQkJQ0hPSUNFIHsKKwkJbm9Nb3JlCQkJCQkJCQlOVUxMLAorCQlhZGRpdGlvbmFsVGltZXNsb3RzCQkJCQlDSE9JQ0UgeworCQkJY29uc2VjdXRpdmUJCQkJCQkJU0VRVUVOQ0UgeworCQkJCW51bUFkZGl0aW9uYWxUaW1lc2xvdHMJCQkJSU5URUdFUiAoMS4ubWF4VFMtTENSLTEpCisJCQl9LAorCQkJdGltZXNsb3RMaXN0CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLUxDUi0xKSkgT0YKKwkJCQkJCQkJCQkJCQlVcGxpbmtBZGRpdGlvbmFsVGltZXNsb3RzLUxDUi1yNAorCQl9CisJfQorfQorCitVcGxpbmtUaW1lc2xvdHNDb2Rlcy1MQ1ItcjcgOjo9CQlTRVFVRU5DRSB7CisJZHluYW1pY1NGdXNhZ2UJCQkJCQlCT09MRUFOLAorCWZpcnN0SW5kaXZpZHVhbFRpbWVzbG90SW5mbwkJCUluZGl2aWR1YWxUaW1lc2xvdEluZm8tTENSLXI0LAorCXVsLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCVVMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZUxpc3QtcjcsCisJbW9yZVRpbWVzbG90cwkJCQkJCUNIT0lDRSB7CisJCW5vTW9yZQkJCQkJCQkJTlVMTCwKKwkJYWRkaXRpb25hbFRpbWVzbG90cwkJCQkJQ0hPSUNFIHsKKwkJCWNvbnNlY3V0aXZlCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIHRoZSBjaG9pY2Ugb2YgJ2NvbnNlY3V0aXZlJyBpcyBub3QgbmVlZGVkIGJlY2F1c2UgdGhlcmUgaXMgb25seSAxIG9wdGlvbi4gCisJCQkJbnVtQWRkaXRpb25hbFRpbWVzbG90cwkJCQlJTlRFR0VSICgxLi5tYXhUUy1MQ1ItMSkKKwkJCX0sCisJCQl0aW1lc2xvdExpc3QJCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VFMtTENSLTEpKSBPRgorCQkJCQkJCQkJCQkJCVVwbGlua0FkZGl0aW9uYWxUaW1lc2xvdHMtTENSLXI3CisJCX0KKwl9Cit9CisKK1dpLUxDUiA6Oj0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFR0VSKDEuLjQpCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBNRUFTVVJFTUVOVCBJTkZPUk1BVElPTiBFTEVNRU5UUyAoMTAuMy43KQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBY3F1aXNpdGlvblNhdEluZm8gOjo9CQkJCVNFUVVFTkNFIHsKKwlzYXRJRAkJCQkJCQkJU2F0SUQsCisJLS0gQWN0dWFsIHZhbHVlIGRvcHBsZXJPdGhPcmRlciA9IElFIHZhbHVlICogMi41CisJZG9wcGxlcjB0aE9yZGVyCQkJCQkJSU5URUdFUiAoLTIwNDguLjIwNDcpLAorCWV4dHJhRG9wcGxlckluZm8JCQkJCUV4dHJhRG9wcGxlckluZm8JCQkJCU9QVElPTkFMLAorCWNvZGVQaGFzZQkJCQkJCQlJTlRFR0VSICgwLi4xMDIyKSwKKwlpbnRlZ2VyQ29kZVBoYXNlCQkJCQlJTlRFR0VSICgwLi4xOSksCisJZ3BzLUJpdE51bWJlcgkJCQkJCUlOVEVHRVIgKDAuLjMpLAorCWNvZGVQaGFzZVNlYXJjaFdpbmRvdwkJCQlDb2RlUGhhc2VTZWFyY2hXaW5kb3csCisJYXppbXV0aEFuZEVsZXZhdGlvbgkJCQkJQXppbXV0aEFuZEVsZXZhdGlvbgkJCQkJT1BUSU9OQUwKK30JCisKK0FjcXVpc2l0aW9uU2F0SW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCisJCQkJCQkJCQkJQWNxdWlzaXRpb25TYXRJbmZvCisKKworQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEFkZGl0aW9uYWxNZWFzKSkgT0YKKwkJCQkJCQkJCQlNZWFzdXJlbWVudElkZW50aXR5CisKK0FsbWFuYWNTYXRJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCWRhdGFJRAkJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJc2F0SUQJCQkJCQkJCVNhdElELAorCWUJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAorCXQtb2EJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwlkZWx0YUkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJb21lZ2FEb3QJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlzYXRIZWFsdGgJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWEtU3FydAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKKwlvbWVnYTAJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI0KSksCisJbTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCW9tZWdhCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCWFmMAkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDExKSksCisJYWYxCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTEpKQorfQorCitBbG1hbmFjU2F0SW5mb0xpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgorCQkJCQkJCQkJCUFsbWFuYWNTYXRJbmZvCisKK0F2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBsYTAsIHBsYTQsIHBsYTgsIHBsYTE2LCBwbGEzMiwKKwkJCQkJCQkJCQlwbGE2NCwgcGxhMTI4LCBwbGEyNTYsIHBsYTUxMiwKKwkJCQkJCQkJCQlwbGExMDI0LCBwbGEyaywgcGxhNGssIHBsYThrLCBwbGExNmssCisJCQkJCQkJCQkJcGxhMzJrLCBwbGE2NGssIHBsYTEyOGssIHBsYTI1NmssCisJCQkJCQkJCQkJcGxhNTEyaywgcGxhMTAyNGssIHNwYXJlMTIsIHNwYXJlMTEsCisJCQkJCQkJCQkJc3BhcmUxMCwgc3BhcmU5LCBzcGFyZTgsIHNwYXJlNywgc3BhcmU2LAorCQkJCQkJCQkJCXNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsIHNwYXJlMiwgc3BhcmUxIH0KKwkKK0F6aW11dGhBbmRFbGV2YXRpb24gOjo9CQkJCVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgdmFsdWUgYXppbXV0aCA9IElFIHZhbHVlICogMTEuMjUKKwlhemltdXRoCQkJCQkJCQlJTlRFR0VSICgwLi4zMSksCisJLS0gQWN0dWFsIHZhbHVlIGVsZXZhdGlvbiA9IElFIHZhbHVlICogMTEuMjUKKwllbGV2YXRpb24JCQkJCQkJSU5URUdFUiAoMC4uNykKK30KKworQmFkU2F0TGlzdCA6Oj0JCQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U2F0KSkgT0YKKwkJCQkJCQkJCQlJTlRFR0VSICgwLi42MykKKworRnJlcXVlbmN5LUJhbmQgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlkY3MxODAwQmFuZFVzZWQsIHBjczE5MDBCYW5kVXNlZCB9CisKK0JDQ0gtQVJGQ04gOjo9CQkJCQkJSU5URUdFUiAoMC4uMTAyMykKKworQkxFUi1NZWFzdXJlbWVudFJlc3VsdHMgOjo9CQkJU0VRVUVOQ0UgeworCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwlkbC1UcmFuc3BvcnRDaGFubmVsQkxFUgkJCQlETC1UcmFuc3BvcnRDaGFubmVsQkxFUgkJCQlPUFRJT05BTAorfQorCitCTEVSLU1lYXN1cmVtZW50UmVzdWx0c0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJQkxFUi1NZWFzdXJlbWVudFJlc3VsdHMKKworQkxFUi1UcmFuc0NoSWRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5CisKK0JTSUMtVmVyaWZpY2F0aW9uUmVxdWlyZWQgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlyZXF1aXJlZCwgbm90UmVxdWlyZWQgfQorCitCU0lDUmVwb3J0ZWQgOjo9CQkJCQlDSE9JQ0UgeworCS0tIFZhbHVlIG1heENlbGxNZWFzIGlzIG5vdCBhbGxvd2VkIGZvciB2ZXJpZmllZEJTSUMKKwl2ZXJpZmllZEJTSUMJCQkJCQlJTlRFR0VSICgwLi5tYXhDZWxsTWVhcyksCisJbm9uVmVyaWZpZWRCU0lDCQkJCQkJQkNDSC1BUkZDTgorfQorCitCdXJzdE1vZGVQYXJhbWV0ZXJzIDo6PQkJCQlTRVFVRU5DRSB7CisJYnVyc3RTdGFydAkJCQkJCQlJTlRFR0VSICgwLi4xNSksCisJYnVyc3RMZW5ndGgJCQkJCQkJSU5URUdFUiAoMTAuLjI1KSwKKwlidXJzdEZyZXEJCQkJCQkJSU5URUdFUiAoMS4uMTYpCit9CisKK0NlbGxEQ0gtUmVwb3J0Q3JpdGVyaWEgOjo9CQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQorfQorCitDZWxsRENILVJlcG9ydENyaXRlcmlhLUxDUi1yNCA6Oj0JQ0hPSUNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLUxDUi1yNCwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEKK30KKworLS0gQWN0dWFsIHZhbHVlIENlbGxJbmRpdmlkdWFsT2Zmc2V0ID0gSUUgdmFsdWUgKiAwLjUKK0NlbGxJbmRpdmlkdWFsT2Zmc2V0IDo6PQkJCUlOVEVHRVIgKC0yMC4uMjApCisKKworQ2VsbEluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJIAlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKKwkJCXByaW1hcnlDUElDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbywKKwkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdAkJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KKwkJfQorCX0KK30KKworQ2VsbEluZm8tcjQgOjo9CQkJCQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJIAlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKKwkJCXByaW1hcnlDUElDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNCwKKwkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdC1yNAkJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KKworCQl9CisJfQorfQorCitDZWxsSW5mb1NJLVJTQ1AgOjo9CQkJCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAorCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgorCQl9CisJfSwKKwljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLVJTQ1AJCU9QVElPTkFMCit9CisKK0NlbGxJbmZvU0ktUlNDUC1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LAorCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdC1MQ1ItcjQJCQkJT1BUSU9OQUwsCisJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1SU0NQCQlPUFRJT05BTAorfQorCitDZWxsSW5mb1NJLUVDTjAgOjo9CQkJCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbwkJCU9QVElPTkFMLAorCQkJcHJpbWFyeUNQSUNILVRYLVBvd2VyCQkJCVByaW1hcnlDUElDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXR4LURpdmVyc2l0eUluZGljYXRvcgkJCQlCT09MRUFOCQkKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLAorCQkJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJT1BUSU9OQUwsCisJCQl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCQlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTgorCQl9CisJfSwKKwljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUVDTjAJT1BUSU9OQUwKK30KKworQ2VsbEluZm9TSS1FQ04wLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJY2VsbEluZGl2aWR1YWxPZmZzZXQJCQkJQ2VsbEluZGl2aWR1YWxPZmZzZXQJCSAJCURFRkFVTFQgMCwKKwlyZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCU9QVElPTkFMLAorCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQsCisJcHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCVByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwl0aW1lc2xvdEluZm9MaXN0CQkJCQlUaW1lc2xvdEluZm9MaXN0LUxDUi1yNAkJCQlPUFRJT05BTCwKKwlyZWFkU0ZOLUluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUVDTjAJT1BUSU9OQUwKK30KKworQ2VsbEluZm9TSS1IQ1MtUlNDUCA6Oj0JCQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKKwkJCXByaW1hcnlDUElDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbywKKwkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdAkJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KKwkJfQorCX0sCisJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtUlNDUAlPUFRJT05BTAorfQorCitDZWxsSW5mb1NJLUhDUy1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAorCXJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJT1BUSU9OQUwsCisJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNCwKKwlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QtTENSLXI0CQkJCU9QVElPTkFMLAorCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItSENTLVJTQ1AJT1BUSU9OQUwKK30KKworQ2VsbEluZm9TSS1IQ1MtRUNOMCA6Oj0JCQkJU0VRVUVOQ0UgeworCWNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkJCUNlbGxJbmRpdmlkdWFsT2Zmc2V0CQkgCQlERUZBVUxUIDAsCisJcmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwJCVJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8JCQlPUFRJT05BTCwKKwkJCXByaW1hcnlDUElDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q1BJQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJCQl0eC1EaXZlcnNpdHlJbmRpY2F0b3IJCQkJQk9PTEVBTgkJCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDQ1BDSC1JbmZvCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mbywKKwkJCXByaW1hcnlDQ1BDSC1UWC1Qb3dlcgkJCQlQcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCU9QVElPTkFMLAorCQkJdGltZXNsb3RJbmZvTGlzdAkJCQkJVGltZXNsb3RJbmZvTGlzdAkJCU9QVElPTkFMLAorCQkJcmVhZFNGTi1JbmRpY2F0b3IJCQkJCUJPT0xFQU4KKwkJfQorCX0sCisJY2VsbFNlbGVjdGlvblJlc2VsZWN0aW9uSW5mbwkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtRUNOMAlPUFRJT05BTAorfQorCitDZWxsSW5mb1NJLUhDUy1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwljZWxsSW5kaXZpZHVhbE9mZnNldAkJCQlDZWxsSW5kaXZpZHVhbE9mZnNldAkJIAkJREVGQVVMVCAwLAorCXJlZmVyZW5jZVRpbWVEaWZmZXJlbmNlVG9DZWxsCQlSZWZlcmVuY2VUaW1lRGlmZmVyZW5jZVRvQ2VsbAkJT1BUSU9OQUwsCisJcHJpbWFyeUNDUENILUluZm8JCQkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNCwKKwlwcmltYXJ5Q0NQQ0gtVFgtUG93ZXIJCQkJUHJpbWFyeUNDUENILVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCXRpbWVzbG90SW5mb0xpc3QJCQkJCVRpbWVzbG90SW5mb0xpc3QtTENSLXI0CQkJCU9QVElPTkFMLAorCXJlYWRTRk4tSW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTItSENTLUVDTjAJT1BUSU9OQUwKK30KKworQ2VsbE1lYXN1cmVkUmVzdWx0cyA6Oj0JCQkJU0VRVUVOQ0UgeworCWNlbGxJZGVudGl0eQkJCQkJCUNlbGxJZGVudGl0eQkJCQkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZQkJCU9QVElPTkFMLAorCWNlbGxTeW5jaHJvbmlzYXRpb25JbmZvCQkJQ2VsbFN5bmNocm9uaXNhdGlvbkluZm8JCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQljcGljaC1FYy1OMAkJCQkJCQlDUElDSC1FYy1OMAkJCQkJT1BUSU9OQUwsCisJCQljcGljaC1SU0NQCQkJCQkJCUNQSUNILVJTQ1AJCQkJCU9QVElPTkFMLAorCQkJcGF0aGxvc3MJCQkJCQkJUGF0aGxvc3MJCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNlbGxQYXJhbWV0ZXJzSUQJCQkJCUNlbGxQYXJhbWV0ZXJzSUQsCisJCQlwcm9wb3NlZFRHU04JCQkJCQlUR1NOCQkJCQkJT1BUSU9OQUwsCisJCQlwcmltYXJ5Q0NQQ0gtUlNDUAkJCQkJUHJpbWFyeUNDUENILVJTQ1AJCQlPUFRJT05BTCwKKwkJCXBhdGhsb3NzCQkJCQkJCVBhdGhsb3NzCQkJCQlPUFRJT05BTCwKKwkJCXRpbWVzbG90SVNDUC1MaXN0CQkJCQlUaW1lc2xvdElTQ1AtTGlzdAkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK0NlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cyA6Oj0JCUNIT0lDRSB7CisJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8KK30KKworQ2VsbE1lYXN1cmVtZW50RXZlbnRSZXN1bHRzLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0CisKK0NlbGxSZXBvcnRpbmdRdWFudGl0aWVzIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwktLSBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCVNGTi1TRk4tT1RELVR5cGUsCisJY2VsbElkZW50aXR5LXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCUJPT0xFQU4sCisJY2VsbFN5bmNocm9uaXNhdGlvbkluZm9SZXBvcnRpbmdJbmRpY2F0b3IJCQlCT09MRUFOLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNwaWNoLUVjLU4wLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCQlCT09MRUFOLAorCQkJY3BpY2gtUlNDUC1yZXBvcnRpbmdJbmRpY2F0b3IJCQkJCQkJQk9PTEVBTiwKKwkJCXBhdGhsb3NzLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCQlCT09MRUFOCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90SVNDUC1yZXBvcnRpbmdJbmRpY2F0b3IJCQkJCQlCT09MRUFOLAorCQkJcHJvcG9zZWRUR1NOLVJlcG9ydGluZ1JlcXVpcmVkCQkJCQkJQk9PTEVBTiwKKwkJCXByaW1hcnlDQ1BDSC1SU0NQLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJQk9PTEVBTiwKKwkJCXBhdGhsb3NzLXJlcG9ydGluZ0luZGljYXRvcgkJCQkJCQlCT09MRUFOCisJCX0KKwl9Cit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTIgOjo9CVNFUVVFTkNFIHsKKwlxLU9mZnNldDFTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCQlERUZBVUxUIDAsCisJcS1PZmZzZXQyUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQkJT1BUSU9OQUwsCisJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwloY3MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLVJTQ1AJCUhDUy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tUlNDUAkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbgkJCQkJT1BUSU9OQUwsCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLVJTQ1AgOjo9CVNFUVVFTkNFIHsKKwlxLU9mZnNldFMtTgkJCQkJCVEtT2Zmc2V0Uy1OCQkJCQkJREVGQVVMVCAwLAorCW1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlNYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbgkJCQkJT1BUSU9OQUwsCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUVDTjAgOjo9CVNFUVVFTkNFIHsKKwlxLU9mZnNldDFTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCURFRkFVTFQgMCwKKwlxLU9mZnNldDJTLU4JCQkJCQlRLU9mZnNldFMtTgkJCQkJCURFRkFVTFQgMCwKKwltYXhBbGxvd2VkVUwtVFgtUG93ZXIJCQkJTWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUXVhbE1pbgkJCQkJCQlRLVF1YWxNaW4JCQkJCU9QVElPTkFMLAorCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0sCisJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0xMS0xMi1IQ1MtUlNDUCA6Oj0JU0VRVUVOQ0UgeworCXEtT2Zmc2V0Uy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQlERUZBVUxUIDAsCisJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwloY3MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLVJTQ1AJCUhDUy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tUlNDUAkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbgkJCQkJT1BUSU9OQUwsCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyLUhDUy1FQ04wIDo6PQlTRVFVRU5DRSB7CisJcS1PZmZzZXQxUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQlERUZBVUxUIDAsCisJcS1PZmZzZXQyUy1OCQkJCQkJUS1PZmZzZXRTLU4JCQkJCQlERUZBVUxUIDAsCisJbWF4QWxsb3dlZFVMLVRYLVBvd2VyCQkJCU1heEFsbG93ZWRVTC1UWC1Qb3dlcgkJCQlPUFRJT05BTCwKKwloY3MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLUVDTjAJCUhDUy1OZWlnaGJvdXJpbmdDZWxsSW5mb3JtYXRpb24tRUNOMAkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1RdWFsTWluCQkJCQkJCVEtUXVhbE1pbgkJCQkJT1BUSU9OQUwsCisJCQlxLVJ4bGV2TWluCQkJCQkJCVEtUnhsZXZNaW4JCQkJCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXEtUnhsZXZNaW4JCQkJCQkJUS1SeGxldk1pbgkJCQkJT1BUSU9OQUwKKwkJfSwKKwkJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcS1SeGxldk1pbgkJCQkJCQlRLVJ4bGV2TWluCQkJCQlPUFRJT05BTAorCQl9CisJfQorfQorCitDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKKwlkZWx0YVFyeGxldm1pbgkJCQkJRGVsdGFRcnhsZXZtaW4JCQkJCU9QVElPTkFMLAorCWRlbHRhUWhjcwkJCQkJCURlbHRhUlNDUAkJCQkJCU9QVElPTkFMCit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9QQ0hGQUNILXY1YjBleHQgOjo9IFNFUVVFTkNFIHsKKwlxLUh5c3QtbC1TLVBDSAkJCQlRLUh5c3QtUy1GaW5lCQkJCQkJT1BUSU9OQUwsCisJcS1IeXN0LWwtUy1GQUNICQkJCVEtSHlzdC1TLUZpbmUJCQkJCQlPUFRJT05BTCwKKwlxLUh5c3QtMi1TLVBDSAkJCQlRLUh5c3QtUy1GaW5lCQkJCQkJT1BUSU9OQUwsCisJcS1IeXN0LTItUy1GQUNICQkJCVEtSHlzdC1TLUZpbmUJCQkJCQlPUFRJT05BTCwKKwl0LVJlc2VsZWN0aW9uLVMtUENICQkJVC1SZXNlbGVjdGlvbi1TCQkJCQkJT1BUSU9OQUwsCisJdC1SZXNlbGVjdGlvbi1TLUZBQ0gJCVQtUmVzZWxlY3Rpb24tUy1GaW5lCQkJCU9QVElPTkFMCit9CisKK0NlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQgOjo9IFNFUVVFTkNFIHsKKwktLSBGb3Igc3BlZWQgZGV0ZWN0aW9uLCB0aGUgc2FtZSBIQ1MgcGFyYW1ldGVycyBhcmUgdXRpbGlzZWQKKwlub24tSENTLXQtQ1ItTWF4CQkJCQkJCVQtQ1JNYXgJCQkJCQkJCQlPUFRJT05BTCwKKwlzcGVlZERlcGVuZGVudFNjYWxpbmdGYWN0b3IJCQkJCVNwZWVkRGVwZW5kZW50U2NhbGluZ0ZhY3RvcgkJCQlPUFRJT05BTCwKKwlpbnRlckZyZXF1ZW5jeVRyZXNlbGVjdGlvblNjYWxpbmdGYWN0b3IJCVRyZXNlbGVjdGlvblNjYWxpbmdGYWN0b3IJCQkJT1BUSU9OQUwsCisJaW50ZXJSQVRUcmVzZWxlY3Rpb25TY2FsaW5nRmFjdG9yCQkJVHJlc2VsZWN0aW9uU2NhbGluZ0ZhY3RvcgkJCQlPUFRJT05BTAorfQorCitDZWxsc0ZvckludGVyRnJlcU1lYXNMaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJSW50ZXJGcmVxQ2VsbElECitDZWxsc0ZvckludGVyUkFUTWVhc0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJSW50ZXJSQVRDZWxsSUQKK0NlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFDZWxsSUQKKworQ2VsbFN5bmNocm9uaXNhdGlvbkluZm8gOjo9CQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNvdW50Qy1TRk4tRnJhbWUtZGlmZmVyZW5jZQkJCUNvdW50Qy1TRk4tRnJhbWUtZGlmZmVyZW5jZQkJT1BUSU9OQUwsCisJCQl0bQkJCQkJCQkJCUlOVEVHRVIoMC4uMzgzOTkpCQorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljb3VudEMtU0ZOLUZyYW1lLWRpZmZlcmVuY2UJCQlDb3VudEMtU0ZOLUZyYW1lLWRpZmZlcmVuY2UJCU9QVElPTkFMCisJCX0KKwl9CQkJCQkJCQorfQorCitDZWxsVG9SZXBvcnQgOjo9CQkJCQlTRVFVRU5DRSB7CisJYnNpY1JlcG9ydGVkCQkJCQkJQlNJQ1JlcG9ydGVkCit9CisKK0NlbGxUb1JlcG9ydExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJQ2VsbFRvUmVwb3J0CisKK0NvZGVQaGFzZVNlYXJjaFdpbmRvdyA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl3MTAyMywgdzEsIHcyLCB3MywgdzQsIHc2LCB3OCwKKwkJCQkJCQkJCQl3MTIsIHcxNiwgdzI0LCB3MzIsIHc0OCwgdzY0LAorCQkJCQkJCQkJCXc5NiwgdzEyOCwgdzE5MiB9CisKK0NvdW50Qy1TRk4tRnJhbWUtZGlmZmVyZW5jZSA6Oj0gU0VRVUVOQ0UgeworCS0tIEFjdHVhbCB2YWx1ZSBjb3VudEMtU0ZOLUhpZ2ggPSBJRSB2YWx1ZSAqIDI1NgorCWNvdW50Qy1TRk4tSGlnaAkJCQkJSU5URUdFUigwLi4xNSksCisJb2ZmCQkJCQkJCQlJTlRFR0VSKDAuLjI1NSkKK30KKworLS0gU1BBUkU6IENQSUNILUVjLU5vLCBNYXggPSA0OQorLS0gVmFsdWVzIGFib3ZlIE1heCBhcmUgc3BhcmUKK0NQSUNILUVjLU4wIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjYzKQorCistLSBTUEFSRTogQ1BJQ0gtIFJTQ1AsIE1heCA9IDkxCistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorQ1BJQ0gtUlNDUCA6Oj0JCQkJCQlJTlRFR0VSICgwLi4xMjcpCisKKworRGVsdGFQUkMgOjo9CQkJCQkJSU5URUdFUiAoLTEyNy4uMTI3KQorCistLUFjdHVhbCB2YWx1ZSBEZWx0YVFyeGxldm1pbiA9IElFIHZhbHVlICogMgorRGVsdGFRcnhsZXZtaW4gOjo9IElOVEVHRVIgKC0yLi4tMSkKKworRGVsdGFSU0NQIDo6PSBJTlRFR0VSICgtNS4uLTEpCisKK0RlbHRhUlNDUFBlckNlbGwgOjo9IFNFUVVFTkNFIHsKKwlkZWx0YVJTQ1AJCQkJCQlEZWx0YVJTQ1AJT1BUSU9OQUwKK30KKworLS0gQWN0dWFsIHZhbHVlIERlbHRhUlJDID0gSUUgdmFsdWUgKiAwLjAzMgorRGVsdGFSUkMgOjo9CQkJCQkJSU5URUdFUiAoLTcuLjcpCisKK0RHUFMtQ29ycmVjdGlvblNhdEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXNhdElECQkJCQkJCQlTYXRJRCwKKwlpb2RlCQkJCQkJCQlJT0RFLAorCXVkcmUJCQkJCQkJCVVEUkUsCisJcHJjCQkJCQkJCQkJUFJDLAorCXJyYwkJCQkJCQkJCVJSQywKKy0tIGR1bW15MSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kIHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15MQkJCQkJCQlEZWx0YVBSQywKKwlkdW1teTIJCQkJCQkJRGVsdGFSUkMsCisJLS0gZHVtbXkzIGFuZCBkdW1teTQgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gVGhleSBzaG91bGQgbm90CisJLS0gYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teTMJCQkJCQkJRGVsdGFQUkMJCQlPUFRJT05BTCwKKwlkdW1teTQJCQkJCQkJRGVsdGFSUkMJCQlPUFRJT05BTAorfQorCitER1BTLUNvcnJlY3Rpb25TYXRJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgorCQkJCQkJCQkJCURHUFMtQ29ycmVjdGlvblNhdEluZm8KKworRGlmZkNvcnJlY3Rpb25TdGF0dXMgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdWRyZS0xLTAsIHVkcmUtMC03NSwgdWRyZS0wLTUsIHVkcmUtMC0zLAorCQkJCQkJCQkJCXVkcmUtMC0yLCB1ZHJlLTAtMSwgbm9EYXRhLCBpbnZhbGlkRGF0YSB9CisKK0RMLVRyYW5zcG9ydENoYW5uZWxCTEVSIDo6PQkJCUlOVEVHRVIgKDAuLjYzKQorCitEb3BwbGVyVW5jZXJ0YWludHkgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWh6MTItNSwgaHoyNSwgaHo1MCwgaHoxMDAsIGh6MjAwLAorCQkJCQkJCQkJCXNwYXJlMywgc3BhcmUyLCBzcGFyZTEgfQorCitFbGxpcHNvaWRQb2ludCA6Oj0JCQkJCVNFUVVFTkNFIHsJCisJbGF0aXR1ZGVTaWduCQlFTlVNRVJBVEVEIHsgbm9ydGgsIHNvdXRoIH0sCisJbGF0aXR1ZGUJCQlJTlRFR0VSICgwLi44Mzg4NjA3KSwKKwlsb25naXR1ZGUJCQlJTlRFR0VSICgtODM4ODYwOC4uODM4ODYwNykKK30KKworCitFbGxpcHNvaWRQb2ludEFsdGl0dWRlIDo6PQkJCVNFUVVFTkNFIHsKKwlsYXRpdHVkZVNpZ24JCUVOVU1FUkFURUQgeyBub3J0aCwgc291dGggfSwKKwlsYXRpdHVkZQkJCUlOVEVHRVIgKDAuLjgzODg2MDcpLAorCWxvbmdpdHVkZQkJCUlOVEVHRVIgKC04Mzg4NjA4Li44Mzg4NjA3KSwKKwlhbHRpdHVkZURpcmVjdGlvbglFTlVNRVJBVEVEIHtoZWlnaHQsIGRlcHRofSwKKwlhbHRpdHVkZQkJCUlOVEVHRVIgKDAuLjMyNzY3KQorfQorCisKK0VsbGlwc29pZFBvaW50QWx0aXR1ZGVFbGxpcHNvaWRlIDo6PQlTRVFVRU5DRSB7CisJbGF0aXR1ZGVTaWduCQkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAorCWxhdGl0dWRlCQkJCUlOVEVHRVIgKDAuLjgzODg2MDcpLAorCWxvbmdpdHVkZQkJCQlJTlRFR0VSICgtODM4ODYwOC4uODM4ODYwNyksCisJYWx0aXR1ZGVEaXJlY3Rpb24JCUVOVU1FUkFURUQge2hlaWdodCwgZGVwdGh9LAorCWFsdGl0dWRlCQkJCUlOVEVHRVIgKDAuLjMyNzY3KSwKKwl1bmNlcnRhaW50eVNlbWlNYWpvcglJTlRFR0VSICgwLi4xMjcpLAorCXVuY2VydGFpbnR5U2VtaU1pbm9yCUlOVEVHRVIgKDAuLjEyNyksCisJLS0gQWN0dWFsIHZhbHVlIG9yaWVudGF0aW9uTWFqb3JBeGlzID0gSUUgdmFsdWUgKiAyCisJb3JpZW50YXRpb25NYWpvckF4aXMJSU5URUdFUiAoMC4uODkpLAorCXVuY2VydGFpbnR5QWx0aXR1ZGUJCUlOVEVHRVIgKDAuLjEyNyksCisJY29uZmlkZW5jZQkJCQlJTlRFR0VSICgwLi4xMDApCit9CisKKworRWxsaXBzb2lkUG9pbnRVbmNlcnRDaXJjbGUgOjo9CQlTRVFVRU5DRSB7CisJbGF0aXR1ZGVTaWduCQkJRU5VTUVSQVRFRCB7IG5vcnRoLCBzb3V0aCB9LAorCWxhdGl0dWRlCQkJCUlOVEVHRVIgKDAuLjgzODg2MDcpLAorCWxvbmdpdHVkZQkJCQlJTlRFR0VSICgtODM4ODYwOC4uODM4ODYwNyksCisJdW5jZXJ0YWludHlDb2RlCQkJSU5URUdFUiAoMC4uMTI3KQorfQorCisKK0VsbGlwc29pZFBvaW50VW5jZXJ0RWxsaXBzZSA6Oj0JCVNFUVVFTkNFIHsKKwlsYXRpdHVkZVNpZ24JCQlFTlVNRVJBVEVEIHsgbm9ydGgsIHNvdXRoIH0sCisJbGF0aXR1ZGUJCQkJSU5URUdFUiAoMC4uODM4ODYwNyksCisJbG9uZ2l0dWRlCQkJCUlOVEVHRVIgKC04Mzg4NjA4Li44Mzg4NjA3KSwKKwl1bmNlcnRhaW50eVNlbWlNYWpvcglJTlRFR0VSICgwLi4xMjcpLAorCXVuY2VydGFpbnR5U2VtaU1pbm9yCUlOVEVHRVIgKDAuLjEyNyksCisJLS0gQWN0dWFsIHZhbHVlIG9yaWVudGF0aW9uTWFqb3JBeGlzID0gSUUgdmFsdWUgKiAyCisJb3JpZW50YXRpb25NYWpvckF4aXMJSU5URUdFUiAoMC4uODkpLAorCWNvbmZpZGVuY2UJCQkJSU5URUdFUiAoMC4uMTAwKQorfQorCisKK0Vudmlyb25tZW50Q2hhcmFjdGVyaXNhdGlvbiA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBvc3NpYmxlSGVhdnlNdWx0aXBhdGhOTE9TLAorCQkJCQkJCQkJCWxpZ2h0TXVsdGlwYXRoTE9TLAorCQkJCQkJCQkJCW5vdERlZmluZWQsCisJCQkJCQkJCQkJc3BhcmUgfQorCitFdmVudDFhIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjIsCisJcmVwb3J0aW5nUmFuZ2UJCQkJCQlSZXBvcnRpbmdSYW5nZSwKKwlmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlPUFRJT05BTCwKKwl3CQkJCQkJCQkJVywKKwlyZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQJCQlSZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQsCisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbAorfQorCitFdmVudDFhLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKKwlyZXBvcnRpbmdSYW5nZQkJCQkJCVJlcG9ydGluZ1JhbmdlLAorCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LXI0CQkJT1BUSU9OQUwsCisJdwkJCQkJCQkJCVcsCisJcmVwb3J0RGVhY3RpdmF0aW9uVGhyZXNob2xkCQkJUmVwb3J0RGVhY3RpdmF0aW9uVGhyZXNob2xkLAorCXJlcG9ydGluZ0Ftb3VudAkJCQkJCVJlcG9ydGluZ0Ftb3VudCwKKwlyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWwKK30KKworRXZlbnQxYS1MQ1ItcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjIsCisJcmVwb3J0aW5nUmFuZ2UJCQkJCQlSZXBvcnRpbmdSYW5nZSwKKwlmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1MQ1ItcjQJCQlPUFRJT05BTCwKKwl3CQkJCQkJCQkJVywKKwlyZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQJCQlSZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQsCisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbAorfQorCitFdmVudDFiIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjEsCisJcmVwb3J0aW5nUmFuZ2UJCQkJCQlSZXBvcnRpbmdSYW5nZSwKKwlmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlPUFRJT05BTCwKKwl3CQkJCQkJCQkJVworfQorCitFdmVudDFiLXI0IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMSwKKwlyZXBvcnRpbmdSYW5nZQkJCQkJCVJlcG9ydGluZ1JhbmdlLAorCWZvcmJpZGRlbkFmZmVjdENlbGxMaXN0CQkJCUZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LXI0CQkJT1BUSU9OQUwsCisJdwkJCQkJCQkJCVcKK30KKworRXZlbnQxYi1MQ1ItcjQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjEsCisJcmVwb3J0aW5nUmFuZ2UJCQkJCQlSZXBvcnRpbmdSYW5nZSwKKwlmb3JiaWRkZW5BZmZlY3RDZWxsTGlzdAkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1MQ1ItcjQJCQlPUFRJT05BTCwKKwl3CQkJCQkJCQkJVworfQorCitFdmVudDFjIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJcmVwbGFjZW1lbnRBY3RpdmF0aW9uVGhyZXNob2xkCQlSZXBsYWNlbWVudEFjdGl2YXRpb25UaHJlc2hvbGQsCisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbAorfQorCitFdmVudDFkIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjIJT1BUSU9OQUwsCisJdXNlQ0lPCQkJCQkJCQlCT09MRUFOCQkJCQlPUFRJT05BTAorfQorCitFdmVudDFlIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKKwl0aHJlc2hvbGRVc2VkRnJlcXVlbmN5CQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKK30KKworRXZlbnQxZS1yNiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMiwKKwl0aHJlc2hvbGRVc2VkRnJlcXVlbmN5CQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3ktcjYKK30KKworRXZlbnQxZiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjEsCisJdGhyZXNob2xkVXNlZEZyZXF1ZW5jeQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5Cit9CisKK0V2ZW50MWYtcjYgOjo9CQkJCQlTRVFVRU5DRSB7CisJdHJpZ2dlcmluZ0NvbmRpdGlvbgkJCQkJVHJpZ2dlcmluZ0NvbmRpdGlvbjEsCisJdGhyZXNob2xkVXNlZEZyZXF1ZW5jeQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LXI2Cit9CisKK0V2ZW50MWotcjYgOjo9CQkJCQlTRVFVRU5DRSB7CisJcmVwbGFjZW1lbnRBY3RpdmF0aW9uVGhyZXNob2xkCQlSZXBsYWNlbWVudEFjdGl2YXRpb25UaHJlc2hvbGQsCisJcmVwb3J0aW5nQW1vdW50CQkJCQkJUmVwb3J0aW5nQW1vdW50LAorCXJlcG9ydGluZ0ludGVydmFsCQkJCQlSZXBvcnRpbmdJbnRlcnZhbAorfQorCitFdmVudDJhIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgYmUgaWdub3JlZAorCWR1bW15CQkJCQkJCQlUaHJlc2hvbGQsCisJdXNlZEZyZXFXCQkJCQkJCVcsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAorCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU9QVElPTkFMCit9CisKK0V2ZW50MmEtcjYgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXVzZWRGcmVxVwkJCQkJCQlXLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKKwlub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVdMaXN0LXI2CQkJCQlPUFRJT05BTAorfQorCitFdmVudDJiIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZCwKKwl1c2VkRnJlcVcJCQkJCQkJVywKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCisJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJT1BUSU9OQUwKK30KKworRXZlbnQyYi1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZC1yNiwKKwl1c2VkRnJlcVcJCQkJCQkJVywKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCisJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0LXI2CQkJT1BUSU9OQUwKK30KKworRXZlbnQyYyA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTCwKKwlub25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QJCQlPUFRJT05BTAorfQorCitFdmVudDJjLXI2IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCisJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0LXI2CQkJT1BUSU9OQUwKK30KKworRXZlbnQyZCA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCXVzZWRGcmVxVGhyZXNob2xkCQkJCQlUaHJlc2hvbGQsCisJdXNlZEZyZXFXCQkJCQkJCVcsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CisKK0V2ZW50MmQtcjYgOjo9CQkJCQkJU0VRVUVOQ0UgeworCXVzZWRGcmVxVGhyZXNob2xkCQkJCQlUaHJlc2hvbGQtcjYsCisJdXNlZEZyZXFXCQkJCQkJCVcsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CisKK0V2ZW50MmUgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwsCisJbm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0CQkJT1BUSU9OQUwKK30KKworRXZlbnQyZS1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzSW50ZXJGcmVxLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMLAorCW5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdAkJCU5vblVzZWRGcmVxUGFyYW1ldGVyTGlzdC1yNgkJCU9QVElPTkFMCit9CisKK0V2ZW50MmYgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl1c2VkRnJlcVRocmVzaG9sZAkJCQkJVGhyZXNob2xkLAorCXVzZWRGcmVxVwkJCQkJCQlXLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpc0ludGVyRnJlcSwKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQkKKworRXZlbnQyZi1yNiA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJdXNlZEZyZXFUaHJlc2hvbGQJCQkJCVRocmVzaG9sZC1yNiwKKwl1c2VkRnJlcVcJCQkJCQkJVywKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXNJbnRlckZyZXEsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworRXZlbnQzYSA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCXRocmVzaG9sZE93blN5c3RlbQkJCQkJVGhyZXNob2xkLAorCXcJCQkJCQkJCQlXLAorCXRocmVzaG9sZE90aGVyU3lzdGVtCQkJCVRocmVzaG9sZCwKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30JCisKK0V2ZW50M2IgOjo9CQkJCQkJCVNFUVVFTkNFIHsKKwl0aHJlc2hvbGRPdGhlclN5c3RlbQkJCQlUaHJlc2hvbGQsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCisJCit9CQorCitFdmVudDNjIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJdGhyZXNob2xkT3RoZXJTeXN0ZW0JCQkJVGhyZXNob2xkLAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQkKKworRXZlbnQzZCA6Oj0JCQkJCQkJU0VRVUVOQ0UgeworCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQkKKworRXZlbnRJREludGVyRnJlcSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTJhLCBlMmIsIGUyYywgZTJkLCBlMmUsIGUyZiwgc3BhcmUyLCBzcGFyZTEgfQorCitFdmVudElESW50ZXJSQVQgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllM2EsIGUzYiwgZTNjLCBlM2QgfQorCitFdmVudElESW50cmFGcmVxIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQllMWEsIGUxYiwgZTFjLCBlMWQsIGUxZSwKKwkJCQkJCQkJCQllMWYsIGUxZywgZTFoLCBlMWksIGUxaiwKKwkJCQkJCQkJCQlzcGFyZTYsIHNwYXJlNSwgc3BhcmU0LCBzcGFyZTMsIHNwYXJlMiwKKwkJCQkJCQkJCQlzcGFyZTEgfQorCitFdmVudFJlc3VsdHMgOjo9CQkJCQlDSE9JQ0UgeworCWludHJhRnJlcUV2ZW50UmVzdWx0cwkJCQlJbnRyYUZyZXFFdmVudFJlc3VsdHMsCisJaW50ZXJGcmVxRXZlbnRSZXN1bHRzCQkJCUludGVyRnJlcUV2ZW50UmVzdWx0cywKKwlpbnRlclJBVEV2ZW50UmVzdWx0cwkJCQlJbnRlclJBVEV2ZW50UmVzdWx0cywKKwl0cmFmZmljVm9sdW1lRXZlbnRSZXN1bHRzCQkJVHJhZmZpY1ZvbHVtZUV2ZW50UmVzdWx0cywKKwlxdWFsaXR5RXZlbnRSZXN1bHRzCQkJCQlRdWFsaXR5RXZlbnRSZXN1bHRzLAorCXVlLUludGVybmFsRXZlbnRSZXN1bHRzCQkJCVVFLUludGVybmFsRXZlbnRSZXN1bHRzLAorCXVlLXBvc2l0aW9uaW5nLU1lYXN1cmVtZW50RXZlbnRSZXN1bHRzCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMsCisJc3BhcmUJCQkJCQkJCU5VTEwKK30KKworRXh0cmFEb3BwbGVySW5mbyA6Oj0JCQkJU0VRVUVOQ0UgeworCS0tIEFjdHVhbCB2YWx1ZSBkb3BwbGVyMXN0T3JkZXIgPSBJRSB2YWx1ZSAqIDAuMDIzCisJZG9wcGxlcjFzdE9yZGVyCQkJCQkJSU5URUdFUiAoLTQyLi4yMSksCisJZG9wcGxlclVuY2VydGFpbnR5CQkJCQlEb3BwbGVyVW5jZXJ0YWludHkKK30KKworRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mbyA6Oj0JU0VRVUVOQ0UgeworCWZBQ0gtbWVhcy1vY2Nhc2lvbi1jb2VmZgkJCUlOVEVHRVIgKDEuLjEyKQkJCQkJCU9QVElPTkFMLAorCWludGVyLWZyZXEtRkRELW1lYXMtaW5kCQkJCUJPT0xFQU4sCisJLS0gaW50ZXItZnJlcS1UREQtbWVhcy1pbmQgaXMgZm9yIDMuODRNY3BzIFRERCBhbmQgNy42OCBNY3BzIFRERC4gRm9yIDEuMjhNY3BzIFRERCwgdGhlIElFIGluCisJLS0gRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mby1MQ1ItcjQtZXh0IGlzIHVzZWQuCisJaW50ZXItZnJlcS1UREQtbWVhcy1pbmQJCQkJQk9PTEVBTiwKKwlpbnRlci1SQVQtbWVhcy1pbmQJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVCkpIE9GCisJCQkJCQkJCQkJCVJBVC1UeXBlCQkJCQkJT1BUSU9OQUwKK30KKworRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mby1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSB7CisJaW50ZXItZnJlcS1UREQxMjgtbWVhcy1pbmQJCQkJCUJPT0xFQU4KK30KKworRmlsdGVyQ29lZmZpY2llbnQgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWZjMCwgZmMxLCBmYzIsIGZjMywgZmM0LCBmYzUsIAorCQkJCQkJCQkJCWZjNiwgZmM3LCBmYzgsIGZjOSwgZmMxMSwgZmMxMywgCisJCQkJCQkJCQkJZmMxNSwgZmMxNywgZmMxOSwgc3BhcmUxIH0KKworLS0gQWN0dWFsIHZhbHVlIEZpbmVTRk4tU0ZOID0gSUUgdmFsdWUgKiAwLjA2MjUKK0ZpbmVTRk4tU0ZOIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE1KQorCitGb3JiaWRkZW5BZmZlY3RDZWxsIDo6PQkJCQlDSE9JQ0UgeworCWZkZAkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCXRkZAkJCQkJCQkJCVByaW1hcnlDQ1BDSC1JbmZvCit9CisKK0ZvcmJpZGRlbkFmZmVjdENlbGwtcjQgOjo9CQkJQ0hPSUNFIHsKKwlmZGQJCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1yNAorfQorCitGb3JiaWRkZW5BZmZlY3RDZWxsLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwl0ZGQJCQkJCQkJCQlQcmltYXJ5Q0NQQ0gtSW5mby1MQ1ItcjQKK30KKworRm9yYmlkZGVuQWZmZWN0Q2VsbExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlGb3JiaWRkZW5BZmZlY3RDZWxsCisKK0ZvcmJpZGRlbkFmZmVjdENlbGxMaXN0LXI0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJRm9yYmlkZGVuQWZmZWN0Q2VsbC1yNAorCitGb3JiaWRkZW5BZmZlY3RDZWxsTGlzdC1MQ1ItcjQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJRm9yYmlkZGVuQWZmZWN0Q2VsbC1MQ1ItcjQKKworRnJlcVF1YWxpdHlFc3RpbWF0ZVF1YW50aXR5LUZERCA6Oj0gRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY3BpY2gtRWMtTjAsCisJCQkJCQkJCQkJY3BpY2gtUlNDUCB9CisKK0ZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1UREQgOjo9IEVOVU1FUkFURUQgeworCQkJCQkJCQkJCXByaW1hcnlDQ1BDSC1SU0NQIH0KKworR1BTLU1lYXN1cmVtZW50UGFyYW0gOjo9CQkJU0VRVUVOQ0UgeworCXNhdGVsbGl0ZUlECQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwljLU4wCQkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJZG9wcGxlcgkJCQkJCQkJSU5URUdFUiAoLTMyNzY4Li4zMjc2OCksCisJd2hvbGVHUFMtQ2hpcHMJCQkJCQlJTlRFR0VSICgwLi4xMDIyKSwKKwlmcmFjdGlvbmFsR1BTLUNoaXBzCQkJCQlJTlRFR0VSICgwLi4xMDIzKSwKKwltdWx0aXBhdGhJbmRpY2F0b3IJCQkJCU11bHRpcGF0aEluZGljYXRvciwKKwlwc2V1ZG9yYW5nZVJNUy1FcnJvcgkJCQlJTlRFR0VSICgwLi42MykKK30KKworR1BTLU1lYXN1cmVtZW50UGFyYW1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNhdCkpIE9GCisJCQkJCQkJCQkJR1BTLU1lYXN1cmVtZW50UGFyYW0KKworR1NNLUNhcnJpZXJSU1NJIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoNikpCisKKworR1NNLU1lYXN1cmVkUmVzdWx0cyA6Oj0gCQkJU0VRVUVOQ0UgeworCWdzbS1DYXJyaWVyUlNTSQkJCQkJCUdTTS1DYXJyaWVyUlNTSQkJCQkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlJTlRFR0VSICg0Ni4uMTczKQkJCQkJT1BUSU9OQUwsCisJYnNpY1JlcG9ydGVkCQkJCQkJQlNJQ1JlcG9ydGVkLAorCS0tIGR1bW15MiBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCS0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCBpdCBzaG91bGQgYmUgaWdub3JlZC4KKwlkdW1teTIJCQkJCQkJCU9ic2VydmVkVGltZURpZmZlcmVuY2VUb0dTTQkJCU9QVElPTkFMCit9CisKK0dTTS1NZWFzdXJlZFJlc3VsdHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSZXBvcnRlZEdTTUNlbGxzKSkgT0YKKwkJCQkJCQkJCQlHU00tTWVhc3VyZWRSZXN1bHRzCQorCitHUFMtVE9XLTFtc2VjIDo6PQkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5OTk5KQorCitHUFMtVE9XLUFzc2lzdCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlzYXRJRAkJCQkJCQkJU2F0SUQsCisJdGxtLU1lc3NhZ2UJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTQpKSwKKwl0bG0tUmVzZXJ2ZWQJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyKSksCisJYWxlcnQJCQkJCQkJCUJPT0xFQU4sCisJYW50aVNwb29mCQkJCQkJCUJPT0xFQU4KK30KKworR1BTLVRPVy1Bc3Npc3RMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U2F0KSkgT0YKKwkJCQkJCQkJCQlHUFMtVE9XLUFzc2lzdAorCitIQ1MtQ2VsbFJlc2VsZWN0SW5mb3JtYXRpb24tUlNDUCA6Oj0JCVNFUVVFTkNFIHsKKwktLSBUQUJVTEFSOiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgcGVuYWx0eVRpbWUgaXMgIm5vdFVzZWQiCisJLS0gVGVtcG9yYXJ5IG9mZnNldCBpcyBuZXN0ZWQgaW5zaWRlIFBlbmFsdHlUaW1lLVJTQ1AKKwlwZW5hbHR5VGltZQkJCQkJCQkJCVBlbmFsdHlUaW1lLVJTQ1AKK30KKworSENTLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uLUVDTjAgOjo9CQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHBlbmFsdHlUaW1lIGlzICJub3RVc2VkIgorCS0tIFRlbXBvcmFyeSBvZmZzZXQgaXMgbmVzdGVkIGluc2lkZSBQZW5hbHR5VGltZS1FQ04wCisJcGVuYWx0eVRpbWUJCQkJCQkJUGVuYWx0eVRpbWUtRUNOMAorfQorCitIQ1MtTmVpZ2hib3VyaW5nQ2VsbEluZm9ybWF0aW9uLVJTQ1AgOjo9IFNFUVVFTkNFIHsKKwloY3MtUFJJTwkJCQkJCQlIQ1MtUFJJTwkJCQkJCQlERUZBVUxUIDAsCisJcS1IQ1MJCQkJCQkJCVEtSENTCQkJCQkJCQlERUZBVUxUIDAsCisJaGNzLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uCQkJSENTLUNlbGxSZXNlbGVjdEluZm9ybWF0aW9uLVJTQ1AKK30KKworSENTLU5laWdoYm91cmluZ0NlbGxJbmZvcm1hdGlvbi1FQ04wIDo6PSBTRVFVRU5DRSB7CisJaGNzLVBSSU8JCQkJCQkJSENTLVBSSU8JCQkJCQkJREVGQVVMVCAwLAorCXEtSENTCQkJCQkJCQlRLUhDUwkJCQkJCQkJREVGQVVMVCAwLAorCWhjcy1DZWxsUmVzZWxlY3RJbmZvcm1hdGlvbgkJCUhDUy1DZWxsUmVzZWxlY3RJbmZvcm1hdGlvbi1FQ04wCit9CisKK0hDUy1QUklPIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjcpCisKK0hDUy1TZXJ2aW5nQ2VsbEluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCWhjcy1QUklPCQkJCQkJCUhDUy1QUklPCQkJCQkJCURFRkFVTFQgMCwKKwlxLUhDUwkJCQkJCQkJUS1IQ1MJCQkJCQkJCURFRkFVTFQgMCwKKwl0LUNSLU1heAkJCQkJCQlULUNSTWF4CQkJCQkJCQlPUFRJT05BTAorfQorCitIb3Jpem9udGFsVmVsb2NpdHkgOjo9CQkJCVNFUVVFTkNFIHsKKwliZWFyaW5nCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAorCWhvcml6b250YWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpCisJfQorCitIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHkgOjo9CVNFUVVFTkNFIHsKKwl2ZXJ0aWNhbFNwZWVkRGlyZWN0aW9uCQkJCUVOVU1FUkFURUQgeyB1cHdhcmQsIGRvd253YXJkIH0sCisJYmVhcmluZwkJCQkJCQkJSU5URUdFUiAoMC4uMzU5KSwKKwlob3Jpem9udGFsU3BlZWQJCQkJCQlJTlRFR0VSICgwLi4yMDQ3KSwKKwl2ZXJ0aWNhbFNwZWVkCQkJCQkJSU5URUdFUiAoMC4uMjU1KQorfQorCitIb3Jpem9udGFsVmVsb2NpdHlXaXRoVW5jZXJ0YWludHkgOjo9CVNFUVVFTkNFIHsKKwliZWFyaW5nCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAorCWhvcml6b250YWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpLAorCWhvcml6b250YWxTcGVlZFVuY2VydGFpbnR5CQkJSU5URUdFUiAoMC4uMjU1KQorfQorCitIb3Jpem9udGFsV2l0aFZlcnRpY2FsVmVsb2NpdHlBbmRVbmNlcnRhaW50eSA6Oj0JU0VRVUVOQ0UgeworCXZlcnRpY2FsU3BlZWREaXJlY3Rpb24JCQkJRU5VTUVSQVRFRCB7IHVwd2FyZCwgZG93bndhcmQgfSwKKwliZWFyaW5nCQkJCQkJCQlJTlRFR0VSICgwLi4zNTkpLAorCWhvcml6b250YWxTcGVlZAkJCQkJCUlOVEVHRVIgKDAuLjIwNDcpLAorCXZlcnRpY2FsU3BlZWQJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCWhvcml6b250YWxTcGVlZFVuY2VydGFpbnR5CQkJSU5URUdFUiAoMC4uMjU1KQorfQorCistLSBBY3R1YWwgdmFsdWUgSHlzdGVyZXNpcyA9IElFIHZhbHVlICogMC41CitIeXN0ZXJlc2lzIDo6PQkJCQkJCUlOVEVHRVIgKDAuLjE1KQorCistLSBBY3R1YWwgdmFsdWUgSHlzdGVyZXNpc0ludGVyRnJlcSA9IElFIHZhbHVlICogMC41CitIeXN0ZXJlc2lzSW50ZXJGcmVxIDo6PQkJCQlJTlRFR0VSICgwLi4yOSkKKworSW50ZXJGcmVxQ2VsbCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbywKKwlub25GcmVxUmVsYXRlZEV2ZW50UmVzdWx0cwkJCUNlbGxNZWFzdXJlbWVudEV2ZW50UmVzdWx0cworfQorCitJbnRlckZyZXFDZWxsLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8sCisJbm9uRnJlcVJlbGF0ZWRFdmVudFJlc3VsdHMJCQlDZWxsTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMtTENSLXI0Cit9CisKK0ludGVyRnJlcUNlbGxJRCA6Oj0JCQkJCUlOVEVHRVIgKDAuLm1heENlbGxNZWFzLTEpCisKK0ludGVyRnJlcUNlbGxJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJT1BUSU9OQUwsCisJY2VsbHNGb3JJbnRlckZyZXFNZWFzTGlzdAkJCUNlbGxzRm9ySW50ZXJGcmVxTWVhc0xpc3QJCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFDZWxsSW5mb0xpc3QtcjQgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbExpc3QtcjQJCQkJT1BUSU9OQUwsCisJY2VsbHNGb3JJbnRlckZyZXFNZWFzTGlzdAkJCUNlbGxzRm9ySW50ZXJGcmVxTWVhc0xpc3QJCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1SU0NQCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1FQ04wCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AJT1BUSU9OQUwKK30KK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtRUNOMAlPUFRJT05BTAorfQorCitJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUC1MQ1IgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtUlNDUC1MQ1ItcjQJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wLUxDUiA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1FQ04wLUxDUi1yNAkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUiA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRlckZyZXFDZWxsTGlzdAkJCQlOZXdJbnRlckZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUC1MQ1ItcjQJT1BUSU9OQUwKK30KK0ludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMC1MQ1IgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludGVyRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50ZXJGcmVxQ2VsbExpc3QJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAtTENSLXI0CU9QVElPTkFMCit9CisKK0ludGVyRnJlcUNlbGxMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCisJCQkJCQkJCQkJSW50ZXJGcmVxQ2VsbAorCitJbnRlckZyZXFDZWxsTGlzdC1MQ1ItcjQtZXh0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCisJCQkJCQkJCQkJSW50ZXJGcmVxQ2VsbC1MQ1ItcjQKKworSW50ZXJGcmVxQ2VsbE1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJQ2VsbE1lYXN1cmVkUmVzdWx0cworCitJbnRlckZyZXFFdmVudCA6Oj0JCQkJCUNIT0lDRSB7CisJZXZlbnQyYQkJCQkJCQkJRXZlbnQyYSwKKwlldmVudDJiCQkJCQkJCQlFdmVudDJiLAorCWV2ZW50MmMJCQkJCQkJCUV2ZW50MmMsCisJZXZlbnQyZAkJCQkJCQkJRXZlbnQyZCwKKwlldmVudDJlCQkJCQkJCQlFdmVudDJlLAorCWV2ZW50MmYJCQkJCQkJCUV2ZW50MmYKK30KKworSW50ZXJGcmVxRXZlbnQtcjYgOjo9CQkJCUNIT0lDRSB7CisJZXZlbnQyYQkJCQkJCQkJRXZlbnQyYS1yNiwKKwlldmVudDJiCQkJCQkJCQlFdmVudDJiLXI2LAorCWV2ZW50MmMJCQkJCQkJCUV2ZW50MmMtcjYsCisJZXZlbnQyZAkJCQkJCQkJRXZlbnQyZC1yNiwKKwlldmVudDJlCQkJCQkJCQlFdmVudDJlLXI2LAorCWV2ZW50MmYJCQkJCQkJCUV2ZW50MmYtcjYKK30KKworSW50ZXJGcmVxRXZlbnRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFFdmVudAorCitJbnRlckZyZXFFdmVudExpc3QtcjYgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCisJCQkJCQkJCQkJSW50ZXJGcmVxRXZlbnQtcjYKKworLS1Gb2xsb3dpbmcgSUUgc2hhbGwgYmUgdXNlZCByZWdhcmRsZXNzIG9mIENQSUNIIFJTQ1AoRkREKSBvciBQcmltYXJ5IENDUENIIFJTQ1AoVEREKQorLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIHRoZSBjZWxscyBpbiBJbnRlckZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QKKy0tVGhlIElFIGlzIG9ubHkgdXNlZCBmb3IgbWVhc3VyZWQgcmVzdWx0cyBhbmQgbm90IGZvciBhZGRpdGlvbmFsIG1lYXN1cmVkIHJlc3VsdHMuCitJbnRlckZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCURlbHRhUlNDUFBlckNlbGwKKworSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWEtdjU5MGV4dCA6Oj0gU0VRVUVOQ0UgeworCXRocmVob2xkVXNlZEZyZXF1ZW5jeS1kZWx0YQkJCQlEZWx0YVJTQ1AsCisJdGhyZWhvbGROb25Vc2VkRnJlcXVlbmN5LWRlbHRhTGlzdAkJVGhyZWhvbGROb25Vc2VkRnJlcXVlbmN5LWRlbHRhTGlzdCAgCU9QVElPTkFMCit9CisKKy0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiB0aGUgZXZlbnRzIGluIEludGVyLUZyZXFFdmVudExpc3QKK0ludGVyLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQkJSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWEtdjU5MGV4dAorCistLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgcmVsZXZhbnQgZXZlbnRzIGluIEludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdAorLS1pLmUuIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCBvY2N1cmFuY2Ugb2YgZXZlbnQgMWUsIDFmLCAxaCwgMWksCistLXRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgc2Vjb25kIG9jY3VyYW5jZSBvZiBldmVudCAxZSwgMWYsIDFoLCAxaSAKK0ludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQkJRGVsdGFSU0NQCisKKy0tRm9sbG93aW5nIElFIHNoYWxsIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBDUElDSCBSU0NQKEZERCkgb3IgUHJpbWFyeSBDQ1BDSCBSU0NQKFRERCkKKy0tVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiB0aGUgY2VsbHMgaW4gSW50cmFGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0CistLVRoZSBJRSBpcyBvbmx5IHVzZWQgZm9yIG1lYXN1cmVkIHJlc3VsdHMgYW5kIG5vdCBmb3IgYWRkaXRpb25hbCBtZWFzdXJlZCByZXN1bHRzLgorSW50cmFGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0LXY1OTBleHQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCQlEZWx0YVJTQ1BQZXJDZWxsCisKK0ludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1IDo6PSBTRVFVRU5DRSB7CisJcGVyaW9kaWNSZXBvcnRpbmdJbmZvLTFiCQkJUGVyaW9kaWNSZXBvcnRpbmdJbmZvLTFiCit9CisKK1BlcmlvZGljUmVwb3J0aW5nSW5mby0xYiA6Oj0gU0VRVUVOQ0UgeworCXJlcG9ydGluZ0Ftb3VudAkJCQkJCVJlcG9ydGluZ0Ftb3VudCwKKwlyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWwKK30KKworSW50ZXJGcmVxRXZlbnRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKKwlldmVudElECQkJCQkJCQlFdmVudElESW50ZXJGcmVxLAorCWludGVyRnJlcUNlbGxMaXN0CQkJCQlJbnRlckZyZXFDZWxsTGlzdAkJCQkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxRXZlbnRSZXN1bHRzLUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwlldmVudElECQkJCQkJCQlFdmVudElESW50ZXJGcmVxLAorCWludGVyRnJlcUNlbGxMaXN0CQkJCQlJbnRlckZyZXFDZWxsTGlzdC1MQ1ItcjQtZXh0CQlPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzUXVhbnRpdHkgOjo9CQkJU0VRVUVOQ0UgeworCXJlcG9ydGluZ0NyaXRlcmlhCQkJCQlDSE9JQ0UgeworCQlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCVNFUVVFTkNFIHsKKwkJCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkKKwkJfSwKKwkJaW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlTRVFVRU5DRSB7CisJCQlmaWx0ZXJDb2VmZmljaWVudAkJCQkJRmlsdGVyQ29lZmZpY2llbnQJCQlERUZBVUxUIGZjMCwKKwkJCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCQkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlmcmVxUXVhbGl0eUVzdGltYXRlUXVhbnRpdHktRkRECQlGcmVxUXVhbGl0eUVzdGltYXRlUXVhbnRpdHktRkRECisJCQkJfSwKKwkJCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1UREQJCUZyZXFRdWFsaXR5RXN0aW1hdGVRdWFudGl0eS1UREQKKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKK0ludGVyRnJlcU1lYXN1cmVkUmVzdWx0cyA6Oj0JCVNFUVVFTkNFIHsKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCXV0cmEtQ2FycmllclJTU0kJCQkJCVVUUkEtQ2FycmllclJTU0kJCQkJCU9QVElPTkFMLAorCWludGVyRnJlcUNlbGxNZWFzdXJlZFJlc3VsdHNMaXN0CUludGVyRnJlcUNlbGxNZWFzdXJlZFJlc3VsdHNMaXN0CU9QVElPTkFMCit9CisKK0ludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGcmVxKSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFNZWFzdXJlZFJlc3VsdHMKKworCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUCA6Oj0JU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUAkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUVDTjAgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wIDo6PQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMAlPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QJCQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AtTENSCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50ZXJGcmVxQ2VsbEluZm9TSS1MaXN0LUVDTjAtTENSCQlPUFRJT05BTAorfQorCitJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLVJTQ1AtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludGVyRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtUlNDUC1MQ1IJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRlckZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLUVDTjAtTENSCU9QVElPTkFMCit9CisKK0ludGVyRnJlcVJBQ0hSZXBDZWxsc0xpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXEpKSBPRgorSW50ZXJGcmVxQ2VsbElECisKK0ludGVyRnJlcVJBQ0hSZXBvcnRpbmdJbmZvIDo6PSBTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILUZERAkJSW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILUZERAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtVERETGlzdAlJbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtVERETGlzdAorCQl9LAorCWludGVyRnJlcVJBQ0hSZXBvcnRpbmdUaHJlc2hvbGQJCVRocmVzaG9sZCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNIaW50ZXJGcmVxCQlNYXhSZXBvcnRlZENlbGxzT25SQUNIaW50ZXJGcmVxCisJfQorfQorCitJbnRlckZyZXFSZXBvcnRDcml0ZXJpYSA6Oj0JCQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEsCisJaW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYSwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsV2l0aFJlcG9ydGluZ0NlbGxTdGF0dXMsCisJbm9SZXBvcnRpbmcJCQkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1c09wdAorfQorCitJbnRlckZyZXFSZXBvcnRDcml0ZXJpYS1yNCA6Oj0JCUNIT0lDRSB7CisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNCwKKwlpbnRlckZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxXaXRoUmVwb3J0aW5nQ2VsbFN0YXR1cywKKwlub1JlcG9ydGluZwkJCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzT3B0Cit9CisKK0ludGVyRnJlcVJlcG9ydENyaXRlcmlhLXI2IDo6PQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYQkJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2LAorCWludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAorCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKK30KKworSW50ZXJGcmVxUmVwb3J0aW5nQ3JpdGVyaWEgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxRXZlbnRMaXN0CQkJCQlJbnRlckZyZXFFdmVudExpc3QJCQkJCU9QVElPTkFMCit9CisKK0ludGVyRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2IDo6PQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxRXZlbnRMaXN0CQkJCQlJbnRlckZyZXFFdmVudExpc3QtcjYJCQkJT1BUSU9OQUwKK30KKworSW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkgOjo9CQlTRVFVRU5DRSB7CisJdXRyYS1DYXJyaWVyLVJTU0kJCQkJCUJPT0xFQU4sCisJZnJlcXVlbmN5UXVhbGl0eUVzdGltYXRlCQkJQk9PTEVBTiwKKwlub25GcmVxUmVsYXRlZFF1YW50aXRpZXMJCQlDZWxsUmVwb3J0aW5nUXVhbnRpdGllcworfQorCitJbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtRkREIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljcGljaC1FY04wLCBjcGljaC1SU0NQIH0KKworSW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILVRERCA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGltZXNsb3RJU0NQLAorCQkJCQkJCQkJCXByaW1hcnlDQ1BDSC1SU0NQIH0KKworSW50ZXJGcmVxUmVwUXVhbnRpdHlSQUNILVRERExpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi4yKSkgT0YKKwkJCQkJCQkJCQlJbnRlckZyZXFSZXBRdWFudGl0eVJBQ0gtVERECisKK0ludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbEluZm9MaXN0CQkJCUludGVyRnJlcUNlbGxJbmZvTGlzdCwKKwlpbnRlckZyZXFNZWFzUXVhbnRpdHkJCQkJSW50ZXJGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwlpbnRlckZyZXFTZXRVcGRhdGUJCQkJCVVFLUF1dG9ub21vdXNVcGRhdGVNb2RlCQkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50ZXJGcmVxUmVwb3J0Q3JpdGVyaWEKK30KKworSW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudC1yNCA6Oj0JU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRlckZyZXFDZWxsSW5mb0xpc3QtcjQsCisJaW50ZXJGcmVxTWVhc1F1YW50aXR5CQkJCUludGVyRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludGVyRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJaW50ZXJGcmVxU2V0VXBkYXRlCQkJCQlVRS1BdXRvbm9tb3VzVXBkYXRlTW9kZQkJCQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUludGVyRnJlcVJlcG9ydENyaXRlcmlhLXI0Cit9CisKK0ludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjYgOjo9CVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSW5mb0xpc3QJCQkJSW50ZXJGcmVxQ2VsbEluZm9MaXN0LXI0LAorCWludGVyRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRlckZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50ZXJGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRlckZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAorCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAorCWludGVyRnJlcVNldFVwZGF0ZQkJCQkJVUUtQXV0b25vbW91c1VwZGF0ZU1vZGUJCQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRlckZyZXFSZXBvcnRDcml0ZXJpYS1yNgorfQorCitJbnRlclJBVC1UYXJnZXRDZWxsRGVzY3JpcHRpb24gOjo9CVNFUVVFTkNFIHsKKwl0ZWNobm9sb2d5U3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWJzaWMJCQkJCQkJCUJTSUMsCisJCQlmcmVxdWVuY3ktYmFuZAkJCQkJCUZyZXF1ZW5jeS1CYW5kLAorCQkJYmNjaC1BUkZDTgkJCQkJCQlCQ0NILUFSRkNOLAorCQkJbmNNb2RlCQkJCQkJCQlOQy1Nb2RlCQkJCU9QVElPTkFMCisJCX0sCisJCWlzLTIwMDAJCQkJCQkJCU5VTEwsCisJCXNwYXJlMgkJCQkJCQkJTlVMTCwKKwkJc3BhcmUxCQkJCQkJCQlOVUxMCisJfQorfQorCitJbnRlclJBVENlbGxJRCA6Oj0JCQkJSU5URUdFUiAoMC4ubWF4Q2VsbE1lYXMtMSkKKworSW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24gOjo9CQlJTlRFR0VSICgwLi4zKQorCitJbnRlclJBVENlbGxJbmZvTGlzdCA6Oj0JCQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyUkFUQ2VsbExpc3QJCQlSZW1vdmVkSW50ZXJSQVRDZWxsTGlzdCwKKwktLSBOT1RFOiBGdXR1cmUgcmV2aXNpb25zIG9mIGRlZGljYXRlZCBtZXNzYWdlcyBpbmNsdWRpbmcgSUUgbmV3SW50ZXJSQVRDZWxsTGlzdAorCS0tIHNob3VsZCB1c2UgYSBjb3JyZWN0ZWQgdmVyc2lvbiBvZiB0aGlzIElFCisJbmV3SW50ZXJSQVRDZWxsTGlzdAkJCQlOZXdJbnRlclJBVENlbGxMaXN0LAorCWNlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdAkJCUNlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdAkJCU9QVElPTkFMCit9CisKK0ludGVyUkFUQ2VsbEluZm9MaXN0LUIgOjo9CQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRlclJBVENlbGxMaXN0CQkJUmVtb3ZlZEludGVyUkFUQ2VsbExpc3QsCisJLS0gTk9URTogSUUgbmV3SW50ZXJSQVRDZWxsTGlzdCBzaG91bGQgYmUgb3B0aW9uYWwuICBIb3dldmVyLCBzeXN0ZW0gaW5mb3JtYXRpb24KKwktLSBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgdmVyc2lvbnMuICBIZW5jZSwgdGhpcyBjYW4gbm90IGJlIGNvcnJlY3RlZAorCW5ld0ludGVyUkFUQ2VsbExpc3QJCQkJTmV3SW50ZXJSQVRDZWxsTGlzdC1CCit9CisKK0ludGVyUkFUQ2VsbEluZm9MaXN0LXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50ZXJSQVRDZWxsTGlzdAkJCQkJUmVtb3ZlZEludGVyUkFUQ2VsbExpc3QsCisJbmV3SW50ZXJSQVRDZWxsTGlzdAkJCQkJCU5ld0ludGVyUkFUQ2VsbExpc3QJCQkJCU9QVElPTkFMLAorCWNlbGxzRm9ySW50ZXJSQVRNZWFzTGlzdAkJCQlDZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQlPUFRJT05BTAorfQorCitJbnRlclJBVENlbGxJbmZvTGlzdC1yNiA6Oj0JCQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludGVyUkFUQ2VsbExpc3QJCQkJCVJlbW92ZWRJbnRlclJBVENlbGxMaXN0LAorCW5ld0ludGVyUkFUQ2VsbExpc3QJCQkJCQlOZXdJbnRlclJBVENlbGxMaXN0CQkJCQlPUFRJT05BTCwKKwljZWxsc0ZvckludGVyUkFUTWVhc0xpc3QJCQkJQ2VsbHNGb3JJbnRlclJBVE1lYXNMaXN0CQkJT1BUSU9OQUwsCisJaW50ZXJSQVRDZWxsSW5mb0luZGljYXRpb24tcjYJCQlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCU9QVElPTkFMCit9CisKK0ludGVyUkFUQ2VsbEluZGl2aWR1YWxPZmZzZXQgOjo9CQkJSU5URUdFUiAoLTUwLi41MCkKKworSW50ZXJSQVRFdmVudCA6Oj0JCQkJQ0hPSUNFIHsKKwlldmVudDNhCQkJCQkJCQlFdmVudDNhLAorCWV2ZW50M2IJCQkJCQkJCUV2ZW50M2IsCisJZXZlbnQzYwkJCQkJCQkJRXZlbnQzYywKKwlldmVudDNkCQkJCQkJCQlFdmVudDNkCit9CisKK0ludGVyUkFURXZlbnRMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCUludGVyUkFURXZlbnQKKworSW50ZXJSQVRFdmVudFJlc3VsdHMgOjo9CQkJU0VRVUVOQ0UgeworCWV2ZW50SUQJCQkJCQkJCUV2ZW50SURJbnRlclJBVCwKKwljZWxsVG9SZXBvcnRMaXN0CQkJCQlDZWxsVG9SZXBvcnRMaXN0Cit9CisKK0ludGVyUkFUSW5mbyA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWdzbSB9CisKK0ludGVyUkFUSW5mby1yNiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlyYXQJCQkJCQkJCQlJbnRlclJBVEluZm8sCisJZ3NtLVRhcmdldENlbGxJbmZvTGlzdAkJCQlHU00tVGFyZ2V0Q2VsbEluZm9MaXN0CQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRNZWFzUXVhbnRpdHkgOjo9CQkJCVNFUVVFTkNFIHsKKwltZWFzUXVhbnRpdHlVVFJBTi1RdWFsaXR5RXN0aW1hdGUJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCU9QVElPTkFMLAorCXJhdFNwZWNpZmljSW5mbwkJCQkJCUNIT0lDRSB7CisJCWdzbQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQltZWFzdXJlbWVudFF1YW50aXR5CQkJCQkJTWVhc3VyZW1lbnRRdWFudGl0eUdTTSwKKwkJCWZpbHRlckNvZWZmaWNpZW50CQkJCQkJRmlsdGVyQ29lZmZpY2llbnQJCURFRkFVTFQgZmMwLAorCQkJYnNpYy1WZXJpZmljYXRpb25SZXF1aXJlZAkJCQlCU0lDLVZlcmlmaWNhdGlvblJlcXVpcmVkCisJCX0sCisJCWlzLTIwMDAJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0YWRkLUVjSW8JCQkJCQkJCUlOVEVHRVIgKDAuLjYzKSwKKwkJCXRjb21wLUVjSW8JCQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwkJCXNvZnRTbG9wZQkJCQkJCQkJSU5URUdFUiAoMC4uNjMpCQkJT1BUSU9OQUwsCisJCQlhZGRJbnRlcmNlcHQJCQkJCQkJSU5URUdFUiAoMC4uNjMpCQkJT1BUSU9OQUwKKwkJfQorCX0JCit9CisKK0ludGVyUkFUTWVhc3VyZWRSZXN1bHRzIDo6PQkJQ0hPSUNFIHsKKwlnc20JCQkJCQkJCQlHU00tTWVhc3VyZWRSZXN1bHRzTGlzdCwKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCitJbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhPdGhlclJBVC0xNikpIE9GCisJCQkJCQkJCQkJSW50ZXJSQVRNZWFzdXJlZFJlc3VsdHMKKworSW50ZXJSQVRNZWFzdXJlbWVudCA6Oj0JCQlTRVFVRU5DRSB7CisJaW50ZXJSQVRDZWxsSW5mb0xpc3QJCQkJSW50ZXJSQVRDZWxsSW5mb0xpc3QJCQkJT1BUSU9OQUwsCisJaW50ZXJSQVRNZWFzUXVhbnRpdHkJCQkJSW50ZXJSQVRNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eQkJCUludGVyUkFUUmVwb3J0aW5nUXVhbnRpdHkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50ZXJSQVRSZXBvcnRDcml0ZXJpYQorfQorCitJbnRlclJBVE1lYXN1cmVtZW50LXI0IDo6PQkJCVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvTGlzdAkJCQlJbnRlclJBVENlbGxJbmZvTGlzdC1yNAkJCQlPUFRJT05BTCwKKwlpbnRlclJBVE1lYXNRdWFudGl0eQkJCQlJbnRlclJBVE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5CQkJSW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRlclJBVFJlcG9ydENyaXRlcmlhCit9CisKK0ludGVyUkFUTWVhc3VyZW1lbnQtcjYgOjo9CQkJU0VRVUVOQ0UgeworCWludGVyUkFUQ2VsbEluZm9MaXN0CQkJCUludGVyUkFUQ2VsbEluZm9MaXN0LXI2CQkJCU9QVElPTkFMLAorCWludGVyUkFUTWVhc1F1YW50aXR5CQkJCUludGVyUkFUTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludGVyUkFUUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRlclJBVFJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUludGVyUkFUUmVwb3J0Q3JpdGVyaWEKK30KKworSW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8gOjo9CVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvTGlzdAkJCQlJbnRlclJBVENlbGxJbmZvTGlzdAkJCQlPUFRJT05BTAorfQorCitJbnRlclJBVE1lYXN1cmVtZW50U3lzSW5mby1CIDo6PQlTRVFVRU5DRSB7CisJaW50ZXJSQVRDZWxsSW5mb0xpc3QJCQkJSW50ZXJSQVRDZWxsSW5mb0xpc3QtQgkJCU9QVElPTkFMCit9CisKK0ludGVyUkFUUmVwb3J0Q3JpdGVyaWEgOjo9CQlDSE9JQ0UgeworCWludGVyUkFUUmVwb3J0aW5nQ3JpdGVyaWEJCQlJbnRlclJBVFJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxXaXRoUmVwb3J0aW5nQ2VsbFN0YXR1cywKKwlub1JlcG9ydGluZwkJCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzT3B0Cit9CQkJCisKK0ludGVyUkFUUmVwb3J0aW5nQ3JpdGVyaWEgOjo9IAlTRVFVRU5DRSB7CisJaW50ZXJSQVRFdmVudExpc3QJCQkJSW50ZXJSQVRFdmVudExpc3QJCQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRSZXBvcnRpbmdRdWFudGl0eSA6Oj0JU0VRVUVOQ0UgeworCXV0cmFuLUVzdGltYXRlZFF1YWxpdHkJCQkJQk9PTEVBTiwKKwlyYXRTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCQkJLS0gYW5kIHdoZW4gcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCWR1bW15CQkJCQkJCQlCT09MRUFOLAorCQkJZHVtbXkyCQkJCQkJCQlCT09MRUFOLAorCQkJZ3NtLUNhcnJpZXItUlNTSQkJCQkJQk9PTEVBTgorCQl9CisJfQorfQorCitJbnRyYUZyZXFDZWxsSUQgOjo9CQkJCQlJTlRFR0VSICgwLi5tYXhDZWxsTWVhcy0xKQorCitJbnRyYUZyZXFDZWxsSW5mb0xpc3QgOjo9CQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU9QVElPTkFMLAorCWNlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QJCQlDZWxsc0ZvckludHJhRnJlcU1lYXNMaXN0CQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxQ2VsbEluZm9MaXN0LXI0IDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxMaXN0LXI0CQkJCU9QVElPTkFMLAorCWNlbGxzRm9ySW50cmFGcmVxTWVhc0xpc3QJCQlDZWxsc0ZvckludHJhRnJlcU1lYXNMaXN0CQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AgOjo9CVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1SU0NQCit9CisKK0ludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUVDTjAKK30KKworSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQIDo6PQkJU0VRVUVOQ0UgeworCXJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCVJlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdAkJCU9QVElPTkFMLAorCW5ld0ludHJhRnJlcUNlbGxMaXN0CQkJCU5ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQCit9CisKK0ludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1IQ1MtRUNOMCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1IQ1MtRUNOMAorfQorCitJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtUlNDUC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1SU0NQLUxDUi1yNAorfQorCitJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJcmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJUmVtb3ZlZEludHJhRnJlcUNlbGxMaXN0CQkJT1BUSU9OQUwsCisJbmV3SW50cmFGcmVxQ2VsbExpc3QJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtRUNOMC1MQ1ItcjQKK30KKworSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1IQ1MtUlNDUC1MQ1ItcjQKK30KKworSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlyZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlSZW1vdmVkSW50cmFGcmVxQ2VsbExpc3QJCQlPUFRJT05BTCwKKwluZXdJbnRyYUZyZXFDZWxsTGlzdAkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1IQ1MtRUNOMC1MQ1ItcjQKK30KKworSW50cmFGcmVxRXZlbnQgOjo9CQkJCQlDSE9JQ0UgeworCWUxYQkJCQkJCQkJCUV2ZW50MWEsCisJZTFiCQkJCQkJCQkJRXZlbnQxYiwKKwllMWMJCQkJCQkJCQlFdmVudDFjLAorCWUxZAkJCQkJCQkJCU5VTEwsCisJZTFlCQkJCQkJCQkJRXZlbnQxZSwKKwllMWYJCQkJCQkJCQlFdmVudDFmLAorCWUxZwkJCQkJCQkJCU5VTEwsCisJZTFoCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeSwKKwllMWkJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5Cit9CisKK0ludHJhRnJlcUV2ZW50LXI0IDo6PQkJCQlDSE9JQ0UgeworCWUxYQkJCQkJCQkJCUV2ZW50MWEtcjQsCisJZTFiCQkJCQkJCQkJRXZlbnQxYi1yNCwKKwllMWMJCQkJCQkJCQlFdmVudDFjLAorCWUxZAkJCQkJCQkJCU5VTEwsCisJZTFlCQkJCQkJCQkJRXZlbnQxZSwKKwllMWYJCQkJCQkJCQlFdmVudDFmLAorCWUxZwkJCQkJCQkJCU5VTEwsCisJZTFoCQkJCQkJCQkJVGhyZXNob2xkVXNlZEZyZXF1ZW5jeSwKKwllMWkJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5Cit9CisKK0ludHJhRnJlcUV2ZW50LUxDUi1yNCA6Oj0JCQlDSE9JQ0UgeworCWUxYQkJCQkJCQkJCUV2ZW50MWEtTENSLXI0LAorCWUxYgkJCQkJCQkJCUV2ZW50MWItTENSLXI0LAorCWUxYwkJCQkJCQkJCUV2ZW50MWMsCisJZTFkCQkJCQkJCQkJTlVMTCwKKwllMWUJCQkJCQkJCQlFdmVudDFlLAorCWUxZgkJCQkJCQkJCUV2ZW50MWYsCisJZTFnCQkJCQkJCQkJTlVMTCwKKwllMWgJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LAorCWUxaQkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3kKK30KKworSW50cmFGcmVxRXZlbnQtcjYgOjo9CQkJCUNIT0lDRSB7CisJZTFhCQkJCQkJCQkJRXZlbnQxYS1yNCwKKwllMWIJCQkJCQkJCQlFdmVudDFiLXI0LAorCWUxYwkJCQkJCQkJCUV2ZW50MWMsCisJZTFkCQkJCQkJCQkJRXZlbnQxZCwKKwllMWUJCQkJCQkJCQlFdmVudDFlLXI2LAorCWUxZgkJCQkJCQkJCUV2ZW50MWYtcjYsCisJZTFnCQkJCQkJCQkJTlVMTCwKKwllMWgJCQkJCQkJCQlUaHJlc2hvbGRVc2VkRnJlcXVlbmN5LXI2LAorCWUxaQkJCQkJCQkJCVRocmVzaG9sZFVzZWRGcmVxdWVuY3ktcjYsCisJZTFqCQkJCQkJCQkJRXZlbnQxai1yNgorfQorCitJbnRyYUZyZXFFdmVudC0xZC1yNSA6Oj0JCVNFUVVFTkNFIHsKKwl0cmlnZ2VyaW5nQ29uZGl0aW9uCQkJCQlUcmlnZ2VyaW5nQ29uZGl0aW9uMglPUFRJT05BTCwKKwl1c2VDSU8JCQkJCQkJCUJPT0xFQU4JCQkJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcUV2ZW50Q3JpdGVyaWEgOjo9CQkJU0VRVUVOQ0UgeworCWV2ZW50CQkJCQkJCQlJbnRyYUZyZXFFdmVudCwKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYS1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlldmVudAkJCQkJCQkJSW50cmFGcmVxRXZlbnQtcjQsCisJaHlzdGVyZXNpcwkJCQkJCQlIeXN0ZXJlc2lzLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXMJCQkJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcUV2ZW50Q3JpdGVyaWEtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJZXZlbnQJCQkJCQkJCUludHJhRnJlcUV2ZW50LUxDUi1yNCwKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYS1yNiA6Oj0JU0VRVUVOQ0UgeworCWV2ZW50CQkJCQkJCQlJbnRyYUZyZXFFdmVudC1yNiwKKwloeXN0ZXJlc2lzCQkJCQkJCUh5c3RlcmVzaXMsCisJdGltZVRvVHJpZ2dlcgkJCQkJCVRpbWVUb1RyaWdnZXIsCisJcmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJUmVwb3J0aW5nQ2VsbFN0YXR1cwkJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhCisKK0ludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI0CisKK0ludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1lYXNFdmVudCkpIE9GCisJCQkJCQkJCQkJSW50cmFGcmVxRXZlbnRDcml0ZXJpYS1MQ1ItcjQKKworSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TWVhc0V2ZW50KSkgT0YKKwkJCQkJCQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhLXI2CisKK0ludHJhRnJlcUV2ZW50UmVzdWx0cyA6Oj0JCQlTRVFVRU5DRSB7CisJZXZlbnRJRAkJCQkJCQkJRXZlbnRJREludHJhRnJlcSwKKwljZWxsTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMJCQlDZWxsTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMKK30KKworSW50cmFGcmVxTWVhc1F1YW50aXR5IDo6PQkJCVNFUVVFTkNFIHsKKwlmaWx0ZXJDb2VmZmljaWVudAkJCQkJRmlsdGVyQ29lZmZpY2llbnQJCQkJCURFRkFVTFQgZmMwLAorCW1vZGVTcGVjaWZpY0luZm8gCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWludHJhRnJlcU1lYXNRdWFudGl0eS1GREQJCUludHJhRnJlcU1lYXNRdWFudGl0eS1GREQKKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpbnRyYUZyZXFNZWFzUXVhbnRpdHktVERETGlzdAlJbnRyYUZyZXFNZWFzUXVhbnRpdHktVERETGlzdAorCQl9CisJfQorfQorCistLSBJZiBJbnRyYUZyZXFNZWFzUXVhbnRpdHktRkREIGlzIHVzZWQgaW4gSW50ZXJSQVRNZWFzUXVhbnRpdHksIHRoZW4gb25seSAKKy0tIGNwaWNoLUVjLU4wIGFuZCBjcGljaC1SU0NQIGFyZSBhbGxvd2VkLgorLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKy0tIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCitJbnRyYUZyZXFNZWFzUXVhbnRpdHktRkREIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY3BpY2gtRWMtTjAsCisJCQkJCQkJCQkJY3BpY2gtUlNDUCwKKwkJCQkJCQkJCQlwYXRobG9zcywKKwkJCQkJCQkJCQlkdW1teSB9CisKKy0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCistLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorSW50cmFGcmVxTWVhc1F1YW50aXR5LVRERCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXByaW1hcnlDQ1BDSC1SU0NQLAorCQkJCQkJCQkJCXBhdGhsb3NzLAorCQkJCQkJCQkJCXRpbWVzbG90SVNDUCwKKwkJCQkJCQkJCQlkdW1teSB9CisKK0ludHJhRnJlcU1lYXNRdWFudGl0eS1URERMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4uNCkpIE9GCisJCQkJCQkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5LVRERAorCitJbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCUNlbGxNZWFzdXJlZFJlc3VsdHMKKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLVJTQ1AgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCisJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LVJTQ1AJCU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUVDTjAgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAorCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1FQ04wCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCisJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAorCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKKwlpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLVJTQ1AJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAorCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKKwlyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCisJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1FQ04wCU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLVJTQ1AtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJaW50cmFGcmVxTWVhc3VyZW1lbnRJRAkJCQlNZWFzdXJlbWVudElkZW50aXR5CQkJREVGQVVMVCAxLAorCWludHJhRnJlcUNlbGxJbmZvU0ktTGlzdAkJCUludHJhRnJlcUNlbGxJbmZvU0ktTGlzdC1SU0NQLUxDUi1yNAlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCisJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAorCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENILUxDUi1yNAkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKKwlpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtRUNOMC1MQ1ItcjQJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICU9QVElPTkFMLAorCW1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJTWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlPUFRJT05BTCwKKwlyZXBvcnRpbmdJbmZvRm9yQ2VsbERDSAkJCQlSZXBvcnRpbmdJbmZvRm9yQ2VsbERDSC1MQ1ItcjQJCU9QVElPTkFMCit9CisKK0ludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlbWVudElECQkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDEsCisJaW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0CQkJSW50cmFGcmVxQ2VsbEluZm9TSS1MaXN0LUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eUZvclJBQ0gJT1BUSU9OQUwsCisJbWF4UmVwb3J0ZWRDZWxsc09uUkFDSAkJCQlNYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU9QVElPTkFMLAorCXJlcG9ydGluZ0luZm9Gb3JDZWxsRENICQkJCVJlcG9ydGluZ0luZm9Gb3JDZWxsRENILUxDUi1yNAkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1FQ04wLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcU1lYXN1cmVtZW50SUQJCQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgMSwKKwlpbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QJCQlJbnRyYUZyZXFDZWxsSW5mb1NJLUxpc3QtSENTLUVDTjAtTENSLXI0CU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNICUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5Rm9yUkFDSAlPUFRJT05BTCwKKwltYXhSZXBvcnRlZENlbGxzT25SQUNICQkJCU1heFJlcG9ydGVkQ2VsbHNPblJBQ0gJCQkJT1BUSU9OQUwsCisJcmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gJCQkJUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gtTENSLXI0CQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYSA6Oj0JCQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAorCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKK30KKworSW50cmFGcmVxUmVwb3J0Q3JpdGVyaWEtcjQgOjo9CQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjQsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAorCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKK30KKworSW50cmFGcmVxUmVwb3J0Q3JpdGVyaWEtcjYgOjo9CQlDSE9JQ0UgeworCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFdpdGhSZXBvcnRpbmdDZWxsU3RhdHVzLAorCW5vUmVwb3J0aW5nCQkJCQkJCVJlcG9ydGluZ0NlbGxTdGF0dXNPcHQKK30KKworSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEgOjo9CQlTRVFVRU5DRSB7CisJZXZlbnRDcml0ZXJpYUxpc3QJCQkJCUludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0CQlPUFRJT05BTAorfQorCitJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNCA6Oj0JU0VRVUVOQ0UgeworCWV2ZW50Q3JpdGVyaWFMaXN0CQkJCQlJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC1yNAlPUFRJT05BTAorfQorCitJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlldmVudENyaXRlcmlhTGlzdAkJCQkJSW50cmFGcmVxRXZlbnRDcml0ZXJpYUxpc3QtTENSLXI0CU9QVElPTkFMCit9CisKK0ludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLXI2IDo6PSBTRVFVRU5DRSB7CisJZXZlbnRDcml0ZXJpYUxpc3QJCQkJCUludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXI2CU9QVElPTkFMCit9CisKK0ludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5IDo6PQkJU0VRVUVOQ0UgeworCWFjdGl2ZVNldFJlcG9ydGluZ1F1YW50aXRpZXMJCUNlbGxSZXBvcnRpbmdRdWFudGl0aWVzLAorCW1vbml0b3JlZFNldFJlcG9ydGluZ1F1YW50aXRpZXMJCUNlbGxSZXBvcnRpbmdRdWFudGl0aWVzLAorCWRldGVjdGVkU2V0UmVwb3J0aW5nUXVhbnRpdGllcwkJQ2VsbFJlcG9ydGluZ1F1YW50aXRpZXMJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHlGb3JSQUNIIDo6PSBTRVFVRU5DRSB7CisJc2ZuLVNGTi1PVEQtVHlwZQkJCQkJU0ZOLVNGTi1PVEQtVHlwZSwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtRkRECQlJbnRyYUZyZXFSZXBRdWFudGl0eVJBQ0gtRkRECisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0CUludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0CisJCX0KKwl9Cit9CisKK0ludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1GREQgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWNwaWNoLUVjTjAsIGNwaWNoLVJTQ1AsIAorCQkJCQkJCQkJCXBhdGhsb3NzLCBub1JlcG9ydCB9CisKK0ludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1UREQgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRpbWVzbG90SVNDUCwKKwkJCQkJCQkJCQlwcmltYXJ5Q0NQQ0gtUlNDUCwKKwkJCQkJCQkJCQlub1JlcG9ydCB9CisKK0ludHJhRnJlcVJlcFF1YW50aXR5UkFDSC1URERMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4uMikpIE9GCisJCQkJCQkJCQkJSW50cmFGcmVxUmVwUXVhbnRpdHlSQUNILVRERAorCitJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50IDo6PQkJU0VRVUVOQ0UgeworCWludHJhRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRyYUZyZXFDZWxsSW5mb0xpc3QJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCUludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlJbnRyYUZyZXFSZXBvcnRDcml0ZXJpYQkJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LXI0IDo6PQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbEluZm9MaXN0CQkJCUludHJhRnJlcUNlbGxJbmZvTGlzdC1yNAkJCU9QVElPTkFMLAorCWludHJhRnJlcU1lYXNRdWFudGl0eQkJCQlJbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAorCW1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU1lYXN1cmVtZW50VmFsaWRpdHkJCQkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJSW50cmFGcmVxUmVwb3J0Q3JpdGVyaWEtcjQJCQlPUFRJT05BTAorfQorCitJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LXI2IDo6PQkJU0VRVUVOQ0UgeworCWludHJhRnJlcUNlbGxJbmZvTGlzdAkJCQlJbnRyYUZyZXFDZWxsSW5mb0xpc3QtcjQJCQlPUFRJT05BTCwKKwlpbnRyYUZyZXFNZWFzUXVhbnRpdHkJCQkJSW50cmFGcmVxTWVhc1F1YW50aXR5CQkJCU9QVElPTkFMLAorCWludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5CQkJSW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUludHJhRnJlcVJlcG9ydENyaXRlcmlhLXI2Cit9CisKK0lPREUgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKKworSVAtTGVuZ3RoIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWlwbDUsIGlwbDEwIH0KKworSVAtUENDUENILXI0IDo6PQkJCQkJQk9PTEVBTgorCitJUC1TcGFjaW5nIDo6PQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWU1LCBlNywgZTEwLCBlMTUsIGUyMCwKKwkJCQkJCQkJCQllMzAsIGU0MCwgZTUwIH0KKworSVAtU3BhY2luZy1UREQgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTMwLCBlNDAsIGU1MCwgZTcwLCBlMTAwfQorCitJUy0yMDAwU3BlY2lmaWNNZWFzSW5mbyA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlmcmVxdWVuY3ksIHRpbWVzbG90LCBjb2xvdXJjb2RlLAorCQkJCQkJCQkJCW91dHB1dHBvd2VyLCBwbi1PZmZzZXQgfQorCitNYXhOdW1iZXJPZlJlcG9ydGluZ0NlbGxzVHlwZTEgOjo9CUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWUxLCBlMiwgZTMsIGU0LCBlNSwgZTZ9CisKK01heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMiA6Oj0JRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMn0KKworTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUzIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czEsCisJCQkJCQkJCQkJdmlhY3RDZWxsc1BsdXMyLAorCQkJCQkJCQkJCXZpYWN0Q2VsbHNQbHVzMywKKwkJCQkJCQkJCQl2aWFjdENlbGxzUGx1czQsCisJCQkJCQkJCQkJdmlhY3RDZWxsc1BsdXM1LAorCQkJCQkJCQkJCXZpYWN0Q2VsbHNQbHVzNiB9CisKK01heFJlcG9ydGVkQ2VsbHNPblJBQ0ggOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9SZXBvcnQsCisJCQkJCQkJCQkJY3VycmVudENlbGwsCisJCQkJCQkJCQkJY3VycmVudEFuZC0xLUJlc3ROZWlnaGJvdXIsCisJCQkJCQkJCQkJY3VycmVudEFuZC0yLUJlc3ROZWlnaGJvdXIsCisJCQkJCQkJCQkJY3VycmVudEFuZC0zLUJlc3ROZWlnaGJvdXIsCisJCQkJCQkJCQkJY3VycmVudEFuZC00LUJlc3ROZWlnaGJvdXIsCisJCQkJCQkJCQkJY3VycmVudEFuZC01LUJlc3ROZWlnaGJvdXIsCisJCQkJCQkJCQkJY3VycmVudEFuZC02LUJlc3ROZWlnaGJvdXIgfQorCitNYXhSZXBvcnRlZENlbGxzT25SQUNIaW50ZXJGcmVxIDo6PQkJSU5URUdFUiAoMS4uOCkKKworTWVhc3VyZWRSZXN1bHRzIDo6PQkJCQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0LAorCWludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJaW50ZXJSQVRNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QsCisJdHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QJVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJcXVhbGl0eU1lYXN1cmVkUmVzdWx0cwkJCQlRdWFsaXR5TWVhc3VyZWRSZXN1bHRzLAorCXVlLUludGVybmFsTWVhc3VyZWRSZXN1bHRzCQkJVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMsCisJdWUtcG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMsCisJc3BhcmUJCQkJCQkJCU5VTEwKK30KKworTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQgOjo9CQkJCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctTWVhc3VyZWRSZXN1bHRzLXYzOTBleHQJCQkJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cy12MzkwZXh0Cit9CisKKworTWVhc3VyZWRSZXN1bHRzLXY1OTBleHQgOjo9IENIT0lDRSB7CisJaW50cmFGcmVxdWVuY3lNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QtdjU5MGV4dCwKKwlpbnRlckZyZXF1ZW5jeU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyRnJlcXVlbmN5TWVhc3VyZWRSZXN1bHRzTGlzdC12NTkwZXh0Cit9CisKK01lYXN1cmVkUmVzdWx0cy12N3h5ZXh0IDo6PSBDSE9JQ0UgeworCXVlSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMJCVVFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzLXI3Cit9CisKK01lYXN1cmVkUmVzdWx0cy1MQ1ItcjQgOjo9CQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRyYUZyZXFNZWFzdXJlZFJlc3VsdHNMaXN0LAorCWludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QJCUludGVyRnJlcU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJaW50ZXJSQVRNZWFzdXJlZFJlc3VsdHNMaXN0CQlJbnRlclJBVE1lYXN1cmVkUmVzdWx0c0xpc3QsCisJdHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QJVHJhZmZpY1ZvbHVtZU1lYXN1cmVkUmVzdWx0c0xpc3QsCisJcXVhbGl0eU1lYXN1cmVkUmVzdWx0cwkJCQlRdWFsaXR5TWVhc3VyZWRSZXN1bHRzLAorCXVlLUludGVybmFsTWVhc3VyZWRSZXN1bHRzCQkJVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtTENSLXI0LAorCXVlLXBvc2l0aW9uaWluZy1NZWFzdXJlZFJlc3VsdHMJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cywKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCitNZWFzdXJlZFJlc3VsdHNMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4QWRkaXRpb25hbE1lYXMpKSBPRgorCQkJCQkJCQkJCU1lYXN1cmVkUmVzdWx0cworCitNZWFzdXJlZFJlc3VsdHNMaXN0LUxDUi1yNC1leHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhBZGRpdGlvbmFsTWVhcykpIE9GCisJCQkJCQkJCQkJTWVhc3VyZWRSZXN1bHRzLUxDUi1yNAorCitNZWFzdXJlZFJlc3VsdHNPblJBQ0ggOjo9CQkJU0VRVUVOQ0UgeworCWN1cnJlbnRDZWxsIAkJCQkJCVNFUVVFTkNFIHsKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQltZWFzdXJlbWVudFF1YW50aXR5CQkJCQlDSE9JQ0UgeworCQkJCQljcGljaC1FYy1OMAkJCQkJCQlDUElDSC1FYy1OMCwKKwkJCQkJY3BpY2gtUlNDUAkJCQkJCQlDUElDSC1SU0NQLAorCQkJCQlwYXRobG9zcwkJCQkJCQlQYXRobG9zcywKKwkJCQkJc3BhcmUJCQkJCQkJCU5VTEwgCisJCQkJfQorCQkJfSwKKwkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQktLSBGb3IgMy44NCBNY3BzIGFuZCA3LjY4IE1jcHMgVEREICAgLS0KKwkJCQl0aW1lc2xvdElTQ1AJCQkJCQlUaW1lc2xvdElTQ1AtTGlzdAkJT1BUSU9OQUwsCisJCQkJcHJpbWFyeUNDUENILVJTQ1AJCQkJCVByaW1hcnlDQ1BDSC1SU0NQCQlPUFRJT05BTAorCQkJfQorCQl9CisJfSwKKwltb25pdG9yZWRDZWxscwkJCQkJCU1vbml0b3JlZENlbGxSQUNILUxpc3QJCQkJT1BUSU9OQUwKK30KKworTWVhc3VyZWRSZXN1bHRzT25SQUNIaW50ZXJGcmVxIDo6PQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJbmRpY2F0aW9uLVNJQjExCQkJSU5URUdFUiAoMC4uMSksCisJaW50ZXJGcmVxQ2VsbEluZGljYXRpb24tU0lCMTIJCQlJTlRFR0VSICgwLi4xKSwKKwlpbnRlckZyZXFSQUNIUmVwQ2VsbHNMaXN0CQkJCUludGVyRnJlcVJBQ0hSZXBDZWxsc0xpc3QKK30KKworTWVhc3VyZW1lbnRDb21tYW5kIDo6PQkJCQlDSE9JQ0UgeworCXNldHVwCQkJCQkJCQlNZWFzdXJlbWVudFR5cGUsCisJbW9kaWZ5CQkJCQkJCQlTRVFVRU5DRSB7CisJCW1lYXN1cmVtZW50VHlwZQkJCQkJCU1lYXN1cmVtZW50VHlwZQkJCQkJT1BUSU9OQUwKKwl9LAorCXJlbGVhc2UJCQkJCQkJCU5VTEwKK30KKworTWVhc3VyZW1lbnRDb21tYW5kLXI0IDo6PQkJCUNIT0lDRSB7CisJc2V0dXAJCQkJCQkJCU1lYXN1cmVtZW50VHlwZS1yNCwKKwltb2RpZnkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJbWVhc3VyZW1lbnRUeXBlCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI0CQkJCU9QVElPTkFMCisJfSwKKwlyZWxlYXNlCQkJCQkJCQlOVUxMCit9CisKK01lYXN1cmVtZW50Q29tbWFuZC1yNiA6Oj0JCQlDSE9JQ0UgeworCXNldHVwCQkJCQkJCQlNZWFzdXJlbWVudFR5cGUtcjYsCisJbW9kaWZ5CQkJCQkJCQlTRVFVRU5DRSB7CisJCW1lYXN1cmVtZW50VHlwZQkJCQkJCU1lYXN1cmVtZW50VHlwZS1yNgkJCQlPUFRJT05BTAorCX0sCisJcmVsZWFzZQkJCQkJCQkJTlVMTAorfQorCitNZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvIDo6PQkJU0VRVUVOQ0UgeworCS0tIENIT0lDRSBjZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUgcmVwcmVzZW50cyBQQ0NQQ0gtUlNDUCBpbiBUREQgbW9kZS4KKwl1c2Utb2YtSENTCQkJCQkJCUNIT0lDRQl7CisJCWhjcy1ub3QtdXNlZCAJCQkJCVNFUVVFTkNFCXsKKwkJCWNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZQlDSE9JQ0UJeworCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJeworCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tUlNDUAlPUFRJT05BTCwKKwkJCQkJaW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCQkJSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLVJTQ1AJT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNwaWNoLUVjLU4wCQkJCVNFUVVFTkNFCXsKKwkJCQkJaW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCQkJSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUVDTjAJCU9QVElPTkFMLAorCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMAlPUFRJT05BTAorCQkJCX0KKwkJCX0sCisJCQlpbnRlclJBVE1lYXN1cmVtZW50U3lzSW5mbwkJSW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8tQgkJT1BUSU9OQUwKKwkJfSwKKwkJaGNzLXVzZWQJCQkJCQlTRVFVRU5DRQl7CisJCQljZWxsU2VsZWN0UXVhbGl0eU1lYXN1cmUJQ0hPSUNFCXsKKwkJCQljcGljaC1SU0NQCQkJCVNFUVVFTkNFCXsKKwkJCQkJaW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCQkJSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQCQkJT1BUSU9OQUwsCisJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUAkJCU9QVElPTkFMCisJCQkJfSwKKwkJCQljcGljaC1FYy1OMAkJCQlTRVFVRU5DRQl7CisJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwkJCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMAkJCU9QVElPTkFMLAorCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JCQlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAJCQlPUFRJT05BTAkJCQl9CisJCQl9LAorCQkJaW50ZXJSQVRNZWFzdXJlbWVudFN5c0luZm8JCUludGVyUkFUTWVhc3VyZW1lbnRTeXNJbmZvCQlPUFRJT05BTAorCQl9CisJfSwKKworCXRyYWZmaWNWb2x1bWVNZWFzU3lzSW5mbwkJCVRyYWZmaWNWb2x1bWVNZWFzU3lzSW5mbwkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uIGFuZCBpdCBzaGFsbCBiZSBpZ25vcmVkIGJ5IHRoZSBVRS4KKwlkdW1teQkJVUUtSW50ZXJuYWxNZWFzdXJlbWVudFN5c0luZm8JCU9QVElPTkFMCit9CisKK01lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSLXI0LWV4dCA6Oj0JU0VRVUVOQ0UgeworCS0tIENIT0lDRSB1c2Utb2YtSENTIHNoYWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHVzZS1vZi1IQ1MKKwktLSBpbiBNZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvCisJLS0gQ0hPSUNFIGNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZSByZXByZXNlbnRzIFBDQ1BDSC1SU0NQIGluIFRERCBtb2RlLgorCXVzZS1vZi1IQ1MJCQkJCQkJQ0hPSUNFCXsKKwkJaGNzLW5vdC11c2VkIAkJCQkJU0VRVUVOQ0UJeworCQkJLS0gQ0hPSUNFIGNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZSBzaGFsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQorCQkJLS0gY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIGluIE1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8KKwkJCWNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZQlDSE9JQ0UJeworCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJeworCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLVJTQ1AtTENSLXI0CU9QVElPTkFMLAorCQkJCQlpbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLVJTQ1AtTENSLXI0CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcGljaC1FYy1OMAkJCQlTRVFVRU5DRQl7CisJCQkJCWludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMC1MQ1ItcjQJT1BUSU9OQUwsCisJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tRUNOMC1MQ1ItcjQJT1BUSU9OQUwKKwkJCQl9CisJCQl9CisJCX0sCisJCWhjcy11c2VkCQkJCQkJU0VRVUVOQ0UJeworCQkJLS0gQ0hPSUNFIGNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZSBzaGFsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQorCQkJLS0gY2VsbFNlbGVjdFF1YWxpdHlNZWFzdXJlIGluIE1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8KKwkJCWNlbGxTZWxlY3RRdWFsaXR5TWVhc3VyZQlDSE9JQ0UJeworCQkJCWNwaWNoLVJTQ1AJCQkJU0VRVUVOQ0UJeworCQkJCQlpbnRyYUZyZXFNZWFzdXJlbWVudFN5c0luZm8JSW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvLUhDUy1SU0NQLUxDUi1yNAlPUFRJT05BTCwKKwkJCQkJaW50ZXJGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCUludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtUlNDUC1MQ1ItcjQJT1BUSU9OQUwKKwkJCQl9LAorCQkJCWNwaWNoLUVjLU4wCQkJCVNFUVVFTkNFCXsKKwkJCQkJaW50cmFGcmVxTWVhc3VyZW1lbnRTeXNJbmZvCUludHJhRnJlcU1lYXN1cmVtZW50U3lzSW5mby1IQ1MtRUNOMC1MQ1ItcjQJT1BUSU9OQUwsCisJCQkJCWludGVyRnJlcU1lYXN1cmVtZW50U3lzSW5mbwlJbnRlckZyZXFNZWFzdXJlbWVudFN5c0luZm8tSENTLUVDTjAtTENSLXI0CU9QVElPTkFMCisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCitNZWFzdXJlbWVudElkZW50aXR5IDo6PQkJSU5URUdFUiAoMS4uMTYpCisKK01lYXN1cmVtZW50UXVhbnRpdHlHU00gOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZ3NtLUNhcnJpZXJSU1NJLAorCQkJCQkJCQkJCWR1bW15IH0KKworTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlIDo6PQkJU0VRVUVOQ0UgeworCW1lYXN1cmVtZW50UmVwb3J0VHJhbnNmZXJNb2RlCQlUcmFuc2Zlck1vZGUsCisJcGVyaW9kaWNhbE9yRXZlbnRUcmlnZ2VyCQkJUGVyaW9kaWNhbE9yRXZlbnRUcmlnZ2VyCit9CQorCitNZWFzdXJlbWVudFR5cGUgOjo9CQkJCQlDSE9JQ0UgeworCWludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50LAorCWludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQJCQlJbnRlckZyZXF1ZW5jeU1lYXN1cmVtZW50LAorCWludGVyUkFUTWVhc3VyZW1lbnQJCQkJCUludGVyUkFUTWVhc3VyZW1lbnQsCisJdWUtcG9zaXRpb25pbmctTWVhc3VyZW1lbnQJCQlVRS1Qb3NpdGlvbmluZy1NZWFzdXJlbWVudCwKKwl0cmFmZmljVm9sdW1lTWVhc3VyZW1lbnQJCQlUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnQsCisJcXVhbGl0eU1lYXN1cmVtZW50CQkJCQlRdWFsaXR5TWVhc3VyZW1lbnQsCisJdWUtSW50ZXJuYWxNZWFzdXJlbWVudAkJCQlVRS1JbnRlcm5hbE1lYXN1cmVtZW50Cit9CisKK01lYXN1cmVtZW50VHlwZS1yNCA6Oj0JCQkJQ0hPSUNFIHsKKwlpbnRyYUZyZXF1ZW5jeU1lYXN1cmVtZW50CQkJSW50cmFGcmVxdWVuY3lNZWFzdXJlbWVudC1yNCwKKwlpbnRlckZyZXF1ZW5jeU1lYXN1cmVtZW50CQkJSW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudC1yNCwKKwlpbnRlclJBVE1lYXN1cmVtZW50CQkJCQlJbnRlclJBVE1lYXN1cmVtZW50LXI0LAorCXVwLU1lYXN1cmVtZW50CQkJCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtcjQsCisJdHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50CQkJVHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50LAorCXF1YWxpdHlNZWFzdXJlbWVudAkJCQkJUXVhbGl0eU1lYXN1cmVtZW50LAorCXVlLUludGVybmFsTWVhc3VyZW1lbnQJCQkJVUUtSW50ZXJuYWxNZWFzdXJlbWVudC1yNAorfQorCitNZWFzdXJlbWVudFR5cGUtcjYgOjo9CQkJCUNIT0lDRSB7CisJaW50cmFGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludHJhRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjYsCisJaW50ZXJGcmVxdWVuY3lNZWFzdXJlbWVudAkJCUludGVyRnJlcXVlbmN5TWVhc3VyZW1lbnQtcjYsCisJaW50ZXJSQVRNZWFzdXJlbWVudAkJCQkJSW50ZXJSQVRNZWFzdXJlbWVudC1yNiwKKwl1cC1NZWFzdXJlbWVudAkJCQkJCVVFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXI0LAorCXRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudAkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudCwKKwlxdWFsaXR5TWVhc3VyZW1lbnQJCQkJCVF1YWxpdHlNZWFzdXJlbWVudCwKKwl1ZS1JbnRlcm5hbE1lYXN1cmVtZW50CQkJCVVFLUludGVybmFsTWVhc3VyZW1lbnQtcjQKK30KKworTWVhc3VyZW1lbnRWYWxpZGl0eSA6Oj0JCQkJU0VRVUVOQ0UgeworCXVlLVN0YXRlCQkJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCQljZWxsLURDSCwgYWxsLUJ1dC1DZWxsLURDSCwgYWxsLVN0YXRlcyB9Cit9CisKK01vbml0b3JlZENlbGxSQUNILUxpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjgpKSBPRgorCQkJCQkJCQkJCU1vbml0b3JlZENlbGxSQUNILVJlc3VsdAorCitNb25pdG9yZWRDZWxsUkFDSC1SZXN1bHQgOjo9CQlTRVFVRU5DRSB7CisJc2ZuLVNGTi1PYnNUaW1lRGlmZmVyZW5jZQkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJCQltZWFzdXJlbWVudFF1YW50aXR5CQkJCQlDSE9JQ0UgeworCQkJCWNwaWNoLUVjLU4wCQkJCQkJCUNQSUNILUVjLU4wLAorCQkJCWNwaWNoLVJTQ1AJCQkJCQkJQ1BJQ0gtUlNDUCwKKwkJCQlwYXRobG9zcwkJCQkJCQlQYXRobG9zcywKKwkJCQlzcGFyZQkJCQkJCQkJTlVMTAorCQkJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljZWxsUGFyYW1ldGVyc0lECQkJCQlDZWxsUGFyYW1ldGVyc0lELAorCQkJcHJpbWFyeUNDUENILVJTQ1AJCQkJCVByaW1hcnlDQ1BDSC1SU0NQCisJCX0KKwl9Cit9CisKK011bHRpcGF0aEluZGljYXRvciA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm0sCisJCQkJCQkJCQkJbG93LAorCQkJCQkJCQkJCW1lZGl1bSwKKwkJCQkJCQkJCQloaWdoIH0KKworTi1DUi1ULUNSTWF4SHlzdCA6Oj0JCQkJU0VRVUVOQ0UgeworCW4tQ1IJCQkJCQkJCUlOVEVHRVIgKDEuLjE2KQkJCQkJCURFRkFVTFQgOCwKKwl0LUNSTWF4SHlzdAkJCQkJCQlULUNSTWF4SHlzdAorfQorCitOYXZpZ2F0aW9uTW9kZWxTYXRJbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwlzYXRJRAkJCQkJCQkJU2F0SUQsCisJc2F0ZWxsaXRlU3RhdHVzCQkJCQkJU2F0ZWxsaXRlU3RhdHVzLAorCWVwaGVtZXJpc1BhcmFtZXRlcgkJCQkJRXBoZW1lcmlzUGFyYW1ldGVyCQlPUFRJT05BTAorfQorCitOYXZpZ2F0aW9uTW9kZWxTYXRJbmZvTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTYXQpKSBPRgorCQkJCQkJCQkJCU5hdmlnYXRpb25Nb2RlbFNhdEluZm8KKworRXBoZW1lcmlzUGFyYW1ldGVyIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwljb2RlT25MMgkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyKSksCisJdXJhSW5kZXgJCQkJCQkJQklUIFNUUklORyAoU0laRSAoNCkpLAorCXNhdEhlYWx0aAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg2KSksCisJaW9kYwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTApKSwKKwlsMlBmbGFnCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxKSksCisJc2YxUmV2ZAkJCQkJCQkJU3ViRnJhbWUxUmVzZXJ2ZWQsCisJdC1HRAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCXQtb2MJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJYWYyCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWFmMQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJYWYwCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjIpKSwKKwljLXJzCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpLAorCWRlbHRhLW4JCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJbTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAorCWMtdWMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJZQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSksCisJYy11cwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlhLVNxcnQJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSksCisJdC1vZQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKSwKKwlmaXRJbnRlcnZhbAkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxKSksCisJYW9kbwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoNSkpLAorCWMtaWMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJb21lZ2EwCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAorCWMtaXMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJaTAJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzMikpLAorCWMtcmMJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDE2KSksCisJb21lZ2EJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDMyKSksCisJb21lZ2FEb3QJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKKwlpRG90CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNCkpCit9CitOQy1Nb2RlIDo6PQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzKSkKKworTmVpZ2hib3VyIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbmVpZ2hib3VySWRlbnRpdHkJCQkJCVByaW1hcnlDUElDSC1JbmZvCQkJCQlPUFRJT05BTCwKKwkJCXVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTJJbmZvCVVFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVHlwZTJJbmZvCU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJbmVpZ2hib3VyQW5kQ2hhbm5lbElkZW50aXR5CQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCQlPUFRJT05BTAorCQl9CisJfSwJCisJbmVpZ2hib3VyUXVhbGl0eQkJCQkJTmVpZ2hib3VyUXVhbGl0eSwKKwlzZm4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMgkJCVNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UyfQorCitOZWlnaGJvdXItdjM5MGV4dCA6Oj0JCQkJCQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCisJCX0sCisJCXRkZAkJCQkJCQkJTlVMTAorCX0KK30KKworTmVpZ2hib3VyTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmVpZ2hib3VyCisKKy0tIFRoZSBvcmRlciBvZiB0aGUgY2VsbHMgaW4gSUUgTmVpZ2hib3VyTGlzdC12MzkwZXh0IHNoYWxsIGJlIHRoZQorLS0gc2FtZSBhcyB0aGUgb3JkZXIgaW4gSUUgTmVpZ2hib3VyTGlzdAorTmVpZ2hib3VyTGlzdC12MzkwZXh0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZWlnaGJvdXItdjM5MGV4dAorCitOZWlnaGJvdXJRdWFsaXR5IDo6PQkJCQlTRVFVRU5DRSB7CisJdWUtUG9zaXRpb25pbmctT1RET0EtUXVhbGl0eQkJVUUtUG9zaXRpb25pbmctT1RET0EtUXVhbGl0eQorfQorCitOZXdJbnRlckZyZXFDZWxsIDo6PQkJCQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mbworfQorCitOZXdJbnRlckZyZXFDZWxsLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mby1yNAorfQorCitOZXdJbnRlckZyZXFDZWxsTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGwKKworTmV3SW50ZXJGcmVxQ2VsbExpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRlckZyZXFDZWxsLXI0CisKK05ld0ludGVyRnJlcUNlbGxTSS1SU0NQIDo6PQkJCQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLVJTQ1AKK30KKworTmV3SW50ZXJGcmVxQ2VsbFNJLUVDTjAgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktRUNOMAorfQorCitOZXdJbnRlckZyZXFDZWxsU0ktSENTLVJTQ1AgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlckZyZXFDZWxsSUQJCQkJCQlJbnRlckZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLVJTQ1AKK30KKworTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1FQ04wIDo6PQkJCQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1FQ04wCit9CisKK05ld0ludGVyRnJlcUNlbGxTSS1SU0NQLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLVJTQ1AtTENSLXI0Cit9CisKK05ld0ludGVyRnJlcUNlbGxTSS1FQ04wLUxDUi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUVDTjAtTENSLXI0Cit9CisKK05ld0ludGVyRnJlcUNlbGxTSS1IQ1MtUlNDUC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50ZXJGcmVxQ2VsbElECQkJCQkJSW50ZXJGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1SU0NQLUxDUi1yNAorfQorCitOZXdJbnRlckZyZXFDZWxsU0ktSENTLUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgeworCWludGVyRnJlcUNlbGxJRAkJCQkJCUludGVyRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtRUNOMC1MQ1ItcjQKK30KKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtRUNOMCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1FQ04wCisKK05ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1SU0NQCisKK05ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJGcmVxQ2VsbFNJLUhDUy1FQ04wCisKK05ld0ludGVyRnJlcUNlbGxTSS1MaXN0LVJTQ1AgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1SU0NQCisKK05ld0ludGVyRnJlcUNlbGxTSS1MaXN0LUVDTjAtTENSLXI0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRlckZyZXFDZWxsU0ktRUNOMC1MQ1ItcjQKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1IQ1MtUlNDUC1MQ1ItcjQKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtSENTLUVDTjAtTENSLXI0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1IQ1MtRUNOMC1MQ1ItcjQKKworTmV3SW50ZXJGcmVxQ2VsbFNJLUxpc3QtUlNDUC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyRnJlcUNlbGxTSS1SU0NQLUxDUi1yNAorCitOZXdJbnRlclJBVENlbGwgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJRAkJCQkJCUludGVyUkFUQ2VsbElECQkJT1BUSU9OQUwsCisJdGVjaG5vbG9neVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQlnc20JCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljZWxsU2VsZWN0aW9uUmVzZWxlY3Rpb25JbmZvCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvU0lCLTExLTEyCQlPUFRJT05BTCwKKwkJCWludGVyUkFUQ2VsbEluZGl2aWR1YWxPZmZzZXQgCQlJbnRlclJBVENlbGxJbmRpdmlkdWFsT2Zmc2V0LAorCQkJYnNpYwkJCQkJCQkJQlNJQywKKwkJCWZyZXF1ZW5jeS1iYW5kCQkJCQkJRnJlcXVlbmN5LUJhbmQsCisJCQliY2NoLUFSRkNOCQkJCQkJCUJDQ0gtQVJGQ04sCisJCQktLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorCQkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkJCQkJCQkJCU5VTEwJCQkJT1BUSU9OQUwKKwkJfSwKKwkJaXMtMjAwMAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaXMtMjAwMFNwZWNpZmljTWVhc0luZm8JCQkJSVMtMjAwMFNwZWNpZmljTWVhc0luZm8KKwkJfSwKKwkJLS0gQVNOLjEgaW5jb25zaXN0ZW5jeTogTmV3SW50ZXJSQVRDZWxsTGlzdCBzaG91bGQgYmUgb3B0aW9uYWwgd2l0aGluCisJCS0tIEludGVyUkFUQ2VsbEluZm9MaXN0LiBUaGUgVUUgc2hhbGwgY29uc2lkZXIgSUUgTmV3SW50ZXJSQVRDZWxsIHdpdGgKKwkJLS0gdGVjaG5vbG9neVNwZWNpZmljSW5mbyBzZXQgdG8gImFic2VudCIgYXMgdmFsaWQgYW5kIGhhbmRsZSB0aGUKKwkJLS0gbWVzc2FnZSBhcyBpZiB0aGUgSUUgTmV3SW50ZXJSQVRDZWxsIHdhcyBhYnNlbnQKKwkJYWJzZW50CQkJCQkJCQlOVUxMLAorCQlzcGFyZTEJCQkJCQkJCU5VTEwKKwl9Cit9CisKK05ld0ludGVyUkFUQ2VsbC1CIDo6PQkJCQlTRVFVRU5DRSB7CisJaW50ZXJSQVRDZWxsSUQJCQkJCQlJbnRlclJBVENlbGxJRAkJCQlPUFRJT05BTCwKKwl0ZWNobm9sb2d5U3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWNlbGxTZWxlY3Rpb25SZXNlbGVjdGlvbkluZm8JCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMTEtMTIJCU9QVElPTkFMLAorCQkJaW50ZXJSQVRDZWxsSW5kaXZpZHVhbE9mZnNldCAJCUludGVyUkFUQ2VsbEluZGl2aWR1YWxPZmZzZXQsCisJCQlic2ljCQkJCQkJCQlCU0lDLAorCQkJZnJlcXVlbmN5LWJhbmQJCQkJCQlGcmVxdWVuY3ktQmFuZCwKKwkJCWJjY2gtQVJGQ04JCQkJCQkJQkNDSC1BUkZDTiwKKwkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgaXQgc2hvdWxkCisJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQlkdW1teQkJCQkJCQkJTlVMTAkJCQlPUFRJT05BTAorCQl9LAorCQlpcy0yMDAwCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlpcy0yMDAwU3BlY2lmaWNNZWFzSW5mbwkJCQlJUy0yMDAwU3BlY2lmaWNNZWFzSW5mbworCQl9LAorCQktLSBBU04uMSBpbmNvbnNpc3RlbmN5OiBOZXdJbnRlclJBVENlbGxMaXN0LUIgc2hvdWxkIGJlIG9wdGlvbmFsIHdpdGhpbgorCQktLSBJbnRlclJBVENlbGxJbmZvTGlzdC1CLiBUaGUgVUUgc2hhbGwgY29uc2lkZXIgSUUgTmV3SW50ZXJSQVRDZWxsLUIgd2l0aAorCQktLSB0ZWNobm9sb2d5U3BlY2lmaWNJbmZvIHNldCB0byAiYWJzZW50IiBhcyB2YWxpZCBhbmQgaGFuZGxlIHRoZQorCQktLSBtZXNzYWdlIGFzIGlmIHRoZSBJRSBOZXdJbnRlclJBVENlbGwtQiB3YXMgYWJzZW50CisJCWFic2VudAkJCQkJCQkJTlVMTCwKKwkJc3BhcmUxCQkJCQkJCQlOVUxMCisJfQorfQorCitOZXdJbnRlclJBVENlbGxMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50ZXJSQVRDZWxsCisKK05ld0ludGVyUkFUQ2VsbExpc3QtQiA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludGVyUkFUQ2VsbC1CCisKK05ld0ludHJhRnJlcUNlbGwgOjo9CQkJCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mbworfQorCitOZXdJbnRyYUZyZXFDZWxsLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm8tcjQKK30KKworTmV3SW50cmFGcmVxQ2VsbExpc3QgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsCisKK05ld0ludHJhRnJlcUNlbGxMaXN0LXI0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbC1yNAorCitOZXdJbnRyYUZyZXFDZWxsU0ktUlNDUCA6Oj0JCQkJU0VRVUVOQ0UgeworCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktUlNDUAorfQorCitOZXdJbnRyYUZyZXFDZWxsU0ktRUNOMCA6Oj0JCQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1FQ04wCit9CitOZXdJbnRyYUZyZXFDZWxsU0ktSENTLVJTQ1AgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtUlNDUAorfQorCitOZXdJbnRyYUZyZXFDZWxsU0ktSENTLUVDTjAgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1IQ1MtRUNOMAorfQorCitOZXdJbnRyYUZyZXFDZWxsU0ktUlNDUC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1SU0NQLUxDUi1yNAorfQorCitOZXdJbnRyYUZyZXFDZWxsU0ktRUNOMC1MQ1ItcjQgOjo9CQlTRVFVRU5DRSB7CisJaW50cmFGcmVxQ2VsbElECQkJCQkJSW50cmFGcmVxQ2VsbElECQkJCQkJT1BUSU9OQUwsCisJY2VsbEluZm8JCQkJCQkJQ2VsbEluZm9TSS1FQ04wLUxDUi1yNAorfQorTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgeworCWludHJhRnJlcUNlbGxJRAkJCQkJCUludHJhRnJlcUNlbGxJRAkJCQkJCU9QVElPTkFMLAorCWNlbGxJbmZvCQkJCQkJCUNlbGxJbmZvU0ktSENTLVJTQ1AtTENSLXI0Cit9CisKK05ld0ludHJhRnJlcUNlbGxTSS1IQ1MtRUNOMC1MQ1ItcjQgOjo9CVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFDZWxsSUQJCQkJCQlJbnRyYUZyZXFDZWxsSUQJCQkJCQlPUFRJT05BTCwKKwljZWxsSW5mbwkJCQkJCQlDZWxsSW5mb1NJLUhDUy1FQ04wLUxDUi1yNAorfQorCitOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1SU0NQIDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLVJTQ1AKKworTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtRUNOMCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUVDTjAKKworTmV3SW50cmFGcmVxQ2VsbFNJLUxpc3QtSENTLVJTQ1AgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUhDUy1SU0NQCisKK05ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wIDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1IQ1MtRUNOMAorCitOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1SU0NQLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCU5ld0ludHJhRnJlcUNlbGxTSS1SU0NQLUxDUi1yNAorCitOZXdJbnRyYUZyZXFDZWxsU0ktTGlzdC1FQ04wLUxDUi1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJTmV3SW50cmFGcmVxQ2VsbFNJLUVDTjAtTENSLXI0CisKK05ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1SU0NQLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktSENTLVJTQ1AtTENSLXI0CisKK05ld0ludHJhRnJlcUNlbGxTSS1MaXN0LUhDUy1FQ04wLUxDUi1yNCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQlOZXdJbnRyYUZyZXFDZWxsU0ktSENTLUVDTjAtTENSLXI0CisKKwktLSBJRSAibm9uVXNlZEZyZXFUaHJlc2hvbGQiIGlzIG5vdCBuZWVkZWQgaW4gY2FzZSBvZiBldmVudCAyYQorCS0tIEluIGNhc2Ugb2YgZXZlbnQgMmEgVVRSQU4gc2hvdWxkIGluY2x1ZGUgdmFsdWUgMCB3aXRoaW4gSUUgIm5vblVzZWRGcmVxVGhyZXNob2xkIgorCS0tIEluIGNhc2Ugb2YgZXZlbnQgMmEsIHRoZSBVRSBzaGFsbCBiZSBpZ25vcmUgSUUgIm5vblVzZWRGcmVxVGhyZXNob2xkIgorCS0tIEluIGxhdGVyIHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlIGluY2x1ZGluZyB0aGlzIElFLCBhIHNwZWNpYWwgdmVyc2lvbiBvZgorCS0tIElFICJOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QiIG1heSBiZSBkZWZpbmVkIGZvciBldmVudCAyYSwgbmFtZWx5IGEKKwktLSB2ZXJzaW9uIG5vdCBpbmNsdWRpbmcgSUUgIm5vblVzZWRGcmVxVGhyZXNob2xkIgorTm9uVXNlZEZyZXFQYXJhbWV0ZXIgOjo9CQkJU0VRVUVOQ0UgeworCW5vblVzZWRGcmVxVGhyZXNob2xkCQkJCVRocmVzaG9sZCwKKwlub25Vc2VkRnJlcVcJCQkJCQlXCit9CisKK05vblVzZWRGcmVxUGFyYW1ldGVyLXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlub25Vc2VkRnJlcVRocmVzaG9sZAkJCQlUaHJlc2hvbGQtcjYsCisJbm9uVXNlZEZyZXFXCQkJCQkJVworfQorCitOb25Vc2VkRnJlcVBhcmFtZXRlckxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GCisJCQkJCQkJCQkJTm9uVXNlZEZyZXFQYXJhbWV0ZXIKKworTm9uVXNlZEZyZXFQYXJhbWV0ZXJMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXEpKSBPRgorCQkJCQkJCQkJCU5vblVzZWRGcmVxUGFyYW1ldGVyLXI2CisKK05vblVzZWRGcmVxV0xpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4RnJlcSkpIE9GIFcKKworT2JzZXJ2ZWRUaW1lRGlmZmVyZW5jZVRvR1NNIDo6PQkJSU5URUdFUiAoMC4uNDA5NSkKKworT1RET0EtU2VhcmNoV2luZG93U2l6ZSA6Oj0JCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQljMjAsIGM0MCwgYzgwLCBjMTYwLCBjMzIwLAorCQkJCQkJCQkJCWM2NDAsIGMxMjgwLCBtb3JlVGhhbjEyODAgfQorCistLSBTUEFSRTogUGF0aGxvc3MsIE1heCA9IDE1OAorLS0gVmFsdWVzIGFib3ZlIE1heCBhcmUgc3BhcmUKK1BhdGhsb3NzIDo6PQkJCQkJCUlOVEVHRVIgKDQ2Li4xNzMpCisKK1BlbmFsdHlUaW1lLVJTQ1AgOjo9CQkJCUNIT0lDRSB7CisJbm90VXNlZAkJCQkJCQkJTlVMTCwKKwlwdDEwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXQxLAorCXB0MjAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldDEsCisJcHQzMAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0MSwKKwlwdDQwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXQxLAorCXB0NTAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldDEsCisJcHQ2MAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0MQorfQorCitQZW5hbHR5VGltZS1FQ04wIDo6PQkJCQlDSE9JQ0UgeworCW5vdFVzZWQJCQkJCQkJCU5VTEwsCisJcHQxMAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0TGlzdCwKKwlwdDIwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXRMaXN0LAorCXB0MzAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldExpc3QsCisJcHQ0MAkJCQkJCQkJVGVtcG9yYXJ5T2Zmc2V0TGlzdCwKKwlwdDUwCQkJCQkJCQlUZW1wb3JhcnlPZmZzZXRMaXN0LAorCXB0NjAJCQkJCQkJCVRlbXBvcmFyeU9mZnNldExpc3QKK30KKworUGVuZGluZ1RpbWVBZnRlclRyaWdnZXIgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcHRhdDAtMjUsIHB0YXQwLTUsIHB0YXQxLAorCQkJCQkJCQkJCXB0YXQyLCBwdGF0NCwgcHRhdDgsIHB0YXQxNiB9CisKK1BlcmlvZGljYWxPckV2ZW50VHJpZ2dlciA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBlcmlvZGljYWwsCisJCQkJCQkJCQkJZXZlbnRUcmlnZ2VyIH0KKworUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhIDo6PQkJU0VRVUVOQ0UgeworCXJlcG9ydGluZ0Ftb3VudAkJCQkJCVJlcG9ydGluZ0Ftb3VudAkJCQkJREVGQVVMVCByYS1JbmZpbml0eSwKKwlyZXBvcnRpbmdJbnRlcnZhbAkJCQkJUmVwb3J0aW5nSW50ZXJ2YWxMb25nCit9CisKK1BlcmlvZGljYWxXaXRoUmVwb3J0aW5nQ2VsbFN0YXR1cyA6Oj0gU0VRVUVOQ0UgeworCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYSwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCitQTE1OSWRlbnRpdGllc09mTmVpZ2hib3VyQ2VsbHMgOjo9CVNFUVVFTkNFIHsKKwkJcGxtbnNPZkludHJhRnJlcUNlbGxzTGlzdAkJUExNTnNPZkludHJhRnJlcUNlbGxzTGlzdAkJCU9QVElPTkFMLAorCQlwbG1uc09mSW50ZXJGcmVxQ2VsbHNMaXN0CQlQTE1Oc09mSW50ZXJGcmVxQ2VsbHNMaXN0CQkJT1BUSU9OQUwsCisJCXBsbW5zT2ZJbnRlclJBVENlbGxzTGlzdAkJUExNTnNPZkludGVyUkFUQ2VsbHNMaXN0CQkJT1BUSU9OQUwKK30KKworUExNTnNPZkludGVyRnJlcUNlbGxzTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcGxtbi1JZGVudGl0eQkJCQkJCQkJUExNTi1JZGVudGl0eQkJCQlPUFRJT05BTAorfQorCitQTE1Oc09mSW50cmFGcmVxQ2VsbHNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCVNFUVVFTkNFIHsKKwlwbG1uLUlkZW50aXR5CQkJCQkJCQlQTE1OLUlkZW50aXR5CQkJCU9QVElPTkFMCit9CisKK1BMTU5zT2ZJbnRlclJBVENlbGxzTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlTRVFVRU5DRSB7CisJcGxtbi1JZGVudGl0eQkJCQkJCQkJUExNTi1JZGVudGl0eQkJCQlPUFRJT05BTAorfQorCitQb3NpdGlvbkVzdGltYXRlIDo6PQkJCQlDSE9JQ0UgeworCWVsbGlwc29pZFBvaW50CQkJCQkJRWxsaXBzb2lkUG9pbnQsCisJZWxsaXBzb2lkUG9pbnRVbmNlcnRDaXJjbGUJCQlFbGxpcHNvaWRQb2ludFVuY2VydENpcmNsZSwKKwllbGxpcHNvaWRQb2ludFVuY2VydEVsbGlwc2UJCQlFbGxpcHNvaWRQb2ludFVuY2VydEVsbGlwc2UsCisJZWxsaXBzb2lkUG9pbnRBbHRpdHVkZQkJCQlFbGxpcHNvaWRQb2ludEFsdGl0dWRlLAorCWVsbGlwc29pZFBvaW50QWx0aXR1ZGVFbGxpcHNlCQlFbGxpcHNvaWRQb2ludEFsdGl0dWRlRWxsaXBzb2lkZQorfQorCitQb3NpdGlvbmluZ01ldGhvZCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJb3Rkb2EsCisJCQkJCQkJCQkJZ3BzLAorCQkJCQkJCQkJCW90ZG9hT3JHUFMsIGNlbGxJRCB9CisKKy0tIEFjdHVhbCB2YWx1ZSBQUkMgPSBJRSB2YWx1ZSAqIDAuMzIKK1BSQyA6Oj0JCQkJCQkJCUlOVEVHRVIgKC0yMDQ3Li4yMDQ3KQorCistLSBTUEFSRTogUHJpbWFyeUNDUENILVJTQ1AsIE1heCA9IDkxCistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorUHJpbWFyeUNDUENILVJTQ1AgOjo9CQkJCUlOVEVHRVIgKDAuLjEyNykKKworUS1IQ1MgOjo9CQkJCQkJCUlOVEVHRVIgKDAuLjk5KQorCitRLU9mZnNldFMtTiA6Oj0JCQkJCQlJTlRFR0VSICgtNTAuLjUwKQorCitRLVF1YWxNaW4gOjo9CQkJCQkJSU5URUdFUiAoLTI0Li4wKQorCistLSBBY3R1YWwgdmFsdWUgUS1SeGxldk1pbiA9IChJRSB2YWx1ZSAqIDIpICsgMQorUS1SeGxldk1pbiA6Oj0JCQkJCQlJTlRFR0VSICgtNTguLi0xMykKKworUXVhbGl0eUV2ZW50UmVzdWx0cyA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorCitRdWFsaXR5TWVhc3VyZWRSZXN1bHRzIDo6PQkJCVNFUVVFTkNFIHsKKwlibGVyTWVhc3VyZW1lbnRSZXN1bHRzTGlzdAkJCUJMRVItTWVhc3VyZW1lbnRSZXN1bHRzTGlzdAkJCU9QVElPTkFMLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCU5VTEwsCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNpci1NZWFzdXJlbWVudFJlc3VsdHMJCQkJU0lSLU1lYXN1cmVtZW50TGlzdAkJCU9QVElPTkFMCisJCX0KKwl9Cit9CisKK1F1YWxpdHlNZWFzdXJlbWVudCA6Oj0JCQkJU0VRVUVOQ0UgeworCXF1YWxpdHlSZXBvcnRpbmdRdWFudGl0eQkJCVF1YWxpdHlSZXBvcnRpbmdRdWFudGl0eQkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJUXVhbGl0eVJlcG9ydENyaXRlcmlhCit9CisKK1F1YWxpdHlSZXBvcnRDcml0ZXJpYSA6Oj0JCQlDSE9JQ0UgeworCXF1YWxpdHlSZXBvcnRpbmdDcml0ZXJpYQkJCVF1YWxpdHlSZXBvcnRpbmdDcml0ZXJpYSwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEsCisJbm9SZXBvcnRpbmcJCQkJCQkJTlVMTAorfQorCitRdWFsaXR5UmVwb3J0aW5nQ3JpdGVyaWEgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4VHJDSCkpIE9GCisJCQkJCQkJCQkJUXVhbGl0eVJlcG9ydGluZ0NyaXRlcmlhU2luZ2xlCisKK1F1YWxpdHlSZXBvcnRpbmdDcml0ZXJpYVNpbmdsZSA6Oj0JU0VRVUVOQ0UgeworCXRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eSwKKwl0b3RhbENSQwkJCQkJCQlJTlRFR0VSICgxLi41MTIpLAorCWJhZENSQwkJCQkJCQkJSU5URUdFUiAoMS4uNTEyKSwKKwlwZW5kaW5nQWZ0ZXJUcmlnZ2VyCQkJCQlJTlRFR0VSICgxLi41MTIpCit9CisKK1F1YWxpdHlSZXBvcnRpbmdRdWFudGl0eSA6Oj0JCVNFUVVFTkNFIHsKKwlkbC1UcmFuc0NoQkxFUgkJCQkJCUJPT0xFQU4sCisJYmxlci1kbC1UcmFuc0NoSWRMaXN0CQkJCUJMRVItVHJhbnNDaElkTGlzdAkJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJTlVMTCwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2lyLVRGQ1MtTGlzdAkJCQkJCVNJUi1URkNTLUxpc3QJCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworUkFULVR5cGUgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZ3NtLCBpczIwMDAgfQorCitSZWZlcmVuY2VDZWxsUG9zaXRpb24gOjo9CQkJQ0hPSUNFIHsKKwllbGxpcHNvaWRQb2ludAkJCQkJCUVsbGlwc29pZFBvaW50LAorCWVsbGlwc29pZFBvaW50V2l0aEFsdGl0dWRlCQkJRWxsaXBzb2lkUG9pbnRBbHRpdHVkZQorfQorCistLSBSZWZlcmVuY2VMb2NhdGlvbiwgYXMgZGVmaW5lZCBpbiAyMy4wMzIKK1JlZmVyZW5jZUxvY2F0aW9uIDo6PQkJCVNFUVVFTkNFIHsKKwllbGxpcHNvaWRQb2ludEFsdGl0dWRlRWxsaXBzb2lkZQkJRWxsaXBzb2lkUG9pbnRBbHRpdHVkZUVsbGlwc29pZGUKK30KKworUmVmZXJlbmNlVGltZURpZmZlcmVuY2VUb0NlbGwgOjo9IAlDSE9JQ0UgeworCS0tIEFjdHVhbCB2YWx1ZSBhY2N1cmFjeTQwID0gSUUgdmFsdWUgKiA0MAorCWFjY3VyYWN5NDAJCQkJCQkJSU5URUdFUiAoMC4uOTYwKSwKKwktLSBBY3R1YWwgdmFsdWUgYWNjdXJhY3kyNTYgPSBJRSB2YWx1ZSAqIDI1NgorCWFjY3VyYWN5MjU2CQkJCQkJCUlOVEVHRVIgKDAuLjE1MCksCisJLS0gQWN0dWFsIHZhbHVlIGFjY3VyYWN5MjU2MCA9IElFIHZhbHVlICogMjU2MAorCWFjY3VyYWN5MjU2MAkJCQkJCUlOVEVHRVIgKDAuLjE1KQorfQorCitSZW1vdmVkSW50ZXJGcmVxQ2VsbExpc3QgOjo9CQlDSE9JQ0UgeworCXJlbW92ZUFsbEludGVyRnJlcUNlbGxzCQkJCU5VTEwsCisJcmVtb3ZlU29tZUludGVyRnJlcUNlbGxzCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJSW50ZXJGcmVxQ2VsbElELAorCXJlbW92ZU5vSW50ZXJGcmVxQ2VsbHMJCQkJTlVMTAorfQorCitSZW1vdmVkSW50ZXJSQVRDZWxsTGlzdCA6Oj0JCUNIT0lDRSB7CisJcmVtb3ZlQWxsSW50ZXJSQVRDZWxscwkJCU5VTEwsCisJcmVtb3ZlU29tZUludGVyUkFUQ2VsbHMJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlJbnRlclJBVENlbGxJRCwKKwlyZW1vdmVOb0ludGVyUkFUQ2VsbHMJCQlOVUxMCit9CisKK1JlbW92ZWRJbnRyYUZyZXFDZWxsTGlzdCA6Oj0JCUNIT0lDRSB7CisJcmVtb3ZlQWxsSW50cmFGcmVxQ2VsbHMJCQkJTlVMTCwKKwlyZW1vdmVTb21lSW50cmFGcmVxQ2VsbHMJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQlJbnRyYUZyZXFDZWxsSUQsCisJcmVtb3ZlTm9JbnRyYUZyZXFDZWxscwkJCQlOVUxMCit9CisKK1JlcGxhY2VtZW50QWN0aXZhdGlvblRocmVzaG9sZCA6Oj0gCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5vdEFwcGxpY2FibGUsIHQxLCB0MiwKKwkJCQkJCQkJCQl0MywgdDQsIHQ1LCB0NiwgdDcgfQorCitSZXBvcnREZWFjdGl2YXRpb25UaHJlc2hvbGQgOjo9CQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub3RBcHBsaWNhYmxlLCB0MSwgdDIsCisJCQkJCQkJCQkJdDMsIHQ0LCB0NSwgdDYsIHQ3IH0KKworUmVwb3J0aW5nQW1vdW50IDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcmExLCByYTIsIHJhNCwgcmE4LCByYTE2LCByYTMyLAorCQkJCQkJCQkJCXJhNjQsIHJhLUluZmluaXR5IH0KKworUmVwb3J0aW5nQ2VsbFN0YXR1cyA6Oj0JCQkJQ0hPSUNFeworCXdpdGhpbkFjdGl2ZVNldAkJCQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKKwl3aXRoaW5Nb25pdG9yZWRTZXRVc2VkRnJlcQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKKwl3aXRoaW5BY3RpdmVBbmRPck1vbml0b3JlZFVzZWRGcmVxCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKKwl3aXRoaW5EZXRlY3RlZFNldFVzZWRGcmVxCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCXdpdGhpbk1vbml0b3JlZEFuZE9yRGV0ZWN0ZWRVc2VkRnJlcQorCQkJCQkJCQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKKwlhbGxBY3RpdmVwbHVzTW9uaXRvcmVkU2V0CQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUzLAorCWFsbEFjdGl2ZVBsdXNEZXRlY3RlZFNldAkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMywKKwlhbGxBY3RpdmVQbHVzTW9uaXRvcmVkQW5kT3JEZXRlY3RlZFNldAorCQkJCQkJCQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMywKKwl3aXRoaW5WaXJ0dWFsQWN0U2V0CQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMSwKKwl3aXRoaW5Nb25pdG9yZWRTZXROb25Vc2VkRnJlcQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCXdpdGhpbk1vbml0b3JlZEFuZE9yVmlydHVhbEFjdGl2ZVNldE5vblVzZWRGcmVxCisJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUxLAorCWFsbFZpcnR1YWxBY3RTZXRwbHVzTW9uaXRvcmVkU2V0Tm9uVXNlZEZyZXEJCisJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUzLAorCXdpdGhpbkFjdFNldE9yVmlydHVhbEFjdFNldC1JbnRlclJBVGNlbGxzCisJCQkJCQkJCQkJTWF4TnVtYmVyT2ZSZXBvcnRpbmdDZWxsc1R5cGUyLAorCXdpdGhpbkFjdFNldEFuZE9yTW9uaXRvcmVkVXNlZEZyZXFPclZpcnR1YWxBY3RTZXRBbmRPck1vbml0b3JlZE5vblVzZWRGcmVxCQorCQkJCQkJCQkJCU1heE51bWJlck9mUmVwb3J0aW5nQ2VsbHNUeXBlMgorfQorCitSZXBvcnRpbmdDZWxsU3RhdHVzT3B0IDo6PQkJCVNFUVVFTkNFIHsKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCisKK1JlcG9ydGluZ0luZm9Gb3JDZWxsRENIIDo6PQkJCVNFUVVFTkNFIHsKKwlpbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eQkJCUludHJhRnJlcVJlcG9ydGluZ1F1YW50aXR5LAorCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZSwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCUNlbGxEQ0gtUmVwb3J0Q3JpdGVyaWEKK30KKworUmVwb3J0aW5nSW5mb0ZvckNlbGxEQ0gtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJaW50cmFGcmVxUmVwb3J0aW5nUXVhbnRpdHkJCQlJbnRyYUZyZXFSZXBvcnRpbmdRdWFudGl0eSwKKwltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlDZWxsRENILVJlcG9ydENyaXRlcmlhLUxDUi1yNAorfQorCitSZXBvcnRpbmdJbnRlcnZhbCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9QZXJpb2RpY2FscmVwb3J0aW5nLCByaTAtMjUsIAorCQkJCQkJCQkJCXJpMC01LCByaTEsIHJpMiwgcmk0LCByaTgsIHJpMTYgfQorCitSZXBvcnRpbmdJbnRlcnZhbExvbmcgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcmlsMCwgcmlsMC0yNSwgcmlsMC01LCByaWwxLAorCQkJCQkJCQkJCXJpbDIsIHJpbDMsIHJpbDQsIHJpbDYsIHJpbDgsCisJCQkJCQkJCQkJcmlsMTIsIHJpbDE2LCByaWwyMCwgcmlsMjQsCisJCQkJCQkJCQkJcmlsMjgsIHJpbDMyLCByaWw2NCB9CisJCQkJCQkJCQktLSBXaGVuIHRoZSB2YWx1ZSDScmlsMNMgaXMgdXNlZCwgdGhlIFVFIGJlaGF2aW91ciBpcyBub3QKKwkJCQkJCQkJCS0tIGRlZmluZWQuCisKKy0tIEFjdHVhbCB2YWx1ZSBSZXBvcnRpbmdSYW5nZSA9IElFIHZhbHVlICogMC41CitSZXBvcnRpbmdSYW5nZSA6Oj0JCQkJCUlOVEVHRVIgKDAuLjI5KQorCitSTC1BZGRpdGlvbkluZm9MaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCVByaW1hcnlDUElDSC1JbmZvCisKK1JMLUluZm9ybWF0aW9uTGlzdHMgOjo9CQkJCVNFUVVFTkNFIHsKKwlybC1BZGRpdGlvbkluZm9MaXN0CQkJCQlSTC1BZGRpdGlvbkluZm9MaXN0CQkJCQlPUFRJT05BTCwKKwlyTC1SZW1vdmFsSW5mb3JtYXRpb25MaXN0CQkJUkwtUmVtb3ZhbEluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMCit9CisKK1JMQy1CdWZmZXJzUGF5bG9hZCA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJcGwwLCBwbDQsIHBsOCwgcGwxNiwgcGwzMiwKKwkJCQkJCQkJCQlwbDY0LCBwbDEyOCwgcGwyNTYsIHBsNTEyLCBwbDEwMjQsCisJCQkJCQkJCQkJcGwyaywgcGw0aywgcGw4aywgcGwxNmssIHBsMzJrLAorCQkJCQkJCQkJCXBsNjRrLCBwbDEyOGssIHBsMjU2aywgcGw1MTJrLCBwbDEwMjRrLAorCQkJCQkJCQkJCXNwYXJlMTIsIHNwYXJlMTEsIHNwYXJlMTAsIHNwYXJlOSwgc3BhcmU4LAorCQkJCQkJCQkJCXNwYXJlNywgc3BhcmU2LCBzcGFyZTUsIHNwYXJlNCwgc3BhcmUzLAorCQkJCQkJCQkJCXNwYXJlMiwgc3BhcmUxIH0KKworLS0gQWN0dWFsIHZhbHVlIFJSQyA9IElFIHZhbHVlICogMC4wMzIKK1JSQyA6Oj0JCQkJCQkJCUlOVEVHRVIgKC0xMjcuLjEyNykKKworU2F0RGF0YSA6Oj0JCQkJCQkJU0VRVUVOQ0V7CisJc2F0SUQJCQkJCQkJCVNhdElELAorCWlvZGUJCQkJCQkJCUlPREUKK30KKworU2F0RGF0YUxpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDAuLm1heFNhdCkpIE9GCisJCQkJCQkJCQkJU2F0RGF0YQorCitTYXRlbGxpdGVTdGF0dXMgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlucy1OTi1VLAorCQkJCQkJCQkJCWVzLVNOLAorCQkJCQkJCQkJCWVzLU5OLVUsCisJCQkJCQkJCQkJcmV2MiwKKwkJCQkJCQkJCQlyZXYgfQorCistLSBJZGVudGlmaWVzIHRoZSBzYXRlbGxpdGUgYW5kIGlzIGVxdWFsIHRvIChTViBJRCBObyAtIDEpIHdoZXJlIFNWIElEIE5vIGlzIGRlZmluZWQgaW4gWzEyXS4KK1NhdElEIDo6PQkJCQkJCQlJTlRFR0VSICgwLi42MykKKworU0ZOLU9mZnNldC1WYWxpZGl0eSA6Oj0JCQlFTlVNRVJBVEVEIHsgZmFsc2UgfQorCitTRk4tU0ZOLURyaWZ0IDo6PSAJCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXNmbnNmbmRyaWZ0MCwgc2Zuc2ZuZHJpZnQxLCBzZm5zZm5kcmlmdDIsCisJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQzLCBzZm5zZm5kcmlmdDQsIHNmbnNmbmRyaWZ0NSwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdDgsIHNmbnNmbmRyaWZ0MTAsIHNmbnNmbmRyaWZ0MTUsCisJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQyNSwgc2Zuc2ZuZHJpZnQzNSwgc2Zuc2ZuZHJpZnQ1MCwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdDY1LCBzZm5zZm5kcmlmdDgwLCBzZm5zZm5kcmlmdDEwMCwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdC0xLCBzZm5zZm5kcmlmdC0yLCBzZm5zZm5kcmlmdC0zLAorCQkJCQkJCQkJCXNmbnNmbmRyaWZ0LTQsIHNmbnNmbmRyaWZ0LTUsIHNmbnNmbmRyaWZ0LTgsCisJCQkJCQkJCQkJc2Zuc2ZuZHJpZnQtMTAsIHNmbnNmbmRyaWZ0LTE1LCBzZm5zZm5kcmlmdC0yNSwKKwkJCQkJCQkJCQlzZm5zZm5kcmlmdC0zNSwgc2Zuc2ZuZHJpZnQtNTAsIHNmbnNmbmRyaWZ0LTY1LAorCQkJCQkJCQkJCXNmbnNmbmRyaWZ0LTgwLCBzZm5zZm5kcmlmdC0xMDB9CisKK1NGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UgOjo9CQlDSE9JQ0UgeworCXR5cGUxCQkJCQkJCQlTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMSwKKwl0eXBlMgkJCQkJCQkJU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTIKK30KKworLS0gU1BBUkU6IFNGTi1TRk4tT2JzVGltZURpZmZlcmVuY2UxLCBNYXggPSA5ODMwMzk5CistLSBGb3IgMS4yOE1jcHMgVERELCBNYXggdmFsdWUgb2YgU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTEgaXMgMzI3Njc5OS4KKy0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCitTRk4tU0ZOLU9ic1RpbWVEaWZmZXJlbmNlMSA6Oj0JCUlOVEVHRVIgKDAuLjE2Nzc3MjE1KQorCistLSBTUEFSRTogU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTIsIE1heCA9IDQwOTYxCistLSBGb3IgMS4yOE1jcHMgVERELCBNYXggdmFsdWUgb2YgU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTIgaXMgMjc2NDkuCistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorU0ZOLVNGTi1PYnNUaW1lRGlmZmVyZW5jZTIgOjo9CQlJTlRFR0VSICgwLi42NTUzNSkKKworU0ZOLVNGTi1PVEQtVHlwZSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9SZXBvcnQsCisJCQkJCQkJCQkJdHlwZTEsCisJCQkJCQkJCQkJdHlwZTIgfQorCitTRk4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlMSA6Oj0JCVNFUVVFTkNFIHsKKwlzZm4tT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAgLi4gNDA5NSksCisJc2ZuLXNmbi1SZWx0aW1lZGlmZmVyZW5jZQkJCUlOVEVHRVIgKDAuLiAzODM5OSkKK30KKworU0ZOLVRPVy1VbmNlcnRhaW50eSA6Oj0JCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbGVzc1RoYW4xMCwKKwkJCQkJCQkJCQltb3JlVGhhbjEwIH0KKworCitTSVIgOjo9CQkJCQkJCQlJTlRFR0VSICgwLi42MykKKworCitTSVItTWVhc3VyZW1lbnRMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q0NUckNIKSkgT0YKKwkJCQkJCQkJCQlTSVItTWVhc3VyZW1lbnRSZXN1bHRzCisKKworU0lSLU1lYXN1cmVtZW50UmVzdWx0cyA6Oj0JCQlTRVFVRU5DRSB7CisJdGZjcy1JRAkJCQkJCQkJVEZDUy1JZGVudGl0eVBsYWluLAorCXNpci1UaW1lc2xvdExpc3QJCQkJCVNJUi1UaW1lc2xvdExpc3QKK30KKworU0lSLVRGQ1MgOjo9CQkJCQkJVEZDUy1JZGVudGl0eVBsYWluCisKKworU0lSLVRGQ1MtTGlzdCA6Oj0JCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDQ1RyQ0gpKSBPRgorCQkJCQkJCQkJCVNJUi1URkNTCisKK1NJUi1UaW1lc2xvdExpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCisJCQkJCQkJCQkJU0lSCisKKy0tIFN1YkZyYW1lMVJlc2VydmVkLCByZXNlcnZlZCBiaXRzIGluIHN1YmZyYW1lIDEgb2YgdGhlIEdQUyBuYXZpZ2F0aW9uIG1lc3NhZ2UKK1N1YkZyYW1lMVJlc2VydmVkIDo6PSAJCQkJU0VRVUVOQ0UgeworIAlyZXNlcnZlZDEJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjMpKSwKKwlyZXNlcnZlZDIJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKKwlyZXNlcnZlZDMJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjQpKSwKKwlyZXNlcnZlZDQJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMTYpKQorfQorCitULUFEVmluZm8gOjo9CQkJCQkJU0VRVUVOQ0UgeworCQkJCXQtQURWCQkJCQlJTlRFR0VSKDAuLjIwNDcpLAorCQkJCXNmbgkJCQkJCUlOVEVHRVIoMC4uNDA5NSkKK30KKworVC1DUk1heCA6Oj0JCQkJCQkJQ0hPSUNFIHsKKwlub3RVc2VkCQkJCQkJCQlOVUxMLAorCXQzMAkJCQkJCQkJCU4tQ1ItVC1DUk1heEh5c3QsCisJdDYwCQkJCQkJCQkJTi1DUi1ULUNSTWF4SHlzdCwKKwl0MTIwCQkJCQkJCQlOLUNSLVQtQ1JNYXhIeXN0LAorCXQxODAJCQkJCQkJCU4tQ1ItVC1DUk1heEh5c3QsCisJdDI0MAkJCQkJCQkJTi1DUi1ULUNSTWF4SHlzdAorfQorCitULUNSTWF4SHlzdCA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlub3RVc2VkLCB0MTAsIHQyMCwgdDMwLAorCQkJCQkJCQkJCXQ0MCwgdDUwLCB0NjAsIHQ3MCB9CisKK1RlbXBvcmFyeU9mZnNldDEgOjo9CQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXRvMywgdG82LCB0bzksIHRvMTIsIHRvMTUsCisJCQkJCQkJCQkJdG8xOCwgdG8yMSwgaW5maW5pdGUgfQorCitUZW1wb3JhcnlPZmZzZXQyIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0bzIsIHRvMywgdG80LCB0bzYsIHRvOCwKKwkJCQkJCQkJCQl0bzEwLCB0bzEyLCBpbmZpbml0ZSB9CisKK1RlbXBvcmFyeU9mZnNldExpc3QgOjo9CQkJCVNFUVVFTkNFIAl7CisJCXRlbXBvcmFyeU9mZnNldDEgCQkJCVRlbXBvcmFyeU9mZnNldDEsCisJCXRlbXBvcmFyeU9mZnNldDIgCQkJCVRlbXBvcmFyeU9mZnNldDIKK30KKworVGhyZXNob2xkIDo6PQkJCQkJCUlOVEVHRVIgKC0xMTUuLjApCisKK1RocmVzaG9sZC1yNiA6Oj0JCQkJCQkJSU5URUdFUiAoLTEyMC4uMCkKKworLS0gVGhlIG9yZGVyIG9mIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciBvZiBmcmVxdWVuY3kgZGVmaW5lZCBpbiBJbnRlci1GcmVxRXZlbnRDcml0ZXJpYQorVGhyZWhvbGROb25Vc2VkRnJlcXVlbmN5LWRlbHRhTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZyZXEpKSBPRgorCQkJCQkJCQkJCQlEZWx0YVJTQ1BQZXJDZWxsCisKK1RocmVzaG9sZFBvc2l0aW9uQ2hhbmdlIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBjMTAsIHBjMjAsIHBjMzAsIHBjNDAsIHBjNTAsCisJCQkJCQkJCQkJcGMxMDAsIHBjMjAwLCBwYzMwMCwgcGM1MDAsCisJCQkJCQkJCQkJcGMxMDAwLCBwYzIwMDAsIHBjNTAwMCwgcGMxMDAwMCwKKwkJCQkJCQkJCQlwYzIwMDAwLCBwYzUwMDAwLCBwYzEwMDAwMCB9CisKK1RocmVzaG9sZFNGTi1HUFMtVE9XIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW1zMSwgbXMyLCBtczMsIG1zNSwgbXMxMCwKKwkJCQkJCQkJCQltczIwLCBtczUwLCBtczEwMCB9CisKK1RocmVzaG9sZFNGTi1TRk4tQ2hhbmdlIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWMwLTI1LCBjMC01LCBjMSwgYzIsIGMzLCBjNCwgYzUsCisJCQkJCQkJCQkJYzEwLCBjMjAsIGM1MCwgYzEwMCwgYzIwMCwgYzUwMCwKKwkJCQkJCQkJCQljMTAwMCwgYzIwMDAsIGM1MDAwIH0KKworVGhyZXNob2xkVXNlZEZyZXF1ZW5jeSA6Oj0JCQlJTlRFR0VSICgtMTE1Li4xNjUpCisKK1RocmVzaG9sZFVzZWRGcmVxdWVuY3ktcjYgOjo9CQlJTlRFR0VSICgtMTIwLi4xNjUpCisKKy0tIEFjdHVhbCB2YWx1ZSBUaW1lSW50ZXJ2YWwgPSBJRSB2YWx1ZSAqIDIwLgorVGltZUludGVydmFsIDo6PQkJCQkJSU5URUdFUiAoMS4uMTMpCisKKworVGltZXNsb3RJbmZvIDo6PQkJCQkJU0VRVUVOQ0UgeworCXRpbWVzbG90TnVtYmVyCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJYnVyc3RUeXBlCQkJCQkJCUJ1cnN0VHlwZQorfQorCitUaW1lc2xvdEluZm8tTENSLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3ROdW1iZXIJCQkJCQlUaW1lc2xvdE51bWJlci1MQ1ItcjQKK30KKworVGltZXNsb3RJbmZvTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQlUaW1lc2xvdEluZm8KKworVGltZXNsb3RJbmZvTGlzdC1MQ1ItcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTLUxDUikpIE9GCisJCQkJCQkJCQkJVGltZXNsb3RJbmZvLUxDUi1yNAorCitUaW1lc2xvdEluZm9MaXN0LXI0IDo6PQkJCQlDSE9JQ0UgeworCS0tIHRoZSBjaG9pY2UgZm9yIDcuNjggTWNwcyBUREQgaXMgdGhlIHNhbWUgYXMgZm9yIDMuODQgTWNwcyBUREQgLS0KKwl0ZGQzODQJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCisJCQkJCQkJCQkJCVRpbWVzbG90SW5mbywKKwl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUy1MQ1IpKSBPRgorCQkJCQkJCQkJCQlUaW1lc2xvdEluZm8tTENSLXI0Cit9CisKKy0tIFNQQVJFOiBUaW1lc2xvdElTQ1AsIE1heCA9IDkxCistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorVGltZXNsb3RJU0NQIDo6PQkJCQkJSU5URUdFUiAoMC4uMTI3KQorCisKKy0tIFRpbWVzbG90SVNDUC1MaXN0IHNoYWxsIG5vdCBpbmNsdWRlIG1vcmUgdGhhbiA2IGVsZW1lbnRzIGluIDEuMjhNY3BzIFRERCBtb2RlLgorVGltZXNsb3RJU0NQLUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCisJCQkJCQkJCQkJVGltZXNsb3RJU0NQCisKK1RpbWVzbG90TGlzdFdpdGhJU0NQIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUUykpIE9GCisJCQkJCQkJCQkJVGltZXNsb3RXaXRoSVNDUAorCitUaW1lc2xvdFdpdGhJU0NQIDo6PQkJCQlTRVFVRU5DRSB7CisJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJdGltZXNsb3RJU0NQCQkJCQkJVGltZXNsb3RJU0NQCit9CisKK1RpbWVUb1RyaWdnZXIgOjo9CQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQl0dHQwLCB0dHQxMCwgdHR0MjAsIHR0dDQwLCB0dHQ2MCwKKwkJCQkJCQkJCQl0dHQ4MCwgdHR0MTAwLCB0dHQxMjAsIHR0dDE2MCwKKwkJCQkJCQkJCQl0dHQyMDAsIHR0dDI0MCwgdHQzMjAsIHR0dDY0MCwKKwkJCQkJCQkJCQl0dHQxMjgwLCB0dHQyNTYwLCB0dHQ1MDAwIH0KKworVHJhZmZpY1ZvbHVtZUV2ZW50UGFyYW0gOjo9CQkJU0VRVUVOQ0UgeworCWV2ZW50SUQJCQkJCQkJCVRyYWZmaWNWb2x1bWVFdmVudFR5cGUsCisJcmVwb3J0aW5nVGhyZXNob2xkCQkJCQlUcmFmZmljVm9sdW1lVGhyZXNob2xkLAorCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyCQkJCQkJT1BUSU9OQUwsCisJcGVuZGluZ1RpbWVBZnRlclRyaWdnZXIJCQkJUGVuZGluZ1RpbWVBZnRlclRyaWdnZXIJCQkJT1BUSU9OQUwsCisJdHgtSW50ZXJydXB0aW9uQWZ0ZXJUcmlnZ2VyCQkJVFgtSW50ZXJydXB0aW9uQWZ0ZXJUcmlnZ2VyCQkJT1BUSU9OQUwKK30KKworVHJhZmZpY1ZvbHVtZUV2ZW50UmVzdWx0cyA6Oj0JCVNFUVVFTkNFIHsKKwl1bC10cmFuc3BvcnRDaGFubmVsQ2F1c2luZ0V2ZW50CQlVTC1UckNILUlkZW50aXR5LAorCXRyYWZmaWNWb2x1bWVFdmVudElkZW50aXR5CQkJVHJhZmZpY1ZvbHVtZUV2ZW50VHlwZQorfQorCitUcmFmZmljVm9sdW1lRXZlbnRUeXBlIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWU0YSwKKwkJCQkJCQkJCQllNGIgfQorCitUcmFmZmljVm9sdW1lTWVhc1F1YW50aXR5IDo6PQkJQ0hPSUNFIHsKKwlybGMtQnVmZmVyUGF5bG9hZAkJCQkJTlVMTCwKKwlhdmVyYWdlUkxDLUJ1ZmZlclBheWxvYWQJCQlUaW1lSW50ZXJ2YWwsCisJdmFyaWFuY2VPZlJMQy1CdWZmZXJQYXlsb2FkCQkJVGltZUludGVydmFsCit9CisKK1RyYWZmaWNWb2x1bWVNZWFzU3lzSW5mbyA6Oj0JCVNFUVVFTkNFIHsKKwl0cmFmZmljVm9sdW1lTWVhc3VyZW1lbnRJRAkJCU1lYXN1cmVtZW50SWRlbnRpdHkJCQlERUZBVUxUIDQsCisJdHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50T2JqZWN0TGlzdAlUcmFmZmljVm9sdW1lTWVhc3VyZW1lbnRPYmplY3RMaXN0CU9QVElPTkFMLAorCXRyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkJCQlUcmFmZmljVm9sdW1lTWVhc1F1YW50aXR5CQkJT1BUSU9OQUwsCisJdHJhZmZpY1ZvbHVtZVJlcG9ydGluZ1F1YW50aXR5CQlUcmFmZmljVm9sdW1lUmVwb3J0aW5nUXVhbnRpdHkJCU9QVElPTkFMLAorCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCVRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlLAorCXJlcG9ydENyaXRlcmlhU3lzSW5mCQkJCVRyYWZmaWNWb2x1bWVSZXBvcnRDcml0ZXJpYVN5c0luZm8KKworfQorCitUcmFmZmljVm9sdW1lTWVhc3VyZWRSZXN1bHRzIDo6PQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJcmxjLUJ1ZmZlcnNQYXlsb2FkCQkJCQlSTEMtQnVmZmVyc1BheWxvYWQJCQkJCU9QVElPTkFMLAorCWF2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZAkJCUF2ZXJhZ2VSTEMtQnVmZmVyUGF5bG9hZAkJCU9QVElPTkFMLAorCXZhcmlhbmNlT2ZSTEMtQnVmZmVyUGF5bG9hZAkJCVZhcmlhbmNlT2ZSTEMtQnVmZmVyUGF5bG9hZAkJCU9QVElPTkFMCit9CisKK1RyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHNMaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCVRyYWZmaWNWb2x1bWVNZWFzdXJlZFJlc3VsdHMKKworVHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50IDo6PSAJCVNFUVVFTkNFIHsKKwl0cmFmZmljVm9sdW1lTWVhc3VyZW1lbnRPYmplY3RMaXN0CVRyYWZmaWNWb2x1bWVNZWFzdXJlbWVudE9iamVjdExpc3QJT1BUSU9OQUwsCisJdHJhZmZpY1ZvbHVtZU1lYXNRdWFudGl0eQkJCVRyYWZmaWNWb2x1bWVNZWFzUXVhbnRpdHkJCQlPUFRJT05BTCwKKwl0cmFmZmljVm9sdW1lUmVwb3J0aW5nUXVhbnRpdHkJCVRyYWZmaWNWb2x1bWVSZXBvcnRpbmdRdWFudGl0eQkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJcmVwb3J0Q3JpdGVyaWEJCQkJCQlUcmFmZmljVm9sdW1lUmVwb3J0Q3JpdGVyaWEKK30KKworVHJhZmZpY1ZvbHVtZU1lYXN1cmVtZW50T2JqZWN0TGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRyQ0gpKSBPRgorCQkJCQkJCQkJCQlVTC1UckNILUlkZW50aXR5CisKK1RyYWZmaWNWb2x1bWVSZXBvcnRDcml0ZXJpYSA6Oj0JCUNIT0lDRSB7CisJdHJhZmZpY1ZvbHVtZVJlcG9ydGluZ0NyaXRlcmlhCQlUcmFmZmljVm9sdW1lUmVwb3J0aW5nQ3JpdGVyaWEsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhLAorCW5vUmVwb3J0aW5nCQkJCQkJCU5VTEwKK30KKworVHJhZmZpY1ZvbHVtZVJlcG9ydENyaXRlcmlhU3lzSW5mbyA6Oj0JQ0hPSUNFIHsKKwl0cmFmZmljVm9sdW1lUmVwb3J0aW5nQ3JpdGVyaWEJCVRyYWZmaWNWb2x1bWVSZXBvcnRpbmdDcml0ZXJpYSwKKwlwZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEJCQlQZXJpb2RpY2FsUmVwb3J0aW5nQ3JpdGVyaWEKK30KKworVHJhZmZpY1ZvbHVtZVJlcG9ydGluZ0NyaXRlcmlhIDo6PSBTRVFVRU5DRSB7CisJLS0gTk9URTogdHJhbnNDaENyaXRlcmlhTGlzdCBzaG91bGQgYmUgbWFuZGF0b3J5IGluIGxhdGVyIHZlcnNpb25zIG9mIHRoaXMgbWVzc2FnZQorCXRyYW5zQ2hDcml0ZXJpYUxpc3QJCQkJCVRyYW5zQ2hDcml0ZXJpYUxpc3QJCQkJCU9QVElPTkFMCit9CisKK1RyYWZmaWNWb2x1bWVSZXBvcnRpbmdRdWFudGl0eSA6Oj0gU0VRVUVOQ0UgeworCXJsYy1SQi1CdWZmZXJQYXlsb2FkCQkJCUJPT0xFQU4sCisJcmxjLVJCLUJ1ZmZlclBheWxvYWRBdmVyYWdlCQkJQk9PTEVBTiwKKwlybGMtUkItQnVmZmVyUGF5bG9hZFZhcmlhbmNlCQlCT09MRUFOCit9CisKK1RyYWZmaWNWb2x1bWVUaHJlc2hvbGQgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdGg4LCB0aDE2LCB0aDMyLCB0aDY0LCB0aDEyOCwKKwkJCQkJCQkJCQl0aDI1NiwgdGg1MTIsIHRoMTAyNCwgdGgyaywgdGgzaywgCisJCQkJCQkJCQkJdGg0aywgdGg2aywgdGg4aywgdGgxMmssIHRoMTZrLCAKKwkJCQkJCQkJCQl0aDI0aywgdGgzMmssIHRoNDhrLCB0aDY0aywgdGg5NmssIAorCQkJCQkJCQkJCXRoMTI4aywgdGgxOTJrLCB0aDI1NmssIHRoMzg0aywgCisJCQkJCQkJCQkJdGg1MTJrLCB0aDc2OGsgfQorCitUcmFuc0NoQ3JpdGVyaWEgOjo9CQkJCQlTRVFVRU5DRSB7CisJdWwtdHJhbnNwb3J0Q2hhbm5lbElECQkJCVVMLVRyQ0gtSWRlbnRpdHkJCQkJCU9QVElPTkFMLAorCWV2ZW50U3BlY2lmaWNQYXJhbWV0ZXJzCQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzUGFyRXZlbnQpKSBPRiAKKwkJCQkJCQkJCQkJVHJhZmZpY1ZvbHVtZUV2ZW50UGFyYW0JCQlPUFRJT05BTAorfQorCitUcmFuc0NoQ3JpdGVyaWFMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUckNIKSkgT0YKKwkJCQkJCQkJCQlUcmFuc0NoQ3JpdGVyaWEKKworVHJhbnNmZXJNb2RlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYWNrbm93bGVkZ2VkTW9kZVJMQywKKwkJCQkJCQkJCQl1bmFja25vd2xlZGdlZE1vZGVSTEMgfQorCitUcmFuc21pdHRlZFBvd2VyVGhyZXNob2xkIDo6PQkJSU5URUdFUiAoLTUwLi4zMykKKworVHJpZ2dlcmluZ0NvbmRpdGlvbjEgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJYWN0aXZlU2V0Q2VsbHNPbmx5LAorCQkJCQkJCQkJCW1vbml0b3JlZFNldENlbGxzT25seSwKKwkJCQkJCQkJCQlhY3RpdmVTZXRBbmRNb25pdG9yZWRTZXRDZWxscyB9CisKK1RyaWdnZXJpbmdDb25kaXRpb24yIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWFjdGl2ZVNldENlbGxzT25seSwKKwkJCQkJCQkJCQltb25pdG9yZWRTZXRDZWxsc09ubHksCisJCQkJCQkJCQkJYWN0aXZlU2V0QW5kTW9uaXRvcmVkU2V0Q2VsbHMsCisJCQkJCQkJCQkJZGV0ZWN0ZWRTZXRDZWxsc09ubHksCisJCQkJCQkJCQkJZGV0ZWN0ZWRTZXRBbmRNb25pdG9yZWRTZXRDZWxscyB9CisKK1RYLUludGVycnVwdGlvbkFmdGVyVHJpZ2dlciA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXR4aWF0MC0yNSwgdHhpYXQwLTUsIHR4aWF0MSwKKwkJCQkJCQkJCQl0eGlhdDIsIHR4aWF0NCwgdHhpYXQ4LCB0eGlhdDE2IH0KKworVURSRSA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbGVzc1RoYW4xLAorCQkJCQkJCQkJCWJldHdlZW4xLWFuZC00LAorCQkJCQkJCQkJCWJldHdlZW40LWFuZC04LAorCQkJCQkJCQkJCW92ZXI4IH0KKworVUUtNkFCLUV2ZW50IDo6PQkJCQkJU0VRVUVOQ0UgeworCXRpbWVUb1RyaWdnZXIJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCXRyYW5zbWl0dGVkUG93ZXJUaHJlc2hvbGQJCQlUcmFuc21pdHRlZFBvd2VyVGhyZXNob2xkCit9CisKK1VFLTZGRy1FdmVudCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwktLSBpbiAxLjI4IE1jcHMgVEREIHVlLVJYLVRYLVRpbWVEaWZmZXJlbmNlVGhyZXNob2xkIGNvcnJlc3BvbmRzIHRvIFRBRFYgVGhyZXNob2xkCisJdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQJVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQKK30KKworLS0gZHVtbXkgYW5kIGR1bW15MiBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGV5IHNob3VsZAorLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIHRoZSBVRSBiZWhhdmlvdXIgaXMgbm90IHNwZWNpZmllZC4KK1VFLUF1dG9ub21vdXNVcGRhdGVNb2RlIDo6PQkJCUNIT0lDRSB7CisJZHVtbXkJCQkJCQkJCU5VTEwsCisJb25XaXRoTm9SZXBvcnRpbmcJCQkJCU5VTEwsCisJZHVtbXkyCQkJCQkJCQlSTC1JbmZvcm1hdGlvbkxpc3RzIAorfQorCitVRS1JbnRlcm5hbEV2ZW50UGFyYW0gOjo9CQkJQ0hPSUNFIHsKKwlldmVudDZhCQkJCQkJCQlVRS02QUItRXZlbnQsCisJZXZlbnQ2YgkJCQkJCQkJVUUtNkFCLUV2ZW50LAorCWV2ZW50NmMJCQkJCQkJCVRpbWVUb1RyaWdnZXIsCisJZXZlbnQ2ZAkJCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlldmVudDZlCQkJCQkJCQlUaW1lVG9UcmlnZ2VyLAorCWV2ZW50NmYJCQkJCQkJCVVFLTZGRy1FdmVudCwKKwlldmVudDZnCQkJCQkJCQlVRS02RkctRXZlbnQKK30KKworVUUtSW50ZXJuYWxFdmVudFBhcmFtTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCVVFLUludGVybmFsRXZlbnRQYXJhbQorCitVRS1JbnRlcm5hbEV2ZW50UmVzdWx0cyA6Oj0JCQlDSE9JQ0UgeworCWV2ZW50NmEJCQkJCQkJCU5VTEwsCisJZXZlbnQ2YgkJCQkJCQkJTlVMTCwKKwlldmVudDZjCQkJCQkJCQlOVUxMLAorCWV2ZW50NmQJCQkJCQkJCU5VTEwsCisJZXZlbnQ2ZQkJCQkJCQkJTlVMTCwKKwlldmVudDZmCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwlldmVudDZnCQkJCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwlzcGFyZQkJCQkJCQkJTlVMTAorfQorCitVRS1JbnRlcm5hbE1lYXNRdWFudGl0eSA6Oj0JCQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRRdWFudGl0eQkJCQkJVUUtTWVhc3VyZW1lbnRRdWFudGl0eSwKKwlmaWx0ZXJDb2VmZmljaWVudAkJCQkJRmlsdGVyQ29lZmZpY2llbnQJCQkJCURFRkFVTFQgZmMwCit9CisKK1VFLUludGVybmFsTWVhc3VyZWRSZXN1bHRzIDo6PQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVlLVRyYW5zbWl0dGVkUG93ZXJGREQJCQkJVUUtVHJhbnNtaXR0ZWRQb3dlcgkJCU9QVElPTkFMLAorCQkJdWUtUlgtVFgtUmVwb3J0RW50cnlMaXN0CQkJVUUtUlgtVFgtUmVwb3J0RW50cnlMaXN0CU9QVElPTkFMCisJCX0sCisJCXRkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVlLVRyYW5zbWl0dGVkUG93ZXJUREQtTGlzdAkJCVVFLVRyYW5zbWl0dGVkUG93ZXJUREQtTGlzdAlPUFRJT05BTCwKKwkJCWFwcGxpZWRUQQkJCQkJCQlVTC1UaW1pbmdBZHZhbmNlCQkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtcjcgOjo9CQlTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtVHJhbnNtaXR0ZWRQb3dlckZERAkJCQlVRS1UcmFuc21pdHRlZFBvd2VyCQkJT1BUSU9OQUwsCisJCQl1ZS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QJCQlVRS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CQkJVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0CU9QVElPTkFMLAorCQkJYXBwbGllZFRBCQkJCQkJCVVMLVRpbWluZ0FkdmFuY2UtVkhDUgkJT1BUSU9OQUwKKwkJfQorCX0KK30KKworVUUtSW50ZXJuYWxNZWFzdXJlZFJlc3VsdHMtTENSLXI0IDo6PQlTRVFVRU5DRSB7CisJCXVlLVRyYW5zbWl0dGVkUG93ZXJUREQtTGlzdAkJCVVFLVRyYW5zbWl0dGVkUG93ZXJUREQtTGlzdAkJT1BUSU9OQUwsCisJCXQtQURWaW5mbwkJCQkJCQlULUFEVmluZm8JCQkJCQlPUFRJT05BTAorfQorCitVRS1JbnRlcm5hbE1lYXN1cmVtZW50IDo6PQkJCVNFUVVFTkNFIHsKKwl1ZS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlVRS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwl1ZS1JbnRlcm5hbFJlcG9ydGluZ1F1YW50aXR5CQlVRS1JbnRlcm5hbFJlcG9ydGluZ1F1YW50aXR5CQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCVVFLUludGVybmFsUmVwb3J0Q3JpdGVyaWEKK30KKworVUUtSW50ZXJuYWxNZWFzdXJlbWVudC1yNCA6Oj0JCVNFUVVFTkNFIHsKKwl1ZS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlVRS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlPUFRJT05BTCwKKwl1ZS1JbnRlcm5hbFJlcG9ydGluZ1F1YW50aXR5CQlVRS1JbnRlcm5hbFJlcG9ydGluZ1F1YW50aXR5LXI0CQlPUFRJT05BTCwKKwlyZXBvcnRDcml0ZXJpYQkJCQkJCVVFLUludGVybmFsUmVwb3J0Q3JpdGVyaWEKK30KKworVUUtSW50ZXJuYWxNZWFzdXJlbWVudFN5c0luZm8gOjo9IAlTRVFVRU5DRSB7CisJdWUtSW50ZXJuYWxNZWFzdXJlbWVudElECQkJTWVhc3VyZW1lbnRJZGVudGl0eQkJCURFRkFVTFQgNSwKKwl1ZS1JbnRlcm5hbE1lYXNRdWFudGl0eQkJCQlVRS1JbnRlcm5hbE1lYXNRdWFudGl0eQorfQorCitVRS1JbnRlcm5hbFJlcG9ydENyaXRlcmlhIDo6PQkJQ0hPSUNFIHsKKwl1ZS1JbnRlcm5hbFJlcG9ydGluZ0NyaXRlcmlhCQlVRS1JbnRlcm5hbFJlcG9ydGluZ0NyaXRlcmlhLAorCXBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYQkJCVBlcmlvZGljYWxSZXBvcnRpbmdDcml0ZXJpYSwKKwlub1JlcG9ydGluZwkJCQkJCQlOVUxMCit9CisKK1VFLUludGVybmFsUmVwb3J0aW5nQ3JpdGVyaWEgOjo9CVNFUVVFTkNFIHsKKwl1ZS1JbnRlcm5hbEV2ZW50UGFyYW1MaXN0CQkJVUUtSW50ZXJuYWxFdmVudFBhcmFtTGlzdAkJCU9QVElPTkFMCit9CisKK1VFLUludGVybmFsUmVwb3J0aW5nUXVhbnRpdHkgOjo9CVNFUVVFTkNFIHsKKwl1ZS1UcmFuc21pdHRlZFBvd2VyCQkJCQlCT09MRUFOLAorCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXVlLVJYLVRYLVRpbWVEaWZmZXJlbmNlCQkJCUJPT0xFQU4KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJYXBwbGllZFRBCQkJCQkJCUJPT0xFQU4KKwkJfQorCX0KK30KKworVUUtSW50ZXJuYWxSZXBvcnRpbmdRdWFudGl0eS1yNCA6Oj0JU0VRVUVOQ0UgeworCXVlLVRyYW5zbWl0dGVkUG93ZXIJCQkJCUJPT0xFQU4sCisJbW9kZVNwZWNpZmljSW5mbwkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdWUtUlgtVFgtVGltZURpZmZlcmVuY2UJCQkJQk9PTEVBTgorCQl9LAorCQl0ZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQl0ZGRPcHRpb24JCQkJCQkJQ0hPSUNFIHsKKwkJCS0tIGFwcGxpZWRUQSBhcHBsaWVzIHRvIGJvdGggMy44NCBNY3BzIFRERCBhbmQgdG8gNy42OCBNY3BzIFRERC4KKwkJCS0tIFRoZXJlZm9yZSwgbm8gYWRkaXRpb25hbCBjaG9pY2Ugb2YgVEREIG1vZGUgaXMgbmVjZXNzYXJ5CisJCQkJdGRkMzg0CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJCWFwcGxpZWRUQQkJCQkJCQlCT09MRUFOCisJCQkJfSwKKwkJCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJdC1BRFZpbmZvCQkJCQkJCUJPT0xFQU4KKwkJCQl9CisJCQl9CisJCX0KKwl9Cit9CisKKy0tIFRBQlVMQVI6IFVFLU1lYXN1cmVtZW50UXVhbnRpdHksIGZvciAzLjg0IE1jcHMgVEREIG9ubHkgdGhlIGZpcnN0IHR3byB2YWx1ZXMKKy0tIHVlLVRyYW5zbWl0dGVkUG93ZXIgYW5kIHV0cmEtQ2Fycmllci1SU1NJIGFyZSB1c2VkLgorLS0gRm9yIDEuMjggTWNwcyBUREQgdWUtUlgtVFgtVGltZURpZmZlcmVuY2UgY29ycmVzcG9uZHMgdG8gVC1BRFYgaW4gdGhlIHRhYnVsYXIKK1VFLU1lYXN1cmVtZW50UXVhbnRpdHkgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdWUtVHJhbnNtaXR0ZWRQb3dlciwKKwkJCQkJCQkJCQl1dHJhLUNhcnJpZXItUlNTSSwKKwkJCQkJCQkJCQl1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZSB9CisKK1VFLVJYLVRYLVJlcG9ydEVudHJ5IDo6PQkJCVNFUVVFTkNFIHsKKwlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8sCisJdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMQkJVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMQorfQorCitVRS1SWC1UWC1SZXBvcnRFbnRyeUxpc3QgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQkJCQkJCQkJCVVFLVJYLVRYLVJlcG9ydEVudHJ5CisKKy0tIFNQQVJFOiBVRS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUxLCBNYXggPSAxMjgwCistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMSA6Oj0JCQlJTlRFR0VSICg3NjguLjE3OTEpCisKKworVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMiA6Oj0JSU5URUdFUiAoMC4uODE5MSkKKworVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMkluZm8gOjo9CVNFUVVFTkNFIHsKKwl1ZS1SWC1UWC1UaW1lRGlmZmVyZW5jZVR5cGUyCQkJVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMiwKKwluZWlnaGJvdXJRdWFsaXR5CQkJCQkJTmVpZ2hib3VyUXVhbGl0eQorfQorCistLSBJbiAxLjI4IE1jcHMgVERELCBhY3R1YWwgdmFsdWUgZm9yCistLSBULUFEViBUaHJlc2hvbGQgPSAoVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUaHJlc2hvbGQgLSA3NjgpICogMC4xMjUKK1VFLVJYLVRYLVRpbWVEaWZmZXJlbmNlVGhyZXNob2xkIDo6PSBJTlRFR0VSICg3NjguLjEyODApCisKK1VFLVRyYW5zbWl0dGVkUG93ZXIgOjo9CQkJCUlOVEVHRVIgKDAuLjEwNCkKKworVUUtVHJhbnNtaXR0ZWRQb3dlclRERC1MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFRTKSkgT0YKKwkJCQkJCQkJCQlVRS1UcmFuc21pdHRlZFBvd2VyCisKK1VMLVRyQ0gtSWRlbnRpdHkgOjo9CQkJCQlDSE9JQ0V7CisJZGNoCQkJCQkJCQkJVHJhbnNwb3J0Q2hhbm5lbElkZW50aXR5LAorCS0tIE5vdGU6IHRoZSByZWZlcmVuY2UgdG8gQ1BDSCBpbiB0aGUgZWxlbWVudCBuYW1lIGJlbG93IGlzIGluY29ycmVjdC4gVGhlIG5hbWUgaXMgbm90IGNoYW5nZWQKKwktLSB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCBSOTkuCisJcmFjaG9yY3BjaAkJCQkJCQlOVUxMLAorCXVzY2gJCQkJCQkJCVRyYW5zcG9ydENoYW5uZWxJZGVudGl0eQorfQorCitVRS1Qb3NpdGlvbmluZy1BY2N1cmFjeSA6Oj0JCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDcpKQorCisKK1VFLVBvc2l0aW9uaW5nLUNpcGhlclBhcmFtZXRlcnMgOjo9CQkJU0VRVUVOQ0UgeworCWNpcGhlcmluZ0tleUZsYWcJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEpKSwKKwljaXBoZXJpbmdTZXJpYWxOdW1iZXIJCQkJSU5URUdFUiAoMC4uNjU1MzUpCit9CisKK1VFLVBvc2l0aW9uaW5nLUVycm9yIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwllcnJvclJlYXNvbgkJCQkJCQlVRS1Qb3NpdGlvbmluZy1FcnJvckNhdXNlLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1hZGRpdGlvbmFsQXNzaXN0YW5jZURhdGFSZXF1ZXN0CQkJVUUtUG9zaXRpb25pbmctR1BTLUFkZGl0aW9uYWxBc3Npc3RhbmNlRGF0YVJlcXVlc3QJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctRXJyb3JDYXVzZSA6Oj0JCQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCW5vdEVub3VnaE9URE9BLUNlbGxzLAorCQkJCQkJCQkJCW5vdEVub3VnaEdQUy1TYXRlbGxpdGVzLAorCQkJCQkJCQkJCWFzc2lzdGFuY2VEYXRhTWlzc2luZywKKwkJCQkJCQkJCQlub3RBY2NvbXBsaXNoZWRHUFMtVGltaW5nT2ZDZWxsRnJhbWVzLAorCQkJCQkJCQkJCXVuZGVmaW5lZEVycm9yLAorCQkJCQkJCQkJCXJlcXVlc3REZW5pZWRCeVVzZXIsCisJCQkJCQkJCQkJbm90UHJvY2Vzc2VkQW5kVGltZW91dCwKKwkJCQkJCQkJCQlyZWZlcmVuY2VDZWxsTm90U2VydmluZ0NlbGwgfQorCitVRS1Qb3NpdGlvbmluZy1FdmVudFBhcmFtIDo6PQkJCQkJU0VRVUVOQ0UgeworCXJlcG9ydGluZ0Ftb3VudAkJCQkJCVJlcG9ydGluZ0Ftb3VudCwKKwlyZXBvcnRGaXJzdEZpeAkJCQkJCUJPT0xFQU4sCisJbWVhc3VyZW1lbnRJbnRlcnZhbAkJCQkJVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRJbnRlcnZhbCwKKwlldmVudFNwZWNpZmljSW5mbwkJCQkJVUUtUG9zaXRpb25pbmctRXZlbnRTcGVjaWZpY0luZm8KK30KKworVUUtUG9zaXRpb25pbmctRXZlbnRQYXJhbUxpc3QgOjo9CQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNZWFzRXZlbnQpKSBPRgorCQkJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUV2ZW50UGFyYW0KKworVUUtUG9zaXRpb25pbmctRXZlbnRTcGVjaWZpY0luZm8gOjo9CQkJQ0hPSUNFIHsKKwllN2EJCQkJCQkJCQlUaHJlc2hvbGRQb3NpdGlvbkNoYW5nZSwKKwllN2IJCQkJCQkJCQlUaHJlc2hvbGRTRk4tU0ZOLUNoYW5nZSwKKwllN2MJCQkJCQkJCQlUaHJlc2hvbGRTRk4tR1BTLVRPVworfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtQWNxdWlzaXRpb25Bc3Npc3RhbmNlIDo6PQlTRVFVRU5DRSB7CisJZ3BzLVJlZmVyZW5jZVRpbWUJCQkJCUlOVEVHRVIgKDAuLjYwNDc5OTk5OSksCisJdXRyYW4tR1BTUmVmZXJlbmNlVGltZQkJCQlVVFJBTi1HUFNSZWZlcmVuY2VUaW1lCQkJT1BUSU9OQUwsCisJc2F0ZWxsaXRlSW5mb3JtYXRpb25MaXN0CQkJQWNxdWlzaXRpb25TYXRJbmZvTGlzdAorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtQWRkaXRpb25hbEFzc2lzdGFuY2VEYXRhUmVxdWVzdCA6Oj0JCVNFUVVFTkNFIHsKKwlhbG1hbmFjUmVxdWVzdAkJCQkJCUJPT0xFQU4sCisJdXRjTW9kZWxSZXF1ZXN0CQkJCQkJQk9PTEVBTiwKKwlpb25vc3BoZXJpY01vZGVsUmVxdWVzdAkJCQlCT09MRUFOLAorCW5hdmlnYXRpb25Nb2RlbFJlcXVlc3QJCQkJQk9PTEVBTiwKKwlkZ3BzQ29ycmVjdGlvbnNSZXF1ZXN0CQkJCUJPT0xFQU4sCisJcmVmZXJlbmNlTG9jYXRpb25SZXF1ZXN0CQkJQk9PTEVBTiwKKwlyZWZlcmVuY2VUaW1lUmVxdWVzdAkJCQlCT09MRUFOLAorCWFxdWlzaXRpb25Bc3Npc3RhbmNlUmVxdWVzdAkJCUJPT0xFQU4sCisJcmVhbFRpbWVJbnRlZ3JpdHlSZXF1ZXN0CQkJQk9PTEVBTiwKKwluYXZNb2RlbEFkZERhdGFSZXF1ZXN0CQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1OYXZNb2RlbEFkZERhdGFSZXEJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1BbG1hbmFjIDo6PQkJCQkJU0VRVUVOQ0UgeworCXduLWEJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwlhbG1hbmFjU2F0SW5mb0xpc3QJCQkJCUFsbWFuYWNTYXRJbmZvTGlzdCwKKwlzdi1HbG9iYWxIZWFsdGgJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgzNjQpKQkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEgOjo9CQkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VMb2NhdGlvbgkJCVJlZmVyZW5jZUxvY2F0aW9uCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1OYXZpZ2F0aW9uTW9kZWwJCQkJVUUtUG9zaXRpb25pbmctR1BTLU5hdmlnYXRpb25Nb2RlbAkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtSW9ub3NwaGVyaWNNb2RlbAkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtSW9ub3NwaGVyaWNNb2RlbAkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtQWxtYW5hYwkJCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1BbG1hbmFjCQkJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLUFjcXVpc2l0aW9uQXNzaXN0YW5jZQkJVUUtUG9zaXRpb25pbmctR1BTLUFjcXVpc2l0aW9uQXNzaXN0YW5jZQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLVJlYWwtdGltZUludGVncml0eQkJCUJhZFNhdExpc3QJCQkJCQkJT1BUSU9OQUwsCisJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlQ2VsbEluZm8JCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1ER1BTLUNvcnJlY3Rpb25zIDo6PQkJU0VRVUVOQ0UgeworCWdwcy1UT1cJCQkJCQkJCUlOVEVHRVIgKDAuLjYwNDc5OSksCisJc3RhdHVzSGVhbHRoCQkJCQkJRGlmZkNvcnJlY3Rpb25TdGF0dXMsCisJZGdwcy1Db3JyZWN0aW9uU2F0SW5mb0xpc3QJCQlER1BTLUNvcnJlY3Rpb25TYXRJbmZvTGlzdAorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtSW9ub3NwaGVyaWNNb2RlbCA6Oj0JCVNFUVVFTkNFIHsKKwlhbGZhMAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWFsZmExCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYWxmYTIJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwlhbGZhMwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWJldGEwCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJYmV0YTEJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKSwKKwliZXRhMgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWJldGEzCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSkKK30KKworVUUtUG9zaXRpb25pbmctR1BTLU1lYXN1cmVtZW50UmVzdWx0cyA6Oj0JCVNFUVVFTkNFIHsKKwlyZWZlcmVuY2VUaW1lCQkJCQkJQ0hPSUNFIHsKKwkJdXRyYW4tR1BTUmVmZXJlbmNlVGltZVJlc3VsdAkJVVRSQU4tR1BTUmVmZXJlbmNlVGltZVJlc3VsdCwKKwkJZ3BzLVJlZmVyZW5jZVRpbWVPbmx5CQkJCUlOVEVHRVIgKDAuLjYwNDc5OTk5OSkKKwl9LAorCWdwcy1NZWFzdXJlbWVudFBhcmFtTGlzdAkJCUdQUy1NZWFzdXJlbWVudFBhcmFtTGlzdAorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtTmF2aWdhdGlvbk1vZGVsIDo6PQkJCVNFUVVFTkNFIHsKKwluYXZpZ2F0aW9uTW9kZWxTYXRJbmZvTGlzdAkJCU5hdmlnYXRpb25Nb2RlbFNhdEluZm9MaXN0Cit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1OYXZNb2RlbEFkZERhdGFSZXEgOjo9CQlTRVFVRU5DRSB7CisJZ3BzLVdlZWsJCQkJCQkJSU5URUdFUiAoMC4uMTAyMyksCisJLS0gU1BBUkU6IGdwcy1Ub2UsIE1heCA9IDE2NworCS0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCisJZ3BzLVRvZQkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwktLSBTUEFSRTogdFRvZUxpbWl0LCBNYXggPSAxMAorCS0tIFZhbHVlcyBhYm92ZSBNYXggYXJlIHNwYXJlCisJdFRvZUxpbWl0CQkJCQkJCUlOVEVHRVIgKDAuLjE1KSwKKwlzYXREYXRhTGlzdAkJCQkJCQlTYXREYXRhTGlzdAorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlQ2VsbEluZm8gOjo9CQlTRVFVRU5DRXsKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcmVmZXJlbmNlSWRlbnRpdHkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlDZWxsUGFyYW1ldGVyc0lECisJCX0KKwl9Cit9CisKK1VFLVBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lIDo6PQkJCVNFUVVFTkNFIHsKKwlncHMtV2VlawkJCQkJCQlJTlRFR0VSICgwLi4xMDIzKSwKKwlncHMtdG93LTFtc2VjCQkJCQkJR1BTLVRPVy0xbXNlYywJdXRyYW4tR1BTUmVmZXJlbmNlVGltZQkJCQlVVFJBTi1HUFNSZWZlcmVuY2VUaW1lCQkJCU9QVElPTkFMLAorCXNmbi10b3ctVW5jZXJ0YWludHkJCQkJCVNGTi1UT1ctVW5jZXJ0YWludHkJCQkJCU9QVElPTkFMLAorCXV0cmFuLUdQUy1EcmlmdFJhdGUJCQkJCVVUUkFOLUdQUy1EcmlmdFJhdGUJCQkJCU9QVElPTkFMLAorCWdwcy1UT1ctQXNzaXN0TGlzdAkJCQkJR1BTLVRPVy1Bc3Npc3RMaXN0CQkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsIDo6PQkJCQlTRVFVRU5DRSB7CisJYTEJCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyNCkpLAorCWEwCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKSwKKwl0LW90CQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg4KSksCisJd24tdAkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWRlbHRhLXQtTFMJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCXduLWxzZgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWRuCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCWRlbHRhLXQtTFNGCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQorfQorCitVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMgOjo9CQkJCVNFUVVFTkNFIHsKKwlpcC1TcGFjaW5nCQkJCQkJCUlQLVNwYWNpbmcsCisJaXAtTGVuZ3RoCQkJCQkJCUlQLUxlbmd0aCwKKwlpcC1PZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uOSksCisJc2VlZAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCWJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJCUJ1cnN0TW9kZVBhcmFtZXRlcnMgCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtcjQgOjo9CQkJU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCWlwLVNwYWNpbmcJCQkJCQkJSVAtU3BhY2luZywKKwkJCWlwLUxlbmd0aAkJCQkJCQlJUC1MZW5ndGgsCisJCQlpcC1PZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uOSksCisJCQlzZWVkCQkJCQkJCQlJTlRFR0VSICgwLi42MykKKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJaXAtU3BhY2luZy1UREQJCQkJCQlJUC1TcGFjaW5nLVRERCwKKwkJCWlwLXNsb3QJCQkJCQkJCUlOVEVHRVIgKDAuLjE0KSwKKwkJCWlwLVN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCQkJaXAtUENDUENHCQkJCQkJCUlQLVBDQ1BDSC1yNAkJCU9QVElPTkFMCisJCX0KKwl9LAorCWJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJCUJ1cnN0TW9kZVBhcmFtZXRlcnMJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQgOjo9CVNFUVVFTkNFIHsKKwlpcC1TcGFjaW5nCQkJCQkJCUlQLVNwYWNpbmctVERELAorCWlwLXNsb3QJCQkJCQkJCUlOVEVHRVIgKDAuLjE0KSwKKwlpcC1TdGFydAkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKKwlpcC1QQ0NQQ0cJCQkJCQkJSVAtUENDUENILXI0CQkJCQlPUFRJT05BTCwKKwlidXJzdE1vZGVQYXJhbWV0ZXJzCQkJCQlCdXJzdE1vZGVQYXJhbWV0ZXJzCit9CisKK1VFLVBvc2l0aW9uaW5nLU1lYXN1cmVkUmVzdWx0cyA6Oj0JCQkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50CQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50CQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLVBvc2l0aW9uRXN0aW1hdGVJbmZvCQkJCVVFLVBvc2l0aW9uaW5nLVBvc2l0aW9uRXN0aW1hdGVJbmZvCQkJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctR1BTLU1lYXN1cmVtZW50CQkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtTWVhc3VyZW1lbnRSZXN1bHRzCQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1FcnJvcgkJCQkJCQlVRS1Qb3NpdGlvbmluZy1FcnJvcgkJCQkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1NZWFzdXJlZFJlc3VsdHMtdjM5MGV4dCA6Oj0JCVNFUVVFTkNFIHsKKwl1ZS1Qb3NpdGlvbmluZy1PVERPQS1NZWFzdXJlbWVudC12MzkwZXh0CQlVRS1Qb3NpdGlvbmluZy1PVERPQS1NZWFzdXJlbWVudC12MzkwZXh0Cit9CisKK1VFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50IDo6PQkJCQkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5CQkJCVVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LAorCXJlcG9ydENyaXRlcmlhCQkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0Q3JpdGVyaWEsCisJdWUtcG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUdQUy1Bc3Npc3RhbmNlRGF0YQkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnQtdjM5MGV4dCA6Oj0JIAkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXYzOTBleHQJCVVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXYzOTBleHQJCQlPUFRJT05BTCwKKwltZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlNZWFzdXJlbWVudFZhbGlkaXR5CQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIJCQorCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktcjQsCisJbWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJCQkJTWVhc3VyZW1lbnRWYWxpZGl0eQkJCQkJCU9QVElPTkFMLAorCXJlcG9ydENyaXRlcmlhCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctUmVwb3J0Q3JpdGVyaWEsCisJdWUtcG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtcjQJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1HUFMtQXNzaXN0YW5jZURhdGEJCQkJVUUtUG9zaXRpb25pbmctR1BTLUFzc2lzdGFuY2VEYXRhCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50LXY3eHlleHQgOjo9CQkJU0VRVUVOQ0UgeworCXVlLXBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5CQkJCVVFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXY3eHlleHQKK30KKworVUUtUG9zaXRpb25pbmctTWVhc3VyZW1lbnRFdmVudFJlc3VsdHMgOjo9CQlDSE9JQ0UgeworCWV2ZW50N2EJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLVBvc2l0aW9uRXN0aW1hdGVJbmZvLAorCWV2ZW50N2IJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50LAorCWV2ZW50N2MJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1NZWFzdXJlbWVudFJlc3VsdHMsCisJc3BhcmUJCQkJCQkJCU5VTEwJCit9CisKK1VFLVBvc2l0aW9uaW5nLU1lYXN1cmVtZW50SW50ZXJ2YWwgOjo9CQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJZTUsIGUxNSwgZTYwLCBlMzAwLAorCQkJCQkJCQkJCWU5MDAsIGUxODAwLCBlMzYwMCwgZTcyMDAgfQorCitVRS1Qb3NpdGlvbmluZy1NZXRob2RUeXBlIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJdWUtQXNzaXN0ZWQsCisJCQkJCQkJCQkJdWUtQmFzZWQsCisJCQkJCQkJCQkJdWUtQmFzZWRQcmVmZXJyZWQsCisJCQkJCQkJCQkJdWUtQXNzaXN0ZWRQcmVmZXJyZWQgfQorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YSA6Oj0JCVNFUVVFTkNFIHsKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mbwkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0CQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0CQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0IDo6PQlTRVFVRU5DRSB7CisJdWUtcG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8JCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mby1yNAkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdAkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0LXI0CQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0ZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gSW4gY2FzZSBvZiBUREQgdGhlc2UgSVBETCBwYXJhbWV0ZXJzIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSByZWZlcmVuY2UgY2VsbCBpbnN0ZWFkIG9mCisJLS0gSVBETCBQYXJhbWV0ZXJzIGluIElFIFVFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvCisJdWUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1UREQtcjQtZXh0CU9QVElPTkFMLAorCS0tIFRoZXNlIElQREwgcGFyYW1ldGVycyBzaGFsbCBiZSB1c2VkIGZvciB0aGUgbmVpZ2hib3VyIGNlbGxzIGluIGNhc2Ugb2YgVEREIGluc3RlYWQgb2YKKwktLSBJUERMIFBhcmFtZXRlcnMgaW4gSUUgVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm9MaXN0LiBUaGUgY2VsbHMgc2hhbGwgYmUgCisJLS0gbGlzdGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIGluIElFIFVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvTGlzdAorCXVlLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1URERMaXN0LXI0LWV4dAlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERETGlzdC1yNC1leHQJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLVVFQiA6Oj0JCVNFUVVFTkNFIHsKKwl1ZS1wb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mby1VRUIJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mby1VRUIJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QtVUVCCQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxMaXN0LVVFQgkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMtVERETGlzdC1yNC1leHQgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1UREQtcjQtZXh0CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50IDo6PQkJCVNFUVVFTkNFIHsKKwlzZm4JCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcmVmZXJlbmNlQ2VsbElEZW50aXR5CQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQkJdWUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMkluZm8JVUUtUlgtVFgtVGltZURpZmZlcmVuY2VUeXBlMkluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcmVmZXJlbmNlQ2VsbElkZW50aXR5CQkJQ2VsbFBhcmFtZXRlcnNJRAorCQl9CisJfSwKKwluZWlnaGJvdXJMaXN0CQkJCQkJTmVpZ2hib3VyTGlzdAkJCQkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLU1lYXN1cmVtZW50LXYzOTBleHQgOjo9CQkJU0VRVUVOQ0UgeworCW5laWdoYm91ckxpc3QtdjM5MGV4dAkJCQkJCU5laWdoYm91ckxpc3QtdjM5MGV4dAorfQorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mbyA6Oj0gU0VRVUVOQ0UgeworCW1vZGVTcGVjaWZpY0luZm8JQ0hPSUNFCXsKKwkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRXsKKwkJCWNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQorCQl9CisJfSwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUlQREwtUGFyZW1ldGVycwkJCQkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzCQkJCQlPUFRJT05BTCwKKwlzZm4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlCQkJU0ZOLVNGTi1SZWxUaW1lRGlmZmVyZW5jZTEsCisJc2ZuLVNGTi1EcmlmdAkJCQkJCVNGTi1TRk4tRHJpZnQgCQkJCQkJT1BUSU9OQUwsCisJc2VhcmNoV2luZG93U2l6ZQkJCQkJT1RET0EtU2VhcmNoV2luZG93U2l6ZSwKKwlwb3NpdGlvbmluZ01vZGUgCUNIT0lDRXsKKwkJdWVCYXNlZAkJCQkJCQkJCVNFUVVFTkNFIHt9LAorCQl1ZUFzc2lzdGVkCQkJCQkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm8tcjQgOjo9IFNFUVVFTkNFIHsKKwltb2RlU3BlY2lmaWNJbmZvCUNIT0lDRQl7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvCisJCX0sCisJCXRkZAkJCQkJCQkJU0VRVUVOQ0V7CisJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKKwkJfQorCX0sCisJZnJlcXVlbmN5SW5mbwkJCQkJCUZyZXF1ZW5jeUluZm8JCQkJCQlPUFRJT05BTCwKKwl1ZS1wb3NpdGlvbmluZy1JUERMLVBhcmVtZXRlcnMJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1yNAlPUFRJT05BTCwKKwlzZm4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlCQkJU0ZOLVNGTi1SZWxUaW1lRGlmZmVyZW5jZTEsCisJc2ZuLU9mZnNldC1WYWxpZGl0eQkJCQkJU0ZOLU9mZnNldC1WYWxpZGl0eQkJCQkJT1BUSU9OQUwsCisJc2ZuLVNGTi1EcmlmdAkJCQkJCVNGTi1TRk4tRHJpZnQJCQkJCQlPUFRJT05BTCwKKwlzZWFyY2hXaW5kb3dTaXplCQkJCQlPVERPQS1TZWFyY2hXaW5kb3dTaXplLAorCXBvc2l0aW9uaW5nTW9kZSAJQ0hPSUNFIHsKKwkJdWVCYXNlZAkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXJlbGF0aXZlTm9ydGgJCQkJCQlJTlRFR0VSICgtMjAwMDAuLjIwMDAwKQkJCQlPUFRJT05BTCwKKwkJCXJlbGF0aXZlRWFzdAkJCQkJCUlOVEVHRVIgKC0yMDAwMC4uMjAwMDApCQkJCU9QVElPTkFMLAorCQkJcmVsYXRpdmVBbHRpdHVkZQkJCQkJSU5URUdFUiAoLTQwMDAuLjQwMDApCQkJCU9QVElPTkFMLAorCQkJZmluZVNGTi1TRk4JCQkJCQkJRmluZVNGTi1TRk4JCQkJCQkJT1BUSU9OQUwsCisJCQktLSBhY3R1YWwgdmFsdWUgcm91bmRUcmlwVGltZSA9IChJRSB2YWx1ZSAqIDAuMDYyNSkgKyA4NzYKKwkJCXJvdW5kVHJpcFRpbWUJCQkJCQlJTlRFR0VSICgwLi4gMzI3NjYpCQkJCQlPUFRJT05BTAorCQl9LAorCQl1ZUFzc2lzdGVkCQkJCQkJCQlTRVFVRU5DRSB7fQorCX0KK30KKworVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm8tVUVCIDo6PSBTRVFVRU5DRSB7CisJbW9kZVNwZWNpZmljSW5mbwlDSE9JQ0UJeworCQlmZGQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbworCQl9LAorCQl0ZGQJCQkJCQkJCVNFUVVFTkNFeworCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CisJCX0KKwl9LAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJdWUtcG9zaXRpb25pbmctSVBETC1QYXJlbWV0ZXJzCQlVRS1Qb3NpdGlvbmluZy1JUERMLVBhcmFtZXRlcnMJCU9QVElPTkFMLAorCXNmbi1TRk4tUmVsVGltZURpZmZlcmVuY2UJCQlTRk4tU0ZOLVJlbFRpbWVEaWZmZXJlbmNlMSwKKwlzZm4tU0ZOLURyaWZ0CQkJCQkJU0ZOLVNGTi1EcmlmdAkJCQkJCU9QVElPTkFMLAorCXNlYXJjaFdpbmRvd1NpemUJCQkJCU9URE9BLVNlYXJjaFdpbmRvd1NpemUsCisJcmVsYXRpdmVOb3J0aAkJCQkJCUlOVEVHRVIgKC0yMDAwMC4uMjAwMDApCQkJCU9QVElPTkFMLAorCXJlbGF0aXZlRWFzdAkJCQkJCUlOVEVHRVIgKC0yMDAwMC4uMjAwMDApCQkJCU9QVElPTkFMLAorCXJlbGF0aXZlQWx0aXR1ZGUJCQkJCUlOVEVHRVIgKC00MDAwLi40MDAwKQkJCQlPUFRJT05BTCwKKwlmaW5lU0ZOLVNGTgkJCQkJCQlGaW5lU0ZOLVNGTiwKKwktLSBhY3R1YWwgdmFsdWUgcm91bmRUcmlwVGltZSA9IChJRSB2YWx1ZSAqIDAuMDYyNSkgKyA4NzYKKwlyb3VuZFRyaXBUaW1lCQkJCQkJSU5URUdFUiAoMC4uMzI3NjYpCQkJCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbEluZm8KKworVUUtUG9zaXRpb25pbmctT1RET0EtTmVpZ2hib3VyQ2VsbExpc3QtcjQgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsSW5mby1yNAorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1OZWlnaGJvdXJDZWxsTGlzdC1VRUIgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCVVFLVBvc2l0aW9uaW5nLU9URE9BLU5laWdoYm91ckNlbGxJbmZvLVVFQgorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1RdWFsaXR5IDo6PQkJCVNFUVVFTkNFIHsKKwlzdGRSZXNvbHV0aW9uCQkJCQkJQklUIFNUUklORyAoU0laRSAoMikpLAorCW51bWJlck9mT1RET0EtTWVhc3VyZW1lbnRzCQkJQklUIFNUUklORyAoU0laRSAoMykpLAorCXN0ZE9mT1RET0EtTWVhc3VyZW1lbnRzCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDUpKQorfSAKKworVUUtUG9zaXRpb25pbmctT1RET0EtUmVmZXJlbmNlQ2VsbEluZm8gOjo9CQkJU0VRVUVOQ0UgeworCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpCQkJCQkJCQkJT1BUSU9OQUwsCisJbW9kZVNwZWNpZmljSW5mbyBDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvCisJCX0sCisJCXRkZAkJCQkJCQkJCQlTRVFVRU5DRXsKKwkJCWNlbGxBbmRDaGFubmVsSWRlbnRpdHkJCQkJQ2VsbEFuZENoYW5uZWxJZGVudGl0eQorCQl9CisJfSwKKwlmcmVxdWVuY3lJbmZvCQkJCQkJRnJlcXVlbmN5SW5mbwkJCQkJCU9QVElPTkFMLAorCXBvc2l0aW9uaW5nTW9kZSBDSE9JQ0UgeworCQl1ZUJhc2VkCQkJCQkJCQkJU0VRVUVOQ0Uge30sCisJCXVlQXNzaXN0ZWQJCQkJCQkJCVNFUVVFTkNFIHt9CisJfSwKKwl1ZS1wb3NpdGlvbmluZy1JUERMLVBhcmVtZXRlcnMJCQkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLU9URE9BLVJlZmVyZW5jZUNlbGxJbmZvLXI0IDo6PQlTRVFVRU5DRSB7CisJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkJCQkJCQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvIENIT0lDRSB7CisJCWZkZAkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQkJCVNFUVVFTkNFeworCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CisJCX0KKwl9LAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJcG9zaXRpb25pbmdNb2RlIENIT0lDRSB7CisJCXVlQmFzZWQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljZWxsUG9zaXRpb24JCQkJCQkJCVJlZmVyZW5jZUNlbGxQb3NpdGlvbglPUFRJT05BTCwKKwkJCS0tIGFjdHVhbCB2YWx1ZSByb3VuZFRyaXBUaW1lID0gKElFIHZhbHVlICogMC4wNjI1KSArIDg3NgorCQkJcm91bmRUcmlwVGltZQkJCQkJCUlOVEVHRVIgKDAuLjMyNzY2KQkJCQlPUFRJT05BTAorCQl9LAorCQl1ZUFzc2lzdGVkCQkJCQkJCQlTRVFVRU5DRSB7fQorCX0sCisJdWUtcG9zaXRpb25pbmctSVBETC1QYXJlbWV0ZXJzCQkJCVVFLVBvc2l0aW9uaW5nLUlQREwtUGFyYW1ldGVycy1yNAlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1PVERPQS1SZWZlcmVuY2VDZWxsSW5mby1VRUIgOjo9CQkJU0VRVUVOQ0UgeworCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpCQkJCQlPUFRJT05BTCwKKwltb2RlU3BlY2lmaWNJbmZvIENIT0lDRSB7CisJCWZkZAkJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQkJCVNFUVVFTkNFeworCQkJY2VsbEFuZENoYW5uZWxJZGVudGl0eQkJCQlDZWxsQW5kQ2hhbm5lbElkZW50aXR5CisJCX0KKwl9LAorCWZyZXF1ZW5jeUluZm8JCQkJCQlGcmVxdWVuY3lJbmZvCQkJCQkJT1BUSU9OQUwsCisJY2VsbFBvc2l0aW9uCQkJCQkJUmVmZXJlbmNlQ2VsbFBvc2l0aW9uCQkJCU9QVElPTkFMLAorCS0tIGFjdHVhbCB2YWx1ZSByb3VuZFRyaXBUaW1lID0gKElFIHZhbHVlICogMC4wNjI1KSArIDg3NgorCXJvdW5kVHJpcFRpbWUJCQkJCQlJTlRFR0VSICgwLi4zMjc2NikJCQkJCU9QVElPTkFMLAorCXVlLXBvc2l0aW9uaW5nLUlQREwtUGFyZW1ldGVycwkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1Qb3NpdGlvbkVzdGltYXRlSW5mbyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwlyZWZlcmVuY2VUaW1lCQkJCQlDSE9JQ0UgeworCQl1dHJhbi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0CQlVVFJBTi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0LAorCQlncHMtUmVmZXJlbmNlVGltZU9ubHkJCQkJSU5URUdFUiAoMC4uNjA0Nzk5OTk5KSwKKwkJY2VsbC1UaW1pbmcJCQkJCQkJU0VRVUVOQ0UgeworCQkJc2ZuCQkJCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KSwKKwkJCW1vZGVTcGVjaWZpY0luZm8gCQkJCUNIT0lDRSB7CisJCQkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCQlwcmltYXJ5Q1BJQ0gtSW5mbwkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJCQl9LAorCQkJCXRkZAkJCQkJCQkJCVNFUVVFTkNFeworCQkJCQljZWxsQW5kQ2hhbm5lbElkZW50aXR5CQkJCUNlbGxBbmRDaGFubmVsSWRlbnRpdHkKKwkJCQl9CisJCQl9CisJCX0KKwl9LAorCXBvc2l0aW9uRXN0aW1hdGUJCQkJCVBvc2l0aW9uRXN0aW1hdGUKK30KKworVUUtUG9zaXRpb25pbmctUmVwb3J0Q3JpdGVyaWEgOjo9CQkJCUNIT0lDRSB7CisJdWUtcG9zaXRpb25pbmctUmVwb3J0aW5nQ3JpdGVyaWEJCQkJVUUtUG9zaXRpb25pbmctRXZlbnRQYXJhbUxpc3QsCisJcGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhCQkJUGVyaW9kaWNhbFJlcG9ydGluZ0NyaXRlcmlhLAorCW5vUmVwb3J0aW5nCQkJCQkJCU5VTEwKK30KKworVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHkgOjo9CQkJU0VRVUVOQ0UgeworCW1ldGhvZFR5cGUJCQkJCQkJVUUtUG9zaXRpb25pbmctTWV0aG9kVHlwZSwKKwlwb3NpdGlvbmluZ01ldGhvZAkJCQkJUG9zaXRpb25pbmdNZXRob2QsCisJLS0gZHVtbXkxIGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uIGFuZCBpdCBzaG91bGQKKwktLSBiZSBpZ25vcmVkLgorCWR1bW15MQkJCQkJCQkJVUUtUG9zaXRpb25pbmctUmVzcG9uc2VUaW1lLAorCWhvcml6b250YWwtQWNjdXJhY3kJCQkJCVVFLVBvc2l0aW9uaW5nLUFjY3VyYWN5CQkJCU9QVElPTkFMLAorCWdwcy1UaW1pbmdPZkNlbGxXYW50ZWQJCQkJQk9PTEVBTiwKKwktLSBkdW1teTIgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24gYW5kIGl0IHNob3VsZAorCS0tIGJlIGlnbm9yZWQuCisJZHVtbXkyCQkJCQkJCQlCT09MRUFOLAorCWFkZGl0aW9uYWxBc3Npc3RhbmNlRGF0YVJlcXVlc3QJCUJPT0xFQU4sCisJZW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uCQkJRW52aXJvbm1lbnRDaGFyYWN0ZXJpc2F0aW9uCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctUmVwb3J0aW5nUXVhbnRpdHktdjM5MGV4dCA6Oj0JCVNFUVVFTkNFIHsKKwl2ZXJ0aWNhbC1BY2N1cmFjeQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1BY2N1cmFjeQorfQorCitVRS1Qb3NpdGlvbmluZy1SZXBvcnRpbmdRdWFudGl0eS1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJbWV0aG9kVHlwZQkJCQkJCQlVRS1Qb3NpdGlvbmluZy1NZXRob2RUeXBlLAorCXBvc2l0aW9uaW5nTWV0aG9kCQkJCQlQb3NpdGlvbmluZ01ldGhvZCwKKwlob3Jpem9udGFsQWNjdXJhY3kJCQkJCVVFLVBvc2l0aW9uaW5nLUFjY3VyYWN5CQkJCU9QVElPTkFMLAorCXZlcnRpY2FsQWNjdXJhY3kJCQkJCVVFLVBvc2l0aW9uaW5nLUFjY3VyYWN5CQkJCU9QVElPTkFMLAorCWdwcy1UaW1pbmdPZkNlbGxXYW50ZWQJCQkJQk9PTEVBTiwKKwlhZGRpdGlvbmFsQXNzaXN0YW5jZURhdGFSZXEJCQlCT09MRUFOLAorCWVudmlyb25tZW50Q2hhcmFjdGVyaXNhdGlvbgkJCUVudmlyb25tZW50Q2hhcmFjdGVyaXNhdGlvbgkJCU9QVElPTkFMCit9CisKK1VFLVBvc2l0aW9uaW5nLVJlcG9ydGluZ1F1YW50aXR5LXY3eHlleHQgOjo9CVNFUVVFTkNFIHsKKwl2ZWxvY2l0eVJlcXVlc3RlZAkJCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwKK30KKworVUUtUG9zaXRpb25pbmctUmVzcG9uc2VUaW1lIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlzMSwgczIsIHM0LCBzOCwgczE2LAorCQkJCQkJCQkJCXMzMiwgczY0LCBzMTI4IH0KKworLS0gU1BBUkU6IFVUUkEtQ2FycmllclJTU0ksIE1heCA9IDc2CistLSBWYWx1ZXMgYWJvdmUgTWF4IGFyZSBzcGFyZQorVVRSQS1DYXJyaWVyUlNTSSA6Oj0JCQkJSU5URUdFUiAoMC4uMTI3KQorCitVVFJBTi1HUFMtRHJpZnRSYXRlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCXV0cmFuLUdQU0RyaWZ0MCwgdXRyYW4tR1BTRHJpZnQxLCB1dHJhbi1HUFNEcmlmdDIsCisJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdDUsIHV0cmFuLUdQU0RyaWZ0MTAsIHV0cmFuLUdQU0RyaWZ0MTUsCisJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdDI1LCB1dHJhbi1HUFNEcmlmdDUwLCB1dHJhbi1HUFNEcmlmdC0xLAorCQkJCQkJCQkJdXRyYW4tR1BTRHJpZnQtMiwgdXRyYW4tR1BTRHJpZnQtNSwgdXRyYW4tR1BTRHJpZnQtMTAsCisJCQkJCQkJCQl1dHJhbi1HUFNEcmlmdC0xNSwgdXRyYW4tR1BTRHJpZnQtMjUsIHV0cmFuLUdQU0RyaWZ0LTUwfQorCitVVFJBTi1HUFNSZWZlcmVuY2VUaW1lIDo6PQkJCQlTRVFVRU5DRSB7CisJLS0gRm9yIHV0cmFuLUdQU1RpbWluZ09mQ2VsbCB2YWx1ZXMgYWJvdmUgMjMyMjQzMTk5OTk5OSBhcmUgbm90IAorCS0tIHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJLS0gQWN0dWFsIHZhbHVlIHV0cmFuLUdQU1RpbWluZ09mQ2VsbCA9IChtcy1wYXJ0ICogNDI5NDk2NzI5NikgKyBscy1wYXJ0CisJdXRyYW4tR1BTVGltaW5nT2ZDZWxsCQkJU0VRVUVOQ0UgeworCQltcy1wYXJ0IAkJCQkJCUlOVEVHRVIgKDAuLjEwMjMpLAorCQlscy1wYXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCisJfSwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcmVmZXJlbmNlSWRlbnRpdHkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlDZWxsUGFyYW1ldGVyc0lECisJCX0KKwl9IAkJCQlPUFRJT05BTCwKKwlzZm4JCQkJCQkJCQlJTlRFR0VSICgwLi40MDk1KQorfQorCitVVFJBTi1HUFNSZWZlcmVuY2VUaW1lUmVzdWx0IDo6PQkJCQlTRVFVRU5DRSB7CisJLS0gRm9yIHVlLUdQU1RpbWluZ09mQ2VsbCB2YWx1ZXMgYWJvdmUgMzcxNTg5MTE5OTk5OTkgYXJlIG5vdCAKKwktLSB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCS0tIEFjdHVhbCB2YWx1ZSB1ZS1HUFNUaW1pbmdPZkNlbGwgPSAobXMtcGFydCAqIDQyOTQ5NjcyOTYpICsgbHMtcGFydAorCXVlLUdQU1RpbWluZ09mQ2VsbAkJCVNFUVVFTkNFIHsKKwkJbXMtcGFydCAJCQkJCQlJTlRFR0VSICgwLi4gMTYzODMpLAorCQlscy1wYXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCisJfSwKKwltb2RlU3BlY2lmaWNJbmZvCQkJCUNIT0lDRSB7CisJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJcmVmZXJlbmNlSWRlbnRpdHkJCQkJUHJpbWFyeUNQSUNILUluZm8KKwkJfSwKKwkJdGRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQlyZWZlcmVuY2VJZGVudGl0eQkJCQlDZWxsUGFyYW1ldGVyc0lECisJCX0KKwl9LAorCXNmbgkJCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpCit9CisKK1ZhcmlhbmNlT2ZSTEMtQnVmZmVyUGF5bG9hZCA6Oj0JCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCXBsdjAsIHBsdjQsIHBsdjgsIHBsdjE2LCBwbHYzMiwgcGx2NjQsIAorCQkJCQkJCQkJCXBsdjEyOCwgcGx2MjU2LCBwbHY1MTIsIHBsdjEwMjQsIAorCQkJCQkJCQkJCXBsdjJrLCBwbHY0aywgcGx2OGssIHBsdjE2aywgc3BhcmUyLCBzcGFyZTEgfQorCitWZWxvY2l0eUVzdGltYXRlCTo6PQkJCQlDSE9JQ0UgeworCWhvcml6b250YWxWZWxvY2l0eQkJCQkJCQkJSG9yaXpvbnRhbFZlbG9jaXR5LAorCWhvcml6b250YWxXaXRoVmVydGljYWxWZWxvY2l0eQkJCQkJSG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5LAorCWhvcml6b250YWxWZWxvY2l0eVdpdGhVbmNlcnRhaW50eQkJCQlIb3Jpem9udGFsVmVsb2NpdHlXaXRoVW5jZXJ0YWludHksCisJaG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5QW5kVW5jZXJ0YWludHkJSG9yaXpvbnRhbFdpdGhWZXJ0aWNhbFZlbG9jaXR5QW5kVW5jZXJ0YWludHkKK30KKworLS0gQWN0dWFsIHZhbHVlIFcgPSBJRSB2YWx1ZSAqIDAuMQorVyA6Oj0JCQkJCQkJCUlOVEVHRVIgKDAuLjIwKQorCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tCistLSAgICAgT1RIRVIgSU5GT1JNQVRJT04gRUxFTUVOVFMgKDEwLjMuOCkKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQkNDIDo6PQkJCQkJCQkJSU5URUdFUiAoMC4uNykKKworQkNDSC1Nb2RpZmljYXRpb25JbmZvIDo6PQkJCVNFUVVFTkNFIHsKKwltaWItVmFsdWVUYWcJCQkJCQlNSUItVmFsdWVUYWcsCisJYmNjaC1Nb2RpZmljYXRpb25UaW1lCQkJCUJDQ0gtTW9kaWZpY2F0aW9uVGltZQkJCQlPUFRJT05BTAorfQorCistLSBBY3R1YWwgdmFsdWUgQkNDSC1Nb2RpZmljYXRpb25UaW1lID0gSUUgdmFsdWUgKiA4CitCQ0NILU1vZGlmaWNhdGlvblRpbWUgOjo9CQkJSU5URUdFUiAoMC4uNTExKQorCitCU0lDIDo6PQkJCQkJCQlTRVFVRU5DRSB7CisJbmNjCQkJCQkJCQkJTkNDLAorCWJjYwkJCQkJCQkJCUJDQworfQorCitDQlMtRFJYLUxldmVsMUluZm9ybWF0aW9uIDo6PQkJU0VRVUVOQ0UgeworCWN0Y2gtQWxsb2NhdGlvblBlcmlvZAkJCQlJTlRFR0VSICgxLi4yNTYpLAorCWNicy1GcmFtZU9mZnNldAkJCQkJCUlOVEVHRVIgKDAuLjI1NSkKK30KKworQ0JTLURSWC1MZXZlbDFJbmZvcm1hdGlvbi1leHRlbnNpb24tcjYgOjo9CUVOVU1FUkFURUQge3A4LCBwMTYsIHAzMiwgcDY0LCBwMTI4LCBwMjU2fQorCitDRE1BMjAwMC1NZXNzYWdlIDo6PQkJCQlTRVFVRU5DRSB7CisJbXNnLVR5cGUJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpLAorCXBheWxvYWQJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEuLjUxMikpCit9CisKK0NETUEyMDAwLU1lc3NhZ2VMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCisJCQkJCQkJCQkJCUNETUEyMDAwLU1lc3NhZ2UKKworQ0RNQTIwMDAtVU1UUy1GcmVxdWVuY3ktTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhOdW1DRE1BMjAwMEZyZXFzKSkgT0YKKwkJCQkJCQkJCQkJRnJlcXVlbmN5SW5mb0NETUEyMDAwCisKK0NlbGxWYWx1ZVRhZyA6Oj0JCQkJCQlJTlRFR0VSICgxLi40KQorCistLUFjdHVhbCB2YWx1ZSA9IDJeKElFIHZhbHVlKSAKK0V4cGlyYXRpb25UaW1lRmFjdG9yIDo6PQkJCQlJTlRFR0VSICgxLi44KQorCitGREQtVU1UUy1GcmVxdWVuY3ktTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE51bUZEREZyZXFzKSkgT0YKKwkJCQkJCQkJCQkJRnJlcXVlbmN5SW5mb0ZERAorCitGcmVxdWVuY3lJbmZvQ0RNQTIwMDAgOjo9CQkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJYmFuZC1DbGFzcwkJQklUIFNUUklORyAoU0laRSAoNSkpLAorCQkJCQkJCQkJCQljZG1hLUZyZXEJCUJJVCBTVFJJTkcgKFNJWkUoMTEpKQorfQorCitHRVJBTi1TeXN0ZW1JbmZvQmxvY2sgOjo9CQkJCU9DVEVUIFNUUklORyAoU0laRSAoMS4uMjMpKQorCitHRVJBTi1TeXN0ZW1JbmZvcm1hdGlvbiA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEdFUkFOLVNJKSkgT0YgR0VSQU4tU3lzdGVtSW5mb0Jsb2NrCisKK0dTTS1CQS1SYW5nZSA6Oj0gCQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQlnc21Mb3dSYW5nZVVBUkZDTgkJVUFSRkNOLAorCQkJCQkJCQkJCQlnc21VcFJhbmdlVUFSRkNOCQlVQVJGQ04KK30KKworR1NNLUJBLVJhbmdlLUxpc3QgOjo9IAkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE51bUdTTUZyZXFSYW5nZXMpKSBPRgorCQkJCQkJCQkJCQlHU00tQkEtUmFuZ2UKKworCistLSBUaGlzIElFIGlzIGZvcm1hdHRlZCBhcyAnVExWJyBhbmQgaXMgY29kZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBNb2JpbGUgU3RhdGlvbiBDbGFzc21hcmsgMiAKKy0tIGluZm9ybWF0aW9uIGVsZW1lbnQgaW4gWzVdLiBUaGUgZmlyc3Qgb2N0ZXQgaXMgdGhlIE1vYmlsZSBzdGF0aW9uIGNsYXNzbWFyayAyIElFSSBhbmQgaXRzIHZhbHVlCistLSBzaGFsbCBiZSBzZXQgdG8gMzNILiBUaGUgc2Vjb25kIG9jdGV0IGlzIHRoZSBMZW5ndGggb2YgbW9iaWxlIHN0YXRpb24gY2xhc3NtYXJrIDIgYW5kIGl0cyB2YWx1ZSAKKy0tIHNoYWxsIGJlIHNldCB0byAzLiBUaGUgb2N0ZXQgMyBjb250YWlucyB0aGUgZmlyc3Qgb2N0ZXQgb2YgdGhlIHZhbHVlIHBhcnQgb2YgdGhlIE1vYmlsZSBTdGF0aW9uIAorLS0gQ2xhc3NtYXJrIDIgaW5mb3JtYXRpb24gZWxlbWVudCwgdGhlIG9jdGV0IDQgY29udGFpbnMgdGhlIHNlY29uZCBvY3RldCBvZiB0aGUgdmFsdWUgcGFydCBvZiB0aGUgCistLSBNb2JpbGUgU3RhdGlvbiBDbGFzc21hcmsgMiBpbmZvcm1hdGlvbiBlbGVtZW50IGFuZCBzbyBvbi4gRm9yIGVhY2ggb2YgdGhlc2Ugb2N0ZXRzLCB0aGUgZmlyc3QvCistLSBsZWZ0bW9zdC8gbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIG9jdGV0IGNvbnRhaW5zIGI4IG9mIHRoZSBjb3JyZXNwb25kaW5nIG9jdGV0IG9mIHRoZSBNb2JpbGUKKy0tIFN0YXRpb24gQ2xhc3NtYXJrIDIuCitHU00tQ2xhc3NtYXJrMiA6Oj0JCQkJCU9DVEVUIFNUUklORyAoU0laRSAoNSkpCisKKy0tIFRoaXMgSUUgaXMgZm9ybWF0dGVkIGFzICdWJyBhbmQgaXMgY29kZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSB2YWx1ZSBwYXJ0IGluIHRoZSBNb2JpbGUgc3RhdGlvbgorLS0gY2xhc3NtYXJrIDMgaW5mb3JtYXRpb24gZWxlbWVudCBpbiBbNV0KKy0tIFRoZSB2YWx1ZSBwYXJ0IGlzIHNwZWNpZmllZCBieSBtZWFucyBvZiBDU04uMSwgd2hpY2ggZW5jb2RpbmcgcmVzdWx0cyBpbiBhIGJpdCBzdHJpbmcsIHRvIHdoaWNoCistLSBmaW5hbCBwYWRkaW5nIG1heSBiZSBhcHBlbmRlZCB1cHRvIHRoZSBuZXh0IG9jdGV0IGJvdW5kYXJ5IFs1XS4gVGhlIGZpcnN0LyBsZWZ0bW9zdCBiaXQgb2YgdGhlCistLSBDU04uMSBiaXQgc3RyaW5nIGlzIHBsYWNlZCBpbiB0aGUgZmlyc3QvIGxlZnRtb3N0LyBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiB0aGUgZmlyc3QKKy0tIG9jdGV0LiBUaGlzIGNvbnRpbnVlcyB1bnRpbCB0aGUgbGFzdCBiaXQgb2YgdGhlIENTTi4xIGJpdCBzdHJpbmcsIHdoaWNoIGlzIHBsYWNlZCBpbiB0aGUgbGFzdC8KKy0tIHJpZ2h0bW9zdC8gbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBsYXN0IG9jdGV0LgorR1NNLUNsYXNzbWFyazMgOjo9CQkJCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjMyKSkKKworR1NNLU1lc3NhZ2VMaXN0IDo6PQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEludGVyU3lzTWVzc2FnZXMpKSBPRgorCQkJCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDEuLjUxMikpCisKK0dTTS1NUy1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkgOjo9CU9DVEVUIFNUUklORyAoU0laRSAoMS4uNjQpKQorCitHc21TZWN1cml0eUNhcGFiaWxpdHkgOjo9CQkJQklUIFNUUklORyB7CisJCQkJCQkJCQkJLS0gRm9yIGVhY2ggYml0IHZhbHVlINIw0yBtZWFucyBmYWxzZS8gbm90IHN1cHBvcnRlZAorCQkJCQkJCQkJCWE1LTcoMCksCisJCQkJCQkJCQkJYTUtNigxKSwKKwkJCQkJCQkJCSAJYTUtNSgyKSwKKwkJCQkJCQkJCSAJYTUtNCgzKSwKKwkJCQkJCQkJCSAJYTUtMyg0KSwKKwkJCQkJCQkJCSAJYTUtMig1KSwKKwkJCQkJCQkJCSAJYTUtMSg2KQorCQkJCQkJCQkJCX0JKFNJWkUgKDcpKQorCitHU00tVGFyZ2V0Q2VsbEluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEdTTVRhcmdldENlbGxzKSkgT0YKKwkJCQkJCQkJCQkJR1NNLVRhcmdldENlbGxJbmZvCisKKworR1NNLVRhcmdldENlbGxJbmZvIDo6PSAJCQkJU0VRVUVOQ0UgeworCWJjY2gtQVJGQ04JCQkJCQkJQkNDSC1BUkZDTiwKKwlmcmVxdWVuY3ktYmFuZAkJCQkJCUZyZXF1ZW5jeS1CYW5kLAorCWJzaWMJCQkJCQkJCUJTSUMJCQlPUFRJT05BTAorfQorCitJZGVudGlmaWNhdGlvbk9mUmVjZWl2ZWRNZXNzYWdlIDo6PQlTRVFVRU5DRSB7CisJCXJyYy1UcmFuc2FjdGlvbklkZW50aWZpZXIJCVJSQy1UcmFuc2FjdGlvbklkZW50aWZpZXIsCisJCXJlY2VpdmVkTWVzc2FnZVR5cGUJCQkJUmVjZWl2ZWRNZXNzYWdlVHlwZQorfQorCitJbnRlclJBVC1DaGFuZ2VGYWlsdXJlQ2F1c2UgOjo9CQlDSE9JQ0UgeworCWNvbmZpZ3VyYXRpb25VbmFjY2VwdGFibGUJCQlOVUxMLAorCXBoeXNpY2FsQ2hhbm5lbEZhaWx1cmUJCQkJTlVMTCwKKwlwcm90b2NvbEVycm9yCQkJCQkJUHJvdG9jb2xFcnJvckluZm9ybWF0aW9uLAorCXVuc3BlY2lmaWVkCQkJCQkJCU5VTEwsCisJc3BhcmU0CQkJCQkJCQlOVUxMLAorCXNwYXJlMwkJCQkJCQkJTlVMTCwKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CQkJCQkJCQorCitHRVJBTkl1LU1lc3NhZ2VMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4SW50ZXJTeXNNZXNzYWdlcykpIE9GCisJCQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMS4uMzI3NjgpKQorCitHRVJBTkl1LVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSA6Oj0JQklUIFNUUklORyAoU0laRSAoMS4uMTcwKSkKKworSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IDo6PSBDSE9JQ0UgeworCWdzbQkJCQkJCQkJCVNFUVVFTkNFIHsKKwkJZ3NtLUNsYXNzbWFyazIJCQkJCQlHU00tQ2xhc3NtYXJrMiwKKwkJZ3NtLUNsYXNzbWFyazMJCQkJCQlHU00tQ2xhc3NtYXJrMworCX0sCisJY2RtYTIwMDAJCQkJCQkJU0VRVUVOQ0UgeworCQljZG1hMjAwMC1NZXNzYWdlTGlzdAkJCQlDRE1BMjAwMC1NZXNzYWdlTGlzdAorCX0KK30KKworSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdCA6Oj0gCVNFUVVFTkNFIChTSVpFKDEuLm1heEludGVyU3lzTWVzc2FnZXMpKSBPRgorCQkJCQkJCQkJCQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkKKworSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKKwlnZXJhbkl1LVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJR0VSQU5JdS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkKK30KKworSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQgOjo9IFNFUVVFTkNFIHsKKwlzdXBwb3J0T2ZJbnRlci1SQVQtUFMtSGFuZG92ZXIJCUVOVU1FUkFURUQgeyBkb2VzU3VwcG9ySW50ZXItUkFULVBTLUhhbmRvdmVyIH0JT1BUSU9OQUwsCisJZ3NtLU1TLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJR1NNLU1TLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQorfQorCitJbnRlclJBVC1VRS1TZWN1cml0eUNhcGFiaWxpdHkgOjo9IENIT0lDRSB7CisJZ3NtCQkJCQkJCQkJU0VRVUVOQ0UgeworCQlnc21TZWN1cml0eUNhcGFiaWxpdHkJCQlHc21TZWN1cml0eUNhcGFiaWxpdHkKKwl9Cit9CisKK0ludGVyUkFULVVFLVNlY3VyaXR5Q2FwTGlzdCA6Oj0gCVNFUVVFTkNFIChTSVpFKDEuLm1heEludGVyU3lzTWVzc2FnZXMpKSBPRgorCQkJCQkJCQkJCUludGVyUkFULVVFLVNlY3VyaXR5Q2FwYWJpbGl0eQorCitJbnRlclJBVC1ITy1GYWlsdXJlQ2F1c2UgOjo9CQlDSE9JQ0UgeworCWNvbmZpZ3VyYXRpb25VbmFjY2VwdGFibGUJCQlOVUxMLAorCXBoeXNpY2FsQ2hhbm5lbEZhaWx1cmUJCQkJTlVMTCwKKwlwcm90b2NvbEVycm9yCQkJCQkJUHJvdG9jb2xFcnJvckluZm9ybWF0aW9uLAorCWludGVyUkFULVByb3RvY29sRXJyb3IJCQkJTlVMTCwKKwl1bnNwZWNpZmllZAkJCQkJCQlOVUxMLAorCXNwYXJlMTEJCQkJCQkJCU5VTEwsCisJc3BhcmUxMAkJCQkJCQkJTlVMTCwKKwlzcGFyZTkJCQkJCQkJCU5VTEwsCisJc3BhcmU4CQkJCQkJCQlOVUxMLAorCXNwYXJlNwkJCQkJCQkJTlVMTCwKKwlzcGFyZTYJCQkJCQkJCU5VTEwsCisJc3BhcmU1CQkJCQkJCQlOVUxMLAorCXNwYXJlNAkJCQkJCQkJTlVMTCwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQkJCQkJCQkKKworTWFzdGVySW5mb3JtYXRpb25CbG9jayA6Oj0JCQlTRVFVRU5DRSB7CisJCW1pYi1WYWx1ZVRhZwkJCQkJTUlCLVZhbHVlVGFnLAorCQktLSBUQUJVTEFSOiBUaGUgUExNTiBpZGVudGl0eSBhbmQgQU5TSS00MSBjb3JlIG5ldHdvcmsgaW5mb3JtYXRpb24KKwkJLS0gYXJlIGluY2x1ZGVkIGluIFBMTU4tVHlwZS4KKwkJcGxtbi1UeXBlCQkJCQkJUExNTi1UeXBlLAorCQlzaWJTYi1SZWZlcmVuY2VMaXN0CQkJCVNJQlNiLVJlZmVyZW5jZUxpc3QsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCW1hc3RlckluZm9ybWF0aW9uQmxvY2stdjY5MGV4dAkJTWFzdGVySW5mb3JtYXRpb25CbG9jay12NjkwZXh0LAorCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCisJCX0JT1BUSU9OQUwKK30KKworTWFzdGVySW5mb3JtYXRpb25CbG9jay12NjkwZXh0IDo6PQlTRVFVRU5DRSB7CisJbXVsdGlwbGVQTE1OLUxpc3QJCQkJCU11bHRpcGxlUExNTi1MaXN0LXI2CQkJT1BUSU9OQUwKK30KKworTUlCLVZhbHVlVGFnIDo6PQkJCQkJSU5URUdFUiAoMS4uOCkKKworTkNDIDo6PQkJCQkJCQkJSU5URUdFUiAoMC4uNykKKworUExNTi1WYWx1ZVRhZyA6Oj0JCQkJCUlOVEVHRVIgKDEuLjI1NikKKworCitQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHlBbmRWYWx1ZVRhZyA6Oj0JU0VRVUVOQ0UgeworCXByZWRlZmluZWRDb25maWdJZGVudGl0eQkJCQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHksCisJcHJlZGVmaW5lZENvbmZpZ1ZhbHVlVGFnCQkJCVByZWRlZmluZWRDb25maWdWYWx1ZVRhZworfQorCitQcm90b2NvbEVycm9ySW5mb3JtYXRpb24gOjo9CQlTRVFVRU5DRSB7CisJZGlhZ25vc3RpY3NUeXBlCQkJCQkJQ0hPSUNFIHsKKwkJdHlwZTEJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXByb3RvY29sRXJyb3JDYXVzZQkJCQkJUHJvdG9jb2xFcnJvckNhdXNlCisJCX0sCisJCXNwYXJlCQkJCQkJCQlOVUxMCisJfQorfQorCitSZWNlaXZlZE1lc3NhZ2VUeXBlIDo6PQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhY3RpdmVTZXRVcGRhdGUsCisJCQkJCQkJCQkJY2VsbENoYW5nZU9yZGVyRnJvbVVUUkFOLAorCQkJCQkJCQkJCWNlbGxVcGRhdGVDb25maXJtLAorCQkJCQkJCQkJCWNvdW50ZXJDaGVjaywKKwkJCQkJCQkJCQlkb3dubGlua0RpcmVjdFRyYW5zZmVyLAorCQkJCQkJCQkJCWludGVyUkFUSGFuZG92ZXJDb21tYW5kLAorCQkJCQkJCQkJCW1lYXN1cmVtZW50Q29udHJvbCwKKwkJCQkJCQkJCQlwYWdpbmdUeXBlMiwKKwkJCQkJCQkJCQlwaHlzaWNhbENoYW5uZWxSZWNvbmZpZ3VyYXRpb24sCisJCQkJCQkJCQkJcGh5c2ljYWxTaGFyZWRDaGFubmVsQWxsb2NhdGlvbiwKKwkJCQkJCQkJCQlyYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKKwkJCQkJCQkJCQlyYWRpb0JlYXJlclJlbGVhc2UsCisJCQkJCQkJCQkJcmFkaW9CZWFyZXJTZXR1cCwKKwkJCQkJCQkJCQlycmNDb25uZWN0aW9uUmVsZWFzZSwKKwkJCQkJCQkJCQlycmNDb25uZWN0aW9uUmVqZWN0LAorCQkJCQkJCQkJCXJyY0Nvbm5lY3Rpb25TZXR1cCwKKwkJCQkJCQkJCQlzZWN1cml0eU1vZGVDb21tYW5kLAorCQkJCQkJCQkJCXNpZ25hbGxpbmdDb25uZWN0aW9uUmVsZWFzZSwKKwkJCQkJCQkJCQl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCQkJCQkJCQkJCXRyYW5zcG9ydEZvcm1hdENvbWJpbmF0aW9uQ29udHJvbCwKKwkJCQkJCQkJCQl1ZUNhcGFiaWxpdHlFbnF1aXJ5LAorCQkJCQkJCQkJCXVlQ2FwYWJpbGl0eUluZm9ybWF0aW9uQ29uZmlybSwKKwkJCQkJCQkJCQl1cGxpbmtQaHlzaWNhbENoYW5uZWxDb250cm9sLAorCQkJCQkJCQkJCXVyYVVwZGF0ZUNvbmZpcm0sCisJCQkJCQkJCQkJdXRyYW5Nb2JpbGl0eUluZm9ybWF0aW9uLAorCQkJCQkJCQkJCWFzc2lzdGFuY2VEYXRhRGVsaXZlcnksCisJCQkJCQkJCQkJc3BhcmU2LCBzcGFyZTUsIHNwYXJlNCwgc3BhcmUzLCBzcGFyZTIsCisJCQkJCQkJCQkJc3BhcmUxCit9CisKK1JwbG1uLUluZm9ybWF0aW9uIDo6PQkJCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQlnc20tQkEtUmFuZ2UtTGlzdAkJR1NNLUJBLVJhbmdlLUxpc3QJT1BUSU9OQUwsCisJCQkJCQkJCQkJCWZkZC1VTVRTLUZyZXF1ZW5jeS1MaXN0CUZERC1VTVRTLUZyZXF1ZW5jeS1MaXN0CU9QVElPTkFMLAorCQkJCQkJCQkJCQl0ZGQtVU1UUy1GcmVxdWVuY3ktTGlzdAlUREQtVU1UUy1GcmVxdWVuY3ktTGlzdAlPUFRJT05BTCwKKwkJCQkJCQkJCQkJY2RtYTIwMDAtVU1UUy1GcmVxdWVuY3ktTGlzdAlDRE1BMjAwMC1VTVRTLUZyZXF1ZW5jeS1MaXN0CU9QVElPTkFMCit9CisKK1JwbG1uLUluZm9ybWF0aW9uLXI0IDo6PQkJU0VRVUVOQ0UgeworCWdzbS1CQS1SYW5nZS1MaXN0CQkJCUdTTS1CQS1SYW5nZS1MaXN0CQkJCQkJT1BUSU9OQUwsCisJZmRkLVVNVFMtRnJlcXVlbmN5LUxpc3QJCQlGREQtVU1UUy1GcmVxdWVuY3ktTGlzdAkJCQkJT1BUSU9OQUwsCisJLS0gdGhlIG9wdGlvbiBpcyB0aGUgc2FtZSBmb3IgNy42OCBNY3BzIFRERCBhcyBmb3IgMy44NCBNY3BzIFRERAorCS0tIGkuZS4gVERELVVNVFMtRnJlcXVlbmN5LUxpc3QgYXBwbGllcworCXRkZDM4NC1VTVRTLUZyZXF1ZW5jeS1MaXN0CQlUREQtVU1UUy1GcmVxdWVuY3ktTGlzdAkJCQkJT1BUSU9OQUwsCisJdGRkMTI4LVVNVFMtRnJlcXVlbmN5LUxpc3QJCVRERC1VTVRTLUZyZXF1ZW5jeS1MaXN0CQkJCQlPUFRJT05BTCwKKwljZG1hMjAwMC1VTVRTLUZyZXF1ZW5jeS1MaXN0CUNETUEyMDAwLVVNVFMtRnJlcXVlbmN5LUxpc3QJCQlPUFRJT05BTAorfQorCitTY2hlZHVsaW5nSW5mb3JtYXRpb24gOjo9CQkJU0VRVUVOQ0UgeworCXNjaGVkdWxpbmcJCQkJCQkJU0VRVUVOQ0UgeworCQlzZWdDb3VudAkJCQkJCQlTZWdDb3VudAkJCQkgCQkgREVGQVVMVCAxLAorCQlzaWItUG9zCQkJCQkJCQlDSE9JQ0UgeworCQkJLS0gVGhlIGVsZW1lbnQgbmFtZSBpbmRpY2F0ZXMgdGhlIHJlcGV0aXRpb24gcGVyaW9kIGFuZCB0aGUgdmFsdWUKKwkJCS0tIChtdWx0aXBsaWVkIGJ5IHR3bykgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3Qgc2VnbWVudC4KKwkJCXJlcDQJCQkJCQkJCUlOVEVHRVIgKDAuLjEpLAorCQkJcmVwOAkJCQkJCQkJSU5URUdFUiAoMC4uMyksCisJCQlyZXAxNgkJCQkJCQkJSU5URUdFUiAoMC4uNyksCisJCQlyZXAzMgkJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCQkJcmVwNjQJCQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKKwkJCXJlcDEyOAkJCQkJCQkJSU5URUdFUiAoMC4uNjMpLAorCQkJcmVwMjU2CQkJCQkJCQlJTlRFR0VSICgwLi4xMjcpLAorCQkJcmVwNTEyCQkJCQkJCQlJTlRFR0VSICgwLi4yNTUpLAorCQkJcmVwMTAyNAkJCQkJCQkJSU5URUdFUiAoMC4uNTExKSwKKwkJCXJlcDIwNDgJCQkJCQkJCUlOVEVHRVIgKDAuLjEwMjMpLAorCQkJcmVwNDA5NgkJCQkJCQkJSU5URUdFUiAoMC4uMjA0NykKKwkJfSwKKwkJc2liLVBvc09mZnNldEluZm8JCQkJCVNpYk9GRi1MaXN0CQkJCQkJT1BUSU9OQUwKKwl9Cit9CisKK1NjaGVkdWxpbmdJbmZvcm1hdGlvblNJQiA6Oj0JCQlTRVFVRU5DRSB7CisJc2liLVR5cGUJCQkJCQkJU0lCLVR5cGVBbmRUYWcsCisJc2NoZWR1bGluZwkJCQkJCQlTY2hlZHVsaW5nSW5mb3JtYXRpb24KK30KKworU2NoZWR1bGluZ0luZm9ybWF0aW9uU0lCU2IgOjo9CQkJU0VRVUVOQ0UgeworCXNpYlNiLVR5cGUJCQkJCQkJU0lCU2ItVHlwZUFuZFRhZywKKwlzY2hlZHVsaW5nCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvbgorfQorCitTZWdDb3VudCA6Oj0JCQkJCQlJTlRFR0VSICgxLi4xNikKKworU2VnbWVudEluZGV4IDo6PQkJCQkJSU5URUdFUiAoMS4uMTUpCisKKy0tIEFjdHVhbCB2YWx1ZSBTRk4tUHJpbWUgPSAyICogSUUgdmFsdWUKK1NGTi1QcmltZSA6Oj0JCQkJCQlJTlRFR0VSICgwLi4yMDQ3KQorCisKK1NJQi1EYXRhLWZpeGVkIDo6PQkJCQkJQklUIFNUUklORyAoU0laRSAoMjIyKSkKKworCitTSUItRGF0YS12YXJpYWJsZSA6Oj0JCQkJQklUIFNUUklORyAoU0laRSAoMS4uMjE0KSkKKworU0lCT2NjdXJJZGVudGl0eSA6Oj0JCQlJTlRFR0VSICgwLi4xNSkKKworU0lCT2NjdXJyZW5jZUlkZW50aXR5QW5kVmFsdWVUYWcgOjo9CVNFUVVFTkNFIHsKKwlzaWJPY2N1cklkZW50aXR5CQkJCVNJQk9jY3VySWRlbnRpdHksCisJc2liT2NjdXJWYWx1ZVRhZwkJCQlTSUJPY2N1clZhbHVlVGFnCit9CisKK1NJQk9jY3VyVmFsdWVUYWcgOjo9CQkJSU5URUdFUiAoMC4uMTUpCisKK1NJQi1SZWZlcmVuY2VMaXN0IDo6PQkJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0lCKSkgT0YKKwkJCQkJCQkJCQlTY2hlZHVsaW5nSW5mb3JtYXRpb25TSUIKKworU0lCU2ItUmVmZXJlbmNlTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNJQikpIE9GCisJCQkJCQkJCQkJU2NoZWR1bGluZ0luZm9ybWF0aW9uU0lCU2IKKworU0lCLVJlZmVyZW5jZUxpc3RGQUNIIDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhTSUItRkFDSCkpIE9GIAorCQkJCQkJCQkJCVNjaGVkdWxpbmdJbmZvcm1hdGlvblNJQgorCitTSUItVHlwZSA6Oj0JCQkJCQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQltYXN0ZXJJbmZvcm1hdGlvbkJsb2NrLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMSwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTIsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUzLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNCwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTUsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGU2LAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNywKKwkJLS0gZHVtbXksIGR1bW15MiBhbmQgZHVtbXkzIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50LiBJZiB0aGV5IGFyZSByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCisJCQkJCQkJCQkJZHVtbXksCisJCQkJCQkJCQkJZHVtbXkyLAorCQkJCQkJCQkJCWR1bW15MywKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTExLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTIsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxMywKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTEsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxMy0yLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTMtMywKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTEzLTQsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNCwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE1LAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTUtMSwKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE1LTIsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNS0zLAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlMTYsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNywKKwkJCQkJCQkJCQlzeXN0ZW1JbmZvcm1hdGlvbkJsb2NrVHlwZTE1LTQsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxOCwKKwkJCQkJCQkJCQlzY2hlZHVsaW5nQmxvY2sxLAorCQkJCQkJCQkJCXNjaGVkdWxpbmdCbG9jazIsCisJCQkJCQkJCQkJc3lzdGVtSW5mb3JtYXRpb25CbG9ja1R5cGUxNS01LAorCQkJCQkJCQkJCXN5c3RlbUluZm9ybWF0aW9uQmxvY2tUeXBlNWJpcywgCisJCQkJCQkJCQkJc3BhcmUxIH0KKworU0lCLVR5cGVBbmRUYWcgOjo9CQkJCQlDSE9JQ0UgeworCXN5c0luZm9UeXBlMQkJCQkJCVBMTU4tVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUyCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMwkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTQJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU1CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlNgkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTcJCQkJCQlOVUxMLAorCS0tIGR1bW15LCBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50LiBJZiB0aGV5IGFyZSByZWNlaXZlZCB0aGUgVUUgYmVoYXZpb3VyIGlzIG5vdCBzcGVjaWZpZWQuCisJZHVtbXkJCQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlkdW1teTIJCQkJCQkJCU5VTEwsCisJZHVtbXkzCQkJCQkJCQlOVUxMLAorCXN5c0luZm9UeXBlMTEJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMiAJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMwkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEzLTEJCQkJCQlDZWxsVmFsdWVUYWcsIAorCXN5c0luZm9UeXBlMTMtMgkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTEzLTMJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMy00CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTQJCQkJCQlOVUxMLAorCXN5c0luZm9UeXBlMTUJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNgkJCQkJCVByZWRlZmluZWRDb25maWdJZGVudGl0eUFuZFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTcJCQkJCQlOVUxMLAorCXN5c0luZm9UeXBlMTUtMQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTIJCQkJCQlTSUJPY2N1cnJlbmNlSWRlbnRpdHlBbmRWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTMJCQkJCQlTSUJPY2N1cnJlbmNlSWRlbnRpdHlBbmRWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTQJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxOAkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTUJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU1YmlzCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXNwYXJlNAkJCQkJCQkJTlVMTCwKKwlzcGFyZTMJCQkJCQkJCU5VTEwsCisJc3BhcmUyCQkJCQkJCQlOVUxMLAorCXNwYXJlMQkJCQkJCQkJTlVMTAorfQorCitTSUJTYi1UeXBlQW5kVGFnIDo6PQkJCQkJQ0hPSUNFIHsKKwlzeXNJbmZvVHlwZTEJCQkJCQlQTE1OLVZhbHVlVGFnLAorCXN5c0luZm9UeXBlMgkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTMJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU0CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlNQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTYJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGU3CQkJCQkJTlVMTCwKKwktLSBkdW1teSwgZHVtbXkyIGFuZCBkdW1teTMgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKKwktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudC4gSWYgdGhleSBhcmUgcmVjZWl2ZWQgdGhlIFVFIGJlaGF2aW91ciBpcyBub3Qgc3BlY2lmaWVkLgorCWR1bW15CQkJCQkJCQlDZWxsVmFsdWVUYWcsCisJZHVtbXkyCQkJCQkJCQlOVUxMLAorCWR1bW15MwkJCQkJCQkJTlVMTCwKKwlzeXNJbmZvVHlwZTExCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTIgCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTMJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMy0xCQkJCQkJQ2VsbFZhbHVlVGFnLCAKKwlzeXNJbmZvVHlwZTEzLTIJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxMy0zCQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTMtNAkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE0CQkJCQkJTlVMTCwKKwlzeXNJbmZvVHlwZTE1CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTYJCQkJCQlQcmVkZWZpbmVkQ29uZmlnSWRlbnRpdHlBbmRWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE3CQkJCQkJTlVMTCwKKwlzeXNJbmZvVHlwZVNCMQkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZVNCMgkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzeXNJbmZvVHlwZTE1LTEJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNS0yCQkJCQkJU0lCT2NjdXJyZW5jZUlkZW50aXR5QW5kVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNS0zCQkJCQkJU0lCT2NjdXJyZW5jZUlkZW50aXR5QW5kVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNS00CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlMTgJCQkJCQlDZWxsVmFsdWVUYWcsCisJc3lzSW5mb1R5cGUxNS01CQkJCQkJQ2VsbFZhbHVlVGFnLAorCXN5c0luZm9UeXBlNWJpcwkJCQkJCUNlbGxWYWx1ZVRhZywKKwlzcGFyZTIJCQkJCQkJCU5VTEwsCisJc3BhcmUxCQkJCQkJCQlOVUxMCit9CisKK1NpYk9GRiA6Oj0JCQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc28yLCBzbzQsIHNvNiwgc284LCBzbzEwLAorCQkJCQkJCQkJCXNvMTIsIHNvMTQsIHNvMTYsIHNvMTgsCisJCQkJCQkJCQkJc28yMCwgc28yMiwgc28yNCwgc28yNiwKKwkJCQkJCQkJCQlzbzI4LCBzbzMwLCBzbzMyIH0KKworU2liT0ZGLUxpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjE1KSkgT0YKKwkJCQkJCQkJCQlTaWJPRkYKKworU3lzSW5mb1R5cGUxIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIENvcmUgbmV0d29yayBJRXMKKwkJY24tQ29tbW9uR1NNLU1BUC1OQVMtU3lzSW5mbwlOQVMtU3lzdGVtSW5mb3JtYXRpb25HU00tTUFQLAkKKwkJY24tRG9tYWluU3lzSW5mb0xpc3QJCQlDTi1Eb21haW5TeXNJbmZvTGlzdCwKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdWUtQ29ublRpbWVyc0FuZENvbnN0YW50cwkJVUUtQ29ublRpbWVyc0FuZENvbnN0YW50cwkJCU9QVElPTkFMLAorCQl1ZS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQlVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJc3lzSW5mb1R5cGUxLXYzYTBleHQJCVN5c0luZm9UeXBlMS12M2EwZXh0LUlFcywKKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0Uge30gT1BUSU9OQUwKKwkJfQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEtdjNhMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwl1ZS1Db25uVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQJCVVFLUNvbm5UaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dCwKKwl1ZS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQJCVVFLUlkbGVUaW1lcnNBbmRDb25zdGFudHMtdjNhMGV4dAorfQorCitTeXNJbmZvVHlwZTIgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eUxpc3QJCQkJVVJBLUlkZW50aXR5TGlzdCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTMgOjo9CQkJCQlTRVFVRU5DRSB7CisJCXNpYjRpbmRpY2F0b3IJCQkJCUJPT0xFQU4sCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCWNlbGxJZGVudGl0eQkJCQkJQ2VsbElkZW50aXR5LAorCQljZWxsU2VsZWN0UmVzZWxlY3RJbmZvCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1NJQi0zLTQsCisJCWNlbGxBY2Nlc3NSZXN0cmljdGlvbgkJCUNlbGxBY2Nlc3NSZXN0cmljdGlvbiwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7IAorCQkJc3lzSW5mb1R5cGUzLXY0YjBleHQJCQlTeXNJbmZvVHlwZTMtdjRiMGV4dC1JRXMsCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb24JCVNFUVVFTkNFIHsKKwkJCQlzeXNJbmZvVHlwZTMtdjU5MGV4dAkJCVN5c0luZm9UeXBlMy12NTkwZXh0LAorCQkJCXY1YzBOb25jcml0aWNhbEV4dGVuc2lvbgkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTMtdjVjMGV4dAkJCVN5c0luZm9UeXBlMy12NWMwZXh0LUlFcywKKwkJCQkJdjY3ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQkJU0VRVUVOQ0UgeworCQkJCQkJc3lzSW5mb1R5cGUzLXY2NzBleHQJCQkJU3lzSW5mb1R5cGUzLXY2NzBleHQsCisJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCisJCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCQl9CQkJCQkJCU9QVElPTkFMCisJCQl9IAkJCQkJCQlPUFRJT05BTAorCQl9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMy12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCW1hcHBpbmctTENSCQkJCQkJTWFwcGluZy1MQ1ItcjQJCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUzLXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKKwljZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dCAJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMy12NWMwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWNlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQKKwkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvVHJlc2VsZWN0aW9uU2NhbGluZy12NWMwZXh0CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMy12NjcwZXh0IDo6PSBTRVFVRU5DRSB7CisJIAlkb21haW5TcGVjaWZpY0FjY2Vzc1Jlc3RyaWN0aW9uUGFyYW1ldGVyc0ZvclBMTU5PZk1JQgorCQkJCQkJCQkJRG9tYWluU3BlY2lmaWNBY2Nlc3NSZXN0cmljdGlvblBhcmFtLXY2NzBleHQJT1BUSU9OQUwsCisJCWRvbWFpblNwZWNpZmljQWNjZXNzUmVzdGljdGlvbkZvclNoYXJlZE5ldHdvcmsKKwkJCQkJCQkJCURvbWFpblNwZWNpZmljQWNjZXNzUmVzdHJpY3Rpb25Gb3JTaGFyZWROZXR3b3JrLXY2NzBleHQJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU0IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFVUUkFOIG1vYmlsaXR5IElFcworCQljZWxsSWRlbnRpdHkJCQkJCUNlbGxJZGVudGl0eSwKKwkJY2VsbFNlbGVjdFJlc2VsZWN0SW5mbwkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm9TSUItMy00LAorCQljZWxsQWNjZXNzUmVzdHJpY3Rpb24JCQlDZWxsQWNjZXNzUmVzdHJpY3Rpb24sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeyAKKwkJCXN5c0luZm9UeXBlNC12NGIwZXh0CQkJU3lzSW5mb1R5cGU0LXY0YjBleHQtSUVzLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGU0LXY1OTBleHQJCQlTeXNJbmZvVHlwZTQtdjU5MGV4dCwKKwkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb24JCVNFUVVFTkNFIHsKKwkJCQkJc3lzSW5mb1R5cGU0LXY1YjBleHQJCQlTeXNJbmZvVHlwZTQtdjViMGV4dC1JRXMsCisJCQkJCXY1YzBOb25Dcml0aWNhbEV4dGVuc2lvbgkJCVNFUVVFTkNFIHsKKwkJCQkJCXN5c0luZm9UeXBlNC12NWMwZXh0CQkJCVN5c0luZm9UeXBlNC12NWMwZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJT1BUSU9OQUwKKwkJCQkJfQlPUFRJT05BTAorCQkJCX0JT1BUSU9OQUwKKwkJCX0JT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTQtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwltYXBwaW5nLUxDUgkJCQkJCU1hcHBpbmctTENSLXI0CQkJCQkJCU9QVElPTkFMCit9CisKKworU3lzSW5mb1R5cGU0LXY1OTBleHQgOjo9IFNFUVVFTkNFIHsKKwljZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dCAJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNC12NWIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWNlbGxTZWxlY3RSZXNlbGVjdEluZm9QQ0hGQUNILXY1YjBleHQJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mb1BDSEZBQ0gtdjViMGV4dCAJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNC12NWMwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWNlbGxTZWxlY3RSZXNlbGVjdEluZm9UcmVzZWxlY3Rpb25TY2FsaW5nLXY1YzBleHQKKwkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvVHJlc2VsZWN0aW9uU2NhbGluZy12NWMwZXh0CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwkJc2liNmluZGljYXRvcgkJCQkJQk9PTEVBTiwKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlwaWNoLVBvd2VyT2Zmc2V0CQkJCVBJQ0gtUG93ZXJPZmZzZXQsCisJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWFpY2gtUG93ZXJPZmZzZXQJCQkJQUlDSC1Qb3dlck9mZnNldAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgeworCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDEuMjhNY3BzIFRERCwgdGhlIGZvbGxvd2luZyBJRXMgc2hvdWxkIGJlIGFic2VudAorCS0tICAgYW5kIHRoZSBpbmZvIGluY2x1ZGVkIGluIHRoZSB0ZGQxMjhTcGVjaWZpY0luZm8gaW5zdGVhZC4KKwktLSBJZiBQRFNDSC9QVVNDSCBpcyBjb25maWd1cmVkIGZvciAzLjg0TWNwcyBUREQgaW4gUjUsIEhDUi1yNS1TcGVjaWZpY0luZm8gc2hvdWxkIGFsc28gYmUgCisJLS0gaW5jbHVkZWQuIAorCQkJCXB1c2NoLVN5c0luZm9MaXN0LVNGTgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTgkJT1BUSU9OQUwsCisJCQkJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUERTQ0gtU3lzSW5mb0xpc3QtU0ZOCQlPUFRJT05BTCwKKwkJCQlvcGVuTG9vcFBvd2VyQ29udHJvbC1UREQJCU9wZW5Mb29wUG93ZXJDb250cm9sLVRERAorCQkJfQorCQl9LAorCQlwcmltYXJ5Q0NQQ0gtSW5mbwkJCQlQcmltYXJ5Q0NQQ0gtSW5mbwkJCQkJT1BUSU9OQUwsCisJCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LAorCQlzQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0CVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QsCisJCS0tIGNicy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24gaXMgY29uZGl0aW9uYWwgb24gYW55IG9mIHRoZSBDVENIIGluZGljYXRvciBJRXMgaW4KKwkJLS0gc0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdAorCQljYnMtRFJYLUxldmVsMUluZm9ybWF0aW9uCQlDQlMtRFJYLUxldmVsMUluZm9ybWF0aW9uCQkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJc3lzSW5mb1R5cGU1LXY0YjBleHQJCQlTeXNJbmZvVHlwZTUtdjRiMGV4dC1JRXMJCU9QVElPTkFMLAorCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbC00IGluZm9ybWF0aW9uCisJCQl2NTkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGU1LXY1OTBleHQJCQlTeXNJbmZvVHlwZTUtdjU5MGV4dC1JRXMJCU9QVElPTkFMLAorCQkJCXY2NTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJc3lzSW5mb1R5cGU1LXY2NTBleHQJCQlTeXNJbmZvVHlwZTUtdjY1MGV4dC1JRXMJCU9QVElPTkFMLAorCQkJCQl2NjgwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQlzeXNJbmZvVHlwZTUtdjY4MGV4dAkJCVN5c0luZm9UeXBlNS12NjgwZXh0LUlFcwkJT1BUSU9OQUwsCisJCQkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJc3lzSW5mb1R5cGU1LXY2OTBleHQJCQlTeXNJbmZvVHlwZTUtdjY5MGV4dC1JRXMsCisJCQkJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQlzeXNJbmZvVHlwZTUtdjd4eWV4dAkJCVN5c0luZm9UeXBlNS12N3h5ZXh0LUlFcywKKwkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJT1BUSU9OQUwKKwkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJfQkJT1BUSU9OQUwKKwkJCQkJfQkJT1BUSU9OQUwKKwkJCQl9CQlPUFRJT05BTAorCQkJfQkJT1BUSU9OQUwKKwkJfQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU1LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS1UaGUgZm9sbG93aW5nIElFIFBOQlNDSC1BbGxvY2F0aW9uLXI0IHNoYWxsIGJlIHVzZWQgZm9yIDMuODRNY3BzIFRERCBvbmx5LgorCXBOQlNDSC1BbGxvY2F0aW9uLXI0IAkJCVBOQlNDSC1BbGxvY2F0aW9uLXI0CQkJT1BUSU9OQUwsCisJLS0gSW4gY2FzZSBvZiBUREQsIHRoZSBmb2xsb3dpbmcgSUUgaXMgaW5jbHVkZWQgaW5zdGVhZCBvZiB0aGUKKwktLSBJRSB1cC1JUERMLVBhcmFtZXRlciBpbiB1cC1PVERPQS1Bc3Npc3RhbmNlRGF0YS4KKwlvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTCwKKy0tIElmIFN5c0luZm9UeXBlNSBpcyBzZW50IHRvIGRlc2NyaWJlIGEgMS4yOE1jcHMgVEREIGNlbGwsIHRoZSBJRSBQUkFDSC1SQUNILUluZm8gaW5jbHVkZWQgaW4KKy0tIFBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdCBzaGFsbCBiZSBpZ25vcmVkLCB0aGUgSUUgUFJBQ0gtUGFydGl0aW9uaW5nIGFuZCB0aGUgCistLSBJRSByYWNoLVRyYW5zcG9ydEZvcm1hdFNldCBzaGFsbCBiZSBhYnNlbnQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIElFIGluIHRoZSBmb2xsb3dpbmcgCistLSBQUkFDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0IHNoYWxsIGJlIHVzZWQKKwlwcmFjaC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0CVBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQJT1BUSU9OQUwsIAorCXRkZDEyOFNwZWNpZmljSW5mbwkJCQlTRVFVRU5DRSB7CisJCXB1c2NoLVN5c0luZm9MaXN0LVNGTgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1MQ1ItcjQJT1BUSU9OQUwsCisJCXBkc2NoLVN5c0luZm9MaXN0LVNGTgkJCVBEU0NILVN5c0luZm9MaXN0LVNGTi1MQ1ItcjQJT1BUSU9OQUwsCisJCXBDQ1BDSC1MQ1ItRXh0ZW5zaW9ucwkJCVByaW1hcnlDQ1BDSC1JbmZvLUxDUi1yNC1leHQJT1BUSU9OQUwsCisJCXNDQ1BDSC1MQ1ItRXh0ZW5zaW9uc0xpc3QJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtTENSLXI0LWV4dAorCX0JCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJZnJlcXVlbmN5QmFuZEluZGljYXRvcgkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERAkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNS12NTkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWhjci1yNS1TcGVjaWZpY0luZm8JCQkJU0VRVUVOQ0UgeworCQlwdXNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4tSENSLXI1CU9QVElPTkFMLAorCQlwZHNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQRFNDSC1TeXNJbmZvTGlzdC1TRk4tSENSLXI1CU9QVElPTkFMCisJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU1LXY2NTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJZnJlcXVlbmN5QmFuZEluZGljYXRvcjIJCQlSYWRpb0ZyZXF1ZW5jeUJhbmRGREQyCit9CisKK1N5c0luZm9UeXBlNS12NjgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFRBQlVMQVI6IEhTRFBBIENlbGwgSW5kaWNhdG9yIGlzIE1EIGluIHRhYnVsYXIgZGVzY3JpcHRpb24KKwktLSBEZWZhdWx0IHZhbHVlIGlzINVIU0RQQSBDYXBhYmlsaXR5IG5vdCBpbmRpY2F0ZWTVCisJaHNkcGEtQ2VsbEluZGljYXRvcgkJRU5VTUVSQVRFRCB7IGhzZHBhLUNhcGFibGVDZWxsIH0JCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTUtdjY5MGV4dC1JRXMgOjo9CQlTRVFVRU5DRSB7CisJLS0gVEFCVUxBUjogRS1EQ0ggQ2VsbCBJbmRpY2F0b3IgaXMgTUQgaW4gdGFidWxhciBkZXNjcmlwdGlvbgorCS0tIERlZmF1bHQgdmFsdWUgaXMg1UUtRENIIENhcGFiaWxpdHkgbm90IGluZGljYXRlZNUKKwllZGNoLUNlbGxJbmRpY2F0b3IJCQkJCUVOVU1FUkFURUQgeyBlZGNoLUNhcGFibGVDZWxsIH0JCU9QVElPTkFMLAorCXNjY3BjaC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TCQlDSE9JQ0UgeworCQltY2NoT25TQ0NQQ0h1c2VkRm9yTm9uTUJNUwkJCU1CTVMtTUNDSC1Db25maWd1cmF0aW9uSW5mby1yNiwKKwkJbWNjaE9uU0NDUENIdXNlZE9ubHlGb3JNQk1TCQkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLU1CTVMtcjYKKwl9CQlPUFRJT05BTCwKKwlhZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1MaXN0CUFkZGl0aW9uYWxQUkFDSC1URi1hbmQtVEZDUy1DQ0NILUxpc3QJT1BUSU9OQUwsCisJY0JTLURSWC1MZXZlbDFJbmZvcm1hdGlvbi1leHRlbnNpb24JCUNCUy1EUlgtTGV2ZWwxSW5mb3JtYXRpb24tZXh0ZW5zaW9uLXI2CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNS12N3h5ZXh0LUlFcyA6Oj0JCVNFUVVFTkNFIHsKKwlwdXNjaC1TeXNJbmZvTGlzdC1TRk4tVkhDUgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1WSENSCQlPUFRJT05BTCwKKwlwcmFjaC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJCVBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwlPUFRJT05BTCwKKwlwZHNjaC1TeXNJbmZvTGlzdC1TRk4tcjcJCQlQRFNDSC1TeXNJbmZvTGlzdC1yNwkJCU9QVElPTkFMLAorCXNjY3BjaC1TeXN0ZW1JbmZvcm1hdGlvbi1NQk1TCQlDSE9JQ0UgeworCQltY2NoT25TQ0NQQ0h1c2VkRm9yTm9uTUJNUwkJCU1CTVMtTUNDSC1Db25maWd1cmF0aW9uSW5mby1yNiwKKwkJbWNjaE9uU0NDUENIdXNlZE9ubHlGb3JNQk1TCQkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uLU1CTVMtcjcKKwl9CQlPUFRJT05BTCwKKwlzQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CQlTQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CU9QVElPTkFMCit9CisKKworLS0gU3lzSW5mb1R5cGU1YmlzIHVzZXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzIFN5c0luZm9UeXBlNQorU3lzSW5mb1R5cGU1YmlzIDo6PSBTeXNJbmZvVHlwZTUKKworU3lzSW5mb1R5cGU2IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCXBpY2gtUG93ZXJPZmZzZXQJCQkJUElDSC1Qb3dlck9mZnNldCwKKwkJbW9kZVNwZWNpZmljSW5mbwkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJYWljaC1Qb3dlck9mZnNldAkJCQlBSUNILVBvd2VyT2Zmc2V0LAorCQkJCS0tIGR1bW15IGlzIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgaXQgc2hvdWxkIGJlIGlnbm9yZWQuCisJCQkJZHVtbXkJCQkJCQkJQ1NJQ0gtUG93ZXJPZmZzZXQJCQlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDEuMjhNY3BzIFRERCwgcHVzY2gtU3lzSW5mb0xpc3QtU0ZOLAorCQkJCS0tIHBkc2NoLVN5c0luZm9MaXN0LVNGTiBhbmQgb3Blbkxvb3BQb3dlckNvbnRyb2wtVEREIHNob3VsZCBiZSBhYnNlbnQKKwkJCQktLSBhbmQgdGhlIGluZm8gaW5jbHVkZWQgaW4gdGhlIHRkZDEyOFNwZWNpZmljSW5mbyBpbnN0ZWFkLgorCQkJCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDMuODRNY3BzIFRERCBpbiBSNSwgSENSLXI1LVNwZWNpZmljSW5mbyBzaG91bGQgCisJCQkJLS0gYWxzbyBiZSBpbmNsdWRlZC4KKwkJCQlwdXNjaC1TeXNJbmZvTGlzdC1TRk4JCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4JCU9QVElPTkFMLAorCQkJCXBkc2NoLVN5c0luZm9MaXN0LVNGTgkJCVBEU0NILVN5c0luZm9MaXN0LVNGTgkJT1BUSU9OQUwsCisJCQkJb3Blbkxvb3BQb3dlckNvbnRyb2wtVERECQlPcGVuTG9vcFBvd2VyQ29udHJvbC1UREQKKwkJCX0KKwkJfSwKKwkJcHJpbWFyeUNDUENILUluZm8JCQkJUHJpbWFyeUNDUENILUluZm8JCQkJCU9QVElPTkFMLAorCQlwcmFjaC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJCVBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdAkJCU9QVElPTkFMLAorCQlzQ0NQQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0CVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QJCU9QVElPTkFMLAorCQljYnMtRFJYLUxldmVsMUluZm9ybWF0aW9uCQlDQlMtRFJYLUxldmVsMUluZm9ybWF0aW9uCQkJT1BUSU9OQUwsCisJCS0tIENvbmRpdGlvbmFsIG9uIGFueSBvZiB0aGUgQ1RDSCBpbmRpY2F0b3IgSUVzIGluCisJCS0tIHNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTYtdjRiMGV4dAkJCVN5c0luZm9UeXBlNi12NGIwZXh0LUlFcwkJT1BUSU9OQUwsCisJCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsLTQgaW5mb3JtYXRpb24KKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJU0VRVUVOQ0UgeworCQkJCXN5c0luZm9UeXBlNi12NTkwZXh0CQkJU3lzSW5mb1R5cGU2LXY1OTBleHQtSUVzCQlPUFRJT05BTCwKKwkJCQl2NjUwbm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXN5c0luZm9UeXBlNi12NjUwZXh0CQkJU3lzSW5mb1R5cGU2LXY2NTBleHQtSUVzCQlPUFRJT05BTCwKKwkJCQkJdjY5MG5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJc3lzSW5mb1R5cGU2LXY2OTBleHQJCQlTeXNJbmZvVHlwZTYtdjY5MGV4dC1JRXMsCisJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJc3lzSW5mb1R5cGU2LXY3eHlleHQJCQlTeXNJbmZvVHlwZTYtdjd4eWV4dC1JRXMsCisJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCQl9CQkJCQkJCU9QVElPTkFMCisJCQl9CQkJCQkJCU9QVElPTkFMCisJCX0JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU2LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gb3Blbkxvb3BQb3dlckNvbnRyb2wtSVBETC1UREQgaXMgcHJlc2VudCBvbmx5IGlmIElQRExzIGFyZSBhcHBsaWVkIGZvciBUREQKKwlvcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERAlPcGVuTG9vcFBvd2VyQ29udHJvbC1JUERMLVRERC1yNAlPUFRJT05BTCwKKwktLSBJZiBTeXNJbmZvVHlwZTYgaXMgc2VudCB0byBkZXNjcmliZSBhIDEuMjhNY3BzIFRERCBjZWxsLCB0aGUgSUUgUFJBQ0gtUkFDSC1JbmZvIGluY2x1ZGVkCisJLS0gaW4gUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0IHNoYWxsIGJlIGlnbm9yZWQsIHRoZSBJRSBQUkFDSC1QYXJ0aXRpb25pbmcgYW5kIHRoZSAKKwktLSBJRSByYWNoLVRyYW5zcG9ydEZvcm1hdFNldCBzaGFsbCBiZSBhYnNlbnQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIElFcyBpbiB0aGUgZm9sbG93aW5nIAorCS0tIFBSQUNILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQgc2hhbGwgYmUgdXNlZAorCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LUxDUi1yNAlPUFRJT05BTCwgCisJdGRkMTI4U3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKKwkJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUFVTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNAlPUFRJT05BTCwKKwkJcGRzY2gtU3lzSW5mb0xpc3QtU0ZOCQkJUERTQ0gtU3lzSW5mb0xpc3QtU0ZOLUxDUi1yNAlPUFRJT05BTCwKKwkJcENDUENILUxDUi1FeHRlbnNpb25zCQkJUHJpbWFyeUNDUENILUluZm8tTENSLXI0LWV4dAlPUFRJT05BTCwKKwkJc0NDUENILUxDUi1FeHRlbnNpb25zTGlzdAkJU0NDUENILVN5c3RlbUluZm9ybWF0aW9uTGlzdC1MQ1ItcjQtZXh0CU9QVElPTkFMCisJfQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwlmcmVxdWVuY3lCYW5kSW5kaWNhdG9yCQkJUmFkaW9GcmVxdWVuY3lCYW5kRkRECQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU2LXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJaGNyLXI1LVNwZWNpZmljSW5mbwkJCQlTRVFVRU5DRSB7CisJCXB1c2NoLVN5c0luZm9MaXN0LVNGTgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUJT1BUSU9OQUwsCisJCXBkc2NoLVN5c0luZm9MaXN0LVNGTgkJCVBEU0NILVN5c0luZm9MaXN0LVNGTi1IQ1ItcjUJT1BUSU9OQUwKKwl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTYtdjY1MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlmcmVxdWVuY3lCYW5kSW5kaWNhdG9yMgkJCVJhZGlvRnJlcXVlbmN5QmFuZEZERDIKK30KKworU3lzSW5mb1R5cGU2LXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJYWRkaXRpb25hbFBSQUNILVRGLWFuZC1URkNTLUNDQ0gtTGlzdAlBZGRpdGlvbmFsUFJBQ0gtVEYtYW5kLVRGQ1MtQ0NDSC1MaXN0CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlNi12N3h5ZXh0LUlFcyA6Oj0JCVNFUVVFTkNFIHsKKwlwdXNjaC1TeXNJbmZvTGlzdC1TRk4tVkhDUgkJCVBVU0NILVN5c0luZm9MaXN0LVNGTi1WSENSCQlPUFRJT05BTCwKKwlwZHNjaC1TeXNJbmZvTGlzdC1TRk4tcjcJCQlQRFNDSC1TeXNJbmZvTGlzdC1yNwkJCU9QVElPTkFMLAorCXByYWNoLVN5c3RlbUluZm9ybWF0aW9uTGlzdC1yNwkJUFJBQ0gtU3lzdGVtSW5mb3JtYXRpb25MaXN0LXI3CU9QVElPTkFMLAorCXNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJCVNDQ1BDSC1TeXN0ZW1JbmZvcm1hdGlvbkxpc3QtcjcJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGU3IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCXVsLUludGVyZmVyZW5jZQkJCQkJVUwtSW50ZXJmZXJlbmNlCisJCQl9LAorCQkJdGRkCQkJCQkJCQlOVUxMCisJCX0sCisJCXByYWNoLUluZm9ybWF0aW9uLVNJQjUtTGlzdAkJRHluYW1pY1BlcnNpc3RlbmNlTGV2ZWxMaXN0LAorCQlwcmFjaC1JbmZvcm1hdGlvbi1TSUI2LUxpc3QJCUR5bmFtaWNQZXJzaXN0ZW5jZUxldmVsTGlzdAkJCU9QVElPTkFMLAorCQlleHBpcmF0aW9uVGltZUZhY3RvcgkJCUV4cGlyYXRpb25UaW1lRmFjdG9yCQkJCU9QVElPTkFMLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKKy0tIFRoaXMgSUUgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgorLS0gSXQgd2FzIGtlcHQgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucworU3lzSW5mb1R5cGU4IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQktLSBkdW1teTEsIGR1bW15MiwgZHVtbXkzIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24gYW5kCisJCS0tIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlY2VpdmVyLgorCQlkdW1teTEJCQkJCQkJQ1BDSC1QYXJhbWV0ZXJzLAorCS0tIFBoeXNpY2FsIGNoYW5uZWwgSUVzCisJCWR1bW15MgkJCQkJCQlDUENILVNldEluZm9MaXN0LAorCQlkdW1teTMJCQkJCQkJQ1NJQ0gtUG93ZXJPZmZzZXQsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworLS0gVGhpcyBJRSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uCistLSBJdCB3YXMga2VwdCBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zCitTeXNJbmZvVHlwZTkgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gUGh5c2ljYWwgY2hhbm5lbCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGFuZAorCQktLSBpdCBzaG91bGQgYmUgaWdub3JlZCBieSB0aGUgcmVjZWl2ZXIuCisJCWR1bW15CQkJCQkJCUNQQ0gtUGVyc2lzdGVuY2VMZXZlbHNMaXN0LAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKKy0tIFRoaXMgSUUgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgorLS0gSXQgd2FzIGtlcHQgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucworU3lzSW5mb1R5cGUxMCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLCBpdCBzaG91bGQKKwkJLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlEUkFDLVN5c0luZm9MaXN0LAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTEgOjo9CQkJCQlTRVFVRU5DRSB7CisJCXNpYjEyaW5kaWNhdG9yCQkJCQlCT09MRUFOLAorCS0tIE1lYXN1cmVtZW50IElFcworCQlmYWNoLU1lYXN1cmVtZW50T2NjYXNpb25JbmZvCUZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8JCU9QVElPTkFMLAorCQltZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvCQlNZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCXN5c0luZm9UeXBlMTEtdjRiMGV4dAkJCVN5c0luZm9UeXBlMTEtdjRiMGV4dC1JRXMJCU9QVElPTkFMLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9uCQlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGUxMS12NTkwZXh0CQkJU3lzSW5mb1R5cGUxMS12NTkwZXh0LUlFcywKKwkJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTExLXY2OTBleHQJCQlTeXNJbmZvVHlwZTExLXY2OTBleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCU9QVElPTkFMCisJCQkJfQkJCQkJCQlPUFRJT05BTAorCQkJfQkJCQkJCQlPUFRJT05BTAorCQl9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTEtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlmYWNoLU1lYXN1cmVtZW50T2NjYXNpb25JbmZvLUxDUi1FeHQJRkFDSC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mby1MQ1ItcjQtZXh0CU9QVElPTkFMLAorCW1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSCQkJTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mby1MQ1ItcjQtZXh0Cit9CisKK1N5c0luZm9UeXBlMTEtdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRyYUZyZXF1ZW5jeUNlbGxJbmZvTGlzdAorCW5ld0ludHJhRnJlcXVlbmN5Q2VsbEluZm9MaXN0LXY1OTBleHQJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKKwktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRlckZyZXF1ZW5jeUNlbGxJbmZvTGlzdAorCW5ld0ludGVyRnJlcXVlbmN5Q2VsbEluZm9MaXN0LXY1OTBleHQJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKKwktLVRoZSBvcmRlciBvZiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgb2YgY2VsbCBpbiBuZXdJbnRlclJBVENlbGxJbmZvTGlzdAorCW5ld0ludGVyUkFUQ2VsbEluZm9MaXN0LXY1OTBleHQJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q2VsbE1lYXMpKSBPRgorCQkJCQkJCQkJCQkJQ2VsbFNlbGVjdFJlc2VsZWN0SW5mby12NTkwZXh0CU9QVElPTkFMLAorCWludHJhRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQJCUludHJhLUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0CQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJT1BUSU9OQUwsCisJaW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJCUludHJhRnJlcUV2ZW50LTFkLXI1CQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTEtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwlpbnRlckZyZXFSQUNIUmVwb3J0aW5nSW5mbwkJCUludGVyRnJlcVJBQ0hSZXBvcnRpbmdJbmZvCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMiA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJZmFjaC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mbwlGQUNILU1lYXN1cmVtZW50T2NjYXNpb25JbmZvCQlPUFRJT05BTCwKKwkJbWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbwkJTWVhc3VyZW1lbnRDb250cm9sU3lzSW5mbywKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTEyLXY0YjBleHQJCQlTeXNJbmZvVHlwZTEyLXY0YjBleHQtSUVzCQlPUFRJT05BTCwKKwkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbgkJU0VRVUVOQ0UgeworCQkJCXN5c0luZm9UeXBlMTItdjU5MGV4dAkJCVN5c0luZm9UeXBlMTItdjU5MGV4dC1JRXMsCisJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJc3lzSW5mb1R5cGUxMi12NjkwZXh0CQkJU3lzSW5mb1R5cGUxMi12NjkwZXh0LUlFcywKKwkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAorCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJfQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEyLXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJZmFjaC1NZWFzdXJlbWVudE9jY2FzaW9uSW5mby1MQ1ItRXh0CUZBQ0gtTWVhc3VyZW1lbnRPY2Nhc2lvbkluZm8tTENSLXI0LWV4dAlPUFRJT05BTCwKKwltZWFzdXJlbWVudENvbnRyb2xTeXNJbmZvLUxDUgkJCU1lYXN1cmVtZW50Q29udHJvbFN5c0luZm8tTENSLXI0LWV4dAorfQorCitTeXNJbmZvVHlwZTEyLXY1OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIGNlbGwgaW4gbmV3SW50cmFGcmVxdWVuY3lDZWxsSW5mb0xpc3QKKwluZXdJbnRyYUZyZXF1ZW5jeUNlbGxJbmZvTGlzdC12NTkwZXh0CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJT1BUSU9OQUwsCisJLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIGNlbGwgaW4gbmV3SW50ZXJGcmVxdWVuY3lDZWxsSW5mb0xpc3QKKwluZXdJbnRlckZyZXF1ZW5jeUNlbGxJbmZvTGlzdC12NTkwZXh0CVNFUVVFTkNFIChTSVpFICgxLi5tYXhDZWxsTWVhcykpIE9GCisJCQkJCQkJCQkJCQlDZWxsU2VsZWN0UmVzZWxlY3RJbmZvLXY1OTBleHQJT1BUSU9OQUwsCisJLS1UaGUgb3JkZXIgb2YgdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIGNlbGwgaW4gbmV3SW50ZXJSQVRDZWxsSW5mb0xpc3QKKwluZXdJbnRlclJBVENlbGxJbmZvTGlzdC12NTkwZXh0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENlbGxNZWFzKSkgT0YKKwkJCQkJCQkJCQkJCUNlbGxTZWxlY3RSZXNlbGVjdEluZm8tdjU5MGV4dAlPUFRJT05BTCwKKwlpbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdC12NTkwZXh0CQlJbnRyYS1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dAkJT1BUSU9OQUwsCisJaW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJCUludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhLTFiLXI1CU9QVElPTkFMLAorCWludHJhRnJlcUV2ZW50LTFkLXI1CQkJCQlJbnRyYUZyZXFFdmVudC0xZC1yNQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEyLXY2OTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJLS0gTWVhc3VyZW1lbnQgSUVzCisJaW50ZXJGcmVxUkFDSFJlcG9ydGluZ0luZm8JCQlJbnRlckZyZXFSQUNIUmVwb3J0aW5nSW5mbwkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTMgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Eb21haW5TeXNJbmZvTGlzdAkJCUNOLURvbWFpblN5c0luZm9MaXN0LAorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1ZS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQlVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzCQkJT1BUSU9OQUwsCisJCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudAkJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50CQkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsgCisJCQlzeXNJbmZvVHlwZTEzLXYzYTBleHQJCQlTeXNJbmZvVHlwZTEzLXYzYTBleHQtSUVzLAorCQkJdjRiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCXN5c0luZm9UeXBlMTMtdjRiMGV4dAkJCVN5c0luZm9UeXBlMTMtdjRiMGV4dC1JRXMsCisJCQktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJc3lzSW5mb1R5cGUxMy12N3h5ZXh0CQkJU3lzSW5mb1R5cGUxMy12N3h5ZXh0LUlFcywKKwkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQlPUFRJT05BTAorCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJfQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEzLXYzYTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJdWUtSWRsZVRpbWVyc0FuZENvbnN0YW50cy12M2EwZXh0CQlVRS1JZGxlVGltZXJzQW5kQ29uc3RhbnRzLXYzYTBleHQKK30KKworU3lzSW5mb1R5cGUxMy12NGIwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCWNhcGFiaWxpdHlVcGRhdGVSZXF1aXJlbWVudC1yNEV4dAlDYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjQtZXh0CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTMtdjd4eWV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwljYXBhYmlsaXR5VXBkYXRlUmVxdWlyZW1lbnQtcjdFeHQJQ2FwYWJpbGl0eVVwZGF0ZVJlcXVpcmVtZW50LXI3LWV4dAlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTEzLTEgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gQU5TSS00MSBJRXMKKwkJYW5zaS00MS1SQU5ELUluZm9ybWF0aW9uCQlBTlNJLTQxLVJBTkQtSW5mb3JtYXRpb24sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMy0yIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIEFOU0ktNDEgSUVzCisJCWFuc2ktNDEtVXNlclpvbmVJRC1JbmZvcm1hdGlvbglBTlNJLTQxLVVzZXJab25lSUQtSW5mb3JtYXRpb24sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxMy0zIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIEFOU0ktNDEgSUVzCisJCWFuc2ktNDEtUHJpdmF0ZU5laWdoYm91ckxpc3RJbmZvIEFOU0ktNDEtUHJpdmF0ZU5laWdoYm91ckxpc3RJbmZvLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTMtNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBBTlNJLTQxIElFcworCQlhbnNpLTQxLUdsb2JhbFNlcnZpY2VSZWRpcmVjdEluZm8KKwkJCQkJCQkJCQlBTlNJLTQxLUdsb2JhbFNlcnZpY2VSZWRpcmVjdEluZm8sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNCA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQlpbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdAlJbmRpdmlkdWFsVFMtSW50ZXJmZXJlbmNlTGlzdCwKKwkJZXhwaXJhdGlvblRpbWVGYWN0b3IJCQlFeHBpcmF0aW9uVGltZUZhY3RvcgkJCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE1IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIE1lYXN1cmVtZW50IElFcworCQkKKwkJdWUtcG9zaXRpb25pbmctR1BTLUNpcGhlclBhcmFtZXRlcnMJCVVFLVBvc2l0aW9uaW5nLUNpcGhlclBhcmFtZXRlcnMJCU9QVElPTkFMLAorCQl1ZS1wb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlTG9jYXRpb24JUmVmZXJlbmNlTG9jYXRpb24sCisJCXVlLXBvc2l0aW9uaW5nLUdQUy1SZWZlcmVuY2VUaW1lCQlVRS1Qb3NpdGlvbmluZy1HUFMtUmVmZXJlbmNlVGltZSwKKworCQl1ZS1wb3NpdGlvbmluZy1HUFMtUmVhbC10aW1lSW50ZWdyaXR5CQlCYWRTYXRMaXN0CQkJCQkJCU9QVElPTkFMLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7IAorCQkJc3lzSW5mb1R5cGUxNS12NGIwZXh0CQkJCVN5c0luZm9UeXBlMTUtdjRiMGV4dC1JRXMsCisJCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTQgaW5mb3JtYXRpb24KKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTUtdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwl1cC1JcGRsLVBhcmFtZXRlcnMtVERECQkJVUUtUG9zaXRpb25pbmctSVBETC1QYXJhbWV0ZXJzLVRERC1yNC1leHQJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNS0xIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIERHUFMgY29ycmVjdGlvbnMKKwkJdWUtcG9zaXRpb25pbmctR1BTLURHUFMtQ29ycmVjdGlvbnMJCQlVRS1Qb3NpdGlvbmluZy1HUFMtREdQUy1Db3JyZWN0aW9ucywKKworCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCU9QVElPTkFMCit9IAorCitTeXNJbmZvVHlwZTE1LTIgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gRXBoZW1lcmlzIGFuZCBjbG9jayBjb3JyZWN0aW9ucworCQl0cmFuc21pc3Npb25UT1cJCQkJCUlOVEVHRVIgKDAuLjYwNDc5OSksCisJCXNhdElECQkJCQkJCVNhdElELAorCQllcGhlbWVyaXNQYXJhbWV0ZXIJCQkJRXBoZW1lcmlzUGFyYW1ldGVyLAorCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQlPUFRJT05BTAorfSAKKworU3lzSW5mb1R5cGUxNS0zIDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIEFsbWFuYWMgYW5kIG90aGVyIGRhdGEKKwkJdHJhbnNtaXNzaW9uVE9XCQkJCQlJTlRFR0VSICgwLi4gNjA0Nzk5KSwKKwkJdWUtcG9zaXRpb25pbmctR1BTLUFsbWFuYWMJCQkJCVVFLVBvc2l0aW9uaW5nLUdQUy1BbG1hbmFjCQkJCU9QVElPTkFMLAorCQl1ZS1wb3NpdGlvbmluZy1HUFMtSW9ub3NwaGVyaWNNb2RlbAkJCVVFLVBvc2l0aW9uaW5nLUdQUy1Jb25vc3BoZXJpY01vZGVsCQlPUFRJT05BTCwKKwkJdWUtcG9zaXRpb25pbmctR1BTLVVUQy1Nb2RlbAkJCQlVRS1Qb3NpdGlvbmluZy1HUFMtVVRDLU1vZGVsCQkJT1BUSU9OQUwsCisJCXNhdE1hc2sJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMS4uMzIpKQlPUFRJT05BTCwKKwkJbHNiVE9XCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDgpKQkJT1BUSU9OQUwsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCU9QVElPTkFMCit9IAorCitTeXNJbmZvVHlwZTE1LTQgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCXVlLXBvc2l0aW9uaW5nLU9URE9BLUNpcGhlclBhcmFtZXRlcnMJVUUtUG9zaXRpb25pbmctQ2lwaGVyUGFyYW1ldGVycwkJCU9QVElPTkFMLAorCQl1ZS1wb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YQkJVUUtUG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTE1LTQtdjNhMGV4dAkJCQlTeXNJbmZvVHlwZTE1LTQtdjNhMGV4dCwKKwkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJCXY0YjBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGUxNS00LXY0YjBleHQJCQkJU3lzSW5mb1R5cGUxNS00LXY0YjBleHQsCisJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTUtNC12M2EwZXh0IDo6PSBTRVFVRU5DRSB7CisJc2ZuLU9mZnNldC1WYWxpZGl0eQkJCQlTRk4tT2Zmc2V0LVZhbGlkaXR5CQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE1LTQtdjRiMGV4dCA6Oj0gU0VRVUVOQ0UgeworCXVlLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0ZXh0CVVFLVBvc2l0aW9uaW5nLU9URE9BLUFzc2lzdGFuY2VEYXRhLXI0ZXh0CU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTUtNSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJdWUtcG9zaXRpb25pbmctT1RET0EtQXNzaXN0YW5jZURhdGEtVUVCCQlVRS1Qb3NpdGlvbmluZy1PVERPQS1Bc3Npc3RhbmNlRGF0YS1VRUIsCisJCXYzYTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTE1LTUtdjNhMGV4dAkJCQlTeXNJbmZvVHlwZTE1LTUtdjNhMGV4dCwKKwkJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCQlTRVFVRU5DRSB7fQkJT1BUSU9OQUwKKwkJfQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE1LTUtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCXNmbi1PZmZzZXQtVmFsaWRpdHkJCQlTRk4tT2Zmc2V0LVZhbGlkaXR5CQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE2IDo6PQkJCQkJU0VRVUVOQ0UgeworCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcHJlRGVmaW5lZFJhZGlvQ29uZmlndXJhdGlvbglQcmVEZWZSYWRpb0NvbmZpZ3VyYXRpb24sCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGUxNyA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBQaHlzaWNhbCBjaGFubmVsIElFcworCQktLSBJZiBQRFNDSC9QVVNDSCBpcyBjb25maWd1cmVkIGZvciAxLjI4TWNwcyBUREQsIHB1c2NoLVN5c0luZm9MaXN0IGFuZAorCQktLSBwZHNjaC1TeXNJbmZvTGlzdCBzaG91bGQgYmUgYWJzZW50IGFuZCB0aGUgaW5mbyBpbmNsdWRlZCBpbiB0aGUKKwkJLS0gdGRkMTI4U3BlY2lmaWNJbmZvIGluc3RlYWQuCisJCS0tIElmIFBEU0NIL1BVU0NIIGlzIGNvbmZpZ3VyZWQgZm9yIDMuODRNY3BzIFRERCBpbiBSNSwgSENSLXI1LVNwZWNpZmljSW5mbyBzaG91bGQgYWxzbyBiZSAKKwkJLS0gaW5jbHVkZWQuCisJCXB1c2NoLVN5c0luZm9MaXN0CQkJCVBVU0NILVN5c0luZm9MaXN0CQkJCU9QVElPTkFMLAorCQlwZHNjaC1TeXNJbmZvTGlzdAkJCQlQRFNDSC1TeXNJbmZvTGlzdAkJCQlPUFRJT05BTCwKKwktLSBFeHRlbnNpb24gbWVjaGFuaXNtIGZvciBub24tIHJlbGVhc2U5OSBpbmZvcm1hdGlvbgorCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQlzeXNJbmZvVHlwZTE3LXY0YjBleHQJCQlTeXNJbmZvVHlwZTE3LXY0YjBleHQtSUVzLAorCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwlTRVFVRU5DRSB7CisJCQkJc3lzSW5mb1R5cGUxNy12NTkwZXh0CQkJU3lzSW5mb1R5cGUxNy12NTkwZXh0LUlFcwkJT1BUSU9OQUwsCisJCQkJdjd4eU5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQlzeXNJbmZvVHlwZTE3LXY3eHlleHQJCQlTeXNJbmZvVHlwZTE3LXY3eHlleHQtSUVzLAorCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQkJCQlPUFRJT05BTAorCQkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJCX0JCQkJCQkJT1BUSU9OQUwKKwkJfQkJCQkJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE3LXY0YjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJdGRkMTI4U3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKKwkJcHVzY2gtU3lzSW5mb0xpc3QJCQkJUFVTQ0gtU3lzSW5mb0xpc3QtTENSLXI0CQlPUFRJT05BTCwKKwkJcGRzY2gtU3lzSW5mb0xpc3QJCQkJUERTQ0gtU3lzSW5mb0xpc3QtTENSLXI0CQlPUFRJT05BTAorCX0JCQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTctdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwloY3ItcjUtU3BlY2lmaWNJbmZvCQkJCVNFUVVFTkNFIHsKKwkJcHVzY2gtU3lzSW5mb0xpc3QJCQlQVVNDSC1TeXNJbmZvTGlzdC1IQ1ItcjUJT1BUSU9OQUwsCisJCXBkc2NoLVN5c0luZm9MaXN0CQkJUERTQ0gtU3lzSW5mb0xpc3QtSENSLXI1CU9QVElPTkFMCisJfQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1N5c0luZm9UeXBlMTctdjd4eWV4dC1JRXMgOjo9CQlTRVFVRU5DRSB7CisJcHVzY2gtU3lzSW5mb0xpc3QtU0ZOLVZIQ1IJCQlQVVNDSC1TeXNJbmZvTGlzdC1TRk4tVkhDUgkJT1BUSU9OQUwsCisJcGRzY2gtU3lzSW5mb0xpc3QtcjcJCQkJUERTQ0gtU3lzSW5mb0xpc3QtcjcJCQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZTE4IDo6PQkJCQkJCVNFUVVFTkNFIHsKKwkJaWRsZU1vZGVQTE1OSWRlbnRpdGllcwkJCVBMTU5JZGVudGl0aWVzT2ZOZWlnaGJvdXJDZWxscwkJT1BUSU9OQUwsCisJCWNvbm5lY3RlZE1vZGVQTE1OSWRlbnRpdGllcwlQTE1OSWRlbnRpdGllc09mTmVpZ2hib3VyQ2VsbHMJCU9QVElPTkFMLAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorfQorCitTeXNJbmZvVHlwZVNCMSA6Oj0JCQkJCVNFUVVFTkNFIHsKKwktLSBPdGhlciBJRXMKKwkJc2liLVJlZmVyZW5jZUxpc3QJCQkJU0lCLVJlZmVyZW5jZUxpc3QsCisJLS0gRXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3Igbm9uLSByZWxlYXNlOTkgaW5mb3JtYXRpb24KKwkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCQkJCQkJT1BUSU9OQUwKK30KKworU3lzSW5mb1R5cGVTQjIgOjo9CQkJCQlTRVFVRU5DRSB7CisJLS0gT3RoZXIgSUVzCisJCXNpYi1SZWZlcmVuY2VMaXN0CQkJCVNJQi1SZWZlcmVuY2VMaXN0LAorCS0tIEV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIG5vbi0gcmVsZWFzZTk5IGluZm9ybWF0aW9uCisJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQkJCQkJCU9QVElPTkFMCit9CisKK1RERC1VTVRTLUZyZXF1ZW5jeS1MaXN0IDo6PSAJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TnVtVERERnJlcXMpKSBPRgorCQkJCQkJCQkJCQlGcmVxdWVuY3lJbmZvVERECisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBBTlNJLTQxIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjkpCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FOU0ktNDEtR2xvYmFsU2VydmljZVJlZGlyZWN0SW5mbyA6Oj0gCUFOU0ktNDEtTkFTLVBhcmFtZXRlcgorQU5TSS00MS1Qcml2YXRlTmVpZ2hib3VyTGlzdEluZm8gOjo9IAlBTlNJLTQxLU5BUy1QYXJhbWV0ZXIKK0FOU0ktNDEtUkFORC1JbmZvcm1hdGlvbiA6Oj0JCQlBTlNJLTQxLU5BUy1QYXJhbWV0ZXIKK0FOU0ktNDEtVXNlclpvbmVJRC1JbmZvcm1hdGlvbiA6Oj0gCQlBTlNJLTQxLU5BUy1QYXJhbWV0ZXIKK0FOU0ktNDEtTkFTLVBhcmFtZXRlciA6Oj0JCQkJQklUIFNUUklORyAoU0laRSAoMS4uMjA0OCkpCisKK01pbi1QLVJFViA6Oj0JCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCisKK05BUy1TeXN0ZW1JbmZvcm1hdGlvbkFOU0ktNDEgOjo9CQlBTlNJLTQxLU5BUy1QYXJhbWV0ZXIKK05JRCA6Oj0JCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNikpCisKK1AtUkVWIDo6PQkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoOCkpCisKK1NJRCA6Oj0JCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgxNSkpCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tICAgICBNQk1TIElORk9STUFUSU9OIEVMRU1FTlRTICgxMC4zLjlhKQorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitNQk1TLUFjY2Vzc1Byb2JhYmlsaXR5RmFjdG9yIDo6PQlFTlVNRVJBVEVEIHsKKwkJCQkJCQkJCQlhcGYwLCBhcGYzMiwgYXBmNjQsIGFwZjk2LCBhcGYxMjgsIGFwZjE2MCwgYXBmMTkyLAorCQkJCQkJCQkJCWFwZjIyNCwgYXBmMjU2LCBhcGYyODgsIGFwZjMyMCwgYXBmMzUyLCBhcGYzODQsIGFwZjQxNiwKKwkJCQkJCQkJCQlhcGY0NDgsIGFwZjQ4MCwgYXBmNTEyLCBhcGY1NDQsIGFwZjU3NiwgYXBmNjA4LCBhcGY2NDAsCisJCQkJCQkJCQkJYXBmNjcyLCBhcGY3MDQsIGFwZjczNiwgYXBmNzY4LCBhcGY4MDAsIGFwZjgzMiwgYXBmODY0LAorCQkJCQkJCQkJCWFwZjg5NiwgYXBmOTI4LCBhcGY5NjAsIGFwZjEwMDAgfQorCitNQk1TLUNlbGxHcm91cElkZW50aXR5LXI2IDo6PQkJQklUIFNUUklORyAoU0laRSAoMTIpKQorCitNQk1TLUNvbW1vbkNDVHJDaElkZW50aXR5IDo6PQkJSU5URUdFUiAoMS4uMzIpCisKK01CTVMtQ29tbW9uUGh5Q2hJZGVudGl0eSA6Oj0JCUlOVEVHRVIgKDEuLjMyKQorCitNQk1TLUNvbW1vblJCSWRlbnRpdHkgOjo9CQkJSU5URUdFUiAoMS4uMzIpCisKK01CTVMtQ29tbW9uUkJJbmZvcm1hdGlvbi1yNiA6Oj0JCVNFUVVFTkNFIHsKKwljb21tb25SQklkZW50aXR5CQkJCQlNQk1TLUNvbW1vblJCSWRlbnRpdHksCisJcGRjcC1JbmZvCQkJCQkJCVBEQ1AtSW5mby1yNCwKKwlybGMtSW5mbwkJCQkJCQlSTEMtSW5mby1NVENILXI2Cit9CisKK01CTVMtQ29tbW9uUkJJbmZvcm1hdGlvbkxpc3QtcjYgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUNvbW1vblJCKSkgT0YKKwkJCQkJCQkJCQlNQk1TLUNvbW1vblJCSW5mb3JtYXRpb24tcjYKKworTUJNUy1Db21tb25UckNoSWRlbnRpdHkgOjo9CQkJSU5URUdFUiAoMS4uMzIpCisKK01CTVMtQ29ubmVjdGVkTW9kZUNvdW50aW5nU2NvcGUgOjo9IFNFUVVFTkNFIHsKKwljb3VudGluZ0ZvclVyYVBDSAkJCQkJCQkJQk9PTEVBTiwKKwljb3VudGluZ0ZvckNlbGxQQ0gJCQkJCQkJCUJPT0xFQU4sCisJY291bnRpbmdGb3JDZWxsRkFDSAkJCQkJCQkJQk9PTEVBTgorfQorCitNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSC1yNiA6Oj0JCVNFUVVFTkNFIHsKKwlzY2NwY2hJZGVudGl0eQkJCQkJCU1CTVMtU0NDUENISWRlbnRpdHkJCQkJCU9QVElPTkFMLAorCXNlY29uZGFyeUNDUENILUluZm8JCQkJCU1CTVMtQ29tbW9uUGh5Q2hJZGVudGl0eSwKKwlzb2Z0Q29tYi1UaW1pbmdPZmZzZXQJCQkJTUJNUy1Tb2Z0Q29tYi1UaW1pbmdPZmZzZXQJCQlPUFRJT05BTCwKKwktLSBJZiB0aGUgSUUgdHJhbnNwQ2gtSW5mb0NvbW1vbkZvckFsbFRyQ2ggaXMgYWJzZW50LCB0aGUgZGVmYXVsdCBURkNTIGFzIHNwZWNpZmllZAorCS0tIGluIDE0LjEwLjEgYXBwbGllcworCXRyYW5zcENoLUluZm9Db21tb25Gb3JBbGxUckNoCQlNQk1TLUNvbW1vbkNDVHJDaElkZW50aXR5CQkJT1BUSU9OQUwsCisJdHJhbnNwQ0hJbmZvcm1hdGlvbgkJCQkJTUJNUy1UckNISW5mb3JtYXRpb24tQ3Vyckxpc3QKK30KKworTUJNUy1DdXJyZW50Q2VsbC1TQ0NQQ0hMaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4U0NDUENIKSkgT0YKKwkJCQkJCQkJCQlNQk1TLUN1cnJlbnRDZWxsLVNDQ1BDSC1yNgorCitNQk1TLUZBQ0hDYXJyeWluZ01UQ0gtTGlzdCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhGQUNIUENIKSkgT0YKKwkJCQkJCQkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0CisKK01CTVMtSm9pbmVkSW5mb3JtYXRpb24tcjYgOjo9CQlTRVFVRU5DRSB7CisJcC1UTVNJCQkJCQkJCQlQLVRNU0ktR1NNLU1BUAkJCQkJCU9QVElPTkFMCit9CisKK01CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS0zMiA6Oj0JCVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CisJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uNykJCQkJCQlPUFRJT05BTCwKKwltdGNoLUwxQ29tYmluaW5nUGVyaW9kTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUwxQ1ApKSBPRiBTRVFVRU5DRSB7CisJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjcpLAorCQlwZXJpb2REdXJhdGlvbgkJCQkJCUlOVEVHRVIgKDEuLjgpCisJfQorfQorCitNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtNjQgOjo9CQlTRVFVRU5DRSB7CisJLS0gQWN0dWFsIEwxIGNvbWJpbmluZyBzY2hlZHVsZSB2YWx1ZXMgKG9mZnNldCwgc3RhcnQsIGR1cmF0aW9uKSA9IElFIHZhbHVlICogNAorCWN5Y2xlT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAuLjE1KQkJCQkJCU9QVElPTkFMLAorCW10Y2gtTDFDb21iaW5pbmdQZXJpb2RMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtTDFDUCkpIE9GIFNFUVVFTkNFIHsKKwkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uMTUpLAorCQlwZXJpb2REdXJhdGlvbgkJCQkJCUlOVEVHRVIgKDEuLjE2KQorCX0KK30KKworTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTEyOCA6Oj0JU0VRVUVOQ0UgeworCS0tIEFjdHVhbCBMMSBjb21iaW5pbmcgc2NoZWR1bGUgdmFsdWVzIChvZmZzZXQsIHN0YXJ0LCBkdXJhdGlvbikgPSBJRSB2YWx1ZSAqIDQKKwljeWNsZU9mZnNldAkJCQkJCQlJTlRFR0VSICgwLi4zMSkJCQkJCQlPUFRJT05BTCwKKwltdGNoLUwxQ29tYmluaW5nUGVyaW9kTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUwxQ1ApKSBPRiBTRVFVRU5DRSB7CisJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjMxKSwKKwkJcGVyaW9kRHVyYXRpb24JCQkJCQlJTlRFR0VSICgxLi4zMikKKwl9Cit9CisKK01CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS0yNTYgOjo9CVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CisJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uNjMpCQkJCQkJT1BUSU9OQUwsCisJbXRjaC1MMUNvbWJpbmluZ1BlcmlvZExpc3QJCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNUy1MMUNQKSkgT0YgU0VRVUVOQ0UgeworCQlwZXJpb2RTdGFydAkJCQkJCQlJTlRFR0VSICgwLi42MyksCisJCXBlcmlvZER1cmF0aW9uCQkJCQkJSU5URUdFUiAoMS4uNjQpCisJfQorfQorCitNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtNTEyIDo6PQlTRVFVRU5DRSB7CisJLS0gQWN0dWFsIEwxIGNvbWJpbmluZyBzY2hlZHVsZSB2YWx1ZXMgKG9mZnNldCwgc3RhcnQsIGR1cmF0aW9uKSA9IElFIHZhbHVlICogNAorCWN5Y2xlT2Zmc2V0CQkJCQkJCUlOVEVHRVIgKDAuLjEyNykJCQkJCQlPUFRJT05BTCwKKwltdGNoLUwxQ29tYmluaW5nUGVyaW9kTGlzdAkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUwxQ1ApKSBPRiBTRVFVRU5DRSB7CisJCXBlcmlvZFN0YXJ0CQkJCQkJCUlOVEVHRVIgKDAuLjEyNyksCisJCXBlcmlvZER1cmF0aW9uCQkJCQkJSU5URUdFUiAoMS4uMTI4KQorCX0KK30KKworTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTEwMjQgOjo9CVNFUVVFTkNFIHsKKwktLSBBY3R1YWwgTDEgY29tYmluaW5nIHNjaGVkdWxlIHZhbHVlcyAob2Zmc2V0LCBzdGFydCwgZHVyYXRpb24pID0gSUUgdmFsdWUgKiA0CisJY3ljbGVPZmZzZXQJCQkJCQkJSU5URUdFUiAoMC4uMjU1KQkJCQkJCU9QVElPTkFMLAorCW10Y2gtTDFDb21iaW5pbmdQZXJpb2RMaXN0CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtTDFDUCkpIE9GIFNFUVVFTkNFIHsKKwkJcGVyaW9kU3RhcnQJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwkJcGVyaW9kRHVyYXRpb24JCQkJCQlJTlRFR0VSICgxLi4yNTYpCisJfQorfQorCitNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUgOjo9CQlDSE9JQ0UgeworCWN5Y2xlTGVuZ3RoLTMyCQkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTMyLAorCWN5Y2xlTGVuZ3RoLTY0CQkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTY0LAorCWN5Y2xlTGVuZ3RoLTEyOAkJCQkJCU1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS0xMjgsCisJY3ljbGVMZW5ndGgtMjU2CQkJCQkJTUJNUy1MMUNvbWJpbmluZ1NjaGVkdWxlLTI1NiwKKwljeWNsZUxlbmd0aC01MTIJCQkJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUtNTEyLAorCWN5Y2xlTGVuZ3RoLTEwMjQJCQkJCU1CTVMtTDFDb21iaW5pbmdTY2hlZHVsZS0xMDI0Cit9CisKK01CTVMtTDFDb21iaW5pbmdUcmFuc21UaW1lRGlmZiA6Oj0JSU5URUdFUiAoMC4uMykKKworTUJNUy1MMjNDb25maWd1cmF0aW9uIDo6PQkJCUNIT0lDRSB7CisJc2FtZUFzQ3VycmVudAkJCQkJCVNFUVVFTkNFIHsKKwkJY3VycmVudENlbGwtU0NDUENICQkJCQlNQk1TLVNDQ1BDSElkZW50aXR5LAorCQltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgkJT1BUSU9OQUwKKwl9LAorCWRpZmZlcmVudAkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIElmIHRoZSBJRSB0cmFuc3BDaC1JbmZvQ29tbW9uRm9yQWxsVHJDaCBpcyBhYnNlbnQsIHRoZSBkZWZhdWx0IFRGQ1MgYXMgc3BlY2lmaWVkCisJCS0tIGluIDE0LjEwLjEgYXBwbGllcworCQl0cmFuc3BDaC1JbmZvQ29tbW9uRm9yQWxsVHJDaAkJTUJNUy1Db21tb25DQ1RyQ2hJZGVudGl0eQkJCU9QVElPTkFMLAorCQl0cmFuc3BDSEluZm9ybWF0aW9uCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1OZWlnaGJMaXN0CisJfQorfQorCitNQk1TLUxvZ2ljYWxDaElkZW50aXR5IDo6PQkJCUlOVEVHRVIgKDEuLjE1KQorCitNQk1TLU1DQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYgOjo9CVNFUVVFTkNFIHsKKwlhY2Nlc3NJbmZvUGVyaW9kQ29lZmZpY2llbnQJCQlJTlRFR0VSICgwLi4zKSwKKwlyZXBldGl0aW9uUGVyaW9kQ29lZmZpY2llbnQJCQlJTlRFR0VSICgwLi4zKSwKKwltb2RpZmljYXRpb25QZXJpb2RDb2VmZmljaWVudAkJSU5URUdFUiAoNy4uMTApLAorCXJsYy1JbmZvCQkJCQkJCVJMQy1JbmZvLU1DQ0gtcjYsCisJdGN0Zi1QcmVzZW5jZQkJCQkJCU1CTVMtVENURi1QcmVzZW5jZQkJCQkJT1BUSU9OQUwKK30KKworTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjYgOjo9CVNFUVVFTkNFIHsKKwltaWNoUG93ZXJPZmZzZXQJCQkJCQlNQk1TLU1JQ0hQb3dlck9mZnNldCwKKwltb2RlCQkJCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljaGFubmVsaXNhdGlvbkNvZGUyNTYJCQkJQ2hhbm5lbGlzYXRpb25Db2RlMjU2LAorCQkJbmktQ291bnRQZXJGcmFtZQkJCQkJTUJNUy1OSS1Db3VudFBlckZyYW1lLAorCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJCX0sCisJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAorCQkJbWJtc05vdGlmaWNhdGlvbkluZExlbmd0aAkJCU1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aAlERUZBVUxUIG1uNAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKKwkJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgorCQkJCQkJCQkJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwkJCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1NSUNICQlPUFRJT05BTCwKKwkJCW1ibXNOb3RpZmljYXRpb25JbmRMZW5ndGgJCQlNQk1TLU1JQ0hOb3RpZmljYXRpb25JbmRMZW5ndGgJREVGQVVMVCBtbjQKKwkJfQorCX0KK30KKworTUJNUy1NSUNIQ29uZmlndXJhdGlvbkluZm8tcjcgOjo9CVNFUVVFTkNFIHsKKwltaWNoUG93ZXJPZmZzZXQJCQkJCQlNQk1TLU1JQ0hQb3dlck9mZnNldCwKKwltb2RlCQkJCQkJCQlDSE9JQ0UgeworCQlmZGQJCQkJCQkJCQlTRVFVRU5DRSB7CisJCQljaGFubmVsaXNhdGlvbkNvZGUyNTYJCQkJQ2hhbm5lbGlzYXRpb25Db2RlMjU2LAorCQkJbmktQ291bnRQZXJGcmFtZQkJCQkJTUJNUy1OSS1Db3VudFBlckZyYW1lLAorCQkJc3R0ZC1JbmRpY2F0b3IJCQkJCQlCT09MRUFOCisJCX0sCisJCXRkZDM4NAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGltZXNsb3QJCQkJCQkJVGltZXNsb3ROdW1iZXIsCisJCQltaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlCQkJTWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZSwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAorCQkJbWJtc05vdGlmaWNhdGlvbkluZExlbmd0aAkJCU1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aAlERUZBVUxUIG1uNAorCQl9LAorCQl0ZGQ3NjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLAorCQkJbWlkYW1ibGVTaGlmdEFuZEJ1cnN0VHlwZQkJCU1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUtVkhDUiwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZQkJCQkJREwtVFMtQ2hhbm5lbGlzYXRpb25Db2RlLAorCQkJcmVwZXRpdGlvblBlcmlvZExlbmd0aE9mZnNldAkJUmVwUGVyTGVuZ3RoT2Zmc2V0LU1JQ0gJCU9QVElPTkFMLAorCQkJbWJtc05vdGlmaWNhdGlvbkluZExlbmd0aAkJCU1CTVMtTUlDSE5vdGlmaWNhdGlvbkluZExlbmd0aAlERUZBVUxUIG1uNAorCQl9LAorCQl0ZGQxMjgJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXRpbWVzbG90CQkJCQkJCVRpbWVzbG90TnVtYmVyLUxDUi1yNCwKKwkJCW1pZGFtYmxlU2hpZnRBbmRCdXJzdFR5cGUJCQlNaWRhbWJsZVNoaWZ0QW5kQnVyc3RUeXBlLUxDUi1yNCwKKwkJCWNoYW5uZWxpc2F0aW9uQ29kZUxpc3QJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLjIpKSBPRgorCQkJCQkJCQkJCQkJCURMLVRTLUNoYW5uZWxpc2F0aW9uQ29kZSwKKwkJCXJlcGV0aXRpb25QZXJpb2RMZW5ndGhPZmZzZXQJCVJlcFBlckxlbmd0aE9mZnNldC1NSUNICQlPUFRJT05BTCwKKwkJCW1ibXNOb3RpZmljYXRpb25JbmRMZW5ndGgJCQlNQk1TLU1JQ0hOb3RpZmljYXRpb25JbmRMZW5ndGgJREVGQVVMVCBtbjQKKwkJfQorCX0KK30KKworTUJNUy1NSUNITm90aWZpY2F0aW9uSW5kTGVuZ3RoIDo6PQlFTlVNRVJBVEVEIHsgbW40LCBtbjgsIG1uMTYgfQorCitNQk1TLU1JQ0hQb3dlck9mZnNldCA6Oj0JCQlJTlRFR0VSICgtMTAuLjUpCisKK01CTVMtTW9kaWZlZFNlcnZpY2UtcjYgOjo9CQkJU0VRVUVOQ0UgeworCW1ibXMtVHJhbnNtaXNzaW9uSWRlbnRpdHkJCQlNQk1TLVRyYW5zbWlzc2lvbklkZW50aXR5LAorCW1ibXMtUmVxdWlyZWRVRUFjdGlvbgkJCQlNQk1TLVJlcXVpcmVkVUVBY3Rpb24tTW9kLAorCW1ibXMtUHJlZmVycmVkRnJlcXVlbmN5CQkJCUNIT0lDRSB7CisJCW1jY2gJCQkJCQkJCU1CTVMtUEZMSW5kZXgsCisJCWRjY2gJCQkJCQkJCU1CTVMtUEZMSW5mbworCX0JCU9QVElPTkFMLAorCW1ibXMtRGlzcGVyc2lvbkluZGljYXRvcgkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQkJCU9QVElPTkFMLAorCWNvbnRpbnVlTUNDSFJlYWRpbmcJCQkJCUJPT0xFQU4KK30KKworTUJNUy1Nb2RpZmVkU2VydmljZUxpc3QtcjYgOjo9CQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNU3NlcnZNb2RpZikpIE9GCisJCQkJCQkJCQkJTUJNUy1Nb2RpZmVkU2VydmljZS1yNgorCitNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYgOjo9CVNFUVVFTkNFIHsKKwltc2NoU2hlZHVsaW5nSW5mbwkJCQkJTUJNUy1NU0NIU2NoZWR1bGluZ0luZm8JCQkJT1BUSU9OQUwsCisJcmxjLUluZm8JCQkJCQkJUkxDLUluZm8tTVNDSC1yNgkJCQkJT1BUSU9OQUwsCisJdGN0Zi1QcmVzZW5jZQkJCQkJCU1CTVMtVENURi1QcmVzZW5jZQkJCQkJT1BUSU9OQUwKK30KKworTUJNUy1NU0NIU2NoZWR1bGluZ0luZm8gOjo9CQkJQ0hPSUNFIHsKKwlzY2hlZHVsaW5nUGVyaW9kLTMyLU9mZnNldAkJCUlOVEVHRVIgKDAuLjMxKSwKKwlzY2hlZHVsaW5nUGVyaW9kLTY0LU9mZnNldAkJCUlOVEVHRVIgKDAuLjYzKSwKKwlzY2hlZHVsaW5nUGVyaW9kLTEyOC1PZmZzZXQJCQlJTlRFR0VSICgwLi4xMjcpLAorCXNjaGVkdWxpbmdQZXJpb2QtMjU2LU9mZnNldAkJCUlOVEVHRVIgKDAuLjI1NSksCisJc2NoZWR1bGluZ1BlcmlvZC01MTItT2Zmc2V0CQkJSU5URUdFUiAoMC4uNTExKSwKKwlzY2hlZHVsaW5nUGVyaW9kLTEwMjQtT2Zmc2V0CQlJTlRFR0VSICgwLi4xMDIzKQorfQorCitNQk1TLU5laWdoYm91cmluZ0NlbGxTQ0NQQ0gtcjYgOjo9CVNFUVVFTkNFIHsKKwlzZWNvbmRhcnlDQ1BDSC1JbmZvCQkJCQlNQk1TLUNvbW1vblBoeUNoSWRlbnRpdHksCisJc2Vjb25kYXJ5Q0NQQ0hQd3JPZmZzZXREaWZmCQkJTUJNUy1TQ0NQQ0hQd3JPZmZzZXREaWZmCQkJT1BUSU9OQUwsCisJbGF5ZXIxQ29tYmluaW5nCQkJCQkJQ0hPSUNFIHsKKwkJZmRkCQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJc29mdENvbWItVGltaW5nT2Zmc2V0CQkJCU1CTVMtU29mdENvbWItVGltaW5nT2Zmc2V0LAorCQkJbWJtcy1MMUNvbWJpbmluZ1RyYW5zbVRpbWVEaWZmCQlNQk1TLUwxQ29tYmluaW5nVHJhbnNtVGltZURpZmYsCisJCQltYm1zLUwxQ29tYmluaW5nU2NoZWR1bGUJCQlNQk1TLUwxQ29tYmluaW5nU2NoZWR1bGUJT1BUSU9OQUwKKwkJfSwKKwkJdGRkCQkJCQkJCQkJTlVMTAorCX0JCU9QVElPTkFMLAorCW1ibXMtTDIzQ29uZmlndXJhdGlvbgkJCQlNQk1TLUwyM0NvbmZpZ3VyYXRpb24KK30KKworTUJNUy1OZWlnaGJvdXJpbmdDZWxsU0NDUENITGlzdC1yNiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNDQ1BDSCkpIE9GCisJCQkJCQkJCQkJTUJNUy1OZWlnaGJvdXJpbmdDZWxsU0NDUENILXI2CisKK01CTVMtTkktQ291bnRQZXJGcmFtZSA6Oj0JCQlFTlVNRVJBVEVEIHsgbmkxOCwgbmkzNiwgbmk3MiwgbmkxNDQgfQorCitNQk1TLU51bWJlck9mTmVpZ2hib3VyQ2VsbHMtcjYgOjo9CQlJTlRFR0VSICgwLi4zMikKKworTUJNUy1QRkxJbmRleCA6Oj0JCQkJCUlOVEVHRVIgKDEuLm1heE1CTVMtRnJlcSkKKworTUJNUy1QRkxJbmZvIDo6PQkJCQkJRnJlcXVlbmN5SW5mbworCitNQk1TLVBoeUNoSW5mb3JtYXRpb24tcjYgOjo9CQlTRVFVRU5DRSB7CisJbWJtcy1Db21tb25QaHlDaElkZW50aXR5CQkJTUJNUy1Db21tb25QaHlDaElkZW50aXR5LAorCXNlY29uZGFyeUNDUENISW5mby1NQk1TCQkJCVNlY29uZGFyeUNDUENISW5mby1NQk1TLXI2Cit9CisKK01CTVMtUGh5Q2hJbmZvcm1hdGlvbkxpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUNvbW1vblBoeUNoKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVBoeUNoSW5mb3JtYXRpb24tcjYKKworTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2IDo6PQlFTlVNRVJBVEVEIHsgdHJ1ZSB9CisKK01CTVMtUHJlZmVycmVkRnJlcVJlcXVlc3QtcjYgOjo9CVNFUVVFTkNFIHsKKwlwcmVmZXJyZWRGcmVxUmVxdWVzdAkJCQlGcmVxdWVuY3lJbmZvCit9CisKK01CTVMtUHJlZmVycmVkRnJlcXVlbmN5SW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCW1ibXNQcmVmZXJyZWRGcmVxdWVuY3kJCQkJSU5URUdFUiAoMS4ubWF4TUJNUy1GcmVxKQkJCU9QVElPTkFMLAorCWxheWVyQ29udmVyZ2VuY2VJbmZvcm1hdGlvbgkJCUNIT0lDRSB7CisJCW1ibXMtUW9mZnNldAkJCQkJCU1CTVMtUW9mZnNldCwKKwkJbWJtcy1IQ1NvZmZzZXQJCQkJCQlJTlRFR0VSICgwLi43KQorCX0sCisJbWJtcy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvCQkJTUJNUy1QTC1TZXJ2aWNlUmVzdHJpY3RJbmZvLXI2CQlPUFRJT05BTAorfQorCitNQk1TLVByZWZlcnJlZEZyZXF1ZW5jeUxpc3QtcjYgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUZyZXEpKSBPRgorCQkJCQkJCQkJCU1CTVMtUHJlZmVycmVkRnJlcXVlbmN5SW5mby1yNgorCitNQk1TLVBUTUFjdGl2YXRpb25UaW1lLXI2IDo6PQkJSU5URUdFUiAoMC4uMjA0NykKKworTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1DIDo6PQkJU0VRVUVOQ0UgeworCXJiSW5mb3JtYXRpb24JCQkJCQlNQk1TLUNvbW1vblJCSWRlbnRpdHksCisJc2hvcnRUcmFuc21pc3Npb25JRAkJCQkJTUJNUy1TaG9ydFRyYW5zbWlzc2lvbklELAorCWxvZ2ljYWxDaElkZW50aXR5CQkJCQlNQk1TLUxvZ2ljYWxDaElkZW50aXR5Cit9CisKK01CTVMtUFRNLVJCSW5mb3JtYXRpb24tQ0xpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQnBlclRyQ2gpKSBPRgorCQkJCQkJCQkJCU1CTVMtUFRNLVJCSW5mb3JtYXRpb24tQworCitNQk1TLVBUTS1SQkluZm9ybWF0aW9uLU4gOjo9CQlTRVFVRU5DRSB7CisJc2hvcnRUcmFuc21pc3Npb25JRAkJCQkJTUJNUy1TaG9ydFRyYW5zbWlzc2lvbklELAorCWxvZ2ljYWxDaElkZW50aXR5CQkJCQlNQk1TLUxvZ2ljYWxDaElkZW50aXR5LAorCWxheWVyMS1Db21iaW5pbmdTdGF0dXMJCQkJQk9PTEVBTn0KKworTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1OTGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCcGVyVHJDaCkpIE9GCisJCQkJCQkJCQkJTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1OCisKK01CTVMtUW9mZnNldCA6Oj0JCQkJCUVOVU1FUkFURUQgeyBxNCwgcTgsIHExMiwgcTE2LCBxMjAsIHEzMCwgcTQwLCBxSW5maW5pdHkgfQorCitNQk1TLVJlcXVpcmVkVUVBY3Rpb24tTW9kIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9uZSwKKwkJCQkJCQkJCQlhY3F1aXJlQ291bnRpbmdJbmZvLAorCQkJCQkJCQkJCWFjcXVpcmVDb3VudGluZ0luZm9QVE0tUkJzVW5tb2RpZmllZCwKKwkJCQkJCQkJCQlhY3F1aXJlUFRNLVJCSW5mbywKKwkJCQkJCQkJCQlyZXF1ZXN0UFRQUkIsCisJCQkJCQkJCQkJcmVsZWFzZVBUTS1SQiB9CisKK01CTVMtUmVxdWlyZWRVRUFjdGlvbi1VTW9kIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJbm9uZSwKKwkJCQkJCQkJCQlhY3F1aXJlUFRNLVJCSW5mbywKKwkJCQkJCQkJCQlyZXF1ZXN0UFRQUkIgfQorCitNQk1TLVNDQ1BDSElkZW50aXR5IDo6PQkJCQlJTlRFR0VSICgxLi5tYXhTQ0NQQ0gpCisKK01CTVMtU0NDUENIUHdyT2Zmc2V0RGlmZiA6Oj0JCUVOVU1FUkFURUQgeyBtY3BvLW1pbnVzNiwgbWNwby1taW51czMsIG1jcG8tcGx1czMsIG1jcG8tcGx1czYgfQorCitNQk1TLVNlcnZpY2VBY2Nlc3NJbmZvLXI2IDo6PQkJU0VRVUVOQ0UgeworCXNob3J0VHJhbnNtaXNzaW9uSUQJCQkJCU1CTVMtU2hvcnRUcmFuc21pc3Npb25JRCwKKwlhY2Nlc3Nwcm9iYWJpbGl0eUZhY3Rvci1JZGxlCQlNQk1TLUFjY2Vzc1Byb2JhYmlsaXR5RmFjdG9yLAorCWFjY2Vzc3Byb2JhYmlsaXR5RmFjdG9yLVVyYVBDSAkJTUJNUy1BY2Nlc3NQcm9iYWJpbGl0eUZhY3RvcgkJT1BUSU9OQUwsCisJbWJtcy1Db25uZWN0ZWRNb2RlQ291bnRpbmdTY29wZQkJTUJNUy1Db25uZWN0ZWRNb2RlQ291bnRpbmdTY29wZQorfQorCitNQk1TLVNlcnZpY2VBY2Nlc3NJbmZvTGlzdC1yNiA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVNzZXJ2Q291bnQpKSBPRgorCQkJCQkJCQkJCU1CTVMtU2VydmljZUFjY2Vzc0luZm8tcjYKKworTUJNUy1TZXJ2aWNlSWRlbnRpdHktcjYgOjo9CQkJU0VRVUVOQ0UgeworCXNlcnZpY2VJZGVudGl0eQkJCQkJCU9DVEVUIFNUUklORyAoU0laRSAoMykpLAorCXBsbW4tSWRlbnRpdHkJCQkJCQlDSE9JQ0UgeworCQktLSBUaGUgJ3NhbWVBc01JQi1QTE1OLUlkJyBjaG9pY2UgcmVmZXJzIHRvIHRoZSAnUExNTiBJZGVudGl0eScgKFI5OSkgaW4gTUlCLgorCQlzYW1lQXNNSUItUExNTi1JZAkJCQkJTlVMTCwKKwkJb3RoZXIJCQkJCQkJCUNIT0lDRSB7CisJCQktLSBUaGUgJ3NhbWVBc01JQi1NdWx0aVBMTU4tSWQnIGNob2ljZSByZWZlcnMgdG8gb25lIG9mIHRoZSAoMS4uNSkgUExNTiBJZGVudGl0aWVzCisJCQktLSBwcm92aWRlZCBpbiB0aGUgJ011bHRpcGxlIFBMTU4gTGlzdCcgKFJFTC02KSBpbiBNSUIuCisJCQlzYW1lQXNNSUItTXVsdGlQTE1OLUlkCQkJCUlOVEVHRVIgKDEuLjUpLAorCQkJZXhwbGljaXRQTE1OLUlkCQkJCQkJUExNTi1JZGVudGl0eQorCQl9CisJfQorfQorCitNQk1TLVNlcnZpY2VTY2hlZHVsaW5nSW5mby1yNiA6Oj0JU0VRVUVOQ0UgeworCW1ibXMtVHJhbnNtaXNzaW9uSWRlbnRpdHkJCQlNQk1TLVRyYW5zbWlzc2lvbklkZW50aXR5LAorCW1ibXMtU2VydmljZVRyYW5zbUluZm9MaXN0CQkJTUJNUy1TZXJ2aWNlVHJhbnNtSW5mb0xpc3QJCQlPUFRJT05BTCwKKwluZXh0U2NoZWR1bGluZ3BlcmlvZAkJCQlJTlRFR0VSICgwLi4zMSkKK30KKworTUJNUy1TZXJ2aWNlU2NoZWR1bGluZ0luZm9MaXN0LXI2IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNU3NlcnZTY2hlZCkpIE9GCisJCQkJCQkJCQkJTUJNUy1TZXJ2aWNlU2NoZWR1bGluZ0luZm8tcjYKKworTUJNUy1TZXJ2aWNlVHJhbnNtSW5mbyA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gQWN0dWFsIHZhbHVlcyAoc3RhcnQsIGR1cmF0aW9uKSA9IElFIHZhbHVlcyAqIDQKKwlzdGFydAkJCQkJCQkJSU5URUdFUiAoMC4uMjU1KSwKKwlkdXJhdGlvbgkJCQkJCQlJTlRFR0VSICgxLi4yNTYpCit9CisKK01CTVMtU2VydmljZVRyYW5zbUluZm9MaXN0IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVNUcmFuc21pcykpIE9GCisJCQkJCQkJCQkJTUJNUy1TZXJ2aWNlVHJhbnNtSW5mbworCitNQk1TLVNlc3Npb25JZGVudGl0eSA6Oj0JCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQorCitNQk1TLVNob3J0VHJhbnNtaXNzaW9uSUQgOjo9CQlJTlRFR0VSICgxLi5tYXhNQk1Tc2VydlVubW9kaWYpCisKK01CTVMtU0lCVHlwZTUtU0NDUENILXI2IDo6PQkJCVNFUVVFTkNFIHsKKwlzY2NwY2hJZGVudGl0eQkJCQkJCU1CTVMtU0NDUENISWRlbnRpdHksCisJdHJhbnNwQ0hJbmZvcm1hdGlvbgkJCQkJTUJNUy1UckNISW5mb3JtYXRpb24tU0lCNUxpc3QKK30KKworTUJNUy1TSUJUeXBlNS1TQ0NQQ0hMaXN0LXI2IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFNDQ1BDSCkpIE9GCisJCQkJCQkJCQkJTUJNUy1TSUJUeXBlNS1TQ0NQQ0gtcjYKKworTUJNUy1Tb2Z0Q29tYi1UaW1pbmdPZmZzZXQgOjo9CQlFTlVNRVJBVEVEIHsgbXMwLCBtczEwLCBtczIwLCBtczQwIH0KKworTUJNUy1UQ1RGLVByZXNlbmNlIDo6PQkJCQlFTlVNRVJBVEVEIHsgZmFsc2UgfQorCitNQk1TLVRpbWVyc0FuZENvdW50ZXJzLXI2IDo6PQkJU0VRVUVOQ0UgeworCXQtMzE4CQkJCQkJCQlULTMxOAkJCQkJCQkJREVGQVVMVCBtczEwMDAKK30KKworTUJNUy1UcmFuc21pc3Npb25JZGVudGl0eSA6Oj0JCVNFUVVFTkNFIHsKKwltYm1zLVNlcnZpY2VJZGVudGl0eQkJCQlNQk1TLVNlcnZpY2VJZGVudGl0eS1yNiwKKwltYm1zLVNlc3Npb25JZGVudGl0eQkJCQlNQk1TLVNlc3Npb25JZGVudGl0eQkJCQlPUFRJT05BTAorfQorCitNQk1TLVRyYW5zcENoSW5mb0ZvckNDVHJDaC1yNiA6Oj0JU0VRVUVOQ0UgeworCWNvbW1vbkNDVHJDaElkZW50aXR5CQkJCU1CTVMtQ29tbW9uQ0NUckNoSWRlbnRpdHksCisJdHJhbnNwb3J0Rm9ybWF0Q29tYmluYXRpb25TZXQJCVRGQ1MKK30KKworCitNQk1TLVRyYW5zcENoSW5mb0ZvckVhY2hDQ1RyQ2gtcjYgOjo9IFNFUVVFTkNFIChTSVpFICgxLi5tYXhNQk1TLUNvbW1vbkNDVHJDaCkpIE9GCisJCQkJCQkJCQkJTUJNUy1UcmFuc3BDaEluZm9Gb3JDQ1RyQ2gtcjYKKworTUJNUy1UcmFuc3BDaEluZm9Gb3JFYWNoVHJDaC1yNiA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE1CTVMtQ29tbW9uVHJDaCkpIE9GCisJCQkJCQkJCQkJTUJNUy1UcmFuc3BDaEluZm9Gb3JUckNoLXI2CisKK01CTVMtVHJhbnNwQ2hJbmZvRm9yVHJDaC1yNiA6Oj0JCVNFUVVFTkNFIHsKKwljb21tb25UckNoSWRlbnRpdHkJCQkJCU1CTVMtQ29tbW9uVHJDaElkZW50aXR5LAorCXRyYW5zcG9ydEZvcm1hdFNldAkJCQkJVHJhbnNwb3J0Rm9ybWF0U2V0Cit9CisKK01CTVMtVHJDSEluZm9ybWF0aW9uLUN1cnIgOjo9CQlTRVFVRU5DRSB7CisJdHJhbnNwQ2gtSW5mbwkJCQkJCU1CTVMtQ29tbW9uVHJDaElkZW50aXR5LAorCXJiSW5mb3JtYXRpb24JCQkJCQlNQk1TLVBUTS1SQkluZm9ybWF0aW9uLUNMaXN0CQlPUFRJT05BTCwKKwltc2NoLUNvbmZpZ3VyYXRpb25JbmZvCQkJCU1CTVMtTVNDSC1Db25maWd1cmF0aW9uSW5mby1yNgkJT1BUSU9OQUwKK30KKworTUJNUy1UckNISW5mb3JtYXRpb24tQ3Vyckxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGQUNIUENIKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1DdXJyCisKK01CTVMtVHJDSEluZm9ybWF0aW9uLU5laWdoYiA6Oj0JCVNFUVVFTkNFIHsKKwl0cmFuc3BDaC1JbmZvCQkJCQkJTUJNUy1Db21tb25UckNoSWRlbnRpdHksCisJdHJhbnNwQ2gtQ29tYmluaW5nU3RhdHVzCQkJQk9PTEVBTiwKKwlyYkluZm9ybWF0aW9uCQkJCQkJTUJNUy1QVE0tUkJJbmZvcm1hdGlvbi1OTGlzdAkJT1BUSU9OQUwsCisJbXNjaC1Db25maWd1cmF0aW9uSW5mbwkJCQlNQk1TLU1TQ0gtQ29uZmlndXJhdGlvbkluZm8tcjYJCU9QVElPTkFMCit9CisKK01CTVMtVHJDSEluZm9ybWF0aW9uLU5laWdoYkxpc3QgOjo9CVNFUVVFTkNFIChTSVpFICgxLi5tYXhGQUNIUENIKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVRyQ0hJbmZvcm1hdGlvbi1OZWlnaGIKKworTUJNUy1UckNISW5mb3JtYXRpb24tU0lCNSA6Oj0JCVNFUVVFTkNFIHsKKwl0cmFuc3BDaC1JZGVudGl0eQkJCQkJSU5URUdFUiAoMS4ubWF4RkFDSFBDSCksCisJcmJJbmZvcm1hdGlvbgkJCQkJCU1CTVMtUFRNLVJCSW5mb3JtYXRpb24tQ0xpc3QJCU9QVElPTkFMLAorCW1zY2gtQ29uZmlndXJhdGlvbkluZm8JCQkJTUJNUy1NU0NILUNvbmZpZ3VyYXRpb25JbmZvLXI2CQlPUFRJT05BTAorfQorCitNQk1TLVRyQ0hJbmZvcm1hdGlvbi1TSUI1TGlzdCA6Oj0JU0VRVUVOQ0UgKFNJWkUgKDEuLm1heEZBQ0hQQ0gpKSBPRgorCQkJCQkJCQkJCU1CTVMtVHJDSEluZm9ybWF0aW9uLVNJQjUKKworTUJNUy1Vbm1vZGlmaWVkU2VydmljZS1yNiA6Oj0JCVNFUVVFTkNFIHsKKwltYm1zLVRyYW5zbWlzc2lvbklkZW50aXR5CQkJTUJNUy1UcmFuc21pc3Npb25JZGVudGl0eSwKKwltYm1zLVJlcXVpcmVkVUVBY3Rpb24JCQkJTUJNUy1SZXF1aXJlZFVFQWN0aW9uLVVNb2QsCisJbWJtcy1QcmVmZXJyZWRGcmVxdWVuY3kJCQkJTUJNUy1QRkxJbmRleAkJCQkJCU9QVElPTkFMCit9CisKK01CTVMtVW5tb2RpZmllZFNlcnZpY2VMaXN0LXI2IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4TUJNU3NlcnZVbm1vZGlmKSkgT0YKKwkJCQkJCQkJCQlNQk1TLVVubW9kaWZpZWRTZXJ2aWNlLXI2CisKK0VORAorCitDb25zdGFudC1kZWZpbml0aW9ucyBERUZJTklUSU9OUyBBVVRPTUFUSUMgVEFHUyA6Oj0KKworQkVHSU4KKworaGlQRFNDSGlkZW50aXRpZXMJCQlJTlRFR0VSIDo6PSA2NAoraGlQVVNDSGlkZW50aXRpZXMJCQlJTlRFR0VSIDo6PSA2NAoraGlSTQkJCQkJCUlOVEVHRVIgOjo9IDI1NgorbWF4QUMJCQkJCQlJTlRFR0VSIDo6PSAxNgorbWF4QWRkaXRpb25hbE1lYXMgCQkJSU5URUdFUiA6Oj0gNAorbWF4QVNDCQkJCQkJSU5URUdFUiA6Oj0gOAorbWF4QVNDbWFwCQkJCQlJTlRFR0VSIDo6PSA3CittYXhBU0NwZXJzaXN0CQkJCUlOVEVHRVIgOjo9IDYKK21heENDVHJDSAkJCQkJSU5URUdFUiA6Oj0gOAorbWF4Q2VsbE1lYXMgCQkJCUlOVEVHRVIgOjo9IDMyCittYXhDZWxsTWVhcy0xCQkJCUlOVEVHRVIgOjo9IDMxCittYXhDTmRvbWFpbnMJCQkJSU5URUdFUiA6Oj0gNAorbWF4Q1BDSHNldHMJCQkJCUlOVEVHRVIgOjo9IDE2CittYXhEUENILURMY2hhbgkJCQlJTlRFR0VSIDo6PSA4CittYXhEUERDSC1VTAkJCQkJSU5URUdFUiA6Oj0gNgorbWF4RFJBQ2NsYXNzZXMJCQkJSU5URUdFUiA6Oj0gOAorbWF4RS1EQ0hNQUNkRmxvdwkJCUlOVEVHRVIgOjo9IDgKK21heEUtRENITUFDZEZsb3ctMQkJCUlOVEVHRVIgOjo9IDcKK21heEVEQ0hSTAkJCQkJSU5URUdFUiA6Oj0gNAorbWF4RkFDSFBDSAkJCQkJSU5URUdFUiA6Oj0gOAorbWF4RnJlcQkJCQkJCUlOVEVHRVIgOjo9IDgKK21heEZyZXFCYW5kc0ZERAkJCQlJTlRFR0VSIDo6PSA4CittYXhGcmVxQmFuZHNGREQtZXh0CQkJSU5URUdFUiA6Oj0gMTUJLS0gbWF4RnJlcUJhbmRzRkRELWV4dCA6Oj0gMjIg0CAobWF4RnJlcUJhbmRzRkREINAgMSkKK21heEZyZXFCYW5kc1RERAkJCQlJTlRFR0VSIDo6PSA0CittYXhGcmVxQmFuZHNHU00JCQkJSU5URUdFUiA6Oj0gMTYKK21heEdFUkFOLVNJCQkJCQlJTlRFR0VSIDo6PSA4CittYXhHU01UYXJnZXRDZWxscwkJCUlOVEVHRVIgOjo9IDMyCittYXhIUHJvY2Vzc2VzIAkJCQlJTlRFR0VSIDo6PSA4CittYXhIU0RTQ0hUQkluZGV4CQkJSU5URUdFUiA6Oj0gNjQKK21heEhTRFNDSFRCSW5kZXgtdGRkMzg0CQlJTlRFR0VSIDo6PSA1MTIKK21heEhTU0NDSHMJCQkJCUlOVEVHRVIgOjo9IDQKK21heEludGVyU3lzTWVzc2FnZXMgCQlJTlRFR0VSIDo6PSA0CittYXhMb0NIcGVyUkxDCQkJCUlOVEVHRVIgOjo9IDIKK21heE1BQy1kLVBEVXNpemVzCQkJSU5URUdFUiA6Oj0gOAorbWF4TUJNUy1Db21tb25DQ1RyQ2gJCUlOVEVHRVIgOjo9IDMyCittYXhNQk1TLUNvbW1vblBoeUNoCQkJSU5URUdFUiA6Oj0gMzIKK21heE1CTVMtQ29tbW9uUkIJCQlJTlRFR0VSIDo6PSAzMgorbWF4TUJNUy1Db21tb25UckNoCQkJSU5URUdFUiA6Oj0gMzIKK21heE1CTVMtRnJlcQkJCQlJTlRFR0VSIDo6PSA0CittYXhNQk1TLUwxQ1AJCQkJSU5URUdFUiA6Oj0gNAorbWF4TUJNU3NlcnZDb3VudAkJCUlOVEVHRVIgOjo9IDgKK21heE1CTVNzZXJ2TW9kaWYJCQlJTlRFR0VSIDo6PSAzMgorbWF4TUJNU3NlcnZTY2hlZAkJCUlOVEVHRVIgOjo9IDE2CittYXhNQk1Tc2VydlVubW9kaWYJCQlJTlRFR0VSIDo6PSA2NAorbWF4TUJNU1RyYW5zbWlzCQkJCUlOVEVHRVIgOjo9IDQKK21heE1lYXNFdmVudAkJCQlJTlRFR0VSIDo6PSA4CittYXhNZWFzSW50ZXJ2YWxzCQkJSU5URUdFUiA6Oj0gMworbWF4TWVhc1BhckV2ZW50CQkJCUlOVEVHRVIgOjo9IDIKK21heE51bUNETUEyMDAwRnJlcXMJCQlJTlRFR0VSIDo6PSAgOAorbWF4TnVtR1NNRnJlcVJhbmdlcwkJCUlOVEVHRVIgOjo9IDMyCittYXhOdW1GRERGcmVxcwkJCQlJTlRFR0VSIDo6PSAgOAorbWF4TnVtVERERnJlcXMJCQkJSU5URUdFUiA6Oj0gIDgKK21heE5vT2ZNZWFzCQkJCQlJTlRFR0VSIDo6PSAxNgorbWF4T3RoZXJSQVQJCQkJCUlOVEVHRVIgOjo9IDE1CittYXhPdGhlclJBVC0xNgkJCQlJTlRFR0VSIDo6PSAxNgorbWF4UGFnZTEJCQkJCUlOVEVHRVIgOjo9IDgKK21heFBDUENILUFQc2lnCQkJCUlOVEVHRVIgOjo9IDE2CittYXhQQ1BDSC1BUHN1YkNoCQkJSU5URUdFUiA6Oj0gMTIKK21heFBDUENILUNEc2lnCQkJCUlOVEVHRVIgOjo9IDE2CittYXhQQ1BDSC1DRHN1YkNoCQkJSU5URUdFUiA6Oj0gMTIKK21heFBDUENILVNGCQkJCQlJTlRFR0VSIDo6PSA3CittYXhQQ1BDSHMJCQkJCUlOVEVHRVIgOjo9IDY0CittYXhQRENQQWxnb1R5cGUJCQkJSU5URUdFUiA6Oj0gOAorbWF4UERTQ0gJCQkJCUlOVEVHRVIgOjo9IDgKK21heFBEU0NILVRGQ0lncm91cHMJIAkJSU5URUdFUiA6Oj0gMjU2CittYXhQUkFDSAkJCQkJSU5URUdFUiA6Oj0gMTYKK21heFBSQUNILUZQQUNICQkJCUlOVEVHRVIgOjo9IDgKK21heFByZWRlZkNvbmZpZwkJCQlJTlRFR0VSIDo6PSAxNgorbWF4UFVTQ0gJCQkJCUlOVEVHRVIgOjo9IDgKK21heFF1ZXVlSURzCQkJCQlJTlRFR0VSIDo6PSA4CittYXhSQUJzZXR1cAkJCQkJSU5URUdFUiA6Oj0gMTYKK21heFJBVAkJCQkJCUlOVEVHRVIgOjo9IDE2CittYXhSQgkJCQkJCUlOVEVHRVIgOjo9IDMyCittYXhSQmFsbFJBQnMJCQkJSU5URUdFUiA6Oj0gMjcKK21heFJCTXV4T3B0aW9ucwkJCQlJTlRFR0VSIDo6PSA4CittYXhSQnBlclJBQgkJCQkJSU5URUdFUiA6Oj0gOAorbWF4UkJwZXJUckNoCQkJCUlOVEVHRVIgOjo9IDE2CittYXhSZXBvcnRlZEdTTUNlbGxzCQkJSU5URUdFUiA6Oj0gOAorbWF4UkwJCQkJCQlJTlRFR0VSIDo6PSA4CittYXhSTC0xCQkJCQkJSU5URUdFUiA6Oj0gNworbWF4UkxDUERVc2l6ZVBlckxvZ0NoYW4JCUlOVEVHRVIgOjo9IDMyCittYXhSRkMzMDk1LUNJRAkJCQlJTlRFR0VSIDo6PSAxNjM4NAorbWF4Uk9IQy1QYWNrZXRTaXplcy1yNAkJSU5URUdFUiA6Oj0gMTYKK21heFJPSEMtUHJvZmlsZS1yNAkJCUlOVEVHRVIgOjo9IDgKK21heFNhdAkJCQkJCUlOVEVHRVIgOjo9IDE2CittYXhTQ0NQQ0gJCQkJCUlOVEVHRVIgOjo9IDE2CittYXhTSUIJCQkJCQlJTlRFR0VSIDo6PSAzMgorbWF4U0lCLUZBQ0gJCQkJCUlOVEVHRVIgOjo9IDgKK21heFNJQnBlck1zZwkJCQlJTlRFR0VSIDo6PSAxNgorbWF4U1JCc2V0dXAJCQkJCUlOVEVHRVIgOjo9IDgKK21heFN5c3RlbUNhcGFiaWxpdHkJCQlJTlRFR0VSIDo6PSAxNgorbWF4VEYJCQkJCQlJTlRFR0VSIDo6PSAzMgorbWF4VEYtQ1BDSAkJCQkJSU5URUdFUiA6Oj0gMTYKK21heFRGQwkJCQkJCUlOVEVHRVIgOjo9IDEwMjQKK21heFRGQ3N1YgkJCQkJSU5URUdFUiA6Oj0gMTAyNAorbWF4VEZDSS0yLUNvbWJzCSAJCQlJTlRFR0VSIDo6PSA1MTIKK21heFRHUFMJCQkJCQlJTlRFR0VSIDo6PSA2CittYXhUckNICQkJCQkJSU5URUdFUiA6Oj0gMzIKKy0tIG1heFRyQ0hwcmVjb25mIHNob3VsZCBiZSAxNiBidXQgaGFzIGJlZW4gc2V0IHRvIDMyIGZvciBjb21wYXRpYmlsaXR5CittYXhUckNIcHJlY29uZgkJCQlJTlRFR0VSIDo6PSAzMgorbWF4VFMJCQkJCQlJTlRFR0VSIDo6PSAxNAorbWF4VFMtMQkJCQkJCUlOVEVHRVIgOjo9IDEzIAorbWF4VFMtMgkJCQkJCUlOVEVHRVIgOjo9IDEyCittYXhUUy1MQ1IJCQkJCUlOVEVHRVIgOjo9IDYKK21heFRTLUxDUi0xCQkJCQlJTlRFR0VSIDo6PSA1IAorbWF4VVJBCQkJCQkJSU5URUdFUiA6Oj0gOAorbWF4VVJOVEktR3JvdXAJCQkJSU5URUdFUiA6Oj0gOAorCitFTkQKKworSW50ZXJub2RlLWRlZmluaXRpb25zIERFRklOSVRJT05TIEFVVE9NQVRJQyBUQUdTIDo6PQorCitCRUdJTgorCitJTVBPUlRTCisKKwlIYW5kb3ZlclRvVVRSQU5Db21tYW5kLAorCU1lYXN1cmVtZW50UmVwb3J0LAorCVBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbiwKKwlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKKwlSYWRpb0JlYXJlclJlbGVhc2UsCisJUmFkaW9CZWFyZXJTZXR1cCwKKwlSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS1yMy1hZGQtZXh0LUlFcywKKwlSUkMtRmFpbHVyZUluZm8sCisJVHJhbnNwb3J0Q2hhbm5lbFJlY29uZmlndXJhdGlvbiwKKwlVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcworRlJPTSBQRFUtZGVmaW5pdGlvbnMKKworLS0gQ29yZSBOZXR3b3JrIElFcyA6CisJQ04tRG9tYWluSWRlbnRpdHksCisJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0LAorCUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdEZ1bGwsCisJQ04tRFJYLUN5Y2xlTGVuZ3RoQ29lZmZpY2llbnQsCisJTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKKy0tIFVUUkFOIE1vYmlsaXR5IElFcyA6CisJQ2VsbElkZW50aXR5LAorCVVSQS1JZGVudGl0eSwKKy0tIFVzZXIgRXF1aXBtZW50IElFcyA6CisJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCisJQy1STlRJLAorCUNoaXBSYXRlQ2FwYWJpbGl0eSwKKwlETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcsCisJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0LAorCURMLVBoeXNDaENhcGFiaWxpdHlUREQsCisJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQsCisJR1NNLU1lYXN1cmVtZW50cywKKwlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIsCisJTWF4SGNDb250ZXh0U3BhY2UsCisJTWF4aW11bUFNLUVudGl0eU51bWJlclJMQy1DYXAsCisJTWF4aW11bVJMQy1XaW5kb3dTaXplLAorCU1heE5vUGh5c0NoQml0c1JlY2VpdmVkLAorCU1heE5vRFBEQ0gtQml0c1RyYW5zbWl0dGVkLAorCU1heFBoeXNDaFBlckZyYW1lLAorCU1heFBoeXNDaFBlclN1YkZyYW1lLXI0LAorCU1heFBoeXNDaFBlclRTLAorCU1heFJPSEMtQ29udGV4dFNlc3Npb25zLXI0LAorCU1heFRTLVBlckZyYW1lLAorCU1heFRTLVBlclN1YkZyYW1lLXI0LAorCU1pbmltdW1TRi1ETCwKKwlNdWx0aU1vZGVDYXBhYmlsaXR5LAorCU11bHRpUkFULUNhcGFiaWxpdHksCisJTmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZCwKKwlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LWVkY2gtcjYsCisJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNywKKwlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0LAorCVJGLUNhcGFiaWxpdHktcjcsCisJUkxDLUNhcGFiaWxpdHksCisJUlJDLU1lc3NhZ2VTZXF1ZW5jZU51bWJlciwKKwlTZWN1cml0eUNhcGFiaWxpdHksCisJU2ltdWx0YW5lb3VzU0NDUENILURQQ0gtUmVjZXB0aW9uLAorCVNUQVJUTGlzdCwKKwlTVEFSVFNpbmdsZSwKKwlTVEFSVC1WYWx1ZSwKKwlTdXBwb3J0T2ZEZWRpY2F0ZWRQaWxvdHNGb3JDaEVzdGltYXRpb24sCisJVHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHksCisJVHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24sCisJVS1STlRJLAorCVVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzLAorCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LAorCVVFLVBvd2VyQ2xhc3NFeHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LAorCVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdDIsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0LWV4dCwKKwlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzODBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzYTBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzZzBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1YzBleHQsCisJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY3eHlleHQsCisJVUwtUGh5c0NoQ2FwYWJpbGl0eUZERCwKKwlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI2LAorCVVMLVBoeXNDaENhcGFiaWxpdHlUREQsCisJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQsCistLSBSYWRpbyBCZWFyZXIgSUVzIDoKKwlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdCwKKwlQcmVkZWZpbmVkQ29uZmlnVmFsdWVUYWcsCisJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LAorCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNCwKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjUsCisJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LWV4dCwKKwlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYsCisJUkItSWRlbnRpdHksCisJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LAorCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNSwKKwlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYsCistLSBUcmFuc3BvcnQgQ2hhbm5lbCBJRXMgOgorCUNQQ0gtU2V0SUQsCisJREwtQ29tbW9uVHJhbnNDaEluZm8sCisJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJREwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNCwKKwlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUsCisJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QsCisJVUwtQ29tbW9uVHJhbnNDaEluZm8sCisJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQsCisJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0LAorCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNiwKKy0tIFBoeXNpY2FsIENoYW5uZWwgSUVzIDoKKwlQcmltYXJ5Q1BJQ0gtSW5mbywKKwlUUEMtQ29tYmluYXRpb25JbmRleCwKKwlTY3JhbWJsaW5nQ29kZUNoYW5nZSwKKwlUR0NGTiwKKwlUR1BTSSwKKwlUR1BTLUNvbmZpZ3VyYXRpb25QYXJhbXMsCistLSBNZWFzdXJlbWVudCBJRXMgOgorCUV2ZW50MWotcjYsCisJSHlzdGVyZXNpcywKKwlJbnRlci1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dCwKKwlJbnRyYS1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dCwKKwlJbnRyYUZyZXFFdmVudC0xZC1yNSwKKwlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNSwKKwlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbiwKKwlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEsCisJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUsCisJTWVhc3VyZW1lbnRUeXBlLAorCU1lYXN1cmVtZW50VHlwZS1yNCwKKwlNZWFzdXJlbWVudFR5cGUtcjYsCisJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdCwKKwlQb3NpdGlvbkVzdGltYXRlLAorCVJlcG9ydGluZ0NlbGxTdGF0dXMsCisJVGltZVRvVHJpZ2dlciwKKy0tIE1CTVMgSUVzIDoKKwlNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2LAorLS0gT3RoZXIgSUVzIDoKKwlHRVJBTkl1LVJhZGlvQWNjZXNzQ2FwYWJpbGl0eSwKKwlHU00tTVMtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LAorCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QsCisJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQsCisJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQsCisJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUsCisJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWludGVyUkFUCisKK0ZST00gSW5mb3JtYXRpb25FbGVtZW50cworCisJbWF4Q05kb21haW5zLAorCW1heE5vT2ZNZWFzLAorCisJbWF4UkIsCisJbWF4UkJhbGxSQUJzLAorCW1heFJGQzMwOTUtQ0lELAorCW1heFNSQnNldHVwLAorCW1heFJMLAorCW1heFRHUFMKK0ZST00gQ29uc3RhbnQtZGVmaW5pdGlvbnMKKzsKKworLS0gUGFydCAxOiBDbGFzcyBkZWZpbml0aW9ucyBzaW1pbGFyIHRvIHdoYXQgaGFzIGJlZW4gZGVmaW5lZCBpbiAxMS4xIGZvciBSUkMgbWVzc2FnZXMKKy0tIEluZm9ybWF0aW9uIHRoYXQgaXMgdHJhbmZlcnJlZCBpbiB0aGUgc2FtZSBkaXJlY3Rpb24gYW5kIGFjcm9zcyB0aGUgc2FtZSBwYXRoIGlzIGdyb3VwZWQKKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIGluZm9ybWF0aW9uLCB0byB0YXJnZXQgUk5DCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLSBSUkMgSW5mb3JtYXRpb24gdG8gdGFyZ2V0IFJOQyBzZW50IGVpdGhlciBmcm9tIHNvdXJjZSBSTkMgb3IgZnJvbSBhbm90aGVyIFJBVAorCitUb1RhcmdldFJOQy1Db250YWluZXIgOjo9IENIT0lDRSB7CisJaW50ZXJSQVRIYW5kb3ZlckluZm8JCQkJSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtcjMsCisJc3JuY1JlbG9jYXRpb24JCQkJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXIzLAorCXJmYzMwOTUtQ29udGV4dEluZm8JCQkJCVJGQzMwOTUtQ29udGV4dEluZm8tcjUsCisJZXh0ZW5zaW9uCQkJCQkJCU5VTEwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUlJDIGluZm9ybWF0aW9uLCB0YXJnZXQgUk5DIHRvIHNvdXJjZSBSTkMKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCitUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVyIDo6PSBDSE9JQ0UgeworCXJhZGlvQmVhcmVyU2V0dXAJCQkJCVJhZGlvQmVhcmVyU2V0dXAsCisJcmFkaW9CZWFyZXJSZWNvbmZpZ3VyYXRpb24JCQlSYWRpb0JlYXJlclJlY29uZmlndXJhdGlvbiwKKwlyYWRpb0JlYXJlclJlbGVhc2UJCQkJCVJhZGlvQmVhcmVyUmVsZWFzZSwKKwl0cmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uCQlUcmFuc3BvcnRDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCXBoeXNpY2FsQ2hhbm5lbFJlY29uZmlndXJhdGlvbgkJUGh5c2ljYWxDaGFubmVsUmVjb25maWd1cmF0aW9uLAorCXJyYy1GYWlsdXJlSW5mbwkJCQkJCVJSQy1GYWlsdXJlSW5mbywKKwktLSBJRSBkbC1EQ0NIbWVzc2FnZSBjb25zaXN0cyBvZiBhbiBvY3RldCBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgSUUgREwtRENDSC1NZXNzYWdlCisJZEwtRENDSG1lc3NhZ2UJCQkJCQlPQ1RFVCBTVFJJTkcsCisJZXh0ZW5zaW9uCQkJCQkJCU5VTEwKK30KKworLS0gUGFydCAyOiBDb250YWluZXIgZGVmaW5pdGlvbnMsIHNpbWlsYXIgdG8gdGhlIFBEVSBkZWZpbml0aW9ucyBpbiAxMS4yIGZvciBSUkMgbWVzc2FnZXMKKy0tIEluIGFscGhhYmV0aWNhbCBvcmRlcgorCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIEhhbmRvdmVyIHRvIFVUUkFOIGluZm9ybWF0aW9uCistLQorLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0ludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXIzIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCS0tIElFIEludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXIzLUlFcyBhbHNvIAorCQktLSBpbmNsdWRlcyBub24gY3JpdGljYWwgZXh0ZW5zaW9ucworCQlpbnRlclJBVEhhbmRvdmVySW5mby1yMwkJCUludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXIzLUlFcywKKwkJdjM5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJaW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtdjM5MGV4dAorCQkJCQkJCQkJCUludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXYzOTBleHQtSUVzLAorCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQl2NjkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJaW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtdjY5MGV4dAorCQkJCQkJCQkJCUludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXY2OTBleHQtSUVzLAorCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorCX0sCisJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9Cit9CisKK0ludGVyUkFUSGFuZG92ZXJJbmZvV2l0aEludGVyUkFUQ2FwYWJpbGl0aWVzLXIzLUlFcyA6Oj0JCVNFUVVFTkNFIHsKKwkJLS0gVGhlIG9yZGVyIG9mIHRoZSBJRXMgbWF5IG5vdCByZWZsZWN0IHRoZSB0YWJ1bGFyIGZvcm1hdAorCQktLSAgYnV0IGhhcyBiZWVuIGNob3NlbiB0byBzaW1wbGlmeSB0aGUgaGFuZGxpbmcgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBCU0MKKwktLQlPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5CQlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHlMaXN0CU9QVElPTkFMLAorCQktLSBpbnRlclJBVEhhbmRvdmVySW5mbywgT2N0ZXQgc3RyaW5nIGlzIHVzZWQgdG8gb2J0YWluIDggYml0IGxlbmd0aCBmaWVsZCBwcmlvciB0byAKKwkJLS0gYWN0dWFsIGluZm9ybWF0aW9uLiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgQlNTIHRvIHRyYW5zcGFyZW50bHkgaGFuZGxlIGluZm9ybWF0aW9uCisJCS0tIHJlY2VpdmVkIHZpYSBHU00gYWlyIGludGVyZmFjZSBldmVuIHdoZW4gaXQgaW5jbHVkZXMgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMuCisJCS0tIFRoZSBvY3RldCBzdHJpbmcgc2hhbGwgaW5jbHVkZSB0aGUgSW50ZXJSQVRIYW5kb3ZlckluZm8gaW5mb3JtYXRpb24KKwkJLS0gVGhlIEJTUyBjYW4gcmUtdXNlIHRoZSA0NC4wMTggbGVuZ3RoIGZpZWxkIHJlY2VpdmVkIGZyb20gdGhlIE1TCisJCWludGVyUkFUSGFuZG92ZXJJbmZvCQkJT0NURVQgU1RSSU5HIChTSVpFICgwLi4yNTUpKQorfQorCitJbnRlclJBVEhhbmRvdmVySW5mb1dpdGhJbnRlclJBVENhcGFiaWxpdGllcy12MzkwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQlmYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQkJT1BUSU9OQUwKK30KKworSW50ZXJSQVRIYW5kb3ZlckluZm9XaXRoSW50ZXJSQVRDYXBhYmlsaXRpZXMtdjY5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwktLSBPdGhlciBJRXMKKwkJdWUtUkFUU3BlY2lmaWNDYXBhYmlsaXR5LXY2OTBleHQJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY2OTBleHQJT1BUSU9OQUwKK30KKworLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLQorLS0gUkZDMzA5NSBjb250ZXh0LCBzb3VyY2UgUk5DIHRvIHRhcmdldCBSTkMKKy0tCistLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUkZDMzA5NS1Db250ZXh0SW5mby1yNSA6Oj0gQ0hPSUNFIHsKKwlyNQkJCQkJCQkJU0VRVUVOQ0UgeworCQlyRkMzMDk1LUNvbnRleHRJbmZvTGlzdC1yNQkJUkZDMzA5NS1Db250ZXh0SW5mb0xpc3QtcjUsCisJCS0tIFJlc2VydmVkIGZvciBmdXR1cmUgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbgorCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCX0sCisJY3JpdGljYWxFeHRlbnNpb25zCQkJCVNFUVVFTkNFIHt9Cit9CisKK1JGQzMwOTUtQ29udGV4dEluZm9MaXN0LXI1IDo6PQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJCYWxsUkFCcykpIE9GCisJCQkJCQkJCQkJUkZDMzA5NS1Db250ZXh0SW5mbworCisKKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLS0KKy0tIFNSTkMgUmVsb2NhdGlvbiBpbmZvcm1hdGlvbgorLS0KKy0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitTUk5DLVJlbG9jYXRpb25JbmZvLXIzIDo6PSBDSE9JQ0UgeworCXIzCQkJCQkJCQlTRVFVRU5DRSB7CisJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjMJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXIzLUlFcywKKwkJdjM4ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjM4MGV4dAlTUk5DLVJlbG9jYXRpb25JbmZvLXYzODBleHQtSUVzLAorCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQl2MzkwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjM5MGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjM5MGV4dC1JRXMsCisJCQkJdjNhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12M2EwZXh0CQkJU1JOQy1SZWxvY2F0aW9uSW5mby12M2EwZXh0LUlFcywKKwkJCQkJdjNiME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjNiMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNiMGV4dC1JRXMsCisJCQkJCQl2M2MwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjNjMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNjMGV4dC1JRXMsCisJCQkJCQkJbGF0ZXJOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjNkMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNkMGV4dC1JRXMsCisJCQkJCQkJCS0tIENvbnRhaW5lciBmb3IgYWRkaXRpb25hbCBSOTkgZXh0ZW5zaW9ucworCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXIzLWFkZC1leHQJCUJJVCBTVFJJTkcKKwkJCQkJCQkJCQkJCShDT05UQUlOSU5HCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNoMGV4dC1JRXMpCQlPUFRJT05BTCwKKwkJCQkJCQkJdjNnME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjNnMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjNnMGV4dC1JRXMsCisJCQkJCQkJCQl2NGIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjRiMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjRiMGV4dC1JRXMsCisJCQkJCQkJCQkJdjU5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0CisJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NTkwZXh0LUlFcywKKwkJCQkJCQkJCQkJdjVhME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dAorCQkJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dC1JRXMsCisJCQkJCQkJCQkJCQl2NWIwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dAorCQkJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dC1JRXMsCisJCQkJCQkJCQkJCQkJdjVjME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0CisJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0LUlFcywKKwkJCQkJCQkJCQkJCQkJdjY5ME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0CisJCQkJCQkJCQkJCQkJCQkJCQkJU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcywKKwkJCQkJCQkJCQkJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMgU0VRVUVOQ0UgeworCQkJCQkJCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dAorCQkJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dC1JRXMsCisJCQkJCQkJCQkJCQkJCQkJLS0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBub24gY3JpdGljYWwgZXh0ZW5zaW9uCisJCQkJCQkJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCVNFUVVFTkNFIHt9CU9QVElPTkFMCisJCQkJCQkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCQl9CQlPUFRJT05BTAorCQkJCQkJCX0JCU9QVElPTkFMCisJCQkJCQl9CQlPUFRJT05BTAorCQkJCQl9CQlPUFRJT05BTAorCQkJCX0JCU9QVElPTkFMCisJCQl9CQlPUFRJT05BTAorCQl9CQlPUFRJT05BTAorCX0sCisJbGF0ZXItdGhhbi1yMwkJCQkJQ0hPSUNFIHsKKwkJcjQJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXI0LUlFcywKKwkJCXY0ZDBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY0ZDBleHQJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjRkMGV4dC1JRXMsCisJCQkJLS0gQ29udGFpbmVyIGZvciBhZGRpbmcgbm9uIGNyaXRpY2FsIGV4dGVuc2lvbnMgYWZ0ZXIgZnJlZXppbmcgUkVMLTUKKwkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI0LWFkZC1leHQJCUJJVCBTVFJJTkcJCU9QVElPTkFMLAorCQkJCXY1OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjU5MGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjU5MGV4dC1JRXMsCisJCQkJCXY1YTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQtSUVzLAorCQkJCQkJdjViME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQtSUVzLAorCQkJCQkJCXY1YzBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVjMGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjVjMGV4dC1JRXMsCisJCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY2OTBleHQJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjY5MGV4dC1JRXMsCisJCQkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0UgeworCQkJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dAorCQkJCQkJCQkJCQkJCQkJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY3eHlleHQtSUVzLAorCQkJCQkJCQkJCQlub25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7fQlPUFRJT05BTAorCQkJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQkJfQlPUFRJT05BTAorCQkJCQkJfQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfQlPUFRJT05BTAorCQkJfQlPUFRJT05BTAorCQl9LAorCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJQ0hPSUNFIHsKKwkJCXI1CQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby1yNQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tcjUtSUVzLAorCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tcjUtYWRkLWV4dAlCSVQgU1RSSU5HCQlPUFRJT05BTCwKKwkJCQl2NWEwTm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjVhMGV4dAkJU1JOQy1SZWxvY2F0aW9uSW5mby12NWEwZXh0LUlFcywKKwkJCQkJdjViME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJU0VRVUVOQ0UgeworCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12NWIwZXh0CQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YjBleHQtSUVzLAorCQkJCQkJdjVjME5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHsKKwkJCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQJCQlTUk5DLVJlbG9jYXRpb25JbmZvLXY1YzBleHQtSUVzLAorCQkJCQkJCXY2OTBOb25Dcml0aWNhbEV4dGVuc2lvbnMJCQlTRVFVRU5DRSB7CisJCQkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjY5MGV4dAkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjY5MGV4dC1JRXMsCisJCQkJCQkJCQl2N3h5Tm9uQ3JpdGljYWxFeHRlbnNpb25zCQlTRVFVRU5DRSB7CisJCQkJCQkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0CisJCQkJCQkJCQkJCQkJCQkJCVNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dC1JRXMsCisJCQkJCQkJCQkJbm9uQ3JpdGljYWxFeHRlbnNpb25zCQkJU0VRVUVOQ0Uge30JCU9QVElPTkFMCisJCQkJCQkJCX0JT1BUSU9OQUwKKwkJCQkJCQl9CU9QVElPTkFMCisJCQkJCQl9CU9QVElPTkFMCisJCQkJCX0JT1BUSU9OQUwKKwkJCQl9CU9QVElPTkFMCisJCQl9LAorCQkJY3JpdGljYWxFeHRlbnNpb25zCQkJCUNIT0lDRSB7CisJCQkJcjYJCQkJCQkJCVNFUVVFTkNFIHsKKwkJCQkJc1JOQy1SZWxvY2F0aW9uSW5mby1yNgkJCVNSTkMtUmVsb2NhdGlvbkluZm8tcjYtSUVzLAorCQkJCQlzUk5DLVJlbG9jYXRpb25JbmZvLXI2LWFkZC1leHQJQklUIFNUUklORwkJT1BUSU9OQUwsCisJCQkJCXY3eHlOb25Dcml0aWNhbEV4dGVuc2lvbnMJCVNFUVVFTkNFIHsKKwkJCQkJCXNSTkMtUmVsb2NhdGlvbkluZm8tdjd4eWV4dAkJU1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0LUlFcywKKwkJCQkJCW5vbkNyaXRpY2FsRXh0ZW5zaW9ucwkJCVNFUVVFTkNFIHt9CQlPUFRJT05BTAorCQkJCQl9CU9QVElPTkFMCisJCQkJfSwKKwkJCQljcml0aWNhbEV4dGVuc2lvbnMJCQkJCVNFUVVFTkNFIHt9CisJCQl9CisJCX0KKwl9Cit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tcjMtSUVzIDo6PQkJU0VRVUVOQ0UgeworCS0tIE5vbi1SUkMgSUVzCisJCXN0YXRlT2ZSUkMJCQkJCQlTdGF0ZU9mUlJDLAorCQlzdGF0ZU9mUlJDLVByb2NlZHVyZQkJCVN0YXRlT2ZSUkMtUHJvY2VkdXJlLAorCS0tIENpcGhlcmluZyByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCS0tIElmIHRoZSBleHRlbnNpb24gdjM4MCBpcyBpbmNsdWRlZCB1c2UgdGhlIGV4dGVuc2lvbiBmb3IgdGhlIGNpcGhlcmluZyBzdGF0dXMgcGVyIENOIGRvbWFpbgorCQljaXBoZXJpbmdTdGF0dXMJCQkJCUNpcGhlcmluZ1N0YXR1cywKKwkJLS0gSWYgY2lwaGVyaW5nIHN0YXR1cyBpcyBzdGFydGVkIGFuZCB0aGUgSUUgbGF0ZXN0Q29uZmlndXJlZENOLURvbWFpbiBzaG91bGQgYmUgaW5jbHVkZWQsCisJCS0tIHRoZSBJRSBjbi1Eb21haW5JZGVudGl0eSAoaW4gU1JOQy1SZWxvY2F0aW9uSW5mby12MzgwZXh0LUlFcykgc2hhbGwgYmUgdXNlZCBpbnN0ZWFkLgorCQljYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCUNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJCU9QVElPTkFMLAorCQktLSBUaGUgb3JkZXIgb2Ygb2NjdXJyZW5jZSBpbiB0aGUgSUUgY2lwaGVyaW5nSW5mb1BlclJCLUxpc3QgaXMgdGhlCisJCS0tIHNhbWUgYXMgdGhlIFJCcyBpbiBTUkItSW5mb3JtYXRpb25TZXR1cExpc3QgaW4gUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LgorCQktLSBUaGUgc2lnbmFsbGluZyBSQnMgYXJlIHN1cHBvc2VkIHRvIGJlIGxpc3RlZAorCQktLSBmaXJzdC4gT25seSBVTSBhbmQgQU0gUkJzIHRoYXQgYXJlIGNpcGhlcmVkIGFyZSBsaXN0ZWQgaGVyZQorCQljaXBoZXJpbmdJbmZvUGVyUkItTGlzdAkJCUNpcGhlcmluZ0luZm9QZXJSQi1MaXN0CQkJCU9QVElPTkFMLAorCQljb3VudC1DLUxpc3QJCQkJCUNPVU5ULUMtTGlzdAkJCQkJCU9QVElPTkFMLAorCQlpbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzCQlJbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzLAorCQktLSBJbiB0aGUgSUUgc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8sIHRoZSBmaXJzdCBpbmZvcm1hdGlvbiBsaXN0ZWQgY29ycmVzcG9uZHMgdG8KKyAgICAgIC0tIHNpZ25hbGxpbmcgcmFkaW8gYmVhcmVyIFJCMCBhbmQgYWZ0ZXIgdGhlIG9yZGVyIG9mIG9jY3VycmVuY2UgaXMgdGhlIHNhbWUgYXMgdGhlIFNSQnMgaW4KKwkgLS0gU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0CisJCS0tIFRoZSB0YXJnZXQgUk5DIG1heSBpZ25vcmUgdGhlIElFIHNyYi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvIGlmIHRoZQorCQktLSBJRSBpbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzIGhhcyB0aGUgdmFsdWUgIm5vdCBzdGFydGVkIi4KKwkJc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8JU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm9MaXN0LAorCQlpbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCUltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJCU9QVElPTkFMLAorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCQljLVJOVEkJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHksCisJCXVlLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJVUUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKKwkJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3QJCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJb25nb2luZ01lYXNSZXBMaXN0CQkJCU9uZ29pbmdNZWFzUmVwTGlzdAkJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCisJCXNyYi1JbmZvcm1hdGlvbkxpc3QJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LAorCQlyYWItSW5mb3JtYXRpb25MaXN0CQkJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdAkJCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvCQkJCU9QVElPTkFMLAorCQl1bC1UcmFuc0NoSW5mb0xpc3QJCQkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCW1vZGVTcGVjaWZpY0luZm8JCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCS0tIGR1bW15IGFuZCBkdW1teTIgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiwgdGhleSBzaG91bGQKKwkJCQktLSBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJCQlkdW1teQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfSwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mbwkJCQlPUFRJT05BTCwKKwkJZGwtVHJhbnNDaEluZm9MaXN0CQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdAkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IHJlcG9ydAorCQltZWFzdXJlbWVudFJlcG9ydAkJCQlNZWFzdXJlbWVudFJlcG9ydAkJCQkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12MzgwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIENpcGhlcmluZyByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCQktLSBJbiB0aGUgU1JOQy1SZWxvY2F0aW9uSW5mby1yMy1JRXMsIHRoZSBJRSAnY24tRG9tYWluSWRlbnRpdHknIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSAKKwkJLS0gSUUgJ0xhdGVzdCBjb25maWd1cmVkIENOIGRvbWFpbicgaW4gdGhlIHRhYnVsYXIuCisJCWNuLURvbWFpbklkZW50aXR5CQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJY2lwaGVyaW5nU3RhdHVzTGlzdAkJCQkJQ2lwaGVyaW5nU3RhdHVzTGlzdAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzOTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdC12MzkwZXh0CUNOLURvbWFpbkluZm9ybWF0aW9uTGlzdC12MzkwZXh0CQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXYzNzBleHQJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjM4MGV4dAkJT1BUSU9OQUwsCisJCWRsLVBoeXNDaENhcGFiaWxpdHlGREQtdjM4MGV4dAkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC12MzgwZXh0LAorCQlmYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12M2EwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQljaXBoZXJpbmdJbmZvRm9yU1JCMS12M2EwZXh0CQlDaXBoZXJpbmdJbmZvUGVyUkItTGlzdC12M2EwZXh0LAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNhMGV4dAkJT1BUSU9OQUwsCisJCS0tIGNuLWRvbWFpbiBpZGVudGl0eSBmb3IgSUUgc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2EwZXh0IGlzIHNwZWNpZmllZAorCQktLSBpbiBzdWJzZXF1ZW50IGV4dGVuc2lvbiAoU1JOQy1SZWxvY2F0aW9uSW5mby12M2IwZXh0LUlFcykKKwkJc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2EwZXh0CQlTVEFSVC1WYWx1ZQorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzYjBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCS0tIGNuLWRvbWFpbiBpZGVudGl0eSBmb3IgSUUgc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2EwZXh0IGluY2x1ZGVkIGluIHByZXZpb3VzIGV4dGVuc2lvbgorCQljbi1Eb21haW5JZGVudGl0eQkJCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJLS0gdGhlIElFIHN0YXJ0VmFsdWVGb3JDaXBoZXJpbmctdjNiMGV4dCBjb250YWlucyB0aGUgc3RhcnQgdmFsdWVzIGZvciBlYWNoIENOIERvbWFpbi4gVGhlIAorCQktLSB2YWx1ZSBvZiBzdGFydCBpbmRpY2F0ZWQgYnkgdGhlIElFIHN0YXJ0VmFsdWVGb3JDaXBoZXJpbmctdjNhMGV4dCBzaG91bGQgYmUgc2V0IHRvIHRoZQorCQktLSBzYW1lIHZhbHVlIGFzIHRoZSBzdGFydC1WYWx1ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY24tRG9tYWluSWRlbnRpdHkgaW4gdGhlIElFIAorCQktLSBzdGFydFZhbHVlRm9yQ2lwaGVyaW5nLXYzYjBleHQKKwkJc3RhcnRWYWx1ZUZvckNpcGhlcmluZy12M2IwZXh0CQlTVEFSVExpc3QyCQkJCQkJCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXYzYzBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCS0tIElFIHJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlIGluY2x1ZGVzIHRoZSBpZGVudGl0eSBvZiB0aGUgUkIgdXNlZCBieSB0aGUgc291cmNlIFNSTkMKKwkJLS0gdG8gc2VuZCB0aGUgbWVzc2FnZSBjb250YWluZWQgaW4gdGhlIElFINJUYXJnZXRSTkMtVG9Tb3VyY2VSTkMtQ29udGFpbmVy0y4KKwkJLS0gT25seSBpbmNsdWRlZCBpZiB0eXBlIGlzINJVRSBpbnZvbHZlZNMKKwkJcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UJCQkJUkItSWRlbnRpdHkgIAkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12M2QwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUJCU9QVElPTkFMLAorCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12M2cwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjNnMGV4dAkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12M2gwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJCVRQQy1Db21iaW5hdGlvbkluZm9MaXN0CQlPUFRJT05BTCwKKwkJbm9uQ3JpdGljYWxFeHRlbnNpb24JCQkJU0VRVUVOQ0Uge30JCQkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12NGQwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJVFBDLUNvbWJpbmF0aW9uSW5mb0xpc3QJCU9QVElPTkFMCit9CisKK1RQQy1Db21iaW5hdGlvbkluZm9MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkwpKSBPRgorCQlUUEMtQ29tYmluYXRpb24tSW5mbworCitTVEFSVExpc3QyIDo6PQkJCQkJCVNFUVVFTkNFIChTSVpFICgyLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCVNUQVJUU2luZ2xlCisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjRiMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY0YjBleHQJCU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjU5MGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXY1OTBleHQJCU9QVElPTkFMLAorCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHktdjU5MGV4dAlJbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjU5MGV4dAlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXY1YTBleHQtSUVzIDo6PSBTRVFVRU5DRSB7CisJCXN0b3JlZENvbXByZXNzZWRNb2RlSW5mbwkJU3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvCU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tdjViMGV4dC1JRXMgOjo9IFNFUVVFTkNFIHsKKwlpbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCUludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12NWMwZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjVjMGV4dAkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12N3h5ZXh0LUlFcyA6Oj0gU0VRVUVOQ0UgeworCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktdjd4eWV4dAkJT1BUSU9OQUwKK30KKworQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QtdjNhMGV4dCA6Oj0gU0VRVUVOQ0UgeworCQlkbC1VTS1TTgkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDcpKQorfQorCitDaXBoZXJpbmdTdGF0dXNMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhDTmRvbWFpbnMpKSBPRgorCQkJCQkJCQkJCUNpcGhlcmluZ1N0YXR1c0NOZG9tYWluCisKK0NpcGhlcmluZ1N0YXR1c0NOZG9tYWluIDo6PQkJCQlTRVFVRU5DRSB7CisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQljaXBoZXJpbmdTdGF0dXMJCQkJCUNpcGhlcmluZ1N0YXR1cworfQorCitDb2RlQ2hhbmdlU3RhdHVzTGlzdCA6Oj0gU0VRVUVOQ0UgKFNJWkUgKDEuLm1heFJMKSkgT0YKKwkJQ29kZUNoYW5nZVN0YXR1cworCitDb2RlQ2hhbmdlU3RhdHVzIDo6PSBTRVFVRU5DRSB7CisJCXByaW1hcnlDUElDSC1JbmZvCQkJCQlQcmltYXJ5Q1BJQ0gtSW5mbywKKwkJc2NyYW1ibGluZ0NvZGVDaGFuZ2UJCQkJU2NyYW1ibGluZ0NvZGVDaGFuZ2UKK30KKworU3RvcmVkQ29tcHJlc3NlZE1vZGVJbmZvIDo6PSBTRVFVRU5DRSB7CisJCXN0b3JlZFRHUC1TZXF1ZW5jZUxpc3QJCVN0b3JlZFRHUC1TZXF1ZW5jZUxpc3QsCisJCWNvZGVDaGFuZ2VTdGF0dXNMaXN0CQlDb2RlQ2hhbmdlU3RhdHVzTGlzdAlPUFRJT05BTAorfQorCitTdG9yZWRUR1AtU2VxdWVuY2VMaXN0IDo6PQkJCVNFUVVFTkNFIChTSVpFICgxLi5tYXhUR1BTKSkgT0YKKwkJCQkJCQkJCQlTdG9yZWRUR1AtU2VxdWVuY2UKKworU3RvcmVkVEdQLVNlcXVlbmNlIDo6PQkJCQlTRVFVRU5DRSB7CisJdGdwc2kJCQkJCQkJCVRHUFNJLAorCWN1cnJlbnQtdGdwcy1TdGF0dXMJCQkJCUNIT0lDRSB7CisJCWFjdGl2ZQkJCQkJCQkJU0VRVUVOQ0UgeworCQkJdGdjZm4JCQkJCQkJCVRHQ0ZOCisJCX0sCisJCWluYWN0aXZlCQkJCQkJCU5VTEwKKwl9LAorCXRncHMtQ29uZmlndXJhdGlvblBhcmFtcwkJCVRHUFMtQ29uZmlndXJhdGlvblBhcmFtcwkJCU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tcjQtSUVzIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBOb24tUlJDIElFcworCQktLSBJRSByYi1JZGVudGl0eUZvckhPTWVzc2FnZSBpbmNsdWRlcyB0aGUgaWRlbnRpdHkgb2YgdGhlIFJCIHVzZWQgYnkgdGhlIHNvdXJjZSBTUk5DCisJCS0tIHRvIHNlbmQgdGhlIG1lc3NhZ2UgY29udGFpbmVkIGluIHRoZSBJRSDSVGFyZ2V0Uk5DLVRvU291cmNlUk5DLUNvbnRhaW5lctMuCisJCS0tIE9ubHkgaW5jbHVkZWQgaWYgdHlwZSBpcyDSVUUgaW52b2x2ZWTTCisJCXJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCisJCXN0YXRlT2ZSUkMJCQkJCQlTdGF0ZU9mUlJDLAorCQlzdGF0ZU9mUlJDLVByb2NlZHVyZQkJCVN0YXRlT2ZSUkMtUHJvY2VkdXJlLAorCS0tIENpcGhlcmluZyByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCQljaXBoZXJpbmdTdGF0dXNMaXN0CQkJCUNpcGhlcmluZ1N0YXR1c0xpc3QtcjQsCisJCWxhdGVzdENvbmZpZ3VyZWRDTi1Eb21haW4JCUNOLURvbWFpbklkZW50aXR5LAorCQljYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCUNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJCU9QVElPTkFMLAorCQljb3VudC1DLUxpc3QJCQkJCUNPVU5ULUMtTGlzdAkJCQkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdJbmZvUGVyUkItTGlzdAkJCUNpcGhlcmluZ0luZm9QZXJSQi1MaXN0LXI0CQkJT1BUSU9OQUwsCisJLS0gSW50ZWdyaXR5IHByb3RlY3Rpb24gcmVsYXRlZCBpbmZvcm1hdGlvbiBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cwkJSW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cywKKwkJLS0gVGhlIHRhcmdldCBSTkMgbWF5IGlnbm9yZSB0aGUgSUUgc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8gaWYgdGhlCisJCS0tIElFIGludGVncml0eVByb3RlY3Rpb25TdGF0dXMgaGFzIHRoZSB2YWx1ZSAibm90IHN0YXJ0ZWQiLgorCQlzcmItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbwlTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mb0xpc3QsCisJCWltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJSW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwkJT1BUSU9OQUwsCisJLS0gVXNlciBlcXVpcG1lbnQgSUVzCisJCXUtUk5USQkJCQkJCQlVLVJOVEksCisJCWMtUk5USQkJCQkJCQlDLVJOVEkJCQkJCQkJCU9QVElPTkFMLAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LWV4dAlVRS1SYWRpb0FjY2Vzc0NhcGFiQmFuZEZERExpc3QJCU9QVElPTkFMLAorCQl1ZS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCVVFLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJCU9QVElPTkFMLAorCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUJCU9QVElPTkFMLAorCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCXVlLVJBVFNwZWNpZmljQ2FwYWJpbGl0eQkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdAlPUFRJT05BTCwKKwktLSBVVFJBTiBtb2JpbGl0eSBJRXMKKwkJdXJhLUlkZW50aXR5CQkJCQlVUkEtSWRlbnRpdHkJCQkJCQlPUFRJT05BTCwKKwktLSBDb3JlIG5ldHdvcmsgSUVzCisJCWNuLUNvbW1vbkdTTS1NQVAtTkFTLVN5c0luZm8JTkFTLVN5c3RlbUluZm9ybWF0aW9uR1NNLU1BUCwKKwkJY24tRG9tYWluSW5mb3JtYXRpb25MaXN0CQlDTi1Eb21haW5JbmZvcm1hdGlvbkxpc3RGdWxsCQlPUFRJT05BTCwKKwktLSBNZWFzdXJlbWVudCBJRXMKKwkJb25nb2luZ01lYXNSZXBMaXN0CQkJCU9uZ29pbmdNZWFzUmVwTGlzdC1yNAkJCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0CQlQcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdCwKKwkJc3JiLUluZm9ybWF0aW9uTGlzdAkJCQlTUkItSW5mb3JtYXRpb25TZXR1cExpc3QsCisJCXJhYi1JbmZvcm1hdGlvbkxpc3QJCQkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI0CQkJT1BUSU9OQUwsCisJLS0gVHJhbnNwb3J0IGNoYW5uZWwgSUVzCisJCXVsLUNvbW1vblRyYW5zQ2hJbmZvCQkJVUwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCXVsLVRyYW5zQ2hJbmZvTGlzdAkJCQlVTC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QJCQlPUFRJT05BTCwKKwkJLS0gJ2R1bW15JywgJ2R1bW15MScgYW5kICdkdW1teTInIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisJCS0tIHRoZXkgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQlkdW1teQkJCQkJCQlDSE9JQ0UgeworCQkJZmRkCQkJCQkJCQlTRVFVRU5DRSB7CisJCQkJZHVtbXkxCQkJCQkJCUNQQ0gtU2V0SUQJCQkJCU9QVElPTkFMLAorCQkJCWR1bW15MgkJCQkJCQlEUkFDLVN0YXRpY0luZm9ybWF0aW9uTGlzdAlPUFRJT05BTAorCQkJfSwKKwkJCXRkZAkJCQkJCQkJTlVMTAorCQl9CQkJCQkJCQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJZGwtQ29tbW9uVHJhbnNDaEluZm8JCQlETC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJZGwtVHJhbnNDaEluZm9MaXN0CQkJCURMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNAkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CisJCW1lYXN1cmVtZW50UmVwb3J0CQkJCU1lYXN1cmVtZW50UmVwb3J0CQkJCQlPUFRJT05BTCwKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlPUFRJT05BTAorfQorCitTUk5DLVJlbG9jYXRpb25JbmZvLXI1LUlFcyA6Oj0JCQlTRVFVRU5DRSB7CisJLS0gTm9uLVJSQyBJRXMKKwkJLS0gSUUgcmItSWRlbnRpdHlGb3JIT01lc3NhZ2UgaW5jbHVkZXMgdGhlIGlkZW50aXR5IG9mIHRoZSBSQiB1c2VkIGJ5IHRoZSBzb3VyY2UgU1JOQworCQktLSB0byBzZW5kIHRoZSBtZXNzYWdlIGNvbnRhaW5lZCBpbiB0aGUgSUUg0lRhcmdldFJOQy1Ub1NvdXJjZVJOQy1Db250YWluZXLTLgorCQktLSBPbmx5IGluY2x1ZGVkIGlmIHR5cGUgaXMgIlVFIGludm9sdmVkIgorCQlyYi1JZGVudGl0eUZvckhPTWVzc2FnZQkJCVJCLUlkZW50aXR5CQkJCQkJCU9QVElPTkFMLAorCQlzdGF0ZU9mUlJDCQkJCQkJU3RhdGVPZlJSQywKKwkJc3RhdGVPZlJSQy1Qcm9jZWR1cmUJCQlTdGF0ZU9mUlJDLVByb2NlZHVyZSwKKwktLSBDaXBoZXJpbmcgcmVsYXRlZCBpbmZvcm1hdGlvbiBJRXMKKwkJY2lwaGVyaW5nU3RhdHVzTGlzdAkJCQlDaXBoZXJpbmdTdGF0dXNMaXN0LXI0LAorCQlsYXRlc3RDb25maWd1cmVkQ04tRG9tYWluCQlDTi1Eb21haW5JZGVudGl0eSwKKwkJY2FsY3VsYXRpb25UaW1lRm9yQ2lwaGVyaW5nCQlDYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCQlPUFRJT05BTCwKKwkJY291bnQtQy1MaXN0CQkJCQlDT1VOVC1DLUxpc3QJCQkJCQlPUFRJT05BTCwKKwkJY2lwaGVyaW5nSW5mb1BlclJCLUxpc3QJCQlDaXBoZXJpbmdJbmZvUGVyUkItTGlzdC1yNAkJCU9QVElPTkFMLAorCS0tIEludGVncml0eSBwcm90ZWN0aW9uIHJlbGF0ZWQgaW5mb3JtYXRpb24gSUVzCisJCWludGVncml0eVByb3RlY3Rpb25TdGF0dXMJCUludGVncml0eVByb3RlY3Rpb25TdGF0dXMsCisJCXNyYi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvCVNSQi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvTGlzdAlPUFRJT05BTCwKKwkJaW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcwlJbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCQlPUFRJT05BTCwKKwktLSBVc2VyIGVxdWlwbWVudCBJRXMKKwkJdS1STlRJCQkJCQkJCVUtUk5USSwKKwkJYy1STlRJCQkJCQkJCUMtUk5USQkJCQkJCQkJT1BUSU9OQUwsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI1LAorCQl1ZS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktZXh0CVVFLVJhZGlvQWNjZXNzQ2FwYWJCYW5kRkRETGlzdAkJT1BUSU9OQUwsCisJCXVlLVBvc2l0aW9uaW5nLUxhc3RLbm93blBvcwkJVUUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQkJT1BUSU9OQUwsCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpZGxlCisJCQkJCQkJCQkJVUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUJCU9QVElPTkFMLAorCQl1RVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQKKwkJCQkJCQkJCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaW50ZXJSQVQJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHkJCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QtcjUJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Db21tb25HU00tTUFQLU5BUy1TeXNJbmZvCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAsCisJCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbAkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW9uZ29pbmdNZWFzUmVwTGlzdAkJCQlPbmdvaW5nTWVhc1JlcExpc3QtcjUJCQkJT1BUSU9OQUwsCisJLS0gUmFkaW8gYmVhcmVyIElFcworCQlwcmVkZWZpbmVkQ29uZmlnU3RhdHVzTGlzdAkJUHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QsCisJCXNyYi1JbmZvcm1hdGlvbkxpc3QJCQkJU1JCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI1LAorCQlyYWItSW5mb3JtYXRpb25MaXN0CQkJCVJBQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNQkJCU9QVElPTkFMLAorCS0tIFRyYW5zcG9ydCBjaGFubmVsIElFcworCQl1bC1Db21tb25UcmFuc0NoSW5mbwkJCVVMLUNvbW1vblRyYW5zQ2hJbmZvLXI0CQkJCU9QVElPTkFMLAorCQl1bC1UcmFuc0NoSW5mb0xpc3QJCQkJVUwtQWRkUmVjb25mVHJhbnNDaEluZm9MaXN0CQkJT1BUSU9OQUwsCisJCS0tICdkdW1teScsICdkdW1teTEnIGFuZCAnZHVtbXkyJyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorCQktLSB0aGV5IHNob3VsZCBub3QgYmUgc2VudCBhbmQgaWYgcmVjZWl2ZWQgdGhleSBzaG91bGQgYmUgaWdub3JlZC4KKwkJZHVtbXkJCQkJCQkJQ0hPSUNFIHsKKwkJCWZkZAkJCQkJCQkJU0VRVUVOQ0UgeworCQkJCWR1bW15MQkJCQkJCQlDUENILVNldElECQkJCQlPUFRJT05BTCwKKwkJCQlkdW1teTIJCQkJCQkJRFJBQy1TdGF0aWNJbmZvcm1hdGlvbkxpc3QJT1BUSU9OQUwKKwkJCX0sCisJCQl0ZGQJCQkJCQkJCU5VTEwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLVRyYW5zQ2hJbmZvTGlzdAkJCQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeUNIIElFcworCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJCVRQQy1Db21iaW5hdGlvbkluZm9MaXN0CQkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IHJlcG9ydAorCQltZWFzdXJlbWVudFJlcG9ydAkJCQlNZWFzdXJlbWVudFJlcG9ydAkJCQkJT1BUSU9OQUwsCisJLS0gT3RoZXIgSUVzCisJCWZhaWx1cmVDYXVzZQkJCQkJRmFpbHVyZUNhdXNlV2l0aFByb3RFcnIJCQkJT1BUSU9OQUwKK30KKworU1JOQy1SZWxvY2F0aW9uSW5mby12NjkwZXh0LUlFcyA6Oj0JU0VRVUVOQ0UgeworCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQktLSBJRSB1ZUNhcGFiaWxpdHlDb250YWluZXIgaXMgdXNlZCBmb3IgdGhlIHRyYW5zcGFyZW50IHRyYW5zZmVyIG9mIGNhcGFiaWxpdHkgaW5mb3JtYXRpb24KKwkJLS0gcmVjZWl2ZWQgZnJvbSB0aGUgVUUKKwkJdWVDYXBhYmlsaXR5Q29udGFpbmVyCQkJQklUIFNUUklORworCQkJCQkJCQkJCQkoQ09OVEFJTklORyBVRS1DYXBhYmlsaXR5Q29udGFpbmVyLUlFcykJT1BUSU9OQUwsCisJCS0tIElFIHVlQ2FwYWJpbGl0eUNvbnRhaW5lci1SU0MgYW5kIElFIHVlQ2FwYWJpbGl0eUNvbnRhaW5lci1VQ0kgYXJlIHVzZWQgZm9yIHRoZSAKKwkJLS0gdHJhbnNwYXJlbnQgdHJhbnNmZXIgb2YgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbiByZWNlaXZlZCBmcm9tIHRoZSBVRSB0aGF0IHdhcyBpbnRyb2R1Y2VkIAorCQktLSBpbiBhIHJlbGVhc2UgaW5kZXBlbmRlbnQgbWFubmVyLCBpLmUuLCB0cmFuc2ZlcnJlZCB3aXRoaW4gYSBWTEVDLiBUaGVzZSBVRSBjYXBhYmlsaXRpZXMgCisJCS0tIGFyZSBpbmNsdWRlZCBib3RoIGluIHRoZSBSUkMgQ09OTkVDVElPTiBTRVRVUCBDT01QTEVURSBhbmQgdGhlIFVFIENBUEFCSUxJVFkgSU5GT1JNQVRJT04gCisJCS0tIG1lc3NhZ2VzLiBPbmx5IHRoZSBWTEVDIG9mIG9uZSBtZXNzYWdlIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGkuZS4gdGhlIG9uZSBmcm9tIHRoZXNlCisJCS0tIG1lc3NhZ2VzIHRoYXQgd2FzIGxhc3QgcmVjZWl2ZWQuCisJCS0tIENhc2UgMTogSWYgdGhlIGxhc3QgcmVjZWl2ZWQgbWVzc2FnZSB3YXMgYSBSUkMgQ09OTkVDVElPTiBTRVRVUCBDT01QTEVURSAoUlNDKQorCQl1ZUNhcGFiaWxpdHlDb250YWluZXItUlNDCQlCSVQgU1RSSU5HCisJCQkJCQkJKENPTlRBSU5JTkcgUlJDQ29ubmVjdGlvblNldHVwQ29tcGxldGUtcjMtYWRkLWV4dC1JRXMpCU9QVElPTkFMLAorCQktLSBDYXNlIDI6IElmIHRoZSBsYXN0IHJlY2VpdmVkIG1lc3NhZ2Ugd2FzIGEgVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTiAoVUNJKQorCQl1ZUNhcGFiaWxpdHlDb250YWluZXItVUNJCQlCSVQgU1RSSU5HCisJCQkJCQkJKENPTlRBSU5JTkcgVUVDYXBhYmlsaXR5SW5mb3JtYXRpb24tcjMtYWRkLWV4dC1JRXMpCQlPUFRJT05BTCwKKwktLSBSYWRpbyBiZWFyZXIgSUVzCisJCXJhYi1JbmZvcm1hdGlvblNldHVwTGlzdAkJUkFCLUluZm9ybWF0aW9uU2V0dXBMaXN0LXI2LWV4dAkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgcmVwb3J0CisJCW1lYXN1cmVkUmVzdWx0c09uUkFDSGludGVyRnJlcQlNZWFzdXJlZFJlc3VsdHNPblJBQ0hpbnRlckZyZXEJCU9QVElPTkFMLAorCS0tIE1CTVMgSUVzCisJCW1ibXMtSm9pbmVkSW5mb3JtYXRpb24JCQlNQk1TLUpvaW5lZEluZm9ybWF0aW9uLXI2CQkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCWludHJhRnJlcVJlcG9ydGluZ0NyaXRlcmlhCQlJbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS1yNi1leHQJCU9QVElPTkFMCit9CisKK1NSTkMtUmVsb2NhdGlvbkluZm8tcjYtSUVzIDo6PQkJCVNFUVVFTkNFIHsKKwktLSBOb24tUlJDIElFcworCQktLSBJRSByYi1JZGVudGl0eUZvckhPTWVzc2FnZSBpbmNsdWRlcyB0aGUgaWRlbnRpdHkgb2YgdGhlIFJCIHVzZWQgYnkgdGhlIHNvdXJjZSBTUk5DCisJCS0tIHRvIHNlbmQgdGhlIG1lc3NhZ2UgY29udGFpbmVkIGluIHRoZSBJRSDSVGFyZ2V0Uk5DLVRvU291cmNlUk5DLUNvbnRhaW5lctMuCisJCS0tIE9ubHkgaW5jbHVkZWQgaWYgdHlwZSBpcyAiVUUgaW52b2x2ZWQiCisJCXJiLUlkZW50aXR5Rm9ySE9NZXNzYWdlCQkJUkItSWRlbnRpdHkJCQkJCQkJT1BUSU9OQUwsCisJCXN0YXRlT2ZSUkMJCQkJCQlTdGF0ZU9mUlJDLAorCQlzdGF0ZU9mUlJDLVByb2NlZHVyZQkJCVN0YXRlT2ZSUkMtUHJvY2VkdXJlLAorCS0tIENpcGhlcmluZyByZWxhdGVkIGluZm9ybWF0aW9uIElFcworCQljaXBoZXJpbmdTdGF0dXNMaXN0CQkJCUNpcGhlcmluZ1N0YXR1c0xpc3QtcjQsCisJCWxhdGVzdENvbmZpZ3VyZWRDTi1Eb21haW4JCUNOLURvbWFpbklkZW50aXR5LAorCQljYWxjdWxhdGlvblRpbWVGb3JDaXBoZXJpbmcJCUNhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZwkJCU9QVElPTkFMLAorCQljb3VudC1DLUxpc3QJCQkJCUNPVU5ULUMtTGlzdAkJCQkJCU9QVElPTkFMLAorCQljaXBoZXJpbmdJbmZvUGVyUkItTGlzdAkJCUNpcGhlcmluZ0luZm9QZXJSQi1MaXN0LXI0CQkJT1BUSU9OQUwsCisJLS0gSW50ZWdyaXR5IHByb3RlY3Rpb24gcmVsYXRlZCBpbmZvcm1hdGlvbiBJRXMKKwkJaW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cwkJSW50ZWdyaXR5UHJvdGVjdGlvblN0YXR1cywKKwkJc3JiLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm8JU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm9MaXN0CU9QVElPTkFMLAorCQlpbXBsZW1lbnRhdGlvblNwZWNpZmljUGFyYW1zCUltcGxlbWVudGF0aW9uU3BlY2lmaWNQYXJhbXMJCU9QVElPTkFMLAorCS0tIFVzZXIgZXF1aXBtZW50IElFcworCQl1LVJOVEkJCQkJCQkJVS1STlRJLAorCQljLVJOVEkJCQkJCQkJQy1STlRJCQkJCQkJCQlPUFRJT05BTCwKKwkJdWUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5CQlVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjYsCisJCXVlLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1leHQJVUUtUmFkaW9BY2Nlc3NDYXBhYkJhbmRGRERMaXN0CQlPUFRJT05BTCwKKwkJdWUtUG9zaXRpb25pbmctTGFzdEtub3duUG9zCQlVRS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MJCQlPUFRJT05BTCwKKwkJdUVTcGVjaWZpY0JlaGF2aW91ckluZm9ybWF0aW9uMWlkbGUKKwkJCQkJCQkJCQlVRVNwZWNpZmljQmVoYXZpb3VySW5mb3JtYXRpb24xaWRsZQkJT1BUSU9OQUwsCisJCXVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAorCQkJCQkJCQkJCVVFU3BlY2lmaWNCZWhhdmlvdXJJbmZvcm1hdGlvbjFpbnRlclJBVAkJT1BUSU9OQUwsCisJCS0tIElFIHVlQ2FwYWJpbGl0eUNvbnRhaW5lciBpcyB1c2VkIGZvciB0aGUgdHJhbnNwYXJlbnQgdHJhbnNmZXIgb2YgY2FwYWJpbGl0eSBpbmZvcm1hdGlvbgorCQktLSByZWNlaXZlZCBmcm9tIHRoZSBVRQorCQl1ZUNhcGFiaWxpdHlDb250YWluZXIJCQlCSVQgU1RSSU5HCisJCQkJCQkJCQkJCShDT05UQUlOSU5HIFVFLUNhcGFiaWxpdHlDb250YWluZXItSUVzKQlPUFRJT05BTCwKKwkJLS0gSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyLVJTQyBhbmQgSUUgdWVDYXBhYmlsaXR5Q29udGFpbmVyLVVDSSBhcmUgdXNlZCBmb3IgdGhlIAorCQktLSB0cmFuc3BhcmVudCB0cmFuc2ZlciBvZiBjYXBhYmlsaXR5IGluZm9ybWF0aW9uIHJlY2VpdmVkIGZyb20gdGhlIFVFIHRoYXQgd2FzIGludHJvZHVjZWQgCisJCS0tIGluIGEgcmVsZWFzZSBpbmRlcGVuZGVudCBtYW5uZXIsIGkuZS4sIHRyYW5zZmVycmVkIHdpdGhpbiBhIFZMRUMuIFRoZXNlIFVFIGNhcGFiaWxpdGllcyAKKwkJLS0gYXJlIGluY2x1ZGVkIGJvdGggaW4gdGhlIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFIGFuZCB0aGUgVUUgQ0FQQUJJTElUWSBJTkZPUk1BVElPTiAKKwkJLS0gbWVzc2FnZXMuIE9ubHkgdGhlIFZMRUMgb2Ygb25lIG1lc3NhZ2UgbmVlZHMgdG8gYmUgaW5jbHVkZWQgaS5lLiB0aGUgb25lIGZyb20gdGhlc2UKKwkJLS0gbWVzc2FnZXMgdGhhdCB3YXMgbGFzdCByZWNlaXZlZC4KKwkJLS0gQ2FzZSAxOiBJZiB0aGUgbGFzdCByZWNlaXZlZCBtZXNzYWdlIHdhcyBhIFJSQyBDT05ORUNUSU9OIFNFVFVQIENPTVBMRVRFIChSU0MpCisJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lci1SU0MJCUJJVCBTVFJJTkcKKwkJCQkJCQkoQ09OVEFJTklORyBSUkNDb25uZWN0aW9uU2V0dXBDb21wbGV0ZS1yMy1hZGQtZXh0LUlFcykJT1BUSU9OQUwsCisJCS0tIENhc2UgMjogSWYgdGhlIGxhc3QgcmVjZWl2ZWQgbWVzc2FnZSB3YXMgYSBVRSBDQVBBQklMSVRZIElORk9STUFUSU9OIChVQ0kpCisJCXVlQ2FwYWJpbGl0eUNvbnRhaW5lci1VQ0kJCUJJVCBTVFJJTkcKKwkJCQkJCQkoQ09OVEFJTklORyBVRUNhcGFiaWxpdHlJbmZvcm1hdGlvbi1yMy1hZGQtZXh0LUlFcykJCU9QVElPTkFMLAorCS0tIE90aGVyIElFcworCQl1ZS1SQVRTcGVjaWZpY0NhcGFiaWxpdHkJCUludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QtcjUJT1BUSU9OQUwsCisJLS0gVVRSQU4gbW9iaWxpdHkgSUVzCisJCXVyYS1JZGVudGl0eQkJCQkJVVJBLUlkZW50aXR5CQkJCQkJT1BUSU9OQUwsCisJLS0gQ29yZSBuZXR3b3JrIElFcworCQljbi1Db21tb25HU00tTUFQLU5BUy1TeXNJbmZvCU5BUy1TeXN0ZW1JbmZvcm1hdGlvbkdTTS1NQVAsCisJCWNuLURvbWFpbkluZm9ybWF0aW9uTGlzdAkJQ04tRG9tYWluSW5mb3JtYXRpb25MaXN0RnVsbAkJT1BUSU9OQUwsCisJLS0gTWVhc3VyZW1lbnQgSUVzCisJCW9uZ29pbmdNZWFzUmVwTGlzdAkJCQlPbmdvaW5nTWVhc1JlcExpc3QtcjYJCQkJT1BUSU9OQUwsCisJCWludGVyUkFUQ2VsbEluZm9JbmRpY2F0aW9uCQlJbnRlclJBVENlbGxJbmZvSW5kaWNhdGlvbgkJCU9QVElPTkFMLAorCS0tIFJhZGlvIGJlYXJlciBJRXMKKwkJcHJlZGVmaW5lZENvbmZpZ1N0YXR1c0xpc3QJCVByZWRlZmluZWRDb25maWdTdGF0dXNMaXN0LAorCQlzcmItSW5mb3JtYXRpb25MaXN0CQkJCVNSQi1JbmZvcm1hdGlvblNldHVwTGlzdC1yNiwKKwkJcmFiLUluZm9ybWF0aW9uTGlzdAkJCQlSQUItSW5mb3JtYXRpb25TZXR1cExpc3QtcjYJCQlPUFRJT05BTCwKKwktLSBUcmFuc3BvcnQgY2hhbm5lbCBJRXMKKwkJdWwtQ29tbW9uVHJhbnNDaEluZm8JCQlVTC1Db21tb25UcmFuc0NoSW5mby1yNAkJCQlPUFRJT05BTCwKKwkJdWwtVHJhbnNDaEluZm9MaXN0CQkJCVVMLUFkZFJlY29uZlRyYW5zQ2hJbmZvTGlzdC1yNgkJT1BUSU9OQUwsCisJCWRsLUNvbW1vblRyYW5zQ2hJbmZvCQkJREwtQ29tbW9uVHJhbnNDaEluZm8tcjQJCQkJT1BUSU9OQUwsCisJCWRsLVRyYW5zQ2hJbmZvTGlzdAkJCQlETC1BZGRSZWNvbmZUcmFuc0NoSW5mb0xpc3QtcjUJCU9QVElPTkFMLAorCS0tIFBoeUNIIElFcworCQl0cGMtQ29tYmluYXRpb25JbmZvTGlzdAkJCVRQQy1Db21iaW5hdGlvbkluZm9MaXN0CQkJCU9QVElPTkFMLAorCQlzdG9yZWRDb21wcmVzc2VkTW9kZUluZm8JCVN0b3JlZENvbXByZXNzZWRNb2RlSW5mbwkJCU9QVElPTkFMLAorCS0tIE1lYXN1cmVtZW50IHJlcG9ydAorCQltZWFzdXJlbWVudFJlcG9ydAkJCQlCSVQgU1RSSU5HCisJCQkJCQkJKENPTlRBSU5JTkcgTWVhc3VyZW1lbnRSZXBvcnQpCQkJCQlPUFRJT05BTCwKKwktLSBPdGhlciBJRXMKKwkJZmFpbHVyZUNhdXNlCQkJCQlGYWlsdXJlQ2F1c2VXaXRoUHJvdEVycgkJCQlPUFRJT05BTCwKKwktLSBNQk1TIElFcworCQltYm1zLUpvaW5lZEluZm9ybWF0aW9uCQkJTUJNUy1Kb2luZWRJbmZvcm1hdGlvbi1yNgkJCU9QVElPTkFMCit9CisKKy0tIElFIGRlZmluaXRpb25zCisKK0NhbGN1bGF0aW9uVGltZUZvckNpcGhlcmluZyA6Oj0JCVNFUVVFTkNFIHsKKwljZWxsLUlkCQkJCQkJCQlDZWxsSWRlbnRpdHksCisJc2ZuCQkJCQkJCQkJSU5URUdFUiAoMC4uNDA5NSkKK30KKworQ2lwaGVyaW5nSW5mb1BlclJCIDo6PQkJCQlTRVFVRU5DRSB7CisJZGwtSEZOCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMC4uMjUpKSwKKwl1bC1IRk4JCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDIwLi4yNSkpCit9CisKK0NpcGhlcmluZ0luZm9QZXJSQi1yNCA6Oj0JCQlTRVFVRU5DRSB7CisJcmItSWRlbnRpdHkJCQkJCQkJUkItSWRlbnRpdHksCisJZGwtSEZOCQkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICgyMC4uMjUpKSwKKwlkbC1VTS1TTgkJCQkJCQlCSVQgU1RSSU5HIChTSVpFICg3KSkgCQkJCU9QVElPTkFMLAorCXVsLUhGTgkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjAuLjI1KSkKK30KKworLS0gVEFCVUxBUjogQ2lwaGVyaW5nSW5mb1BlclJCLUxpc3QsIG11bHRpcGxpY2l0eSB2YWx1ZSBudW1iZXJPZlJhZGlvQmVhcmVycyAKKy0tIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggbWF4UkIuCitDaXBoZXJpbmdJbmZvUGVyUkItTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkIpKSBPRgorCQkJCQkJCQkJCUNpcGhlcmluZ0luZm9QZXJSQgorCitDaXBoZXJpbmdJbmZvUGVyUkItTGlzdC1yNCA6Oj0JCVNFUVVFTkNFIChTSVpFICgxLi5tYXhSQikpIE9GCisJCQkJCQkJCQkJQ2lwaGVyaW5nSW5mb1BlclJCLXI0CisKKworQ2lwaGVyaW5nU3RhdHVzIDo6PQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc3RhcnRlZCwgbm90U3RhcnRlZCB9CisKK0NpcGhlcmluZ1N0YXR1c0xpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENOZG9tYWlucykpIE9GCisJCQkJCQkJCQkJQ2lwaGVyaW5nU3RhdHVzQ05kb21haW4tcjQKKworQ2lwaGVyaW5nU3RhdHVzQ05kb21haW4tcjQgOjo9CQlTRVFVRU5DRSB7CisJCWNuLURvbWFpbklkZW50aXR5CQkJCUNOLURvbWFpbklkZW50aXR5LAorCQljaXBoZXJpbmdTdGF0dXMJCQkJCUNpcGhlcmluZ1N0YXR1cywKKwkJc3RhcnQtVmFsdWUJCQkJCQlTVEFSVC1WYWx1ZQorfQorCitDTi1Eb21haW5JbmZvcm1hdGlvbi12MzkwZXh0IDo6PQkJU0VRVUVOQ0UgeworCWNuLURSWC1DeWNsZUxlbmd0aENvZWZmCQkJCUNOLURSWC1DeWNsZUxlbmd0aENvZWZmaWNpZW50Cit9CisKK0NOLURvbWFpbkluZm9ybWF0aW9uTGlzdC12MzkwZXh0IDo6PQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4Q05kb21haW5zKSkgT0YKKwkJCQkJCQkJCQlDTi1Eb21haW5JbmZvcm1hdGlvbi12MzkwZXh0CisKK0NvbXByZXNzZWRNb2RlTWVhc0NhcGFiaWxpdHktcjQgOjo9CVNFUVVFTkNFIHsKKwlmZGQtTWVhc3VyZW1lbnRzCQkJCQlCT09MRUFOLAorCS0tIFRBQlVMQVI6IFRoZSBJRXMgdGRkLU1lYXN1cmVtZW50cywgZ3NtLU1lYXN1cmVtZW50cyBhbmQgbXVsdGlDYXJyaWVyTWVhc3VyZW1lbnRzCisJLS0gYXJlIG1hZGUgb3B0aW9uYWwgc2luY2UgdGhleSBhcmUgY29uZGl0aW9uYWwgYmFzZWQgb24gYW5vdGhlciBpbmZvcm1hdGlvbiBlbGVtZW50LgorCS0tIFRoZWlyIGFic2VuY2UgY29ycmVzcG9uZHMgdG8gdGhlIGNhc2Ugd2hlcmUgdGhlIGNvbmRpdGlvbiBpcyBub3QgdHJ1ZS4KKwl0ZGQzODQtTWVhc3VyZW1lbnRzCQkJCQlCT09MRUFOCQkJCQkJCQlPUFRJT05BTCwKKwl0ZGQxMjgtTWVhc3VyZW1lbnRzCQkJCQlCT09MRUFOCQkJCQkJCQlPUFRJT05BTCwKKwlnc20tTWVhc3VyZW1lbnRzCQkJCQlHU00tTWVhc3VyZW1lbnRzCQkJCQlPUFRJT05BTCwKKwltdWx0aUNhcnJpZXJNZWFzdXJlbWVudHMJCQlCT09MRUFOCQkJCQkJCQlPUFRJT05BTAorfQorCitDT1VOVC1DLUxpc3QgOjo9CQkJCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heENOZG9tYWlucykpIE9GCisJCQkJCQkJCQkJQ09VTlQtQ1NpbmdsZQorCitDT1VOVC1DU2luZ2xlIDo6PQkJCQkJCVNFUVVFTkNFIHsKKwljbi1Eb21haW5JZGVudGl0eQkJCQkJQ04tRG9tYWluSWRlbnRpdHksCisJY291bnQtQwkJCQkJCQkJQklUIFNUUklORyAoU0laRSAoMzIpKQkJCQorfQorCitETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI0IDo6PQkJU0VRVUVOQ0UgeworCS0tIFRoZSBJRSDSbWF4Tm9EUENILVBEU0NILUNvZGVz0yBvbmx5IGdpdmVzIGluZm9ybWF0aW9uIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZiBEUENIIENvZGVzLgorCW1heE5vRFBDSC1QRFNDSC1Db2RlcwkJCQlJTlRFR0VSICgxLi44KSwKKwltYXhOb1BoeXNDaEJpdHNSZWNlaXZlZAkJCQlNYXhOb1BoeXNDaEJpdHNSZWNlaXZlZCwKKwlzdXBwb3J0Rm9yU0YtNTEyCQkJCQlCT09MRUFOLAorCS0tIGR1bW15LCBkdW1teTIgYW5kIGR1bW15MyBhcmUgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uCisJLS0gYW5kIGlmIHJlY2VpdmVkIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisJZHVtbXkJCQkJCQkJCUJPT0xFQU4sCisJZHVtbXkyCQkJCQkJCQlTaW11bHRhbmVvdXNTQ0NQQ0gtRFBDSC1SZWNlcHRpb24sCisJZHVtbXkzCQkJCQkJCQlTdXBwb3J0T2ZEZWRpY2F0ZWRQaWxvdHNGb3JDaEVzdGltYXRpb24JCU9QVElPTkFMCit9CisKK0RMLVBoeXNDaENhcGFiaWxpdHlGREQtcjUgOjo9CQlTRVFVRU5DRSB7CisJLS0gVGhlIElFINJtYXhOb0RQQ0gtUERTQ0gtQ29kZXPTIG9ubHkgZ2l2ZXMgaW5mb3JtYXRpb24gb24gdGhlIG1heGltdW0gbnVtYmVyIG9mIERQQ0ggQ29kZXMuCisJbWF4Tm9EUENILVBEU0NILUNvZGVzCQkJCUlOVEVHRVIgKDEuLjgpLAorCW1heE5vUGh5c0NoQml0c1JlY2VpdmVkCQkJCU1heE5vUGh5c0NoQml0c1JlY2VpdmVkLAorCXN1cHBvcnRGb3JTRi01MTIJCQkJCUJPT0xFQU4sCisJLS0gZHVtbXksIGR1bXkyIGFuZCBkdW1teTMgYXJlIG5vdCB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbgorCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCWR1bW15CQkJCQkJCQlCT09MRUFOLAorCWR1bW15MgkJCQkJCQkJU2ltdWx0YW5lb3VzU0NDUENILURQQ0gtUmVjZXB0aW9uLAorCWR1bW15MwkJCQkJCQkJU3VwcG9ydE9mRGVkaWNhdGVkUGlsb3RzRm9yQ2hFc3RpbWF0aW9uCQlPUFRJT05BTCwKKwlmZGQtaHNwZHNjaAkJCQkJCQlDSE9JQ0UgeworCQlzdXBwb3J0ZWQJCQkJCQkJU0VRVUVOQ0UgeworCQkJaHNkc2NoLXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5CQlIU0RTQ0gtcGh5c2ljYWwtbGF5ZXItY2F0ZWdvcnksCisJCQktLSBkdW1teSBhbmQgZHVtbXkyIGFyZSBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24KKwkJCS0tIGFuZCBpZiByZWNlaXZlZCB0aGV5IHNob3VsZCBiZSBpZ25vcmVkLgorCQkJZHVtbXkJCQkJCQkJCUJPT0xFQU4sCisJCQlkdW1teTIJCQkJCQkJCUJPT0xFQU4KKwkJfSwKKwkJdW5zdXBwb3J0ZWQJCQkJCQkJTlVMTAorCX0KK30KKworREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1yNSA6Oj0JCVNFUVVFTkNFIHsKKwltYXhUUy1QZXJGcmFtZQkJCQkJCU1heFRTLVBlckZyYW1lLAorCW1heFBoeXNDaFBlckZyYW1lCQkJCQlNYXhQaHlzQ2hQZXJGcmFtZSwKKwltaW5pbXVtU0YJCQkJCQkJTWluaW11bVNGLURMLAorCXN1cHBvcnRPZlBEU0NICQkJCQkJQk9PTEVBTiwKKwltYXhQaHlzQ2hQZXJUUwkJCQkJCU1heFBoeXNDaFBlclRTLAorCXRkZDM4NC1oc3Bkc2NoCQkJCQkJQ0hPSUNFIHsKKwkJc3VwcG9ydGVkCQkJCQkJCUhTRFNDSC1waHlzaWNhbC1sYXllci1jYXRlZ29yeSwKKwkJdW5zdXBwb3J0ZWQJCQkJCQkJTlVMTAorCX0KK30KKworREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjUgOjo9CVNFUVVFTkNFIHsKKwltYXhUUy1QZXJTdWJGcmFtZQkJCQkJTWF4VFMtUGVyU3ViRnJhbWUtcjQsCisJbWF4UGh5c0NoUGVyRnJhbWUJCQkJCU1heFBoeXNDaFBlclN1YkZyYW1lLXI0LAorCW1pbmltdW1TRgkJCQkJCQlNaW5pbXVtU0YtREwsCisJc3VwcG9ydE9mUERTQ0gJCQkJCQlCT09MRUFOLAorCW1heFBoeXNDaFBlclRTCQkJCQkJTWF4UGh5c0NoUGVyVFMsCisJc3VwcG9ydE9mOFBTSwkJCQkJCUJPT0xFQU4sCisJdGRkMTI4LWhzcGRzY2gJCQkJCQlDSE9JQ0UgeworCQlzdXBwb3J0ZWQJCQkJCQkJSFNEU0NILXBoeXNpY2FsLWxheWVyLWNhdGVnb3J5LAorCQl1bnN1cHBvcnRlZAkJCQkJCQlOVUxMCisJfQorfQorCitETC1SRkMzMDk1LUNvbnRleHQgOjo9CQkJCVNFUVVFTkNFIHsKKwlyZmMzMDk1LUNvbnRleHQtSWRlbnRpdHkJCQlJTlRFR0VSICgwLi4xNjM4MyksCisJZGwtbW9kZQkJCQkJCQkJRU5VTUVSQVRFRCB7dSwgbywgcn0sCisJZGwtcmVmLWlyCQkJCQkJCU9DVEVUIFNUUklORyAoIFNJWkUgKDEuLjMwMDApKSwKKwlkbC1yZWYtdGltZQkJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQkJT1BUSU9OQUwsCisJZGwtY3Vyci10aW1lCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAorCWRsLXN5bi1vZmZzZXQtaWQJCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQkJCU9QVElPTkFMLAorCWRsLXN5bi1zbG9wZS10cwkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCQlPUFRJT05BTCwKKwlkbC1keW4tY2hhbmdlZAkJCQkJCUJPT0xFQU4KK30KKworSW1wbGVtZW50YXRpb25TcGVjaWZpY1BhcmFtcyA6Oj0JQklUIFNUUklORyAoU0laRSAoMS4uNTEyKSkKKworCitJbnRlZ3JpdHlQcm90ZWN0aW9uU3RhdHVzIDo6PQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJc3RhcnRlZCwgbm90U3RhcnRlZCB9CisKK0ludGVyUkFULVVFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eUxpc3QtcjUgOjo9CVNFUVVFTkNFIHsKKwlpbnRlclJBVC1VRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJSW50ZXJSQVQtVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5TGlzdCwKKwlnZXJhbkl1LVJhZGlvQWNjZXNzQ2FwYWJpbGl0eQkJR0VSQU5JdS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHkJCQkJT1BUSU9OQUwKK30KKworSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtcjYtZXh0IDo6PSBTRVFVRU5DRSB7CisJLS0gVGhlIGNvbnRlbnQgb2YgdGhlIHY2OTAgbm9uLWNyaXRpY2FsIGV4dGVuc2lvbiBzaG91bGQgYmUKKwktLSBjb25zaWRlcmVkIGFzIGFuIGV4dGVuc2lvbiBvZiBJRSBJbnRyYUZyZXFFdmVudENyaXRlcmlhTGlzdAorCWV2ZW50CQkJCQkJCQlFdmVudDFqLXI2LAorCWh5c3RlcmVzaXMJCQkJCQkJSHlzdGVyZXNpcywKKwl0aW1lVG9UcmlnZ2VyCQkJCQkJVGltZVRvVHJpZ2dlciwKKwlyZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlSZXBvcnRpbmdDZWxsU3RhdHVzCQkJCQlPUFRJT05BTAorfQorCistLSBkdW1teSBpcyBub3QgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmljYXRpb24sIGl0IHNob3VsZAorLS0gbm90IGJlIHNlbnQgYW5kIGlmIHJlY2VpdmVkIGl0IHNob3VsZCBiZSBpZ25vcmVkLgorTWF4SGNDb250ZXh0U3BhY2UtcjUgOjo9CQkJCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQkJZHVtbXksIGJ5MTAyNCwgYnkyMDQ4LCBieTQwOTYsIGJ5ODE5MiwgCisJCQkJCQkJCQkJCWJ5MTYzODQsIGJ5MzI3NjgsIGJ5NjU1MzYsIGJ5MTMxMDcyIH0KKworTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0IDo6PQkJU0VRVUVOQ0UgeworCWRvd25saW5rQ29tcHJlc3NlZE1vZGUJCQkJQ29tcHJlc3NlZE1vZGVNZWFzQ2FwYWJpbGl0eS1yNCwKKwl1cGxpbmtDb21wcmVzc2VkTW9kZQkJCQlDb21wcmVzc2VkTW9kZU1lYXNDYXBhYmlsaXR5LXI0CQorfQorCitNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZSA6Oj0JCUNIT0lDRSB7CisJc2V0dXAJCQkJCQkJCU1lYXN1cmVtZW50VHlwZSwKKwltb2RpZnkJCQkJCQkJCU5VTEwsCisJcmVsZWFzZQkJCQkJCQkJTlVMTAorfQorCitNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZS1yNCA6Oj0JQ0hPSUNFIHsKKwlzZXR1cAkJCQkJCQkJTWVhc3VyZW1lbnRUeXBlLXI0LAorCW1vZGlmeQkJCQkJCQkJTlVMTCwKKwlyZWxlYXNlCQkJCQkJCQlOVUxMCit9CisKK01lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI2IDo6PQlDSE9JQ0UgeworCXNldHVwCQkJCQkJCQlNZWFzdXJlbWVudFR5cGUtcjYsCisJbW9kaWZ5CQkJCQkJCQlOVUxMLAorCXJlbGVhc2UJCQkJCQkJCU5VTEwKK30KKworT25nb2luZ01lYXNSZXAgOjo9CQkJCQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRJZGVudGl0eQkJCQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwktLSBUQUJVTEFSOiBUaGUgQ0hPSUNFIE1lYXN1cmVtZW50IGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uIGlzIGluY2x1ZGVkCisJLS0gaW4gTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUKKwltZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZQkJCU1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLAorCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAorCWFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCUFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCU9QVElPTkFMCit9CisKK09uZ29pbmdNZWFzUmVwLXI0IDo6PQkJCQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRJZGVudGl0eQkJCQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwktLSBUQUJVTEFSOiBUaGUgQ0hPSUNFIE1lYXN1cmVtZW50IGluIHRoZSB0YWJ1bGFyIGRlc2NyaXB0aW9uIGlzIGluY2x1ZGVkCisJLS0gaW4gTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjQuCisJbWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUJCQlNZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZS1yNCwKKwltZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlNZWFzdXJlbWVudFJlcG9ydGluZ01vZGUJCQlPUFRJT05BTCwKKwlhZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlBZGRpdGlvbmFsTWVhc3VyZW1lbnRJRC1MaXN0CQlPUFRJT05BTAorfQorCitPbmdvaW5nTWVhc1JlcC1yNSA6Oj0JCQkJU0VRVUVOQ0UgeworCW1lYXN1cmVtZW50SWRlbnRpdHkJCQkJCU1lYXN1cmVtZW50SWRlbnRpdHksCisJLS0gVEFCVUxBUjogVGhlIENIT0lDRSBNZWFzdXJlbWVudCBpbiB0aGUgdGFidWxhciBkZXNjcmlwdGlvbiBpcyBpbmNsdWRlZAorCS0tIGluIE1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI0LgorCW1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlCQkJTWVhc3VyZW1lbnRDb21tYW5kV2l0aFR5cGUtcjQsCisJbWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJTWVhc3VyZW1lbnRSZXBvcnRpbmdNb2RlCQkJT1BUSU9OQUwsCisJYWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJQWRkaXRpb25hbE1lYXN1cmVtZW50SUQtTGlzdAkJT1BUSU9OQUwsCisJbWVhc3VyZW1lbnRDb21tYW5kLXY1OTBleHQJCQlDSE9JQ0UgeworCQktLSB0aGUgY2hvaWNlICJpbnRyYS1mcmVxdWVuY3kiIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBjYXNlIG9mIGludHJhLWZyZXF1ZW5jeSBtZWFzdXJlbWVudCwKKwkJLS0gYXMgd2VsbCBhcyB3aGVuIGludHJhLWZyZXF1ZW5jeSBldmVudHMgYXJlIGNvbmZpZ3VyZWQgZm9yIGludGVyLWZyZXF1ZW5jeSBtZWFzdXJlbWVudAorCQlpbnRyYS1mcmVxdWVuY3kJCQkJCQlJbnRyYS1GcmVxRXZlbnRDcml0ZXJpYUxpc3QtdjU5MGV4dCwKKwkJaW50ZXItZnJlcXVlbmN5CQkJCQkJSW50ZXItRnJlcUV2ZW50Q3JpdGVyaWFMaXN0LXY1OTBleHQKKwl9CQlPUFRJT05BTCwKKwlpbnRyYUZyZXFSZXBvcnRpbmdDcml0ZXJpYS0xYi1yNQkJSW50cmFGcmVxUmVwb3J0aW5nQ3JpdGVyaWEtMWItcjUJT1BUSU9OQUwsCisJaW50cmFGcmVxRXZlbnQtMWQtcjUJCQkJCUludHJhRnJlcUV2ZW50LTFkLXI1CQkJCU9QVElPTkFMCit9CisKK09uZ29pbmdNZWFzUmVwLXI2IDo6PQkJCQlTRVFVRU5DRSB7CisJbWVhc3VyZW1lbnRJZGVudGl0eQkJCQkJTWVhc3VyZW1lbnRJZGVudGl0eSwKKwltZWFzdXJlbWVudENvbW1hbmRXaXRoVHlwZQkJCU1lYXN1cmVtZW50Q29tbWFuZFdpdGhUeXBlLXI2LAorCW1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU1lYXN1cmVtZW50UmVwb3J0aW5nTW9kZQkJCU9QVElPTkFMLAorCWFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCUFkZGl0aW9uYWxNZWFzdXJlbWVudElELUxpc3QJCU9QVElPTkFMCit9CisKK09uZ29pbmdNZWFzUmVwTGlzdCA6Oj0JCQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5vT2ZNZWFzKSkgT0YKKwkJCQkJCQkJCQlPbmdvaW5nTWVhc1JlcAorCitPbmdvaW5nTWVhc1JlcExpc3QtcjQgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5vT2ZNZWFzKSkgT0YKKwkJCQkJCQkJCQlPbmdvaW5nTWVhc1JlcC1yNAorCitPbmdvaW5nTWVhc1JlcExpc3QtcjUgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5vT2ZNZWFzKSkgT0YKKwkJCQkJCQkJCQlPbmdvaW5nTWVhc1JlcC1yNQorCitPbmdvaW5nTWVhc1JlcExpc3QtcjYgOjo9CQkJU0VRVUVOQ0UgKFNJWkUgKDEuLm1heE5vT2ZNZWFzKSkgT0YKKwkJCQkJCQkJCQlPbmdvaW5nTWVhc1JlcC1yNgorCitQRENQLUNhcGFiaWxpdHktcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwlsb3NzbGVzc1NSTlMtUmVsb2NhdGlvblN1cHBvcnQJCUJPT0xFQU4sCisJc3VwcG9ydEZvclJmYzI1MDcJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlNYXhIY0NvbnRleHRTcGFjZQorCX0sCisJc3VwcG9ydEZvclJmYzMwOTUJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CisJCQltYXhST0hDLUNvbnRleHRTZXNzaW9ucwkJCQlNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNAlERUZBVUxUIHMxNiwKKwkJCXJldmVyc2VDb21wcmVzc2lvbkRlcHRoCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQkJCURFRkFVTFQgMAorCQl9CisJfQorfQorCitQRENQLUNhcGFiaWxpdHktcjUgOjo9CQkJCVNFUVVFTkNFIHsKKwlsb3NzbGVzc1NSTlMtUmVsb2NhdGlvblN1cHBvcnQJCUJPT0xFQU4sCisJc3VwcG9ydEZvclJmYzI1MDcJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlNYXhIY0NvbnRleHRTcGFjZS1yNQorCX0sCisJc3VwcG9ydEZvclJmYzMwOTUJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CisJCQltYXhST0hDLUNvbnRleHRTZXNzaW9ucwkJCQlNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNAlERUZBVUxUIHMxNiwKKwkJCXJldmVyc2VDb21wcmVzc2lvbkRlcHRoCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQkJCURFRkFVTFQgMCwKKwkJCXN1cHBvcnRGb3JSZmMzMDk1Q29udGV4dFJlbG9jYXRpb24JQk9PTEVBTgorCQl9CisJfQorfQorCitQRENQLUNhcGFiaWxpdHktcjYgOjo9CQkJCVNFUVVFTkNFIHsKKwlsb3NzbGVzc1NSTlMtUmVsb2NhdGlvblN1cHBvcnQJCUJPT0xFQU4sCisJbG9zc2xlc3NETFJMQy1QRFVTaXplQ2hhbmdlCQkJRU5VTUVSQVRFRCB7IHRydWUgfQkJCQkJT1BUSU9OQUwsCisJc3VwcG9ydEZvclJmYzI1MDcJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlNYXhIY0NvbnRleHRTcGFjZS1yNQorCX0sCisJc3VwcG9ydEZvclJmYzMwOTUJCQkJCUNIT0lDRSB7CisJCW5vdFN1cHBvcnRlZAkJCQkJCU5VTEwsCisJCXN1cHBvcnRlZAkJCQkJCQlTRVFVRU5DRSB7CisJCQltYXhST0hDLUNvbnRleHRTZXNzaW9ucwkJCQlNYXhST0hDLUNvbnRleHRTZXNzaW9ucy1yNAlERUZBVUxUIHMxNiwKKwkJCXJldmVyc2VDb21wcmVzc2lvbkRlcHRoCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQkJCURFRkFVTFQgMCwKKwkJCXN1cHBvcnRGb3JSZmMzMDk1Q29udGV4dFJlbG9jYXRpb24JQk9PTEVBTgorCQl9CisJfQorfQorCitQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI0IDo6PQkJU0VRVUVOQ0UgeworCQlmZGRQaHlzQ2hDYXBhYmlsaXR5CQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5RkRELXI0LAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5RkRECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGQzODQtUGh5c0NoQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELAorCQkJdXBsaW5rUGh5c0NoQ2FwYWJpbGl0eQkJCQlVTC1QaHlzQ2hDYXBhYmlsaXR5VERECisJCX0JCQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGQxMjgtUGh5c0NoQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQlkb3dubGlua1BoeXNDaENhcGFiaWxpdHkJCQlETC1QaHlzQ2hDYXBhYmlsaXR5VERELUxDUi1yNCwKKwkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjQKKwkJfQkJCQkJCQkJCQkJT1BUSU9OQUwKK30KKworUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNSA6Oj0JCVNFUVVFTkNFIHsKKwkJZmRkUGh5c0NoQ2FwYWJpbGl0eQkJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eUZERC1yNSwKKwkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eUZERAorCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJdGRkMzg0LVBoeXNDaENhcGFiaWxpdHkJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1yNSwKKwkJCXVwbGlua1BoeXNDaENhcGFiaWxpdHkJCQkJVUwtUGh5c0NoQ2FwYWJpbGl0eVRERAorCQl9CQkJCQkJCQkJCQlPUFRJT05BTCwKKwkJdGRkMTI4LVBoeXNDaENhcGFiaWxpdHkJCQkJU0VRVUVOQ0UgeworCQkJZG93bmxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJREwtUGh5c0NoQ2FwYWJpbGl0eVRERC1MQ1ItcjUsCisJCQl1cGxpbmtQaHlzQ2hDYXBhYmlsaXR5CQkJCVVMLVBoeXNDaENhcGFiaWxpdHlUREQtTENSLXI0CisJCX0JCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1JGLUNhcGFiaWxpdHktcjQgOjo9CQkJCVNFUVVFTkNFIHsKKwkJZmRkUkYtQ2FwYWJpbGl0eQkJCQlTRVFVRU5DRSB7CisJCQl1ZS1Qb3dlckNsYXNzCQkJCQlVRS1Qb3dlckNsYXNzRXh0LAorCQkJdHhSeEZyZXF1ZW5jeVNlcGFyYXRpb24JCQlUeFJ4RnJlcXVlbmN5U2VwYXJhdGlvbgorCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGQzODQtUkYtQ2FwYWJpbGl0eQkJCVNFUVVFTkNFIHsKKwkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3NFeHQsCisJCQlyYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0LAorCQkJY2hpcFJhdGVDYXBhYmlsaXR5CQkJCUNoaXBSYXRlQ2FwYWJpbGl0eQorCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMLAorCQl0ZGQxMjgtUkYtQ2FwYWJpbGl0eQkJCVNFUVVFTkNFIHsKKwkJCXVlLVBvd2VyQ2xhc3MJCQkJCVVFLVBvd2VyQ2xhc3NFeHQsCisJCQlyYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0CQlSYWRpb0ZyZXF1ZW5jeUJhbmRURERMaXN0LAorCQkJY2hpcFJhdGVDYXBhYmlsaXR5CQkJCUNoaXBSYXRlQ2FwYWJpbGl0eQorCQl9CQkJCQkJCQkJCQkJCQkJCU9QVElPTkFMCit9CisKK1JGQzMwOTUtQ29udGV4dEluZm8gOjo9IAkJCVNFUVVFTkNFIHsKKwlyYi1JZGVudGl0eQkJCQkJCQlSQi1JZGVudGl0eSwKKwlyZmMzMDk1LUNvbnRleHQtTGlzdAkJCQlSRkMzMDk1LUNvbnRleHQtTGlzdAorfQorCitSRkMzMDk1LUNvbnRleHQtTGlzdCA6Oj0JCQlTRVFVRU5DRSAoU0laRSAoMS4ubWF4UkZDMzA5NS1DSUQpKSBPRiBTRVFVRU5DRSB7CisJZGwtUkZDMzA5NS1Db250ZXh0CQkJCQlETC1SRkMzMDk1LUNvbnRleHQJCU9QVElPTkFMLAorCXVsLVJGQzMwOTUtQ29udGV4dAkJCQkJVUwtUkZDMzA5NS1Db250ZXh0CQlPUFRJT05BTAorfQorCitSTEMtQ2FwYWJpbGl0eS1yNSA6Oj0JCQkJU0VRVUVOQ0UgeworCXRvdGFsUkxDLUFNLUJ1ZmZlclNpemUJCQkJVG90YWxSTEMtQU0tQnVmZmVyU2l6ZS1yNSwKKwltYXhpbXVtUkxDLVdpbmRvd1NpemUJCQkJTWF4aW11bVJMQy1XaW5kb3dTaXplLAorCW1heGltdW1BTS1FbnRpdHlOdW1iZXIJCQkJTWF4aW11bUFNLUVudGl0eU51bWJlclJMQy1DYXAKK30KKworCitTUkItU3BlY2lmaWNJbnRlZ3JpdHlQcm90SW5mbyA6Oj0JU0VRVUVOQ0UgeworCXVsLVJSQy1IRk4JCQkJCQkJQklUIFNUUklORyAoU0laRSAoMjgpKSwKKwlkbC1SUkMtSEZOCQkJCQkJCUJJVCBTVFJJTkcgKFNJWkUgKDI4KSksCisJdWwtUlJDLVNlcXVlbmNlTnVtYmVyCQkJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIsCisJZGwtUlJDLVNlcXVlbmNlTnVtYmVyCQkJCVJSQy1NZXNzYWdlU2VxdWVuY2VOdW1iZXIKK30KKworU1JCLVNwZWNpZmljSW50ZWdyaXR5UHJvdEluZm9MaXN0IDo6PSBTRVFVRU5DRSAoU0laRSAoNC4ubWF4U1JCc2V0dXApKSBPRgorCQkJCQkJCQkJCVNSQi1TcGVjaWZpY0ludGVncml0eVByb3RJbmZvCisKK1N0YXRlT2ZSUkMgOjo9CQkJCQkJRU5VTUVSQVRFRCB7CisJCQkJCQkJCQkJY2VsbC1EQ0gsIGNlbGwtRkFDSCwKKwkJCQkJCQkJCQljZWxsLVBDSCwgdXJhLVBDSCB9CisKK1N0YXRlT2ZSUkMtUHJvY2VkdXJlIDo6PQkJCUVOVU1FUkFURUQgeworCQkJCQkJCQkJCWF3YWl0Tm9SUkMtTWVzc2FnZSwKKwkJCQkJCQkJCQlhd2FpdFJCLVJlbGVhc2VDb21wbGV0ZSwKKwkJCQkJCQkJCQlhd2FpdFJCLVNldHVwQ29tcGxldGUsCisJCQkJCQkJCQkJYXdhaXRSQi1SZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSwKKwkJCQkJCQkJCQlhd2FpdFRyYW5zcG9ydENILVJlY29uZmlndXJhdGlvbkNvbXBsZXRlLAorCQkJCQkJCQkJCWF3YWl0UGh5c2ljYWxDSC1SZWNvbmZpZ3VyYXRpb25Db21wbGV0ZSwKKwkJCQkJCQkJCQlhd2FpdEFjdGl2ZVNldFVwZGF0ZUNvbXBsZXRlLAorCQkJCQkJCQkJCWF3YWl0SGFuZG92ZXJDb21wbGV0ZSwKKwkJCQkJCQkJCQlzZW5kQ2VsbFVwZGF0ZUNvbmZpcm0sCisJCQkJCQkJCQkJc2VuZFVyYVVwZGF0ZUNvbmZpcm0sCisJCQkJCQkJCQkJLS0gZHVtbXkgaXMgbm90IHVzZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHNwZWNpZmljYXRpb24KKwkJCQkJCQkJCQktLSBJdCBzaG91bGQgbm90IGJlIHNlbnQKKwkJCQkJCQkJCQlkdW1teSwKKwkJCQkJCQkJCQlvdGhlclN0YXRlcyAKK30KKworVG90YWxSTEMtQU0tQnVmZmVyU2l6ZS1yNSA6Oj0JCUVOVU1FUkFURUQgeyAKKwkJCQkJCQkJCQlrYjEwLCBrYjUwLCBrYjEwMCwga2IxNTAsIGtiMjAwLCAKKwkJCQkJCQkJCQlrYjMwMCwga2I0MDAsIGtiNTAwLCBrYjc1MCwga2IxMDAwIH0KKworVFBDLUNvbWJpbmF0aW9uLUluZm8gOjo9IFNFUVVFTkNFIHsKKwkJcHJpbWFyeUNQSUNILUluZm8JCQkJCVByaW1hcnlDUElDSC1JbmZvLAorCQl0cGMtQ29tYmluYXRpb25JbmRleAkJCQlUUEMtQ29tYmluYXRpb25JbmRleAorfQorCitVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS1yNSA6Oj0JU0VRVUVOQ0UgeworCW11bHRpUkFULUNhcGFiaWxpdHlMaXN0CQkJCU11bHRpUkFULUNhcGFiaWxpdHksCisJbXVsdGlNb2RlQ2FwYWJpbGl0eQkJCQkJTXVsdGlNb2RlQ2FwYWJpbGl0eSwKKwlzdXBwb3J0T2ZVVFJBTi1Ub0dFUkFOLU5BQ0MJCQlCT09MRUFOCit9CisKK1VFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHktcjQgOjo9CVNFUVVFTkNFIHsKKwlzdGFuZGFsb25lTG9jTWV0aG9kc1N1cHBvcnRlZAkJCUJPT0xFQU4sCisJdWUtQmFzZWRPVERPQS1TdXBwb3J0ZWQJCQkJCUJPT0xFQU4sCisJbmV0d29ya0Fzc2lzdGVkR1BTLVN1cHBvcnRlZAkJCU5ldHdvcmtBc3Npc3RlZEdQUy1TdXBwb3J0ZWQsCisJc3VwcG9ydEZvclVFLUdQUy1UaW1pbmdPZkNlbGxGcmFtZXMJCUJPT0xFQU4sCisJc3VwcG9ydEZvcklQREwJCQkJCQkJQk9PTEVBTiwKKwlyeC10eC1UaW1lRGlmZmVyZW5jZVR5cGUyQ2FwYWJsZSAJCUJPT0xFQU4sCisJdmFsaWRpdHktQ2VsbFBDSC1VcmFQQ0ggCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCU9QVElPTkFMLAorCXNmbi1zZm5UeXBlMkNhcGFiaWxpdHkJCQkJCUVOVU1FUkFURUQgeyB0cnVlIH0JCQlPUFRJT05BTAorfQorCitVRS1Qb3NpdGlvbmluZy1MYXN0S25vd25Qb3MgOjo9CQlTRVFVRU5DRSB7IAorCQlzZm4JCQkJCQkJCUlOVEVHRVIgKDAuLjQwOTUpLAorCQljZWxsLWlkCQkJCQkJCUNlbGxJZGVudGl0eSwKKwkJcG9zaXRpb25Fc3RpbWF0ZQkJCQlQb3NpdGlvbkVzdGltYXRlCit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNCA6Oj0JCVNFUVVFTkNFIHsKKwlhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCisJcGRjcC1DYXBhYmlsaXR5CQkJCQkJUERDUC1DYXBhYmlsaXR5LXI0LAorCXJsYy1DYXBhYmlsaXR5CQkJCQkJUkxDLUNhcGFiaWxpdHksCisJdHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkJCQlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKKwlyZi1DYXBhYmlsaXR5CQkJCQkJUkYtQ2FwYWJpbGl0eS1yNCwKKwlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNCwKKwl1ZS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eQkJCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LAorCXNlY3VyaXR5Q2FwYWJpbGl0eQkJCQkJU2VjdXJpdHlDYXBhYmlsaXR5LAorCXVlLXBvc2l0aW9uaW5nLUNhcGFiaWxpdHkJCQlVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5LXI0LAorCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHktcjQJCU9QVElPTkFMCit9CisKK1VFLVJhZGlvQWNjZXNzQ2FwYWJpbGl0eS1yNSA6Oj0JCVNFUVVFTkNFIHsKKwlhY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvcgkJQWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IsCisJZGwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCisJCQkJCQkJCQkJREwtQ2FwYWJpbGl0eVdpdGhTaW11bHRhbmVvdXNIUy1EU0NIQ29uZmlnCU9QVElPTkFMLAorCXBkY3AtQ2FwYWJpbGl0eQkJCQkJCVBEQ1AtQ2FwYWJpbGl0eS1yNSwKKwlybGMtQ2FwYWJpbGl0eQkJCQkJCVJMQy1DYXBhYmlsaXR5LXI1LAorCXRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5CQkJVHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHksCisJcmYtQ2FwYWJpbGl0eQkJCQkJCVJGLUNhcGFiaWxpdHktcjQsCisJcGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eQkJCVBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHktcjUsCisJdWUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHkJCQlVRS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eS1yNSwKKwlzZWN1cml0eUNhcGFiaWxpdHkJCQkJCVNlY3VyaXR5Q2FwYWJpbGl0eSwKKwl1ZS1wb3NpdGlvbmluZy1DYXBhYmlsaXR5CQkJVUUtUG9zaXRpb25pbmctQ2FwYWJpbGl0eS1yNCwKKwltZWFzdXJlbWVudENhcGFiaWxpdHkJCQkJTWVhc3VyZW1lbnRDYXBhYmlsaXR5LXI0CQlPUFRJT05BTAorfQorCitVRS1SYWRpb0FjY2Vzc0NhcGFiaWxpdHktcjYgOjo9CQlTRVFVRU5DRSB7CisJYWNjZXNzU3RyYXR1bVJlbGVhc2VJbmRpY2F0b3IJCUFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yLAorCWRsLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZworCQkJCQkJCQkJCURMLUNhcGFiaWxpdHlXaXRoU2ltdWx0YW5lb3VzSFMtRFNDSENvbmZpZwlPUFRJT05BTCwKKwlwZGNwLUNhcGFiaWxpdHkJCQkJCQlQRENQLUNhcGFiaWxpdHktcjYsCisJcmxjLUNhcGFiaWxpdHkJCQkJCQlSTEMtQ2FwYWJpbGl0eS1yNSwKKwl0cmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eQkJCVRyYW5zcG9ydENoYW5uZWxDYXBhYmlsaXR5LAorCXJmLUNhcGFiaWxpdHkJCQkJCQlSRi1DYXBhYmlsaXR5LXI0LAorCXBoeXNpY2FsQ2hhbm5lbENhcGFiaWxpdHkJCQlQaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5LXI1LAorCXVlLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5CQkJVUUtTXVsdGlNb2RlUkFULUNhcGFiaWxpdHktcjUsCisJc2VjdXJpdHlDYXBhYmlsaXR5CQkJCQlTZWN1cml0eUNhcGFiaWxpdHksCisJdWUtcG9zaXRpb25pbmctQ2FwYWJpbGl0eQkJCVVFLVBvc2l0aW9uaW5nLUNhcGFiaWxpdHktcjQsCisJbWVhc3VyZW1lbnRDYXBhYmlsaXR5CQkJCU1lYXN1cmVtZW50Q2FwYWJpbGl0eS1yNAkJT1BUSU9OQUwKK30KKworVUUtUmFkaW9BY2Nlc3NDYXBhYmlsaXR5LXI3IDo6PQkJU0VRVUVOQ0UgeworCWFjY2Vzc1N0cmF0dW1SZWxlYXNlSW5kaWNhdG9yCQlBY2Nlc3NTdHJhdHVtUmVsZWFzZUluZGljYXRvciwKKwlkbC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcKKwkJCQkJCQkJCQlETC1DYXBhYmlsaXR5V2l0aFNpbXVsdGFuZW91c0hTLURTQ0hDb25maWcJT1BUSU9OQUwsCisJcGRjcC1DYXBhYmlsaXR5CQkJCQkJUERDUC1DYXBhYmlsaXR5LXI2LAorCXJsYy1DYXBhYmlsaXR5CQkJCQkJUkxDLUNhcGFiaWxpdHktcjUsCisJdHJhbnNwb3J0Q2hhbm5lbENhcGFiaWxpdHkJCQlUcmFuc3BvcnRDaGFubmVsQ2FwYWJpbGl0eSwKKwlyZi1DYXBhYmlsaXR5CQkJCQkJUkYtQ2FwYWJpbGl0eS1yNywKKwlwaHlzaWNhbENoYW5uZWxDYXBhYmlsaXR5CQkJUGh5c2ljYWxDaGFubmVsQ2FwYWJpbGl0eS1yNywKKwl1ZS1NdWx0aU1vZGVSQVQtQ2FwYWJpbGl0eQkJCVVFLU11bHRpTW9kZVJBVC1DYXBhYmlsaXR5LXI1LAorCXNlY3VyaXR5Q2FwYWJpbGl0eQkJCQkJU2VjdXJpdHlDYXBhYmlsaXR5LAorCXVlLXBvc2l0aW9uaW5nLUNhcGFiaWxpdHkJCQlVRS1Qb3NpdGlvbmluZy1DYXBhYmlsaXR5LXI0LAorCW1lYXN1cmVtZW50Q2FwYWJpbGl0eQkJCQlNZWFzdXJlbWVudENhcGFiaWxpdHktcjQJCU9QVElPTkFMCit9CisKK1VMLVJGQzMwOTUtQ29udGV4dCA6Oj0JCQkJU0VRVUVOQ0UgeworCXJmYzMwOTUtQ29udGV4dC1JZGVudGl0eQkJCUlOVEVHRVIgKDAuLjE2MzgzKSwKKwl1bC1tb2RlCQkJCQkJCQlFTlVNRVJBVEVEIHt1LCBvLCByfSwKKwl1bC1yZWYtaXIJCQkJCQkJT0NURVQgU1RSSU5HICggU0laRSAoMS4uMzAwMCkpLAorCXVsLXJlZi10aW1lCQkJCQkJCUlOVEVHRVIgKDAuLjQyOTQ5NjcyOTUpCQlPUFRJT05BTCwKKwl1bC1jdXJyLXRpbWUJCQkJCQlJTlRFR0VSICgwLi40Mjk0OTY3Mjk1KQkJT1BUSU9OQUwsCisJdWwtc3luLW9mZnNldC1pZAkJCQkJSU5URUdFUiAoMC4uNjU1MzUpCQkJT1BUSU9OQUwsCisJdWwtc3luLXNsb3BlLXRzCQkJCQkJSU5URUdFUiAoMC4uNDI5NDk2NzI5NSkJCU9QVElPTkFMLAorCXVsLXJlZi1zbi0xCQkJCQkJCUlOVEVHRVIgKDAuLjY1NTM1KQkJCU9QVElPTkFMCit9CisKK0VORAorCg==