From dc5be942d49d38b9b487f58377643132ca3edd4c Mon Sep 17 00:00:00 2001 From: Orne Brocaar Date: Thu, 19 Oct 2023 17:12:19 +0100 Subject: [PATCH] api: Re-generate API code. --- api/csharp/Chirpstack/api/Application.cs | 704 ++--- api/csharp/Chirpstack/api/Device.cs | 4 +- api/csharp/Chirpstack/api/DeviceProfile.cs | 18 +- .../Chirpstack/api/DeviceProfileGrpc.cs | 3 +- api/csharp/Chirpstack/api/Tenant.cs | 169 +- api/go/api/application.pb.go | 2291 +++++++++-------- api/go/api/device.pb.go | 4 +- api/go/api/device_profile.pb.go | 18 +- api/go/api/tenant.pb.go | 536 ++-- api/grpc-web/api/application_pb.d.ts | 4 + api/grpc-web/api/application_pb.js | 35 +- api/grpc-web/api/tenant_pb.d.ts | 4 + api/grpc-web/api/tenant_pb.js | 35 +- api/js/api/application_pb.d.ts | 3 + api/js/api/application_pb.js | 35 +- api/js/api/device_profile_grpc_pb.js | 3 +- api/js/api/tenant_pb.d.ts | 3 + api/js/api/tenant_pb.js | 35 +- api/md/api/api.md | 43 +- .../chirpstack-api/api/application.proto | 6 + .../proto/chirpstack-api/api/device.proto | 4 +- .../chirpstack-api/api/device_profile.proto | 713 ++--- .../proto/chirpstack-api/api/tenant.proto | 401 +-- .../src/chirpstack_api/api/application_pb2.py | 334 +-- .../chirpstack_api/api/application_pb2.pyi | 13 +- .../api/device_profile_pb2_grpc.py | 9 +- .../src/chirpstack_api/api/tenant_pb2.py | 84 +- .../src/chirpstack_api/api/tenant_pb2.pyi | 13 +- .../proto/chirpstack/api/device_profile.proto | 713 ++--- 29 files changed, 3298 insertions(+), 2939 deletions(-) diff --git a/api/csharp/Chirpstack/api/Application.cs b/api/csharp/Chirpstack/api/Application.cs index be90e447..1c471259 100644 --- a/api/csharp/Chirpstack/api/Application.cs +++ b/api/csharp/Chirpstack/api/Application.cs @@ -26,346 +26,348 @@ namespace Chirpstack.Api { string.Concat( "ChVhcGkvYXBwbGljYXRpb24ucHJvdG8SA2FwaRocZ29vZ2xlL2FwaS9hbm5v", "dGF0aW9ucy5wcm90bxofZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcC5wcm90", - "bxobZ29vZ2xlL3Byb3RvYnVmL2VtcHR5LnByb3RvIk8KC0FwcGxpY2F0aW9u", - "EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyAB", - "KAkSEQoJdGVuYW50X2lkGAQgASgJIqQBChNBcHBsaWNhdGlvbkxpc3RJdGVt", - "EgoKAmlkGAEgASgJEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJv", - "dG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUu", - "cHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSEwoLZGVzY3JpcHRp", - "b24YBSABKAkiQQoYQ3JlYXRlQXBwbGljYXRpb25SZXF1ZXN0EiUKC2FwcGxp", - "Y2F0aW9uGAEgASgLMhAuYXBpLkFwcGxpY2F0aW9uIicKGUNyZWF0ZUFwcGxp", - "Y2F0aW9uUmVzcG9uc2USCgoCaWQYASABKAkiIwoVR2V0QXBwbGljYXRpb25S", - "ZXF1ZXN0EgoKAmlkGAEgASgJIrkBChZHZXRBcHBsaWNhdGlvblJlc3BvbnNl", - "EiUKC2FwcGxpY2F0aW9uGAEgASgLMhAuYXBpLkFwcGxpY2F0aW9uEi4KCmNy", - "ZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4K", - "CnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w", - "EhgKEG1lYXN1cmVtZW50X2tleXMYBCADKAkiQQoYVXBkYXRlQXBwbGljYXRp", - "b25SZXF1ZXN0EiUKC2FwcGxpY2F0aW9uGAEgASgLMhAuYXBpLkFwcGxpY2F0", - "aW9uIiYKGERlbGV0ZUFwcGxpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJb", - "ChdMaXN0QXBwbGljYXRpb25zUmVxdWVzdBINCgVsaW1pdBgBIAEoDRIOCgZv", - "ZmZzZXQYAiABKA0SDgoGc2VhcmNoGAMgASgJEhEKCXRlbmFudF9pZBgEIAEo", - "CSJZChhMaXN0QXBwbGljYXRpb25zUmVzcG9uc2USEwoLdG90YWxfY291bnQY", - "ASABKA0SKAoGcmVzdWx0GAIgAygLMhguYXBpLkFwcGxpY2F0aW9uTGlzdEl0", - "ZW0iMQoXTGlzdEludGVncmF0aW9uc1JlcXVlc3QSFgoOYXBwbGljYXRpb25f", - "aWQYASABKAkiOQoTSW50ZWdyYXRpb25MaXN0SXRlbRIiCgRraW5kGAEgASgO", - "MhQuYXBpLkludGVncmF0aW9uS2luZCJZChhMaXN0SW50ZWdyYXRpb25zUmVz", - "cG9uc2USEwoLdG90YWxfY291bnQYASABKA0SKAoGcmVzdWx0GAIgAygLMhgu", - "YXBpLkludGVncmF0aW9uTGlzdEl0ZW0iygEKD0h0dHBJbnRlZ3JhdGlvbhIW", - "Cg5hcHBsaWNhdGlvbl9pZBgBIAEoCRIyCgdoZWFkZXJzGAIgAygLMiEuYXBp", - "Lkh0dHBJbnRlZ3JhdGlvbi5IZWFkZXJzRW50cnkSHwoIZW5jb2RpbmcYAyAB", - "KA4yDS5hcGkuRW5jb2RpbmcSGgoSZXZlbnRfZW5kcG9pbnRfdXJsGAQgASgJ", - "Gi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6", - "AjgBIkkKHENyZWF0ZUh0dHBJbnRlZ3JhdGlvblJlcXVlc3QSKQoLaW50ZWdy", - "YXRpb24YASABKAsyFC5hcGkuSHR0cEludGVncmF0aW9uIjMKGUdldEh0dHBJ", - "bnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiRwoa", - "R2V0SHR0cEludGVncmF0aW9uUmVzcG9uc2USKQoLaW50ZWdyYXRpb24YASAB", - "KAsyFC5hcGkuSHR0cEludGVncmF0aW9uIkkKHFVwZGF0ZUh0dHBJbnRlZ3Jh", - "dGlvblJlcXVlc3QSKQoLaW50ZWdyYXRpb24YASABKAsyFC5hcGkuSHR0cElu", - "dGVncmF0aW9uIjYKHERlbGV0ZUh0dHBJbnRlZ3JhdGlvblJlcXVlc3QSFgoO", - "YXBwbGljYXRpb25faWQYASABKAkilQIKE0luZmx1eERiSW50ZWdyYXRpb24S", - "FgoOYXBwbGljYXRpb25faWQYASABKAkSEAoIZW5kcG9pbnQYAiABKAkSCgoC", - "ZGIYAyABKAkSEAoIdXNlcm5hbWUYBCABKAkSEAoIcGFzc3dvcmQYBSABKAkS", - "HQoVcmV0ZW50aW9uX3BvbGljeV9uYW1lGAYgASgJEikKCXByZWNpc2lvbhgH", - "IAEoDjIWLmFwaS5JbmZsdXhEYlByZWNpc2lvbhIlCgd2ZXJzaW9uGAggASgO", - "MhQuYXBpLkluZmx1eERiVmVyc2lvbhINCgV0b2tlbhgJIAEoCRIUCgxvcmdh", - "bml6YXRpb24YCiABKAkSDgoGYnVja2V0GAsgASgJIlEKIENyZWF0ZUluZmx1", - "eERiSW50ZWdyYXRpb25SZXF1ZXN0Ei0KC2ludGVncmF0aW9uGAEgASgLMhgu", - "YXBpLkluZmx1eERiSW50ZWdyYXRpb24iNwodR2V0SW5mbHV4RGJJbnRlZ3Jh", - "dGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiTwoeR2V0SW5m", - "bHV4RGJJbnRlZ3JhdGlvblJlc3BvbnNlEi0KC2ludGVncmF0aW9uGAEgASgL", - "MhguYXBpLkluZmx1eERiSW50ZWdyYXRpb24iUQogVXBkYXRlSW5mbHV4RGJJ", - "bnRlZ3JhdGlvblJlcXVlc3QSLQoLaW50ZWdyYXRpb24YASABKAsyGC5hcGku", - "SW5mbHV4RGJJbnRlZ3JhdGlvbiI6CiBEZWxldGVJbmZsdXhEYkludGVncmF0", - "aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJAChZUaGluZ3NC", - "b2FyZEludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEg4KBnNl", - "cnZlchgCIAEoCSJXCiNDcmVhdGVUaGluZ3NCb2FyZEludGVncmF0aW9uUmVx", - "dWVzdBIwCgtpbnRlZ3JhdGlvbhgBIAEoCzIbLmFwaS5UaGluZ3NCb2FyZElu", - "dGVncmF0aW9uIjoKIEdldFRoaW5nc0JvYXJkSW50ZWdyYXRpb25SZXF1ZXN0", - "EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIlUKIUdldFRoaW5nc0JvYXJkSW50", - "ZWdyYXRpb25SZXNwb25zZRIwCgtpbnRlZ3JhdGlvbhgBIAEoCzIbLmFwaS5U", - "aGluZ3NCb2FyZEludGVncmF0aW9uIlcKI1VwZGF0ZVRoaW5nc0JvYXJkSW50", - "ZWdyYXRpb25SZXF1ZXN0EjAKC2ludGVncmF0aW9uGAEgASgLMhsuYXBpLlRo", - "aW5nc0JvYXJkSW50ZWdyYXRpb24iPQojRGVsZXRlVGhpbmdzQm9hcmRJbnRl", - "Z3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiQAoUTXlE", - "ZXZpY2VzSW50ZWdyYXRpb24SFgoOYXBwbGljYXRpb25faWQYASABKAkSEAoI", - "ZW5kcG9pbnQYAiABKAkiUwohQ3JlYXRlTXlEZXZpY2VzSW50ZWdyYXRpb25S", - "ZXF1ZXN0Ei4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLk15RGV2aWNlc0lu", - "dGVncmF0aW9uIjgKHkdldE15RGV2aWNlc0ludGVncmF0aW9uUmVxdWVzdBIW", - "Cg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJRCh9HZXRNeURldmljZXNJbnRlZ3Jh", - "dGlvblJlc3BvbnNlEi4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLk15RGV2", - "aWNlc0ludGVncmF0aW9uIlMKIVVwZGF0ZU15RGV2aWNlc0ludGVncmF0aW9u", - "UmVxdWVzdBIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5NeURldmljZXNJ", - "bnRlZ3JhdGlvbiI7CiFEZWxldGVNeURldmljZXNJbnRlZ3JhdGlvblJlcXVl", - "c3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiegoUTG9yYUNsb3VkSW50ZWdy", - "YXRpb24SFgoOYXBwbGljYXRpb25faWQYASABKAkSSgoabW9kZW1fZ2VvbG9j", - "YXRpb25fc2VydmljZXMYAiABKAsyJi5hcGkuTG9yYUNsb3VkTW9kZW1HZW9s", - "b2NhdGlvblNlcnZpY2VzItUDCiFMb3JhQ2xvdWRNb2RlbUdlb2xvY2F0aW9u", - "U2VydmljZXMSDQoFdG9rZW4YASABKAkSFQoNbW9kZW1fZW5hYmxlZBgCIAEo", - "CBIXCg9mb3J3YXJkX2ZfcG9ydHMYECADKA0SGAoQZ25zc191c2VfcnhfdGlt", - "ZRgFIAEoCBIhChlnbnNzX3VzZV9nYXRld2F5X2xvY2F0aW9uGBEgASgIEhEK", - "CXBhcnNlX3RsdhgGIAEoCBIeChZnZW9sb2NhdGlvbl9idWZmZXJfdHRsGAcg", - "ASgNEiMKG2dlb2xvY2F0aW9uX21pbl9idWZmZXJfc2l6ZRgIIAEoDRIYChBn", - "ZW9sb2NhdGlvbl90ZG9hGAkgASgIEhgKEGdlb2xvY2F0aW9uX3Jzc2kYCiAB", - "KAgSGAoQZ2VvbG9jYXRpb25fZ25zcxgLIAEoCBImCh5nZW9sb2NhdGlvbl9n", - "bnNzX3BheWxvYWRfZmllbGQYDCABKAkSJAocZ2VvbG9jYXRpb25fZ25zc191", - "c2VfcnhfdGltZRgNIAEoCBIYChBnZW9sb2NhdGlvbl93aWZpGA4gASgIEiYK", - "Hmdlb2xvY2F0aW9uX3dpZmlfcGF5bG9hZF9maWVsZBgPIAEoCSJTCiFDcmVh", - "dGVMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QSLgoLaW50ZWdyYXRpb24Y", - "ASABKAsyGS5hcGkuTG9yYUNsb3VkSW50ZWdyYXRpb24iOAoeR2V0TG9yYUNs", - "b3VkSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJ", - "IlEKH0dldExvcmFDbG91ZEludGVncmF0aW9uUmVzcG9uc2USLgoLaW50ZWdy", - "YXRpb24YASABKAsyGS5hcGkuTG9yYUNsb3VkSW50ZWdyYXRpb24iUwohVXBk", - "YXRlTG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0Ei4KC2ludGVncmF0aW9u", - "GAEgASgLMhkuYXBpLkxvcmFDbG91ZEludGVncmF0aW9uIjsKIURlbGV0ZUxv", - "cmFDbG91ZEludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgB", - "IAEoCSKRAQoUR2NwUHViU3ViSW50ZWdyYXRpb24SFgoOYXBwbGljYXRpb25f", - "aWQYASABKAkSHwoIZW5jb2RpbmcYAiABKA4yDS5hcGkuRW5jb2RpbmcSGAoQ", - "Y3JlZGVudGlhbHNfZmlsZRgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhIK", - "CnRvcGljX25hbWUYBSABKAkiUwohQ3JlYXRlR2NwUHViU3ViSW50ZWdyYXRp", - "b25SZXF1ZXN0Ei4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLkdjcFB1YlN1", - "YkludGVncmF0aW9uIjgKHkdldEdjcFB1YlN1YkludGVncmF0aW9uUmVxdWVz", - "dBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJRCh9HZXRHY3BQdWJTdWJJbnRl", - "Z3JhdGlvblJlc3BvbnNlEi4KC2ludGVncmF0aW9uGAEgASgLMhkuYXBpLkdj", - "cFB1YlN1YkludGVncmF0aW9uIlMKIVVwZGF0ZUdjcFB1YlN1YkludGVncmF0", - "aW9uUmVxdWVzdBIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5HY3BQdWJT", - "dWJJbnRlZ3JhdGlvbiI7CiFEZWxldGVHY3BQdWJTdWJJbnRlZ3JhdGlvblJl", - "cXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkioQEKEUF3c1Nuc0ludGVn", - "cmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEh8KCGVuY29kaW5nGAIg", - "ASgOMg0uYXBpLkVuY29kaW5nEg4KBnJlZ2lvbhgDIAEoCRIVCg1hY2Nlc3Nf", - "a2V5X2lkGAQgASgJEhkKEXNlY3JldF9hY2Nlc3Nfa2V5GAUgASgJEhEKCXRv", - "cGljX2FybhgGIAEoCSJNCh5DcmVhdGVBd3NTbnNJbnRlZ3JhdGlvblJlcXVl", - "c3QSKwoLaW50ZWdyYXRpb24YASABKAsyFi5hcGkuQXdzU25zSW50ZWdyYXRp", - "b24iNQobR2V0QXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0", - "aW9uX2lkGAEgASgJIksKHEdldEF3c1Nuc0ludGVncmF0aW9uUmVzcG9uc2US", - "KwoLaW50ZWdyYXRpb24YASABKAsyFi5hcGkuQXdzU25zSW50ZWdyYXRpb24i", - "TQoeVXBkYXRlQXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0EisKC2ludGVncmF0", - "aW9uGAEgASgLMhYuYXBpLkF3c1Nuc0ludGVncmF0aW9uIjgKHkRlbGV0ZUF3", - "c1Nuc0ludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEo", - "CSKGAQoaQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24SFgoOYXBwbGljYXRp", - "b25faWQYASABKAkSHwoIZW5jb2RpbmcYAiABKA4yDS5hcGkuRW5jb2RpbmcS", - "GQoRY29ubmVjdGlvbl9zdHJpbmcYAyABKAkSFAoMcHVibGlzaF9uYW1lGAQg", - "ASgJIl8KJ0NyZWF0ZUF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uUmVxdWVz", - "dBI0CgtpbnRlZ3JhdGlvbhgBIAEoCzIfLmFwaS5BenVyZVNlcnZpY2VCdXNJ", - "bnRlZ3JhdGlvbiI+CiRHZXRBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJl", - "cXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiXQolR2V0QXp1cmVTZXJ2", - "aWNlQnVzSW50ZWdyYXRpb25SZXNwb25zZRI0CgtpbnRlZ3JhdGlvbhgBIAEo", - "CzIfLmFwaS5BenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbiJfCidVcGRhdGVB", - "enVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QSNAoLaW50ZWdyYXRp", - "b24YASABKAsyHy5hcGkuQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24iQQon", - "RGVsZXRlQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFw", - "cGxpY2F0aW9uX2lkGAEgASgJIk8KFlBpbG90VGhpbmdzSW50ZWdyYXRpb24S", - "FgoOYXBwbGljYXRpb25faWQYASABKAkSDgoGc2VydmVyGAIgASgJEg0KBXRv", - "a2VuGAMgASgJIlcKI0NyZWF0ZVBpbG90VGhpbmdzSW50ZWdyYXRpb25SZXF1", - "ZXN0EjAKC2ludGVncmF0aW9uGAEgASgLMhsuYXBpLlBpbG90VGhpbmdzSW50", - "ZWdyYXRpb24iOgogR2V0UGlsb3RUaGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QS", - "FgoOYXBwbGljYXRpb25faWQYASABKAkiVQohR2V0UGlsb3RUaGluZ3NJbnRl", - "Z3JhdGlvblJlc3BvbnNlEjAKC2ludGVncmF0aW9uGAEgASgLMhsuYXBpLlBp", - "bG90VGhpbmdzSW50ZWdyYXRpb24iVwojVXBkYXRlUGlsb3RUaGluZ3NJbnRl", - "Z3JhdGlvblJlcXVlc3QSMAoLaW50ZWdyYXRpb24YASABKAsyGy5hcGkuUGls", - "b3RUaGluZ3NJbnRlZ3JhdGlvbiI9CiNEZWxldGVQaWxvdFRoaW5nc0ludGVn", - "cmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJ8ChBJZnR0", - "dEludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEgsKA2tleRgC", - "IAEoCRIVCg11cGxpbmtfdmFsdWVzGAMgAygJEhYKDmFyYml0cmFyeV9qc29u", - "GAQgASgIEhQKDGV2ZW50X3ByZWZpeBgFIAEoCSJLCh1DcmVhdGVJZnR0dElu", - "dGVncmF0aW9uUmVxdWVzdBIqCgtpbnRlZ3JhdGlvbhgBIAEoCzIVLmFwaS5J", - "ZnR0dEludGVncmF0aW9uIjQKGkdldElmdHR0SW50ZWdyYXRpb25SZXF1ZXN0", - "EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIkkKG0dldElmdHR0SW50ZWdyYXRp", - "b25SZXNwb25zZRIqCgtpbnRlZ3JhdGlvbhgBIAEoCzIVLmFwaS5JZnR0dElu", - "dGVncmF0aW9uIksKHVVwZGF0ZUlmdHR0SW50ZWdyYXRpb25SZXF1ZXN0EioK", - "C2ludGVncmF0aW9uGAEgASgLMhUuYXBpLklmdHR0SW50ZWdyYXRpb24iNwod", - "RGVsZXRlSWZ0dHRJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25f", - "aWQYASABKAkiSQovR2VuZXJhdGVNcXR0SW50ZWdyYXRpb25DbGllbnRDZXJ0", - "aWZpY2F0ZVJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkilgEKMEdl", - "bmVyYXRlTXF0dEludGVncmF0aW9uQ2xpZW50Q2VydGlmaWNhdGVSZXNwb25z", - "ZRIQCgh0bHNfY2VydBgBIAEoCRIPCgd0bHNfa2V5GAIgASgJEg8KB2NhX2Nl", - "cnQYAyABKAkSLgoKZXhwaXJlc19hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1", - "Zi5UaW1lc3RhbXAqIgoIRW5jb2RpbmcSCAoESlNPThAAEgwKCFBST1RPQlVG", - "EAEqvwEKD0ludGVncmF0aW9uS2luZBIICgRIVFRQEAASDQoJSU5GTFVYX0RC", - "EAESEAoMVEhJTkdTX0JPQVJEEAISDgoKTVlfREVWSUNFUxADEg4KCkxPUkFf", - "Q0xPVUQQBBIPCgtHQ1BfUFVCX1NVQhAFEgsKB0FXU19TTlMQBhIVChFBWlVS", - "RV9TRVJWSUNFX0JVUxAHEhAKDFBJTE9UX1RISU5HUxAIEg8KC01RVFRfR0xP", - "QkFMEAkSCQoFSUZUVFQQCio/ChFJbmZsdXhEYlByZWNpc2lvbhIGCgJOUxAA", - "EgUKAVUQARIGCgJNUxACEgUKAVMQAxIFCgFNEAQSBQoBSBAFKjEKD0luZmx1", - "eERiVmVyc2lvbhIOCgpJTkZMVVhEQl8xEAASDgoKSU5GTFVYREJfMhABMrg8", - "ChJBcHBsaWNhdGlvblNlcnZpY2USZQoGQ3JlYXRlEh0uYXBpLkNyZWF0ZUFw", - "cGxpY2F0aW9uUmVxdWVzdBoeLmFwaS5DcmVhdGVBcHBsaWNhdGlvblJlc3Bv", - "bnNlIhyC0+STAhYiES9hcGkvYXBwbGljYXRpb25zOgEqEl4KA0dldBIaLmFw", - "aS5HZXRBcHBsaWNhdGlvblJlcXVlc3QaGy5hcGkuR2V0QXBwbGljYXRpb25S", - "ZXNwb25zZSIegtPkkwIYEhYvYXBpL2FwcGxpY2F0aW9ucy97aWR9Em4KBlVw", - "ZGF0ZRIdLmFwaS5VcGRhdGVBcHBsaWNhdGlvblJlcXVlc3QaFi5nb29nbGUu", - "cHJvdG9idWYuRW1wdHkiLYLT5JMCJxoiL2FwaS9hcHBsaWNhdGlvbnMve2Fw", - "cGxpY2F0aW9uLmlkfToBKhJfCgZEZWxldGUSHS5hcGkuRGVsZXRlQXBwbGlj", - "YXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ih6C0+STAhgq", - "Fi9hcGkvYXBwbGljYXRpb25zL3tpZH0SXgoETGlzdBIcLmFwaS5MaXN0QXBw", - "bGljYXRpb25zUmVxdWVzdBodLmFwaS5MaXN0QXBwbGljYXRpb25zUmVzcG9u", - "c2UiGYLT5JMCExIRL2FwaS9hcHBsaWNhdGlvbnMSiAEKEExpc3RJbnRlZ3Jh", - "dGlvbnMSHC5hcGkuTGlzdEludGVncmF0aW9uc1JlcXVlc3QaHS5hcGkuTGlz", - "dEludGVncmF0aW9uc1Jlc3BvbnNlIjeC0+STAjESLy9hcGkvYXBwbGljYXRp", - "b25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zEp8BChVDcmVhdGVI", - "dHRwSW50ZWdyYXRpb24SIS5hcGkuQ3JlYXRlSHR0cEludGVncmF0aW9uUmVx", - "dWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJLgtPkkwJFIkAvYXBpL2Fw", - "cGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVn", - "cmF0aW9ucy9odHRwOgEqEpMBChJHZXRIdHRwSW50ZWdyYXRpb24SHi5hcGku", - "R2V0SHR0cEludGVncmF0aW9uUmVxdWVzdBofLmFwaS5HZXRIdHRwSW50ZWdy", - "YXRpb25SZXNwb25zZSI8gtPkkwI2EjQvYXBpL2FwcGxpY2F0aW9ucy97YXBw", - "bGljYXRpb25faWR9L2ludGVncmF0aW9ucy9odHRwEp8BChVVcGRhdGVIdHRw", - "SW50ZWdyYXRpb24SIS5hcGkuVXBkYXRlSHR0cEludGVncmF0aW9uUmVxdWVz", - "dBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJLgtPkkwJFGkAvYXBpL2FwcGxp", + "bxobZ29vZ2xlL3Byb3RvYnVmL2VtcHR5LnByb3RvIqYBCgtBcHBsaWNhdGlv", + "bhIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMg", + "ASgJEhEKCXRlbmFudF9pZBgEIAEoCRIoCgR0YWdzGAUgAygLMhouYXBpLkFw", + "cGxpY2F0aW9uLlRhZ3NFbnRyeRorCglUYWdzRW50cnkSCwoDa2V5GAEgASgJ", + "Eg0KBXZhbHVlGAIgASgJOgI4ASKkAQoTQXBwbGljYXRpb25MaXN0SXRlbRIK", + "CgJpZBgBIAEoCRIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3Rv", + "YnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnBy", + "b3RvYnVmLlRpbWVzdGFtcBIMCgRuYW1lGAQgASgJEhMKC2Rlc2NyaXB0aW9u", + "GAUgASgJIkEKGENyZWF0ZUFwcGxpY2F0aW9uUmVxdWVzdBIlCgthcHBsaWNh", + "dGlvbhgBIAEoCzIQLmFwaS5BcHBsaWNhdGlvbiInChlDcmVhdGVBcHBsaWNh", + "dGlvblJlc3BvbnNlEgoKAmlkGAEgASgJIiMKFUdldEFwcGxpY2F0aW9uUmVx", + "dWVzdBIKCgJpZBgBIAEoCSK5AQoWR2V0QXBwbGljYXRpb25SZXNwb25zZRIl", + "CgthcHBsaWNhdGlvbhgBIAEoCzIQLmFwaS5BcHBsaWNhdGlvbhIuCgpjcmVh", + "dGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1", + "cGRhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIY", + "ChBtZWFzdXJlbWVudF9rZXlzGAQgAygJIkEKGFVwZGF0ZUFwcGxpY2F0aW9u", + "UmVxdWVzdBIlCgthcHBsaWNhdGlvbhgBIAEoCzIQLmFwaS5BcHBsaWNhdGlv", + "biImChhEZWxldGVBcHBsaWNhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiWwoX", + "TGlzdEFwcGxpY2F0aW9uc1JlcXVlc3QSDQoFbGltaXQYASABKA0SDgoGb2Zm", + "c2V0GAIgASgNEg4KBnNlYXJjaBgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAki", + "WQoYTGlzdEFwcGxpY2F0aW9uc1Jlc3BvbnNlEhMKC3RvdGFsX2NvdW50GAEg", + "ASgNEigKBnJlc3VsdBgCIAMoCzIYLmFwaS5BcHBsaWNhdGlvbkxpc3RJdGVt", + "IjEKF0xpc3RJbnRlZ3JhdGlvbnNSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lk", + "GAEgASgJIjkKE0ludGVncmF0aW9uTGlzdEl0ZW0SIgoEa2luZBgBIAEoDjIU", + "LmFwaS5JbnRlZ3JhdGlvbktpbmQiWQoYTGlzdEludGVncmF0aW9uc1Jlc3Bv", + "bnNlEhMKC3RvdGFsX2NvdW50GAEgASgNEigKBnJlc3VsdBgCIAMoCzIYLmFw", + "aS5JbnRlZ3JhdGlvbkxpc3RJdGVtIsoBCg9IdHRwSW50ZWdyYXRpb24SFgoO", + "YXBwbGljYXRpb25faWQYASABKAkSMgoHaGVhZGVycxgCIAMoCzIhLmFwaS5I", + "dHRwSW50ZWdyYXRpb24uSGVhZGVyc0VudHJ5Eh8KCGVuY29kaW5nGAMgASgO", + "Mg0uYXBpLkVuY29kaW5nEhoKEmV2ZW50X2VuZHBvaW50X3VybBgEIAEoCRou", + "CgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4", + "ASJJChxDcmVhdGVIdHRwSW50ZWdyYXRpb25SZXF1ZXN0EikKC2ludGVncmF0", + "aW9uGAEgASgLMhQuYXBpLkh0dHBJbnRlZ3JhdGlvbiIzChlHZXRIdHRwSW50", + "ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIkcKGkdl", + "dEh0dHBJbnRlZ3JhdGlvblJlc3BvbnNlEikKC2ludGVncmF0aW9uGAEgASgL", + "MhQuYXBpLkh0dHBJbnRlZ3JhdGlvbiJJChxVcGRhdGVIdHRwSW50ZWdyYXRp", + "b25SZXF1ZXN0EikKC2ludGVncmF0aW9uGAEgASgLMhQuYXBpLkh0dHBJbnRl", + "Z3JhdGlvbiI2ChxEZWxldGVIdHRwSW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFw", + "cGxpY2F0aW9uX2lkGAEgASgJIpUCChNJbmZsdXhEYkludGVncmF0aW9uEhYK", + "DmFwcGxpY2F0aW9uX2lkGAEgASgJEhAKCGVuZHBvaW50GAIgASgJEgoKAmRi", + "GAMgASgJEhAKCHVzZXJuYW1lGAQgASgJEhAKCHBhc3N3b3JkGAUgASgJEh0K", + "FXJldGVudGlvbl9wb2xpY3lfbmFtZRgGIAEoCRIpCglwcmVjaXNpb24YByAB", + "KA4yFi5hcGkuSW5mbHV4RGJQcmVjaXNpb24SJQoHdmVyc2lvbhgIIAEoDjIU", + "LmFwaS5JbmZsdXhEYlZlcnNpb24SDQoFdG9rZW4YCSABKAkSFAoMb3JnYW5p", + "emF0aW9uGAogASgJEg4KBmJ1Y2tldBgLIAEoCSJRCiBDcmVhdGVJbmZsdXhE", + "YkludGVncmF0aW9uUmVxdWVzdBItCgtpbnRlZ3JhdGlvbhgBIAEoCzIYLmFw", + "aS5JbmZsdXhEYkludGVncmF0aW9uIjcKHUdldEluZmx1eERiSW50ZWdyYXRp", + "b25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIk8KHkdldEluZmx1", + "eERiSW50ZWdyYXRpb25SZXNwb25zZRItCgtpbnRlZ3JhdGlvbhgBIAEoCzIY", + "LmFwaS5JbmZsdXhEYkludGVncmF0aW9uIlEKIFVwZGF0ZUluZmx1eERiSW50", + "ZWdyYXRpb25SZXF1ZXN0Ei0KC2ludGVncmF0aW9uGAEgASgLMhguYXBpLklu", + "Zmx1eERiSW50ZWdyYXRpb24iOgogRGVsZXRlSW5mbHV4RGJJbnRlZ3JhdGlv", + "blJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkiQAoWVGhpbmdzQm9h", + "cmRJbnRlZ3JhdGlvbhIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRIOCgZzZXJ2", + "ZXIYAiABKAkiVwojQ3JlYXRlVGhpbmdzQm9hcmRJbnRlZ3JhdGlvblJlcXVl", + "c3QSMAoLaW50ZWdyYXRpb24YASABKAsyGy5hcGkuVGhpbmdzQm9hcmRJbnRl", + "Z3JhdGlvbiI6CiBHZXRUaGluZ3NCb2FyZEludGVncmF0aW9uUmVxdWVzdBIW", + "Cg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJVCiFHZXRUaGluZ3NCb2FyZEludGVn", + "cmF0aW9uUmVzcG9uc2USMAoLaW50ZWdyYXRpb24YASABKAsyGy5hcGkuVGhp", + "bmdzQm9hcmRJbnRlZ3JhdGlvbiJXCiNVcGRhdGVUaGluZ3NCb2FyZEludGVn", + "cmF0aW9uUmVxdWVzdBIwCgtpbnRlZ3JhdGlvbhgBIAEoCzIbLmFwaS5UaGlu", + "Z3NCb2FyZEludGVncmF0aW9uIj0KI0RlbGV0ZVRoaW5nc0JvYXJkSW50ZWdy", + "YXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIkAKFE15RGV2", + "aWNlc0ludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEhAKCGVu", + "ZHBvaW50GAIgASgJIlMKIUNyZWF0ZU15RGV2aWNlc0ludGVncmF0aW9uUmVx", + "dWVzdBIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5NeURldmljZXNJbnRl", + "Z3JhdGlvbiI4Ch5HZXRNeURldmljZXNJbnRlZ3JhdGlvblJlcXVlc3QSFgoO", + "YXBwbGljYXRpb25faWQYASABKAkiUQofR2V0TXlEZXZpY2VzSW50ZWdyYXRp", + "b25SZXNwb25zZRIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5NeURldmlj", + "ZXNJbnRlZ3JhdGlvbiJTCiFVcGRhdGVNeURldmljZXNJbnRlZ3JhdGlvblJl", + "cXVlc3QSLgoLaW50ZWdyYXRpb24YASABKAsyGS5hcGkuTXlEZXZpY2VzSW50", + "ZWdyYXRpb24iOwohRGVsZXRlTXlEZXZpY2VzSW50ZWdyYXRpb25SZXF1ZXN0", + "EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJInoKFExvcmFDbG91ZEludGVncmF0", + "aW9uEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEkoKGm1vZGVtX2dlb2xvY2F0", + "aW9uX3NlcnZpY2VzGAIgASgLMiYuYXBpLkxvcmFDbG91ZE1vZGVtR2VvbG9j", + "YXRpb25TZXJ2aWNlcyLVAwohTG9yYUNsb3VkTW9kZW1HZW9sb2NhdGlvblNl", + "cnZpY2VzEg0KBXRva2VuGAEgASgJEhUKDW1vZGVtX2VuYWJsZWQYAiABKAgS", + "FwoPZm9yd2FyZF9mX3BvcnRzGBAgAygNEhgKEGduc3NfdXNlX3J4X3RpbWUY", + "BSABKAgSIQoZZ25zc191c2VfZ2F0ZXdheV9sb2NhdGlvbhgRIAEoCBIRCglw", + "YXJzZV90bHYYBiABKAgSHgoWZ2VvbG9jYXRpb25fYnVmZmVyX3R0bBgHIAEo", + "DRIjChtnZW9sb2NhdGlvbl9taW5fYnVmZmVyX3NpemUYCCABKA0SGAoQZ2Vv", + "bG9jYXRpb25fdGRvYRgJIAEoCBIYChBnZW9sb2NhdGlvbl9yc3NpGAogASgI", + "EhgKEGdlb2xvY2F0aW9uX2duc3MYCyABKAgSJgoeZ2VvbG9jYXRpb25fZ25z", + "c19wYXlsb2FkX2ZpZWxkGAwgASgJEiQKHGdlb2xvY2F0aW9uX2duc3NfdXNl", + "X3J4X3RpbWUYDSABKAgSGAoQZ2VvbG9jYXRpb25fd2lmaRgOIAEoCBImCh5n", + "ZW9sb2NhdGlvbl93aWZpX3BheWxvYWRfZmllbGQYDyABKAkiUwohQ3JlYXRl", + "TG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0Ei4KC2ludGVncmF0aW9uGAEg", + "ASgLMhkuYXBpLkxvcmFDbG91ZEludGVncmF0aW9uIjgKHkdldExvcmFDbG91", + "ZEludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJR", + "Ch9HZXRMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlc3BvbnNlEi4KC2ludGVncmF0", + "aW9uGAEgASgLMhkuYXBpLkxvcmFDbG91ZEludGVncmF0aW9uIlMKIVVwZGF0", + "ZUxvcmFDbG91ZEludGVncmF0aW9uUmVxdWVzdBIuCgtpbnRlZ3JhdGlvbhgB", + "IAEoCzIZLmFwaS5Mb3JhQ2xvdWRJbnRlZ3JhdGlvbiI7CiFEZWxldGVMb3Jh", + "Q2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASAB", + "KAkikQEKFEdjcFB1YlN1YkludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9uX2lk", + "GAEgASgJEh8KCGVuY29kaW5nGAIgASgOMg0uYXBpLkVuY29kaW5nEhgKEGNy", + "ZWRlbnRpYWxzX2ZpbGUYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRISCgp0", + "b3BpY19uYW1lGAUgASgJIlMKIUNyZWF0ZUdjcFB1YlN1YkludGVncmF0aW9u", + "UmVxdWVzdBIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5HY3BQdWJTdWJJ", + "bnRlZ3JhdGlvbiI4Ch5HZXRHY3BQdWJTdWJJbnRlZ3JhdGlvblJlcXVlc3QS", + "FgoOYXBwbGljYXRpb25faWQYASABKAkiUQofR2V0R2NwUHViU3ViSW50ZWdy", + "YXRpb25SZXNwb25zZRIuCgtpbnRlZ3JhdGlvbhgBIAEoCzIZLmFwaS5HY3BQ", + "dWJTdWJJbnRlZ3JhdGlvbiJTCiFVcGRhdGVHY3BQdWJTdWJJbnRlZ3JhdGlv", + "blJlcXVlc3QSLgoLaW50ZWdyYXRpb24YASABKAsyGS5hcGkuR2NwUHViU3Vi", + "SW50ZWdyYXRpb24iOwohRGVsZXRlR2NwUHViU3ViSW50ZWdyYXRpb25SZXF1", + "ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIqEBChFBd3NTbnNJbnRlZ3Jh", + "dGlvbhIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRIfCghlbmNvZGluZxgCIAEo", + "DjINLmFwaS5FbmNvZGluZxIOCgZyZWdpb24YAyABKAkSFQoNYWNjZXNzX2tl", + "eV9pZBgEIAEoCRIZChFzZWNyZXRfYWNjZXNzX2tleRgFIAEoCRIRCgl0b3Bp", + "Y19hcm4YBiABKAkiTQoeQ3JlYXRlQXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0", + "EisKC2ludGVncmF0aW9uGAEgASgLMhYuYXBpLkF3c1Nuc0ludGVncmF0aW9u", + "IjUKG0dldEF3c1Nuc0ludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBsaWNhdGlv", + "bl9pZBgBIAEoCSJLChxHZXRBd3NTbnNJbnRlZ3JhdGlvblJlc3BvbnNlEisK", + "C2ludGVncmF0aW9uGAEgASgLMhYuYXBpLkF3c1Nuc0ludGVncmF0aW9uIk0K", + "HlVwZGF0ZUF3c1Nuc0ludGVncmF0aW9uUmVxdWVzdBIrCgtpbnRlZ3JhdGlv", + "bhgBIAEoCzIWLmFwaS5Bd3NTbnNJbnRlZ3JhdGlvbiI4Ch5EZWxldGVBd3NT", + "bnNJbnRlZ3JhdGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAki", + "hgEKGkF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uEhYKDmFwcGxpY2F0aW9u", + "X2lkGAEgASgJEh8KCGVuY29kaW5nGAIgASgOMg0uYXBpLkVuY29kaW5nEhkK", + "EWNvbm5lY3Rpb25fc3RyaW5nGAMgASgJEhQKDHB1Ymxpc2hfbmFtZRgEIAEo", + "CSJfCidDcmVhdGVBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QS", + "NAoLaW50ZWdyYXRpb24YASABKAsyHy5hcGkuQXp1cmVTZXJ2aWNlQnVzSW50", + "ZWdyYXRpb24iPgokR2V0QXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXF1", + "ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIl0KJUdldEF6dXJlU2Vydmlj", + "ZUJ1c0ludGVncmF0aW9uUmVzcG9uc2USNAoLaW50ZWdyYXRpb24YASABKAsy", + "Hy5hcGkuQXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24iXwonVXBkYXRlQXp1", + "cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXF1ZXN0EjQKC2ludGVncmF0aW9u", + "GAEgASgLMh8uYXBpLkF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uIkEKJ0Rl", + "bGV0ZUF6dXJlU2VydmljZUJ1c0ludGVncmF0aW9uUmVxdWVzdBIWCg5hcHBs", + "aWNhdGlvbl9pZBgBIAEoCSJPChZQaWxvdFRoaW5nc0ludGVncmF0aW9uEhYK", + "DmFwcGxpY2F0aW9uX2lkGAEgASgJEg4KBnNlcnZlchgCIAEoCRINCgV0b2tl", + "bhgDIAEoCSJXCiNDcmVhdGVQaWxvdFRoaW5nc0ludGVncmF0aW9uUmVxdWVz", + "dBIwCgtpbnRlZ3JhdGlvbhgBIAEoCzIbLmFwaS5QaWxvdFRoaW5nc0ludGVn", + "cmF0aW9uIjoKIEdldFBpbG90VGhpbmdzSW50ZWdyYXRpb25SZXF1ZXN0EhYK", + "DmFwcGxpY2F0aW9uX2lkGAEgASgJIlUKIUdldFBpbG90VGhpbmdzSW50ZWdy", + "YXRpb25SZXNwb25zZRIwCgtpbnRlZ3JhdGlvbhgBIAEoCzIbLmFwaS5QaWxv", + "dFRoaW5nc0ludGVncmF0aW9uIlcKI1VwZGF0ZVBpbG90VGhpbmdzSW50ZWdy", + "YXRpb25SZXF1ZXN0EjAKC2ludGVncmF0aW9uGAEgASgLMhsuYXBpLlBpbG90", + "VGhpbmdzSW50ZWdyYXRpb24iPQojRGVsZXRlUGlsb3RUaGluZ3NJbnRlZ3Jh", + "dGlvblJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkifAoQSWZ0dHRJ", + "bnRlZ3JhdGlvbhIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRILCgNrZXkYAiAB", + "KAkSFQoNdXBsaW5rX3ZhbHVlcxgDIAMoCRIWCg5hcmJpdHJhcnlfanNvbhgE", + "IAEoCBIUCgxldmVudF9wcmVmaXgYBSABKAkiSwodQ3JlYXRlSWZ0dHRJbnRl", + "Z3JhdGlvblJlcXVlc3QSKgoLaW50ZWdyYXRpb24YASABKAsyFS5hcGkuSWZ0", + "dHRJbnRlZ3JhdGlvbiI0ChpHZXRJZnR0dEludGVncmF0aW9uUmVxdWVzdBIW", + "Cg5hcHBsaWNhdGlvbl9pZBgBIAEoCSJJChtHZXRJZnR0dEludGVncmF0aW9u", + "UmVzcG9uc2USKgoLaW50ZWdyYXRpb24YASABKAsyFS5hcGkuSWZ0dHRJbnRl", + "Z3JhdGlvbiJLCh1VcGRhdGVJZnR0dEludGVncmF0aW9uUmVxdWVzdBIqCgtp", + "bnRlZ3JhdGlvbhgBIAEoCzIVLmFwaS5JZnR0dEludGVncmF0aW9uIjcKHURl", + "bGV0ZUlmdHR0SW50ZWdyYXRpb25SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lk", + "GAEgASgJIkkKL0dlbmVyYXRlTXF0dEludGVncmF0aW9uQ2xpZW50Q2VydGlm", + "aWNhdGVSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJIpYBCjBHZW5l", + "cmF0ZU1xdHRJbnRlZ3JhdGlvbkNsaWVudENlcnRpZmljYXRlUmVzcG9uc2US", + "EAoIdGxzX2NlcnQYASABKAkSDwoHdGxzX2tleRgCIAEoCRIPCgdjYV9jZXJ0", + "GAMgASgJEi4KCmV4cGlyZXNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYu", + "VGltZXN0YW1wKiIKCEVuY29kaW5nEggKBEpTT04QABIMCghQUk9UT0JVRhAB", + "Kr8BCg9JbnRlZ3JhdGlvbktpbmQSCAoESFRUUBAAEg0KCUlORkxVWF9EQhAB", + "EhAKDFRISU5HU19CT0FSRBACEg4KCk1ZX0RFVklDRVMQAxIOCgpMT1JBX0NM", + "T1VEEAQSDwoLR0NQX1BVQl9TVUIQBRILCgdBV1NfU05TEAYSFQoRQVpVUkVf", + "U0VSVklDRV9CVVMQBxIQCgxQSUxPVF9USElOR1MQCBIPCgtNUVRUX0dMT0JB", + "TBAJEgkKBUlGVFRUEAoqPwoRSW5mbHV4RGJQcmVjaXNpb24SBgoCTlMQABIF", + "CgFVEAESBgoCTVMQAhIFCgFTEAMSBQoBTRAEEgUKAUgQBSoxCg9JbmZsdXhE", + "YlZlcnNpb24SDgoKSU5GTFVYREJfMRAAEg4KCklORkxVWERCXzIQATK4PAoS", + "QXBwbGljYXRpb25TZXJ2aWNlEmUKBkNyZWF0ZRIdLmFwaS5DcmVhdGVBcHBs", + "aWNhdGlvblJlcXVlc3QaHi5hcGkuQ3JlYXRlQXBwbGljYXRpb25SZXNwb25z", + "ZSIcgtPkkwIWIhEvYXBpL2FwcGxpY2F0aW9uczoBKhJeCgNHZXQSGi5hcGku", + "R2V0QXBwbGljYXRpb25SZXF1ZXN0GhsuYXBpLkdldEFwcGxpY2F0aW9uUmVz", + "cG9uc2UiHoLT5JMCGBIWL2FwaS9hcHBsaWNhdGlvbnMve2lkfRJuCgZVcGRh", + "dGUSHS5hcGkuVXBkYXRlQXBwbGljYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnBy", + "b3RvYnVmLkVtcHR5Ii2C0+STAicaIi9hcGkvYXBwbGljYXRpb25zL3thcHBs", + "aWNhdGlvbi5pZH06ASoSXwoGRGVsZXRlEh0uYXBpLkRlbGV0ZUFwcGxpY2F0", + "aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIegtPkkwIYKhYv", + "YXBpL2FwcGxpY2F0aW9ucy97aWR9El4KBExpc3QSHC5hcGkuTGlzdEFwcGxp", + "Y2F0aW9uc1JlcXVlc3QaHS5hcGkuTGlzdEFwcGxpY2F0aW9uc1Jlc3BvbnNl", + "IhmC0+STAhMSES9hcGkvYXBwbGljYXRpb25zEogBChBMaXN0SW50ZWdyYXRp", + "b25zEhwuYXBpLkxpc3RJbnRlZ3JhdGlvbnNSZXF1ZXN0Gh0uYXBpLkxpc3RJ", + "bnRlZ3JhdGlvbnNSZXNwb25zZSI3gtPkkwIxEi8vYXBpL2FwcGxpY2F0aW9u", + "cy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucxKfAQoVQ3JlYXRlSHR0", + "cEludGVncmF0aW9uEiEuYXBpLkNyZWF0ZUh0dHBJbnRlZ3JhdGlvblJlcXVl", + "c3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiS4LT5JMCRSJAL2FwaS9hcHBs", + "aWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3Jh", + "dGlvbnMvaHR0cDoBKhKTAQoSR2V0SHR0cEludGVncmF0aW9uEh4uYXBpLkdl", + "dEh0dHBJbnRlZ3JhdGlvblJlcXVlc3QaHy5hcGkuR2V0SHR0cEludGVncmF0", + "aW9uUmVzcG9uc2UiPILT5JMCNhI0L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxp", + "Y2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvaHR0cBKfAQoVVXBkYXRlSHR0cElu", + "dGVncmF0aW9uEiEuYXBpLlVwZGF0ZUh0dHBJbnRlZ3JhdGlvblJlcXVlc3Qa", + "Fi5nb29nbGUucHJvdG9idWYuRW1wdHkiS4LT5JMCRRpAL2FwaS9hcHBsaWNh", + "dGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlv", + "bnMvaHR0cDoBKhKQAQoVRGVsZXRlSHR0cEludGVncmF0aW9uEiEuYXBpLkRl", + "bGV0ZUh0dHBJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYu", + "RW1wdHkiPILT5JMCNio0L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9u", + "X2lkfS9pbnRlZ3JhdGlvbnMvaHR0cBKrAQoZQ3JlYXRlSW5mbHV4RGJJbnRl", + "Z3JhdGlvbhIlLmFwaS5DcmVhdGVJbmZsdXhEYkludGVncmF0aW9uUmVxdWVz", + "dBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJPgtPkkwJJIkQvYXBpL2FwcGxp", "Y2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0", - "aW9ucy9odHRwOgEqEpABChVEZWxldGVIdHRwSW50ZWdyYXRpb24SIS5hcGku", - "RGVsZXRlSHR0cEludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1", - "Zi5FbXB0eSI8gtPkkwI2KjQvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRp", - "b25faWR9L2ludGVncmF0aW9ucy9odHRwEqsBChlDcmVhdGVJbmZsdXhEYklu", - "dGVncmF0aW9uEiUuYXBpLkNyZWF0ZUluZmx1eERiSW50ZWdyYXRpb25SZXF1", - "ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ik+C0+STAkkiRC9hcGkvYXBw", - "bGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdy", - "YXRpb25zL2luZmx1eGRiOgEqEqMBChZHZXRJbmZsdXhEYkludGVncmF0aW9u", - "EiIuYXBpLkdldEluZmx1eERiSW50ZWdyYXRpb25SZXF1ZXN0GiMuYXBpLkdl", - "dEluZmx1eERiSW50ZWdyYXRpb25SZXNwb25zZSJAgtPkkwI6EjgvYXBpL2Fw", - "cGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9pbmZs", - "dXhkYhKrAQoZVXBkYXRlSW5mbHV4RGJJbnRlZ3JhdGlvbhIlLmFwaS5VcGRh", - "dGVJbmZsdXhEYkludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1", - "Zi5FbXB0eSJPgtPkkwJJGkQvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRp", - "b24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9pbmZsdXhkYjoBKhKc", - "AQoZRGVsZXRlSW5mbHV4RGJJbnRlZ3JhdGlvbhIlLmFwaS5EZWxldGVJbmZs", - "dXhEYkludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0", - "eSJAgtPkkwI6KjgvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9", - "L2ludGVncmF0aW9ucy9pbmZsdXhkYhK0AQocQ3JlYXRlVGhpbmdzQm9hcmRJ", - "bnRlZ3JhdGlvbhIoLmFwaS5DcmVhdGVUaGluZ3NCb2FyZEludGVncmF0aW9u", - "UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJSgtPkkwJMIkcvYXBp", - "L2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2lu", - "dGVncmF0aW9ucy90aGluZ3Nib2FyZDoBKhKvAQoZR2V0VGhpbmdzQm9hcmRJ", - "bnRlZ3JhdGlvbhIlLmFwaS5HZXRUaGluZ3NCb2FyZEludGVncmF0aW9uUmVx", - "dWVzdBomLmFwaS5HZXRUaGluZ3NCb2FyZEludGVncmF0aW9uUmVzcG9uc2Ui", - "Q4LT5JMCPRI7L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9p", - "bnRlZ3JhdGlvbnMvdGhpbmdzYm9hcmQStAEKHFVwZGF0ZVRoaW5nc0JvYXJk", - "SW50ZWdyYXRpb24SKC5hcGkuVXBkYXRlVGhpbmdzQm9hcmRJbnRlZ3JhdGlv", - "blJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUoLT5JMCTBpHL2Fw", - "aS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9p", - "bnRlZ3JhdGlvbnMvdGhpbmdzYm9hcmQ6ASoSpQEKHERlbGV0ZVRoaW5nc0Jv", - "YXJkSW50ZWdyYXRpb24SKC5hcGkuRGVsZXRlVGhpbmdzQm9hcmRJbnRlZ3Jh", - "dGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiQ4LT5JMCPSo7", - "L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlv", - "bnMvdGhpbmdzYm9hcmQSrgEKGkNyZWF0ZU15RGV2aWNlc0ludGVncmF0aW9u", - "EiYuYXBpLkNyZWF0ZU15RGV2aWNlc0ludGVncmF0aW9uUmVxdWVzdBoWLmdv", - "b2dsZS5wcm90b2J1Zi5FbXB0eSJQgtPkkwJKIkUvYXBpL2FwcGxpY2F0aW9u", - "cy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9t", - "eWRldmljZXM6ASoSpwEKF0dldE15RGV2aWNlc0ludGVncmF0aW9uEiMuYXBp", - "LkdldE15RGV2aWNlc0ludGVncmF0aW9uUmVxdWVzdBokLmFwaS5HZXRNeURl", - "dmljZXNJbnRlZ3JhdGlvblJlc3BvbnNlIkGC0+STAjsSOS9hcGkvYXBwbGlj", - "YXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL215ZGV2aWNl", - "cxKuAQoaVXBkYXRlTXlEZXZpY2VzSW50ZWdyYXRpb24SJi5hcGkuVXBkYXRl", - "TXlEZXZpY2VzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVm", - "LkVtcHR5IlCC0+STAkoaRS9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlv", - "bi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL215ZGV2aWNlczoBKhKf", - "AQoaRGVsZXRlTXlEZXZpY2VzSW50ZWdyYXRpb24SJi5hcGkuRGVsZXRlTXlE", - "ZXZpY2VzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVt", - "cHR5IkGC0+STAjsqOS9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9p", - "ZH0vaW50ZWdyYXRpb25zL215ZGV2aWNlcxKuAQoaQ3JlYXRlTG9yYUNsb3Vk", - "SW50ZWdyYXRpb24SJi5hcGkuQ3JlYXRlTG9yYUNsb3VkSW50ZWdyYXRpb25S", - "ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlCC0+STAkoiRS9hcGkv", + "aW9ucy9pbmZsdXhkYjoBKhKjAQoWR2V0SW5mbHV4RGJJbnRlZ3JhdGlvbhIi", + "LmFwaS5HZXRJbmZsdXhEYkludGVncmF0aW9uUmVxdWVzdBojLmFwaS5HZXRJ", + "bmZsdXhEYkludGVncmF0aW9uUmVzcG9uc2UiQILT5JMCOhI4L2FwaS9hcHBs", + "aWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvaW5mbHV4", + "ZGISqwEKGVVwZGF0ZUluZmx1eERiSW50ZWdyYXRpb24SJS5hcGkuVXBkYXRl", + "SW5mbHV4RGJJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYu", + "RW1wdHkiT4LT5JMCSRpEL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9u", + "LmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvaW5mbHV4ZGI6ASoSnAEK", + "GURlbGV0ZUluZmx1eERiSW50ZWdyYXRpb24SJS5hcGkuRGVsZXRlSW5mbHV4", + "RGJJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHki", + "QILT5JMCOio4L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9p", + "bnRlZ3JhdGlvbnMvaW5mbHV4ZGIStAEKHENyZWF0ZVRoaW5nc0JvYXJkSW50", + "ZWdyYXRpb24SKC5hcGkuQ3JlYXRlVGhpbmdzQm9hcmRJbnRlZ3JhdGlvblJl", + "cXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUoLT5JMCTCJHL2FwaS9h", + "cHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRl", + "Z3JhdGlvbnMvdGhpbmdzYm9hcmQ6ASoSrwEKGUdldFRoaW5nc0JvYXJkSW50", + "ZWdyYXRpb24SJS5hcGkuR2V0VGhpbmdzQm9hcmRJbnRlZ3JhdGlvblJlcXVl", + "c3QaJi5hcGkuR2V0VGhpbmdzQm9hcmRJbnRlZ3JhdGlvblJlc3BvbnNlIkOC", + "0+STAj0SOy9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50", + "ZWdyYXRpb25zL3RoaW5nc2JvYXJkErQBChxVcGRhdGVUaGluZ3NCb2FyZElu", + "dGVncmF0aW9uEiguYXBpLlVwZGF0ZVRoaW5nc0JvYXJkSW50ZWdyYXRpb25S", + "ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlKC0+STAkwaRy9hcGkv", "YXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50", - "ZWdyYXRpb25zL2xvcmFjbG91ZDoBKhKnAQoXR2V0TG9yYUNsb3VkSW50ZWdy", - "YXRpb24SIy5hcGkuR2V0TG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0GiQu", - "YXBpLkdldExvcmFDbG91ZEludGVncmF0aW9uUmVzcG9uc2UiQYLT5JMCOxI5", - "L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlv", - "bnMvbG9yYWNsb3VkEq4BChpVcGRhdGVMb3JhQ2xvdWRJbnRlZ3JhdGlvbhIm", - "LmFwaS5VcGRhdGVMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29n", - "bGUucHJvdG9idWYuRW1wdHkiUILT5JMCShpFL2FwaS9hcHBsaWNhdGlvbnMv", - "e2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbG9y", - "YWNsb3VkOgEqEp8BChpEZWxldGVMb3JhQ2xvdWRJbnRlZ3JhdGlvbhImLmFw", - "aS5EZWxldGVMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUu", - "cHJvdG9idWYuRW1wdHkiQYLT5JMCOyo5L2FwaS9hcHBsaWNhdGlvbnMve2Fw", - "cGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbG9yYWNsb3VkErABChpDcmVh", - "dGVHY3BQdWJTdWJJbnRlZ3JhdGlvbhImLmFwaS5DcmVhdGVHY3BQdWJTdWJJ", - "bnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUoLT", - "5JMCTCJHL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0", - "aW9uX2lkfS9pbnRlZ3JhdGlvbnMvZ2NwLXB1Yi1zdWI6ASoSqQEKF0dldEdj", - "cFB1YlN1YkludGVncmF0aW9uEiMuYXBpLkdldEdjcFB1YlN1YkludGVncmF0", - "aW9uUmVxdWVzdBokLmFwaS5HZXRHY3BQdWJTdWJJbnRlZ3JhdGlvblJlc3Bv", - "bnNlIkOC0+STAj0SOy9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9p", - "ZH0vaW50ZWdyYXRpb25zL2djcC1wdWItc3ViErABChpVcGRhdGVHY3BQdWJT", - "dWJJbnRlZ3JhdGlvbhImLmFwaS5VcGRhdGVHY3BQdWJTdWJJbnRlZ3JhdGlv", - "blJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUoLT5JMCTBpHL2Fw", - "aS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9p", - "bnRlZ3JhdGlvbnMvZ2NwLXB1Yi1zdWI6ASoSoQEKGkRlbGV0ZUdjcFB1YlN1", - "YkludGVncmF0aW9uEiYuYXBpLkRlbGV0ZUdjcFB1YlN1YkludGVncmF0aW9u", - "UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJDgtPkkwI9KjsvYXBp", - "L2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9n", - "Y3AtcHViLXN1YhKmAQoXQ3JlYXRlQXdzU25zSW50ZWdyYXRpb24SIy5hcGku", - "Q3JlYXRlQXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3Rv", - "YnVmLkVtcHR5Ik6C0+STAkgiQy9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3Jh", - "dGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2F3cy1zbnM6ASoS", - "nAEKFEdldEF3c1Nuc0ludGVncmF0aW9uEiAuYXBpLkdldEF3c1Nuc0ludGVn", - "cmF0aW9uUmVxdWVzdBohLmFwaS5HZXRBd3NTbnNJbnRlZ3JhdGlvblJlc3Bv", - "bnNlIj+C0+STAjkSNy9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9p", - "ZH0vaW50ZWdyYXRpb25zL2F3cy1zbnMSpgEKF1VwZGF0ZUF3c1Nuc0ludGVn", - "cmF0aW9uEiMuYXBpLlVwZGF0ZUF3c1Nuc0ludGVncmF0aW9uUmVxdWVzdBoW", - "Lmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJOgtPkkwJIGkMvYXBpL2FwcGxpY2F0", - "aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9u", - "cy9hd3Mtc25zOgEqEpcBChdEZWxldGVBd3NTbnNJbnRlZ3JhdGlvbhIjLmFw", - "aS5EZWxldGVBd3NTbnNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJv", - "dG9idWYuRW1wdHkiP4LT5JMCOSo3L2FwaS9hcHBsaWNhdGlvbnMve2FwcGxp", - "Y2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvYXdzLXNucxLCAQogQ3JlYXRlQXp1", - "cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24SLC5hcGkuQ3JlYXRlQXp1cmVTZXJ2", - "aWNlQnVzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVt", - "cHR5IliC0+STAlIiTS9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5h", - "cHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2F6dXJlLXNlcnZpY2UtYnVz", - "OgEqEsEBCh1HZXRBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbhIpLmFwaS5H", - "ZXRBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QaKi5hcGkuR2V0", - "QXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXNwb25zZSJJgtPkkwJDEkEv", - "YXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9u", - "cy9henVyZS1zZXJ2aWNlLWJ1cxLCAQogVXBkYXRlQXp1cmVTZXJ2aWNlQnVz", - "SW50ZWdyYXRpb24SLC5hcGkuVXBkYXRlQXp1cmVTZXJ2aWNlQnVzSW50ZWdy", - "YXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IliC0+STAlIa", - "TS9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9p", - "ZH0vaW50ZWdyYXRpb25zL2F6dXJlLXNlcnZpY2UtYnVzOgEqErMBCiBEZWxl", - "dGVBenVyZVNlcnZpY2VCdXNJbnRlZ3JhdGlvbhIsLmFwaS5EZWxldGVBenVy", - "ZVNlcnZpY2VCdXNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9i", - "dWYuRW1wdHkiSYLT5JMCQypBL2FwaS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0", - "aW9uX2lkfS9pbnRlZ3JhdGlvbnMvYXp1cmUtc2VydmljZS1idXMStQEKHENy", - "ZWF0ZVBpbG90VGhpbmdzSW50ZWdyYXRpb24SKC5hcGkuQ3JlYXRlUGlsb3RU", - "aGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1w", - "dHkiU4LT5JMCTSJIL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFw", - "cGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvcGlsb3QtdGhpbmdzOgEqErAB", - "ChlHZXRQaWxvdFRoaW5nc0ludGVncmF0aW9uEiUuYXBpLkdldFBpbG90VGhp", - "bmdzSW50ZWdyYXRpb25SZXF1ZXN0GiYuYXBpLkdldFBpbG90VGhpbmdzSW50", - "ZWdyYXRpb25SZXNwb25zZSJEgtPkkwI+EjwvYXBpL2FwcGxpY2F0aW9ucy97", - "YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9waWxvdC10aGluZ3MStQEK", - "HFVwZGF0ZVBpbG90VGhpbmdzSW50ZWdyYXRpb24SKC5hcGkuVXBkYXRlUGls", - "b3RUaGluZ3NJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYu", - "RW1wdHkiU4LT5JMCTRpIL2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9u", - "LmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvcGlsb3QtdGhpbmdzOgEq", - "EqYBChxEZWxldGVQaWxvdFRoaW5nc0ludGVncmF0aW9uEiguYXBpLkRlbGV0", - "ZVBpbG90VGhpbmdzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3Rv", - "YnVmLkVtcHR5IkSC0+STAj4qPC9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNh", - "dGlvbl9pZH0vaW50ZWdyYXRpb25zL3BpbG90LXRoaW5ncxKiAQoWQ3JlYXRl", - "SWZ0dHRJbnRlZ3JhdGlvbhIiLmFwaS5DcmVhdGVJZnR0dEludGVncmF0aW9u", - "UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJMgtPkkwJGIkEvYXBp", - "L2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2lu", - "dGVncmF0aW9ucy9pZnR0dDoBKhKXAQoTR2V0SWZ0dHRJbnRlZ3JhdGlvbhIf", - "LmFwaS5HZXRJZnR0dEludGVncmF0aW9uUmVxdWVzdBogLmFwaS5HZXRJZnR0", - "dEludGVncmF0aW9uUmVzcG9uc2UiPYLT5JMCNxI1L2FwaS9hcHBsaWNhdGlv", - "bnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvaWZ0dHQSogEKFlVw", - "ZGF0ZUlmdHR0SW50ZWdyYXRpb24SIi5hcGkuVXBkYXRlSWZ0dHRJbnRlZ3Jh", - "dGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiTILT5JMCRhpB", - "L2FwaS9hcHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lk", - "fS9pbnRlZ3JhdGlvbnMvaWZ0dHQ6ASoSkwEKFkRlbGV0ZUlmdHR0SW50ZWdy", - "YXRpb24SIi5hcGkuRGVsZXRlSWZ0dHRJbnRlZ3JhdGlvblJlcXVlc3QaFi5n", - "b29nbGUucHJvdG9idWYuRW1wdHkiPYLT5JMCNyo1L2FwaS9hcHBsaWNhdGlv", - "bnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvaWZ0dHQS4QEKKEdl", - "bmVyYXRlTXF0dEludGVncmF0aW9uQ2xpZW50Q2VydGlmaWNhdGUSNC5hcGku", - "R2VuZXJhdGVNcXR0SW50ZWdyYXRpb25DbGllbnRDZXJ0aWZpY2F0ZVJlcXVl", - "c3QaNS5hcGkuR2VuZXJhdGVNcXR0SW50ZWdyYXRpb25DbGllbnRDZXJ0aWZp", - "Y2F0ZVJlc3BvbnNlIkiC0+STAkIiQC9hcGkvYXBwbGljYXRpb25zL3thcHBs", - "aWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL21xdHQvY2VydGlmaWNhdGVCaAoR", - "aW8uY2hpcnBzdGFjay5hcGlCEEFwcGxpY2F0aW9uUHJvdG9QAVouZ2l0aHVi", - "LmNvbS9jaGlycHN0YWNrL2NoaXJwc3RhY2svYXBpL2dvL3Y0L2FwaaoCDkNo", - "aXJwc3RhY2suQXBpYgZwcm90bzM=")); + "ZWdyYXRpb25zL3RoaW5nc2JvYXJkOgEqEqUBChxEZWxldGVUaGluZ3NCb2Fy", + "ZEludGVncmF0aW9uEiguYXBpLkRlbGV0ZVRoaW5nc0JvYXJkSW50ZWdyYXRp", + "b25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkOC0+STAj0qOy9h", + "cGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25z", + "L3RoaW5nc2JvYXJkEq4BChpDcmVhdGVNeURldmljZXNJbnRlZ3JhdGlvbhIm", + "LmFwaS5DcmVhdGVNeURldmljZXNJbnRlZ3JhdGlvblJlcXVlc3QaFi5nb29n", + "bGUucHJvdG9idWYuRW1wdHkiUILT5JMCSiJFL2FwaS9hcHBsaWNhdGlvbnMv", + "e2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvbXlk", + "ZXZpY2VzOgEqEqcBChdHZXRNeURldmljZXNJbnRlZ3JhdGlvbhIjLmFwaS5H", + "ZXRNeURldmljZXNJbnRlZ3JhdGlvblJlcXVlc3QaJC5hcGkuR2V0TXlEZXZp", + "Y2VzSW50ZWdyYXRpb25SZXNwb25zZSJBgtPkkwI7EjkvYXBpL2FwcGxpY2F0", + "aW9ucy97YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9teWRldmljZXMS", + "rgEKGlVwZGF0ZU15RGV2aWNlc0ludGVncmF0aW9uEiYuYXBpLlVwZGF0ZU15", + "RGV2aWNlc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5F", + "bXB0eSJQgtPkkwJKGkUvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24u", + "YXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9teWRldmljZXM6ASoSnwEK", + "GkRlbGV0ZU15RGV2aWNlc0ludGVncmF0aW9uEiYuYXBpLkRlbGV0ZU15RGV2", + "aWNlc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0", + "eSJBgtPkkwI7KjkvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9", + "L2ludGVncmF0aW9ucy9teWRldmljZXMSrgEKGkNyZWF0ZUxvcmFDbG91ZElu", + "dGVncmF0aW9uEiYuYXBpLkNyZWF0ZUxvcmFDbG91ZEludGVncmF0aW9uUmVx", + "dWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJQgtPkkwJKIkUvYXBpL2Fw", + "cGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9L2ludGVn", + "cmF0aW9ucy9sb3JhY2xvdWQ6ASoSpwEKF0dldExvcmFDbG91ZEludGVncmF0", + "aW9uEiMuYXBpLkdldExvcmFDbG91ZEludGVncmF0aW9uUmVxdWVzdBokLmFw", + "aS5HZXRMb3JhQ2xvdWRJbnRlZ3JhdGlvblJlc3BvbnNlIkGC0+STAjsSOS9h", + "cGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25z", + "L2xvcmFjbG91ZBKuAQoaVXBkYXRlTG9yYUNsb3VkSW50ZWdyYXRpb24SJi5h", + "cGkuVXBkYXRlTG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xl", + "LnByb3RvYnVmLkVtcHR5IlCC0+STAkoaRS9hcGkvYXBwbGljYXRpb25zL3tp", + "bnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2xvcmFj", + "bG91ZDoBKhKfAQoaRGVsZXRlTG9yYUNsb3VkSW50ZWdyYXRpb24SJi5hcGku", + "RGVsZXRlTG9yYUNsb3VkSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnBy", + "b3RvYnVmLkVtcHR5IkGC0+STAjsqOS9hcGkvYXBwbGljYXRpb25zL3thcHBs", + "aWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2xvcmFjbG91ZBKwAQoaQ3JlYXRl", + "R2NwUHViU3ViSW50ZWdyYXRpb24SJi5hcGkuQ3JlYXRlR2NwUHViU3ViSW50", + "ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlKC0+ST", + "AkwiRy9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlv", + "bl9pZH0vaW50ZWdyYXRpb25zL2djcC1wdWItc3ViOgEqEqkBChdHZXRHY3BQ", + "dWJTdWJJbnRlZ3JhdGlvbhIjLmFwaS5HZXRHY3BQdWJTdWJJbnRlZ3JhdGlv", + "blJlcXVlc3QaJC5hcGkuR2V0R2NwUHViU3ViSW50ZWdyYXRpb25SZXNwb25z", + "ZSJDgtPkkwI9EjsvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9", + "L2ludGVncmF0aW9ucy9nY3AtcHViLXN1YhKwAQoaVXBkYXRlR2NwUHViU3Vi", + "SW50ZWdyYXRpb24SJi5hcGkuVXBkYXRlR2NwUHViU3ViSW50ZWdyYXRpb25S", + "ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IlKC0+STAkwaRy9hcGkv", + "YXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0vaW50", + "ZWdyYXRpb25zL2djcC1wdWItc3ViOgEqEqEBChpEZWxldGVHY3BQdWJTdWJJ", + "bnRlZ3JhdGlvbhImLmFwaS5EZWxldGVHY3BQdWJTdWJJbnRlZ3JhdGlvblJl", + "cXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiQ4LT5JMCPSo7L2FwaS9h", + "cHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvZ2Nw", + "LXB1Yi1zdWISpgEKF0NyZWF0ZUF3c1Nuc0ludGVncmF0aW9uEiMuYXBpLkNy", + "ZWF0ZUF3c1Nuc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1", + "Zi5FbXB0eSJOgtPkkwJIIkMvYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRp", + "b24uYXBwbGljYXRpb25faWR9L2ludGVncmF0aW9ucy9hd3Mtc25zOgEqEpwB", + "ChRHZXRBd3NTbnNJbnRlZ3JhdGlvbhIgLmFwaS5HZXRBd3NTbnNJbnRlZ3Jh", + "dGlvblJlcXVlc3QaIS5hcGkuR2V0QXdzU25zSW50ZWdyYXRpb25SZXNwb25z", + "ZSI/gtPkkwI5EjcvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRpb25faWR9", + "L2ludGVncmF0aW9ucy9hd3Mtc25zEqYBChdVcGRhdGVBd3NTbnNJbnRlZ3Jh", + "dGlvbhIjLmFwaS5VcGRhdGVBd3NTbnNJbnRlZ3JhdGlvblJlcXVlc3QaFi5n", + "b29nbGUucHJvdG9idWYuRW1wdHkiToLT5JMCSBpDL2FwaS9hcHBsaWNhdGlv", + "bnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMv", + "YXdzLXNuczoBKhKXAQoXRGVsZXRlQXdzU25zSW50ZWdyYXRpb24SIy5hcGku", + "RGVsZXRlQXdzU25zSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3Rv", + "YnVmLkVtcHR5Ij+C0+STAjkqNy9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNh", + "dGlvbl9pZH0vaW50ZWdyYXRpb25zL2F3cy1zbnMSwgEKIENyZWF0ZUF6dXJl", + "U2VydmljZUJ1c0ludGVncmF0aW9uEiwuYXBpLkNyZWF0ZUF6dXJlU2Vydmlj", + "ZUJ1c0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0", + "eSJYgtPkkwJSIk0vYXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBw", + "bGljYXRpb25faWR9L2ludGVncmF0aW9ucy9henVyZS1zZXJ2aWNlLWJ1czoB", + "KhLBAQodR2V0QXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24SKS5hcGkuR2V0", + "QXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXF1ZXN0GiouYXBpLkdldEF6", + "dXJlU2VydmljZUJ1c0ludGVncmF0aW9uUmVzcG9uc2UiSYLT5JMCQxJBL2Fw", + "aS9hcHBsaWNhdGlvbnMve2FwcGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMv", + "YXp1cmUtc2VydmljZS1idXMSwgEKIFVwZGF0ZUF6dXJlU2VydmljZUJ1c0lu", + "dGVncmF0aW9uEiwuYXBpLlVwZGF0ZUF6dXJlU2VydmljZUJ1c0ludGVncmF0", + "aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJYgtPkkwJSGk0v", + "YXBpL2FwcGxpY2F0aW9ucy97aW50ZWdyYXRpb24uYXBwbGljYXRpb25faWR9", + "L2ludGVncmF0aW9ucy9henVyZS1zZXJ2aWNlLWJ1czoBKhKzAQogRGVsZXRl", + "QXp1cmVTZXJ2aWNlQnVzSW50ZWdyYXRpb24SLC5hcGkuRGVsZXRlQXp1cmVT", + "ZXJ2aWNlQnVzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVm", + "LkVtcHR5IkmC0+STAkMqQS9hcGkvYXBwbGljYXRpb25zL3thcHBsaWNhdGlv", + "bl9pZH0vaW50ZWdyYXRpb25zL2F6dXJlLXNlcnZpY2UtYnVzErUBChxDcmVh", + "dGVQaWxvdFRoaW5nc0ludGVncmF0aW9uEiguYXBpLkNyZWF0ZVBpbG90VGhp", + "bmdzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5", + "IlOC0+STAk0iSC9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBs", + "aWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL3BpbG90LXRoaW5nczoBKhKwAQoZ", + "R2V0UGlsb3RUaGluZ3NJbnRlZ3JhdGlvbhIlLmFwaS5HZXRQaWxvdFRoaW5n", + "c0ludGVncmF0aW9uUmVxdWVzdBomLmFwaS5HZXRQaWxvdFRoaW5nc0ludGVn", + "cmF0aW9uUmVzcG9uc2UiRILT5JMCPhI8L2FwaS9hcHBsaWNhdGlvbnMve2Fw", + "cGxpY2F0aW9uX2lkfS9pbnRlZ3JhdGlvbnMvcGlsb3QtdGhpbmdzErUBChxV", + "cGRhdGVQaWxvdFRoaW5nc0ludGVncmF0aW9uEiguYXBpLlVwZGF0ZVBpbG90", + "VGhpbmdzSW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVt", + "cHR5IlOC0+STAk0aSC9hcGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5h", + "cHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL3BpbG90LXRoaW5nczoBKhKm", + "AQocRGVsZXRlUGlsb3RUaGluZ3NJbnRlZ3JhdGlvbhIoLmFwaS5EZWxldGVQ", + "aWxvdFRoaW5nc0ludGVncmF0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1", + "Zi5FbXB0eSJEgtPkkwI+KjwvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGljYXRp", + "b25faWR9L2ludGVncmF0aW9ucy9waWxvdC10aGluZ3MSogEKFkNyZWF0ZUlm", + "dHR0SW50ZWdyYXRpb24SIi5hcGkuQ3JlYXRlSWZ0dHRJbnRlZ3JhdGlvblJl", + "cXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiTILT5JMCRiJBL2FwaS9h", + "cHBsaWNhdGlvbnMve2ludGVncmF0aW9uLmFwcGxpY2F0aW9uX2lkfS9pbnRl", + "Z3JhdGlvbnMvaWZ0dHQ6ASoSlwEKE0dldElmdHR0SW50ZWdyYXRpb24SHy5h", + "cGkuR2V0SWZ0dHRJbnRlZ3JhdGlvblJlcXVlc3QaIC5hcGkuR2V0SWZ0dHRJ", + "bnRlZ3JhdGlvblJlc3BvbnNlIj2C0+STAjcSNS9hcGkvYXBwbGljYXRpb25z", + "L3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2lmdHR0EqIBChZVcGRh", + "dGVJZnR0dEludGVncmF0aW9uEiIuYXBpLlVwZGF0ZUlmdHR0SW50ZWdyYXRp", + "b25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkyC0+STAkYaQS9h", + "cGkvYXBwbGljYXRpb25zL3tpbnRlZ3JhdGlvbi5hcHBsaWNhdGlvbl9pZH0v", + "aW50ZWdyYXRpb25zL2lmdHR0OgEqEpMBChZEZWxldGVJZnR0dEludGVncmF0", + "aW9uEiIuYXBpLkRlbGV0ZUlmdHR0SW50ZWdyYXRpb25SZXF1ZXN0GhYuZ29v", + "Z2xlLnByb3RvYnVmLkVtcHR5Ij2C0+STAjcqNS9hcGkvYXBwbGljYXRpb25z", + "L3thcHBsaWNhdGlvbl9pZH0vaW50ZWdyYXRpb25zL2lmdHR0EuEBCihHZW5l", + "cmF0ZU1xdHRJbnRlZ3JhdGlvbkNsaWVudENlcnRpZmljYXRlEjQuYXBpLkdl", + "bmVyYXRlTXF0dEludGVncmF0aW9uQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0", + "GjUuYXBpLkdlbmVyYXRlTXF0dEludGVncmF0aW9uQ2xpZW50Q2VydGlmaWNh", + "dGVSZXNwb25zZSJIgtPkkwJCIkAvYXBpL2FwcGxpY2F0aW9ucy97YXBwbGlj", + "YXRpb25faWR9L2ludGVncmF0aW9ucy9tcXR0L2NlcnRpZmljYXRlQmgKEWlv", + "LmNoaXJwc3RhY2suYXBpQhBBcHBsaWNhdGlvblByb3RvUAFaLmdpdGh1Yi5j", + "b20vY2hpcnBzdGFjay9jaGlycHN0YWNrL2FwaS9nby92NC9hcGmqAg5DaGly", + "cHN0YWNrLkFwaWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Chirpstack.Api.Encoding), typeof(global::Chirpstack.Api.IntegrationKind), typeof(global::Chirpstack.Api.InfluxDbPrecision), typeof(global::Chirpstack.Api.InfluxDbVersion), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.Application), global::Chirpstack.Api.Application.Parser, new[]{ "Id", "Name", "Description", "TenantId" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.Application), global::Chirpstack.Api.Application.Parser, new[]{ "Id", "Name", "Description", "TenantId", "Tags" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.ApplicationListItem), global::Chirpstack.Api.ApplicationListItem.Parser, new[]{ "Id", "CreatedAt", "UpdatedAt", "Name", "Description" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.CreateApplicationRequest), global::Chirpstack.Api.CreateApplicationRequest.Parser, new[]{ "Application" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.CreateApplicationResponse), global::Chirpstack.Api.CreateApplicationResponse.Parser, new[]{ "Id" }, null, null, null, null), @@ -521,6 +523,7 @@ namespace Chirpstack.Api { name_ = other.name_; description_ = other.description_; tenantId_ = other.tenantId_; + tags_ = other.tags_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -591,6 +594,23 @@ namespace Chirpstack.Api { } } + /// Field number for the "tags" field. + public const int TagsFieldNumber = 5; + private static readonly pbc::MapField.Codec _map_tags_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 42); + private readonly pbc::MapField tags_ = new pbc::MapField(); + /// + /// Tags (user defined). + /// These tags can be used to add additional information to the application. + /// These tags are exposed in all the integration events of devices under + /// this application. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField Tags { + get { return tags_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -610,6 +630,7 @@ namespace Chirpstack.Api { if (Name != other.Name) return false; if (Description != other.Description) return false; if (TenantId != other.TenantId) return false; + if (!Tags.Equals(other.Tags)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -621,6 +642,7 @@ namespace Chirpstack.Api { if (Name.Length != 0) hash ^= Name.GetHashCode(); if (Description.Length != 0) hash ^= Description.GetHashCode(); if (TenantId.Length != 0) hash ^= TenantId.GetHashCode(); + hash ^= Tags.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -655,6 +677,7 @@ namespace Chirpstack.Api { output.WriteRawTag(34); output.WriteString(TenantId); } + tags_.WriteTo(output, _map_tags_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -681,6 +704,7 @@ namespace Chirpstack.Api { output.WriteRawTag(34); output.WriteString(TenantId); } + tags_.WriteTo(ref output, _map_tags_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -703,6 +727,7 @@ namespace Chirpstack.Api { if (TenantId.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(TenantId); } + size += tags_.CalculateSize(_map_tags_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -727,6 +752,7 @@ namespace Chirpstack.Api { if (other.TenantId.Length != 0) { TenantId = other.TenantId; } + tags_.Add(other.tags_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -758,6 +784,10 @@ namespace Chirpstack.Api { TenantId = input.ReadString(); break; } + case 42: { + tags_.AddEntriesFrom(input, _map_tags_codec); + break; + } } } #endif @@ -789,6 +819,10 @@ namespace Chirpstack.Api { TenantId = input.ReadString(); break; } + case 42: { + tags_.AddEntriesFrom(ref input, _map_tags_codec); + break; + } } } } diff --git a/api/csharp/Chirpstack/api/Device.cs b/api/csharp/Chirpstack/api/Device.cs index 617d3a0e..76770f72 100644 --- a/api/csharp/Chirpstack/api/Device.cs +++ b/api/csharp/Chirpstack/api/Device.cs @@ -399,8 +399,8 @@ namespace Chirpstack.Api { private readonly pbc::MapField tags_ = new pbc::MapField(); /// /// Tags (user defined). - /// These tags are exposed in the event payloads or to integration. Tags are - /// intended for aggregation and filtering. + /// These tags can be used to add additional information to the device. + /// These tags are exposed in all the integration events. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] diff --git a/api/csharp/Chirpstack/api/DeviceProfile.cs b/api/csharp/Chirpstack/api/DeviceProfile.cs index 5d2369e6..fb207b54 100644 --- a/api/csharp/Chirpstack/api/DeviceProfile.cs +++ b/api/csharp/Chirpstack/api/DeviceProfile.cs @@ -167,7 +167,8 @@ namespace Chirpstack.Api { /// [pbr::OriginalName("UNKNOWN")] Unknown = 0, /// - /// Incrementing counters that never decrease (these are not reset on each reading). + /// Incrementing counters that never decrease (these are not reset on each + /// reading). /// [pbr::OriginalName("COUNTER")] Counter = 1, /// @@ -543,8 +544,8 @@ namespace Chirpstack.Api { private uint deviceStatusReqInterval_; /// /// Device-status request interval (times / day). - /// This defines the times per day that ChirpStack will request the device-status - /// from the device. + /// This defines the times per day that ChirpStack will request the + /// device-status from the device. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -605,7 +606,8 @@ namespace Chirpstack.Api { private uint classBTimeout_; /// /// Class-B timeout (seconds). - /// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). + /// This is the maximum time ChirpStack will wait to receive an acknowledgement + /// from the device (if requested). /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -669,7 +671,8 @@ namespace Chirpstack.Api { private uint classCTimeout_; /// /// Class-C timeout (seconds). - /// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). + /// This is the maximum time ChirpStack will wait to receive an acknowledgement + /// from the device (if requested). /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -746,7 +749,10 @@ namespace Chirpstack.Api { = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 202); private readonly pbc::MapField tags_ = new pbc::MapField(); /// - /// User defined tags. + /// Tags (user defined). + /// These tags can be used to add additional information the the + /// device-profile. These tags are exposed in all the integration events of + /// devices using this device-profile. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] diff --git a/api/csharp/Chirpstack/api/DeviceProfileGrpc.cs b/api/csharp/Chirpstack/api/DeviceProfileGrpc.cs index 986dc021..979a8512 100644 --- a/api/csharp/Chirpstack/api/DeviceProfileGrpc.cs +++ b/api/csharp/Chirpstack/api/DeviceProfileGrpc.cs @@ -9,7 +9,8 @@ using grpc = global::Grpc.Core; namespace Chirpstack.Api { /// - /// DeviceProfileService is the service providing API methods for managing device-profiles. + /// DeviceProfileService is the service providing API methods for managing + /// device-profiles. /// public static partial class DeviceProfileService { diff --git a/api/csharp/Chirpstack/api/Tenant.cs b/api/csharp/Chirpstack/api/Tenant.cs index 05741e33..1264bed3 100644 --- a/api/csharp/Chirpstack/api/Tenant.cs +++ b/api/csharp/Chirpstack/api/Tenant.cs @@ -26,80 +26,82 @@ namespace Chirpstack.Api { string.Concat( "ChBhcGkvdGVuYW50LnByb3RvEgNhcGkaHGdvb2dsZS9hcGkvYW5ub3RhdGlv", "bnMucHJvdG8aH2dvb2dsZS9wcm90b2J1Zi90aW1lc3RhbXAucHJvdG8aG2dv", - "b2dsZS9wcm90b2J1Zi9lbXB0eS5wcm90byLDAQoGVGVuYW50EgoKAmlkGAEg", + "b2dsZS9wcm90b2J1Zi9lbXB0eS5wcm90byKVAgoGVGVuYW50EgoKAmlkGAEg", "ASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSGQoRY2Fu", "X2hhdmVfZ2F0ZXdheXMYBCABKAgSGQoRbWF4X2dhdGV3YXlfY291bnQYBSAB", "KA0SGAoQbWF4X2RldmljZV9jb3VudBgGIAEoDRIbChNwcml2YXRlX2dhdGV3", - "YXlzX3VwGAcgASgIEh0KFXByaXZhdGVfZ2F0ZXdheXNfZG93bhgIIAEoCCKW", - "AgoOVGVuYW50TGlzdEl0ZW0SCgoCaWQYASABKAkSLgoKY3JlYXRlZF9hdBgC", - "IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9h", - "dBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEbmFtZRgE", - "IAEoCRIZChFjYW5faGF2ZV9nYXRld2F5cxgFIAEoCBIbChNwcml2YXRlX2dh", - "dGV3YXlzX3VwGAYgASgIEh0KFXByaXZhdGVfZ2F0ZXdheXNfZG93bhgJIAEo", - "CBIZChFtYXhfZ2F0ZXdheV9jb3VudBgHIAEoDRIYChBtYXhfZGV2aWNlX2Nv", - "dW50GAggASgNIjIKE0NyZWF0ZVRlbmFudFJlcXVlc3QSGwoGdGVuYW50GAEg", - "ASgLMgsuYXBpLlRlbmFudCIiChRDcmVhdGVUZW5hbnRSZXNwb25zZRIKCgJp", - "ZBgBIAEoCSIeChBHZXRUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIpABChFH", - "ZXRUZW5hbnRSZXNwb25zZRIbCgZ0ZW5hbnQYASABKAsyCy5hcGkuVGVuYW50", - "Ei4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0", - "YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGlt", - "ZXN0YW1wIjIKE1VwZGF0ZVRlbmFudFJlcXVlc3QSGwoGdGVuYW50GAEgASgL", - "MgsuYXBpLlRlbmFudCIhChNEZWxldGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEg", - "ASgJIlQKEkxpc3RUZW5hbnRzUmVxdWVzdBINCgVsaW1pdBgBIAEoDRIOCgZv", - "ZmZzZXQYAiABKA0SDgoGc2VhcmNoGAMgASgJEg8KB3VzZXJfaWQYBCABKAki", - "TwoTTGlzdFRlbmFudHNSZXNwb25zZRITCgt0b3RhbF9jb3VudBgBIAEoDRIj", - "CgZyZXN1bHQYAiADKAsyEy5hcGkuVGVuYW50TGlzdEl0ZW0ihAEKClRlbmFu", - "dFVzZXISEQoJdGVuYW50X2lkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSEAoI", - "aXNfYWRtaW4YAyABKAgSFwoPaXNfZGV2aWNlX2FkbWluGAQgASgIEhgKEGlz", - "X2dhdGV3YXlfYWRtaW4YBSABKAgSDQoFZW1haWwYBiABKAki7AEKElRlbmFu", - "dFVzZXJMaXN0SXRlbRIRCgl0ZW5hbnRfaWQYASABKAkSDwoHdXNlcl9pZBgC", - "IAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRp", - "bWVzdGFtcBIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVm", - "LlRpbWVzdGFtcBINCgVlbWFpbBgFIAEoCRIQCghpc19hZG1pbhgGIAEoCBIX", - "Cg9pc19kZXZpY2VfYWRtaW4YByABKAgSGAoQaXNfZ2F0ZXdheV9hZG1pbhgI", - "IAEoCCI8ChRBZGRUZW5hbnRVc2VyUmVxdWVzdBIkCgt0ZW5hbnRfdXNlchgB", - "IAEoCzIPLmFwaS5UZW5hbnRVc2VyIjoKFEdldFRlbmFudFVzZXJSZXF1ZXN0", - "EhEKCXRlbmFudF9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJIp0BChVHZXRU", - "ZW5hbnRVc2VyUmVzcG9uc2USJAoLdGVuYW50X3VzZXIYASABKAsyDy5hcGku", - "VGVuYW50VXNlchIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3Rv", - "YnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnBy", - "b3RvYnVmLlRpbWVzdGFtcCI/ChdVcGRhdGVUZW5hbnRVc2VyUmVxdWVzdBIk", - "Cgt0ZW5hbnRfdXNlchgBIAEoCzIPLmFwaS5UZW5hbnRVc2VyIj0KF0RlbGV0", - "ZVRlbmFudFVzZXJSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIPCgd1c2Vy", - "X2lkGAIgASgJIkoKFkxpc3RUZW5hbnRVc2Vyc1JlcXVlc3QSEQoJdGVuYW50", - "X2lkGAEgASgJEg0KBWxpbWl0GAIgASgNEg4KBm9mZnNldBgDIAEoDSJXChdM", - "aXN0VGVuYW50VXNlcnNSZXNwb25zZRITCgt0b3RhbF9jb3VudBgBIAEoDRIn", - "CgZyZXN1bHQYAiADKAsyFy5hcGkuVGVuYW50VXNlckxpc3RJdGVtMqIICg1U", - "ZW5hbnRTZXJ2aWNlElYKBkNyZWF0ZRIYLmFwaS5DcmVhdGVUZW5hbnRSZXF1", - "ZXN0GhkuYXBpLkNyZWF0ZVRlbmFudFJlc3BvbnNlIheC0+STAhEiDC9hcGkv", - "dGVuYW50czoBKhJPCgNHZXQSFS5hcGkuR2V0VGVuYW50UmVxdWVzdBoWLmFw", - "aS5HZXRUZW5hbnRSZXNwb25zZSIZgtPkkwITEhEvYXBpL3RlbmFudHMve2lk", - "fRJfCgZVcGRhdGUSGC5hcGkuVXBkYXRlVGVuYW50UmVxdWVzdBoWLmdvb2ds", - "ZS5wcm90b2J1Zi5FbXB0eSIjgtPkkwIdGhgvYXBpL3RlbmFudHMve3RlbmFu", - "dC5pZH06ASoSVQoGRGVsZXRlEhguYXBpLkRlbGV0ZVRlbmFudFJlcXVlc3Qa", - "Fi5nb29nbGUucHJvdG9idWYuRW1wdHkiGYLT5JMCEyoRL2FwaS90ZW5hbnRz", - "L3tpZH0STwoETGlzdBIXLmFwaS5MaXN0VGVuYW50c1JlcXVlc3QaGC5hcGku", - "TGlzdFRlbmFudHNSZXNwb25zZSIUgtPkkwIOEgwvYXBpL3RlbmFudHMScwoH", - "QWRkVXNlchIZLmFwaS5BZGRUZW5hbnRVc2VyUmVxdWVzdBoWLmdvb2dsZS5w", - "cm90b2J1Zi5FbXB0eSI1gtPkkwIvIiovYXBpL3RlbmFudHMve3RlbmFudF91", - "c2VyLnRlbmFudF9pZH0vdXNlcnM6ASoScgoHR2V0VXNlchIZLmFwaS5HZXRU", - "ZW5hbnRVc2VyUmVxdWVzdBoaLmFwaS5HZXRUZW5hbnRVc2VyUmVzcG9uc2Ui", - "MILT5JMCKhIoL2FwaS90ZW5hbnRzL3t0ZW5hbnRfaWR9L3VzZXJzL3t1c2Vy", - "X2lkfRKPAQoKVXBkYXRlVXNlchIcLmFwaS5VcGRhdGVUZW5hbnRVc2VyUmVx", - "dWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJLgtPkkwJFGkAvYXBpL3Rl", - "bmFudHMve3RlbmFudF91c2VyLnRlbmFudF9pZH0vdXNlcnMve3RlbmFudF91", - "c2VyLnVzZXJfaWR9OgEqEnQKCkRlbGV0ZVVzZXISHC5hcGkuRGVsZXRlVGVu", - "YW50VXNlclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMC", - "KiooL2FwaS90ZW5hbnRzL3t0ZW5hbnRfaWR9L3VzZXJzL3t1c2VyX2lkfRJu", - "CglMaXN0VXNlcnMSGy5hcGkuTGlzdFRlbmFudFVzZXJzUmVxdWVzdBocLmFw", - "aS5MaXN0VGVuYW50VXNlcnNSZXNwb25zZSImgtPkkwIgEh4vYXBpL3RlbmFu", - "dHMve3RlbmFudF9pZH0vdXNlcnNCYwoRaW8uY2hpcnBzdGFjay5hcGlCC1Rl", - "bmFudFByb3RvUAFaLmdpdGh1Yi5jb20vY2hpcnBzdGFjay9jaGlycHN0YWNr", - "L2FwaS9nby92NC9hcGmqAg5DaGlycHN0YWNrLkFwaWIGcHJvdG8z")); + "YXlzX3VwGAcgASgIEh0KFXByaXZhdGVfZ2F0ZXdheXNfZG93bhgIIAEoCBIj", + "CgR0YWdzGAkgAygLMhUuYXBpLlRlbmFudC5UYWdzRW50cnkaKwoJVGFnc0Vu", + "dHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilgIKDlRlbmFu", + "dExpc3RJdGVtEgoKAmlkGAEgASgJEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5n", + "b29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsy", + "Gi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBCABKAkSGQoR", + "Y2FuX2hhdmVfZ2F0ZXdheXMYBSABKAgSGwoTcHJpdmF0ZV9nYXRld2F5c191", + "cBgGIAEoCBIdChVwcml2YXRlX2dhdGV3YXlzX2Rvd24YCSABKAgSGQoRbWF4", + "X2dhdGV3YXlfY291bnQYByABKA0SGAoQbWF4X2RldmljZV9jb3VudBgIIAEo", + "DSIyChNDcmVhdGVUZW5hbnRSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCzILLmFw", + "aS5UZW5hbnQiIgoUQ3JlYXRlVGVuYW50UmVzcG9uc2USCgoCaWQYASABKAki", + "HgoQR2V0VGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSKQAQoRR2V0VGVuYW50", + "UmVzcG9uc2USGwoGdGVuYW50GAEgASgLMgsuYXBpLlRlbmFudBIuCgpjcmVh", + "dGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1", + "cGRhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIy", + "ChNVcGRhdGVUZW5hbnRSZXF1ZXN0EhsKBnRlbmFudBgBIAEoCzILLmFwaS5U", + "ZW5hbnQiIQoTRGVsZXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSJUChJM", + "aXN0VGVuYW50c1JlcXVlc3QSDQoFbGltaXQYASABKA0SDgoGb2Zmc2V0GAIg", + "ASgNEg4KBnNlYXJjaBgDIAEoCRIPCgd1c2VyX2lkGAQgASgJIk8KE0xpc3RU", + "ZW5hbnRzUmVzcG9uc2USEwoLdG90YWxfY291bnQYASABKA0SIwoGcmVzdWx0", + "GAIgAygLMhMuYXBpLlRlbmFudExpc3RJdGVtIoQBCgpUZW5hbnRVc2VyEhEK", + "CXRlbmFudF9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhAKCGlzX2FkbWlu", + "GAMgASgIEhcKD2lzX2RldmljZV9hZG1pbhgEIAEoCBIYChBpc19nYXRld2F5", + "X2FkbWluGAUgASgIEg0KBWVtYWlsGAYgASgJIuwBChJUZW5hbnRVc2VyTGlz", + "dEl0ZW0SEQoJdGVuYW50X2lkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSLgoK", + "Y3JlYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAS", + "LgoKdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh", + "bXASDQoFZW1haWwYBSABKAkSEAoIaXNfYWRtaW4YBiABKAgSFwoPaXNfZGV2", + "aWNlX2FkbWluGAcgASgIEhgKEGlzX2dhdGV3YXlfYWRtaW4YCCABKAgiPAoU", + "QWRkVGVuYW50VXNlclJlcXVlc3QSJAoLdGVuYW50X3VzZXIYASABKAsyDy5h", + "cGkuVGVuYW50VXNlciI6ChRHZXRUZW5hbnRVc2VyUmVxdWVzdBIRCgl0ZW5h", + "bnRfaWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCSKdAQoVR2V0VGVuYW50VXNl", + "clJlc3BvbnNlEiQKC3RlbmFudF91c2VyGAEgASgLMg8uYXBpLlRlbmFudFVz", + "ZXISLgoKY3JlYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l", + "c3RhbXASLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5U", + "aW1lc3RhbXAiPwoXVXBkYXRlVGVuYW50VXNlclJlcXVlc3QSJAoLdGVuYW50", + "X3VzZXIYASABKAsyDy5hcGkuVGVuYW50VXNlciI9ChdEZWxldGVUZW5hbnRV", + "c2VyUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSDwoHdXNlcl9pZBgCIAEo", + "CSJKChZMaXN0VGVuYW50VXNlcnNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEo", + "CRINCgVsaW1pdBgCIAEoDRIOCgZvZmZzZXQYAyABKA0iVwoXTGlzdFRlbmFu", + "dFVzZXJzUmVzcG9uc2USEwoLdG90YWxfY291bnQYASABKA0SJwoGcmVzdWx0", + "GAIgAygLMhcuYXBpLlRlbmFudFVzZXJMaXN0SXRlbTKiCAoNVGVuYW50U2Vy", + "dmljZRJWCgZDcmVhdGUSGC5hcGkuQ3JlYXRlVGVuYW50UmVxdWVzdBoZLmFw", + "aS5DcmVhdGVUZW5hbnRSZXNwb25zZSIXgtPkkwIRIgwvYXBpL3RlbmFudHM6", + "ASoSTwoDR2V0EhUuYXBpLkdldFRlbmFudFJlcXVlc3QaFi5hcGkuR2V0VGVu", + "YW50UmVzcG9uc2UiGYLT5JMCExIRL2FwaS90ZW5hbnRzL3tpZH0SXwoGVXBk", + "YXRlEhguYXBpLlVwZGF0ZVRlbmFudFJlcXVlc3QaFi5nb29nbGUucHJvdG9i", + "dWYuRW1wdHkiI4LT5JMCHRoYL2FwaS90ZW5hbnRzL3t0ZW5hbnQuaWR9OgEq", + "ElUKBkRlbGV0ZRIYLmFwaS5EZWxldGVUZW5hbnRSZXF1ZXN0GhYuZ29vZ2xl", + "LnByb3RvYnVmLkVtcHR5IhmC0+STAhMqES9hcGkvdGVuYW50cy97aWR9Ek8K", + "BExpc3QSFy5hcGkuTGlzdFRlbmFudHNSZXF1ZXN0GhguYXBpLkxpc3RUZW5h", + "bnRzUmVzcG9uc2UiFILT5JMCDhIML2FwaS90ZW5hbnRzEnMKB0FkZFVzZXIS", + "GS5hcGkuQWRkVGVuYW50VXNlclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYu", + "RW1wdHkiNYLT5JMCLyIqL2FwaS90ZW5hbnRzL3t0ZW5hbnRfdXNlci50ZW5h", + "bnRfaWR9L3VzZXJzOgEqEnIKB0dldFVzZXISGS5hcGkuR2V0VGVuYW50VXNl", + "clJlcXVlc3QaGi5hcGkuR2V0VGVuYW50VXNlclJlc3BvbnNlIjCC0+STAioS", + "KC9hcGkvdGVuYW50cy97dGVuYW50X2lkfS91c2Vycy97dXNlcl9pZH0SjwEK", + "ClVwZGF0ZVVzZXISHC5hcGkuVXBkYXRlVGVuYW50VXNlclJlcXVlc3QaFi5n", + "b29nbGUucHJvdG9idWYuRW1wdHkiS4LT5JMCRRpAL2FwaS90ZW5hbnRzL3t0", + "ZW5hbnRfdXNlci50ZW5hbnRfaWR9L3VzZXJzL3t0ZW5hbnRfdXNlci51c2Vy", + "X2lkfToBKhJ0CgpEZWxldGVVc2VyEhwuYXBpLkRlbGV0ZVRlbmFudFVzZXJS", + "ZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjCC0+STAioqKC9hcGkv", + "dGVuYW50cy97dGVuYW50X2lkfS91c2Vycy97dXNlcl9pZH0SbgoJTGlzdFVz", + "ZXJzEhsuYXBpLkxpc3RUZW5hbnRVc2Vyc1JlcXVlc3QaHC5hcGkuTGlzdFRl", + "bmFudFVzZXJzUmVzcG9uc2UiJoLT5JMCIBIeL2FwaS90ZW5hbnRzL3t0ZW5h", + "bnRfaWR9L3VzZXJzQmMKEWlvLmNoaXJwc3RhY2suYXBpQgtUZW5hbnRQcm90", + "b1ABWi5naXRodWIuY29tL2NoaXJwc3RhY2svY2hpcnBzdGFjay9hcGkvZ28v", + "djQvYXBpqgIOQ2hpcnBzdGFjay5BcGliBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.Tenant), global::Chirpstack.Api.Tenant.Parser, new[]{ "Id", "Name", "Description", "CanHaveGateways", "MaxGatewayCount", "MaxDeviceCount", "PrivateGatewaysUp", "PrivateGatewaysDown" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.Tenant), global::Chirpstack.Api.Tenant.Parser, new[]{ "Id", "Name", "Description", "CanHaveGateways", "MaxGatewayCount", "MaxDeviceCount", "PrivateGatewaysUp", "PrivateGatewaysDown", "Tags" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.TenantListItem), global::Chirpstack.Api.TenantListItem.Parser, new[]{ "Id", "CreatedAt", "UpdatedAt", "Name", "CanHaveGateways", "PrivateGatewaysUp", "PrivateGatewaysDown", "MaxGatewayCount", "MaxDeviceCount" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.CreateTenantRequest), global::Chirpstack.Api.CreateTenantRequest.Parser, new[]{ "Tenant" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.CreateTenantResponse), global::Chirpstack.Api.CreateTenantResponse.Parser, new[]{ "Id" }, null, null, null, null), @@ -166,6 +168,7 @@ namespace Chirpstack.Api { maxDeviceCount_ = other.maxDeviceCount_; privateGatewaysUp_ = other.privateGatewaysUp_; privateGatewaysDown_ = other.privateGatewaysDown_; + tags_ = other.tags_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -303,6 +306,22 @@ namespace Chirpstack.Api { } } + /// Field number for the "tags" field. + public const int TagsFieldNumber = 9; + private static readonly pbc::MapField.Codec _map_tags_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 74); + private readonly pbc::MapField tags_ = new pbc::MapField(); + /// + /// Tags (user defined). + /// These tags can be used to add additional information to the tenant. These + /// tags are NOT exposed in the integration events. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField Tags { + get { return tags_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -326,6 +345,7 @@ namespace Chirpstack.Api { if (MaxDeviceCount != other.MaxDeviceCount) return false; if (PrivateGatewaysUp != other.PrivateGatewaysUp) return false; if (PrivateGatewaysDown != other.PrivateGatewaysDown) return false; + if (!Tags.Equals(other.Tags)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -341,6 +361,7 @@ namespace Chirpstack.Api { if (MaxDeviceCount != 0) hash ^= MaxDeviceCount.GetHashCode(); if (PrivateGatewaysUp != false) hash ^= PrivateGatewaysUp.GetHashCode(); if (PrivateGatewaysDown != false) hash ^= PrivateGatewaysDown.GetHashCode(); + hash ^= Tags.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -391,6 +412,7 @@ namespace Chirpstack.Api { output.WriteRawTag(64); output.WriteBool(PrivateGatewaysDown); } + tags_.WriteTo(output, _map_tags_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -433,6 +455,7 @@ namespace Chirpstack.Api { output.WriteRawTag(64); output.WriteBool(PrivateGatewaysDown); } + tags_.WriteTo(ref output, _map_tags_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -467,6 +490,7 @@ namespace Chirpstack.Api { if (PrivateGatewaysDown != false) { size += 1 + 1; } + size += tags_.CalculateSize(_map_tags_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -503,6 +527,7 @@ namespace Chirpstack.Api { if (other.PrivateGatewaysDown != false) { PrivateGatewaysDown = other.PrivateGatewaysDown; } + tags_.Add(other.tags_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -550,6 +575,10 @@ namespace Chirpstack.Api { PrivateGatewaysDown = input.ReadBool(); break; } + case 74: { + tags_.AddEntriesFrom(input, _map_tags_codec); + break; + } } } #endif @@ -597,6 +626,10 @@ namespace Chirpstack.Api { PrivateGatewaysDown = input.ReadBool(); break; } + case 74: { + tags_.AddEntriesFrom(ref input, _map_tags_codec); + break; + } } } } diff --git a/api/go/api/application.pb.go b/api/go/api/application.pb.go index ba92b85c..28471175 100644 --- a/api/go/api/application.pb.go +++ b/api/go/api/application.pb.go @@ -260,6 +260,11 @@ type Application struct { Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Tenant ID (UUID). TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // Tags (user defined). + // These tags can be used to add additional information to the application. + // These tags are exposed in all the integration events of devices under + // this application. + Tags map[string]string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Application) Reset() { @@ -322,6 +327,13 @@ func (x *Application) GetTenantId() string { return "" } +func (x *Application) GetTags() map[string]string { + if x != nil { + return x.Tags + } + return nil +} + type ApplicationListItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4553,1064 +4565,1071 @@ var file_api_application_proto_rawDesc = []byte{ 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x70, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x13, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x01, 0x0a, 0x0b, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, + 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x61, 0x67, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, + 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xed, + 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, - 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x4e, + 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2b, - 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x22, 0xed, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x32, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, - 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x22, 0x4e, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x32, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x7c, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x6d, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x40, 0x0a, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x3f, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, - 0x22, 0x6d, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x8a, 0x02, 0x0a, 0x0f, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x72, 0x6c, - 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x1c, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x48, - 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x6e, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2a, + 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x7c, 0x0a, 0x17, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x40, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x13, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x28, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x6d, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8a, 0x02, 0x0a, 0x0f, 0x48, 0x74, + 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x12, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x56, - 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, - 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, + 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x42, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x45, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x8c, 0x03, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6c, + 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x64, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x74, 0x65, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, + 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, + 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, + 0x75, 0x78, 0x44, 0x62, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, + 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x5e, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x45, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x8c, 0x03, - 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x64, 0x62, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x64, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, - 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x5e, 0x0a, 0x20, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, + 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5c, + 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3a, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, + 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x20, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x1d, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, - 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, - 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, - 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x57, 0x0a, - 0x16, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x64, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, - 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x20, - 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x54, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x16, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x22, 0x64, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x62, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x23, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x4c, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, - 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x59, 0x0a, 0x14, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x60, 0x0a, 0x21, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x79, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x1e, - 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, - 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x14, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x64, 0x0a, 0x1a, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x5f, 0x67, 0x65, 0x6f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, - 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x47, 0x65, 0x6f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, - 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xf2, 0x05, 0x0a, 0x21, 0x4c, 0x6f, - 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x47, 0x65, 0x6f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x6f, - 0x64, 0x65, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x10, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x50, 0x6f, 0x72, - 0x74, 0x73, 0x12, 0x27, 0x0a, 0x10, 0x67, 0x6e, 0x73, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, - 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x6e, - 0x73, 0x73, 0x55, 0x73, 0x65, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x67, - 0x6e, 0x73, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, - 0x67, 0x6e, 0x73, 0x73, 0x55, 0x73, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, - 0x74, 0x6c, 0x76, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x54, 0x6c, 0x76, 0x12, 0x34, 0x0a, 0x16, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x14, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x54, 0x74, 0x6c, 0x12, 0x3d, 0x0a, 0x1b, 0x67, 0x65, 0x6f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, - 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x64, 0x6f, 0x61, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x64, 0x6f, 0x61, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x73, 0x73, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x67, - 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x73, 0x73, 0x69, 0x12, 0x29, - 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x6e, - 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x6e, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x67, 0x65, 0x6f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x6e, 0x73, 0x73, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x1b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x6e, - 0x73, 0x73, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3e, - 0x0a, 0x1c, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x6e, - 0x73, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x6e, 0x73, 0x73, 0x55, 0x73, 0x65, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x29, - 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, - 0x66, 0x69, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x66, 0x69, 0x12, 0x43, 0x0a, 0x1e, 0x67, 0x65, 0x6f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x1b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, - 0x66, 0x69, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x60, - 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, - 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x47, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, 0x23, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x21, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, - 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x21, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x14, 0x47, 0x63, 0x70, 0x50, - 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x21, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x63, 0x70, 0x50, - 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x47, 0x63, 0x70, - 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x14, 0x4d, 0x79, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x60, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xea, 0x01, 0x0a, 0x11, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, + 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x79, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x60, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xa3, 0x01, + 0x0a, 0x14, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x64, 0x0a, + 0x1a, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x5f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x18, 0x6d, 0x6f, 0x64, 0x65, 0x6d, + 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x22, 0xf2, 0x05, 0x0a, 0x21, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x23, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6d, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x66, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x10, + 0x67, 0x6e, 0x73, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x6e, 0x73, 0x73, 0x55, 0x73, 0x65, 0x52, + 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x67, 0x6e, 0x73, 0x73, 0x5f, 0x75, 0x73, + 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x67, 0x6e, 0x73, 0x73, 0x55, 0x73, + 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x74, 0x6c, 0x76, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6c, 0x76, 0x12, 0x34, 0x0a, + 0x16, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x67, + 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x54, 0x74, 0x6c, 0x12, 0x3d, 0x0a, 0x1b, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x64, 0x6f, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, + 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x64, 0x6f, 0x61, 0x12, 0x29, 0x0a, + 0x10, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x73, 0x73, + 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x73, 0x73, 0x69, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x6e, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, + 0x6e, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x67, 0x6e, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x67, 0x65, 0x6f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x6e, 0x73, 0x73, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3e, 0x0a, 0x1c, 0x67, 0x65, 0x6f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x6e, 0x73, 0x73, 0x5f, 0x75, 0x73, 0x65, + 0x5f, 0x72, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, + 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x6e, 0x73, 0x73, 0x55, + 0x73, 0x65, 0x52, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x66, 0x69, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x69, 0x66, 0x69, 0x12, 0x43, 0x0a, 0x1e, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x67, 0x65, 0x6f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x66, 0x69, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x60, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, + 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x1e, 0x47, 0x65, + 0x74, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, + 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, + 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x14, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x61, 0x72, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x41, 0x72, - 0x6e, 0x22, 0x5a, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, - 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, - 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, - 0x1b, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, - 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, - 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x6e, - 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x1e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x1a, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x27, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, - 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, - 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x4d, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, + 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x47, 0x63, + 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x6a, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x27, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, - 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x27, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x16, - 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, + 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x60, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xea, + 0x01, 0x0a, 0x11, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x08, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x22, + 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, + 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1b, + 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x41, 0x72, 0x6e, 0x22, 0x5a, 0x0a, 0x1e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, + 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x77, + 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x64, 0x0a, 0x23, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, - 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x49, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, - 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x58, 0x0a, + 0x1c, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, + 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x21, - 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xbe, 0x01, 0x0a, + 0x1a, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, + 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x0a, + 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, + 0x27, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x24, 0x47, + 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, + 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6a, 0x0a, 0x25, 0x47, 0x65, + 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x27, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x27, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x16, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, + 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x64, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, + 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x20, 0x47, + 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, + 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x23, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x64, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, + 0x22, 0x4c, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4c, 0x0a, 0x23, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x10, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x72, 0x62, 0x69, 0x74, - 0x72, 0x61, 0x72, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x22, 0x58, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x66, - 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x56, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x37, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x66, 0x74, 0x74, 0x74, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x58, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xba, + 0x01, 0x0a, 0x10, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, + 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x5f, 0x6a, + 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x72, 0x62, 0x69, 0x74, + 0x72, 0x61, 0x72, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x58, 0x0a, 0x1d, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0b, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x2f, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x58, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, + 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x1d, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x30, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, - 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, - 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, - 0x07, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, - 0x74, 0x2a, 0x22, 0x0a, 0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x08, 0x0a, - 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x54, 0x4f, - 0x42, 0x55, 0x46, 0x10, 0x01, 0x2a, 0xbf, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, - 0x50, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x46, 0x4c, 0x55, 0x58, 0x5f, 0x44, 0x42, - 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x48, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x4f, 0x41, - 0x52, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x59, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, - 0x45, 0x53, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x4f, 0x52, 0x41, 0x5f, 0x43, 0x4c, 0x4f, - 0x55, 0x44, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x43, 0x50, 0x5f, 0x50, 0x55, 0x42, 0x5f, - 0x53, 0x55, 0x42, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x57, 0x53, 0x5f, 0x53, 0x4e, 0x53, - 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x42, 0x55, 0x53, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x49, 0x4c, - 0x4f, 0x54, 0x5f, 0x54, 0x48, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, - 0x51, 0x54, 0x54, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, - 0x49, 0x46, 0x54, 0x54, 0x54, 0x10, 0x0a, 0x2a, 0x3f, 0x0a, 0x11, 0x49, 0x6e, 0x66, 0x6c, 0x75, - 0x78, 0x44, 0x62, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, - 0x4e, 0x53, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x55, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4d, - 0x53, 0x10, 0x02, 0x12, 0x05, 0x0a, 0x01, 0x53, 0x10, 0x03, 0x12, 0x05, 0x0a, 0x01, 0x4d, 0x10, - 0x04, 0x12, 0x05, 0x0a, 0x01, 0x48, 0x10, 0x05, 0x2a, 0x31, 0x0a, 0x0f, 0x49, 0x6e, 0x66, 0x6c, - 0x75, 0x78, 0x44, 0x62, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x49, - 0x4e, 0x46, 0x4c, 0x55, 0x58, 0x44, 0x42, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x49, - 0x4e, 0x46, 0x4c, 0x55, 0x58, 0x44, 0x42, 0x5f, 0x32, 0x10, 0x01, 0x32, 0xb8, 0x3c, 0x0a, 0x12, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x65, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x03, 0x47, 0x65, 0x74, - 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x06, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x1a, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x06, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5e, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x10, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x22, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x12, 0x93, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, - 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x12, 0x9f, 0x01, - 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x1a, 0x40, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x12, - 0x90, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x2f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xba, + 0x01, 0x0a, 0x30, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x43, 0x65, 0x72, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x2a, 0x22, 0x0a, 0x08, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x42, 0x55, 0x46, 0x10, 0x01, 0x2a, + 0xbf, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x0d, 0x0a, + 0x09, 0x49, 0x4e, 0x46, 0x4c, 0x55, 0x58, 0x5f, 0x44, 0x42, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, + 0x54, 0x48, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x0e, + 0x0a, 0x0a, 0x4d, 0x59, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x10, 0x03, 0x12, 0x0e, + 0x0a, 0x0a, 0x4c, 0x4f, 0x52, 0x41, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x04, 0x12, 0x0f, + 0x0a, 0x0b, 0x47, 0x43, 0x50, 0x5f, 0x50, 0x55, 0x42, 0x5f, 0x53, 0x55, 0x42, 0x10, 0x05, 0x12, + 0x0b, 0x0a, 0x07, 0x41, 0x57, 0x53, 0x5f, 0x53, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, + 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x42, 0x55, + 0x53, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x49, 0x4c, 0x4f, 0x54, 0x5f, 0x54, 0x48, 0x49, + 0x4e, 0x47, 0x53, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x51, 0x54, 0x54, 0x5f, 0x47, 0x4c, + 0x4f, 0x42, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x46, 0x54, 0x54, 0x54, 0x10, + 0x0a, 0x2a, 0x3f, 0x0a, 0x11, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x50, 0x72, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x4e, 0x53, 0x10, 0x00, 0x12, 0x05, + 0x0a, 0x01, 0x55, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4d, 0x53, 0x10, 0x02, 0x12, 0x05, 0x0a, + 0x01, 0x53, 0x10, 0x03, 0x12, 0x05, 0x0a, 0x01, 0x4d, 0x10, 0x04, 0x12, 0x05, 0x0a, 0x01, 0x48, + 0x10, 0x05, 0x2a, 0x31, 0x0a, 0x0f, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x46, 0x4c, 0x55, 0x58, 0x44, + 0x42, 0x5f, 0x31, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4e, 0x46, 0x4c, 0x55, 0x58, 0x44, + 0x42, 0x5f, 0x32, 0x10, 0x01, 0x32, 0xb8, 0x3c, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x65, 0x0a, 0x06, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, + 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, 0x34, 0x2f, 0x61, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x1a, + 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, - 0x74, 0x70, 0x12, 0xab, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, - 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, - 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5e, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x9f, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x22, + 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, + 0x70, 0x12, 0x93, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, + 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, + 0x65, 0x74, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x36, 0x12, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x12, 0x9f, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x74, + 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x1a, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x12, 0x90, 0x01, 0x0a, 0x15, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x48, 0x74, 0x74, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x2a, 0x34, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x12, 0xab, 0x01, 0x0a, + 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x12, 0xa3, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, + 0x12, 0xab, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, + 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, + 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4f, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x1a, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x12, 0x9c, + 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, + 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, + 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3a, 0x2a, 0x38, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x12, 0xb4, 0x01, + 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x12, 0xaf, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0xb4, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4c, 0x3a, 0x01, 0x2a, 0x1a, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0xa5, 0x01, + 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, + 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0xae, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x22, + 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x79, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x79, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x79, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x12, 0xae, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x61, 0x70, 0x69, + 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x1a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, - 0x12, 0xa3, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, - 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, - 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x12, 0xab, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x1a, 0x44, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, - 0x75, 0x78, 0x64, 0x62, 0x12, 0x9c, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x44, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, 0x38, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x79, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x79, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, + 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, + 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x75, - 0x78, 0x64, 0x62, 0x12, 0xb4, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, - 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0xaf, 0x01, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, - 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, - 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0xb4, 0x01, 0x0a, - 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, - 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x12, 0xa7, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x72, 0x61, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4c, + 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0xae, + 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x50, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x1a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, + 0x9f, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x41, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x12, 0xb0, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, + 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2d, 0x70, 0x75, 0x62, + 0x2d, 0x73, 0x75, 0x62, 0x12, 0xa9, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x63, 0x70, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, + 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, + 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2d, 0x70, 0x75, 0x62, 0x2d, 0x73, 0x75, 0x62, + 0x12, 0xb0, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, + 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, + 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x1a, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x12, 0xa5, 0x01, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, 0x3b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0xae, 0x01, 0x0a, 0x1a, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x6d, 0x79, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xa7, 0x01, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2d, 0x70, 0x75, 0x62, 0x2d, + 0x73, 0x75, 0x62, 0x12, 0xa1, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x63, + 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x2a, 0x3b, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2d, + 0x70, 0x75, 0x62, 0x2d, 0x73, 0x75, 0x62, 0x12, 0xa6, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x79, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, - 0x1a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x79, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4d, 0x79, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x6d, 0x79, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x1a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2d, 0x73, 0x6e, 0x73, + 0x12, 0x9c, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2d, 0x73, 0x6e, 0x73, 0x12, + 0xa6, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, - 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, + 0x3a, 0x01, 0x2a, 0x1a, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0xa7, 0x01, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x2f, 0x61, 0x77, 0x73, 0x2d, 0x73, 0x6e, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x2a, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x72, 0x61, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x12, 0xae, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, - 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x1a, 0x45, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, 0x72, 0x61, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x9f, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4c, 0x6f, 0x72, 0x61, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x6f, - 0x72, 0x61, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0xb0, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2d, 0x73, + 0x6e, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, 0x12, 0xc1, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2d, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x20, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, - 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, - 0x63, 0x70, 0x2d, 0x70, 0x75, 0x62, 0x2d, 0x73, 0x75, 0x62, 0x12, 0xa9, 0x01, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2d, 0x70, - 0x75, 0x62, 0x2d, 0x73, 0x75, 0x62, 0x12, 0xb0, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, - 0x1a, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x63, - 0x70, 0x2d, 0x70, 0x75, 0x62, 0x2d, 0x73, 0x75, 0x62, 0x12, 0xa1, 0x01, 0x0a, 0x1a, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x63, 0x70, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, - 0x2a, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x67, 0x63, 0x70, 0x2d, 0x70, 0x75, 0x62, 0x2d, 0x73, 0x75, 0x62, 0x12, 0xa6, 0x01, - 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, - 0x2a, 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, + 0x2a, 0x1a, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, - 0x77, 0x73, 0x2d, 0x73, 0x6e, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x77, - 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, + 0x7a, 0x75, 0x72, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, + 0x12, 0xb3, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, + 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x49, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x43, 0x2a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x77, 0x73, 0x53, 0x6e, - 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, - 0x73, 0x2d, 0x73, 0x6e, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, - 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x1a, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x77, 0x73, 0x2d, 0x73, 0x6e, 0x73, 0x12, 0x97, - 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x53, 0x6e, 0x73, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x2a, - 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x77, 0x73, 0x2d, 0x73, 0x6e, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, - 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x2d, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb0, + 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, + 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x2d, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, + 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x1a, + 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, + 0x6f, 0x74, 0x2d, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x1c, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x44, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x2d, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, + 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x69, 0x66, 0x74, 0x74, 0x74, 0x12, 0x97, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, + 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, - 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, 0x12, 0xc1, 0x01, - 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x66, 0x74, 0x74, + 0x74, 0x12, 0xa2, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, + 0x3a, 0x01, 0x2a, 0x1a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x69, 0x66, 0x74, 0x74, 0x74, 0x12, 0x93, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x66, + 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x66, 0x74, 0x74, 0x74, 0x12, 0xe1, 0x01, 0x0a, + 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, + 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x62, 0x75, - 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, - 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x58, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x1a, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x2a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, - 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x62, 0x75, 0x73, 0x12, 0xb5, 0x01, 0x0a, - 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, - 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x2d, 0x74, 0x68, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, - 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, - 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, 0x74, - 0x2d, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x1a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, 0x74, 0x2d, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0xa6, 0x01, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x69, 0x6c, 0x6f, 0x74, 0x54, - 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x69, 0x6c, - 0x6f, 0x74, 0x54, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x69, 0x6c, 0x6f, - 0x74, 0x2d, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x66, 0x74, 0x74, 0x74, 0x12, 0x97, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, - 0x12, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x69, 0x66, 0x74, 0x74, 0x74, 0x12, 0xa2, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x1a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x66, 0x74, 0x74, 0x74, 0x12, 0x93, 0x01, 0x0a, - 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x49, 0x66, 0x74, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, 0x66, 0x74, - 0x74, 0x74, 0x12, 0xe1, 0x01, 0x0a, 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, - 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, - 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, - 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x4d, 0x71, 0x74, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x42, 0x22, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x71, 0x74, 0x74, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x68, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, - 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, - 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, - 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x71, 0x74, 0x74, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x42, 0x68, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, + 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, + 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -5626,7 +5645,7 @@ func file_api_application_proto_rawDescGZIP() []byte { } var file_api_application_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_api_application_proto_msgTypes = make([]protoimpl.MessageInfo, 77) +var file_api_application_proto_msgTypes = make([]protoimpl.MessageInfo, 78) var file_api_application_proto_goTypes = []interface{}{ (Encoding)(0), // 0: api.Encoding (IntegrationKind)(0), // 1: api.IntegrationKind @@ -5708,159 +5727,161 @@ var file_api_application_proto_goTypes = []interface{}{ (*DeleteIftttIntegrationRequest)(nil), // 77: api.DeleteIftttIntegrationRequest (*GenerateMqttIntegrationClientCertificateRequest)(nil), // 78: api.GenerateMqttIntegrationClientCertificateRequest (*GenerateMqttIntegrationClientCertificateResponse)(nil), // 79: api.GenerateMqttIntegrationClientCertificateResponse - nil, // 80: api.HttpIntegration.HeadersEntry - (*timestamppb.Timestamp)(nil), // 81: google.protobuf.Timestamp - (*emptypb.Empty)(nil), // 82: google.protobuf.Empty + nil, // 80: api.Application.TagsEntry + nil, // 81: api.HttpIntegration.HeadersEntry + (*timestamppb.Timestamp)(nil), // 82: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 83: google.protobuf.Empty } var file_api_application_proto_depIdxs = []int32{ - 81, // 0: api.ApplicationListItem.created_at:type_name -> google.protobuf.Timestamp - 81, // 1: api.ApplicationListItem.updated_at:type_name -> google.protobuf.Timestamp - 4, // 2: api.CreateApplicationRequest.application:type_name -> api.Application - 4, // 3: api.GetApplicationResponse.application:type_name -> api.Application - 81, // 4: api.GetApplicationResponse.created_at:type_name -> google.protobuf.Timestamp - 81, // 5: api.GetApplicationResponse.updated_at:type_name -> google.protobuf.Timestamp - 4, // 6: api.UpdateApplicationRequest.application:type_name -> api.Application - 5, // 7: api.ListApplicationsResponse.result:type_name -> api.ApplicationListItem - 1, // 8: api.IntegrationListItem.kind:type_name -> api.IntegrationKind - 15, // 9: api.ListIntegrationsResponse.result:type_name -> api.IntegrationListItem - 80, // 10: api.HttpIntegration.headers:type_name -> api.HttpIntegration.HeadersEntry - 0, // 11: api.HttpIntegration.encoding:type_name -> api.Encoding - 17, // 12: api.CreateHttpIntegrationRequest.integration:type_name -> api.HttpIntegration - 17, // 13: api.GetHttpIntegrationResponse.integration:type_name -> api.HttpIntegration - 17, // 14: api.UpdateHttpIntegrationRequest.integration:type_name -> api.HttpIntegration - 2, // 15: api.InfluxDbIntegration.precision:type_name -> api.InfluxDbPrecision - 3, // 16: api.InfluxDbIntegration.version:type_name -> api.InfluxDbVersion - 23, // 17: api.CreateInfluxDbIntegrationRequest.integration:type_name -> api.InfluxDbIntegration - 23, // 18: api.GetInfluxDbIntegrationResponse.integration:type_name -> api.InfluxDbIntegration - 23, // 19: api.UpdateInfluxDbIntegrationRequest.integration:type_name -> api.InfluxDbIntegration - 29, // 20: api.CreateThingsBoardIntegrationRequest.integration:type_name -> api.ThingsBoardIntegration - 29, // 21: api.GetThingsBoardIntegrationResponse.integration:type_name -> api.ThingsBoardIntegration - 29, // 22: api.UpdateThingsBoardIntegrationRequest.integration:type_name -> api.ThingsBoardIntegration - 35, // 23: api.CreateMyDevicesIntegrationRequest.integration:type_name -> api.MyDevicesIntegration - 35, // 24: api.GetMyDevicesIntegrationResponse.integration:type_name -> api.MyDevicesIntegration - 35, // 25: api.UpdateMyDevicesIntegrationRequest.integration:type_name -> api.MyDevicesIntegration - 42, // 26: api.LoraCloudIntegration.modem_geolocation_services:type_name -> api.LoraCloudModemGeolocationServices - 41, // 27: api.CreateLoraCloudIntegrationRequest.integration:type_name -> api.LoraCloudIntegration - 41, // 28: api.GetLoraCloudIntegrationResponse.integration:type_name -> api.LoraCloudIntegration - 41, // 29: api.UpdateLoraCloudIntegrationRequest.integration:type_name -> api.LoraCloudIntegration - 0, // 30: api.GcpPubSubIntegration.encoding:type_name -> api.Encoding - 48, // 31: api.CreateGcpPubSubIntegrationRequest.integration:type_name -> api.GcpPubSubIntegration - 48, // 32: api.GetGcpPubSubIntegrationResponse.integration:type_name -> api.GcpPubSubIntegration - 48, // 33: api.UpdateGcpPubSubIntegrationRequest.integration:type_name -> api.GcpPubSubIntegration - 0, // 34: api.AwsSnsIntegration.encoding:type_name -> api.Encoding - 54, // 35: api.CreateAwsSnsIntegrationRequest.integration:type_name -> api.AwsSnsIntegration - 54, // 36: api.GetAwsSnsIntegrationResponse.integration:type_name -> api.AwsSnsIntegration - 54, // 37: api.UpdateAwsSnsIntegrationRequest.integration:type_name -> api.AwsSnsIntegration - 0, // 38: api.AzureServiceBusIntegration.encoding:type_name -> api.Encoding - 60, // 39: api.CreateAzureServiceBusIntegrationRequest.integration:type_name -> api.AzureServiceBusIntegration - 60, // 40: api.GetAzureServiceBusIntegrationResponse.integration:type_name -> api.AzureServiceBusIntegration - 60, // 41: api.UpdateAzureServiceBusIntegrationRequest.integration:type_name -> api.AzureServiceBusIntegration - 66, // 42: api.CreatePilotThingsIntegrationRequest.integration:type_name -> api.PilotThingsIntegration - 66, // 43: api.GetPilotThingsIntegrationResponse.integration:type_name -> api.PilotThingsIntegration - 66, // 44: api.UpdatePilotThingsIntegrationRequest.integration:type_name -> api.PilotThingsIntegration - 72, // 45: api.CreateIftttIntegrationRequest.integration:type_name -> api.IftttIntegration - 72, // 46: api.GetIftttIntegrationResponse.integration:type_name -> api.IftttIntegration - 72, // 47: api.UpdateIftttIntegrationRequest.integration:type_name -> api.IftttIntegration - 81, // 48: api.GenerateMqttIntegrationClientCertificateResponse.expires_at:type_name -> google.protobuf.Timestamp - 6, // 49: api.ApplicationService.Create:input_type -> api.CreateApplicationRequest - 8, // 50: api.ApplicationService.Get:input_type -> api.GetApplicationRequest - 10, // 51: api.ApplicationService.Update:input_type -> api.UpdateApplicationRequest - 11, // 52: api.ApplicationService.Delete:input_type -> api.DeleteApplicationRequest - 12, // 53: api.ApplicationService.List:input_type -> api.ListApplicationsRequest - 14, // 54: api.ApplicationService.ListIntegrations:input_type -> api.ListIntegrationsRequest - 18, // 55: api.ApplicationService.CreateHttpIntegration:input_type -> api.CreateHttpIntegrationRequest - 19, // 56: api.ApplicationService.GetHttpIntegration:input_type -> api.GetHttpIntegrationRequest - 21, // 57: api.ApplicationService.UpdateHttpIntegration:input_type -> api.UpdateHttpIntegrationRequest - 22, // 58: api.ApplicationService.DeleteHttpIntegration:input_type -> api.DeleteHttpIntegrationRequest - 24, // 59: api.ApplicationService.CreateInfluxDbIntegration:input_type -> api.CreateInfluxDbIntegrationRequest - 25, // 60: api.ApplicationService.GetInfluxDbIntegration:input_type -> api.GetInfluxDbIntegrationRequest - 27, // 61: api.ApplicationService.UpdateInfluxDbIntegration:input_type -> api.UpdateInfluxDbIntegrationRequest - 28, // 62: api.ApplicationService.DeleteInfluxDbIntegration:input_type -> api.DeleteInfluxDbIntegrationRequest - 30, // 63: api.ApplicationService.CreateThingsBoardIntegration:input_type -> api.CreateThingsBoardIntegrationRequest - 31, // 64: api.ApplicationService.GetThingsBoardIntegration:input_type -> api.GetThingsBoardIntegrationRequest - 33, // 65: api.ApplicationService.UpdateThingsBoardIntegration:input_type -> api.UpdateThingsBoardIntegrationRequest - 34, // 66: api.ApplicationService.DeleteThingsBoardIntegration:input_type -> api.DeleteThingsBoardIntegrationRequest - 36, // 67: api.ApplicationService.CreateMyDevicesIntegration:input_type -> api.CreateMyDevicesIntegrationRequest - 37, // 68: api.ApplicationService.GetMyDevicesIntegration:input_type -> api.GetMyDevicesIntegrationRequest - 39, // 69: api.ApplicationService.UpdateMyDevicesIntegration:input_type -> api.UpdateMyDevicesIntegrationRequest - 40, // 70: api.ApplicationService.DeleteMyDevicesIntegration:input_type -> api.DeleteMyDevicesIntegrationRequest - 43, // 71: api.ApplicationService.CreateLoraCloudIntegration:input_type -> api.CreateLoraCloudIntegrationRequest - 44, // 72: api.ApplicationService.GetLoraCloudIntegration:input_type -> api.GetLoraCloudIntegrationRequest - 46, // 73: api.ApplicationService.UpdateLoraCloudIntegration:input_type -> api.UpdateLoraCloudIntegrationRequest - 47, // 74: api.ApplicationService.DeleteLoraCloudIntegration:input_type -> api.DeleteLoraCloudIntegrationRequest - 49, // 75: api.ApplicationService.CreateGcpPubSubIntegration:input_type -> api.CreateGcpPubSubIntegrationRequest - 50, // 76: api.ApplicationService.GetGcpPubSubIntegration:input_type -> api.GetGcpPubSubIntegrationRequest - 52, // 77: api.ApplicationService.UpdateGcpPubSubIntegration:input_type -> api.UpdateGcpPubSubIntegrationRequest - 53, // 78: api.ApplicationService.DeleteGcpPubSubIntegration:input_type -> api.DeleteGcpPubSubIntegrationRequest - 55, // 79: api.ApplicationService.CreateAwsSnsIntegration:input_type -> api.CreateAwsSnsIntegrationRequest - 56, // 80: api.ApplicationService.GetAwsSnsIntegration:input_type -> api.GetAwsSnsIntegrationRequest - 58, // 81: api.ApplicationService.UpdateAwsSnsIntegration:input_type -> api.UpdateAwsSnsIntegrationRequest - 59, // 82: api.ApplicationService.DeleteAwsSnsIntegration:input_type -> api.DeleteAwsSnsIntegrationRequest - 61, // 83: api.ApplicationService.CreateAzureServiceBusIntegration:input_type -> api.CreateAzureServiceBusIntegrationRequest - 62, // 84: api.ApplicationService.GetAzureServiceBusIntegration:input_type -> api.GetAzureServiceBusIntegrationRequest - 64, // 85: api.ApplicationService.UpdateAzureServiceBusIntegration:input_type -> api.UpdateAzureServiceBusIntegrationRequest - 65, // 86: api.ApplicationService.DeleteAzureServiceBusIntegration:input_type -> api.DeleteAzureServiceBusIntegrationRequest - 67, // 87: api.ApplicationService.CreatePilotThingsIntegration:input_type -> api.CreatePilotThingsIntegrationRequest - 68, // 88: api.ApplicationService.GetPilotThingsIntegration:input_type -> api.GetPilotThingsIntegrationRequest - 70, // 89: api.ApplicationService.UpdatePilotThingsIntegration:input_type -> api.UpdatePilotThingsIntegrationRequest - 71, // 90: api.ApplicationService.DeletePilotThingsIntegration:input_type -> api.DeletePilotThingsIntegrationRequest - 73, // 91: api.ApplicationService.CreateIftttIntegration:input_type -> api.CreateIftttIntegrationRequest - 74, // 92: api.ApplicationService.GetIftttIntegration:input_type -> api.GetIftttIntegrationRequest - 76, // 93: api.ApplicationService.UpdateIftttIntegration:input_type -> api.UpdateIftttIntegrationRequest - 77, // 94: api.ApplicationService.DeleteIftttIntegration:input_type -> api.DeleteIftttIntegrationRequest - 78, // 95: api.ApplicationService.GenerateMqttIntegrationClientCertificate:input_type -> api.GenerateMqttIntegrationClientCertificateRequest - 7, // 96: api.ApplicationService.Create:output_type -> api.CreateApplicationResponse - 9, // 97: api.ApplicationService.Get:output_type -> api.GetApplicationResponse - 82, // 98: api.ApplicationService.Update:output_type -> google.protobuf.Empty - 82, // 99: api.ApplicationService.Delete:output_type -> google.protobuf.Empty - 13, // 100: api.ApplicationService.List:output_type -> api.ListApplicationsResponse - 16, // 101: api.ApplicationService.ListIntegrations:output_type -> api.ListIntegrationsResponse - 82, // 102: api.ApplicationService.CreateHttpIntegration:output_type -> google.protobuf.Empty - 20, // 103: api.ApplicationService.GetHttpIntegration:output_type -> api.GetHttpIntegrationResponse - 82, // 104: api.ApplicationService.UpdateHttpIntegration:output_type -> google.protobuf.Empty - 82, // 105: api.ApplicationService.DeleteHttpIntegration:output_type -> google.protobuf.Empty - 82, // 106: api.ApplicationService.CreateInfluxDbIntegration:output_type -> google.protobuf.Empty - 26, // 107: api.ApplicationService.GetInfluxDbIntegration:output_type -> api.GetInfluxDbIntegrationResponse - 82, // 108: api.ApplicationService.UpdateInfluxDbIntegration:output_type -> google.protobuf.Empty - 82, // 109: api.ApplicationService.DeleteInfluxDbIntegration:output_type -> google.protobuf.Empty - 82, // 110: api.ApplicationService.CreateThingsBoardIntegration:output_type -> google.protobuf.Empty - 32, // 111: api.ApplicationService.GetThingsBoardIntegration:output_type -> api.GetThingsBoardIntegrationResponse - 82, // 112: api.ApplicationService.UpdateThingsBoardIntegration:output_type -> google.protobuf.Empty - 82, // 113: api.ApplicationService.DeleteThingsBoardIntegration:output_type -> google.protobuf.Empty - 82, // 114: api.ApplicationService.CreateMyDevicesIntegration:output_type -> google.protobuf.Empty - 38, // 115: api.ApplicationService.GetMyDevicesIntegration:output_type -> api.GetMyDevicesIntegrationResponse - 82, // 116: api.ApplicationService.UpdateMyDevicesIntegration:output_type -> google.protobuf.Empty - 82, // 117: api.ApplicationService.DeleteMyDevicesIntegration:output_type -> google.protobuf.Empty - 82, // 118: api.ApplicationService.CreateLoraCloudIntegration:output_type -> google.protobuf.Empty - 45, // 119: api.ApplicationService.GetLoraCloudIntegration:output_type -> api.GetLoraCloudIntegrationResponse - 82, // 120: api.ApplicationService.UpdateLoraCloudIntegration:output_type -> google.protobuf.Empty - 82, // 121: api.ApplicationService.DeleteLoraCloudIntegration:output_type -> google.protobuf.Empty - 82, // 122: api.ApplicationService.CreateGcpPubSubIntegration:output_type -> google.protobuf.Empty - 51, // 123: api.ApplicationService.GetGcpPubSubIntegration:output_type -> api.GetGcpPubSubIntegrationResponse - 82, // 124: api.ApplicationService.UpdateGcpPubSubIntegration:output_type -> google.protobuf.Empty - 82, // 125: api.ApplicationService.DeleteGcpPubSubIntegration:output_type -> google.protobuf.Empty - 82, // 126: api.ApplicationService.CreateAwsSnsIntegration:output_type -> google.protobuf.Empty - 57, // 127: api.ApplicationService.GetAwsSnsIntegration:output_type -> api.GetAwsSnsIntegrationResponse - 82, // 128: api.ApplicationService.UpdateAwsSnsIntegration:output_type -> google.protobuf.Empty - 82, // 129: api.ApplicationService.DeleteAwsSnsIntegration:output_type -> google.protobuf.Empty - 82, // 130: api.ApplicationService.CreateAzureServiceBusIntegration:output_type -> google.protobuf.Empty - 63, // 131: api.ApplicationService.GetAzureServiceBusIntegration:output_type -> api.GetAzureServiceBusIntegrationResponse - 82, // 132: api.ApplicationService.UpdateAzureServiceBusIntegration:output_type -> google.protobuf.Empty - 82, // 133: api.ApplicationService.DeleteAzureServiceBusIntegration:output_type -> google.protobuf.Empty - 82, // 134: api.ApplicationService.CreatePilotThingsIntegration:output_type -> google.protobuf.Empty - 69, // 135: api.ApplicationService.GetPilotThingsIntegration:output_type -> api.GetPilotThingsIntegrationResponse - 82, // 136: api.ApplicationService.UpdatePilotThingsIntegration:output_type -> google.protobuf.Empty - 82, // 137: api.ApplicationService.DeletePilotThingsIntegration:output_type -> google.protobuf.Empty - 82, // 138: api.ApplicationService.CreateIftttIntegration:output_type -> google.protobuf.Empty - 75, // 139: api.ApplicationService.GetIftttIntegration:output_type -> api.GetIftttIntegrationResponse - 82, // 140: api.ApplicationService.UpdateIftttIntegration:output_type -> google.protobuf.Empty - 82, // 141: api.ApplicationService.DeleteIftttIntegration:output_type -> google.protobuf.Empty - 79, // 142: api.ApplicationService.GenerateMqttIntegrationClientCertificate:output_type -> api.GenerateMqttIntegrationClientCertificateResponse - 96, // [96:143] is the sub-list for method output_type - 49, // [49:96] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 80, // 0: api.Application.tags:type_name -> api.Application.TagsEntry + 82, // 1: api.ApplicationListItem.created_at:type_name -> google.protobuf.Timestamp + 82, // 2: api.ApplicationListItem.updated_at:type_name -> google.protobuf.Timestamp + 4, // 3: api.CreateApplicationRequest.application:type_name -> api.Application + 4, // 4: api.GetApplicationResponse.application:type_name -> api.Application + 82, // 5: api.GetApplicationResponse.created_at:type_name -> google.protobuf.Timestamp + 82, // 6: api.GetApplicationResponse.updated_at:type_name -> google.protobuf.Timestamp + 4, // 7: api.UpdateApplicationRequest.application:type_name -> api.Application + 5, // 8: api.ListApplicationsResponse.result:type_name -> api.ApplicationListItem + 1, // 9: api.IntegrationListItem.kind:type_name -> api.IntegrationKind + 15, // 10: api.ListIntegrationsResponse.result:type_name -> api.IntegrationListItem + 81, // 11: api.HttpIntegration.headers:type_name -> api.HttpIntegration.HeadersEntry + 0, // 12: api.HttpIntegration.encoding:type_name -> api.Encoding + 17, // 13: api.CreateHttpIntegrationRequest.integration:type_name -> api.HttpIntegration + 17, // 14: api.GetHttpIntegrationResponse.integration:type_name -> api.HttpIntegration + 17, // 15: api.UpdateHttpIntegrationRequest.integration:type_name -> api.HttpIntegration + 2, // 16: api.InfluxDbIntegration.precision:type_name -> api.InfluxDbPrecision + 3, // 17: api.InfluxDbIntegration.version:type_name -> api.InfluxDbVersion + 23, // 18: api.CreateInfluxDbIntegrationRequest.integration:type_name -> api.InfluxDbIntegration + 23, // 19: api.GetInfluxDbIntegrationResponse.integration:type_name -> api.InfluxDbIntegration + 23, // 20: api.UpdateInfluxDbIntegrationRequest.integration:type_name -> api.InfluxDbIntegration + 29, // 21: api.CreateThingsBoardIntegrationRequest.integration:type_name -> api.ThingsBoardIntegration + 29, // 22: api.GetThingsBoardIntegrationResponse.integration:type_name -> api.ThingsBoardIntegration + 29, // 23: api.UpdateThingsBoardIntegrationRequest.integration:type_name -> api.ThingsBoardIntegration + 35, // 24: api.CreateMyDevicesIntegrationRequest.integration:type_name -> api.MyDevicesIntegration + 35, // 25: api.GetMyDevicesIntegrationResponse.integration:type_name -> api.MyDevicesIntegration + 35, // 26: api.UpdateMyDevicesIntegrationRequest.integration:type_name -> api.MyDevicesIntegration + 42, // 27: api.LoraCloudIntegration.modem_geolocation_services:type_name -> api.LoraCloudModemGeolocationServices + 41, // 28: api.CreateLoraCloudIntegrationRequest.integration:type_name -> api.LoraCloudIntegration + 41, // 29: api.GetLoraCloudIntegrationResponse.integration:type_name -> api.LoraCloudIntegration + 41, // 30: api.UpdateLoraCloudIntegrationRequest.integration:type_name -> api.LoraCloudIntegration + 0, // 31: api.GcpPubSubIntegration.encoding:type_name -> api.Encoding + 48, // 32: api.CreateGcpPubSubIntegrationRequest.integration:type_name -> api.GcpPubSubIntegration + 48, // 33: api.GetGcpPubSubIntegrationResponse.integration:type_name -> api.GcpPubSubIntegration + 48, // 34: api.UpdateGcpPubSubIntegrationRequest.integration:type_name -> api.GcpPubSubIntegration + 0, // 35: api.AwsSnsIntegration.encoding:type_name -> api.Encoding + 54, // 36: api.CreateAwsSnsIntegrationRequest.integration:type_name -> api.AwsSnsIntegration + 54, // 37: api.GetAwsSnsIntegrationResponse.integration:type_name -> api.AwsSnsIntegration + 54, // 38: api.UpdateAwsSnsIntegrationRequest.integration:type_name -> api.AwsSnsIntegration + 0, // 39: api.AzureServiceBusIntegration.encoding:type_name -> api.Encoding + 60, // 40: api.CreateAzureServiceBusIntegrationRequest.integration:type_name -> api.AzureServiceBusIntegration + 60, // 41: api.GetAzureServiceBusIntegrationResponse.integration:type_name -> api.AzureServiceBusIntegration + 60, // 42: api.UpdateAzureServiceBusIntegrationRequest.integration:type_name -> api.AzureServiceBusIntegration + 66, // 43: api.CreatePilotThingsIntegrationRequest.integration:type_name -> api.PilotThingsIntegration + 66, // 44: api.GetPilotThingsIntegrationResponse.integration:type_name -> api.PilotThingsIntegration + 66, // 45: api.UpdatePilotThingsIntegrationRequest.integration:type_name -> api.PilotThingsIntegration + 72, // 46: api.CreateIftttIntegrationRequest.integration:type_name -> api.IftttIntegration + 72, // 47: api.GetIftttIntegrationResponse.integration:type_name -> api.IftttIntegration + 72, // 48: api.UpdateIftttIntegrationRequest.integration:type_name -> api.IftttIntegration + 82, // 49: api.GenerateMqttIntegrationClientCertificateResponse.expires_at:type_name -> google.protobuf.Timestamp + 6, // 50: api.ApplicationService.Create:input_type -> api.CreateApplicationRequest + 8, // 51: api.ApplicationService.Get:input_type -> api.GetApplicationRequest + 10, // 52: api.ApplicationService.Update:input_type -> api.UpdateApplicationRequest + 11, // 53: api.ApplicationService.Delete:input_type -> api.DeleteApplicationRequest + 12, // 54: api.ApplicationService.List:input_type -> api.ListApplicationsRequest + 14, // 55: api.ApplicationService.ListIntegrations:input_type -> api.ListIntegrationsRequest + 18, // 56: api.ApplicationService.CreateHttpIntegration:input_type -> api.CreateHttpIntegrationRequest + 19, // 57: api.ApplicationService.GetHttpIntegration:input_type -> api.GetHttpIntegrationRequest + 21, // 58: api.ApplicationService.UpdateHttpIntegration:input_type -> api.UpdateHttpIntegrationRequest + 22, // 59: api.ApplicationService.DeleteHttpIntegration:input_type -> api.DeleteHttpIntegrationRequest + 24, // 60: api.ApplicationService.CreateInfluxDbIntegration:input_type -> api.CreateInfluxDbIntegrationRequest + 25, // 61: api.ApplicationService.GetInfluxDbIntegration:input_type -> api.GetInfluxDbIntegrationRequest + 27, // 62: api.ApplicationService.UpdateInfluxDbIntegration:input_type -> api.UpdateInfluxDbIntegrationRequest + 28, // 63: api.ApplicationService.DeleteInfluxDbIntegration:input_type -> api.DeleteInfluxDbIntegrationRequest + 30, // 64: api.ApplicationService.CreateThingsBoardIntegration:input_type -> api.CreateThingsBoardIntegrationRequest + 31, // 65: api.ApplicationService.GetThingsBoardIntegration:input_type -> api.GetThingsBoardIntegrationRequest + 33, // 66: api.ApplicationService.UpdateThingsBoardIntegration:input_type -> api.UpdateThingsBoardIntegrationRequest + 34, // 67: api.ApplicationService.DeleteThingsBoardIntegration:input_type -> api.DeleteThingsBoardIntegrationRequest + 36, // 68: api.ApplicationService.CreateMyDevicesIntegration:input_type -> api.CreateMyDevicesIntegrationRequest + 37, // 69: api.ApplicationService.GetMyDevicesIntegration:input_type -> api.GetMyDevicesIntegrationRequest + 39, // 70: api.ApplicationService.UpdateMyDevicesIntegration:input_type -> api.UpdateMyDevicesIntegrationRequest + 40, // 71: api.ApplicationService.DeleteMyDevicesIntegration:input_type -> api.DeleteMyDevicesIntegrationRequest + 43, // 72: api.ApplicationService.CreateLoraCloudIntegration:input_type -> api.CreateLoraCloudIntegrationRequest + 44, // 73: api.ApplicationService.GetLoraCloudIntegration:input_type -> api.GetLoraCloudIntegrationRequest + 46, // 74: api.ApplicationService.UpdateLoraCloudIntegration:input_type -> api.UpdateLoraCloudIntegrationRequest + 47, // 75: api.ApplicationService.DeleteLoraCloudIntegration:input_type -> api.DeleteLoraCloudIntegrationRequest + 49, // 76: api.ApplicationService.CreateGcpPubSubIntegration:input_type -> api.CreateGcpPubSubIntegrationRequest + 50, // 77: api.ApplicationService.GetGcpPubSubIntegration:input_type -> api.GetGcpPubSubIntegrationRequest + 52, // 78: api.ApplicationService.UpdateGcpPubSubIntegration:input_type -> api.UpdateGcpPubSubIntegrationRequest + 53, // 79: api.ApplicationService.DeleteGcpPubSubIntegration:input_type -> api.DeleteGcpPubSubIntegrationRequest + 55, // 80: api.ApplicationService.CreateAwsSnsIntegration:input_type -> api.CreateAwsSnsIntegrationRequest + 56, // 81: api.ApplicationService.GetAwsSnsIntegration:input_type -> api.GetAwsSnsIntegrationRequest + 58, // 82: api.ApplicationService.UpdateAwsSnsIntegration:input_type -> api.UpdateAwsSnsIntegrationRequest + 59, // 83: api.ApplicationService.DeleteAwsSnsIntegration:input_type -> api.DeleteAwsSnsIntegrationRequest + 61, // 84: api.ApplicationService.CreateAzureServiceBusIntegration:input_type -> api.CreateAzureServiceBusIntegrationRequest + 62, // 85: api.ApplicationService.GetAzureServiceBusIntegration:input_type -> api.GetAzureServiceBusIntegrationRequest + 64, // 86: api.ApplicationService.UpdateAzureServiceBusIntegration:input_type -> api.UpdateAzureServiceBusIntegrationRequest + 65, // 87: api.ApplicationService.DeleteAzureServiceBusIntegration:input_type -> api.DeleteAzureServiceBusIntegrationRequest + 67, // 88: api.ApplicationService.CreatePilotThingsIntegration:input_type -> api.CreatePilotThingsIntegrationRequest + 68, // 89: api.ApplicationService.GetPilotThingsIntegration:input_type -> api.GetPilotThingsIntegrationRequest + 70, // 90: api.ApplicationService.UpdatePilotThingsIntegration:input_type -> api.UpdatePilotThingsIntegrationRequest + 71, // 91: api.ApplicationService.DeletePilotThingsIntegration:input_type -> api.DeletePilotThingsIntegrationRequest + 73, // 92: api.ApplicationService.CreateIftttIntegration:input_type -> api.CreateIftttIntegrationRequest + 74, // 93: api.ApplicationService.GetIftttIntegration:input_type -> api.GetIftttIntegrationRequest + 76, // 94: api.ApplicationService.UpdateIftttIntegration:input_type -> api.UpdateIftttIntegrationRequest + 77, // 95: api.ApplicationService.DeleteIftttIntegration:input_type -> api.DeleteIftttIntegrationRequest + 78, // 96: api.ApplicationService.GenerateMqttIntegrationClientCertificate:input_type -> api.GenerateMqttIntegrationClientCertificateRequest + 7, // 97: api.ApplicationService.Create:output_type -> api.CreateApplicationResponse + 9, // 98: api.ApplicationService.Get:output_type -> api.GetApplicationResponse + 83, // 99: api.ApplicationService.Update:output_type -> google.protobuf.Empty + 83, // 100: api.ApplicationService.Delete:output_type -> google.protobuf.Empty + 13, // 101: api.ApplicationService.List:output_type -> api.ListApplicationsResponse + 16, // 102: api.ApplicationService.ListIntegrations:output_type -> api.ListIntegrationsResponse + 83, // 103: api.ApplicationService.CreateHttpIntegration:output_type -> google.protobuf.Empty + 20, // 104: api.ApplicationService.GetHttpIntegration:output_type -> api.GetHttpIntegrationResponse + 83, // 105: api.ApplicationService.UpdateHttpIntegration:output_type -> google.protobuf.Empty + 83, // 106: api.ApplicationService.DeleteHttpIntegration:output_type -> google.protobuf.Empty + 83, // 107: api.ApplicationService.CreateInfluxDbIntegration:output_type -> google.protobuf.Empty + 26, // 108: api.ApplicationService.GetInfluxDbIntegration:output_type -> api.GetInfluxDbIntegrationResponse + 83, // 109: api.ApplicationService.UpdateInfluxDbIntegration:output_type -> google.protobuf.Empty + 83, // 110: api.ApplicationService.DeleteInfluxDbIntegration:output_type -> google.protobuf.Empty + 83, // 111: api.ApplicationService.CreateThingsBoardIntegration:output_type -> google.protobuf.Empty + 32, // 112: api.ApplicationService.GetThingsBoardIntegration:output_type -> api.GetThingsBoardIntegrationResponse + 83, // 113: api.ApplicationService.UpdateThingsBoardIntegration:output_type -> google.protobuf.Empty + 83, // 114: api.ApplicationService.DeleteThingsBoardIntegration:output_type -> google.protobuf.Empty + 83, // 115: api.ApplicationService.CreateMyDevicesIntegration:output_type -> google.protobuf.Empty + 38, // 116: api.ApplicationService.GetMyDevicesIntegration:output_type -> api.GetMyDevicesIntegrationResponse + 83, // 117: api.ApplicationService.UpdateMyDevicesIntegration:output_type -> google.protobuf.Empty + 83, // 118: api.ApplicationService.DeleteMyDevicesIntegration:output_type -> google.protobuf.Empty + 83, // 119: api.ApplicationService.CreateLoraCloudIntegration:output_type -> google.protobuf.Empty + 45, // 120: api.ApplicationService.GetLoraCloudIntegration:output_type -> api.GetLoraCloudIntegrationResponse + 83, // 121: api.ApplicationService.UpdateLoraCloudIntegration:output_type -> google.protobuf.Empty + 83, // 122: api.ApplicationService.DeleteLoraCloudIntegration:output_type -> google.protobuf.Empty + 83, // 123: api.ApplicationService.CreateGcpPubSubIntegration:output_type -> google.protobuf.Empty + 51, // 124: api.ApplicationService.GetGcpPubSubIntegration:output_type -> api.GetGcpPubSubIntegrationResponse + 83, // 125: api.ApplicationService.UpdateGcpPubSubIntegration:output_type -> google.protobuf.Empty + 83, // 126: api.ApplicationService.DeleteGcpPubSubIntegration:output_type -> google.protobuf.Empty + 83, // 127: api.ApplicationService.CreateAwsSnsIntegration:output_type -> google.protobuf.Empty + 57, // 128: api.ApplicationService.GetAwsSnsIntegration:output_type -> api.GetAwsSnsIntegrationResponse + 83, // 129: api.ApplicationService.UpdateAwsSnsIntegration:output_type -> google.protobuf.Empty + 83, // 130: api.ApplicationService.DeleteAwsSnsIntegration:output_type -> google.protobuf.Empty + 83, // 131: api.ApplicationService.CreateAzureServiceBusIntegration:output_type -> google.protobuf.Empty + 63, // 132: api.ApplicationService.GetAzureServiceBusIntegration:output_type -> api.GetAzureServiceBusIntegrationResponse + 83, // 133: api.ApplicationService.UpdateAzureServiceBusIntegration:output_type -> google.protobuf.Empty + 83, // 134: api.ApplicationService.DeleteAzureServiceBusIntegration:output_type -> google.protobuf.Empty + 83, // 135: api.ApplicationService.CreatePilotThingsIntegration:output_type -> google.protobuf.Empty + 69, // 136: api.ApplicationService.GetPilotThingsIntegration:output_type -> api.GetPilotThingsIntegrationResponse + 83, // 137: api.ApplicationService.UpdatePilotThingsIntegration:output_type -> google.protobuf.Empty + 83, // 138: api.ApplicationService.DeletePilotThingsIntegration:output_type -> google.protobuf.Empty + 83, // 139: api.ApplicationService.CreateIftttIntegration:output_type -> google.protobuf.Empty + 75, // 140: api.ApplicationService.GetIftttIntegration:output_type -> api.GetIftttIntegrationResponse + 83, // 141: api.ApplicationService.UpdateIftttIntegration:output_type -> google.protobuf.Empty + 83, // 142: api.ApplicationService.DeleteIftttIntegration:output_type -> google.protobuf.Empty + 79, // 143: api.ApplicationService.GenerateMqttIntegrationClientCertificate:output_type -> api.GenerateMqttIntegrationClientCertificateResponse + 97, // [97:144] is the sub-list for method output_type + 50, // [50:97] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_api_application_proto_init() } @@ -6788,7 +6809,7 @@ func file_api_application_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_application_proto_rawDesc, NumEnums: 4, - NumMessages: 77, + NumMessages: 78, NumExtensions: 0, NumServices: 1, }, diff --git a/api/go/api/device.pb.go b/api/go/api/device.pb.go index bb760fa6..f720b5a3 100644 --- a/api/go/api/device.pb.go +++ b/api/go/api/device.pb.go @@ -51,8 +51,8 @@ type Device struct { // exposed in the event payloads. Variables map[string]string `protobuf:"bytes,8,rep,name=variables,proto3" json:"variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Tags (user defined). - // These tags are exposed in the event payloads or to integration. Tags are - // intended for aggregation and filtering. + // These tags can be used to add additional information to the device. + // These tags are exposed in all the integration events. Tags map[string]string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // JoinEUI (optional, EUI64). // This field will be automatically set / updated on OTAA. However, in some diff --git a/api/go/api/device_profile.pb.go b/api/go/api/device_profile.pb.go index 9eb9acd4..5f816472 100644 --- a/api/go/api/device_profile.pb.go +++ b/api/go/api/device_profile.pb.go @@ -81,7 +81,8 @@ type MeasurementKind int32 const ( // Unknown (in which case it is not tracked). MeasurementKind_UNKNOWN MeasurementKind = 0 - // Incrementing counters that never decrease (these are not reset on each reading). + // Incrementing counters that never decrease (these are not reset on each + // reading). MeasurementKind_COUNTER MeasurementKind = 1 // Counters that do get reset upon reading. MeasurementKind_ABSOLUTE MeasurementKind = 2 @@ -354,8 +355,8 @@ type DeviceProfile struct { // been received, the device is considered inactive. UplinkInterval uint32 `protobuf:"varint,11,opt,name=uplink_interval,json=uplinkInterval,proto3" json:"uplink_interval,omitempty"` // Device-status request interval (times / day). - // This defines the times per day that ChirpStack will request the device-status - // from the device. + // This defines the times per day that ChirpStack will request the + // device-status from the device. DeviceStatusReqInterval uint32 `protobuf:"varint,12,opt,name=device_status_req_interval,json=deviceStatusReqInterval,proto3" json:"device_status_req_interval,omitempty"` // Supports OTAA. SupportsOtaa bool `protobuf:"varint,13,opt,name=supports_otaa,json=supportsOtaa,proto3" json:"supports_otaa,omitempty"` @@ -364,7 +365,8 @@ type DeviceProfile struct { // Supports Class-C. SupportsClassC bool `protobuf:"varint,15,opt,name=supports_class_c,json=supportsClassC,proto3" json:"supports_class_c,omitempty"` // Class-B timeout (seconds). - // This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). + // This is the maximum time ChirpStack will wait to receive an acknowledgement + // from the device (if requested). ClassBTimeout uint32 `protobuf:"varint,16,opt,name=class_b_timeout,json=classBTimeout,proto3" json:"class_b_timeout,omitempty"` // Class-B ping-slots per beacon period. // Valid options are: 0 - 7. @@ -376,7 +378,8 @@ type DeviceProfile struct { // Class-B ping-slot freq (Hz). ClassBPingSlotFreq uint32 `protobuf:"varint,19,opt,name=class_b_ping_slot_freq,json=classBPingSlotFreq,proto3" json:"class_b_ping_slot_freq,omitempty"` // Class-C timeout (seconds). - // This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). + // This is the maximum time ChirpStack will wait to receive an acknowledgement + // from the device (if requested). ClassCTimeout uint32 `protobuf:"varint,20,opt,name=class_c_timeout,json=classCTimeout,proto3" json:"class_c_timeout,omitempty"` // RX1 delay (for ABP). AbpRx1Delay uint32 `protobuf:"varint,21,opt,name=abp_rx1_delay,json=abpRx1Delay,proto3" json:"abp_rx1_delay,omitempty"` @@ -386,7 +389,10 @@ type DeviceProfile struct { AbpRx2Dr uint32 `protobuf:"varint,23,opt,name=abp_rx2_dr,json=abpRx2Dr,proto3" json:"abp_rx2_dr,omitempty"` // RX2 frequency (for ABP, Hz). AbpRx2Freq uint32 `protobuf:"varint,24,opt,name=abp_rx2_freq,json=abpRx2Freq,proto3" json:"abp_rx2_freq,omitempty"` - // User defined tags. + // Tags (user defined). + // These tags can be used to add additional information the the + // device-profile. These tags are exposed in all the integration events of + // devices using this device-profile. Tags map[string]string `protobuf:"bytes,25,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Measurements. // If defined, ChirpStack will visualize these metrics in the web-interface. diff --git a/api/go/api/tenant.pb.go b/api/go/api/tenant.pb.go index adb1fa90..9575e9fc 100644 --- a/api/go/api/tenant.pb.go +++ b/api/go/api/tenant.pb.go @@ -52,6 +52,10 @@ type Tenant struct { // do want to share uplinks with other tenants (private_gateways_up=false), // but you want to prevent other tenants from using gateway airtime. PrivateGatewaysDown bool `protobuf:"varint,8,opt,name=private_gateways_down,json=privateGatewaysDown,proto3" json:"private_gateways_down,omitempty"` + // Tags (user defined). + // These tags can be used to add additional information to the tenant. These + // tags are NOT exposed in the integration events. + Tags map[string]string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Tenant) Reset() { @@ -142,6 +146,13 @@ func (x *Tenant) GetPrivateGatewaysDown() bool { return false } +func (x *Tenant) GetTags() map[string]string { + if x != nil { + return x.Tags + } + return nil +} + type TenantListItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1320,7 +1331,7 @@ var file_api_tenant_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xb4, 0x02, 0x0a, 0x06, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x0e, + 0x6f, 0x74, 0x6f, 0x22, 0x98, 0x03, 0x0a, 0x06, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, @@ -1339,222 +1350,229 @@ var file_api_tenant_proto_rawDesc = []byte{ 0x77, 0x61, 0x79, 0x73, 0x55, 0x70, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0x90, 0x03, 0x0a, 0x0e, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x68, - 0x61, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x48, 0x61, 0x76, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x11, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x73, 0x55, 0x70, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, - 0x61, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x0a, - 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x26, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xae, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x3a, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, - 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x74, 0x22, 0x25, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, + 0x03, 0x0a, 0x0e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, + 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x76, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x48, 0x61, 0x76, 0x65, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x73, 0x55, 0x70, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, + 0x61, 0x78, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x3a, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x26, 0x0a, + 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x73, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x63, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0xc5, 0x01, 0x0a, 0x0a, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x69, - 0x73, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xc3, 0x02, 0x0a, 0x12, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, - 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x22, 0x48, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4b, 0x0a, 0x17, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x16, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x6b, - 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xae, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x3a, 0x0a, 0x13, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x06, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x22, 0x25, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x73, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x22, 0x63, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0xa2, 0x08, 0x0a, 0x0d, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, - 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc5, 0x01, 0x0a, 0x0a, 0x54, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x69, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, + 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, + 0xc3, 0x02, 0x0a, 0x12, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x69, + 0x73, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x22, 0x48, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, + 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, + 0x4c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbf, 0x01, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, + 0x4b, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x0b, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x0a, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x17, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x63, 0x0a, + 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x22, 0x6b, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, + 0xa2, 0x08, 0x0a, 0x0d, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x56, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x03, 0x47, 0x65, 0x74, + 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x06, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, + 0x2a, 0x1a, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, + 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x55, 0x0a, 0x06, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, + 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x73, 0x12, 0x73, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x72, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, + 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x1a, 0x40, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x74, + 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x1a, 0x18, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x64, 0x7d, 0x12, 0x55, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x4f, - 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0e, 0x12, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, - 0x73, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x41, 0x64, 0x64, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x35, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x12, 0x72, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, - 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x1a, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x0a, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x30, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, - 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x6e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, - 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x42, 0x63, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72, - 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34, - 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x79, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x42, 0x63, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0b, 0x54, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, + 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6f, 0x2f, 0x76, 0x34, 0x2f, 0x61, 0x70, 0x69, 0xaa, 0x02, 0x0e, 0x43, 0x68, 0x69, 0x72, 0x70, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x41, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1569,7 +1587,7 @@ func file_api_tenant_proto_rawDescGZIP() []byte { return file_api_tenant_proto_rawDescData } -var file_api_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_api_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_api_tenant_proto_goTypes = []interface{}{ (*Tenant)(nil), // 0: api.Tenant (*TenantListItem)(nil), // 1: api.TenantListItem @@ -1590,51 +1608,53 @@ var file_api_tenant_proto_goTypes = []interface{}{ (*DeleteTenantUserRequest)(nil), // 16: api.DeleteTenantUserRequest (*ListTenantUsersRequest)(nil), // 17: api.ListTenantUsersRequest (*ListTenantUsersResponse)(nil), // 18: api.ListTenantUsersResponse - (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp - (*emptypb.Empty)(nil), // 20: google.protobuf.Empty + nil, // 19: api.Tenant.TagsEntry + (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 21: google.protobuf.Empty } var file_api_tenant_proto_depIdxs = []int32{ - 19, // 0: api.TenantListItem.created_at:type_name -> google.protobuf.Timestamp - 19, // 1: api.TenantListItem.updated_at:type_name -> google.protobuf.Timestamp - 0, // 2: api.CreateTenantRequest.tenant:type_name -> api.Tenant - 0, // 3: api.GetTenantResponse.tenant:type_name -> api.Tenant - 19, // 4: api.GetTenantResponse.created_at:type_name -> google.protobuf.Timestamp - 19, // 5: api.GetTenantResponse.updated_at:type_name -> google.protobuf.Timestamp - 0, // 6: api.UpdateTenantRequest.tenant:type_name -> api.Tenant - 1, // 7: api.ListTenantsResponse.result:type_name -> api.TenantListItem - 19, // 8: api.TenantUserListItem.created_at:type_name -> google.protobuf.Timestamp - 19, // 9: api.TenantUserListItem.updated_at:type_name -> google.protobuf.Timestamp - 10, // 10: api.AddTenantUserRequest.tenant_user:type_name -> api.TenantUser - 10, // 11: api.GetTenantUserResponse.tenant_user:type_name -> api.TenantUser - 19, // 12: api.GetTenantUserResponse.created_at:type_name -> google.protobuf.Timestamp - 19, // 13: api.GetTenantUserResponse.updated_at:type_name -> google.protobuf.Timestamp - 10, // 14: api.UpdateTenantUserRequest.tenant_user:type_name -> api.TenantUser - 11, // 15: api.ListTenantUsersResponse.result:type_name -> api.TenantUserListItem - 2, // 16: api.TenantService.Create:input_type -> api.CreateTenantRequest - 4, // 17: api.TenantService.Get:input_type -> api.GetTenantRequest - 6, // 18: api.TenantService.Update:input_type -> api.UpdateTenantRequest - 7, // 19: api.TenantService.Delete:input_type -> api.DeleteTenantRequest - 8, // 20: api.TenantService.List:input_type -> api.ListTenantsRequest - 12, // 21: api.TenantService.AddUser:input_type -> api.AddTenantUserRequest - 13, // 22: api.TenantService.GetUser:input_type -> api.GetTenantUserRequest - 15, // 23: api.TenantService.UpdateUser:input_type -> api.UpdateTenantUserRequest - 16, // 24: api.TenantService.DeleteUser:input_type -> api.DeleteTenantUserRequest - 17, // 25: api.TenantService.ListUsers:input_type -> api.ListTenantUsersRequest - 3, // 26: api.TenantService.Create:output_type -> api.CreateTenantResponse - 5, // 27: api.TenantService.Get:output_type -> api.GetTenantResponse - 20, // 28: api.TenantService.Update:output_type -> google.protobuf.Empty - 20, // 29: api.TenantService.Delete:output_type -> google.protobuf.Empty - 9, // 30: api.TenantService.List:output_type -> api.ListTenantsResponse - 20, // 31: api.TenantService.AddUser:output_type -> google.protobuf.Empty - 14, // 32: api.TenantService.GetUser:output_type -> api.GetTenantUserResponse - 20, // 33: api.TenantService.UpdateUser:output_type -> google.protobuf.Empty - 20, // 34: api.TenantService.DeleteUser:output_type -> google.protobuf.Empty - 18, // 35: api.TenantService.ListUsers:output_type -> api.ListTenantUsersResponse - 26, // [26:36] is the sub-list for method output_type - 16, // [16:26] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 19, // 0: api.Tenant.tags:type_name -> api.Tenant.TagsEntry + 20, // 1: api.TenantListItem.created_at:type_name -> google.protobuf.Timestamp + 20, // 2: api.TenantListItem.updated_at:type_name -> google.protobuf.Timestamp + 0, // 3: api.CreateTenantRequest.tenant:type_name -> api.Tenant + 0, // 4: api.GetTenantResponse.tenant:type_name -> api.Tenant + 20, // 5: api.GetTenantResponse.created_at:type_name -> google.protobuf.Timestamp + 20, // 6: api.GetTenantResponse.updated_at:type_name -> google.protobuf.Timestamp + 0, // 7: api.UpdateTenantRequest.tenant:type_name -> api.Tenant + 1, // 8: api.ListTenantsResponse.result:type_name -> api.TenantListItem + 20, // 9: api.TenantUserListItem.created_at:type_name -> google.protobuf.Timestamp + 20, // 10: api.TenantUserListItem.updated_at:type_name -> google.protobuf.Timestamp + 10, // 11: api.AddTenantUserRequest.tenant_user:type_name -> api.TenantUser + 10, // 12: api.GetTenantUserResponse.tenant_user:type_name -> api.TenantUser + 20, // 13: api.GetTenantUserResponse.created_at:type_name -> google.protobuf.Timestamp + 20, // 14: api.GetTenantUserResponse.updated_at:type_name -> google.protobuf.Timestamp + 10, // 15: api.UpdateTenantUserRequest.tenant_user:type_name -> api.TenantUser + 11, // 16: api.ListTenantUsersResponse.result:type_name -> api.TenantUserListItem + 2, // 17: api.TenantService.Create:input_type -> api.CreateTenantRequest + 4, // 18: api.TenantService.Get:input_type -> api.GetTenantRequest + 6, // 19: api.TenantService.Update:input_type -> api.UpdateTenantRequest + 7, // 20: api.TenantService.Delete:input_type -> api.DeleteTenantRequest + 8, // 21: api.TenantService.List:input_type -> api.ListTenantsRequest + 12, // 22: api.TenantService.AddUser:input_type -> api.AddTenantUserRequest + 13, // 23: api.TenantService.GetUser:input_type -> api.GetTenantUserRequest + 15, // 24: api.TenantService.UpdateUser:input_type -> api.UpdateTenantUserRequest + 16, // 25: api.TenantService.DeleteUser:input_type -> api.DeleteTenantUserRequest + 17, // 26: api.TenantService.ListUsers:input_type -> api.ListTenantUsersRequest + 3, // 27: api.TenantService.Create:output_type -> api.CreateTenantResponse + 5, // 28: api.TenantService.Get:output_type -> api.GetTenantResponse + 21, // 29: api.TenantService.Update:output_type -> google.protobuf.Empty + 21, // 30: api.TenantService.Delete:output_type -> google.protobuf.Empty + 9, // 31: api.TenantService.List:output_type -> api.ListTenantsResponse + 21, // 32: api.TenantService.AddUser:output_type -> google.protobuf.Empty + 14, // 33: api.TenantService.GetUser:output_type -> api.GetTenantUserResponse + 21, // 34: api.TenantService.UpdateUser:output_type -> google.protobuf.Empty + 21, // 35: api.TenantService.DeleteUser:output_type -> google.protobuf.Empty + 18, // 36: api.TenantService.ListUsers:output_type -> api.ListTenantUsersResponse + 27, // [27:37] is the sub-list for method output_type + 17, // [17:27] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_api_tenant_proto_init() } @@ -1878,7 +1898,7 @@ func file_api_tenant_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_tenant_proto_rawDesc, NumEnums: 0, - NumMessages: 19, + NumMessages: 20, NumExtensions: 0, NumServices: 1, }, diff --git a/api/grpc-web/api/application_pb.d.ts b/api/grpc-web/api/application_pb.d.ts index 05195153..3fe8d914 100644 --- a/api/grpc-web/api/application_pb.d.ts +++ b/api/grpc-web/api/application_pb.d.ts @@ -18,6 +18,9 @@ export class Application extends jspb.Message { getTenantId(): string; setTenantId(value: string): Application; + getTagsMap(): jspb.Map; + clearTagsMap(): Application; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Application.AsObject; static toObject(includeInstance: boolean, msg: Application): Application.AsObject; @@ -32,6 +35,7 @@ export namespace Application { name: string, description: string, tenantId: string, + tagsMap: Array<[string, string]>, } } diff --git a/api/grpc-web/api/application_pb.js b/api/grpc-web/api/application_pb.js index 977cf9f0..f6d4de0c 100644 --- a/api/grpc-web/api/application_pb.js +++ b/api/grpc-web/api/application_pb.js @@ -1729,7 +1729,8 @@ proto.api.Application.toObject = function(includeInstance, msg) { id: jspb.Message.getFieldWithDefault(msg, 1, ""), name: jspb.Message.getFieldWithDefault(msg, 2, ""), description: jspb.Message.getFieldWithDefault(msg, 3, ""), - tenantId: jspb.Message.getFieldWithDefault(msg, 4, "") + tenantId: jspb.Message.getFieldWithDefault(msg, 4, ""), + tagsMap: (f = msg.getTagsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -1782,6 +1783,12 @@ proto.api.Application.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {string} */ (reader.readString()); msg.setTenantId(value); break; + case 5: + var value = msg.getTagsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; default: reader.skipField(); break; @@ -1839,6 +1846,10 @@ proto.api.Application.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getTagsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(5, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } }; @@ -1914,6 +1925,28 @@ proto.api.Application.prototype.setTenantId = function(value) { }; +/** + * map tags = 5; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.api.Application.prototype.getTagsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 5, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.api.Application} returns this + */ +proto.api.Application.prototype.clearTagsMap = function() { + this.getTagsMap().clear(); + return this;}; + + diff --git a/api/grpc-web/api/tenant_pb.d.ts b/api/grpc-web/api/tenant_pb.d.ts index df9067f9..24db3042 100644 --- a/api/grpc-web/api/tenant_pb.d.ts +++ b/api/grpc-web/api/tenant_pb.d.ts @@ -30,6 +30,9 @@ export class Tenant extends jspb.Message { getPrivateGatewaysDown(): boolean; setPrivateGatewaysDown(value: boolean): Tenant; + getTagsMap(): jspb.Map; + clearTagsMap(): Tenant; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Tenant.AsObject; static toObject(includeInstance: boolean, msg: Tenant): Tenant.AsObject; @@ -48,6 +51,7 @@ export namespace Tenant { maxDeviceCount: number, privateGatewaysUp: boolean, privateGatewaysDown: boolean, + tagsMap: Array<[string, string]>, } } diff --git a/api/grpc-web/api/tenant_pb.js b/api/grpc-web/api/tenant_pb.js index c73228f7..91a61da0 100644 --- a/api/grpc-web/api/tenant_pb.js +++ b/api/grpc-web/api/tenant_pb.js @@ -475,7 +475,8 @@ proto.api.Tenant.toObject = function(includeInstance, msg) { maxGatewayCount: jspb.Message.getFieldWithDefault(msg, 5, 0), maxDeviceCount: jspb.Message.getFieldWithDefault(msg, 6, 0), privateGatewaysUp: jspb.Message.getBooleanFieldWithDefault(msg, 7, false), - privateGatewaysDown: jspb.Message.getBooleanFieldWithDefault(msg, 8, false) + privateGatewaysDown: jspb.Message.getBooleanFieldWithDefault(msg, 8, false), + tagsMap: (f = msg.getTagsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -544,6 +545,12 @@ proto.api.Tenant.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {boolean} */ (reader.readBool()); msg.setPrivateGatewaysDown(value); break; + case 9: + var value = msg.getTagsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; default: reader.skipField(); break; @@ -629,6 +636,10 @@ proto.api.Tenant.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getTagsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(9, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } }; @@ -776,6 +787,28 @@ proto.api.Tenant.prototype.setPrivateGatewaysDown = function(value) { }; +/** + * map tags = 9; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.api.Tenant.prototype.getTagsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 9, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.api.Tenant} returns this + */ +proto.api.Tenant.prototype.clearTagsMap = function() { + this.getTagsMap().clear(); + return this;}; + + diff --git a/api/js/api/application_pb.d.ts b/api/js/api/application_pb.d.ts index 31f538dc..8b4edb26 100644 --- a/api/js/api/application_pb.d.ts +++ b/api/js/api/application_pb.d.ts @@ -19,6 +19,8 @@ export class Application extends jspb.Message { getTenantId(): string; setTenantId(value: string): void; + getTagsMap(): jspb.Map; + clearTagsMap(): void; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Application.AsObject; static toObject(includeInstance: boolean, msg: Application): Application.AsObject; @@ -35,6 +37,7 @@ export namespace Application { name: string, description: string, tenantId: string, + tagsMap: Array<[string, string]>, } } diff --git a/api/js/api/application_pb.js b/api/js/api/application_pb.js index 977cf9f0..f6d4de0c 100644 --- a/api/js/api/application_pb.js +++ b/api/js/api/application_pb.js @@ -1729,7 +1729,8 @@ proto.api.Application.toObject = function(includeInstance, msg) { id: jspb.Message.getFieldWithDefault(msg, 1, ""), name: jspb.Message.getFieldWithDefault(msg, 2, ""), description: jspb.Message.getFieldWithDefault(msg, 3, ""), - tenantId: jspb.Message.getFieldWithDefault(msg, 4, "") + tenantId: jspb.Message.getFieldWithDefault(msg, 4, ""), + tagsMap: (f = msg.getTagsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -1782,6 +1783,12 @@ proto.api.Application.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {string} */ (reader.readString()); msg.setTenantId(value); break; + case 5: + var value = msg.getTagsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; default: reader.skipField(); break; @@ -1839,6 +1846,10 @@ proto.api.Application.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getTagsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(5, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } }; @@ -1914,6 +1925,28 @@ proto.api.Application.prototype.setTenantId = function(value) { }; +/** + * map tags = 5; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.api.Application.prototype.getTagsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 5, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.api.Application} returns this + */ +proto.api.Application.prototype.clearTagsMap = function() { + this.getTagsMap().clear(); + return this;}; + + diff --git a/api/js/api/device_profile_grpc_pb.js b/api/js/api/device_profile_grpc_pb.js index 8ed7e294..7209d76e 100644 --- a/api/js/api/device_profile_grpc_pb.js +++ b/api/js/api/device_profile_grpc_pb.js @@ -119,7 +119,8 @@ function deserialize_google_protobuf_Empty(buffer_arg) { } -// DeviceProfileService is the service providing API methods for managing device-profiles. +// DeviceProfileService is the service providing API methods for managing +// device-profiles. var DeviceProfileServiceService = exports.DeviceProfileServiceService = { // Create the given device-profile. create: { diff --git a/api/js/api/tenant_pb.d.ts b/api/js/api/tenant_pb.d.ts index d66d0999..91088371 100644 --- a/api/js/api/tenant_pb.d.ts +++ b/api/js/api/tenant_pb.d.ts @@ -31,6 +31,8 @@ export class Tenant extends jspb.Message { getPrivateGatewaysDown(): boolean; setPrivateGatewaysDown(value: boolean): void; + getTagsMap(): jspb.Map; + clearTagsMap(): void; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): Tenant.AsObject; static toObject(includeInstance: boolean, msg: Tenant): Tenant.AsObject; @@ -51,6 +53,7 @@ export namespace Tenant { maxDeviceCount: number, privateGatewaysUp: boolean, privateGatewaysDown: boolean, + tagsMap: Array<[string, string]>, } } diff --git a/api/js/api/tenant_pb.js b/api/js/api/tenant_pb.js index c73228f7..91a61da0 100644 --- a/api/js/api/tenant_pb.js +++ b/api/js/api/tenant_pb.js @@ -475,7 +475,8 @@ proto.api.Tenant.toObject = function(includeInstance, msg) { maxGatewayCount: jspb.Message.getFieldWithDefault(msg, 5, 0), maxDeviceCount: jspb.Message.getFieldWithDefault(msg, 6, 0), privateGatewaysUp: jspb.Message.getBooleanFieldWithDefault(msg, 7, false), - privateGatewaysDown: jspb.Message.getBooleanFieldWithDefault(msg, 8, false) + privateGatewaysDown: jspb.Message.getBooleanFieldWithDefault(msg, 8, false), + tagsMap: (f = msg.getTagsMap()) ? f.toObject(includeInstance, undefined) : [] }; if (includeInstance) { @@ -544,6 +545,12 @@ proto.api.Tenant.deserializeBinaryFromReader = function(msg, reader) { var value = /** @type {boolean} */ (reader.readBool()); msg.setPrivateGatewaysDown(value); break; + case 9: + var value = msg.getTagsMap(); + reader.readMessage(value, function(message, reader) { + jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", ""); + }); + break; default: reader.skipField(); break; @@ -629,6 +636,10 @@ proto.api.Tenant.serializeBinaryToWriter = function(message, writer) { f ); } + f = message.getTagsMap(true); + if (f && f.getLength() > 0) { + f.serializeBinary(9, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString); + } }; @@ -776,6 +787,28 @@ proto.api.Tenant.prototype.setPrivateGatewaysDown = function(value) { }; +/** + * map tags = 9; + * @param {boolean=} opt_noLazyCreate Do not create the map if + * empty, instead returning `undefined` + * @return {!jspb.Map} + */ +proto.api.Tenant.prototype.getTagsMap = function(opt_noLazyCreate) { + return /** @type {!jspb.Map} */ ( + jspb.Message.getMapField(this, 9, opt_noLazyCreate, + null)); +}; + + +/** + * Clears values from the map. The map will be non-null. + * @return {!proto.api.Tenant} returns this + */ +proto.api.Tenant.prototype.clearTagsMap = function() { + this.getTagsMap().clear(); + return this;}; + + diff --git a/api/md/api/api.md b/api/md/api/api.md index af7a0a04..96f082a7 100644 --- a/api/md/api/api.md +++ b/api/md/api/api.md @@ -5,6 +5,7 @@ - [api/application.proto](#api_application-proto) - [Application](#api-Application) + - [Application.TagsEntry](#api-Application-TagsEntry) - [ApplicationListItem](#api-ApplicationListItem) - [AwsSnsIntegration](#api-AwsSnsIntegration) - [AzureServiceBusIntegration](#api-AzureServiceBusIntegration) @@ -227,6 +228,7 @@ - [ListTenantsRequest](#api-ListTenantsRequest) - [ListTenantsResponse](#api-ListTenantsResponse) - [Tenant](#api-Tenant) + - [Tenant.TagsEntry](#api-Tenant-TagsEntry) - [TenantListItem](#api-TenantListItem) - [TenantUser](#api-TenantUser) - [TenantUserListItem](#api-TenantUserListItem) @@ -274,6 +276,23 @@ | name | [string](#string) | | Application name. | | description | [string](#string) | | Application description. | | tenant_id | [string](#string) | | Tenant ID (UUID). | +| tags | [Application.TagsEntry](#api-Application-TagsEntry) | repeated | Tags (user defined). These tags can be used to add additional information to the application. These tags are exposed in all the integration events of devices under this application. | + + + + + + + + +### Application.TagsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [string](#string) | | | @@ -1726,7 +1745,7 @@ applications. | skip_fcnt_check | [bool](#bool) | | Skip frame-counter checks (this is insecure, but could be helpful for debugging). | | is_disabled | [bool](#bool) | | Device is disabled. | | variables | [Device.VariablesEntry](#api-Device-VariablesEntry) | repeated | Variables (user defined). These variables can be used together with integrations to store tokens / secrets that must be configured per device. These variables are not exposed in the event payloads. | -| tags | [Device.TagsEntry](#api-Device-TagsEntry) | repeated | Tags (user defined). These tags are exposed in the event payloads or to integration. Tags are intended for aggregation and filtering. | +| tags | [Device.TagsEntry](#api-Device-TagsEntry) | repeated | Tags (user defined). These tags can be used to add additional information to the device. These tags are exposed in all the integration events. | | join_eui | [string](#string) | | JoinEUI (optional, EUI64). This field will be automatically set / updated on OTAA. However, in some cases it must be pre-configured. For example to allow OTAA using a Relay. In this case the Relay needs to know the JoinEUI + DevEUI combinations of the devices for which it needs to forward uplinks. | @@ -2444,7 +2463,7 @@ The actual number of ping-slots per beacon period equals to 2^k. | | abp_rx1_dr_offset | [uint32](#uint32) | | RX1 DR offset (for ABP). | | abp_rx2_dr | [uint32](#uint32) | | RX2 DR (for ABP). | | abp_rx2_freq | [uint32](#uint32) | | RX2 frequency (for ABP, Hz). | -| tags | [DeviceProfile.TagsEntry](#api-DeviceProfile-TagsEntry) | repeated | User defined tags. | +| tags | [DeviceProfile.TagsEntry](#api-DeviceProfile-TagsEntry) | repeated | Tags (user defined). These tags can be used to add additional information the the device-profile. These tags are exposed in all the integration events of devices using this device-profile. | | measurements | [DeviceProfile.MeasurementsEntry](#api-DeviceProfile-MeasurementsEntry) | repeated | Measurements. If defined, ChirpStack will visualize these metrics in the web-interface. | | auto_detect_measurements | [bool](#bool) | | Auto-detect measurements. If set to true, measurements will be automatically added based on the keys of the decoded payload. In cases where the decoded payload contains random keys in the data, you want to set this to false. | | region_config_id | [string](#string) | | Region configuration ID. If set, devices will only use the associated region. If let blank, then devices will use all regions matching the selected common-name. Note that multiple region configurations can exist for the same common-name, e.g. to provide an 8 channel and 16 channel configuration for the US915 band. | @@ -2758,7 +2777,8 @@ Valid values (0 - 3): 0 = 1 1 = 2 2 = 4 3 = 12 | ### DeviceProfileService -DeviceProfileService is the service providing API methods for managing device-profiles. +DeviceProfileService is the service providing API methods for managing +device-profiles. | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| @@ -3782,6 +3802,23 @@ MulticastGroupService is the service managing multicast-groups. | max_device_count | [uint32](#uint32) | | Max. device count for tenant. When set to 0, the tenant can have unlimited devices. | | private_gateways_up | [bool](#bool) | | Private gateways (uplink). If enabled, then uplink messages will not be shared with other tenants. | | private_gateways_down | [bool](#bool) | | Private gateways (downlink). If enabled, then other tenants will not be able to schedule downlink messages through the gateways of this tenant. For example, in case you do want to share uplinks with other tenants (private_gateways_up=false), but you want to prevent other tenants from using gateway airtime. | +| tags | [Tenant.TagsEntry](#api-Tenant-TagsEntry) | repeated | Tags (user defined). These tags can be used to add additional information to the tenant. These tags are NOT exposed in the integration events. | + + + + + + + + +### Tenant.TagsEntry + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| key | [string](#string) | | | +| value | [string](#string) | | | diff --git a/api/python/proto/chirpstack-api/api/application.proto b/api/python/proto/chirpstack-api/api/application.proto index c0c98cc5..ca09c6a1 100644 --- a/api/python/proto/chirpstack-api/api/application.proto +++ b/api/python/proto/chirpstack-api/api/application.proto @@ -459,6 +459,12 @@ message Application { // Tenant ID (UUID). string tenant_id = 4; + + // Tags (user defined). + // These tags can be used to add additional information to the application. + // These tags are exposed in all the integration events of devices under + // this application. + map tags = 5; } message ApplicationListItem { diff --git a/api/python/proto/chirpstack-api/api/device.proto b/api/python/proto/chirpstack-api/api/device.proto index 76cad82d..58a330fb 100644 --- a/api/python/proto/chirpstack-api/api/device.proto +++ b/api/python/proto/chirpstack-api/api/device.proto @@ -208,8 +208,8 @@ message Device { map variables = 8; // Tags (user defined). - // These tags are exposed in the event payloads or to integration. Tags are - // intended for aggregation and filtering. + // These tags can be used to add additional information to the device. + // These tags are exposed in all the integration events. map tags = 9; // JoinEUI (optional, EUI64). diff --git a/api/python/proto/chirpstack-api/api/device_profile.proto b/api/python/proto/chirpstack-api/api/device_profile.proto index 360c95d3..f1f4eb38 100644 --- a/api/python/proto/chirpstack-api/api/device_profile.proto +++ b/api/python/proto/chirpstack-api/api/device_profile.proto @@ -14,502 +14,509 @@ import "google/protobuf/empty.proto"; import "chirpstack-api/common/common.proto"; enum CodecRuntime { - // None. - NONE = 0; + // None. + NONE = 0; - // Cayenne LPP. - CAYENNE_LPP = 1; + // Cayenne LPP. + CAYENNE_LPP = 1; - // JavaScript. - JS = 2; + // JavaScript. + JS = 2; } enum MeasurementKind { - // Unknown (in which case it is not tracked). - UNKNOWN = 0; + // Unknown (in which case it is not tracked). + UNKNOWN = 0; - // Incrementing counters that never decrease (these are not reset on each reading). - COUNTER = 1; + // Incrementing counters that never decrease (these are not reset on each + // reading). + COUNTER = 1; - // Counters that do get reset upon reading. - ABSOLUTE = 2; + // Counters that do get reset upon reading. + ABSOLUTE = 2; - // E.g. a temperature value. - GAUGE = 3; + // E.g. a temperature value. + GAUGE = 3; - // E.g. a firmware version, true / false value. - STRING = 4; + // E.g. a firmware version, true / false value. + STRING = 4; } enum CadPeriodicity { - // 1 second. - SEC_1 = 0; + // 1 second. + SEC_1 = 0; - // 500 milliseconds - MS_500 = 1; + // 500 milliseconds + MS_500 = 1; - // 250 milliseconds - MS_250 = 2; + // 250 milliseconds + MS_250 = 2; - // 100 milliseconds - MS_100 = 3; + // 100 milliseconds + MS_100 = 3; - // 50 milliseconds - MS_50 = 4; + // 50 milliseconds + MS_50 = 4; - // 20 milliseconds - MS_20 = 5; + // 20 milliseconds + MS_20 = 5; } enum SecondChAckOffset { - // 0 kHz. - KHZ_0 = 0; + // 0 kHz. + KHZ_0 = 0; - // 200 kHz. - KHZ_200 = 1; + // 200 kHz. + KHZ_200 = 1; - // 400 kHz. - KHZ_400 = 2; + // 400 kHz. + KHZ_400 = 2; - // 800 kHz. - KHZ_800 = 3; + // 800 kHz. + KHZ_800 = 3; - // 1600 kHz. - KHZ_1600 = 4; - - // 3200 kHz. - KHZ_3200 = 5; + // 1600 kHz. + KHZ_1600 = 4; + // 3200 kHz. + KHZ_3200 = 5; } enum RelayModeActivation { - // Disable the relay mode. - DISABLE_RELAY_MODE = 0; + // Disable the relay mode. + DISABLE_RELAY_MODE = 0; - // Enable the relay model. - ENABLE_RELAY_MODE = 1; + // Enable the relay model. + ENABLE_RELAY_MODE = 1; - // Dynamic. - DYNAMIC = 2; + // Dynamic. + DYNAMIC = 2; - // End-device controlled. - END_DEVICE_CONTROLLED = 3; + // End-device controlled. + END_DEVICE_CONTROLLED = 3; } -// DeviceProfileService is the service providing API methods for managing device-profiles. +// DeviceProfileService is the service providing API methods for managing +// device-profiles. service DeviceProfileService { - // Create the given device-profile. - rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) { - option(google.api.http) = { - post: "/api/device-profiles" - body: "*" - }; - } + // Create the given device-profile. + rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) { + option (google.api.http) = { + post : "/api/device-profiles" + body : "*" + }; + } - // Get the device-profile for the given ID. - rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) { - option(google.api.http) = { - get: "/api/device-profiles/{id}" - }; - } + // Get the device-profile for the given ID. + rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) { + option (google.api.http) = { + get : "/api/device-profiles/{id}" + }; + } - // Update the given device-profile. - rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - put: "/api/device-profiles/{device_profile.id}" - body: "*" - }; - } + // Update the given device-profile. + rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put : "/api/device-profiles/{device_profile.id}" + body : "*" + }; + } - // Delete the device-profile with the given ID. - rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - delete: "/api/device-profiles/{id}" - }; - } - - // List the available device-profiles. - rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) { - option(google.api.http) = { - get: "/api/device-profiles" - }; - } + // Delete the device-profile with the given ID. + rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete : "/api/device-profiles/{id}" + }; + } - // List available ADR algorithms. - rpc ListAdrAlgorithms(google.protobuf.Empty) returns (ListDeviceProfileAdrAlgorithmsResponse) { - option(google.api.http) = { - get: "/api/device-profiles/adr-algorithms" - }; - } + // List the available device-profiles. + rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) { + option (google.api.http) = { + get : "/api/device-profiles" + }; + } + + // List available ADR algorithms. + rpc ListAdrAlgorithms(google.protobuf.Empty) + returns (ListDeviceProfileAdrAlgorithmsResponse) { + option (google.api.http) = { + get : "/api/device-profiles/adr-algorithms" + }; + } } message DeviceProfile { - // Device-profile ID (UUID). - // Note: on create this will be automatically generated. - string id = 1; + // Device-profile ID (UUID). + // Note: on create this will be automatically generated. + string id = 1; - // Tenant ID (UUID). - string tenant_id = 2; + // Tenant ID (UUID). + string tenant_id = 2; - // Name. - string name = 3; + // Name. + string name = 3; - // Description. - string description = 26; + // Description. + string description = 26; - // Region. - common.Region region = 4; + // Region. + common.Region region = 4; - // LoRaWAN mac-version. - common.MacVersion mac_version = 5; + // LoRaWAN mac-version. + common.MacVersion mac_version = 5; - // Regional parameters revision. - common.RegParamsRevision reg_params_revision = 6; + // Regional parameters revision. + common.RegParamsRevision reg_params_revision = 6; - // ADR algorithm ID. - string adr_algorithm_id = 7; + // ADR algorithm ID. + string adr_algorithm_id = 7; - // Payload codec runtime. - CodecRuntime payload_codec_runtime = 8; + // Payload codec runtime. + CodecRuntime payload_codec_runtime = 8; - // Payload codec script. - string payload_codec_script = 9; + // Payload codec script. + string payload_codec_script = 9; - // Flush queue on device activation. - bool flush_queue_on_activate = 10; + // Flush queue on device activation. + bool flush_queue_on_activate = 10; - // Uplink interval (seconds). - // This defines the expected uplink interval which the device uses for - // communication. If the uplink interval has expired and no uplink has - // been received, the device is considered inactive. - uint32 uplink_interval = 11; + // Uplink interval (seconds). + // This defines the expected uplink interval which the device uses for + // communication. If the uplink interval has expired and no uplink has + // been received, the device is considered inactive. + uint32 uplink_interval = 11; - // Device-status request interval (times / day). - // This defines the times per day that ChirpStack will request the device-status - // from the device. - uint32 device_status_req_interval = 12; + // Device-status request interval (times / day). + // This defines the times per day that ChirpStack will request the + // device-status from the device. + uint32 device_status_req_interval = 12; - // Supports OTAA. - bool supports_otaa = 13; + // Supports OTAA. + bool supports_otaa = 13; - // Supports Class B. - bool supports_class_b = 14; + // Supports Class B. + bool supports_class_b = 14; - // Supports Class-C. - bool supports_class_c = 15; + // Supports Class-C. + bool supports_class_c = 15; - // Class-B timeout (seconds). - // This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). - uint32 class_b_timeout = 16; + // Class-B timeout (seconds). + // This is the maximum time ChirpStack will wait to receive an acknowledgement + // from the device (if requested). + uint32 class_b_timeout = 16; - // Class-B ping-slots per beacon period. - // Valid options are: 0 - 7. - // - // The actual number of ping-slots per beacon period equals to 2^k. - uint32 class_b_ping_slot_nb_k = 17; + // Class-B ping-slots per beacon period. + // Valid options are: 0 - 7. + // + // The actual number of ping-slots per beacon period equals to 2^k. + uint32 class_b_ping_slot_nb_k = 17; - // Class-B ping-slot DR. - uint32 class_b_ping_slot_dr = 18; + // Class-B ping-slot DR. + uint32 class_b_ping_slot_dr = 18; - // Class-B ping-slot freq (Hz). - uint32 class_b_ping_slot_freq = 19; + // Class-B ping-slot freq (Hz). + uint32 class_b_ping_slot_freq = 19; - // Class-C timeout (seconds). - // This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). - uint32 class_c_timeout = 20; + // Class-C timeout (seconds). + // This is the maximum time ChirpStack will wait to receive an acknowledgement + // from the device (if requested). + uint32 class_c_timeout = 20; - // RX1 delay (for ABP). - uint32 abp_rx1_delay = 21; + // RX1 delay (for ABP). + uint32 abp_rx1_delay = 21; - // RX1 DR offset (for ABP). - uint32 abp_rx1_dr_offset = 22; + // RX1 DR offset (for ABP). + uint32 abp_rx1_dr_offset = 22; - // RX2 DR (for ABP). - uint32 abp_rx2_dr = 23; + // RX2 DR (for ABP). + uint32 abp_rx2_dr = 23; - // RX2 frequency (for ABP, Hz). - uint32 abp_rx2_freq = 24; + // RX2 frequency (for ABP, Hz). + uint32 abp_rx2_freq = 24; - // User defined tags. - map tags = 25; + // Tags (user defined). + // These tags can be used to add additional information the the + // device-profile. These tags are exposed in all the integration events of + // devices using this device-profile. + map tags = 25; - // Measurements. - // If defined, ChirpStack will visualize these metrics in the web-interface. - map measurements = 27; + // Measurements. + // If defined, ChirpStack will visualize these metrics in the web-interface. + map measurements = 27; - // Auto-detect measurements. - // If set to true, measurements will be automatically added based on the - // keys of the decoded payload. In cases where the decoded payload contains - // random keys in the data, you want to set this to false. - bool auto_detect_measurements = 28; + // Auto-detect measurements. + // If set to true, measurements will be automatically added based on the + // keys of the decoded payload. In cases where the decoded payload contains + // random keys in the data, you want to set this to false. + bool auto_detect_measurements = 28; - // Region configuration ID. - // If set, devices will only use the associated region. If let blank, then - // devices will use all regions matching the selected common-name. Note - // that multiple region configurations can exist for the same common-name, - // e.g. to provide an 8 channel and 16 channel configuration for the US915 - // band. - string region_config_id = 29; + // Region configuration ID. + // If set, devices will only use the associated region. If let blank, then + // devices will use all regions matching the selected common-name. Note + // that multiple region configurations can exist for the same common-name, + // e.g. to provide an 8 channel and 16 channel configuration for the US915 + // band. + string region_config_id = 29; - // Device is a Relay device. - // Enable this in case the device is a Relay. A Relay device implements TS011 - // and is able to relay data from relay capable devices. - // See for more information the TS011 specification. - bool is_relay = 30; + // Device is a Relay device. + // Enable this in case the device is a Relay. A Relay device implements TS011 + // and is able to relay data from relay capable devices. + // See for more information the TS011 specification. + bool is_relay = 30; - // Device is a Relay end-device. - // Enable this in case the device is an end-device that can operate under a - // Relay. Please refer to the TS011 specification for more information. - bool is_relay_ed = 31; + // Device is a Relay end-device. + // Enable this in case the device is an end-device that can operate under a + // Relay. Please refer to the TS011 specification for more information. + bool is_relay_ed = 31; - // End-device only accept data through relay. - // Only accept data for this device through a relay. This setting is useful - // for testing as in case of a test-setup, the end-device is usually within - // range of the gateway. - bool relay_ed_relay_only = 32; + // End-device only accept data through relay. + // Only accept data for this device through a relay. This setting is useful + // for testing as in case of a test-setup, the end-device is usually within + // range of the gateway. + bool relay_ed_relay_only = 32; - // Relay must be enabled. - bool relay_enabled = 33; + // Relay must be enabled. + bool relay_enabled = 33; - // Relay CAD periodicity. - CadPeriodicity relay_cad_periodicity = 34; + // Relay CAD periodicity. + CadPeriodicity relay_cad_periodicity = 34; - // Relay default channel index. - // Valid values are 0 and 1, please refer to the RP002 specification for - // the meaning of these values. - uint32 relay_default_channel_index = 35; + // Relay default channel index. + // Valid values are 0 and 1, please refer to the RP002 specification for + // the meaning of these values. + uint32 relay_default_channel_index = 35; - // Relay second channel frequency (Hz). - uint32 relay_second_channel_freq = 36; + // Relay second channel frequency (Hz). + uint32 relay_second_channel_freq = 36; - // Relay second channel DR. - uint32 relay_second_channel_dr = 37; + // Relay second channel DR. + uint32 relay_second_channel_dr = 37; - // Relay second channel ACK offset. - SecondChAckOffset relay_second_channel_ack_offset = 38; + // Relay second channel ACK offset. + SecondChAckOffset relay_second_channel_ack_offset = 38; - // Relay end-device activation mode. - RelayModeActivation relay_ed_activation_mode = 39; + // Relay end-device activation mode. + RelayModeActivation relay_ed_activation_mode = 39; - // Relay end-device smart-enable level. - uint32 relay_ed_smart_enable_level = 40; + // Relay end-device smart-enable level. + uint32 relay_ed_smart_enable_level = 40; - // Relay end-device back-off (in case it does not receive WOR ACK frame). - // 0 = Always send a LoRaWAN uplink - // 1..63 = Send a LoRaWAN uplink after X WOR frames without a WOR ACK - uint32 relay_ed_back_off = 41; + // Relay end-device back-off (in case it does not receive WOR ACK frame). + // 0 = Always send a LoRaWAN uplink + // 1..63 = Send a LoRaWAN uplink after X WOR frames without a WOR ACK + uint32 relay_ed_back_off = 41; - // Relay end-device uplink limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_ed_uplink_limit_bucket_size = 42; + // Relay end-device uplink limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_ed_uplink_limit_bucket_size = 42; - // Relay end-device uplink limit reload rate. - // - // Valid values: - // * 0 - 62 = X tokens every hour - // * 63 = no limitation - uint32 relay_ed_uplink_limit_reload_rate = 43; + // Relay end-device uplink limit reload rate. + // + // Valid values: + // * 0 - 62 = X tokens every hour + // * 63 = no limitation + uint32 relay_ed_uplink_limit_reload_rate = 43; - // Relay join-request limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_join_req_limit_reload_rate = 44; + // Relay join-request limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_join_req_limit_reload_rate = 44; - // Relay notify limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_notify_limit_reload_rate = 45; + // Relay notify limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_notify_limit_reload_rate = 45; - // Relay global uplink limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_global_uplink_limit_reload_rate = 46; + // Relay global uplink limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_global_uplink_limit_reload_rate = 46; - // Relay overall limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_overall_limit_reload_rate = 47; + // Relay overall limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_overall_limit_reload_rate = 47; - // Relay join-request limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_join_req_limit_bucket_size = 48; + // Relay join-request limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_join_req_limit_bucket_size = 48; - // Relay notify limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_notify_limit_bucket_size = 49; + // Relay notify limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_notify_limit_bucket_size = 49; - // Relay globak uplink limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_global_uplink_limit_bucket_size = 50; + // Relay globak uplink limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_global_uplink_limit_bucket_size = 50; - // Relay overall limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_overall_limit_bucket_size = 51; + // Relay overall limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_overall_limit_bucket_size = 51; } message Measurement { - // Name (user defined). - string name = 2; + // Name (user defined). + string name = 2; - // Kind. - MeasurementKind kind = 3; + // Kind. + MeasurementKind kind = 3; } message DeviceProfileListItem { - // Device-profile ID (UUID). - string id = 1; + // Device-profile ID (UUID). + string id = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; - // Name. - string name = 4; + // Name. + string name = 4; - // Region. - common.Region region = 5; + // Region. + common.Region region = 5; - // LoRaWAN mac-version. - common.MacVersion mac_version = 6; + // LoRaWAN mac-version. + common.MacVersion mac_version = 6; - // Regional parameters revision. - common.RegParamsRevision reg_params_revision = 7; + // Regional parameters revision. + common.RegParamsRevision reg_params_revision = 7; - // Supports OTAA. - bool supports_otaa = 8; + // Supports OTAA. + bool supports_otaa = 8; - // Supports Class-B. - bool supports_class_b = 9; + // Supports Class-B. + bool supports_class_b = 9; - // Supports Class-C. - bool supports_class_c = 10; + // Supports Class-C. + bool supports_class_c = 10; } message CreateDeviceProfileRequest { - // Object to create. - DeviceProfile device_profile = 1; + // Object to create. + DeviceProfile device_profile = 1; } message CreateDeviceProfileResponse { - // ID (UUID). - string id = 1; + // ID (UUID). + string id = 1; } message GetDeviceProfileRequest { - // ID (UUID). - string id = 1; + // ID (UUID). + string id = 1; } message GetDeviceProfileResponse { - // Device-profile object. - DeviceProfile device_profile = 1; + // Device-profile object. + DeviceProfile device_profile = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; } message UpdateDeviceProfileRequest { - // Device-profile object. - DeviceProfile device_profile = 1; + // Device-profile object. + DeviceProfile device_profile = 1; } message DeleteDeviceProfileRequest { - // ID (UUID). - string id = 1; + // ID (UUID). + string id = 1; } message ListDeviceProfilesRequest { - // Max number of device-profiles to return in the result-set. - uint32 limit = 1; + // Max number of device-profiles to return in the result-set. + uint32 limit = 1; - // Offset in the result-set (for pagination). - uint32 offset = 2; + // Offset in the result-set (for pagination). + uint32 offset = 2; - // If set, the given string will be used to search on name. - string search = 3; + // If set, the given string will be used to search on name. + string search = 3; - // Tenant ID to list the device-profiles for. - string tenant_id = 4; + // Tenant ID to list the device-profiles for. + string tenant_id = 4; } message ListDeviceProfilesResponse { - // Total number of device-profiles. - uint32 total_count = 1; + // Total number of device-profiles. + uint32 total_count = 1; - // Result-set. - repeated DeviceProfileListItem result = 2; + // Result-set. + repeated DeviceProfileListItem result = 2; } message ListDeviceProfileAdrAlgorithmsResponse { - // Total number of algorithms. - uint32 total_count = 1; + // Total number of algorithms. + uint32 total_count = 1; - // Result-set. - repeated AdrAlgorithmListItem result = 2; + // Result-set. + repeated AdrAlgorithmListItem result = 2; } message AdrAlgorithmListItem { - // Algorithm ID. - string id = 1; + // Algorithm ID. + string id = 1; - // Algorithm name. - string name = 2; + // Algorithm name. + string name = 2; } diff --git a/api/python/proto/chirpstack-api/api/tenant.proto b/api/python/proto/chirpstack-api/api/tenant.proto index 809fb88d..e1a20f30 100644 --- a/api/python/proto/chirpstack-api/api/tenant.proto +++ b/api/python/proto/chirpstack-api/api/tenant.proto @@ -14,308 +14,313 @@ import "google/protobuf/empty.proto"; // TenantService is the service providing API methods for managing tenants. service TenantService { - // Create a new tenant. - rpc Create(CreateTenantRequest) returns (CreateTenantResponse) { - option(google.api.http) = { - post: "/api/tenants" - body: "*" - }; - } + // Create a new tenant. + rpc Create(CreateTenantRequest) returns (CreateTenantResponse) { + option (google.api.http) = { + post : "/api/tenants" + body : "*" + }; + } - // Get the tenant for the given ID. - rpc Get(GetTenantRequest) returns (GetTenantResponse) { - option(google.api.http) = { - get: "/api/tenants/{id}" - }; - } + // Get the tenant for the given ID. + rpc Get(GetTenantRequest) returns (GetTenantResponse) { + option (google.api.http) = { + get : "/api/tenants/{id}" + }; + } - // Update the given tenant. - rpc Update(UpdateTenantRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - put: "/api/tenants/{tenant.id}" - body: "*" - }; - } + // Update the given tenant. + rpc Update(UpdateTenantRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put : "/api/tenants/{tenant.id}" + body : "*" + }; + } - // Delete the tenant with the given ID. - rpc Delete(DeleteTenantRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - delete: "/api/tenants/{id}" - }; - } + // Delete the tenant with the given ID. + rpc Delete(DeleteTenantRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete : "/api/tenants/{id}" + }; + } - // Get the list of tenants. - rpc List(ListTenantsRequest) returns (ListTenantsResponse) { - option(google.api.http) = { - get: "/api/tenants" - }; - } + // Get the list of tenants. + rpc List(ListTenantsRequest) returns (ListTenantsResponse) { + option (google.api.http) = { + get : "/api/tenants" + }; + } - // Add an user to the tenant. - // Note: the user must already exist. - rpc AddUser(AddTenantUserRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - post: "/api/tenants/{tenant_user.tenant_id}/users" - body: "*" - }; - } + // Add an user to the tenant. + // Note: the user must already exist. + rpc AddUser(AddTenantUserRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post : "/api/tenants/{tenant_user.tenant_id}/users" + body : "*" + }; + } - // Get the the tenant user for the given tenant and user IDs. - rpc GetUser(GetTenantUserRequest) returns (GetTenantUserResponse) { - option(google.api.http) = { - get: "/api/tenants/{tenant_id}/users/{user_id}" - }; - } + // Get the the tenant user for the given tenant and user IDs. + rpc GetUser(GetTenantUserRequest) returns (GetTenantUserResponse) { + option (google.api.http) = { + get : "/api/tenants/{tenant_id}/users/{user_id}" + }; + } - // Update the given tenant user. - rpc UpdateUser(UpdateTenantUserRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - put: "/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}" - body: "*" - }; - } + // Update the given tenant user. + rpc UpdateUser(UpdateTenantUserRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put : "/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}" + body : "*" + }; + } - // Delete the given tenant user. - rpc DeleteUser(DeleteTenantUserRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - delete: "/api/tenants/{tenant_id}/users/{user_id}" - }; - } + // Delete the given tenant user. + rpc DeleteUser(DeleteTenantUserRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete : "/api/tenants/{tenant_id}/users/{user_id}" + }; + } - // Get the list of tenant users. - rpc ListUsers(ListTenantUsersRequest) returns (ListTenantUsersResponse) { - option(google.api.http) = { - get: "/api/tenants/{tenant_id}/users" - }; - } + // Get the list of tenant users. + rpc ListUsers(ListTenantUsersRequest) returns (ListTenantUsersResponse) { + option (google.api.http) = { + get : "/api/tenants/{tenant_id}/users" + }; + } } message Tenant { - // Tenant ID (UUID). - // Note: this value will be automatically generated on create. - string id = 1; + // Tenant ID (UUID). + // Note: this value will be automatically generated on create. + string id = 1; - // Tenant name, - string name = 2; + // Tenant name, + string name = 2; - // Tenant description. - string description = 3; + // Tenant description. + string description = 3; - // Can the tenant create and "own" Gateways? - bool can_have_gateways = 4; + // Can the tenant create and "own" Gateways? + bool can_have_gateways = 4; - // Max. gateway count for tenant. - // When set to 0, the tenant can have unlimited gateways. - uint32 max_gateway_count = 5; + // Max. gateway count for tenant. + // When set to 0, the tenant can have unlimited gateways. + uint32 max_gateway_count = 5; - // Max. device count for tenant. - // When set to 0, the tenant can have unlimited devices. - uint32 max_device_count = 6; + // Max. device count for tenant. + // When set to 0, the tenant can have unlimited devices. + uint32 max_device_count = 6; - // Private gateways (uplink). - // If enabled, then uplink messages will not be shared with other tenants. - bool private_gateways_up = 7; + // Private gateways (uplink). + // If enabled, then uplink messages will not be shared with other tenants. + bool private_gateways_up = 7; - // Private gateways (downlink). - // If enabled, then other tenants will not be able to schedule downlink - // messages through the gateways of this tenant. For example, in case you - // do want to share uplinks with other tenants (private_gateways_up=false), - // but you want to prevent other tenants from using gateway airtime. - bool private_gateways_down = 8; + // Private gateways (downlink). + // If enabled, then other tenants will not be able to schedule downlink + // messages through the gateways of this tenant. For example, in case you + // do want to share uplinks with other tenants (private_gateways_up=false), + // but you want to prevent other tenants from using gateway airtime. + bool private_gateways_down = 8; + + // Tags (user defined). + // These tags can be used to add additional information to the tenant. These + // tags are NOT exposed in the integration events. + map tags = 9; } message TenantListItem { - // Tenant ID (UUID). - string id = 1; + // Tenant ID (UUID). + string id = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; - // Tenant name. - string name = 4; + // Tenant name. + string name = 4; - // Can the tenant create and "own" Gateways? - bool can_have_gateways = 5; + // Can the tenant create and "own" Gateways? + bool can_have_gateways = 5; - // Private gateways (uplink). - bool private_gateways_up = 6; + // Private gateways (uplink). + bool private_gateways_up = 6; - // Private gateways (downlink). - bool private_gateways_down = 9; + // Private gateways (downlink). + bool private_gateways_down = 9; - // Max gateway count. - // 0 = unlimited. - uint32 max_gateway_count = 7; + // Max gateway count. + // 0 = unlimited. + uint32 max_gateway_count = 7; - // Max device count. - // 0 = unlimited. - uint32 max_device_count = 8; + // Max device count. + // 0 = unlimited. + uint32 max_device_count = 8; } message CreateTenantRequest { - // Tenant object to create. - Tenant tenant = 1; + // Tenant object to create. + Tenant tenant = 1; } message CreateTenantResponse { - // Tenant ID. - string id = 1; + // Tenant ID. + string id = 1; } message GetTenantRequest { - // Tenant ID. - string id = 1; + // Tenant ID. + string id = 1; } message GetTenantResponse { - // Tenant object. - Tenant tenant = 1; + // Tenant object. + Tenant tenant = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; } message UpdateTenantRequest { - // Tenant object. - Tenant tenant = 1; + // Tenant object. + Tenant tenant = 1; } message DeleteTenantRequest { - // Tenant ID. - string id = 1; + // Tenant ID. + string id = 1; } message ListTenantsRequest { - // Max number of tenants to return in the result-set. - uint32 limit = 1; + // Max number of tenants to return in the result-set. + uint32 limit = 1; - // Offset in the result-set (for pagination). - uint32 offset = 2; + // Offset in the result-set (for pagination). + uint32 offset = 2; - // If set, the given string will be used to search on name. - string search = 3; + // If set, the given string will be used to search on name. + string search = 3; - // If set, filters the result set to the tenants of the user. - // Only global API keys are able to filter by this field. - string user_id = 4; + // If set, filters the result set to the tenants of the user. + // Only global API keys are able to filter by this field. + string user_id = 4; } message ListTenantsResponse { - // Total number of tenants. - uint32 total_count = 1; + // Total number of tenants. + uint32 total_count = 1; - // Result-set. - repeated TenantListItem result = 2; + // Result-set. + repeated TenantListItem result = 2; } message TenantUser { - // Tenant ID (UUID). - string tenant_id = 1; + // Tenant ID (UUID). + string tenant_id = 1; - // User ID (UUID). - string user_id = 2; + // User ID (UUID). + string user_id = 2; - // User is admin within the context of the tenant. - // There is no need to set the is_device_admin and is_gateway_admin flags. - bool is_admin = 3; + // User is admin within the context of the tenant. + // There is no need to set the is_device_admin and is_gateway_admin flags. + bool is_admin = 3; - // User is able to modify device related resources (applications, - // device-profiles, devices, multicast-groups). - bool is_device_admin = 4; + // User is able to modify device related resources (applications, + // device-profiles, devices, multicast-groups). + bool is_device_admin = 4; - // User is able to modify gateways. - bool is_gateway_admin = 5; + // User is able to modify gateways. + bool is_gateway_admin = 5; - // Email (only used on get and when adding a user to a tenant). - string email = 6; + // Email (only used on get and when adding a user to a tenant). + string email = 6; } message TenantUserListItem { - // Tenant ID (UUID). - string tenant_id = 1; + // Tenant ID (UUID). + string tenant_id = 1; - // User ID (UUID). - string user_id = 2; + // User ID (UUID). + string user_id = 2; - // Created at timestamp. - google.protobuf.Timestamp created_at = 3; + // Created at timestamp. + google.protobuf.Timestamp created_at = 3; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 4; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 4; - // Email. - string email = 5; + // Email. + string email = 5; - // User is admin within the context of the tenant. - // There is no need to set the is_device_admin and is_gateway_admin flags. - bool is_admin = 6; + // User is admin within the context of the tenant. + // There is no need to set the is_device_admin and is_gateway_admin flags. + bool is_admin = 6; - // User is able to modify device related resources (applications, - // device-profiles, devices, multicast-groups). - bool is_device_admin = 7; + // User is able to modify device related resources (applications, + // device-profiles, devices, multicast-groups). + bool is_device_admin = 7; - // User is able to modify gateways. - bool is_gateway_admin = 8; + // User is able to modify gateways. + bool is_gateway_admin = 8; } message AddTenantUserRequest { - // Tenant user object. - TenantUser tenant_user = 1; + // Tenant user object. + TenantUser tenant_user = 1; } message GetTenantUserRequest { - // Tenant ID (UUID). - string tenant_id = 1; + // Tenant ID (UUID). + string tenant_id = 1; - // User ID (UUID). - string user_id = 2; + // User ID (UUID). + string user_id = 2; } message GetTenantUserResponse { - // Tenant user object. - TenantUser tenant_user = 1; + // Tenant user object. + TenantUser tenant_user = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; } message UpdateTenantUserRequest { - // Tenant user object. - TenantUser tenant_user = 1; + // Tenant user object. + TenantUser tenant_user = 1; } message DeleteTenantUserRequest { - // Tenant ID (UUID). - string tenant_id = 1; + // Tenant ID (UUID). + string tenant_id = 1; - // User ID (UUID). - string user_id = 2; + // User ID (UUID). + string user_id = 2; } message ListTenantUsersRequest { - // Tenant ID (UUID). - string tenant_id = 1; + // Tenant ID (UUID). + string tenant_id = 1; - // Max number of tenants to return in the result-set. - uint32 limit = 2; + // Max number of tenants to return in the result-set. + uint32 limit = 2; - // Offset in the result-set (for pagination). - uint32 offset = 3; + // Offset in the result-set (for pagination). + uint32 offset = 3; } message ListTenantUsersResponse { - // Total number of tenants. - uint32 total_count = 1; + // Total number of tenants. + uint32 total_count = 1; - // Result-set. - repeated TenantUserListItem result = 2; + // Result-set. + repeated TenantUserListItem result = 2; } diff --git a/api/python/src/chirpstack_api/api/application_pb2.py b/api/python/src/chirpstack_api/api/application_pb2.py index a45966e1..f15333cb 100644 --- a/api/python/src/chirpstack_api/api/application_pb2.py +++ b/api/python/src/chirpstack_api/api/application_pb2.py @@ -16,7 +16,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$chirpstack-api/api/application.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"O\n\x0b\x41pplication\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"\xa4\x01\n\x13\x41pplicationListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\"A\n\x18\x43reateApplicationRequest\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\"\'\n\x19\x43reateApplicationResponse\x12\n\n\x02id\x18\x01 \x01(\t\"#\n\x15GetApplicationRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\xb9\x01\n\x16GetApplicationResponse\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10measurement_keys\x18\x04 \x03(\t\"A\n\x18UpdateApplicationRequest\x12%\n\x0b\x61pplication\x18\x01 \x01(\x0b\x32\x10.api.Application\"&\n\x18\x44\x65leteApplicationRequest\x12\n\n\x02id\x18\x01 \x01(\t\"[\n\x17ListApplicationsRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x0e\n\x06search\x18\x03 \x01(\t\x12\x11\n\ttenant_id\x18\x04 \x01(\t\"Y\n\x18ListApplicationsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12(\n\x06result\x18\x02 \x03(\x0b\x32\x18.api.ApplicationListItem\"1\n\x17ListIntegrationsRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"9\n\x13IntegrationListItem\x12\"\n\x04kind\x18\x01 \x01(\x0e\x32\x14.api.IntegrationKind\"Y\n\x18ListIntegrationsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12(\n\x06result\x18\x02 \x03(\x0b\x32\x18.api.IntegrationListItem\"\xca\x01\n\x0fHttpIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x32\n\x07headers\x18\x02 \x03(\x0b\x32!.api.HttpIntegration.HeadersEntry\x12\x1f\n\x08\x65ncoding\x18\x03 \x01(\x0e\x32\r.api.Encoding\x12\x1a\n\x12\x65vent_endpoint_url\x18\x04 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"I\n\x1c\x43reateHttpIntegrationRequest\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"3\n\x19GetHttpIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"G\n\x1aGetHttpIntegrationResponse\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"I\n\x1cUpdateHttpIntegrationRequest\x12)\n\x0bintegration\x18\x01 \x01(\x0b\x32\x14.api.HttpIntegration\"6\n\x1c\x44\x65leteHttpIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x95\x02\n\x13InfluxDbIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\n\n\x02\x64\x62\x18\x03 \x01(\t\x12\x10\n\x08username\x18\x04 \x01(\t\x12\x10\n\x08password\x18\x05 \x01(\t\x12\x1d\n\x15retention_policy_name\x18\x06 \x01(\t\x12)\n\tprecision\x18\x07 \x01(\x0e\x32\x16.api.InfluxDbPrecision\x12%\n\x07version\x18\x08 \x01(\x0e\x32\x14.api.InfluxDbVersion\x12\r\n\x05token\x18\t \x01(\t\x12\x14\n\x0corganization\x18\n \x01(\t\x12\x0e\n\x06\x62ucket\x18\x0b \x01(\t\"Q\n CreateInfluxDbIntegrationRequest\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\"7\n\x1dGetInfluxDbIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x1eGetInfluxDbIntegrationResponse\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\"Q\n UpdateInfluxDbIntegrationRequest\x12-\n\x0bintegration\x18\x01 \x01(\x0b\x32\x18.api.InfluxDbIntegration\":\n DeleteInfluxDbIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"@\n\x16ThingsBoardIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\"W\n#CreateThingsBoardIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\":\n GetThingsBoardIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetThingsBoardIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\"W\n#UpdateThingsBoardIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.ThingsBoardIntegration\"=\n#DeleteThingsBoardIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"@\n\x14MyDevicesIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\"S\n!CreateMyDevicesIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\"8\n\x1eGetMyDevicesIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetMyDevicesIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\"S\n!UpdateMyDevicesIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.MyDevicesIntegration\";\n!DeleteMyDevicesIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"z\n\x14LoraCloudIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12J\n\x1amodem_geolocation_services\x18\x02 \x01(\x0b\x32&.api.LoraCloudModemGeolocationServices\"\xd5\x03\n!LoraCloudModemGeolocationServices\x12\r\n\x05token\x18\x01 \x01(\t\x12\x15\n\rmodem_enabled\x18\x02 \x01(\x08\x12\x17\n\x0f\x66orward_f_ports\x18\x10 \x03(\r\x12\x18\n\x10gnss_use_rx_time\x18\x05 \x01(\x08\x12!\n\x19gnss_use_gateway_location\x18\x11 \x01(\x08\x12\x11\n\tparse_tlv\x18\x06 \x01(\x08\x12\x1e\n\x16geolocation_buffer_ttl\x18\x07 \x01(\r\x12#\n\x1bgeolocation_min_buffer_size\x18\x08 \x01(\r\x12\x18\n\x10geolocation_tdoa\x18\t \x01(\x08\x12\x18\n\x10geolocation_rssi\x18\n \x01(\x08\x12\x18\n\x10geolocation_gnss\x18\x0b \x01(\x08\x12&\n\x1egeolocation_gnss_payload_field\x18\x0c \x01(\t\x12$\n\x1cgeolocation_gnss_use_rx_time\x18\r \x01(\x08\x12\x18\n\x10geolocation_wifi\x18\x0e \x01(\x08\x12&\n\x1egeolocation_wifi_payload_field\x18\x0f \x01(\t\"S\n!CreateLoraCloudIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\"8\n\x1eGetLoraCloudIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetLoraCloudIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\"S\n!UpdateLoraCloudIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.LoraCloudIntegration\";\n!DeleteLoraCloudIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x91\x01\n\x14GcpPubSubIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x18\n\x10\x63redentials_file\x18\x03 \x01(\t\x12\x12\n\nproject_id\x18\x04 \x01(\t\x12\x12\n\ntopic_name\x18\x05 \x01(\t\"S\n!CreateGcpPubSubIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\"8\n\x1eGetGcpPubSubIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"Q\n\x1fGetGcpPubSubIntegrationResponse\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\"S\n!UpdateGcpPubSubIntegrationRequest\x12.\n\x0bintegration\x18\x01 \x01(\x0b\x32\x19.api.GcpPubSubIntegration\";\n!DeleteGcpPubSubIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\xa1\x01\n\x11\x41wsSnsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x15\n\raccess_key_id\x18\x04 \x01(\t\x12\x19\n\x11secret_access_key\x18\x05 \x01(\t\x12\x11\n\ttopic_arn\x18\x06 \x01(\t\"M\n\x1e\x43reateAwsSnsIntegrationRequest\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"5\n\x1bGetAwsSnsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"K\n\x1cGetAwsSnsIntegrationResponse\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"M\n\x1eUpdateAwsSnsIntegrationRequest\x12+\n\x0bintegration\x18\x01 \x01(\x0b\x32\x16.api.AwsSnsIntegration\"8\n\x1e\x44\x65leteAwsSnsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x86\x01\n\x1a\x41zureServiceBusIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x1f\n\x08\x65ncoding\x18\x02 \x01(\x0e\x32\r.api.Encoding\x12\x19\n\x11\x63onnection_string\x18\x03 \x01(\t\x12\x14\n\x0cpublish_name\x18\x04 \x01(\t\"_\n\'CreateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\">\n$GetAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"]\n%GetAzureServiceBusIntegrationResponse\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"_\n\'UpdateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"A\n\'DeleteAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x16PilotThingsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\"W\n#CreatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\":\n GetPilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetPilotThingsIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"W\n#UpdatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"=\n#DeletePilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"|\n\x10IftttIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x15\n\ruplink_values\x18\x03 \x03(\t\x12\x16\n\x0e\x61rbitrary_json\x18\x04 \x01(\x08\x12\x14\n\x0c\x65vent_prefix\x18\x05 \x01(\t\"K\n\x1d\x43reateIftttIntegrationRequest\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"4\n\x1aGetIftttIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n\x1bGetIftttIntegrationResponse\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"K\n\x1dUpdateIftttIntegrationRequest\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"7\n\x1d\x44\x65leteIftttIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n/GenerateMqttIntegrationClientCertificateRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x96\x01\n0GenerateMqttIntegrationClientCertificateResponse\x12\x10\n\x08tls_cert\x18\x01 \x01(\t\x12\x0f\n\x07tls_key\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61_cert\x18\x03 \x01(\t\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp*\"\n\x08\x45ncoding\x12\x08\n\x04JSON\x10\x00\x12\x0c\n\x08PROTOBUF\x10\x01*\xbf\x01\n\x0fIntegrationKind\x12\x08\n\x04HTTP\x10\x00\x12\r\n\tINFLUX_DB\x10\x01\x12\x10\n\x0cTHINGS_BOARD\x10\x02\x12\x0e\n\nMY_DEVICES\x10\x03\x12\x0e\n\nLORA_CLOUD\x10\x04\x12\x0f\n\x0bGCP_PUB_SUB\x10\x05\x12\x0b\n\x07\x41WS_SNS\x10\x06\x12\x15\n\x11\x41ZURE_SERVICE_BUS\x10\x07\x12\x10\n\x0cPILOT_THINGS\x10\x08\x12\x0f\n\x0bMQTT_GLOBAL\x10\t\x12\t\n\x05IFTTT\x10\n*?\n\x11InfluxDbPrecision\x12\x06\n\x02NS\x10\x00\x12\x05\n\x01U\x10\x01\x12\x06\n\x02MS\x10\x02\x12\x05\n\x01S\x10\x03\x12\x05\n\x01M\x10\x04\x12\x05\n\x01H\x10\x05*1\n\x0fInfluxDbVersion\x12\x0e\n\nINFLUXDB_1\x10\x00\x12\x0e\n\nINFLUXDB_2\x10\x01\x32\xb8<\n\x12\x41pplicationService\x12\x65\n\x06\x43reate\x12\x1d.api.CreateApplicationRequest\x1a\x1e.api.CreateApplicationResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/api/applications:\x01*\x12^\n\x03Get\x12\x1a.api.GetApplicationRequest\x1a\x1b.api.GetApplicationResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/applications/{id}\x12n\n\x06Update\x12\x1d.api.UpdateApplicationRequest\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02\'\x1a\"/api/applications/{application.id}:\x01*\x12_\n\x06\x44\x65lete\x12\x1d.api.DeleteApplicationRequest\x1a\x16.google.protobuf.Empty\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/api/applications/{id}\x12^\n\x04List\x12\x1c.api.ListApplicationsRequest\x1a\x1d.api.ListApplicationsResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/applications\x12\x88\x01\n\x10ListIntegrations\x12\x1c.api.ListIntegrationsRequest\x1a\x1d.api.ListIntegrationsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//api/applications/{application_id}/integrations\x12\x9f\x01\n\x15\x43reateHttpIntegration\x12!.api.CreateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\"@/api/applications/{integration.application_id}/integrations/http:\x01*\x12\x93\x01\n\x12GetHttpIntegration\x12\x1e.api.GetHttpIntegrationRequest\x1a\x1f.api.GetHttpIntegrationResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/applications/{application_id}/integrations/http\x12\x9f\x01\n\x15UpdateHttpIntegration\x12!.api.UpdateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\x1a@/api/applications/{integration.application_id}/integrations/http:\x01*\x12\x90\x01\n\x15\x44\x65leteHttpIntegration\x12!.api.DeleteHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x02\x36*4/api/applications/{application_id}/integrations/http\x12\xab\x01\n\x19\x43reateInfluxDbIntegration\x12%.api.CreateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"O\x82\xd3\xe4\x93\x02I\"D/api/applications/{integration.application_id}/integrations/influxdb:\x01*\x12\xa3\x01\n\x16GetInfluxDbIntegration\x12\".api.GetInfluxDbIntegrationRequest\x1a#.api.GetInfluxDbIntegrationResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/api/applications/{application_id}/integrations/influxdb\x12\xab\x01\n\x19UpdateInfluxDbIntegration\x12%.api.UpdateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"O\x82\xd3\xe4\x93\x02I\x1a\x44/api/applications/{integration.application_id}/integrations/influxdb:\x01*\x12\x9c\x01\n\x19\x44\x65leteInfluxDbIntegration\x12%.api.DeleteInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"@\x82\xd3\xe4\x93\x02:*8/api/applications/{application_id}/integrations/influxdb\x12\xb4\x01\n\x1c\x43reateThingsBoardIntegration\x12(.api.CreateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\"G/api/applications/{integration.application_id}/integrations/thingsboard:\x01*\x12\xaf\x01\n\x19GetThingsBoardIntegration\x12%.api.GetThingsBoardIntegrationRequest\x1a&.api.GetThingsBoardIntegrationResponse\"C\x82\xd3\xe4\x93\x02=\x12;/api/applications/{application_id}/integrations/thingsboard\x12\xb4\x01\n\x1cUpdateThingsBoardIntegration\x12(.api.UpdateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\x1aG/api/applications/{integration.application_id}/integrations/thingsboard:\x01*\x12\xa5\x01\n\x1c\x44\x65leteThingsBoardIntegration\x12(.api.DeleteThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"C\x82\xd3\xe4\x93\x02=*;/api/applications/{application_id}/integrations/thingsboard\x12\xae\x01\n\x1a\x43reateMyDevicesIntegration\x12&.api.CreateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\"E/api/applications/{integration.application_id}/integrations/mydevices:\x01*\x12\xa7\x01\n\x17GetMyDevicesIntegration\x12#.api.GetMyDevicesIntegrationRequest\x1a$.api.GetMyDevicesIntegrationResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/applications/{application_id}/integrations/mydevices\x12\xae\x01\n\x1aUpdateMyDevicesIntegration\x12&.api.UpdateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\x1a\x45/api/applications/{integration.application_id}/integrations/mydevices:\x01*\x12\x9f\x01\n\x1a\x44\x65leteMyDevicesIntegration\x12&.api.DeleteMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"A\x82\xd3\xe4\x93\x02;*9/api/applications/{application_id}/integrations/mydevices\x12\xae\x01\n\x1a\x43reateLoraCloudIntegration\x12&.api.CreateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\"E/api/applications/{integration.application_id}/integrations/loracloud:\x01*\x12\xa7\x01\n\x17GetLoraCloudIntegration\x12#.api.GetLoraCloudIntegrationRequest\x1a$.api.GetLoraCloudIntegrationResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/applications/{application_id}/integrations/loracloud\x12\xae\x01\n\x1aUpdateLoraCloudIntegration\x12&.api.UpdateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\x1a\x45/api/applications/{integration.application_id}/integrations/loracloud:\x01*\x12\x9f\x01\n\x1a\x44\x65leteLoraCloudIntegration\x12&.api.DeleteLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"A\x82\xd3\xe4\x93\x02;*9/api/applications/{application_id}/integrations/loracloud\x12\xb0\x01\n\x1a\x43reateGcpPubSubIntegration\x12&.api.CreateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\"G/api/applications/{integration.application_id}/integrations/gcp-pub-sub:\x01*\x12\xa9\x01\n\x17GetGcpPubSubIntegration\x12#.api.GetGcpPubSubIntegrationRequest\x1a$.api.GetGcpPubSubIntegrationResponse\"C\x82\xd3\xe4\x93\x02=\x12;/api/applications/{application_id}/integrations/gcp-pub-sub\x12\xb0\x01\n\x1aUpdateGcpPubSubIntegration\x12&.api.UpdateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\x1aG/api/applications/{integration.application_id}/integrations/gcp-pub-sub:\x01*\x12\xa1\x01\n\x1a\x44\x65leteGcpPubSubIntegration\x12&.api.DeleteGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"C\x82\xd3\xe4\x93\x02=*;/api/applications/{application_id}/integrations/gcp-pub-sub\x12\xa6\x01\n\x17\x43reateAwsSnsIntegration\x12#.api.CreateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"N\x82\xd3\xe4\x93\x02H\"C/api/applications/{integration.application_id}/integrations/aws-sns:\x01*\x12\x9c\x01\n\x14GetAwsSnsIntegration\x12 .api.GetAwsSnsIntegrationRequest\x1a!.api.GetAwsSnsIntegrationResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/api/applications/{application_id}/integrations/aws-sns\x12\xa6\x01\n\x17UpdateAwsSnsIntegration\x12#.api.UpdateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"N\x82\xd3\xe4\x93\x02H\x1a\x43/api/applications/{integration.application_id}/integrations/aws-sns:\x01*\x12\x97\x01\n\x17\x44\x65leteAwsSnsIntegration\x12#.api.DeleteAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"?\x82\xd3\xe4\x93\x02\x39*7/api/applications/{application_id}/integrations/aws-sns\x12\xc2\x01\n CreateAzureServiceBusIntegration\x12,.api.CreateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"X\x82\xd3\xe4\x93\x02R\"M/api/applications/{integration.application_id}/integrations/azure-service-bus:\x01*\x12\xc1\x01\n\x1dGetAzureServiceBusIntegration\x12).api.GetAzureServiceBusIntegrationRequest\x1a*.api.GetAzureServiceBusIntegrationResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/applications/{application_id}/integrations/azure-service-bus\x12\xc2\x01\n UpdateAzureServiceBusIntegration\x12,.api.UpdateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"X\x82\xd3\xe4\x93\x02R\x1aM/api/applications/{integration.application_id}/integrations/azure-service-bus:\x01*\x12\xb3\x01\n DeleteAzureServiceBusIntegration\x12,.api.DeleteAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"I\x82\xd3\xe4\x93\x02\x43*A/api/applications/{application_id}/integrations/azure-service-bus\x12\xb5\x01\n\x1c\x43reatePilotThingsIntegration\x12(.api.CreatePilotThingsIntegrationRequest\x1a\x16.google.protobuf.Empty\"S\x82\xd3\xe4\x93\x02M\"H/api/applications/{integration.application_id}/integrations/pilot-things:\x01*\x12\xb0\x01\n\x19GetPilotThingsIntegration\x12%.api.GetPilotThingsIntegrationRequest\x1a&.api.GetPilotThingsIntegrationResponse\"D\x82\xd3\xe4\x93\x02>\x12*\n$GetAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"]\n%GetAzureServiceBusIntegrationResponse\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"_\n\'UpdateAzureServiceBusIntegrationRequest\x12\x34\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1f.api.AzureServiceBusIntegration\"A\n\'DeleteAzureServiceBusIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"O\n\x16PilotThingsIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\r\n\x05token\x18\x03 \x01(\t\"W\n#CreatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\":\n GetPilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"U\n!GetPilotThingsIntegrationResponse\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"W\n#UpdatePilotThingsIntegrationRequest\x12\x30\n\x0bintegration\x18\x01 \x01(\x0b\x32\x1b.api.PilotThingsIntegration\"=\n#DeletePilotThingsIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"|\n\x10IftttIntegration\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x15\n\ruplink_values\x18\x03 \x03(\t\x12\x16\n\x0e\x61rbitrary_json\x18\x04 \x01(\x08\x12\x14\n\x0c\x65vent_prefix\x18\x05 \x01(\t\"K\n\x1d\x43reateIftttIntegrationRequest\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"4\n\x1aGetIftttIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n\x1bGetIftttIntegrationResponse\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"K\n\x1dUpdateIftttIntegrationRequest\x12*\n\x0bintegration\x18\x01 \x01(\x0b\x32\x15.api.IftttIntegration\"7\n\x1d\x44\x65leteIftttIntegrationRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"I\n/GenerateMqttIntegrationClientCertificateRequest\x12\x16\n\x0e\x61pplication_id\x18\x01 \x01(\t\"\x96\x01\n0GenerateMqttIntegrationClientCertificateResponse\x12\x10\n\x08tls_cert\x18\x01 \x01(\t\x12\x0f\n\x07tls_key\x18\x02 \x01(\t\x12\x0f\n\x07\x63\x61_cert\x18\x03 \x01(\t\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp*\"\n\x08\x45ncoding\x12\x08\n\x04JSON\x10\x00\x12\x0c\n\x08PROTOBUF\x10\x01*\xbf\x01\n\x0fIntegrationKind\x12\x08\n\x04HTTP\x10\x00\x12\r\n\tINFLUX_DB\x10\x01\x12\x10\n\x0cTHINGS_BOARD\x10\x02\x12\x0e\n\nMY_DEVICES\x10\x03\x12\x0e\n\nLORA_CLOUD\x10\x04\x12\x0f\n\x0bGCP_PUB_SUB\x10\x05\x12\x0b\n\x07\x41WS_SNS\x10\x06\x12\x15\n\x11\x41ZURE_SERVICE_BUS\x10\x07\x12\x10\n\x0cPILOT_THINGS\x10\x08\x12\x0f\n\x0bMQTT_GLOBAL\x10\t\x12\t\n\x05IFTTT\x10\n*?\n\x11InfluxDbPrecision\x12\x06\n\x02NS\x10\x00\x12\x05\n\x01U\x10\x01\x12\x06\n\x02MS\x10\x02\x12\x05\n\x01S\x10\x03\x12\x05\n\x01M\x10\x04\x12\x05\n\x01H\x10\x05*1\n\x0fInfluxDbVersion\x12\x0e\n\nINFLUXDB_1\x10\x00\x12\x0e\n\nINFLUXDB_2\x10\x01\x32\xb8<\n\x12\x41pplicationService\x12\x65\n\x06\x43reate\x12\x1d.api.CreateApplicationRequest\x1a\x1e.api.CreateApplicationResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/api/applications:\x01*\x12^\n\x03Get\x12\x1a.api.GetApplicationRequest\x1a\x1b.api.GetApplicationResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/applications/{id}\x12n\n\x06Update\x12\x1d.api.UpdateApplicationRequest\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02\'\x1a\"/api/applications/{application.id}:\x01*\x12_\n\x06\x44\x65lete\x12\x1d.api.DeleteApplicationRequest\x1a\x16.google.protobuf.Empty\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/api/applications/{id}\x12^\n\x04List\x12\x1c.api.ListApplicationsRequest\x1a\x1d.api.ListApplicationsResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/applications\x12\x88\x01\n\x10ListIntegrations\x12\x1c.api.ListIntegrationsRequest\x1a\x1d.api.ListIntegrationsResponse\"7\x82\xd3\xe4\x93\x02\x31\x12//api/applications/{application_id}/integrations\x12\x9f\x01\n\x15\x43reateHttpIntegration\x12!.api.CreateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\"@/api/applications/{integration.application_id}/integrations/http:\x01*\x12\x93\x01\n\x12GetHttpIntegration\x12\x1e.api.GetHttpIntegrationRequest\x1a\x1f.api.GetHttpIntegrationResponse\"<\x82\xd3\xe4\x93\x02\x36\x12\x34/api/applications/{application_id}/integrations/http\x12\x9f\x01\n\x15UpdateHttpIntegration\x12!.api.UpdateHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\x1a@/api/applications/{integration.application_id}/integrations/http:\x01*\x12\x90\x01\n\x15\x44\x65leteHttpIntegration\x12!.api.DeleteHttpIntegrationRequest\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x02\x36*4/api/applications/{application_id}/integrations/http\x12\xab\x01\n\x19\x43reateInfluxDbIntegration\x12%.api.CreateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"O\x82\xd3\xe4\x93\x02I\"D/api/applications/{integration.application_id}/integrations/influxdb:\x01*\x12\xa3\x01\n\x16GetInfluxDbIntegration\x12\".api.GetInfluxDbIntegrationRequest\x1a#.api.GetInfluxDbIntegrationResponse\"@\x82\xd3\xe4\x93\x02:\x12\x38/api/applications/{application_id}/integrations/influxdb\x12\xab\x01\n\x19UpdateInfluxDbIntegration\x12%.api.UpdateInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"O\x82\xd3\xe4\x93\x02I\x1a\x44/api/applications/{integration.application_id}/integrations/influxdb:\x01*\x12\x9c\x01\n\x19\x44\x65leteInfluxDbIntegration\x12%.api.DeleteInfluxDbIntegrationRequest\x1a\x16.google.protobuf.Empty\"@\x82\xd3\xe4\x93\x02:*8/api/applications/{application_id}/integrations/influxdb\x12\xb4\x01\n\x1c\x43reateThingsBoardIntegration\x12(.api.CreateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\"G/api/applications/{integration.application_id}/integrations/thingsboard:\x01*\x12\xaf\x01\n\x19GetThingsBoardIntegration\x12%.api.GetThingsBoardIntegrationRequest\x1a&.api.GetThingsBoardIntegrationResponse\"C\x82\xd3\xe4\x93\x02=\x12;/api/applications/{application_id}/integrations/thingsboard\x12\xb4\x01\n\x1cUpdateThingsBoardIntegration\x12(.api.UpdateThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\x1aG/api/applications/{integration.application_id}/integrations/thingsboard:\x01*\x12\xa5\x01\n\x1c\x44\x65leteThingsBoardIntegration\x12(.api.DeleteThingsBoardIntegrationRequest\x1a\x16.google.protobuf.Empty\"C\x82\xd3\xe4\x93\x02=*;/api/applications/{application_id}/integrations/thingsboard\x12\xae\x01\n\x1a\x43reateMyDevicesIntegration\x12&.api.CreateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\"E/api/applications/{integration.application_id}/integrations/mydevices:\x01*\x12\xa7\x01\n\x17GetMyDevicesIntegration\x12#.api.GetMyDevicesIntegrationRequest\x1a$.api.GetMyDevicesIntegrationResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/applications/{application_id}/integrations/mydevices\x12\xae\x01\n\x1aUpdateMyDevicesIntegration\x12&.api.UpdateMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\x1a\x45/api/applications/{integration.application_id}/integrations/mydevices:\x01*\x12\x9f\x01\n\x1a\x44\x65leteMyDevicesIntegration\x12&.api.DeleteMyDevicesIntegrationRequest\x1a\x16.google.protobuf.Empty\"A\x82\xd3\xe4\x93\x02;*9/api/applications/{application_id}/integrations/mydevices\x12\xae\x01\n\x1a\x43reateLoraCloudIntegration\x12&.api.CreateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\"E/api/applications/{integration.application_id}/integrations/loracloud:\x01*\x12\xa7\x01\n\x17GetLoraCloudIntegration\x12#.api.GetLoraCloudIntegrationRequest\x1a$.api.GetLoraCloudIntegrationResponse\"A\x82\xd3\xe4\x93\x02;\x12\x39/api/applications/{application_id}/integrations/loracloud\x12\xae\x01\n\x1aUpdateLoraCloudIntegration\x12&.api.UpdateLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"P\x82\xd3\xe4\x93\x02J\x1a\x45/api/applications/{integration.application_id}/integrations/loracloud:\x01*\x12\x9f\x01\n\x1a\x44\x65leteLoraCloudIntegration\x12&.api.DeleteLoraCloudIntegrationRequest\x1a\x16.google.protobuf.Empty\"A\x82\xd3\xe4\x93\x02;*9/api/applications/{application_id}/integrations/loracloud\x12\xb0\x01\n\x1a\x43reateGcpPubSubIntegration\x12&.api.CreateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\"G/api/applications/{integration.application_id}/integrations/gcp-pub-sub:\x01*\x12\xa9\x01\n\x17GetGcpPubSubIntegration\x12#.api.GetGcpPubSubIntegrationRequest\x1a$.api.GetGcpPubSubIntegrationResponse\"C\x82\xd3\xe4\x93\x02=\x12;/api/applications/{application_id}/integrations/gcp-pub-sub\x12\xb0\x01\n\x1aUpdateGcpPubSubIntegration\x12&.api.UpdateGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"R\x82\xd3\xe4\x93\x02L\x1aG/api/applications/{integration.application_id}/integrations/gcp-pub-sub:\x01*\x12\xa1\x01\n\x1a\x44\x65leteGcpPubSubIntegration\x12&.api.DeleteGcpPubSubIntegrationRequest\x1a\x16.google.protobuf.Empty\"C\x82\xd3\xe4\x93\x02=*;/api/applications/{application_id}/integrations/gcp-pub-sub\x12\xa6\x01\n\x17\x43reateAwsSnsIntegration\x12#.api.CreateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"N\x82\xd3\xe4\x93\x02H\"C/api/applications/{integration.application_id}/integrations/aws-sns:\x01*\x12\x9c\x01\n\x14GetAwsSnsIntegration\x12 .api.GetAwsSnsIntegrationRequest\x1a!.api.GetAwsSnsIntegrationResponse\"?\x82\xd3\xe4\x93\x02\x39\x12\x37/api/applications/{application_id}/integrations/aws-sns\x12\xa6\x01\n\x17UpdateAwsSnsIntegration\x12#.api.UpdateAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"N\x82\xd3\xe4\x93\x02H\x1a\x43/api/applications/{integration.application_id}/integrations/aws-sns:\x01*\x12\x97\x01\n\x17\x44\x65leteAwsSnsIntegration\x12#.api.DeleteAwsSnsIntegrationRequest\x1a\x16.google.protobuf.Empty\"?\x82\xd3\xe4\x93\x02\x39*7/api/applications/{application_id}/integrations/aws-sns\x12\xc2\x01\n CreateAzureServiceBusIntegration\x12,.api.CreateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"X\x82\xd3\xe4\x93\x02R\"M/api/applications/{integration.application_id}/integrations/azure-service-bus:\x01*\x12\xc1\x01\n\x1dGetAzureServiceBusIntegration\x12).api.GetAzureServiceBusIntegrationRequest\x1a*.api.GetAzureServiceBusIntegrationResponse\"I\x82\xd3\xe4\x93\x02\x43\x12\x41/api/applications/{application_id}/integrations/azure-service-bus\x12\xc2\x01\n UpdateAzureServiceBusIntegration\x12,.api.UpdateAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"X\x82\xd3\xe4\x93\x02R\x1aM/api/applications/{integration.application_id}/integrations/azure-service-bus:\x01*\x12\xb3\x01\n DeleteAzureServiceBusIntegration\x12,.api.DeleteAzureServiceBusIntegrationRequest\x1a\x16.google.protobuf.Empty\"I\x82\xd3\xe4\x93\x02\x43*A/api/applications/{application_id}/integrations/azure-service-bus\x12\xb5\x01\n\x1c\x43reatePilotThingsIntegration\x12(.api.CreatePilotThingsIntegrationRequest\x1a\x16.google.protobuf.Empty\"S\x82\xd3\xe4\x93\x02M\"H/api/applications/{integration.application_id}/integrations/pilot-things:\x01*\x12\xb0\x01\n\x19GetPilotThingsIntegration\x12%.api.GetPilotThingsIntegrationRequest\x1a&.api.GetPilotThingsIntegrationResponse\"D\x82\xd3\xe4\x93\x02>\x12* None: ... ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] TENANT_ID_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] id: str name: str description: str tenant_id: str - def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., tenant_id: _Optional[str] = ...) -> None: ... + tags: _containers.ScalarMap[str, str] + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., tenant_id: _Optional[str] = ..., tags: _Optional[_Mapping[str, str]] = ...) -> None: ... class ApplicationListItem(_message.Message): __slots__ = ["id", "created_at", "updated_at", "name", "description"] diff --git a/api/python/src/chirpstack_api/api/device_profile_pb2_grpc.py b/api/python/src/chirpstack_api/api/device_profile_pb2_grpc.py index a6c4183b..986c4157 100644 --- a/api/python/src/chirpstack_api/api/device_profile_pb2_grpc.py +++ b/api/python/src/chirpstack_api/api/device_profile_pb2_grpc.py @@ -7,7 +7,8 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 class DeviceProfileServiceStub(object): - """DeviceProfileService is the service providing API methods for managing device-profiles. + """DeviceProfileService is the service providing API methods for managing + device-profiles. """ def __init__(self, channel): @@ -49,7 +50,8 @@ class DeviceProfileServiceStub(object): class DeviceProfileServiceServicer(object): - """DeviceProfileService is the service providing API methods for managing device-profiles. + """DeviceProfileService is the service providing API methods for managing + device-profiles. """ def Create(self, request, context): @@ -135,7 +137,8 @@ def add_DeviceProfileServiceServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. class DeviceProfileService(object): - """DeviceProfileService is the service providing API methods for managing device-profiles. + """DeviceProfileService is the service providing API methods for managing + device-profiles. """ @staticmethod diff --git a/api/python/src/chirpstack_api/api/tenant_pb2.py b/api/python/src/chirpstack_api/api/tenant_pb2.py index a6c06d24..4ada9fb2 100644 --- a/api/python/src/chirpstack_api/api/tenant_pb2.py +++ b/api/python/src/chirpstack_api/api/tenant_pb2.py @@ -16,7 +16,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hirpstack-api/api/tenant.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xc3\x01\n\x06Tenant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x19\n\x11\x63\x61n_have_gateways\x18\x04 \x01(\x08\x12\x19\n\x11max_gateway_count\x18\x05 \x01(\r\x12\x18\n\x10max_device_count\x18\x06 \x01(\r\x12\x1b\n\x13private_gateways_up\x18\x07 \x01(\x08\x12\x1d\n\x15private_gateways_down\x18\x08 \x01(\x08\"\x96\x02\n\x0eTenantListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11\x63\x61n_have_gateways\x18\x05 \x01(\x08\x12\x1b\n\x13private_gateways_up\x18\x06 \x01(\x08\x12\x1d\n\x15private_gateways_down\x18\t \x01(\x08\x12\x19\n\x11max_gateway_count\x18\x07 \x01(\r\x12\x18\n\x10max_device_count\x18\x08 \x01(\r\"2\n\x13\x43reateTenantRequest\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\"\"\n\x14\x43reateTenantResponse\x12\n\n\x02id\x18\x01 \x01(\t\"\x1e\n\x10GetTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x11GetTenantResponse\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\x13UpdateTenantRequest\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\"!\n\x13\x44\x65leteTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"T\n\x12ListTenantsRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x0e\n\x06search\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\t\"O\n\x13ListTenantsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12#\n\x06result\x18\x02 \x03(\x0b\x32\x13.api.TenantListItem\"\x84\x01\n\nTenantUser\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x04 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x05 \x01(\x08\x12\r\n\x05\x65mail\x18\x06 \x01(\t\"\xec\x01\n\x12TenantUserListItem\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05\x65mail\x18\x05 \x01(\t\x12\x10\n\x08is_admin\x18\x06 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x07 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x08 \x01(\x08\"<\n\x14\x41\x64\x64TenantUserRequest\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\":\n\x14GetTenantUserRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"\x9d\x01\n\x15GetTenantUserResponse\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"?\n\x17UpdateTenantUserRequest\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\"=\n\x17\x44\x65leteTenantUserRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"J\n\x16ListTenantUsersRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\r\x12\x0e\n\x06offset\x18\x03 \x01(\r\"W\n\x17ListTenantUsersResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12\'\n\x06result\x18\x02 \x03(\x0b\x32\x17.api.TenantUserListItem2\xa2\x08\n\rTenantService\x12V\n\x06\x43reate\x12\x18.api.CreateTenantRequest\x1a\x19.api.CreateTenantResponse\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0c/api/tenants:\x01*\x12O\n\x03Get\x12\x15.api.GetTenantRequest\x1a\x16.api.GetTenantResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/tenants/{id}\x12_\n\x06Update\x12\x18.api.UpdateTenantRequest\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\x1a\x18/api/tenants/{tenant.id}:\x01*\x12U\n\x06\x44\x65lete\x12\x18.api.DeleteTenantRequest\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/api/tenants/{id}\x12O\n\x04List\x12\x17.api.ListTenantsRequest\x1a\x18.api.ListTenantsResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/tenants\x12s\n\x07\x41\x64\x64User\x12\x19.api.AddTenantUserRequest\x1a\x16.google.protobuf.Empty\"5\x82\xd3\xe4\x93\x02/\"*/api/tenants/{tenant_user.tenant_id}/users:\x01*\x12r\n\x07GetUser\x12\x19.api.GetTenantUserRequest\x1a\x1a.api.GetTenantUserResponse\"0\x82\xd3\xe4\x93\x02*\x12(/api/tenants/{tenant_id}/users/{user_id}\x12\x8f\x01\n\nUpdateUser\x12\x1c.api.UpdateTenantUserRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\x1a@/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}:\x01*\x12t\n\nDeleteUser\x12\x1c.api.DeleteTenantUserRequest\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/tenants/{tenant_id}/users/{user_id}\x12n\n\tListUsers\x12\x1b.api.ListTenantUsersRequest\x1a\x1c.api.ListTenantUsersResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/tenants/{tenant_id}/usersBc\n\x11io.chirpstack.apiB\x0bTenantProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/api\xaa\x02\x0e\x43hirpstack.Apib\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x63hirpstack-api/api/tenant.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\x95\x02\n\x06Tenant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x19\n\x11\x63\x61n_have_gateways\x18\x04 \x01(\x08\x12\x19\n\x11max_gateway_count\x18\x05 \x01(\r\x12\x18\n\x10max_device_count\x18\x06 \x01(\r\x12\x1b\n\x13private_gateways_up\x18\x07 \x01(\x08\x12\x1d\n\x15private_gateways_down\x18\x08 \x01(\x08\x12#\n\x04tags\x18\t \x03(\x0b\x32\x15.api.Tenant.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x96\x02\n\x0eTenantListItem\x12\n\n\x02id\x18\x01 \x01(\t\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x19\n\x11\x63\x61n_have_gateways\x18\x05 \x01(\x08\x12\x1b\n\x13private_gateways_up\x18\x06 \x01(\x08\x12\x1d\n\x15private_gateways_down\x18\t \x01(\x08\x12\x19\n\x11max_gateway_count\x18\x07 \x01(\r\x12\x18\n\x10max_device_count\x18\x08 \x01(\r\"2\n\x13\x43reateTenantRequest\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\"\"\n\x14\x43reateTenantResponse\x12\n\n\x02id\x18\x01 \x01(\t\"\x1e\n\x10GetTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x11GetTenantResponse\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\x13UpdateTenantRequest\x12\x1b\n\x06tenant\x18\x01 \x01(\x0b\x32\x0b.api.Tenant\"!\n\x13\x44\x65leteTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"T\n\x12ListTenantsRequest\x12\r\n\x05limit\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\r\x12\x0e\n\x06search\x18\x03 \x01(\t\x12\x0f\n\x07user_id\x18\x04 \x01(\t\"O\n\x13ListTenantsResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12#\n\x06result\x18\x02 \x03(\x0b\x32\x13.api.TenantListItem\"\x84\x01\n\nTenantUser\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x04 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x05 \x01(\x08\x12\r\n\x05\x65mail\x18\x06 \x01(\t\"\xec\x01\n\x12TenantUserListItem\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05\x65mail\x18\x05 \x01(\t\x12\x10\n\x08is_admin\x18\x06 \x01(\x08\x12\x17\n\x0fis_device_admin\x18\x07 \x01(\x08\x12\x18\n\x10is_gateway_admin\x18\x08 \x01(\x08\"<\n\x14\x41\x64\x64TenantUserRequest\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\":\n\x14GetTenantUserRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"\x9d\x01\n\x15GetTenantUserResponse\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\x12.\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"?\n\x17UpdateTenantUserRequest\x12$\n\x0btenant_user\x18\x01 \x01(\x0b\x32\x0f.api.TenantUser\"=\n\x17\x44\x65leteTenantUserRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07user_id\x18\x02 \x01(\t\"J\n\x16ListTenantUsersRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\r\n\x05limit\x18\x02 \x01(\r\x12\x0e\n\x06offset\x18\x03 \x01(\r\"W\n\x17ListTenantUsersResponse\x12\x13\n\x0btotal_count\x18\x01 \x01(\r\x12\'\n\x06result\x18\x02 \x03(\x0b\x32\x17.api.TenantUserListItem2\xa2\x08\n\rTenantService\x12V\n\x06\x43reate\x12\x18.api.CreateTenantRequest\x1a\x19.api.CreateTenantResponse\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0c/api/tenants:\x01*\x12O\n\x03Get\x12\x15.api.GetTenantRequest\x1a\x16.api.GetTenantResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/tenants/{id}\x12_\n\x06Update\x12\x18.api.UpdateTenantRequest\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\x1a\x18/api/tenants/{tenant.id}:\x01*\x12U\n\x06\x44\x65lete\x12\x18.api.DeleteTenantRequest\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/api/tenants/{id}\x12O\n\x04List\x12\x17.api.ListTenantsRequest\x1a\x18.api.ListTenantsResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/api/tenants\x12s\n\x07\x41\x64\x64User\x12\x19.api.AddTenantUserRequest\x1a\x16.google.protobuf.Empty\"5\x82\xd3\xe4\x93\x02/\"*/api/tenants/{tenant_user.tenant_id}/users:\x01*\x12r\n\x07GetUser\x12\x19.api.GetTenantUserRequest\x1a\x1a.api.GetTenantUserResponse\"0\x82\xd3\xe4\x93\x02*\x12(/api/tenants/{tenant_id}/users/{user_id}\x12\x8f\x01\n\nUpdateUser\x12\x1c.api.UpdateTenantUserRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02\x45\x1a@/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}:\x01*\x12t\n\nDeleteUser\x12\x1c.api.DeleteTenantUserRequest\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/tenants/{tenant_id}/users/{user_id}\x12n\n\tListUsers\x12\x1b.api.ListTenantUsersRequest\x1a\x1c.api.ListTenantUsersResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/tenants/{tenant_id}/usersBc\n\x11io.chirpstack.apiB\x0bTenantProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/api\xaa\x02\x0e\x43hirpstack.Apib\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -25,6 +25,8 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\021io.chirpstack.apiB\013TenantProtoP\001Z.github.com/chirpstack/chirpstack/api/go/v4/api\252\002\016Chirpstack.Api' + _TENANT_TAGSENTRY._options = None + _TENANT_TAGSENTRY._serialized_options = b'8\001' _TENANTSERVICE.methods_by_name['Create']._options = None _TENANTSERVICE.methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\021\"\014/api/tenants:\001*' _TENANTSERVICE.methods_by_name['Get']._options = None @@ -46,43 +48,45 @@ if _descriptor._USE_C_DESCRIPTORS == False: _TENANTSERVICE.methods_by_name['ListUsers']._options = None _TENANTSERVICE.methods_by_name['ListUsers']._serialized_options = b'\202\323\344\223\002 \022\036/api/tenants/{tenant_id}/users' _globals['_TENANT']._serialized_start=133 - _globals['_TENANT']._serialized_end=328 - _globals['_TENANTLISTITEM']._serialized_start=331 - _globals['_TENANTLISTITEM']._serialized_end=609 - _globals['_CREATETENANTREQUEST']._serialized_start=611 - _globals['_CREATETENANTREQUEST']._serialized_end=661 - _globals['_CREATETENANTRESPONSE']._serialized_start=663 - _globals['_CREATETENANTRESPONSE']._serialized_end=697 - _globals['_GETTENANTREQUEST']._serialized_start=699 - _globals['_GETTENANTREQUEST']._serialized_end=729 - _globals['_GETTENANTRESPONSE']._serialized_start=732 - _globals['_GETTENANTRESPONSE']._serialized_end=876 - _globals['_UPDATETENANTREQUEST']._serialized_start=878 - _globals['_UPDATETENANTREQUEST']._serialized_end=928 - _globals['_DELETETENANTREQUEST']._serialized_start=930 - _globals['_DELETETENANTREQUEST']._serialized_end=963 - _globals['_LISTTENANTSREQUEST']._serialized_start=965 - _globals['_LISTTENANTSREQUEST']._serialized_end=1049 - _globals['_LISTTENANTSRESPONSE']._serialized_start=1051 - _globals['_LISTTENANTSRESPONSE']._serialized_end=1130 - _globals['_TENANTUSER']._serialized_start=1133 - _globals['_TENANTUSER']._serialized_end=1265 - _globals['_TENANTUSERLISTITEM']._serialized_start=1268 - _globals['_TENANTUSERLISTITEM']._serialized_end=1504 - _globals['_ADDTENANTUSERREQUEST']._serialized_start=1506 - _globals['_ADDTENANTUSERREQUEST']._serialized_end=1566 - _globals['_GETTENANTUSERREQUEST']._serialized_start=1568 - _globals['_GETTENANTUSERREQUEST']._serialized_end=1626 - _globals['_GETTENANTUSERRESPONSE']._serialized_start=1629 - _globals['_GETTENANTUSERRESPONSE']._serialized_end=1786 - _globals['_UPDATETENANTUSERREQUEST']._serialized_start=1788 - _globals['_UPDATETENANTUSERREQUEST']._serialized_end=1851 - _globals['_DELETETENANTUSERREQUEST']._serialized_start=1853 - _globals['_DELETETENANTUSERREQUEST']._serialized_end=1914 - _globals['_LISTTENANTUSERSREQUEST']._serialized_start=1916 - _globals['_LISTTENANTUSERSREQUEST']._serialized_end=1990 - _globals['_LISTTENANTUSERSRESPONSE']._serialized_start=1992 - _globals['_LISTTENANTUSERSRESPONSE']._serialized_end=2079 - _globals['_TENANTSERVICE']._serialized_start=2082 - _globals['_TENANTSERVICE']._serialized_end=3140 + _globals['_TENANT']._serialized_end=410 + _globals['_TENANT_TAGSENTRY']._serialized_start=367 + _globals['_TENANT_TAGSENTRY']._serialized_end=410 + _globals['_TENANTLISTITEM']._serialized_start=413 + _globals['_TENANTLISTITEM']._serialized_end=691 + _globals['_CREATETENANTREQUEST']._serialized_start=693 + _globals['_CREATETENANTREQUEST']._serialized_end=743 + _globals['_CREATETENANTRESPONSE']._serialized_start=745 + _globals['_CREATETENANTRESPONSE']._serialized_end=779 + _globals['_GETTENANTREQUEST']._serialized_start=781 + _globals['_GETTENANTREQUEST']._serialized_end=811 + _globals['_GETTENANTRESPONSE']._serialized_start=814 + _globals['_GETTENANTRESPONSE']._serialized_end=958 + _globals['_UPDATETENANTREQUEST']._serialized_start=960 + _globals['_UPDATETENANTREQUEST']._serialized_end=1010 + _globals['_DELETETENANTREQUEST']._serialized_start=1012 + _globals['_DELETETENANTREQUEST']._serialized_end=1045 + _globals['_LISTTENANTSREQUEST']._serialized_start=1047 + _globals['_LISTTENANTSREQUEST']._serialized_end=1131 + _globals['_LISTTENANTSRESPONSE']._serialized_start=1133 + _globals['_LISTTENANTSRESPONSE']._serialized_end=1212 + _globals['_TENANTUSER']._serialized_start=1215 + _globals['_TENANTUSER']._serialized_end=1347 + _globals['_TENANTUSERLISTITEM']._serialized_start=1350 + _globals['_TENANTUSERLISTITEM']._serialized_end=1586 + _globals['_ADDTENANTUSERREQUEST']._serialized_start=1588 + _globals['_ADDTENANTUSERREQUEST']._serialized_end=1648 + _globals['_GETTENANTUSERREQUEST']._serialized_start=1650 + _globals['_GETTENANTUSERREQUEST']._serialized_end=1708 + _globals['_GETTENANTUSERRESPONSE']._serialized_start=1711 + _globals['_GETTENANTUSERRESPONSE']._serialized_end=1868 + _globals['_UPDATETENANTUSERREQUEST']._serialized_start=1870 + _globals['_UPDATETENANTUSERREQUEST']._serialized_end=1933 + _globals['_DELETETENANTUSERREQUEST']._serialized_start=1935 + _globals['_DELETETENANTUSERREQUEST']._serialized_end=1996 + _globals['_LISTTENANTUSERSREQUEST']._serialized_start=1998 + _globals['_LISTTENANTUSERSREQUEST']._serialized_end=2072 + _globals['_LISTTENANTUSERSRESPONSE']._serialized_start=2074 + _globals['_LISTTENANTUSERSRESPONSE']._serialized_end=2161 + _globals['_TENANTSERVICE']._serialized_start=2164 + _globals['_TENANTSERVICE']._serialized_end=3222 # @@protoc_insertion_point(module_scope) diff --git a/api/python/src/chirpstack_api/api/tenant_pb2.pyi b/api/python/src/chirpstack_api/api/tenant_pb2.pyi index 6dc5d4ac..dd6a49b8 100644 --- a/api/python/src/chirpstack_api/api/tenant_pb2.pyi +++ b/api/python/src/chirpstack_api/api/tenant_pb2.pyi @@ -9,7 +9,14 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class Tenant(_message.Message): - __slots__ = ["id", "name", "description", "can_have_gateways", "max_gateway_count", "max_device_count", "private_gateways_up", "private_gateways_down"] + __slots__ = ["id", "name", "description", "can_have_gateways", "max_gateway_count", "max_device_count", "private_gateways_up", "private_gateways_down", "tags"] + class TagsEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] DESCRIPTION_FIELD_NUMBER: _ClassVar[int] @@ -18,6 +25,7 @@ class Tenant(_message.Message): MAX_DEVICE_COUNT_FIELD_NUMBER: _ClassVar[int] PRIVATE_GATEWAYS_UP_FIELD_NUMBER: _ClassVar[int] PRIVATE_GATEWAYS_DOWN_FIELD_NUMBER: _ClassVar[int] + TAGS_FIELD_NUMBER: _ClassVar[int] id: str name: str description: str @@ -26,7 +34,8 @@ class Tenant(_message.Message): max_device_count: int private_gateways_up: bool private_gateways_down: bool - def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., can_have_gateways: bool = ..., max_gateway_count: _Optional[int] = ..., max_device_count: _Optional[int] = ..., private_gateways_up: bool = ..., private_gateways_down: bool = ...) -> None: ... + tags: _containers.ScalarMap[str, str] + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., can_have_gateways: bool = ..., max_gateway_count: _Optional[int] = ..., max_device_count: _Optional[int] = ..., private_gateways_up: bool = ..., private_gateways_down: bool = ..., tags: _Optional[_Mapping[str, str]] = ...) -> None: ... class TenantListItem(_message.Message): __slots__ = ["id", "created_at", "updated_at", "name", "can_have_gateways", "private_gateways_up", "private_gateways_down", "max_gateway_count", "max_device_count"] diff --git a/api/rust/proto/chirpstack/api/device_profile.proto b/api/rust/proto/chirpstack/api/device_profile.proto index a6112260..d3c1d4d2 100644 --- a/api/rust/proto/chirpstack/api/device_profile.proto +++ b/api/rust/proto/chirpstack/api/device_profile.proto @@ -14,502 +14,509 @@ import "google/protobuf/empty.proto"; import "common/common.proto"; enum CodecRuntime { - // None. - NONE = 0; + // None. + NONE = 0; - // Cayenne LPP. - CAYENNE_LPP = 1; + // Cayenne LPP. + CAYENNE_LPP = 1; - // JavaScript. - JS = 2; + // JavaScript. + JS = 2; } enum MeasurementKind { - // Unknown (in which case it is not tracked). - UNKNOWN = 0; + // Unknown (in which case it is not tracked). + UNKNOWN = 0; - // Incrementing counters that never decrease (these are not reset on each reading). - COUNTER = 1; + // Incrementing counters that never decrease (these are not reset on each + // reading). + COUNTER = 1; - // Counters that do get reset upon reading. - ABSOLUTE = 2; + // Counters that do get reset upon reading. + ABSOLUTE = 2; - // E.g. a temperature value. - GAUGE = 3; + // E.g. a temperature value. + GAUGE = 3; - // E.g. a firmware version, true / false value. - STRING = 4; + // E.g. a firmware version, true / false value. + STRING = 4; } enum CadPeriodicity { - // 1 second. - SEC_1 = 0; + // 1 second. + SEC_1 = 0; - // 500 milliseconds - MS_500 = 1; + // 500 milliseconds + MS_500 = 1; - // 250 milliseconds - MS_250 = 2; + // 250 milliseconds + MS_250 = 2; - // 100 milliseconds - MS_100 = 3; + // 100 milliseconds + MS_100 = 3; - // 50 milliseconds - MS_50 = 4; + // 50 milliseconds + MS_50 = 4; - // 20 milliseconds - MS_20 = 5; + // 20 milliseconds + MS_20 = 5; } enum SecondChAckOffset { - // 0 kHz. - KHZ_0 = 0; + // 0 kHz. + KHZ_0 = 0; - // 200 kHz. - KHZ_200 = 1; + // 200 kHz. + KHZ_200 = 1; - // 400 kHz. - KHZ_400 = 2; + // 400 kHz. + KHZ_400 = 2; - // 800 kHz. - KHZ_800 = 3; + // 800 kHz. + KHZ_800 = 3; - // 1600 kHz. - KHZ_1600 = 4; - - // 3200 kHz. - KHZ_3200 = 5; + // 1600 kHz. + KHZ_1600 = 4; + // 3200 kHz. + KHZ_3200 = 5; } enum RelayModeActivation { - // Disable the relay mode. - DISABLE_RELAY_MODE = 0; + // Disable the relay mode. + DISABLE_RELAY_MODE = 0; - // Enable the relay model. - ENABLE_RELAY_MODE = 1; + // Enable the relay model. + ENABLE_RELAY_MODE = 1; - // Dynamic. - DYNAMIC = 2; + // Dynamic. + DYNAMIC = 2; - // End-device controlled. - END_DEVICE_CONTROLLED = 3; + // End-device controlled. + END_DEVICE_CONTROLLED = 3; } -// DeviceProfileService is the service providing API methods for managing device-profiles. +// DeviceProfileService is the service providing API methods for managing +// device-profiles. service DeviceProfileService { - // Create the given device-profile. - rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) { - option(google.api.http) = { - post: "/api/device-profiles" - body: "*" - }; - } + // Create the given device-profile. + rpc Create(CreateDeviceProfileRequest) returns (CreateDeviceProfileResponse) { + option (google.api.http) = { + post : "/api/device-profiles" + body : "*" + }; + } - // Get the device-profile for the given ID. - rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) { - option(google.api.http) = { - get: "/api/device-profiles/{id}" - }; - } + // Get the device-profile for the given ID. + rpc Get(GetDeviceProfileRequest) returns (GetDeviceProfileResponse) { + option (google.api.http) = { + get : "/api/device-profiles/{id}" + }; + } - // Update the given device-profile. - rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - put: "/api/device-profiles/{device_profile.id}" - body: "*" - }; - } + // Update the given device-profile. + rpc Update(UpdateDeviceProfileRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + put : "/api/device-profiles/{device_profile.id}" + body : "*" + }; + } - // Delete the device-profile with the given ID. - rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) { - option(google.api.http) = { - delete: "/api/device-profiles/{id}" - }; - } - - // List the available device-profiles. - rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) { - option(google.api.http) = { - get: "/api/device-profiles" - }; - } + // Delete the device-profile with the given ID. + rpc Delete(DeleteDeviceProfileRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete : "/api/device-profiles/{id}" + }; + } - // List available ADR algorithms. - rpc ListAdrAlgorithms(google.protobuf.Empty) returns (ListDeviceProfileAdrAlgorithmsResponse) { - option(google.api.http) = { - get: "/api/device-profiles/adr-algorithms" - }; - } + // List the available device-profiles. + rpc List(ListDeviceProfilesRequest) returns (ListDeviceProfilesResponse) { + option (google.api.http) = { + get : "/api/device-profiles" + }; + } + + // List available ADR algorithms. + rpc ListAdrAlgorithms(google.protobuf.Empty) + returns (ListDeviceProfileAdrAlgorithmsResponse) { + option (google.api.http) = { + get : "/api/device-profiles/adr-algorithms" + }; + } } message DeviceProfile { - // Device-profile ID (UUID). - // Note: on create this will be automatically generated. - string id = 1; + // Device-profile ID (UUID). + // Note: on create this will be automatically generated. + string id = 1; - // Tenant ID (UUID). - string tenant_id = 2; + // Tenant ID (UUID). + string tenant_id = 2; - // Name. - string name = 3; + // Name. + string name = 3; - // Description. - string description = 26; + // Description. + string description = 26; - // Region. - common.Region region = 4; + // Region. + common.Region region = 4; - // LoRaWAN mac-version. - common.MacVersion mac_version = 5; + // LoRaWAN mac-version. + common.MacVersion mac_version = 5; - // Regional parameters revision. - common.RegParamsRevision reg_params_revision = 6; + // Regional parameters revision. + common.RegParamsRevision reg_params_revision = 6; - // ADR algorithm ID. - string adr_algorithm_id = 7; + // ADR algorithm ID. + string adr_algorithm_id = 7; - // Payload codec runtime. - CodecRuntime payload_codec_runtime = 8; + // Payload codec runtime. + CodecRuntime payload_codec_runtime = 8; - // Payload codec script. - string payload_codec_script = 9; + // Payload codec script. + string payload_codec_script = 9; - // Flush queue on device activation. - bool flush_queue_on_activate = 10; + // Flush queue on device activation. + bool flush_queue_on_activate = 10; - // Uplink interval (seconds). - // This defines the expected uplink interval which the device uses for - // communication. If the uplink interval has expired and no uplink has - // been received, the device is considered inactive. - uint32 uplink_interval = 11; + // Uplink interval (seconds). + // This defines the expected uplink interval which the device uses for + // communication. If the uplink interval has expired and no uplink has + // been received, the device is considered inactive. + uint32 uplink_interval = 11; - // Device-status request interval (times / day). - // This defines the times per day that ChirpStack will request the device-status - // from the device. - uint32 device_status_req_interval = 12; + // Device-status request interval (times / day). + // This defines the times per day that ChirpStack will request the + // device-status from the device. + uint32 device_status_req_interval = 12; - // Supports OTAA. - bool supports_otaa = 13; + // Supports OTAA. + bool supports_otaa = 13; - // Supports Class B. - bool supports_class_b = 14; + // Supports Class B. + bool supports_class_b = 14; - // Supports Class-C. - bool supports_class_c = 15; + // Supports Class-C. + bool supports_class_c = 15; - // Class-B timeout (seconds). - // This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). - uint32 class_b_timeout = 16; + // Class-B timeout (seconds). + // This is the maximum time ChirpStack will wait to receive an acknowledgement + // from the device (if requested). + uint32 class_b_timeout = 16; - // Class-B ping-slots per beacon period. - // Valid options are: 0 - 7. - // - // The actual number of ping-slots per beacon period equals to 2^k. - uint32 class_b_ping_slot_nb_k = 17; + // Class-B ping-slots per beacon period. + // Valid options are: 0 - 7. + // + // The actual number of ping-slots per beacon period equals to 2^k. + uint32 class_b_ping_slot_nb_k = 17; - // Class-B ping-slot DR. - uint32 class_b_ping_slot_dr = 18; + // Class-B ping-slot DR. + uint32 class_b_ping_slot_dr = 18; - // Class-B ping-slot freq (Hz). - uint32 class_b_ping_slot_freq = 19; + // Class-B ping-slot freq (Hz). + uint32 class_b_ping_slot_freq = 19; - // Class-C timeout (seconds). - // This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested). - uint32 class_c_timeout = 20; + // Class-C timeout (seconds). + // This is the maximum time ChirpStack will wait to receive an acknowledgement + // from the device (if requested). + uint32 class_c_timeout = 20; - // RX1 delay (for ABP). - uint32 abp_rx1_delay = 21; + // RX1 delay (for ABP). + uint32 abp_rx1_delay = 21; - // RX1 DR offset (for ABP). - uint32 abp_rx1_dr_offset = 22; + // RX1 DR offset (for ABP). + uint32 abp_rx1_dr_offset = 22; - // RX2 DR (for ABP). - uint32 abp_rx2_dr = 23; + // RX2 DR (for ABP). + uint32 abp_rx2_dr = 23; - // RX2 frequency (for ABP, Hz). - uint32 abp_rx2_freq = 24; + // RX2 frequency (for ABP, Hz). + uint32 abp_rx2_freq = 24; - // User defined tags. - map tags = 25; + // Tags (user defined). + // These tags can be used to add additional information the the + // device-profile. These tags are exposed in all the integration events of + // devices using this device-profile. + map tags = 25; - // Measurements. - // If defined, ChirpStack will visualize these metrics in the web-interface. - map measurements = 27; + // Measurements. + // If defined, ChirpStack will visualize these metrics in the web-interface. + map measurements = 27; - // Auto-detect measurements. - // If set to true, measurements will be automatically added based on the - // keys of the decoded payload. In cases where the decoded payload contains - // random keys in the data, you want to set this to false. - bool auto_detect_measurements = 28; + // Auto-detect measurements. + // If set to true, measurements will be automatically added based on the + // keys of the decoded payload. In cases where the decoded payload contains + // random keys in the data, you want to set this to false. + bool auto_detect_measurements = 28; - // Region configuration ID. - // If set, devices will only use the associated region. If let blank, then - // devices will use all regions matching the selected common-name. Note - // that multiple region configurations can exist for the same common-name, - // e.g. to provide an 8 channel and 16 channel configuration for the US915 - // band. - string region_config_id = 29; + // Region configuration ID. + // If set, devices will only use the associated region. If let blank, then + // devices will use all regions matching the selected common-name. Note + // that multiple region configurations can exist for the same common-name, + // e.g. to provide an 8 channel and 16 channel configuration for the US915 + // band. + string region_config_id = 29; - // Device is a Relay device. - // Enable this in case the device is a Relay. A Relay device implements TS011 - // and is able to relay data from relay capable devices. - // See for more information the TS011 specification. - bool is_relay = 30; + // Device is a Relay device. + // Enable this in case the device is a Relay. A Relay device implements TS011 + // and is able to relay data from relay capable devices. + // See for more information the TS011 specification. + bool is_relay = 30; - // Device is a Relay end-device. - // Enable this in case the device is an end-device that can operate under a - // Relay. Please refer to the TS011 specification for more information. - bool is_relay_ed = 31; + // Device is a Relay end-device. + // Enable this in case the device is an end-device that can operate under a + // Relay. Please refer to the TS011 specification for more information. + bool is_relay_ed = 31; - // End-device only accept data through relay. - // Only accept data for this device through a relay. This setting is useful - // for testing as in case of a test-setup, the end-device is usually within - // range of the gateway. - bool relay_ed_relay_only = 32; + // End-device only accept data through relay. + // Only accept data for this device through a relay. This setting is useful + // for testing as in case of a test-setup, the end-device is usually within + // range of the gateway. + bool relay_ed_relay_only = 32; - // Relay must be enabled. - bool relay_enabled = 33; + // Relay must be enabled. + bool relay_enabled = 33; - // Relay CAD periodicity. - CadPeriodicity relay_cad_periodicity = 34; + // Relay CAD periodicity. + CadPeriodicity relay_cad_periodicity = 34; - // Relay default channel index. - // Valid values are 0 and 1, please refer to the RP002 specification for - // the meaning of these values. - uint32 relay_default_channel_index = 35; + // Relay default channel index. + // Valid values are 0 and 1, please refer to the RP002 specification for + // the meaning of these values. + uint32 relay_default_channel_index = 35; - // Relay second channel frequency (Hz). - uint32 relay_second_channel_freq = 36; + // Relay second channel frequency (Hz). + uint32 relay_second_channel_freq = 36; - // Relay second channel DR. - uint32 relay_second_channel_dr = 37; + // Relay second channel DR. + uint32 relay_second_channel_dr = 37; - // Relay second channel ACK offset. - SecondChAckOffset relay_second_channel_ack_offset = 38; + // Relay second channel ACK offset. + SecondChAckOffset relay_second_channel_ack_offset = 38; - // Relay end-device activation mode. - RelayModeActivation relay_ed_activation_mode = 39; + // Relay end-device activation mode. + RelayModeActivation relay_ed_activation_mode = 39; - // Relay end-device smart-enable level. - uint32 relay_ed_smart_enable_level = 40; + // Relay end-device smart-enable level. + uint32 relay_ed_smart_enable_level = 40; - // Relay end-device back-off (in case it does not receive WOR ACK frame). - // 0 = Always send a LoRaWAN uplink - // 1..63 = Send a LoRaWAN uplink after X WOR frames without a WOR ACK - uint32 relay_ed_back_off = 41; + // Relay end-device back-off (in case it does not receive WOR ACK frame). + // 0 = Always send a LoRaWAN uplink + // 1..63 = Send a LoRaWAN uplink after X WOR frames without a WOR ACK + uint32 relay_ed_back_off = 41; - // Relay end-device uplink limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_ed_uplink_limit_bucket_size = 42; + // Relay end-device uplink limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_ed_uplink_limit_bucket_size = 42; - // Relay end-device uplink limit reload rate. - // - // Valid values: - // * 0 - 62 = X tokens every hour - // * 63 = no limitation - uint32 relay_ed_uplink_limit_reload_rate = 43; + // Relay end-device uplink limit reload rate. + // + // Valid values: + // * 0 - 62 = X tokens every hour + // * 63 = no limitation + uint32 relay_ed_uplink_limit_reload_rate = 43; - // Relay join-request limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_join_req_limit_reload_rate = 44; + // Relay join-request limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_join_req_limit_reload_rate = 44; - // Relay notify limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_notify_limit_reload_rate = 45; + // Relay notify limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_notify_limit_reload_rate = 45; - // Relay global uplink limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_global_uplink_limit_reload_rate = 46; + // Relay global uplink limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_global_uplink_limit_reload_rate = 46; - // Relay overall limit reload rate. - // - // Valid values: - // * 0 - 126 = X tokens every hour - // * 127 = no limitation - uint32 relay_overall_limit_reload_rate = 47; + // Relay overall limit reload rate. + // + // Valid values: + // * 0 - 126 = X tokens every hour + // * 127 = no limitation + uint32 relay_overall_limit_reload_rate = 47; - // Relay join-request limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_join_req_limit_bucket_size = 48; + // Relay join-request limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_join_req_limit_bucket_size = 48; - // Relay notify limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_notify_limit_bucket_size = 49; + // Relay notify limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_notify_limit_bucket_size = 49; - // Relay globak uplink limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_global_uplink_limit_bucket_size = 50; + // Relay globak uplink limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_global_uplink_limit_bucket_size = 50; - // Relay overall limit bucket size. - // - // This field indicates the multiplier to determine the bucket size - // according to the following formula: - // BucketSize TOKEN = _reload_rate x _bucket_size - // - // Valid values (0 - 3): - // 0 = 1 - // 1 = 2 - // 2 = 4 - // 3 = 12 - uint32 relay_overall_limit_bucket_size = 51; + // Relay overall limit bucket size. + // + // This field indicates the multiplier to determine the bucket size + // according to the following formula: + // BucketSize TOKEN = _reload_rate x _bucket_size + // + // Valid values (0 - 3): + // 0 = 1 + // 1 = 2 + // 2 = 4 + // 3 = 12 + uint32 relay_overall_limit_bucket_size = 51; } message Measurement { - // Name (user defined). - string name = 2; + // Name (user defined). + string name = 2; - // Kind. - MeasurementKind kind = 3; + // Kind. + MeasurementKind kind = 3; } message DeviceProfileListItem { - // Device-profile ID (UUID). - string id = 1; + // Device-profile ID (UUID). + string id = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; - // Name. - string name = 4; + // Name. + string name = 4; - // Region. - common.Region region = 5; + // Region. + common.Region region = 5; - // LoRaWAN mac-version. - common.MacVersion mac_version = 6; + // LoRaWAN mac-version. + common.MacVersion mac_version = 6; - // Regional parameters revision. - common.RegParamsRevision reg_params_revision = 7; + // Regional parameters revision. + common.RegParamsRevision reg_params_revision = 7; - // Supports OTAA. - bool supports_otaa = 8; + // Supports OTAA. + bool supports_otaa = 8; - // Supports Class-B. - bool supports_class_b = 9; + // Supports Class-B. + bool supports_class_b = 9; - // Supports Class-C. - bool supports_class_c = 10; + // Supports Class-C. + bool supports_class_c = 10; } message CreateDeviceProfileRequest { - // Object to create. - DeviceProfile device_profile = 1; + // Object to create. + DeviceProfile device_profile = 1; } message CreateDeviceProfileResponse { - // ID (UUID). - string id = 1; + // ID (UUID). + string id = 1; } message GetDeviceProfileRequest { - // ID (UUID). - string id = 1; + // ID (UUID). + string id = 1; } message GetDeviceProfileResponse { - // Device-profile object. - DeviceProfile device_profile = 1; + // Device-profile object. + DeviceProfile device_profile = 1; - // Created at timestamp. - google.protobuf.Timestamp created_at = 2; + // Created at timestamp. + google.protobuf.Timestamp created_at = 2; - // Last update timestamp. - google.protobuf.Timestamp updated_at = 3; + // Last update timestamp. + google.protobuf.Timestamp updated_at = 3; } message UpdateDeviceProfileRequest { - // Device-profile object. - DeviceProfile device_profile = 1; + // Device-profile object. + DeviceProfile device_profile = 1; } message DeleteDeviceProfileRequest { - // ID (UUID). - string id = 1; + // ID (UUID). + string id = 1; } message ListDeviceProfilesRequest { - // Max number of device-profiles to return in the result-set. - uint32 limit = 1; + // Max number of device-profiles to return in the result-set. + uint32 limit = 1; - // Offset in the result-set (for pagination). - uint32 offset = 2; + // Offset in the result-set (for pagination). + uint32 offset = 2; - // If set, the given string will be used to search on name. - string search = 3; + // If set, the given string will be used to search on name. + string search = 3; - // Tenant ID to list the device-profiles for. - string tenant_id = 4; + // Tenant ID to list the device-profiles for. + string tenant_id = 4; } message ListDeviceProfilesResponse { - // Total number of device-profiles. - uint32 total_count = 1; + // Total number of device-profiles. + uint32 total_count = 1; - // Result-set. - repeated DeviceProfileListItem result = 2; + // Result-set. + repeated DeviceProfileListItem result = 2; } message ListDeviceProfileAdrAlgorithmsResponse { - // Total number of algorithms. - uint32 total_count = 1; + // Total number of algorithms. + uint32 total_count = 1; - // Result-set. - repeated AdrAlgorithmListItem result = 2; + // Result-set. + repeated AdrAlgorithmListItem result = 2; } message AdrAlgorithmListItem { - // Algorithm ID. - string id = 1; + // Algorithm ID. + string id = 1; - // Algorithm name. - string name = 2; + // Algorithm name. + string name = 2; }