@valon-technologies/gestalt 0.0.1-alpha.16 → 0.0.1-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,7 +14,7 @@ import type { JsonObject, Message } from "@bufbuild/protobuf";
14
14
  * Describes the file v1/workflow.proto.
15
15
  */
16
16
  export const file_v1_workflow: GenFile = /*@__PURE__*/
17
- fileDesc("ChF2MS93b3JrZmxvdy5wcm90bxITZ2VzdGFsdC5wcm92aWRlci52MSLaAQoTQm91bmRXb3JrZmxvd1RhcmdldBJACgZwbHVnaW4YBiABKAsyLi5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dQbHVnaW5UYXJnZXRIABI+CgVhZ2VudBgHIAEoCzItLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0FnZW50VGFyZ2V0SABCBgoEa2luZEoECAEQBlILcGx1Z2luX25hbWVSCW9wZXJhdGlvblIFaW5wdXRSCmNvbm5lY3Rpb25SCGluc3RhbmNlIpEBChlCb3VuZFdvcmtmbG93UGx1Z2luVGFyZ2V0EhMKC3BsdWdpbl9uYW1lGAEgASgJEhEKCW9wZXJhdGlvbhgCIAEoCRImCgVpbnB1dBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKY29ubmVjdGlvbhgEIAEoCRIQCghpbnN0YW5jZRgFIAEoCSK9AwoYQm91bmRXb3JrZmxvd0FnZW50VGFyZ2V0EhUKDXByb3ZpZGVyX25hbWUYASABKAkSDQoFbW9kZWwYAiABKAkSDgoGcHJvbXB0GAMgASgJEjMKCG1lc3NhZ2VzGAQgAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudE1lc3NhZ2USNAoJdG9vbF9yZWZzGAUgAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudFRvb2xSZWYSMAoPcmVzcG9uc2Vfc2NoZW1hGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMQoQcHJvdmlkZXJfb3B0aW9ucxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPdGltZW91dF9zZWNvbmRzGAogASgFEkQKD291dHB1dF9kZWxpdmVyeRgLIAEoCzIrLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dPdXRwdXREZWxpdmVyeUoECAYQB1ILdG9vbF9zb3VyY2UitQEKFldvcmtmbG93T3V0cHV0RGVsaXZlcnkSPgoGdGFyZ2V0GAEgASgLMi4uZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UGx1Z2luVGFyZ2V0EkIKDmlucHV0X2JpbmRpbmdzGAIgAygLMiouZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd091dHB1dEJpbmRpbmcSFwoPY3JlZGVudGlhbF9tb2RlGAMgASgJImsKFVdvcmtmbG93T3V0cHV0QmluZGluZxITCgtpbnB1dF9maWVsZBgBIAEoCRI9CgV2YWx1ZRgCIAEoCzIuLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dPdXRwdXRWYWx1ZVNvdXJjZSKbAQoZV29ya2Zsb3dPdXRwdXRWYWx1ZVNvdXJjZRIWCgxhZ2VudF9vdXRwdXQYASABKAlIABIYCg5zaWduYWxfcGF5bG9hZBgCIAEoCUgAEhkKD3NpZ25hbF9tZXRhZGF0YRgDIAEoCUgAEikKB2xpdGVyYWwYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVIAEIGCgRraW5kImQKDVdvcmtmbG93QWN0b3ISEgoKc3ViamVjdF9pZBgBIAEoCRIUCgxzdWJqZWN0X2tpbmQYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhMKC2F1dGhfc291cmNlGAQgASgJIt0CCg1Xb3JrZmxvd0V2ZW50EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRIUCgxzcGVjX3ZlcnNpb24YAyABKAkSDAoEdHlwZRgEIAEoCRIPCgdzdWJqZWN0GAUgASgJEigKBHRpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2RhdGFjb250ZW50dHlwZRgHIAEoCRIlCgRkYXRhGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBJGCgpleHRlbnNpb25zGAkgAygLMjIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50LkV4dGVuc2lvbnNFbnRyeRpJCg9FeHRlbnNpb25zRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlOgI4ASJDChJXb3JrZmxvd0V2ZW50TWF0Y2gSDAoEdHlwZRgBIAEoCRIOCgZzb3VyY2UYAiABKAkSDwoHc3ViamVjdBgDIAEoCSIXChVXb3JrZmxvd01hbnVhbFRyaWdnZXIiYQoXV29ya2Zsb3dTY2hlZHVsZVRyaWdnZXISEwoLc2NoZWR1bGVfaWQYASABKAkSMQoNc2NoZWR1bGVkX2ZvchgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiZwoeV29ya2Zsb3dFdmVudFRyaWdnZXJJbnZvY2F0aW9uEhIKCnRyaWdnZXJfaWQYASABKAkSMQoFZXZlbnQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnQi4gEKEldvcmtmbG93UnVuVHJpZ2dlchI8CgZtYW51YWwYASABKAsyKi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFudWFsVHJpZ2dlckgAEkAKCHNjaGVkdWxlGAIgASgLMiwuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NjaGVkdWxlVHJpZ2dlckgAEkQKBWV2ZW50GAMgASgLMjMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50VHJpZ2dlckludm9jYXRpb25IAEIGCgRraW5kIu4DChBCb3VuZFdvcmtmbG93UnVuEgoKAmlkGAEgASgJEjYKBnN0YXR1cxgCIAEoDjImLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dSdW5TdGF0dXMSOAoGdGFyZ2V0GAMgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0EjgKB3RyaWdnZXIYBCABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuVHJpZ2dlchIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpzdGFydGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKDnN0YXR1c19tZXNzYWdlGAggASgJEhMKC3Jlc3VsdF9ib2R5GAkgASgJEjYKCmNyZWF0ZWRfYnkYCiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgLIAEoCRIUCgx3b3JrZmxvd19rZXkYDCABKAki7QIKFUJvdW5kV29ya2Zsb3dTY2hlZHVsZRIKCgJpZBgBIAEoCRIMCgRjcm9uGAIgASgJEhAKCHRpbWV6b25lGAMgASgJEjgKBnRhcmdldBgEIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIOCgZwYXVzZWQYBSABKAgSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLbmV4dF9ydW5fYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKCmNyZWF0ZWRfYnkYCSABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgKIAEoCSLYAgoZQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlchIKCgJpZBgBIAEoCRI2CgVtYXRjaBgCIAEoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudE1hdGNoEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIOCgZwYXVzZWQYBCABKAgSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNgoKY3JlYXRlZF9ieRgHIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RvchIVCg1leGVjdXRpb25fcmVmGAggASgJIj4KGFdvcmtmbG93QWNjZXNzUGVybWlzc2lvbhIOCgZwbHVnaW4YASABKAkSEgoKb3BlcmF0aW9ucxgCIAMoCSLHAwoaV29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2USCgoCaWQYASABKAkSFQoNcHJvdmlkZXJfbmFtZRgCIAEoCRI4CgZ0YXJnZXQYAyABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSEgoKc3ViamVjdF9pZBgEIAEoCRIdChVjcmVkZW50aWFsX3N1YmplY3RfaWQYBSABKAkSQgoLcGVybWlzc2lvbnMYBiADKAsyLS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWNjZXNzUGVybWlzc2lvbhIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpyZXZva2VkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxzdWJqZWN0X2tpbmQYCiABKAkSFAoMZGlzcGxheV9uYW1lGAsgASgJEhMKC2F1dGhfc291cmNlGAwgASgJEhoKEmNhbGxlcl9wbHVnaW5fbmFtZRgNIAEoCUoECAkQClISdGFyZ2V0X2ZpbmdlcnByaW50IpICCg5Xb3JrZmxvd1NpZ25hbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEigKB3BheWxvYWQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI2CgpjcmVhdGVkX2J5GAUgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdG9yEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2lkZW1wb3RlbmN5X2tleRgHIAEoCRIQCghzZXF1ZW5jZRgIIAEoAyLZAQofU3RhcnRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBI4CgZ0YXJnZXQYASABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJEjYKCmNyZWF0ZWRfYnkYBCABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgFIAEoCRIUCgx3b3JrZmxvd19rZXkYBiABKAkiLwodR2V0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSDgoGcnVuX2lkGAIgASgJIiEKH0xpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1JlcXVlc3QiVwogTGlzdFdvcmtmbG93UHJvdmlkZXJSdW5zUmVzcG9uc2USMwoEcnVucxgBIAMoCzIlLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1J1biJCCiBDYW5jZWxXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBIOCgZydW5faWQYAiABKAkSDgoGcmVhc29uGAMgASgJImcKIFNpZ25hbFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0Eg4KBnJ1bl9pZBgBIAEoCRIzCgZzaWduYWwYAiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsIpYCCidTaWduYWxPclN0YXJ0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSFAoMd29ya2Zsb3dfa2V5GAEgASgJEjgKBnRhcmdldBgCIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSNgoKY3JlYXRlZF9ieRgEIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RvchIVCg1leGVjdXRpb25fcmVmGAUgASgJEjMKBnNpZ25hbBgGIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwirwEKGVNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USMgoDcnVuGAEgASgLMiUuZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UnVuEjMKBnNpZ25hbBgCIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwSEwoLc3RhcnRlZF9ydW4YAyABKAgSFAoMd29ya2Zsb3dfa2V5GAQgASgJIvcBCiVVcHNlcnRXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAEgASgJEgwKBGNyb24YAiABKAkSEAoIdGltZXpvbmUYAyABKAkSOAoGdGFyZ2V0GAQgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnBhdXNlZBgFIAEoCBI4CgxyZXF1ZXN0ZWRfYnkYByABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgIIAEoCSI5CiJHZXRXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAIgASgJIiYKJExpc3RXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVzUmVxdWVzdCJmCiVMaXN0V29ya2Zsb3dQcm92aWRlclNjaGVkdWxlc1Jlc3BvbnNlEj0KCXNjaGVkdWxlcxgBIAMoCzIqLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1NjaGVkdWxlIjwKJURlbGV0ZVdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkiOwokUGF1c2VXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAIgASgJIjwKJVJlc3VtZVdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkikgIKKVVwc2VydFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYASABKAkSNgoFbWF0Y2gYAiABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnRNYXRjaBI4CgZ0YXJnZXQYAyABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSDgoGcGF1c2VkGAQgASgIEjgKDHJlcXVlc3RlZF9ieRgGIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RvchIVCg1leGVjdXRpb25fcmVmGAcgASgJIjwKJkdldFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkiKgooTGlzdFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJzUmVxdWVzdCJtCilMaXN0V29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlcnNSZXNwb25zZRJACgh0cmlnZ2VycxgBIAMoCzIuLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlciJqCiRQdXRXb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZVJlcXVlc3QSQgoJcmVmZXJlbmNlGAEgASgLMi8uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZSIyCiRHZXRXb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkiPAomTGlzdFdvcmtmbG93RXhlY3V0aW9uUmVmZXJlbmNlc1JlcXVlc3QSEgoKc3ViamVjdF9pZBgBIAEoCSJuCidMaXN0V29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2VzUmVzcG9uc2USQwoKcmVmZXJlbmNlcxgBIAMoCzIvLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2UiPwopRGVsZXRlV29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgCIAEoCSI+CihQYXVzZVdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkiPwopUmVzdW1lV29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgCIAEoCSKnAQojUHVibGlzaFdvcmtmbG93UHJvdmlkZXJFdmVudFJlcXVlc3QSEwoLcGx1Z2luX25hbWUYASABKAkSMQoFZXZlbnQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnQSOAoMcHVibGlzaGVkX2J5GAMgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdG9yIvwCCh5JbnZva2VXb3JrZmxvd09wZXJhdGlvblJlcXVlc3QSOAoGdGFyZ2V0GAEgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnJ1bl9pZBgCIAEoCRI4Cgd0cmlnZ2VyGAMgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1blRyaWdnZXISJgoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI2CgpjcmVhdGVkX2J5GAcgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdG9yEhUKDWV4ZWN1dGlvbl9yZWYYCCABKAkSNAoHc2lnbmFscxgJIAMoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwiPwofSW52b2tlV29ya2Zsb3dPcGVyYXRpb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAUSDAoEYm9keRgCIAEoCSJuChdNYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRIVCg1wcm92aWRlcl9uYW1lGAEgASgJEjwKCHNjaGVkdWxlGAIgASgLMiouZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93U2NoZWR1bGUidQobTWFuYWdlZFdvcmtmbG93RXZlbnRUcmlnZ2VyEhUKDXByb3ZpZGVyX25hbWUYASABKAkSPwoHdHJpZ2dlchgCIAEoCzIuLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlciJfChJNYW5hZ2VkV29ya2Zsb3dSdW4SFQoNcHJvdmlkZXJfbmFtZRgBIAEoCRIyCgNydW4YAiABKAsyJS5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dSdW4ixQEKGE1hbmFnZWRXb3JrZmxvd1J1blNpZ25hbBIVCg1wcm92aWRlcl9uYW1lGAEgASgJEjIKA3J1bhgCIAEoCzIlLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1J1bhIzCgZzaWduYWwYAyABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsEhMKC3N0YXJ0ZWRfcnVuGAQgASgIEhQKDHdvcmtmbG93X2tleRgFIAEoCSLwAQokV29ya2Zsb3dNYW5hZ2VyQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0EhUKDXByb3ZpZGVyX25hbWUYAiABKAkSDAoEY3JvbhgDIAEoCRIQCgh0aW1lem9uZRgEIAEoCRI4CgZ0YXJnZXQYBSABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSDgoGcGF1c2VkGAYgASgIEhgKEGludm9jYXRpb25fdG9rZW4YByABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAggASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJoCiFXb3JrZmxvd01hbmFnZXJHZXRTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUi7AEKJFdvcmtmbG93TWFuYWdlclVwZGF0ZVNjaGVkdWxlUmVxdWVzdBITCgtzY2hlZHVsZV9pZBgCIAEoCRIVCg1wcm92aWRlcl9uYW1lGAMgASgJEgwKBGNyb24YBCABKAkSEAoIdGltZXpvbmUYBSABKAkSOAoGdGFyZ2V0GAYgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnBhdXNlZBgHIAEoCBIYChBpbnZvY2F0aW9uX3Rva2VuGAggASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJrCiRXb3JrZmxvd01hbmFnZXJEZWxldGVTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUiagojV29ya2Zsb3dNYW5hZ2VyUGF1c2VTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUiawokV29ya2Zsb3dNYW5hZ2VyUmVzdW1lU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAIgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAyABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlIowCCihXb3JrZmxvd01hbmFnZXJDcmVhdGVFdmVudFRyaWdnZXJSZXF1ZXN0EhUKDXByb3ZpZGVyX25hbWUYAiABKAkSNgoFbWF0Y2gYAyABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnRNYXRjaBI4CgZ0YXJnZXQYBCABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSDgoGcGF1c2VkGAUgASgIEhgKEGludm9jYXRpb25fdG9rZW4YBiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAcgASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJrCiVXb3JrZmxvd01hbmFnZXJHZXRFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUihwIKKFdvcmtmbG93TWFuYWdlclVwZGF0ZUV2ZW50VHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgCIAEoCRIVCg1wcm92aWRlcl9uYW1lGAMgASgJEjYKBW1hdGNoGAQgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50TWF0Y2gSOAoGdGFyZ2V0GAUgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnBhdXNlZBgGIAEoCBIYChBpbnZvY2F0aW9uX3Rva2VuGAcgASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJuCihXb3JrZmxvd01hbmFnZXJEZWxldGVFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUibQonV29ya2Zsb3dNYW5hZ2VyUGF1c2VFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUibgooV29ya2Zsb3dNYW5hZ2VyUmVzdW1lRXZlbnRUcmlnZ2VyUmVxdWVzdBISCgp0cmlnZ2VyX2lkGAIgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAyABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlIocBCiJXb3JrZmxvd01hbmFnZXJQdWJsaXNoRXZlbnRSZXF1ZXN0EjEKBWV2ZW50GAIgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50EhgKEGludm9jYXRpb25fdG9rZW4YAyABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlItABCh5Xb3JrZmxvd01hbmFnZXJTdGFydFJ1blJlcXVlc3QSFQoNcHJvdmlkZXJfbmFtZRgCIAEoCRI4CgZ0YXJnZXQYAyABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSFwoPaWRlbXBvdGVuY3lfa2V5GAQgASgJEhQKDHdvcmtmbG93X2tleRgFIAEoCRIYChBpbnZvY2F0aW9uX3Rva2VuGAYgASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSKWAQofV29ya2Zsb3dNYW5hZ2VyU2lnbmFsUnVuUmVxdWVzdBIOCgZydW5faWQYAiABKAkSMwoGc2lnbmFsGAMgASgLMiMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NpZ25hbBIYChBpbnZvY2F0aW9uX3Rva2VuGAQgASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSKNAgomV29ya2Zsb3dNYW5hZ2VyU2lnbmFsT3JTdGFydFJ1blJlcXVlc3QSFQoNcHJvdmlkZXJfbmFtZRgCIAEoCRIUCgx3b3JrZmxvd19rZXkYAyABKAkSOAoGdGFyZ2V0GAQgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0EhcKD2lkZW1wb3RlbmN5X2tleRgFIAEoCRIzCgZzaWduYWwYBiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsEhgKEGludm9jYXRpb25fdG9rZW4YByABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlKt8BChFXb3JrZmxvd1J1blN0YXR1cxIjCh9XT1JLRkxPV19SVU5fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobV09SS0ZMT1dfUlVOX1NUQVRVU19QRU5ESU5HEAESHwobV09SS0ZMT1dfUlVOX1NUQVRVU19SVU5OSU5HEAISIQodV09SS0ZMT1dfUlVOX1NUQVRVU19TVUNDRUVERUQQAxIeChpXT1JLRkxPV19SVU5fU1RBVFVTX0ZBSUxFRBAEEiAKHFdPUktGTE9XX1JVTl9TVEFUVVNfQ0FOQ0VMRUQQBTKlFQoQV29ya2Zsb3dQcm92aWRlchJnCghTdGFydFJ1bhI0Lmdlc3RhbHQucHJvdmlkZXIudjEuU3RhcnRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBolLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1J1bhJjCgZHZXRSdW4SMi5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0GiUuZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UnVuEncKCExpc3RSdW5zEjQuZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlclJ1bnNSZXF1ZXN0GjUuZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlclJ1bnNSZXNwb25zZRJpCglDYW5jZWxSdW4SNS5nZXN0YWx0LnByb3ZpZGVyLnYxLkNhbmNlbFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0GiUuZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UnVuEnIKCVNpZ25hbFJ1bhI1Lmdlc3RhbHQucHJvdmlkZXIudjEuU2lnbmFsV29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLlNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USgAEKEFNpZ25hbE9yU3RhcnRSdW4SPC5nZXN0YWx0LnByb3ZpZGVyLnYxLlNpZ25hbE9yU3RhcnRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBouLmdlc3RhbHQucHJvdmlkZXIudjEuU2lnbmFsV29ya2Zsb3dSdW5SZXNwb25zZRJ4Cg5VcHNlcnRTY2hlZHVsZRI6Lmdlc3RhbHQucHJvdmlkZXIudjEuVXBzZXJ0V29ya2Zsb3dQcm92aWRlclNjaGVkdWxlUmVxdWVzdBoqLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1NjaGVkdWxlEnIKC0dldFNjaGVkdWxlEjcuZ2VzdGFsdC5wcm92aWRlci52MS5HZXRXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0GiouZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93U2NoZWR1bGUShgEKDUxpc3RTY2hlZHVsZXMSOS5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVzUmVxdWVzdBo6Lmdlc3RhbHQucHJvdmlkZXIudjEuTGlzdFdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZXNSZXNwb25zZRJkCg5EZWxldGVTY2hlZHVsZRI6Lmdlc3RhbHQucHJvdmlkZXIudjEuRGVsZXRlV29ya2Zsb3dQcm92aWRlclNjaGVkdWxlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJ2Cg1QYXVzZVNjaGVkdWxlEjkuZ2VzdGFsdC5wcm92aWRlci52MS5QYXVzZVdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZVJlcXVlc3QaKi5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dTY2hlZHVsZRJ4Cg5SZXN1bWVTY2hlZHVsZRI6Lmdlc3RhbHQucHJvdmlkZXIudjEuUmVzdW1lV29ya2Zsb3dQcm92aWRlclNjaGVkdWxlUmVxdWVzdBoqLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1NjaGVkdWxlEoQBChJVcHNlcnRFdmVudFRyaWdnZXISPi5nZXN0YWx0LnByb3ZpZGVyLnYxLlVwc2VydFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0Gi4uZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93RXZlbnRUcmlnZ2VyEn4KD0dldEV2ZW50VHJpZ2dlchI7Lmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dFdmVudFRyaWdnZXISkgEKEUxpc3RFdmVudFRyaWdnZXJzEj0uZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlcnNSZXF1ZXN0Gj4uZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlcnNSZXNwb25zZRJsChJEZWxldGVFdmVudFRyaWdnZXISPi5nZXN0YWx0LnByb3ZpZGVyLnYxLkRlbGV0ZVdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EoIBChFQYXVzZUV2ZW50VHJpZ2dlchI9Lmdlc3RhbHQucHJvdmlkZXIudjEuUGF1c2VXb3JrZmxvd1Byb3ZpZGVyRXZlbnRUcmlnZ2VyUmVxdWVzdBouLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlchKEAQoSUmVzdW1lRXZlbnRUcmlnZ2VyEj4uZ2VzdGFsdC5wcm92aWRlci52MS5SZXN1bWVXb3JrZmxvd1Byb3ZpZGVyRXZlbnRUcmlnZ2VyUmVxdWVzdBouLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlchKDAQoVUHV0RXhlY3V0aW9uUmVmZXJlbmNlEjkuZ2VzdGFsdC5wcm92aWRlci52MS5QdXRXb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZVJlcXVlc3QaLy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXhlY3V0aW9uUmVmZXJlbmNlEoMBChVHZXRFeGVjdXRpb25SZWZlcmVuY2USOS5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93RXhlY3V0aW9uUmVmZXJlbmNlUmVxdWVzdBovLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2USlAEKF0xpc3RFeGVjdXRpb25SZWZlcmVuY2VzEjsuZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2VzUmVxdWVzdBo8Lmdlc3RhbHQucHJvdmlkZXIudjEuTGlzdFdvcmtmbG93RXhlY3V0aW9uUmVmZXJlbmNlc1Jlc3BvbnNlEmAKDFB1Ymxpc2hFdmVudBI4Lmdlc3RhbHQucHJvdmlkZXIudjEuUHVibGlzaFdvcmtmbG93UHJvdmlkZXJFdmVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkyjAEKDFdvcmtmbG93SG9zdBJ8Cg9JbnZva2VPcGVyYXRpb24SMy5nZXN0YWx0LnByb3ZpZGVyLnYxLkludm9rZVdvcmtmbG93T3BlcmF0aW9uUmVxdWVzdBo0Lmdlc3RhbHQucHJvdmlkZXIudjEuSW52b2tlV29ya2Zsb3dPcGVyYXRpb25SZXNwb25zZTKuDwoTV29ya2Zsb3dNYW5hZ2VySG9zdBJoCghTdGFydFJ1bhIzLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyU3RhcnRSdW5SZXF1ZXN0GicuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dSdW4ScAoJU2lnbmFsUnVuEjQuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJTaWduYWxSdW5SZXF1ZXN0Gi0uZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dSdW5TaWduYWwSfgoQU2lnbmFsT3JTdGFydFJ1bhI7Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyU2lnbmFsT3JTdGFydFJ1blJlcXVlc3QaLS5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1J1blNpZ25hbBJ5Cg5DcmVhdGVTY2hlZHVsZRI5Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0GiwuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRJzCgtHZXRTY2hlZHVsZRI2Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyR2V0U2NoZWR1bGVSZXF1ZXN0GiwuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRJ5Cg5VcGRhdGVTY2hlZHVsZRI5Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyVXBkYXRlU2NoZWR1bGVSZXF1ZXN0GiwuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRJjCg5EZWxldGVTY2hlZHVsZRI5Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyRGVsZXRlU2NoZWR1bGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EncKDVBhdXNlU2NoZWR1bGUSOC5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlclBhdXNlU2NoZWR1bGVSZXF1ZXN0GiwuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRJ5Cg5SZXN1bWVTY2hlZHVsZRI5Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyUmVzdW1lU2NoZWR1bGVSZXF1ZXN0GiwuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRKFAQoSQ3JlYXRlRXZlbnRUcmlnZ2VyEj0uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJDcmVhdGVFdmVudFRyaWdnZXJSZXF1ZXN0GjAuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dFdmVudFRyaWdnZXISfwoPR2V0RXZlbnRUcmlnZ2VyEjouZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJHZXRFdmVudFRyaWdnZXJSZXF1ZXN0GjAuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dFdmVudFRyaWdnZXIShQEKElVwZGF0ZUV2ZW50VHJpZ2dlchI9Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyVXBkYXRlRXZlbnRUcmlnZ2VyUmVxdWVzdBowLmdlc3RhbHQucHJvdmlkZXIudjEuTWFuYWdlZFdvcmtmbG93RXZlbnRUcmlnZ2VyEmsKEkRlbGV0ZUV2ZW50VHJpZ2dlchI9Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyRGVsZXRlRXZlbnRUcmlnZ2VyUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRKDAQoRUGF1c2VFdmVudFRyaWdnZXISPC5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlclBhdXNlRXZlbnRUcmlnZ2VyUmVxdWVzdBowLmdlc3RhbHQucHJvdmlkZXIudjEuTWFuYWdlZFdvcmtmbG93RXZlbnRUcmlnZ2VyEoUBChJSZXN1bWVFdmVudFRyaWdnZXISPS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlclJlc3VtZUV2ZW50VHJpZ2dlclJlcXVlc3QaMC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd0V2ZW50VHJpZ2dlchJrCgxQdWJsaXNoRXZlbnQSNy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlclB1Ymxpc2hFdmVudFJlcXVlc3QaIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnRCO1o5Z2l0aHViLmNvbS92YWxvbi10ZWNobm9sb2dpZXMvZ2VzdGFsdC9zZGsvZ28vZ2VuL3YxO3Byb3RvYgZwcm90bzM", [file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_v1_agent]);
17
+ fileDesc("ChF2MS93b3JrZmxvdy5wcm90bxITZ2VzdGFsdC5wcm92aWRlci52MSLaAQoTQm91bmRXb3JrZmxvd1RhcmdldBJACgZwbHVnaW4YBiABKAsyLi5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dQbHVnaW5UYXJnZXRIABI+CgVhZ2VudBgHIAEoCzItLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0FnZW50VGFyZ2V0SABCBgoEa2luZEoECAEQBlILcGx1Z2luX25hbWVSCW9wZXJhdGlvblIFaW5wdXRSCmNvbm5lY3Rpb25SCGluc3RhbmNlIpEBChlCb3VuZFdvcmtmbG93UGx1Z2luVGFyZ2V0EhMKC3BsdWdpbl9uYW1lGAEgASgJEhEKCW9wZXJhdGlvbhgCIAEoCRImCgVpbnB1dBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKY29ubmVjdGlvbhgEIAEoCRIQCghpbnN0YW5jZRgFIAEoCSLSAwoYQm91bmRXb3JrZmxvd0FnZW50VGFyZ2V0EhUKDXByb3ZpZGVyX25hbWUYASABKAkSDQoFbW9kZWwYAiABKAkSDgoGcHJvbXB0GAMgASgJEjMKCG1lc3NhZ2VzGAQgAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudE1lc3NhZ2USNAoJdG9vbF9yZWZzGAUgAygLMiEuZ2VzdGFsdC5wcm92aWRlci52MS5BZ2VudFRvb2xSZWYSMAoPcmVzcG9uc2Vfc2NoZW1hGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPdGltZW91dF9zZWNvbmRzGAogASgFEkQKD291dHB1dF9kZWxpdmVyeRgLIAEoCzIrLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dPdXRwdXREZWxpdmVyeRIuCg1tb2RlbF9vcHRpb25zGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEoECAYQB0oECAkQClILdG9vbF9zb3VyY2VSEHByb3ZpZGVyX29wdGlvbnMitQEKFldvcmtmbG93T3V0cHV0RGVsaXZlcnkSPgoGdGFyZ2V0GAEgASgLMi4uZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UGx1Z2luVGFyZ2V0EkIKDmlucHV0X2JpbmRpbmdzGAIgAygLMiouZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd091dHB1dEJpbmRpbmcSFwoPY3JlZGVudGlhbF9tb2RlGAMgASgJImsKFVdvcmtmbG93T3V0cHV0QmluZGluZxITCgtpbnB1dF9maWVsZBgBIAEoCRI9CgV2YWx1ZRgCIAEoCzIuLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dPdXRwdXRWYWx1ZVNvdXJjZSKbAQoZV29ya2Zsb3dPdXRwdXRWYWx1ZVNvdXJjZRIWCgxhZ2VudF9vdXRwdXQYASABKAlIABIYCg5zaWduYWxfcGF5bG9hZBgCIAEoCUgAEhkKD3NpZ25hbF9tZXRhZGF0YRgDIAEoCUgAEikKB2xpdGVyYWwYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVIAEIGCgRraW5kImQKDVdvcmtmbG93QWN0b3ISEgoKc3ViamVjdF9pZBgBIAEoCRIUCgxzdWJqZWN0X2tpbmQYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhMKC2F1dGhfc291cmNlGAQgASgJIt0CCg1Xb3JrZmxvd0V2ZW50EgoKAmlkGAEgASgJEg4KBnNvdXJjZRgCIAEoCRIUCgxzcGVjX3ZlcnNpb24YAyABKAkSDAoEdHlwZRgEIAEoCRIPCgdzdWJqZWN0GAUgASgJEigKBHRpbWUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2RhdGFjb250ZW50dHlwZRgHIAEoCRIlCgRkYXRhGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBJGCgpleHRlbnNpb25zGAkgAygLMjIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50LkV4dGVuc2lvbnNFbnRyeRpJCg9FeHRlbnNpb25zRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlOgI4ASJDChJXb3JrZmxvd0V2ZW50TWF0Y2gSDAoEdHlwZRgBIAEoCRIOCgZzb3VyY2UYAiABKAkSDwoHc3ViamVjdBgDIAEoCSIXChVXb3JrZmxvd01hbnVhbFRyaWdnZXIiYQoXV29ya2Zsb3dTY2hlZHVsZVRyaWdnZXISEwoLc2NoZWR1bGVfaWQYASABKAkSMQoNc2NoZWR1bGVkX2ZvchgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiZwoeV29ya2Zsb3dFdmVudFRyaWdnZXJJbnZvY2F0aW9uEhIKCnRyaWdnZXJfaWQYASABKAkSMQoFZXZlbnQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnQi4gEKEldvcmtmbG93UnVuVHJpZ2dlchI8CgZtYW51YWwYASABKAsyKi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFudWFsVHJpZ2dlckgAEkAKCHNjaGVkdWxlGAIgASgLMiwuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1NjaGVkdWxlVHJpZ2dlckgAEkQKBWV2ZW50GAMgASgLMjMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50VHJpZ2dlckludm9jYXRpb25IAEIGCgRraW5kIu4DChBCb3VuZFdvcmtmbG93UnVuEgoKAmlkGAEgASgJEjYKBnN0YXR1cxgCIAEoDjImLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dSdW5TdGF0dXMSOAoGdGFyZ2V0GAMgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0EjgKB3RyaWdnZXIYBCABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93UnVuVHJpZ2dlchIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpzdGFydGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKDnN0YXR1c19tZXNzYWdlGAggASgJEhMKC3Jlc3VsdF9ib2R5GAkgASgJEjYKCmNyZWF0ZWRfYnkYCiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgLIAEoCRIUCgx3b3JrZmxvd19rZXkYDCABKAki7QIKFUJvdW5kV29ya2Zsb3dTY2hlZHVsZRIKCgJpZBgBIAEoCRIMCgRjcm9uGAIgASgJEhAKCHRpbWV6b25lGAMgASgJEjgKBnRhcmdldBgEIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIOCgZwYXVzZWQYBSABKAgSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLbmV4dF9ydW5fYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKCmNyZWF0ZWRfYnkYCSABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgKIAEoCSLYAgoZQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlchIKCgJpZBgBIAEoCRI2CgVtYXRjaBgCIAEoCzInLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudE1hdGNoEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIOCgZwYXVzZWQYBCABKAgSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNgoKY3JlYXRlZF9ieRgHIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RvchIVCg1leGVjdXRpb25fcmVmGAggASgJIj4KGFdvcmtmbG93QWNjZXNzUGVybWlzc2lvbhIOCgZwbHVnaW4YASABKAkSEgoKb3BlcmF0aW9ucxgCIAMoCSLHAwoaV29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2USCgoCaWQYASABKAkSFQoNcHJvdmlkZXJfbmFtZRgCIAEoCRI4CgZ0YXJnZXQYAyABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSEgoKc3ViamVjdF9pZBgEIAEoCRIdChVjcmVkZW50aWFsX3N1YmplY3RfaWQYBSABKAkSQgoLcGVybWlzc2lvbnMYBiADKAsyLS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWNjZXNzUGVybWlzc2lvbhIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpyZXZva2VkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxzdWJqZWN0X2tpbmQYCiABKAkSFAoMZGlzcGxheV9uYW1lGAsgASgJEhMKC2F1dGhfc291cmNlGAwgASgJEhoKEmNhbGxlcl9wbHVnaW5fbmFtZRgNIAEoCUoECAkQClISdGFyZ2V0X2ZpbmdlcnByaW50IpICCg5Xb3JrZmxvd1NpZ25hbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEigKB3BheWxvYWQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI2CgpjcmVhdGVkX2J5GAUgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdG9yEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2lkZW1wb3RlbmN5X2tleRgHIAEoCRIQCghzZXF1ZW5jZRgIIAEoAyLZAQofU3RhcnRXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBI4CgZ0YXJnZXQYASABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSFwoPaWRlbXBvdGVuY3lfa2V5GAIgASgJEjYKCmNyZWF0ZWRfYnkYBCABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgFIAEoCRIUCgx3b3JrZmxvd19rZXkYBiABKAkiLwodR2V0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSDgoGcnVuX2lkGAIgASgJIiEKH0xpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1JlcXVlc3QiVwogTGlzdFdvcmtmbG93UHJvdmlkZXJSdW5zUmVzcG9uc2USMwoEcnVucxgBIAMoCzIlLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1J1biJCCiBDYW5jZWxXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBIOCgZydW5faWQYAiABKAkSDgoGcmVhc29uGAMgASgJImcKIFNpZ25hbFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0Eg4KBnJ1bl9pZBgBIAEoCRIzCgZzaWduYWwYAiABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsIpYCCidTaWduYWxPclN0YXJ0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QSFAoMd29ya2Zsb3dfa2V5GAEgASgJEjgKBnRhcmdldBgCIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIXCg9pZGVtcG90ZW5jeV9rZXkYAyABKAkSNgoKY3JlYXRlZF9ieRgEIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RvchIVCg1leGVjdXRpb25fcmVmGAUgASgJEjMKBnNpZ25hbBgGIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwirwEKGVNpZ25hbFdvcmtmbG93UnVuUmVzcG9uc2USMgoDcnVuGAEgASgLMiUuZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UnVuEjMKBnNpZ25hbBgCIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwSEwoLc3RhcnRlZF9ydW4YAyABKAgSFAoMd29ya2Zsb3dfa2V5GAQgASgJIvcBCiVVcHNlcnRXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAEgASgJEgwKBGNyb24YAiABKAkSEAoIdGltZXpvbmUYAyABKAkSOAoGdGFyZ2V0GAQgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnBhdXNlZBgFIAEoCBI4CgxyZXF1ZXN0ZWRfYnkYByABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93QWN0b3ISFQoNZXhlY3V0aW9uX3JlZhgIIAEoCSI5CiJHZXRXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAIgASgJIiYKJExpc3RXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVzUmVxdWVzdCJmCiVMaXN0V29ya2Zsb3dQcm92aWRlclNjaGVkdWxlc1Jlc3BvbnNlEj0KCXNjaGVkdWxlcxgBIAMoCzIqLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1NjaGVkdWxlIjwKJURlbGV0ZVdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkiOwokUGF1c2VXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAIgASgJIjwKJVJlc3VtZVdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkikgIKKVVwc2VydFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYASABKAkSNgoFbWF0Y2gYAiABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnRNYXRjaBI4CgZ0YXJnZXQYAyABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSDgoGcGF1c2VkGAQgASgIEjgKDHJlcXVlc3RlZF9ieRgGIAEoCzIiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dBY3RvchIVCg1leGVjdXRpb25fcmVmGAcgASgJIjwKJkdldFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkiKgooTGlzdFdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJzUmVxdWVzdCJtCilMaXN0V29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlcnNSZXNwb25zZRJACgh0cmlnZ2VycxgBIAMoCzIuLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlciJqCiRQdXRXb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZVJlcXVlc3QSQgoJcmVmZXJlbmNlGAEgASgLMi8uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZSIyCiRHZXRXb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZVJlcXVlc3QSCgoCaWQYASABKAkiPAomTGlzdFdvcmtmbG93RXhlY3V0aW9uUmVmZXJlbmNlc1JlcXVlc3QSEgoKc3ViamVjdF9pZBgBIAEoCSJuCidMaXN0V29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2VzUmVzcG9uc2USQwoKcmVmZXJlbmNlcxgBIAMoCzIvLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2UiPwopRGVsZXRlV29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgCIAEoCSI+CihQYXVzZVdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkiPwopUmVzdW1lV29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgCIAEoCSKnAQojUHVibGlzaFdvcmtmbG93UHJvdmlkZXJFdmVudFJlcXVlc3QSEwoLcGx1Z2luX25hbWUYASABKAkSMQoFZXZlbnQYAiABKAsyIi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnQSOAoMcHVibGlzaGVkX2J5GAMgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdG9yIvwCCh5JbnZva2VXb3JrZmxvd09wZXJhdGlvblJlcXVlc3QSOAoGdGFyZ2V0GAEgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnJ1bl9pZBgCIAEoCRI4Cgd0cmlnZ2VyGAMgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd1J1blRyaWdnZXISJgoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI2CgpjcmVhdGVkX2J5GAcgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0FjdG9yEhUKDWV4ZWN1dGlvbl9yZWYYCCABKAkSNAoHc2lnbmFscxgJIAMoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwiPwofSW52b2tlV29ya2Zsb3dPcGVyYXRpb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAUSDAoEYm9keRgCIAEoCSJuChdNYW5hZ2VkV29ya2Zsb3dTY2hlZHVsZRIVCg1wcm92aWRlcl9uYW1lGAEgASgJEjwKCHNjaGVkdWxlGAIgASgLMiouZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93U2NoZWR1bGUidQobTWFuYWdlZFdvcmtmbG93RXZlbnRUcmlnZ2VyEhUKDXByb3ZpZGVyX25hbWUYASABKAkSPwoHdHJpZ2dlchgCIAEoCzIuLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlciJfChJNYW5hZ2VkV29ya2Zsb3dSdW4SFQoNcHJvdmlkZXJfbmFtZRgBIAEoCRIyCgNydW4YAiABKAsyJS5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dSdW4ixQEKGE1hbmFnZWRXb3JrZmxvd1J1blNpZ25hbBIVCg1wcm92aWRlcl9uYW1lGAEgASgJEjIKA3J1bhgCIAEoCzIlLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1J1bhIzCgZzaWduYWwYAyABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsEhMKC3N0YXJ0ZWRfcnVuGAQgASgIEhQKDHdvcmtmbG93X2tleRgFIAEoCSLwAQokV29ya2Zsb3dNYW5hZ2VyQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0EhUKDXByb3ZpZGVyX25hbWUYAiABKAkSDAoEY3JvbhgDIAEoCRIQCgh0aW1lem9uZRgEIAEoCRI4CgZ0YXJnZXQYBSABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSDgoGcGF1c2VkGAYgASgIEhgKEGludm9jYXRpb25fdG9rZW4YByABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAggASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJoCiFXb3JrZmxvd01hbmFnZXJHZXRTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUi7AEKJFdvcmtmbG93TWFuYWdlclVwZGF0ZVNjaGVkdWxlUmVxdWVzdBITCgtzY2hlZHVsZV9pZBgCIAEoCRIVCg1wcm92aWRlcl9uYW1lGAMgASgJEgwKBGNyb24YBCABKAkSEAoIdGltZXpvbmUYBSABKAkSOAoGdGFyZ2V0GAYgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnBhdXNlZBgHIAEoCBIYChBpbnZvY2F0aW9uX3Rva2VuGAggASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJrCiRXb3JrZmxvd01hbmFnZXJEZWxldGVTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUiagojV29ya2Zsb3dNYW5hZ2VyUGF1c2VTY2hlZHVsZVJlcXVlc3QSEwoLc2NoZWR1bGVfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUiawokV29ya2Zsb3dNYW5hZ2VyUmVzdW1lU2NoZWR1bGVSZXF1ZXN0EhMKC3NjaGVkdWxlX2lkGAIgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAyABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlIowCCihXb3JrZmxvd01hbmFnZXJDcmVhdGVFdmVudFRyaWdnZXJSZXF1ZXN0EhUKDXByb3ZpZGVyX25hbWUYAiABKAkSNgoFbWF0Y2gYAyABKAsyJy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93RXZlbnRNYXRjaBI4CgZ0YXJnZXQYBCABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSDgoGcGF1c2VkGAUgASgIEhgKEGludm9jYXRpb25fdG9rZW4YBiABKAkSFwoPaWRlbXBvdGVuY3lfa2V5GAcgASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJrCiVXb3JrZmxvd01hbmFnZXJHZXRFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUihwIKKFdvcmtmbG93TWFuYWdlclVwZGF0ZUV2ZW50VHJpZ2dlclJlcXVlc3QSEgoKdHJpZ2dlcl9pZBgCIAEoCRIVCg1wcm92aWRlcl9uYW1lGAMgASgJEjYKBW1hdGNoGAQgASgLMicuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50TWF0Y2gSOAoGdGFyZ2V0GAUgASgLMiguZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93VGFyZ2V0Eg4KBnBhdXNlZBgGIAEoCBIYChBpbnZvY2F0aW9uX3Rva2VuGAcgASgJSgQIARACUg5yZXF1ZXN0X2hhbmRsZSJuCihXb3JrZmxvd01hbmFnZXJEZWxldGVFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUibQonV29ya2Zsb3dNYW5hZ2VyUGF1c2VFdmVudFRyaWdnZXJSZXF1ZXN0EhIKCnRyaWdnZXJfaWQYAiABKAkSGAoQaW52b2NhdGlvbl90b2tlbhgDIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUibgooV29ya2Zsb3dNYW5hZ2VyUmVzdW1lRXZlbnRUcmlnZ2VyUmVxdWVzdBISCgp0cmlnZ2VyX2lkGAIgASgJEhgKEGludm9jYXRpb25fdG9rZW4YAyABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlIp4BCiJXb3JrZmxvd01hbmFnZXJQdWJsaXNoRXZlbnRSZXF1ZXN0EjEKBWV2ZW50GAIgASgLMiIuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V2ZW50EhgKEGludm9jYXRpb25fdG9rZW4YAyABKAkSFQoNcHJvdmlkZXJfbmFtZRgEIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUi0AEKHldvcmtmbG93TWFuYWdlclN0YXJ0UnVuUmVxdWVzdBIVCg1wcm92aWRlcl9uYW1lGAIgASgJEjgKBnRhcmdldBgDIAEoCzIoLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1RhcmdldBIXCg9pZGVtcG90ZW5jeV9rZXkYBCABKAkSFAoMd29ya2Zsb3dfa2V5GAUgASgJEhgKEGludm9jYXRpb25fdG9rZW4YBiABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlIpYBCh9Xb3JrZmxvd01hbmFnZXJTaWduYWxSdW5SZXF1ZXN0Eg4KBnJ1bl9pZBgCIAEoCRIzCgZzaWduYWwYAyABKAsyIy5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93U2lnbmFsEhgKEGludm9jYXRpb25fdG9rZW4YBCABKAlKBAgBEAJSDnJlcXVlc3RfaGFuZGxlIo0CCiZXb3JrZmxvd01hbmFnZXJTaWduYWxPclN0YXJ0UnVuUmVxdWVzdBIVCg1wcm92aWRlcl9uYW1lGAIgASgJEhQKDHdvcmtmbG93X2tleRgDIAEoCRI4CgZ0YXJnZXQYBCABKAsyKC5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dUYXJnZXQSFwoPaWRlbXBvdGVuY3lfa2V5GAUgASgJEjMKBnNpZ25hbBgGIAEoCzIjLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dTaWduYWwSGAoQaW52b2NhdGlvbl90b2tlbhgHIAEoCUoECAEQAlIOcmVxdWVzdF9oYW5kbGUq3wEKEVdvcmtmbG93UnVuU3RhdHVzEiMKH1dPUktGTE9XX1JVTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtXT1JLRkxPV19SVU5fU1RBVFVTX1BFTkRJTkcQARIfChtXT1JLRkxPV19SVU5fU1RBVFVTX1JVTk5JTkcQAhIhCh1XT1JLRkxPV19SVU5fU1RBVFVTX1NVQ0NFRURFRBADEh4KGldPUktGTE9XX1JVTl9TVEFUVVNfRkFJTEVEEAQSIAocV09SS0ZMT1dfUlVOX1NUQVRVU19DQU5DRUxFRBAFMqUVChBXb3JrZmxvd1Byb3ZpZGVyEmcKCFN0YXJ0UnVuEjQuZ2VzdGFsdC5wcm92aWRlci52MS5TdGFydFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0GiUuZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93UnVuEmMKBkdldFJ1bhIyLmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaJS5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dSdW4SdwoITGlzdFJ1bnMSNC5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1JlcXVlc3QaNS5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyUnVuc1Jlc3BvbnNlEmkKCUNhbmNlbFJ1bhI1Lmdlc3RhbHQucHJvdmlkZXIudjEuQ2FuY2VsV29ya2Zsb3dQcm92aWRlclJ1blJlcXVlc3QaJS5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dSdW4ScgoJU2lnbmFsUnVuEjUuZ2VzdGFsdC5wcm92aWRlci52MS5TaWduYWxXb3JrZmxvd1Byb3ZpZGVyUnVuUmVxdWVzdBouLmdlc3RhbHQucHJvdmlkZXIudjEuU2lnbmFsV29ya2Zsb3dSdW5SZXNwb25zZRKAAQoQU2lnbmFsT3JTdGFydFJ1bhI8Lmdlc3RhbHQucHJvdmlkZXIudjEuU2lnbmFsT3JTdGFydFdvcmtmbG93UHJvdmlkZXJSdW5SZXF1ZXN0Gi4uZ2VzdGFsdC5wcm92aWRlci52MS5TaWduYWxXb3JrZmxvd1J1blJlc3BvbnNlEngKDlVwc2VydFNjaGVkdWxlEjouZ2VzdGFsdC5wcm92aWRlci52MS5VcHNlcnRXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0GiouZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93U2NoZWR1bGUScgoLR2V0U2NoZWR1bGUSNy5nZXN0YWx0LnByb3ZpZGVyLnYxLkdldFdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZVJlcXVlc3QaKi5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dTY2hlZHVsZRKGAQoNTGlzdFNjaGVkdWxlcxI5Lmdlc3RhbHQucHJvdmlkZXIudjEuTGlzdFdvcmtmbG93UHJvdmlkZXJTY2hlZHVsZXNSZXF1ZXN0GjouZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dQcm92aWRlclNjaGVkdWxlc1Jlc3BvbnNlEmQKDkRlbGV0ZVNjaGVkdWxlEjouZ2VzdGFsdC5wcm92aWRlci52MS5EZWxldGVXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EnYKDVBhdXNlU2NoZWR1bGUSOS5nZXN0YWx0LnByb3ZpZGVyLnYxLlBhdXNlV29ya2Zsb3dQcm92aWRlclNjaGVkdWxlUmVxdWVzdBoqLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd1NjaGVkdWxlEngKDlJlc3VtZVNjaGVkdWxlEjouZ2VzdGFsdC5wcm92aWRlci52MS5SZXN1bWVXb3JrZmxvd1Byb3ZpZGVyU2NoZWR1bGVSZXF1ZXN0GiouZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93U2NoZWR1bGUShAEKElVwc2VydEV2ZW50VHJpZ2dlchI+Lmdlc3RhbHQucHJvdmlkZXIudjEuVXBzZXJ0V29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QaLi5nZXN0YWx0LnByb3ZpZGVyLnYxLkJvdW5kV29ya2Zsb3dFdmVudFRyaWdnZXISfgoPR2V0RXZlbnRUcmlnZ2VyEjsuZ2VzdGFsdC5wcm92aWRlci52MS5HZXRXb3JrZmxvd1Byb3ZpZGVyRXZlbnRUcmlnZ2VyUmVxdWVzdBouLmdlc3RhbHQucHJvdmlkZXIudjEuQm91bmRXb3JrZmxvd0V2ZW50VHJpZ2dlchKSAQoRTGlzdEV2ZW50VHJpZ2dlcnMSPS5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyRXZlbnRUcmlnZ2Vyc1JlcXVlc3QaPi5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd1Byb3ZpZGVyRXZlbnRUcmlnZ2Vyc1Jlc3BvbnNlEmwKEkRlbGV0ZUV2ZW50VHJpZ2dlchI+Lmdlc3RhbHQucHJvdmlkZXIudjEuRGVsZXRlV29ya2Zsb3dQcm92aWRlckV2ZW50VHJpZ2dlclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSggEKEVBhdXNlRXZlbnRUcmlnZ2VyEj0uZ2VzdGFsdC5wcm92aWRlci52MS5QYXVzZVdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0Gi4uZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93RXZlbnRUcmlnZ2VyEoQBChJSZXN1bWVFdmVudFRyaWdnZXISPi5nZXN0YWx0LnByb3ZpZGVyLnYxLlJlc3VtZVdvcmtmbG93UHJvdmlkZXJFdmVudFRyaWdnZXJSZXF1ZXN0Gi4uZ2VzdGFsdC5wcm92aWRlci52MS5Cb3VuZFdvcmtmbG93RXZlbnRUcmlnZ2VyEoMBChVQdXRFeGVjdXRpb25SZWZlcmVuY2USOS5nZXN0YWx0LnByb3ZpZGVyLnYxLlB1dFdvcmtmbG93RXhlY3V0aW9uUmVmZXJlbmNlUmVxdWVzdBovLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2USgwEKFUdldEV4ZWN1dGlvblJlZmVyZW5jZRI5Lmdlc3RhbHQucHJvdmlkZXIudjEuR2V0V29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2VSZXF1ZXN0Gi8uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZRKUAQoXTGlzdEV4ZWN1dGlvblJlZmVyZW5jZXMSOy5nZXN0YWx0LnByb3ZpZGVyLnYxLkxpc3RXb3JrZmxvd0V4ZWN1dGlvblJlZmVyZW5jZXNSZXF1ZXN0GjwuZ2VzdGFsdC5wcm92aWRlci52MS5MaXN0V29ya2Zsb3dFeGVjdXRpb25SZWZlcmVuY2VzUmVzcG9uc2USYAoMUHVibGlzaEV2ZW50EjguZ2VzdGFsdC5wcm92aWRlci52MS5QdWJsaXNoV29ya2Zsb3dQcm92aWRlckV2ZW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eTKMAQoMV29ya2Zsb3dIb3N0EnwKD0ludm9rZU9wZXJhdGlvbhIzLmdlc3RhbHQucHJvdmlkZXIudjEuSW52b2tlV29ya2Zsb3dPcGVyYXRpb25SZXF1ZXN0GjQuZ2VzdGFsdC5wcm92aWRlci52MS5JbnZva2VXb3JrZmxvd09wZXJhdGlvblJlc3BvbnNlMq4PChNXb3JrZmxvd01hbmFnZXJIb3N0EmgKCFN0YXJ0UnVuEjMuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJTdGFydFJ1blJlcXVlc3QaJy5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1J1bhJwCglTaWduYWxSdW4SNC5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlclNpZ25hbFJ1blJlcXVlc3QaLS5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1J1blNpZ25hbBJ+ChBTaWduYWxPclN0YXJ0UnVuEjsuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJTaWduYWxPclN0YXJ0UnVuUmVxdWVzdBotLmdlc3RhbHQucHJvdmlkZXIudjEuTWFuYWdlZFdvcmtmbG93UnVuU2lnbmFsEnkKDkNyZWF0ZVNjaGVkdWxlEjkuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJDcmVhdGVTY2hlZHVsZVJlcXVlc3QaLC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1NjaGVkdWxlEnMKC0dldFNjaGVkdWxlEjYuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJHZXRTY2hlZHVsZVJlcXVlc3QaLC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1NjaGVkdWxlEnkKDlVwZGF0ZVNjaGVkdWxlEjkuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJVcGRhdGVTY2hlZHVsZVJlcXVlc3QaLC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1NjaGVkdWxlEmMKDkRlbGV0ZVNjaGVkdWxlEjkuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJEZWxldGVTY2hlZHVsZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSdwoNUGF1c2VTY2hlZHVsZRI4Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyUGF1c2VTY2hlZHVsZVJlcXVlc3QaLC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1NjaGVkdWxlEnkKDlJlc3VtZVNjaGVkdWxlEjkuZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJSZXN1bWVTY2hlZHVsZVJlcXVlc3QaLC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd1NjaGVkdWxlEoUBChJDcmVhdGVFdmVudFRyaWdnZXISPS5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlckNyZWF0ZUV2ZW50VHJpZ2dlclJlcXVlc3QaMC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd0V2ZW50VHJpZ2dlchJ/Cg9HZXRFdmVudFRyaWdnZXISOi5nZXN0YWx0LnByb3ZpZGVyLnYxLldvcmtmbG93TWFuYWdlckdldEV2ZW50VHJpZ2dlclJlcXVlc3QaMC5nZXN0YWx0LnByb3ZpZGVyLnYxLk1hbmFnZWRXb3JrZmxvd0V2ZW50VHJpZ2dlchKFAQoSVXBkYXRlRXZlbnRUcmlnZ2VyEj0uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJVcGRhdGVFdmVudFRyaWdnZXJSZXF1ZXN0GjAuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dFdmVudFRyaWdnZXISawoSRGVsZXRlRXZlbnRUcmlnZ2VyEj0uZ2VzdGFsdC5wcm92aWRlci52MS5Xb3JrZmxvd01hbmFnZXJEZWxldGVFdmVudFRyaWdnZXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EoMBChFQYXVzZUV2ZW50VHJpZ2dlchI8Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyUGF1c2VFdmVudFRyaWdnZXJSZXF1ZXN0GjAuZ2VzdGFsdC5wcm92aWRlci52MS5NYW5hZ2VkV29ya2Zsb3dFdmVudFRyaWdnZXIShQEKElJlc3VtZUV2ZW50VHJpZ2dlchI9Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyUmVzdW1lRXZlbnRUcmlnZ2VyUmVxdWVzdBowLmdlc3RhbHQucHJvdmlkZXIudjEuTWFuYWdlZFdvcmtmbG93RXZlbnRUcmlnZ2VyEmsKDFB1Ymxpc2hFdmVudBI3Lmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dNYW5hZ2VyUHVibGlzaEV2ZW50UmVxdWVzdBoiLmdlc3RhbHQucHJvdmlkZXIudjEuV29ya2Zsb3dFdmVudEI9WjtnaXRodWIuY29tL3ZhbG9uLXRlY2hub2xvZ2llcy9nZXN0YWx0L2ludGVybmFsL2dlbi92MTtwcm90b2IGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_struct, file_google_protobuf_timestamp, file_v1_agent]);
18
18
 
19
19
  /**
20
20
  * @generated from message gestalt.provider.v1.BoundWorkflowTarget
@@ -121,11 +121,6 @@ export type BoundWorkflowAgentTarget = Message<"gestalt.provider.v1.BoundWorkflo
121
121
  */
122
122
  metadata?: JsonObject | undefined;
123
123
 
124
- /**
125
- * @generated from field: google.protobuf.Struct provider_options = 9;
126
- */
127
- providerOptions?: JsonObject | undefined;
128
-
129
124
  /**
130
125
  * @generated from field: int32 timeout_seconds = 10;
131
126
  */
@@ -135,6 +130,11 @@ export type BoundWorkflowAgentTarget = Message<"gestalt.provider.v1.BoundWorkflo
135
130
  * @generated from field: gestalt.provider.v1.WorkflowOutputDelivery output_delivery = 11;
136
131
  */
137
132
  outputDelivery?: WorkflowOutputDelivery | undefined;
133
+
134
+ /**
135
+ * @generated from field: google.protobuf.Struct model_options = 12;
136
+ */
137
+ modelOptions?: JsonObject | undefined;
138
138
  };
