@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.
- package/README.md +70 -80
- package/package.json +2 -2
- package/src/agent-manager.ts +33 -2
- package/src/agent.ts +31 -11
- package/src/api.ts +12 -0
- package/src/authorization.ts +3 -2
- package/src/cache.ts +14 -3
- package/src/http-subject.ts +5 -1
- package/src/index.ts +3 -5
- package/src/indexeddb.ts +3 -2
- package/{gen → src/internal/gen}/v1/agent_pb.ts +280 -201
- package/{gen → src/internal/gen}/v1/authentication_pb.ts +1 -1
- package/{gen → src/internal/gen}/v1/authorization_pb.ts +1 -1
- package/{gen → src/internal/gen}/v1/cache_pb.ts +1 -1
- package/{gen → src/internal/gen}/v1/datastore_pb.ts +1 -1
- package/src/internal/gen/v1/external_credential_pb.ts +679 -0
- package/{gen → src/internal/gen}/v1/plugin_pb.ts +38 -14
- package/{gen → src/internal/gen}/v1/pluginruntime_pb.ts +15 -130
- package/{gen → src/internal/gen}/v1/runtime_pb.ts +1 -1
- package/{gen → src/internal/gen}/v1/s3_pb.ts +1 -1
- package/{gen → src/internal/gen}/v1/secrets_pb.ts +1 -1
- package/{gen → src/internal/gen}/v1/workflow_pb.ts +11 -6
- package/src/invoker.ts +27 -2
- package/src/pluginruntime.ts +2 -27
- package/src/runtime-log-host.ts +29 -3
- package/src/runtime.ts +14 -9
- package/src/s3.ts +43 -7
- package/src/test-agent-contract.ts +43 -0
- package/src/workflow-manager.ts +42 -2
- package/src/workflow.ts +16 -2
- package/tsconfig.json +1 -1
- package/gen/v1/external_credential_pb.ts +0 -274
- /package/{gen → src/internal/gen}/google/rpc/status_pb.ts +0 -0
|
@@ -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 "
|
|
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
|
-
|
|
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({
|
package/src/pluginruntime.ts
CHANGED
|
@@ -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 "
|
|
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
|
|
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,
|
package/src/runtime-log-host.ts
CHANGED
|
@@ -14,37 +14,61 @@ import {
|
|
|
14
14
|
type AppendPluginRuntimeLogsResponse,
|
|
15
15
|
PluginRuntimeLogHost as PluginRuntimeLogHostService,
|
|
16
16
|
PluginRuntimeLogStream,
|
|
17
|
-
} from "
|
|
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
|
-
|
|
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 "
|
|
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 "
|
|
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 "
|
|
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 "
|
|
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 "
|
|
61
|
+
} from "./internal/gen/v1/plugin_pb.ts";
|
|
62
62
|
import {
|
|
63
63
|
PluginRuntimeProvider as PluginRuntimeProviderService,
|
|
64
|
-
} from "
|
|
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 "
|
|
74
|
-
import { S3 as S3Service } from "
|
|
75
|
-
import { WorkflowProvider as WorkflowProviderService } from "
|
|
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
|
}
|