139
139
 
140
140
  /**
@@ -1900,6 +1900,11 @@ export type WorkflowManagerPublishEventRequest = Message<"gestalt.provider.v1.Wo
1900
1900
  * @generated from field: string invocation_token = 3;
1901
1901
  */
1902
1902
  invocationToken: string;
1903
+
1904
+ /**
1905
+ * @generated from field: string provider_name = 4;
1906
+ */
1907
+ providerName: string;
1903
1908
  };
1904
1909
 
1905
1910
  /**
package/src/invoker.ts CHANGED
@@ -2,30 +2,50 @@ import type { JsonObject, JsonValue } from "@bufbuild/protobuf";
2
2
  import { createClient, type Client, type Interceptor } from "@connectrpc/connect";
3
3
  import { createGrpcTransport } from "@connectrpc/connect-node";
4
4
 
5
- import { PluginInvoker as PluginInvokerService } from "../gen/v1/plugin_pb.ts";
5
+ import { PluginInvoker as PluginInvokerService } from "./internal/gen/v1/plugin_pb.ts";
6
6
  import type { OperationResult, Request } from "./api.ts";
7
7
 
8
+ /** Environment variable containing the plugin-invoker host-service target. */
8
9
  export const ENV_PLUGIN_INVOKER_SOCKET = "GESTALT_PLUGIN_INVOKER_SOCKET";
9
- export const ENV_PLUGIN_INVOKER_SOCKET_TOKEN = `${ENV_PLUGIN_INVOKER_SOCKET}_TOKEN`;
10
+ /** Environment variable containing the optional plugin-invoker relay token. */
11
+ export const ENV_PLUGIN_INVOKER_SOCKET_TOKEN =
12
+ `${ENV_PLUGIN_INVOKER_SOCKET}_TOKEN`;
10
13
  const PLUGIN_INVOKER_RELAY_TOKEN_HEADER = "x-gestalt-host-service-relay-token";
11
14
 
15
+ /** Options that select the target connection for an operation invocation. */
12
16
  export interface PluginInvokeOptions {
17
+ /** Connected account id or name to invoke against. */
13
18
  connection?: string;
19
+ /** Provider instance id or name to invoke against. */
14
20
  instance?: string;
21
+ /** Idempotency key forwarded to the target operation. */
15
22
  idempotencyKey?: string;
16
23
  }
17
24
 
25
+ /** Grant included when exchanging an invocation token for a child token. */
18
26
  export interface PluginInvocationGrant {
27
+ /** Plugin name that the child token may invoke. */
19
28
  plugin: string;
29
+ /** Specific operation ids allowed by the child token. */
20
30
  operations?: string[];
31
+ /** Surface names allowed by the child token. */
21
32
  surfaces?: string[];
33
+ /** Whether the child token may invoke every operation on the plugin. */
22
34
  allOperations?: boolean;
23
35
  }
24
36
 
37
+ /** Options for invoking a plugin GraphQL surface. */
25
38
  export interface PluginGraphQLInvokeOptions extends PluginInvokeOptions {
39
+ /** GraphQL variables encoded as a JSON object. */
26
40
  variables?: Record<string, unknown>;
27
41
  }
28
42
 
43
+ /**
44
+ * Client for invoking sibling plugin operations through the host.
45
+ *
46
+ * The constructor accepts either a Gestalt request or an invocation token. The
47
+ * token is attached to every operation, GraphQL, and token-exchange request.
48
+ */
29
49
  export class PluginInvoker {
30
50
  private readonly client: Client<typeof PluginInvokerService>;
31
51
  private readonly invocationToken: string;
@@ -48,6 +68,7 @@ export class PluginInvoker {
48
68
  this.client = createClient(PluginInvokerService, transport);
49
69
  }
50
70
 
71
+ /** Invokes one operation on another plugin. */
51
72
  async invoke(
52
73
  plugin: string,
53
74
  operation: string,
@@ -69,6 +90,7 @@ export class PluginInvoker {
69
90
  };
70
91
  }
71
92
 
93
+ /** Invokes another plugin's GraphQL surface. */
72
94
  async invokeGraphQL(
73
95
  plugin: string,
74
96
  document: string,
@@ -96,8 +118,11 @@ export class PluginInvoker {
96
118
  };
97
119
  }
98
120
 
121
+ /** Exchanges this invocation token for a narrower child token. */
99
122
  async exchangeInvocationToken(options?: {
123
+ /** Grants to attach to the child token. */
100
124
  grants?: PluginInvocationGrant[];
125
+ /** Requested child-token time-to-live in seconds. */
101
126
  ttlSeconds?: number;
102
127
  }): Promise<string> {
103
128
  const response = await this.client.exchangeInvocationToken({
@@ -10,38 +10,32 @@ import {
10
10
  HostedPluginSchema,
11
11
  ListPluginRuntimeSessionsResponseSchema,
12
12
  PluginRuntimeEgressMode,
13
- PluginRuntimeHostServiceAccess,
14
- PluginRuntimeHostServiceBindingSchema,
15
13
  PluginRuntimeProvider as PluginRuntimeProviderService,
16
14
  PluginRuntimeSessionSchema,
17
15
  PluginRuntimeSupportSchema,
18
- type BindPluginRuntimeHostServiceRequest,
19
16
  type GetPluginRuntimeSessionRequest,
20
17
  type HostedPlugin,
21
18
  type ListPluginRuntimeSessionsRequest,
22
- type PluginRuntimeHostServiceBinding,
23
19
  type PluginRuntimeSession,
24
20
  type PluginRuntimeSupport,
25
21
  type StartHostedPluginRequest,
26
22
  type StartPluginRuntimeSessionRequest,
27
23
  type StopPluginRuntimeSessionRequest,
28
- } from "../gen/v1/pluginruntime_pb.ts";
24
+ } from "./internal/gen/v1/pluginruntime_pb.ts";
29
25
  import { errorMessage, type MaybePromise } from "./api.ts";
30
26
  import { RuntimeProvider, type RuntimeProviderOptions } from "./provider.ts";
31
27
 
32
28
  export type {
33
- BindPluginRuntimeHostServiceRequest,
34
29
  GetPluginRuntimeSessionRequest,
35
30
  HostedPlugin,
36
31
  ListPluginRuntimeSessionsRequest,
37
- PluginRuntimeHostServiceBinding,
38
32
  PluginRuntimeSession,
39
33
  PluginRuntimeSupport,
40
34
  StartHostedPluginRequest,
41
35
  StartPluginRuntimeSessionRequest,
42
36
  StopPluginRuntimeSessionRequest,
43
37
  };
44
- export { PluginRuntimeEgressMode, PluginRuntimeHostServiceAccess };
38
+ export { PluginRuntimeEgressMode };
45
39
 
46
40
  export interface PluginRuntimeProviderOptions extends RuntimeProviderOptions {
47
41
  getSupport: () => MaybePromise<MessageInitShape<typeof PluginRuntimeSupportSchema>>;
@@ -55,9 +49,6 @@ export interface PluginRuntimeProviderOptions extends RuntimeProviderOptions {
55
49
  request: ListPluginRuntimeSessionsRequest,
56
50
  ) => MaybePromise<MessageInitShape<typeof PluginRuntimeSessionSchema>[]>;
57
51
  stopSession: (request: StopPluginRuntimeSessionRequest) => MaybePromise<void>;
58
- bindHostService: (
59
- request: BindPluginRuntimeHostServiceRequest,
60
- ) => MaybePromise<MessageInitShape<typeof PluginRuntimeHostServiceBindingSchema>>;
61
52
  startPlugin: (
62
53
  request: StartHostedPluginRequest,
63
54
  ) => MaybePromise<MessageInitShape<typeof HostedPluginSchema>>;
@@ -71,7 +62,6 @@ export class PluginRuntimeProvider extends RuntimeProvider {
71
62
  private readonly getSessionHandler: PluginRuntimeProviderOptions["getSession"];
72
63
  private readonly listSessionsHandler: PluginRuntimeProviderOptions["listSessions"];
73
64
  private readonly stopSessionHandler: PluginRuntimeProviderOptions["stopSession"];
74
- private readonly bindHostServiceHandler: PluginRuntimeProviderOptions["bindHostService"];
75
65
  private readonly startPluginHandler: PluginRuntimeProviderOptions["startPlugin"];
76
66
 
77
67
  constructor(options: PluginRuntimeProviderOptions) {
@@ -81,7 +71,6 @@ export class PluginRuntimeProvider extends RuntimeProvider {
81
71
  this.getSessionHandler = options.getSession;
82
72
  this.listSessionsHandler = options.listSessions;
83
73
  this.stopSessionHandler = options.stopSession;
84
- this.bindHostServiceHandler = options.bindHostService;
85
74
  this.startPluginHandler = options.startPlugin;
86
75
  }
87
76
 
@@ -111,12 +100,6 @@ export class PluginRuntimeProvider extends RuntimeProvider {
111
100
  await this.stopSessionHandler(request);
112
101
  }
113
102
 
114
- async bindHostService(
115
- request: BindPluginRuntimeHostServiceRequest,
116
- ): Promise<MessageInitShape<typeof PluginRuntimeHostServiceBindingSchema>> {
117
- return await this.bindHostServiceHandler(request);
118
- }
119
-
120
103
  async startPlugin(
121
104
  request: StartHostedPluginRequest,
122
105
  ): Promise<MessageInitShape<typeof HostedPluginSchema>> {
@@ -186,14 +169,6 @@ export function createPluginRuntimeProviderService(
186
169
  );
187
170
  return create(EmptySchema);
188
171
  },
189
- async bindHostService(request) {
190
- return create(
191
- PluginRuntimeHostServiceBindingSchema,
192
- await invokePluginRuntimeProvider("bind host service", () =>
193
- provider.bindHostService(request),
194
- ),
195
- );
196
- },
197
172
  async startPlugin(request) {
198
173
  return create(
199
174
  HostedPluginSchema,
@@ -14,37 +14,61 @@ import {
14
14
  type AppendPluginRuntimeLogsResponse,
15
15
  PluginRuntimeLogHost as PluginRuntimeLogHostService,
16
16
  PluginRuntimeLogStream,
17
- } from "../gen/v1/pluginruntime_pb.ts";
17
+ } from "./internal/gen/v1/pluginruntime_pb.ts";
18
18
 
19
+ /** Environment variable containing the runtime-log host-service target. */
19
20
  export const ENV_RUNTIME_LOG_HOST_SOCKET = "GESTALT_RUNTIME_LOG_SOCKET";
20
- export const ENV_RUNTIME_LOG_HOST_SOCKET_TOKEN = `${ENV_RUNTIME_LOG_HOST_SOCKET}_TOKEN`;
21
+ /** Environment variable containing the optional runtime-log relay token. */
22
+ export const ENV_RUNTIME_LOG_HOST_SOCKET_TOKEN =
23
+ `${ENV_RUNTIME_LOG_HOST_SOCKET}_TOKEN`;
24
+ /** Environment variable containing the current plugin-runtime session id. */
21
25
  export const ENV_RUNTIME_SESSION_ID = "GESTALT_RUNTIME_SESSION_ID";
22
26
 
23
27
  const RUNTIME_LOG_RELAY_TOKEN_HEADER = "x-gestalt-host-service-relay-token";
24
28
 
29
+ /** Named runtime log streams accepted by the authored SDK. */
25
30
  export type RuntimeLogStreamName = "stdout" | "stderr" | "runtime";
31
+ /** Runtime log stream input, either a named stream or generated enum value. */
26
32
  export type RuntimeLogStreamInput =
27
33
  | RuntimeLogStreamName
28
34
  | PluginRuntimeLogStream;
35
+ /** Shape accepted by `RuntimeLogHost.appendLogs`. */
29
36
  export type RuntimeLogAppendLogsInput = MessageInitShape<
30
37
  typeof AppendPluginRuntimeLogsRequestSchema
31
38
  >;
39
+ /** Response message returned after appending runtime logs. */
32
40
  export type RuntimeLogAppendResponseMessage = AppendPluginRuntimeLogsResponse;
33
41
 
42
+ /** One runtime log entry to append through `RuntimeLogHost.append`. */
34
43
  export interface RuntimeLogAppendInput {
44
+ /** Runtime session id. Defaults to `GESTALT_RUNTIME_SESSION_ID`. */
35
45
  sessionId?: string;
46
+ /** Log message bytes or text. */
36
47
  message: string | Uint8Array;
48
+ /** Destination stream. Defaults to `runtime`. */
37
49
  stream?: RuntimeLogStreamInput;
50
+ /** Observation timestamp. Defaults to the current time. */
38
51
  observedAt?: Date;
52
+ /** Monotonic source sequence number. Auto-increments when omitted. */
39
53
  sourceSeq?: number | bigint;
40
54
  }
41
55
 
56
+ /** Options for the `Writable` returned by `RuntimeLogHost.writer`. */
42
57
  export interface RuntimeLogWriterOptions {
58
+ /** Runtime session id. Defaults to `GESTALT_RUNTIME_SESSION_ID`. */
43
59
  sessionId?: string;
60
+ /** Destination stream. Defaults to `stdout`. */
44
61
  stream?: RuntimeLogStreamInput;
62
+ /** Initial sequence number for writes. */
45
63
  sourceSeqStart?: number | bigint;
46
64
  }
47
65
 
66
+ /**
67
+ * Client for appending plugin-runtime logs to the host.
68
+ *
69
+ * Use `append` for a single entry, `appendLogs` for a protocol-shaped batch, or
70
+ * `writer` to bridge Node streams into the runtime log host.
71
+ */
48
72
  export class RuntimeLogHost {
49
73
  private readonly client: Client<typeof PluginRuntimeLogHostService>;
50
74
  private sourceSeq = 0n;
@@ -65,7 +89,7 @@ export class RuntimeLogHost {
65
89
  ? {
66
90
  nodeOptions: {
67
91
  createConnection: () =>
68
- connect(transportOptions.nodeOptions!.path),
92
+ connect({ path: transportOptions.nodeOptions!.path }),
69
93
  },
70
94
  }
71
95
  : {}),
@@ -82,6 +106,7 @@ export class RuntimeLogHost {
82
106
  return await this.client.appendLogs(request);
83
107
  }
84
108
 
109
+ /** Appends one runtime log entry. */
85
110
  async append(
86
111
  input: RuntimeLogAppendInput,
87
112
  ): Promise<RuntimeLogAppendResponseMessage> {
@@ -105,6 +130,7 @@ export class RuntimeLogHost {
105
130
  });
106
131
  }
107
132
 
133
+ /** Returns a `Writable` that appends chunks to a runtime log stream. */
108
134
  writer(options?: RuntimeLogWriterOptions): Writable;
109
135
  writer(sessionId: string, options?: RuntimeLogWriterOptions): Writable;
110
136
  writer(
package/src/runtime.ts CHANGED
@@ -16,7 +16,7 @@ import { connectNodeAdapter } from "@connectrpc/connect-node";
16
16
 
17
17
  import {
18
18
  AgentProvider as AgentProviderService,
19
- } from "../gen/v1/agent_pb.ts";
19
+ } from "./internal/gen/v1/agent_pb.ts";
20
20
  import {
21
21
  AuthenticationProvider as AuthenticationProviderService,
22
22
  AuthSessionSettingsSchema,
@@ -24,7 +24,7 @@ import {
24
24
  BeginLoginResponseSchema,
25
25
  type CompleteLoginRequest as AuthCompleteLoginRequest,
26
26
  type ValidateExternalTokenRequest,
27
- } from "../gen/v1/authentication_pb.ts";
27
+ } from "./internal/gen/v1/authentication_pb.ts";
28
28
  import {
29
29
  Cache as CacheService,
30
30
  CacheDeleteManyResponseSchema,
@@ -33,12 +33,12 @@ import {
33
33
  CacheGetResponseSchema,
34
34
  CacheResultSchema,
35
35
  CacheTouchResponseSchema,
36
- } from "../gen/v1/cache_pb.ts";
36
+ } from "./internal/gen/v1/cache_pb.ts";
37
37
  import {
38
38
  SecretsProvider as SecretsProviderService,
39
39
  GetSecretResponseSchema,
40
40
  type GetSecretRequest,
41
- } from "../gen/v1/secrets_pb.ts";
41
+ } from "./internal/gen/v1/secrets_pb.ts";
42
42
  import {
43
43
  CatalogOperationSchema as ProtoCatalogOperationSchema,
44
44
  CatalogParameterSchema as ProtoCatalogParameterSchema,
@@ -58,10 +58,10 @@ import {
58
58
  type ExecuteRequest,
59
59
  type GetSessionCatalogRequest,
60
60
  type StartProviderRequest,
61
- } from "../gen/v1/plugin_pb.ts";
61
+ } from "./internal/gen/v1/plugin_pb.ts";
62
62
  import {
63
63
  PluginRuntimeProvider as PluginRuntimeProviderService,
64
- } from "../gen/v1/pluginruntime_pb.ts";
64
+ } from "./internal/gen/v1/pluginruntime_pb.ts";
65
65
  import {
66
66
  ConfigureProviderResponseSchema,
67
67
  HealthCheckResponseSchema,
@@ -70,9 +70,9 @@ import {
70
70
  ProviderLifecycle,
71
71
  StartRuntimeProviderResponseSchema,
72
72
  type ConfigureProviderRequest,
73
- } from "../gen/v1/runtime_pb.ts";
74
- import { S3 as S3Service } from "../gen/v1/s3_pb.ts";
75
- import { WorkflowProvider as WorkflowProviderService } from "../gen/v1/workflow_pb.ts";
73
+ } from "./internal/gen/v1/runtime_pb.ts";
74
+ import { S3 as S3Service } from "./internal/gen/v1/s3_pb.ts";
75
+ import { WorkflowProvider as WorkflowProviderService } from "./internal/gen/v1/workflow_pb.ts";
76
76
  import { errorMessage, type Request } from "./api.ts";
77
77
  import {
78
78
  AgentProvider,
@@ -824,6 +824,7 @@ function providerRequest(
824
824
  const subject = requestContext?.subject;
825
825
  const credential = requestContext?.credential;
826
826
  const access = requestContext?.access;
827
+ const host = requestContext?.host;
827
828
  return {
828
829
  token,
829
830
  connectionParams: {
@@ -848,6 +849,9 @@ function providerRequest(
848
849
  workflow: {
849
850
  ...(requestContext?.workflow ?? {}),
850
851
  },
852
+ host: {
853
+ publicBaseUrl: host?.publicBaseUrl ?? "",
854
+ },
851
855
  invocationToken,
852
856
  idempotencyKey: idempotencyKey.trim(),
853
857
  };
@@ -881,6 +885,7 @@ function providerHTTPSubjectResolutionContext(
881
885
  subject: request.subject,
882
886
  credential: request.credential,
883
887
  access: request.access,
888
+ host: request.host,
884
889
  workflow: request.workflow,
885
890
  };
886
891
  }