towns-agent 4.1.0 → 4.1.2

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/dist/index.js CHANGED
@@ -7777,7 +7777,7 @@ var Err;
7777
7777
  var StreamService = /* @__PURE__ */ (0, import_codegenv22.serviceDesc)(file_protocol, 0);
7778
7778
 
7779
7779
  // ../proto/dist/gen/apps_pb.js
7780
- var file_apps = /* @__PURE__ */ (0, import_codegenv23.fileDesc)("CgphcHBzLnByb3RvEgVyaXZlciKFAQoLQXBwU2V0dGluZ3MSMwoPZm9yd2FyZF9zZXR0aW5nGAEgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZRIUCgh0cmFkYWJsZRgCIAEoCEICGAESKwoOc3VwcG9ydGVkX2FwaXMYAyADKA4yEy5yaXZlci5TdXBwb3J0ZWRBcGkigwEKD1JlZ2lzdGVyUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSFAoMYXBwX293bmVyX2lkGAIgASgMEiQKCHNldHRpbmdzGAMgASgLMhIucml2ZXIuQXBwU2V0dGluZ3MSJAoIbWV0YWRhdGEYBCABKAsyEi5yaXZlci5BcHBNZXRhZGF0YSIvChBSZWdpc3RlclJlc3BvbnNlEhsKE2hzMjU2X3NoYXJlZF9zZWNyZXQYASABKAwiPQoWUmVnaXN0ZXJXZWJob29rUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSEwoLd2ViaG9va191cmwYAiABKAkiGQoXUmVnaXN0ZXJXZWJob29rUmVzcG9uc2UiTQoVU2V0QXBwU2V0dGluZ3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIkCghzZXR0aW5ncxgCIAEoCzISLnJpdmVyLkFwcFNldHRpbmdzIhgKFlNldEFwcFNldHRpbmdzUmVzcG9uc2UiugEKGFVwZGF0ZUFwcFNldHRpbmdzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSOAoPZm9yd2FyZF9zZXR0aW5nGAIgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZUgAiAEBEisKDnN1cHBvcnRlZF9hcGlzGAMgAygOMhMucml2ZXIuU3VwcG9ydGVkQXBpEhMKC3VwZGF0ZV9tYXNrGAQgAygJQhIKEF9mb3J3YXJkX3NldHRpbmciGwoZVXBkYXRlQXBwU2V0dGluZ3NSZXNwb25zZSInChVHZXRBcHBTZXR0aW5nc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMImgKFkdldEFwcFNldHRpbmdzUmVzcG9uc2USJAoIc2V0dGluZ3MYASABKAsyEi5yaXZlci5BcHBTZXR0aW5ncxIYCgt3ZWJob29rX3VybBgCIAEoCUgAiAEBQg4KDF93ZWJob29rX3VybCIlChNSb3RhdGVTZWNyZXRSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCIzChRSb3RhdGVTZWNyZXRSZXNwb25zZRIbChNoczI1Nl9zaGFyZWRfc2VjcmV0GAEgASgMIiIKEEdldFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIowBChFHZXRTdGF0dXNSZXNwb25zZRIVCg1pc19yZWdpc3RlcmVkGAEgASgIEhYKDnZhbGlkX3Jlc3BvbnNlGAIgASgIEjgKBnN0YXR1cxgDIAEoCzIoLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5TdGF0dXNSZXNwb25zZRIOCgZhY3RpdmUYBCABKAgiXAoRR2V0U2Vzc2lvblJlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhQKCnNlc3Npb25faWQYAiABKAlIABITCglzdHJlYW1faWQYAyABKAxIAEIMCgppZGVudGlmaWVyIkgKEkdldFNlc3Npb25SZXNwb25zZRIyChlncm91cF9lbmNyeXB0aW9uX3Nlc3Npb25zGAEgASgLMg8ucml2ZXIuRW52ZWxvcGUiugIKDEV2ZW50UGF5bG9hZBIwCghtZXNzYWdlcxgBIAEoCzIcLnJpdmVyLkV2ZW50UGF5bG9hZC5NZXNzYWdlc0gAEjcKDHNvbGljaXRhdGlvbhgCIAEoCzIfLnJpdmVyLkV2ZW50UGF5bG9hZC5Tb2xpY2l0S2V5c0gAGn0KCE1lc3NhZ2VzEhEKCXN0cmVhbV9pZBgBIAEoDBIhCghtZXNzYWdlcxgCIAMoCzIPLnJpdmVyLkVudmVsb3BlEjsKImdyb3VwX2VuY3J5cHRpb25fc2Vzc2lvbnNfbWVzc2FnZXMYAyADKAsyDy5yaXZlci5FbnZlbG9wZRo1CgtTb2xpY2l0S2V5cxIRCglzdHJlYW1faWQYASABKAwSEwoLc2Vzc2lvbl9pZHMYAiADKAlCCQoHcGF5bG9hZCI0Cg1FdmVudHNQYXlsb2FkEiMKBmV2ZW50cxgBIAMoCzITLnJpdmVyLkV2ZW50UGF5bG9hZCKIBwoRQXBwU2VydmljZVJlcXVlc3QSLAoKaW5pdGlhbGl6ZRhlIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEigKBnN0YXR1cxhmIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEiYKBmV2ZW50cxhnIAEoCzIULnJpdmVyLkV2ZW50c1BheWxvYWRIABIsCglwb3NpdGlvbnMYaCABKAsyFy5yaXZlci5Qb3NpdGlvbnNSZXF1ZXN0SAASPgoJcHJvcG9zYWxzGGkgASgLMikucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuUHJvcG9zYWxzUmVxdWVzdEgAEkYKEWNvbmNpZXJnZV9yZXF1ZXN0GGogASgLMikucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuQ29uY2llcmdlUmVxdWVzdEgAGvgBChBQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhIKCnVzZXJfcXVlcnkYAiABKAkSFAoHY29udGV4dBgDIAEoCUgAiAEBEjoKC2ludm9jYXRpb25zGAQgAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEhcKCnRpbWVvdXRfbXMYBSABKAVIAYgBARIaCg11c2VyX3RpbWV6b25lGAYgASgJSAKIAQFCCgoIX2NvbnRleHRCDQoLX3RpbWVvdXRfbXNCEAoOX3VzZXJfdGltZXpvbmUatgIKEENvbmNpZXJnZVJlcXVlc3QSHAoUY29udmVyc2F0aW9uX3NlZWRfaWQYASABKAkSEgoKdXNlcl9xdWVyeRgCIAEoCRIUCgdjb250ZXh0GAMgASgJSACIAQESGQoMZXh0ZXJuYWxfcmVmGAQgASgJSAGIAQESIAoTcHJvcG9zYWxfdGltZW91dF9tcxgFIAEoA0gCiAEBEiEKFGNvbmNpZXJnZV90aW1lb3V0X21zGAYgASgDSAOIAQESGgoNdXNlcl90aW1lem9uZRgHIAEoCUgEiAEBQgoKCF9jb250ZXh0Qg8KDV9leHRlcm5hbF9yZWZCFgoUX3Byb3Bvc2FsX3RpbWVvdXRfbXNCFwoVX2NvbmNpZXJnZV90aW1lb3V0X21zQhAKDl91c2VyX3RpbWV6b25lQgkKB3BheWxvYWQijwUKEkFwcFNlcnZpY2VSZXNwb25zZRJCCgppbml0aWFsaXplGGUgASgLMiwucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLkluaXRpYWxpemVSZXNwb25zZUgAEjoKBnN0YXR1cxhmIAEoCzIoLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5TdGF0dXNSZXNwb25zZUgAEi0KCXBvc2l0aW9ucxhnIAEoCzIYLnJpdmVyLlBvc2l0aW9uc1Jlc3BvbnNlSAASQAoJcHJvcG9zYWxzGGggASgLMisucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLlByb3Bvc2Fsc1Jlc3BvbnNlSAASSQoSY29uY2llcmdlX3Jlc3BvbnNlGGkgASgLMisucml2ZXIuQXBwU2VydmljZVJlc3BvbnNlLkNvbmNpZXJnZVJlc3BvbnNlSAAaXAoSSW5pdGlhbGl6ZVJlc3BvbnNlEkYKEWVuY3J5cHRpb25fZGV2aWNlGAEgASgLMisucml2ZXIuVXNlck1ldGFkYXRhUGF5bG9hZC5FbmNyeXB0aW9uRGV2aWNlGoUBCg5TdGF0dXNSZXNwb25zZRIZChFmcmFtZXdvcmtfdmVyc2lvbhgBIAEoBRISCgpkZXZpY2Vfa2V5GAIgASgJEhQKDGZhbGxiYWNrX2tleRgDIAEoCRIbCg5jbGllbnRfdmVyc2lvbhgEIAEoCUgAiAEBQhEKD19jbGllbnRfdmVyc2lvbholChFQcm9wb3NhbHNSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCBolChFDb25jaWVyZ2VSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCEIJCgdwYXlsb2FkIvABCghQb3NpdGlvbhINCgVsYWJlbBgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEg4KBnN5bWJvbBgDIAEoCRIhCgR0eXBlGAQgASgOMhMucml2ZXIuUG9zaXRpb25UeXBlEhMKC2JhbGFuY2VfdXNkGAUgASgJEg8KB3BubF91c2QYBiABKAkSFQoIY2hhaW5faWQYByABKARIAYgBARIbCg5uYXRpdmVfYmFsYW5jZRgIIAEoCUgCiAEBQg4KDF9kZXNjcmlwdGlvbkILCglfY2hhaW5faWRCEQoPX25hdGl2ZV9iYWxhbmNlIiMKEFBvc2l0aW9uc1JlcXVlc3QSDwoHdXNlcl9pZBgBIAEoDCJ7ChFQb3NpdGlvbnNSZXNwb25zZRIRCglzdXBwb3J0ZWQYASABKAgSEgoFZXJyb3IYAiABKAlIAIgBARIiCglwb3NpdGlvbnMYAyADKAsyDy5yaXZlci5Qb3NpdGlvbhIRCgl0aW1lc3RhbXAYBCABKANCCAoGX2Vycm9yIjEKDFNsYXNoQ29tbWFuZBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJIjsKEUNhcGFiaWxpdHlFeGFtcGxlEhIKCnVzZXJfcXVlcnkYASABKAkSEgoKcGFyYW1ldGVycxgCIAEoCSJxCgpDYXBhYmlsaXR5EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSFAoMaW5wdXRfc2NoZW1hGAMgASgJEioKCGV4YW1wbGVzGAQgAygLMhgucml2ZXIuQ2FwYWJpbGl0eUV4YW1wbGUijwEKEkNhcGFiaWxpdHlNYW5pZmVzdBIQCghhZ2VudF9pZBgBIAEoDBISCgphZ2VudF9uYW1lGAIgASgJEhkKEWFnZW50X2Rlc2NyaXB0aW9uGAMgASgJEicKDGNhcGFiaWxpdGllcxgEIAMoCzIRLnJpdmVyLkNhcGFiaWxpdHkSDwoHdmVyc2lvbhgFIAEoCSKAAgoLQXBwTWV0YWRhdGESEAoIdXNlcm5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEQoJaW1hZ2VfdXJsGAMgASgJEhkKDGV4dGVybmFsX3VybBgEIAEoCUgAiAEBEisKDnNsYXNoX2NvbW1hbmRzGAYgAygLMhMucml2ZXIuU2xhc2hDb21tYW5kEhQKDGRpc3BsYXlfbmFtZRgHIAEoCRINCgVtb3R0bxgIIAEoCRInCgxjYXBhYmlsaXRpZXMYCSADKAsyES5yaXZlci5DYXBhYmlsaXR5Qg8KDV9leHRlcm5hbF91cmxKBAgFEAZSCmF2YXRhcl91cmwi5QIKEUFwcE1ldGFkYXRhVXBkYXRlEhUKCHVzZXJuYW1lGAEgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAiABKAlIAYgBARIWCglpbWFnZV91cmwYAyABKAlIAogBARIZCgxleHRlcm5hbF91cmwYBCABKAlIA4gBARIrCg5zbGFzaF9jb21tYW5kcxgGIAMoCzITLnJpdmVyLlNsYXNoQ29tbWFuZBIZCgxkaXNwbGF5X25hbWUYByABKAlIBIgBARISCgVtb3R0bxgIIAEoCUgFiAEBEicKDGNhcGFiaWxpdGllcxgJIAMoCzIRLnJpdmVyLkNhcGFiaWxpdHlCCwoJX3VzZXJuYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfaW1hZ2VfdXJsQg8KDV9leHRlcm5hbF91cmxCDwoNX2Rpc3BsYXlfbmFtZUIICgZfbW90dG9KBAgFEAZSCmF2YXRhcl91cmwiawoYVXBkYXRlQXBwTWV0YWRhdGFSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIqCghtZXRhZGF0YRgCIAEoCzIYLnJpdmVyLkFwcE1ldGFkYXRhVXBkYXRlEhMKC3VwZGF0ZV9tYXNrGAMgAygJIhsKGVVwZGF0ZUFwcE1ldGFkYXRhUmVzcG9uc2UiJwoVR2V0QXBwTWV0YWRhdGFSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCI+ChZHZXRBcHBNZXRhZGF0YVJlc3BvbnNlEiQKCG1ldGFkYXRhGAEgASgLMhIucml2ZXIuQXBwTWV0YWRhdGEiKgoWVmFsaWRhdGVCb3ROYW1lUmVxdWVzdBIQCgh1c2VybmFtZRgBIAEoCSJGChdWYWxpZGF0ZUJvdE5hbWVSZXNwb25zZRIUCgxpc19hdmFpbGFibGUYASABKAgSFQoNZXJyb3JfbWVzc2FnZRgCIAEoCSI7ChlTZXRBcHBBY3RpdmVTdGF0dXNSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIOCgZhY3RpdmUYAiABKAgiHAoaU2V0QXBwQWN0aXZlU3RhdHVzUmVzcG9uc2UiPwobU2V0QXBwUHJvbW90ZWRTdGF0dXNSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIQCghwcm9tb3RlZBgCIAEoCCIeChxTZXRBcHBQcm9tb3RlZFN0YXR1c1Jlc3BvbnNlIj8KG1NldEFwcFZlcmlmaWVkU3RhdHVzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSEAoIdmVyaWZpZWQYAiABKAgiHgocU2V0QXBwVmVyaWZpZWRTdGF0dXNSZXNwb25zZSI8ChJTZXRVc2VyTmFtZVJlcXVlc3QSEAoIdXNlcm5hbWUYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJIhUKE1NldFVzZXJOYW1lUmVzcG9uc2UiKQoUR2V0RW50aXR5TmFtZVJlcXVlc3QSEQoJZW50aXR5X2lkGAEgASgMIlQKFUdldEVudGl0eU5hbWVSZXNwb25zZRIQCgh1c2VybmFtZRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLZW50aXR5X3R5cGUYAyABKAUiMAoaR2V0QmF0Y2hFbnRpdHlOYW1lc1JlcXVlc3QSEgoKZW50aXR5X2lkcxgBIAMoDCJgCg5FbnRpdHlOYW1lSW5mbxIRCgllbnRpdHlfaWQYASABKAwSEAoIdXNlcm5hbWUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhMKC2VudGl0eV90eXBlGAQgASgFIkYKG0dldEJhdGNoRW50aXR5TmFtZXNSZXNwb25zZRInCghlbnRpdGllcxgBIAMoCzIVLnJpdmVyLkVudGl0eU5hbWVJbmZvIkIKF0ludml0ZUVuY3J5cHRpb25TZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAkSEwoLc2Vzc2lvbl9rZXkYAiABKAkibgoUSW52aXRlRW5jcnlwdGlvbkRhdGESEQoJc3RyZWFtX2lkGAEgASgMEhEKCWFsZ29yaXRobRgCIAEoCRIwCghzZXNzaW9ucxgDIAMoCzIeLnJpdmVyLkludml0ZUVuY3J5cHRpb25TZXNzaW9uIrsBChdDcmVhdGVJbnZpdGVMaW5rUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwSOwoWaW52aXRlX2VuY3J5cHRpb25fZGF0YRgCIAEoCzIbLnJpdmVyLkludml0ZUVuY3J5cHRpb25EYXRhEjkKEmNoYW5uZWxfcHJvcGVydGllcxgDIAEoCzIYLnJpdmVyLkNoYW5uZWxQcm9wZXJ0aWVzSACIAQFCFQoTX2NoYW5uZWxfcHJvcGVydGllcyIvChhDcmVhdGVJbnZpdGVMaW5rUmVzcG9uc2USEwoLaW52aXRlX2NvZGUYASABKAkiLAoXUmV2b2tlSW52aXRlTGlua1JlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMIhoKGFJldm9rZUludml0ZUxpbmtSZXNwb25zZSIuChdSZWRlZW1JbnZpdGVMaW5rUmVxdWVzdBITCgtpbnZpdGVfY29kZRgBIAEoCSLdAQoYUmVkZWVtSW52aXRlTGlua1Jlc3BvbnNlEjIKDnNpZ25lZF9wYXlsb2FkGAEgASgLMhoucml2ZXIuSW52aXRlU2lnbmVkUGF5bG9hZBI7ChZpbnZpdGVfZW5jcnlwdGlvbl9kYXRhGAIgASgLMhsucml2ZXIuSW52aXRlRW5jcnlwdGlvbkRhdGESOQoSY2hhbm5lbF9wcm9wZXJ0aWVzGAMgASgLMhgucml2ZXIuQ2hhbm5lbFByb3BlcnRpZXNIAIgBAUIVChNfY2hhbm5lbF9wcm9wZXJ0aWVzIikKFEdldEludml0ZUxpbmtSZXF1ZXN0EhEKCXN0cmVhbV9pZBgBIAEoDCJ7ChVHZXRJbnZpdGVMaW5rUmVzcG9uc2USGAoLaW52aXRlX2NvZGUYASABKAlIAIgBARIgChNjcmVhdGVkX2F0X2Vwb2NoX21zGAIgASgDSAGIAQFCDgoMX2ludml0ZV9jb2RlQhYKFF9jcmVhdGVkX2F0X2Vwb2NoX21zIjgKD0FwcEluc3RhbGxTdGF0cxIOCgZhcHBfaWQYASABKAwSFQoNaW5zdGFsbF9jb3VudBgCIAEoBSKNAQoJQXBwUmV2aWV3EgoKAmlkGAEgASgJEg4KBmFwcF9pZBgCIAEoDBIYChByZXZpZXdlcl9hZGRyZXNzGAMgASgMEg4KBnJhdGluZxgEIAEoBRIPCgdjb21tZW50GAUgASgJEhUKDWNyZWF0ZWRfYXRfbXMYBiABKAMSEgoKaXNfcmV2b2tlZBgHIAEoCCJpChBBcHBSZXZpZXdTdW1tYXJ5Eg4KBmFwcF9pZBgBIAEoDBIVCg10b3RhbF9yZXZpZXdzGAIgASgFEhYKDmFjdGl2ZV9yZXZpZXdzGAMgASgFEhYKDmF2ZXJhZ2VfcmF0aW5nGAQgASgCIu8BCgtBcHBJbmZvRnVsbBIOCgZhcHBfaWQYASABKAwSDQoFb3duZXIYAiABKAwSJAoIbWV0YWRhdGEYAyABKAsyEi5yaXZlci5BcHBNZXRhZGF0YRItCg1pbnN0YWxsX3N0YXRzGAQgASgLMhYucml2ZXIuQXBwSW5zdGFsbFN0YXRzEi8KDnJldmlld19zdW1tYXJ5GAUgASgLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeRIRCglpc19hY3RpdmUYBiABKAgSEwoLaXNfcHJvbW90ZWQYByABKAgSEwoLaXNfdmVyaWZpZWQYCCABKAgi5gEKGUxpc3RSZWdpc3RlcmVkQXBwc1JlcXVlc3QSDQoFbGltaXQYASABKAUSDgoGb2Zmc2V0GAIgASgFEhMKC2FjdGl2ZV9vbmx5GAMgASgIEhoKDW93bmVyX2FkZHJlc3MYBCABKAxIAIgBARIWCglzdHJlYW1faWQYBSABKAxIAYgBARIVCg1wcm9tb3RlZF9vbmx5GAYgASgIEhkKDHNlYXJjaF9xdWVyeRgHIAEoCUgCiAEBQhAKDl9vd25lcl9hZGRyZXNzQgwKCl9zdHJlYW1faWRCDwoNX3NlYXJjaF9xdWVyeSJTChpMaXN0UmVnaXN0ZXJlZEFwcHNSZXNwb25zZRIgCgRhcHBzGAEgAygLMhIucml2ZXIuQXBwSW5mb0Z1bGwSEwoLdG90YWxfY291bnQYAiABKAUiKAoVR2V0QnVsa0FwcERhdGFSZXF1ZXN0Eg8KB2FwcF9pZHMYASADKAwiOgoWR2V0QnVsa0FwcERhdGFSZXNwb25zZRIgCgRhcHBzGAEgAygLMhIucml2ZXIuQXBwSW5mb0Z1bGwiKwoZR2V0QXBwSW5zdGFsbFN0YXRzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwiQwoaR2V0QXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USJQoFc3RhdHMYASABKAsyFi5yaXZlci5BcHBJbnN0YWxsU3RhdHMiMAodR2V0QnVsa0FwcEluc3RhbGxTdGF0c1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJHCh5HZXRCdWxrQXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USJQoFc3RhdHMYASADKAsyFi5yaXZlci5BcHBJbnN0YWxsU3RhdHMiSQoWU3VibWl0QXBwUmV2aWV3UmVxdWVzdBIOCgZhcHBfaWQYASABKAwSDgoGcmF0aW5nGAIgASgFEg8KB2NvbW1lbnQYAyABKAkiLAoXU3VibWl0QXBwUmV2aWV3UmVzcG9uc2USEQoJcmV2aWV3X2lkGAEgASgJIkUKFEdldEFwcFJldmlld3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiTwoVR2V0QXBwUmV2aWV3c1Jlc3BvbnNlEiEKB3Jldmlld3MYASADKAsyEC5yaXZlci5BcHBSZXZpZXcSEwoLdG90YWxfY291bnQYAiABKAUiKAoWUmV2b2tlQXBwUmV2aWV3UmVxdWVzdBIOCgZhcHBfaWQYASABKAwiGQoXUmV2b2tlQXBwUmV2aWV3UmVzcG9uc2UiLAoaR2V0QXBwUmV2aWV3U3VtbWFyeVJlcXVlc3QSDgoGYXBwX2lkGAEgASgMIkcKG0dldEFwcFJldmlld1N1bW1hcnlSZXNwb25zZRIoCgdzdW1tYXJ5GAEgASgLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeSIzCiBHZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVxdWVzdBIPCgdhcHBfaWRzGAEgAygMIk8KIUdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXNSZXNwb25zZRIqCglzdW1tYXJpZXMYASADKAsyFy5yaXZlci5BcHBSZXZpZXdTdW1tYXJ5IigKFkdldEFwcFBvc2l0aW9uc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIlYKF0dldEFwcFBvc2l0aW9uc1Jlc3BvbnNlEg4KBmFwcF9pZBgBIAEoDBIrCglwb3NpdGlvbnMYAiABKAsyGC5yaXZlci5Qb3NpdGlvbnNSZXNwb25zZSIuChtHZXRCYXRjaEFwcFBvc2l0aW9uc1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJJChxHZXRCYXRjaEFwcFBvc2l0aW9uc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5yaXZlci5BcHBQb3NpdGlvbnNFbnRyeSJuChFBcHBQb3NpdGlvbnNFbnRyeRIOCgZhcHBfaWQYASABKAwSKwoJcG9zaXRpb25zGAIgASgLMhgucml2ZXIuUG9zaXRpb25zUmVzcG9uc2USEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IiNAofR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVxdWVzdBIRCglhZ2VudF9pZHMYASADKAwiUAogR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVzcG9uc2USLAoJbWFuaWZlc3RzGAEgAygLMhkucml2ZXIuQ2FwYWJpbGl0eU1hbmlmZXN0IssBChxHZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEjcKCHJlcXVlc3RzGAIgAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEhcKCnRpbWVvdXRfbXMYAyABKAVIAIgBARIaCg11c2VyX3RpbWV6b25lGAQgASgJSAGIAQFCDQoLX3RpbWVvdXRfbXNCEAoOX3VzZXJfdGltZXpvbmUiMQodR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAgioAEKFVF1ZXJ5Q29uY2llcmdlUmVxdWVzdBINCgVxdWVyeRgBIAEoCRITCgZzb3VyY2UYAiABKAlIAIgBARIZCgxleHRlcm5hbF9yZWYYAyABKAlIAYgBARIaCg11c2VyX3RpbWV6b25lGAQgASgJSAKIAQFCCQoHX3NvdXJjZUIPCg1fZXh0ZXJuYWxfcmVmQhAKDl91c2VyX3RpbWV6b25lIjYKFlF1ZXJ5Q29uY2llcmdlUmVzcG9uc2USHAoUY29udmVyc2F0aW9uX3NlZWRfaWQYASABKAkiLQoaR2V0Q29udmVyc2F0aW9uU2VlZFJlcXVlc3QSDwoHc2VlZF9pZBgBIAEoCSKjAQobR2V0Q29udmVyc2F0aW9uU2VlZFJlc3BvbnNlEiUKBHNlZWQYASABKAsyFy5yaXZlci5Db252ZXJzYXRpb25TZWVkEi0KBnN0YXR1cxgCIAEoDjIdLnJpdmVyLkNvbnZlcnNhdGlvblNlZWRTdGF0dXMSLgoPcHJvcG9zYWxfc3RhdHVzGAMgASgOMhUucml2ZXIuUHJvcG9zYWxTdGF0dXMiigEKG1N1Ym1pdEFnZW50UHJvcG9zYWxzUmVxdWVzdBIcChRjb252ZXJzYXRpb25fc2VlZF9pZBgBIAEoCRIiCglwcm9wb3NhbHMYAiADKAsyDy5yaXZlci5Qcm9wb3NhbBIpCgZlcnJvcnMYAyADKAsyGS5yaXZlci5BZ2VudFByb3Bvc2FsRXJyb3IiHgocU3VibWl0QWdlbnRQcm9wb3NhbHNSZXNwb25zZSK/AQodRmluaXNoQ29udmVyc2F0aW9uU2VlZFJlcXVlc3QSHAoUY29udmVyc2F0aW9uX3NlZWRfaWQYASABKAkSFQoNcmVzcG9uc2VfdGV4dBgCIAEoCRIdChVzZWxlY3RlZF9wcm9wb3NhbF9pZHMYAyADKAkSHAoUY2xhcmlmeWluZ19xdWVzdGlvbnMYBCADKAkSLAoGc3RhdHVzGAUgASgOMhwucml2ZXIuQ29uY2llcmdlRmluaXNoU3RhdHVzIiAKHkZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXNwb25zZSIoChZHZXRFbnRpdGxlbWVudHNSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCKmAQoXR2V0RW50aXRsZW1lbnRzUmVzcG9uc2USGAoQY2FuX3NldF9wcm9tb3RlZBgBIAEoCBIYChBjYW5fc2V0X3ZlcmlmaWVkGAIgASgIEhYKDmNhbl9zZXRfYWN0aXZlGAMgASgIEhsKE2Nhbl91cGRhdGVfbWV0YWRhdGEYBCABKAgSEAoIaXNfb3duZXIYBSABKAgSEAoIaXNfYWRtaW4YBiABKAgqqQEKE0ZvcndhcmRTZXR0aW5nVmFsdWUSHwobRk9SV0FSRF9TRVRUSU5HX1VOU1BFQ0lGSUVEEAASIAocRk9SV0FSRF9TRVRUSU5HX0FMTF9NRVNTQUdFUxABEi4KKkZPUldBUkRfU0VUVElOR19NRU5USU9OU19SRVBMSUVTX1JFQUNUSU9OUxACEh8KG0ZPUldBUkRfU0VUVElOR19OT19NRVNTQUdFUxADKkoKDFN1cHBvcnRlZEFwaRIdChlTVVBQT1JURURfQVBJX1VOU1BFQ0lGSUVEEAASGwoXU1VQUE9SVEVEX0FQSV9QT1NJVElPTlMQASpoCgxQb3NpdGlvblR5cGUSHQoZUE9TSVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEhsKF1BPU0lUSU9OX1RZUEVfUEVSUEVUVUFMEAESHAoYUE9TSVRJT05fVFlQRV9QUkVESUNUSU9OEAIqigEKFUNvbmNpZXJnZUZpbmlzaFN0YXR1cxInCiNDT05DSUVSR0VfRklOSVNIX1NUQVRVU19VTlNQRUNJRklFRBAAEiMKH0NPTkNJRVJHRV9GSU5JU0hfU1RBVFVTX1NVQ0NFU1MQARIjCh9DT05DSUVSR0VfRklOSVNIX1NUQVRVU19GQUlMVVJFEAIyqxoKEkFwcFJlZ2lzdHJ5U2VydmljZRI7CghSZWdpc3RlchIWLnJpdmVyLlJlZ2lzdGVyUmVxdWVzdBoXLnJpdmVyLlJlZ2lzdGVyUmVzcG9uc2USUAoPUmVnaXN0ZXJXZWJob29rEh0ucml2ZXIuUmVnaXN0ZXJXZWJob29rUmVxdWVzdBoeLnJpdmVyLlJlZ2lzdGVyV2ViaG9va1Jlc3BvbnNlEj4KCUdldFN0YXR1cxIXLnJpdmVyLkdldFN0YXR1c1JlcXVlc3QaGC5yaXZlci5HZXRTdGF0dXNSZXNwb25zZRJNCg5TZXRBcHBTZXR0aW5ncxIcLnJpdmVyLlNldEFwcFNldHRpbmdzUmVxdWVzdBodLnJpdmVyLlNldEFwcFNldHRpbmdzUmVzcG9uc2USVgoRVXBkYXRlQXBwU2V0dGluZ3MSHy5yaXZlci5VcGRhdGVBcHBTZXR0aW5nc1JlcXVlc3QaIC5yaXZlci5VcGRhdGVBcHBTZXR0aW5nc1Jlc3BvbnNlEk0KDkdldEFwcFNldHRpbmdzEhwucml2ZXIuR2V0QXBwU2V0dGluZ3NSZXF1ZXN0Gh0ucml2ZXIuR2V0QXBwU2V0dGluZ3NSZXNwb25zZRJWChFVcGRhdGVBcHBNZXRhZGF0YRIfLnJpdmVyLlVwZGF0ZUFwcE1ldGFkYXRhUmVxdWVzdBogLnJpdmVyLlVwZGF0ZUFwcE1ldGFkYXRhUmVzcG9uc2USTQoOR2V0QXBwTWV0YWRhdGESHC5yaXZlci5HZXRBcHBNZXRhZGF0YVJlcXVlc3QaHS5yaXZlci5HZXRBcHBNZXRhZGF0YVJlc3BvbnNlEkcKDFJvdGF0ZVNlY3JldBIaLnJpdmVyLlJvdGF0ZVNlY3JldFJlcXVlc3QaGy5yaXZlci5Sb3RhdGVTZWNyZXRSZXNwb25zZRJBCgpHZXRTZXNzaW9uEhgucml2ZXIuR2V0U2Vzc2lvblJlcXVlc3QaGS5yaXZlci5HZXRTZXNzaW9uUmVzcG9uc2USUAoPVmFsaWRhdGVCb3ROYW1lEh0ucml2ZXIuVmFsaWRhdGVCb3ROYW1lUmVxdWVzdBoeLnJpdmVyLlZhbGlkYXRlQm90TmFtZVJlc3BvbnNlElkKElNldEFwcEFjdGl2ZVN0YXR1cxIgLnJpdmVyLlNldEFwcEFjdGl2ZVN0YXR1c1JlcXVlc3QaIS5yaXZlci5TZXRBcHBBY3RpdmVTdGF0dXNSZXNwb25zZRJfChRTZXRBcHBQcm9tb3RlZFN0YXR1cxIiLnJpdmVyLlNldEFwcFByb21vdGVkU3RhdHVzUmVxdWVzdBojLnJpdmVyLlNldEFwcFByb21vdGVkU3RhdHVzUmVzcG9uc2USXwoUU2V0QXBwVmVyaWZpZWRTdGF0dXMSIi5yaXZlci5TZXRBcHBWZXJpZmllZFN0YXR1c1JlcXVlc3QaIy5yaXZlci5TZXRBcHBWZXJpZmllZFN0YXR1c1Jlc3BvbnNlElAKD0dldEVudGl0bGVtZW50cxIdLnJpdmVyLkdldEVudGl0bGVtZW50c1JlcXVlc3QaHi5yaXZlci5HZXRFbnRpdGxlbWVudHNSZXNwb25zZRJECgtTZXRVc2VyTmFtZRIZLnJpdmVyLlNldFVzZXJOYW1lUmVxdWVzdBoaLnJpdmVyLlNldFVzZXJOYW1lUmVzcG9uc2USSgoNR2V0RW50aXR5TmFtZRIbLnJpdmVyLkdldEVudGl0eU5hbWVSZXF1ZXN0Ghwucml2ZXIuR2V0RW50aXR5TmFtZVJlc3BvbnNlElwKE0dldEJhdGNoRW50aXR5TmFtZXMSIS5yaXZlci5HZXRCYXRjaEVudGl0eU5hbWVzUmVxdWVzdBoiLnJpdmVyLkdldEJhdGNoRW50aXR5TmFtZXNSZXNwb25zZRJTChBDcmVhdGVJbnZpdGVMaW5rEh4ucml2ZXIuQ3JlYXRlSW52aXRlTGlua1JlcXVlc3QaHy5yaXZlci5DcmVhdGVJbnZpdGVMaW5rUmVzcG9uc2USUwoQUmV2b2tlSW52aXRlTGluaxIeLnJpdmVyLlJldm9rZUludml0ZUxpbmtSZXF1ZXN0Gh8ucml2ZXIuUmV2b2tlSW52aXRlTGlua1Jlc3BvbnNlElMKEFJlZGVlbUludml0ZUxpbmsSHi5yaXZlci5SZWRlZW1JbnZpdGVMaW5rUmVxdWVzdBofLnJpdmVyLlJlZGVlbUludml0ZUxpbmtSZXNwb25zZRJKCg1HZXRJbnZpdGVMaW5rEhsucml2ZXIuR2V0SW52aXRlTGlua1JlcXVlc3QaHC5yaXZlci5HZXRJbnZpdGVMaW5rUmVzcG9uc2USWQoSTGlzdFJlZ2lzdGVyZWRBcHBzEiAucml2ZXIuTGlzdFJlZ2lzdGVyZWRBcHBzUmVxdWVzdBohLnJpdmVyLkxpc3RSZWdpc3RlcmVkQXBwc1Jlc3BvbnNlEk0KDkdldEJ1bGtBcHBEYXRhEhwucml2ZXIuR2V0QnVsa0FwcERhdGFSZXF1ZXN0Gh0ucml2ZXIuR2V0QnVsa0FwcERhdGFSZXNwb25zZRJZChJHZXRBcHBJbnN0YWxsU3RhdHMSIC5yaXZlci5HZXRBcHBJbnN0YWxsU3RhdHNSZXF1ZXN0GiEucml2ZXIuR2V0QXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USZQoWR2V0QnVsa0FwcEluc3RhbGxTdGF0cxIkLnJpdmVyLkdldEJ1bGtBcHBJbnN0YWxsU3RhdHNSZXF1ZXN0GiUucml2ZXIuR2V0QnVsa0FwcEluc3RhbGxTdGF0c1Jlc3BvbnNlElAKD1N1Ym1pdEFwcFJldmlldxIdLnJpdmVyLlN1Ym1pdEFwcFJldmlld1JlcXVlc3QaHi5yaXZlci5TdWJtaXRBcHBSZXZpZXdSZXNwb25zZRJKCg1HZXRBcHBSZXZpZXdzEhsucml2ZXIuR2V0QXBwUmV2aWV3c1JlcXVlc3QaHC5yaXZlci5HZXRBcHBSZXZpZXdzUmVzcG9uc2USUAoPUmV2b2tlQXBwUmV2aWV3Eh0ucml2ZXIuUmV2b2tlQXBwUmV2aWV3UmVxdWVzdBoeLnJpdmVyLlJldm9rZUFwcFJldmlld1Jlc3BvbnNlElwKE0dldEFwcFJldmlld1N1bW1hcnkSIS5yaXZlci5HZXRBcHBSZXZpZXdTdW1tYXJ5UmVxdWVzdBoiLnJpdmVyLkdldEFwcFJldmlld1N1bW1hcnlSZXNwb25zZRJuChlHZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzEicucml2ZXIuR2V0QnVsa0FwcFJldmlld1N1bW1hcmllc1JlcXVlc3QaKC5yaXZlci5HZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVzcG9uc2USUAoPR2V0QXBwUG9zaXRpb25zEh0ucml2ZXIuR2V0QXBwUG9zaXRpb25zUmVxdWVzdBoeLnJpdmVyLkdldEFwcFBvc2l0aW9uc1Jlc3BvbnNlEl8KFEdldEJhdGNoQXBwUG9zaXRpb25zEiIucml2ZXIuR2V0QmF0Y2hBcHBQb3NpdGlvbnNSZXF1ZXN0GiMucml2ZXIuR2V0QmF0Y2hBcHBQb3NpdGlvbnNSZXNwb25zZRJrChhHZXRCdWxrQWdlbnRDYXBhYmlsaXRpZXMSJi5yaXZlci5HZXRCdWxrQWdlbnRDYXBhYmlsaXRpZXNSZXF1ZXN0Gicucml2ZXIuR2V0QnVsa0FnZW50Q2FwYWJpbGl0aWVzUmVzcG9uc2USYgoVR2V0QnVsa0FnZW50UHJvcG9zYWxzEiMucml2ZXIuR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVxdWVzdBokLnJpdmVyLkdldEJ1bGtBZ2VudFByb3Bvc2Fsc1Jlc3BvbnNlEk0KDlF1ZXJ5Q29uY2llcmdlEhwucml2ZXIuUXVlcnlDb25jaWVyZ2VSZXF1ZXN0Gh0ucml2ZXIuUXVlcnlDb25jaWVyZ2VSZXNwb25zZRJcChNHZXRDb252ZXJzYXRpb25TZWVkEiEucml2ZXIuR2V0Q29udmVyc2F0aW9uU2VlZFJlcXVlc3QaIi5yaXZlci5HZXRDb252ZXJzYXRpb25TZWVkUmVzcG9uc2USXwoUU3VibWl0QWdlbnRQcm9wb3NhbHMSIi5yaXZlci5TdWJtaXRBZ2VudFByb3Bvc2Fsc1JlcXVlc3QaIy5yaXZlci5TdWJtaXRBZ2VudFByb3Bvc2Fsc1Jlc3BvbnNlEmUKFkZpbmlzaENvbnZlcnNhdGlvblNlZWQSJC5yaXZlci5GaW5pc2hDb252ZXJzYXRpb25TZWVkUmVxdWVzdBolLnJpdmVyLkZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXNwb25zZUI0WjJnaXRodWIuY29tL3Rvd25zLXByb3RvY29sL3Rvd25zL2NvcmUvbm9kZS9wcm90b2NvbGIGcHJvdG8z", [import_wkt3.file_google_protobuf_empty, file_payloads, file_protocol]);
7780
+ var file_apps = /* @__PURE__ */ (0, import_codegenv23.fileDesc)("CgphcHBzLnByb3RvEgVyaXZlciKFAQoLQXBwU2V0dGluZ3MSMwoPZm9yd2FyZF9zZXR0aW5nGAEgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZRIUCgh0cmFkYWJsZRgCIAEoCEICGAESKwoOc3VwcG9ydGVkX2FwaXMYAyADKA4yEy5yaXZlci5TdXBwb3J0ZWRBcGkigwEKD1JlZ2lzdGVyUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSFAoMYXBwX293bmVyX2lkGAIgASgMEiQKCHNldHRpbmdzGAMgASgLMhIucml2ZXIuQXBwU2V0dGluZ3MSJAoIbWV0YWRhdGEYBCABKAsyEi5yaXZlci5BcHBNZXRhZGF0YSIvChBSZWdpc3RlclJlc3BvbnNlEhsKE2hzMjU2X3NoYXJlZF9zZWNyZXQYASABKAwiPQoWUmVnaXN0ZXJXZWJob29rUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSEwoLd2ViaG9va191cmwYAiABKAkiGQoXUmVnaXN0ZXJXZWJob29rUmVzcG9uc2UiTQoVU2V0QXBwU2V0dGluZ3NSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDBIkCghzZXR0aW5ncxgCIAEoCzISLnJpdmVyLkFwcFNldHRpbmdzIhgKFlNldEFwcFNldHRpbmdzUmVzcG9uc2UiugEKGFVwZGF0ZUFwcFNldHRpbmdzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSOAoPZm9yd2FyZF9zZXR0aW5nGAIgASgOMhoucml2ZXIuRm9yd2FyZFNldHRpbmdWYWx1ZUgAiAEBEisKDnN1cHBvcnRlZF9hcGlzGAMgAygOMhMucml2ZXIuU3VwcG9ydGVkQXBpEhMKC3VwZGF0ZV9tYXNrGAQgAygJQhIKEF9mb3J3YXJkX3NldHRpbmciGwoZVXBkYXRlQXBwU2V0dGluZ3NSZXNwb25zZSInChVHZXRBcHBTZXR0aW5nc1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMImgKFkdldEFwcFNldHRpbmdzUmVzcG9uc2USJAoIc2V0dGluZ3MYASABKAsyEi5yaXZlci5BcHBTZXR0aW5ncxIYCgt3ZWJob29rX3VybBgCIAEoCUgAiAEBQg4KDF93ZWJob29rX3VybCIlChNSb3RhdGVTZWNyZXRSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCIzChRSb3RhdGVTZWNyZXRSZXNwb25zZRIbChNoczI1Nl9zaGFyZWRfc2VjcmV0GAEgASgMIiIKEEdldFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIowBChFHZXRTdGF0dXNSZXNwb25zZRIVCg1pc19yZWdpc3RlcmVkGAEgASgIEhYKDnZhbGlkX3Jlc3BvbnNlGAIgASgIEjgKBnN0YXR1cxgDIAEoCzIoLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5TdGF0dXNSZXNwb25zZRIOCgZhY3RpdmUYBCABKAgiXAoRR2V0U2Vzc2lvblJlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhQKCnNlc3Npb25faWQYAiABKAlIABITCglzdHJlYW1faWQYAyABKAxIAEIMCgppZGVudGlmaWVyIkgKEkdldFNlc3Npb25SZXNwb25zZRIyChlncm91cF9lbmNyeXB0aW9uX3Nlc3Npb25zGAEgASgLMg8ucml2ZXIuRW52ZWxvcGUiugIKDEV2ZW50UGF5bG9hZBIwCghtZXNzYWdlcxgBIAEoCzIcLnJpdmVyLkV2ZW50UGF5bG9hZC5NZXNzYWdlc0gAEjcKDHNvbGljaXRhdGlvbhgCIAEoCzIfLnJpdmVyLkV2ZW50UGF5bG9hZC5Tb2xpY2l0S2V5c0gAGn0KCE1lc3NhZ2VzEhEKCXN0cmVhbV9pZBgBIAEoDBIhCghtZXNzYWdlcxgCIAMoCzIPLnJpdmVyLkVudmVsb3BlEjsKImdyb3VwX2VuY3J5cHRpb25fc2Vzc2lvbnNfbWVzc2FnZXMYAyADKAsyDy5yaXZlci5FbnZlbG9wZRo1CgtTb2xpY2l0S2V5cxIRCglzdHJlYW1faWQYASABKAwSEwoLc2Vzc2lvbl9pZHMYAiADKAlCCQoHcGF5bG9hZCI0Cg1FdmVudHNQYXlsb2FkEiMKBmV2ZW50cxgBIAMoCzITLnJpdmVyLkV2ZW50UGF5bG9hZCKECAoRQXBwU2VydmljZVJlcXVlc3QSLAoKaW5pdGlhbGl6ZRhlIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEigKBnN0YXR1cxhmIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEiYKBmV2ZW50cxhnIAEoCzIULnJpdmVyLkV2ZW50c1BheWxvYWRIABIsCglwb3NpdGlvbnMYaCABKAsyFy5yaXZlci5Qb3NpdGlvbnNSZXF1ZXN0SAASPgoJcHJvcG9zYWxzGGkgASgLMikucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuUHJvcG9zYWxzUmVxdWVzdEgAEkYKEWNvbmNpZXJnZV9yZXF1ZXN0GGogASgLMikucml2ZXIuQXBwU2VydmljZVJlcXVlc3QuQ29uY2llcmdlUmVxdWVzdEgAGvQCChBQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhIKCnVzZXJfcXVlcnkYAiABKAkSFAoHY29udGV4dBgDIAEoCUgAiAEBEjoKC2ludm9jYXRpb25zGAQgAygLMiUucml2ZXIuU3BlY2lhbGlzdENhcGFiaWxpdHlJbnZvY2F0aW9uEhcKCnRpbWVvdXRfbXMYBSABKAVIAYgBARIaCg11c2VyX3RpbWV6b25lGAYgASgJSAKIAQESSQoIbWV0YWRhdGEYByADKAsyNy5yaXZlci5BcHBTZXJ2aWNlUmVxdWVzdC5Qcm9wb3NhbHNSZXF1ZXN0Lk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgoKCF9jb250ZXh0Qg0KC190aW1lb3V0X21zQhAKDl91c2VyX3RpbWV6b25lGrYCChBDb25jaWVyZ2VSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEhIKCnVzZXJfcXVlcnkYAiABKAkSFAoHY29udGV4dBgDIAEoCUgAiAEBEhkKDGV4dGVybmFsX3JlZhgEIAEoCUgBiAEBEiAKE3Byb3Bvc2FsX3RpbWVvdXRfbXMYBSABKANIAogBARIhChRjb25jaWVyZ2VfdGltZW91dF9tcxgGIAEoA0gDiAEBEhoKDXVzZXJfdGltZXpvbmUYByABKAlIBIgBAUIKCghfY29udGV4dEIPCg1fZXh0ZXJuYWxfcmVmQhYKFF9wcm9wb3NhbF90aW1lb3V0X21zQhcKFV9jb25jaWVyZ2VfdGltZW91dF9tc0IQCg5fdXNlcl90aW1lem9uZUIJCgdwYXlsb2FkIo8FChJBcHBTZXJ2aWNlUmVzcG9uc2USQgoKaW5pdGlhbGl6ZRhlIAEoCzIsLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5Jbml0aWFsaXplUmVzcG9uc2VIABI6CgZzdGF0dXMYZiABKAsyKC5yaXZlci5BcHBTZXJ2aWNlUmVzcG9uc2UuU3RhdHVzUmVzcG9uc2VIABItCglwb3NpdGlvbnMYZyABKAsyGC5yaXZlci5Qb3NpdGlvbnNSZXNwb25zZUgAEkAKCXByb3Bvc2FscxhoIAEoCzIrLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5Qcm9wb3NhbHNSZXNwb25zZUgAEkkKEmNvbmNpZXJnZV9yZXNwb25zZRhpIAEoCzIrLnJpdmVyLkFwcFNlcnZpY2VSZXNwb25zZS5Db25jaWVyZ2VSZXNwb25zZUgAGlwKEkluaXRpYWxpemVSZXNwb25zZRJGChFlbmNyeXB0aW9uX2RldmljZRgBIAEoCzIrLnJpdmVyLlVzZXJNZXRhZGF0YVBheWxvYWQuRW5jcnlwdGlvbkRldmljZRqFAQoOU3RhdHVzUmVzcG9uc2USGQoRZnJhbWV3b3JrX3ZlcnNpb24YASABKAUSEgoKZGV2aWNlX2tleRgCIAEoCRIUCgxmYWxsYmFja19rZXkYAyABKAkSGwoOY2xpZW50X3ZlcnNpb24YBCABKAlIAIgBAUIRCg9fY2xpZW50X3ZlcnNpb24aJQoRUHJvcG9zYWxzUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAgaJQoRQ29uY2llcmdlUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAhCCQoHcGF5bG9hZCLwAQoIUG9zaXRpb24SDQoFbGFiZWwYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIOCgZzeW1ib2wYAyABKAkSIQoEdHlwZRgEIAEoDjITLnJpdmVyLlBvc2l0aW9uVHlwZRITCgtiYWxhbmNlX3VzZBgFIAEoCRIPCgdwbmxfdXNkGAYgASgJEhUKCGNoYWluX2lkGAcgASgESAGIAQESGwoObmF0aXZlX2JhbGFuY2UYCCABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCwoJX2NoYWluX2lkQhEKD19uYXRpdmVfYmFsYW5jZSIjChBQb3NpdGlvbnNSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAwiewoRUG9zaXRpb25zUmVzcG9uc2USEQoJc3VwcG9ydGVkGAEgASgIEhIKBWVycm9yGAIgASgJSACIAQESIgoJcG9zaXRpb25zGAMgAygLMg8ucml2ZXIuUG9zaXRpb24SEQoJdGltZXN0YW1wGAQgASgDQggKBl9lcnJvciIxCgxTbGFzaENvbW1hbmQSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCSI7ChFDYXBhYmlsaXR5RXhhbXBsZRISCgp1c2VyX3F1ZXJ5GAEgASgJEhIKCnBhcmFtZXRlcnMYAiABKAkicQoKQ2FwYWJpbGl0eRIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhQKDGlucHV0X3NjaGVtYRgDIAEoCRIqCghleGFtcGxlcxgEIAMoCzIYLnJpdmVyLkNhcGFiaWxpdHlFeGFtcGxlIo8BChJDYXBhYmlsaXR5TWFuaWZlc3QSEAoIYWdlbnRfaWQYASABKAwSEgoKYWdlbnRfbmFtZRgCIAEoCRIZChFhZ2VudF9kZXNjcmlwdGlvbhgDIAEoCRInCgxjYXBhYmlsaXRpZXMYBCADKAsyES5yaXZlci5DYXBhYmlsaXR5Eg8KB3ZlcnNpb24YBSABKAkigAIKC0FwcE1ldGFkYXRhEhAKCHVzZXJuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhEKCWltYWdlX3VybBgDIAEoCRIZCgxleHRlcm5hbF91cmwYBCABKAlIAIgBARIrCg5zbGFzaF9jb21tYW5kcxgGIAMoCzITLnJpdmVyLlNsYXNoQ29tbWFuZBIUCgxkaXNwbGF5X25hbWUYByABKAkSDQoFbW90dG8YCCABKAkSJwoMY2FwYWJpbGl0aWVzGAkgAygLMhEucml2ZXIuQ2FwYWJpbGl0eUIPCg1fZXh0ZXJuYWxfdXJsSgQIBRAGUgphdmF0YXJfdXJsIuUCChFBcHBNZXRhZGF0YVVwZGF0ZRIVCgh1c2VybmFtZRgBIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAIgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAMgASgJSAKIAQESGQoMZXh0ZXJuYWxfdXJsGAQgASgJSAOIAQESKwoOc2xhc2hfY29tbWFuZHMYBiADKAsyEy5yaXZlci5TbGFzaENvbW1hbmQSGQoMZGlzcGxheV9uYW1lGAcgASgJSASIAQESEgoFbW90dG8YCCABKAlIBYgBARInCgxjYXBhYmlsaXRpZXMYCSADKAsyES5yaXZlci5DYXBhYmlsaXR5QgsKCV91c2VybmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX2ltYWdlX3VybEIPCg1fZXh0ZXJuYWxfdXJsQg8KDV9kaXNwbGF5X25hbWVCCAoGX21vdHRvSgQIBRAGUgphdmF0YXJfdXJsImsKGFVwZGF0ZUFwcE1ldGFkYXRhUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSKgoIbWV0YWRhdGEYAiABKAsyGC5yaXZlci5BcHBNZXRhZGF0YVVwZGF0ZRITCgt1cGRhdGVfbWFzaxgDIAMoCSIbChlVcGRhdGVBcHBNZXRhZGF0YVJlc3BvbnNlIicKFUdldEFwcE1ldGFkYXRhUmVxdWVzdBIOCgZhcHBfaWQYASABKAwiPgoWR2V0QXBwTWV0YWRhdGFSZXNwb25zZRIkCghtZXRhZGF0YRgBIAEoCzISLnJpdmVyLkFwcE1ldGFkYXRhIioKFlZhbGlkYXRlQm90TmFtZVJlcXVlc3QSEAoIdXNlcm5hbWUYASABKAkiRgoXVmFsaWRhdGVCb3ROYW1lUmVzcG9uc2USFAoMaXNfYXZhaWxhYmxlGAEgASgIEhUKDWVycm9yX21lc3NhZ2UYAiABKAkiOwoZU2V0QXBwQWN0aXZlU3RhdHVzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSDgoGYWN0aXZlGAIgASgIIhwKGlNldEFwcEFjdGl2ZVN0YXR1c1Jlc3BvbnNlIj8KG1NldEFwcFByb21vdGVkU3RhdHVzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSEAoIcHJvbW90ZWQYAiABKAgiHgocU2V0QXBwUHJvbW90ZWRTdGF0dXNSZXNwb25zZSI/ChtTZXRBcHBWZXJpZmllZFN0YXR1c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMEhAKCHZlcmlmaWVkGAIgASgIIh4KHFNldEFwcFZlcmlmaWVkU3RhdHVzUmVzcG9uc2UiPAoSU2V0VXNlck5hbWVSZXF1ZXN0EhAKCHVzZXJuYW1lGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSIVChNTZXRVc2VyTmFtZVJlc3BvbnNlIikKFEdldEVudGl0eU5hbWVSZXF1ZXN0EhEKCWVudGl0eV9pZBgBIAEoDCJUChVHZXRFbnRpdHlOYW1lUmVzcG9uc2USEAoIdXNlcm5hbWUYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEhMKC2VudGl0eV90eXBlGAMgASgFIjAKGkdldEJhdGNoRW50aXR5TmFtZXNSZXF1ZXN0EhIKCmVudGl0eV9pZHMYASADKAwiYAoORW50aXR5TmFtZUluZm8SEQoJZW50aXR5X2lkGAEgASgMEhAKCHVzZXJuYW1lGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRITCgtlbnRpdHlfdHlwZRgEIAEoBSJGChtHZXRCYXRjaEVudGl0eU5hbWVzUmVzcG9uc2USJwoIZW50aXRpZXMYASADKAsyFS5yaXZlci5FbnRpdHlOYW1lSW5mbyJCChdJbnZpdGVFbmNyeXB0aW9uU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgJEhMKC3Nlc3Npb25fa2V5GAIgASgJIm4KFEludml0ZUVuY3J5cHRpb25EYXRhEhEKCXN0cmVhbV9pZBgBIAEoDBIRCglhbGdvcml0aG0YAiABKAkSMAoIc2Vzc2lvbnMYAyADKAsyHi5yaXZlci5JbnZpdGVFbmNyeXB0aW9uU2Vzc2lvbiK7AQoXQ3JlYXRlSW52aXRlTGlua1JlcXVlc3QSEQoJc3RyZWFtX2lkGAEgASgMEjsKFmludml0ZV9lbmNyeXB0aW9uX2RhdGEYAiABKAsyGy5yaXZlci5JbnZpdGVFbmNyeXB0aW9uRGF0YRI5ChJjaGFubmVsX3Byb3BlcnRpZXMYAyABKAsyGC5yaXZlci5DaGFubmVsUHJvcGVydGllc0gAiAEBQhUKE19jaGFubmVsX3Byb3BlcnRpZXMiLwoYQ3JlYXRlSW52aXRlTGlua1Jlc3BvbnNlEhMKC2ludml0ZV9jb2RlGAEgASgJIiwKF1Jldm9rZUludml0ZUxpbmtSZXF1ZXN0EhEKCXN0cmVhbV9pZBgBIAEoDCIaChhSZXZva2VJbnZpdGVMaW5rUmVzcG9uc2UiLgoXUmVkZWVtSW52aXRlTGlua1JlcXVlc3QSEwoLaW52aXRlX2NvZGUYASABKAki3QEKGFJlZGVlbUludml0ZUxpbmtSZXNwb25zZRIyCg5zaWduZWRfcGF5bG9hZBgBIAEoCzIaLnJpdmVyLkludml0ZVNpZ25lZFBheWxvYWQSOwoWaW52aXRlX2VuY3J5cHRpb25fZGF0YRgCIAEoCzIbLnJpdmVyLkludml0ZUVuY3J5cHRpb25EYXRhEjkKEmNoYW5uZWxfcHJvcGVydGllcxgDIAEoCzIYLnJpdmVyLkNoYW5uZWxQcm9wZXJ0aWVzSACIAQFCFQoTX2NoYW5uZWxfcHJvcGVydGllcyIpChRHZXRJbnZpdGVMaW5rUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAwiewoVR2V0SW52aXRlTGlua1Jlc3BvbnNlEhgKC2ludml0ZV9jb2RlGAEgASgJSACIAQESIAoTY3JlYXRlZF9hdF9lcG9jaF9tcxgCIAEoA0gBiAEBQg4KDF9pbnZpdGVfY29kZUIWChRfY3JlYXRlZF9hdF9lcG9jaF9tcyI4Cg9BcHBJbnN0YWxsU3RhdHMSDgoGYXBwX2lkGAEgASgMEhUKDWluc3RhbGxfY291bnQYAiABKAUijQEKCUFwcFJldmlldxIKCgJpZBgBIAEoCRIOCgZhcHBfaWQYAiABKAwSGAoQcmV2aWV3ZXJfYWRkcmVzcxgDIAEoDBIOCgZyYXRpbmcYBCABKAUSDwoHY29tbWVudBgFIAEoCRIVCg1jcmVhdGVkX2F0X21zGAYgASgDEhIKCmlzX3Jldm9rZWQYByABKAgiaQoQQXBwUmV2aWV3U3VtbWFyeRIOCgZhcHBfaWQYASABKAwSFQoNdG90YWxfcmV2aWV3cxgCIAEoBRIWCg5hY3RpdmVfcmV2aWV3cxgDIAEoBRIWCg5hdmVyYWdlX3JhdGluZxgEIAEoAiLvAQoLQXBwSW5mb0Z1bGwSDgoGYXBwX2lkGAEgASgMEg0KBW93bmVyGAIgASgMEiQKCG1ldGFkYXRhGAMgASgLMhIucml2ZXIuQXBwTWV0YWRhdGESLQoNaW5zdGFsbF9zdGF0cxgEIAEoCzIWLnJpdmVyLkFwcEluc3RhbGxTdGF0cxIvCg5yZXZpZXdfc3VtbWFyeRgFIAEoCzIXLnJpdmVyLkFwcFJldmlld1N1bW1hcnkSEQoJaXNfYWN0aXZlGAYgASgIEhMKC2lzX3Byb21vdGVkGAcgASgIEhMKC2lzX3ZlcmlmaWVkGAggASgIIuYBChlMaXN0UmVnaXN0ZXJlZEFwcHNSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFEg4KBm9mZnNldBgCIAEoBRITCgthY3RpdmVfb25seRgDIAEoCBIaCg1vd25lcl9hZGRyZXNzGAQgASgMSACIAQESFgoJc3RyZWFtX2lkGAUgASgMSAGIAQESFQoNcHJvbW90ZWRfb25seRgGIAEoCBIZCgxzZWFyY2hfcXVlcnkYByABKAlIAogBAUIQCg5fb3duZXJfYWRkcmVzc0IMCgpfc3RyZWFtX2lkQg8KDV9zZWFyY2hfcXVlcnkiUwoaTGlzdFJlZ2lzdGVyZWRBcHBzUmVzcG9uc2USIAoEYXBwcxgBIAMoCzISLnJpdmVyLkFwcEluZm9GdWxsEhMKC3RvdGFsX2NvdW50GAIgASgFIigKFUdldEJ1bGtBcHBEYXRhUmVxdWVzdBIPCgdhcHBfaWRzGAEgAygMIjoKFkdldEJ1bGtBcHBEYXRhUmVzcG9uc2USIAoEYXBwcxgBIAMoCzISLnJpdmVyLkFwcEluZm9GdWxsIisKGUdldEFwcEluc3RhbGxTdGF0c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIkMKGkdldEFwcEluc3RhbGxTdGF0c1Jlc3BvbnNlEiUKBXN0YXRzGAEgASgLMhYucml2ZXIuQXBwSW5zdGFsbFN0YXRzIjAKHUdldEJ1bGtBcHBJbnN0YWxsU3RhdHNSZXF1ZXN0Eg8KB2FwcF9pZHMYASADKAwiRwoeR2V0QnVsa0FwcEluc3RhbGxTdGF0c1Jlc3BvbnNlEiUKBXN0YXRzGAEgAygLMhYucml2ZXIuQXBwSW5zdGFsbFN0YXRzIkkKFlN1Ym1pdEFwcFJldmlld1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMEg4KBnJhdGluZxgCIAEoBRIPCgdjb21tZW50GAMgASgJIiwKF1N1Ym1pdEFwcFJldmlld1Jlc3BvbnNlEhEKCXJldmlld19pZBgBIAEoCSJFChRHZXRBcHBSZXZpZXdzUmVxdWVzdBIOCgZhcHBfaWQYASABKAwSDQoFbGltaXQYAiABKAUSDgoGb2Zmc2V0GAMgASgFIk8KFUdldEFwcFJldmlld3NSZXNwb25zZRIhCgdyZXZpZXdzGAEgAygLMhAucml2ZXIuQXBwUmV2aWV3EhMKC3RvdGFsX2NvdW50GAIgASgFIigKFlJldm9rZUFwcFJldmlld1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIhkKF1Jldm9rZUFwcFJldmlld1Jlc3BvbnNlIiwKGkdldEFwcFJldmlld1N1bW1hcnlSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCJHChtHZXRBcHBSZXZpZXdTdW1tYXJ5UmVzcG9uc2USKAoHc3VtbWFyeRgBIAEoCzIXLnJpdmVyLkFwcFJldmlld1N1bW1hcnkiMwogR2V0QnVsa0FwcFJldmlld1N1bW1hcmllc1JlcXVlc3QSDwoHYXBwX2lkcxgBIAMoDCJPCiFHZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVzcG9uc2USKgoJc3VtbWFyaWVzGAEgAygLMhcucml2ZXIuQXBwUmV2aWV3U3VtbWFyeSIoChZHZXRBcHBQb3NpdGlvbnNSZXF1ZXN0Eg4KBmFwcF9pZBgBIAEoDCJWChdHZXRBcHBQb3NpdGlvbnNSZXNwb25zZRIOCgZhcHBfaWQYASABKAwSKwoJcG9zaXRpb25zGAIgASgLMhgucml2ZXIuUG9zaXRpb25zUmVzcG9uc2UiLgobR2V0QmF0Y2hBcHBQb3NpdGlvbnNSZXF1ZXN0Eg8KB2FwcF9pZHMYASADKAwiSQocR2V0QmF0Y2hBcHBQb3NpdGlvbnNSZXNwb25zZRIpCgdlbnRyaWVzGAEgAygLMhgucml2ZXIuQXBwUG9zaXRpb25zRW50cnkibgoRQXBwUG9zaXRpb25zRW50cnkSDgoGYXBwX2lkGAEgASgMEisKCXBvc2l0aW9ucxgCIAEoCzIYLnJpdmVyLlBvc2l0aW9uc1Jlc3BvbnNlEhIKBWVycm9yGAMgASgJSACIAQFCCAoGX2Vycm9yIjQKH0dldEJ1bGtBZ2VudENhcGFiaWxpdGllc1JlcXVlc3QSEQoJYWdlbnRfaWRzGAEgAygMIlAKIEdldEJ1bGtBZ2VudENhcGFiaWxpdGllc1Jlc3BvbnNlEiwKCW1hbmlmZXN0cxgBIAMoCzIZLnJpdmVyLkNhcGFiaWxpdHlNYW5pZmVzdCLBAgocR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVxdWVzdBIcChRjb252ZXJzYXRpb25fc2VlZF9pZBgBIAEoCRI3CghyZXF1ZXN0cxgCIAMoCzIlLnJpdmVyLlNwZWNpYWxpc3RDYXBhYmlsaXR5SW52b2NhdGlvbhIXCgp0aW1lb3V0X21zGAMgASgFSACIAQESGgoNdXNlcl90aW1lem9uZRgEIAEoCUgBiAEBEkMKCG1ldGFkYXRhGAUgAygLMjEucml2ZXIuR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUINCgtfdGltZW91dF9tc0IQCg5fdXNlcl90aW1lem9uZSIxCh1HZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCCKgAQoVUXVlcnlDb25jaWVyZ2VSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhMKBnNvdXJjZRgCIAEoCUgAiAEBEhkKDGV4dGVybmFsX3JlZhgDIAEoCUgBiAEBEhoKDXVzZXJfdGltZXpvbmUYBCABKAlIAogBAUIJCgdfc291cmNlQg8KDV9leHRlcm5hbF9yZWZCEAoOX3VzZXJfdGltZXpvbmUiNgoWUXVlcnlDb25jaWVyZ2VSZXNwb25zZRIcChRjb252ZXJzYXRpb25fc2VlZF9pZBgBIAEoCSItChpHZXRDb252ZXJzYXRpb25TZWVkUmVxdWVzdBIPCgdzZWVkX2lkGAEgASgJIqMBChtHZXRDb252ZXJzYXRpb25TZWVkUmVzcG9uc2USJQoEc2VlZBgBIAEoCzIXLnJpdmVyLkNvbnZlcnNhdGlvblNlZWQSLQoGc3RhdHVzGAIgASgOMh0ucml2ZXIuQ29udmVyc2F0aW9uU2VlZFN0YXR1cxIuCg9wcm9wb3NhbF9zdGF0dXMYAyABKA4yFS5yaXZlci5Qcm9wb3NhbFN0YXR1cyKKAQobU3VibWl0QWdlbnRQcm9wb3NhbHNSZXF1ZXN0EhwKFGNvbnZlcnNhdGlvbl9zZWVkX2lkGAEgASgJEiIKCXByb3Bvc2FscxgCIAMoCzIPLnJpdmVyLlByb3Bvc2FsEikKBmVycm9ycxgDIAMoCzIZLnJpdmVyLkFnZW50UHJvcG9zYWxFcnJvciIeChxTdWJtaXRBZ2VudFByb3Bvc2Fsc1Jlc3BvbnNlIr8BCh1GaW5pc2hDb252ZXJzYXRpb25TZWVkUmVxdWVzdBIcChRjb252ZXJzYXRpb25fc2VlZF9pZBgBIAEoCRIVCg1yZXNwb25zZV90ZXh0GAIgASgJEh0KFXNlbGVjdGVkX3Byb3Bvc2FsX2lkcxgDIAMoCRIcChRjbGFyaWZ5aW5nX3F1ZXN0aW9ucxgEIAMoCRIsCgZzdGF0dXMYBSABKA4yHC5yaXZlci5Db25jaWVyZ2VGaW5pc2hTdGF0dXMiRwoeRmluaXNoQ29udmVyc2F0aW9uU2VlZFJlc3BvbnNlEiUKBHNlZWQYASABKAsyFy5yaXZlci5Db252ZXJzYXRpb25TZWVkIigKFkdldEVudGl0bGVtZW50c1JlcXVlc3QSDgoGYXBwX2lkGAEgASgMIqYBChdHZXRFbnRpdGxlbWVudHNSZXNwb25zZRIYChBjYW5fc2V0X3Byb21vdGVkGAEgASgIEhgKEGNhbl9zZXRfdmVyaWZpZWQYAiABKAgSFgoOY2FuX3NldF9hY3RpdmUYAyABKAgSGwoTY2FuX3VwZGF0ZV9tZXRhZGF0YRgEIAEoCBIQCghpc19vd25lchgFIAEoCBIQCghpc19hZG1pbhgGIAEoCCqpAQoTRm9yd2FyZFNldHRpbmdWYWx1ZRIfChtGT1JXQVJEX1NFVFRJTkdfVU5TUEVDSUZJRUQQABIgChxGT1JXQVJEX1NFVFRJTkdfQUxMX01FU1NBR0VTEAESLgoqRk9SV0FSRF9TRVRUSU5HX01FTlRJT05TX1JFUExJRVNfUkVBQ1RJT05TEAISHwobRk9SV0FSRF9TRVRUSU5HX05PX01FU1NBR0VTEAMqSgoMU3VwcG9ydGVkQXBpEh0KGVNVUFBPUlRFRF9BUElfVU5TUEVDSUZJRUQQABIbChdTVVBQT1JURURfQVBJX1BPU0lUSU9OUxABKmgKDFBvc2l0aW9uVHlwZRIdChlQT1NJVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASGwoXUE9TSVRJT05fVFlQRV9QRVJQRVRVQUwQARIcChhQT1NJVElPTl9UWVBFX1BSRURJQ1RJT04QAiqKAQoVQ29uY2llcmdlRmluaXNoU3RhdHVzEicKI0NPTkNJRVJHRV9GSU5JU0hfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQ09OQ0lFUkdFX0ZJTklTSF9TVEFUVVNfU1VDQ0VTUxABEiMKH0NPTkNJRVJHRV9GSU5JU0hfU1RBVFVTX0ZBSUxVUkUQAjKrGgoSQXBwUmVnaXN0cnlTZXJ2aWNlEjsKCFJlZ2lzdGVyEhYucml2ZXIuUmVnaXN0ZXJSZXF1ZXN0Ghcucml2ZXIuUmVnaXN0ZXJSZXNwb25zZRJQCg9SZWdpc3RlcldlYmhvb2sSHS5yaXZlci5SZWdpc3RlcldlYmhvb2tSZXF1ZXN0Gh4ucml2ZXIuUmVnaXN0ZXJXZWJob29rUmVzcG9uc2USPgoJR2V0U3RhdHVzEhcucml2ZXIuR2V0U3RhdHVzUmVxdWVzdBoYLnJpdmVyLkdldFN0YXR1c1Jlc3BvbnNlEk0KDlNldEFwcFNldHRpbmdzEhwucml2ZXIuU2V0QXBwU2V0dGluZ3NSZXF1ZXN0Gh0ucml2ZXIuU2V0QXBwU2V0dGluZ3NSZXNwb25zZRJWChFVcGRhdGVBcHBTZXR0aW5ncxIfLnJpdmVyLlVwZGF0ZUFwcFNldHRpbmdzUmVxdWVzdBogLnJpdmVyLlVwZGF0ZUFwcFNldHRpbmdzUmVzcG9uc2USTQoOR2V0QXBwU2V0dGluZ3MSHC5yaXZlci5HZXRBcHBTZXR0aW5nc1JlcXVlc3QaHS5yaXZlci5HZXRBcHBTZXR0aW5nc1Jlc3BvbnNlElYKEVVwZGF0ZUFwcE1ldGFkYXRhEh8ucml2ZXIuVXBkYXRlQXBwTWV0YWRhdGFSZXF1ZXN0GiAucml2ZXIuVXBkYXRlQXBwTWV0YWRhdGFSZXNwb25zZRJNCg5HZXRBcHBNZXRhZGF0YRIcLnJpdmVyLkdldEFwcE1ldGFkYXRhUmVxdWVzdBodLnJpdmVyLkdldEFwcE1ldGFkYXRhUmVzcG9uc2USRwoMUm90YXRlU2VjcmV0Ehoucml2ZXIuUm90YXRlU2VjcmV0UmVxdWVzdBobLnJpdmVyLlJvdGF0ZVNlY3JldFJlc3BvbnNlEkEKCkdldFNlc3Npb24SGC5yaXZlci5HZXRTZXNzaW9uUmVxdWVzdBoZLnJpdmVyLkdldFNlc3Npb25SZXNwb25zZRJQCg9WYWxpZGF0ZUJvdE5hbWUSHS5yaXZlci5WYWxpZGF0ZUJvdE5hbWVSZXF1ZXN0Gh4ucml2ZXIuVmFsaWRhdGVCb3ROYW1lUmVzcG9uc2USWQoSU2V0QXBwQWN0aXZlU3RhdHVzEiAucml2ZXIuU2V0QXBwQWN0aXZlU3RhdHVzUmVxdWVzdBohLnJpdmVyLlNldEFwcEFjdGl2ZVN0YXR1c1Jlc3BvbnNlEl8KFFNldEFwcFByb21vdGVkU3RhdHVzEiIucml2ZXIuU2V0QXBwUHJvbW90ZWRTdGF0dXNSZXF1ZXN0GiMucml2ZXIuU2V0QXBwUHJvbW90ZWRTdGF0dXNSZXNwb25zZRJfChRTZXRBcHBWZXJpZmllZFN0YXR1cxIiLnJpdmVyLlNldEFwcFZlcmlmaWVkU3RhdHVzUmVxdWVzdBojLnJpdmVyLlNldEFwcFZlcmlmaWVkU3RhdHVzUmVzcG9uc2USUAoPR2V0RW50aXRsZW1lbnRzEh0ucml2ZXIuR2V0RW50aXRsZW1lbnRzUmVxdWVzdBoeLnJpdmVyLkdldEVudGl0bGVtZW50c1Jlc3BvbnNlEkQKC1NldFVzZXJOYW1lEhkucml2ZXIuU2V0VXNlck5hbWVSZXF1ZXN0Ghoucml2ZXIuU2V0VXNlck5hbWVSZXNwb25zZRJKCg1HZXRFbnRpdHlOYW1lEhsucml2ZXIuR2V0RW50aXR5TmFtZVJlcXVlc3QaHC5yaXZlci5HZXRFbnRpdHlOYW1lUmVzcG9uc2USXAoTR2V0QmF0Y2hFbnRpdHlOYW1lcxIhLnJpdmVyLkdldEJhdGNoRW50aXR5TmFtZXNSZXF1ZXN0GiIucml2ZXIuR2V0QmF0Y2hFbnRpdHlOYW1lc1Jlc3BvbnNlElMKEENyZWF0ZUludml0ZUxpbmsSHi5yaXZlci5DcmVhdGVJbnZpdGVMaW5rUmVxdWVzdBofLnJpdmVyLkNyZWF0ZUludml0ZUxpbmtSZXNwb25zZRJTChBSZXZva2VJbnZpdGVMaW5rEh4ucml2ZXIuUmV2b2tlSW52aXRlTGlua1JlcXVlc3QaHy5yaXZlci5SZXZva2VJbnZpdGVMaW5rUmVzcG9uc2USUwoQUmVkZWVtSW52aXRlTGluaxIeLnJpdmVyLlJlZGVlbUludml0ZUxpbmtSZXF1ZXN0Gh8ucml2ZXIuUmVkZWVtSW52aXRlTGlua1Jlc3BvbnNlEkoKDUdldEludml0ZUxpbmsSGy5yaXZlci5HZXRJbnZpdGVMaW5rUmVxdWVzdBocLnJpdmVyLkdldEludml0ZUxpbmtSZXNwb25zZRJZChJMaXN0UmVnaXN0ZXJlZEFwcHMSIC5yaXZlci5MaXN0UmVnaXN0ZXJlZEFwcHNSZXF1ZXN0GiEucml2ZXIuTGlzdFJlZ2lzdGVyZWRBcHBzUmVzcG9uc2USTQoOR2V0QnVsa0FwcERhdGESHC5yaXZlci5HZXRCdWxrQXBwRGF0YVJlcXVlc3QaHS5yaXZlci5HZXRCdWxrQXBwRGF0YVJlc3BvbnNlElkKEkdldEFwcEluc3RhbGxTdGF0cxIgLnJpdmVyLkdldEFwcEluc3RhbGxTdGF0c1JlcXVlc3QaIS5yaXZlci5HZXRBcHBJbnN0YWxsU3RhdHNSZXNwb25zZRJlChZHZXRCdWxrQXBwSW5zdGFsbFN0YXRzEiQucml2ZXIuR2V0QnVsa0FwcEluc3RhbGxTdGF0c1JlcXVlc3QaJS5yaXZlci5HZXRCdWxrQXBwSW5zdGFsbFN0YXRzUmVzcG9uc2USUAoPU3VibWl0QXBwUmV2aWV3Eh0ucml2ZXIuU3VibWl0QXBwUmV2aWV3UmVxdWVzdBoeLnJpdmVyLlN1Ym1pdEFwcFJldmlld1Jlc3BvbnNlEkoKDUdldEFwcFJldmlld3MSGy5yaXZlci5HZXRBcHBSZXZpZXdzUmVxdWVzdBocLnJpdmVyLkdldEFwcFJldmlld3NSZXNwb25zZRJQCg9SZXZva2VBcHBSZXZpZXcSHS5yaXZlci5SZXZva2VBcHBSZXZpZXdSZXF1ZXN0Gh4ucml2ZXIuUmV2b2tlQXBwUmV2aWV3UmVzcG9uc2USXAoTR2V0QXBwUmV2aWV3U3VtbWFyeRIhLnJpdmVyLkdldEFwcFJldmlld1N1bW1hcnlSZXF1ZXN0GiIucml2ZXIuR2V0QXBwUmV2aWV3U3VtbWFyeVJlc3BvbnNlEm4KGUdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXMSJy5yaXZlci5HZXRCdWxrQXBwUmV2aWV3U3VtbWFyaWVzUmVxdWVzdBooLnJpdmVyLkdldEJ1bGtBcHBSZXZpZXdTdW1tYXJpZXNSZXNwb25zZRJQCg9HZXRBcHBQb3NpdGlvbnMSHS5yaXZlci5HZXRBcHBQb3NpdGlvbnNSZXF1ZXN0Gh4ucml2ZXIuR2V0QXBwUG9zaXRpb25zUmVzcG9uc2USXwoUR2V0QmF0Y2hBcHBQb3NpdGlvbnMSIi5yaXZlci5HZXRCYXRjaEFwcFBvc2l0aW9uc1JlcXVlc3QaIy5yaXZlci5HZXRCYXRjaEFwcFBvc2l0aW9uc1Jlc3BvbnNlEmsKGEdldEJ1bGtBZ2VudENhcGFiaWxpdGllcxImLnJpdmVyLkdldEJ1bGtBZ2VudENhcGFiaWxpdGllc1JlcXVlc3QaJy5yaXZlci5HZXRCdWxrQWdlbnRDYXBhYmlsaXRpZXNSZXNwb25zZRJiChVHZXRCdWxrQWdlbnRQcm9wb3NhbHMSIy5yaXZlci5HZXRCdWxrQWdlbnRQcm9wb3NhbHNSZXF1ZXN0GiQucml2ZXIuR2V0QnVsa0FnZW50UHJvcG9zYWxzUmVzcG9uc2USTQoOUXVlcnlDb25jaWVyZ2USHC5yaXZlci5RdWVyeUNvbmNpZXJnZVJlcXVlc3QaHS5yaXZlci5RdWVyeUNvbmNpZXJnZVJlc3BvbnNlElwKE0dldENvbnZlcnNhdGlvblNlZWQSIS5yaXZlci5HZXRDb252ZXJzYXRpb25TZWVkUmVxdWVzdBoiLnJpdmVyLkdldENvbnZlcnNhdGlvblNlZWRSZXNwb25zZRJfChRTdWJtaXRBZ2VudFByb3Bvc2FscxIiLnJpdmVyLlN1Ym1pdEFnZW50UHJvcG9zYWxzUmVxdWVzdBojLnJpdmVyLlN1Ym1pdEFnZW50UHJvcG9zYWxzUmVzcG9uc2USZQoWRmluaXNoQ29udmVyc2F0aW9uU2VlZBIkLnJpdmVyLkZpbmlzaENvbnZlcnNhdGlvblNlZWRSZXF1ZXN0GiUucml2ZXIuRmluaXNoQ29udmVyc2F0aW9uU2VlZFJlc3BvbnNlQjRaMmdpdGh1Yi5jb20vdG93bnMtcHJvdG9jb2wvdG93bnMvY29yZS9ub2RlL3Byb3RvY29sYgZwcm90bzM", [import_wkt3.file_google_protobuf_empty, file_payloads, file_protocol]);
7781
7781
  var ForwardSettingValue;
7782
7782
  (function(ForwardSettingValue2) {
7783
7783
  ForwardSettingValue2[ForwardSettingValue2["FORWARD_SETTING_UNSPECIFIED"] = 0] = "FORWARD_SETTING_UNSPECIFIED";
@@ -23782,7 +23782,13 @@ function getThreadParentId(content) {
23782
23782
  return void 0;
23783
23783
  }
23784
23784
  function getReplyParentId(content) {
23785
- return content?.kind === RiverTimelineEvent.ChannelMessage ? content.replyId : void 0;
23785
+ if (content?.kind === RiverTimelineEvent.ChannelMessage) {
23786
+ return content.replyId;
23787
+ }
23788
+ if (content?.kind === RiverTimelineEvent.ConversationSeedResponse) {
23789
+ return content.replyId;
23790
+ }
23791
+ return void 0;
23786
23792
  }
23787
23793
  function getReactionParentId(content) {
23788
23794
  return content?.kind === RiverTimelineEvent.Reaction ? content.targetEventId : void 0;
@@ -24362,7 +24368,8 @@ function toTownsContent_ChannelPayload_Message_Post(value, eventId, editsEventId
24362
24368
  kind: RiverTimelineEvent.ConversationSeedResponse,
24363
24369
  seedId: seedResponse.seedId,
24364
24370
  seed: seedResponse.seed,
24365
- response: seedResponse.response
24371
+ response: seedResponse.response,
24372
+ replyId: value.replyId
24366
24373
  }
24367
24374
  };
24368
24375
  }
@@ -26823,6 +26830,8 @@ var StreamStateView = class {
26823
26830
  streamsView;
26824
26831
  contentKind;
26825
26832
  minipoolEvents = /* @__PURE__ */ new Map();
26833
+ // Ephemeral events pending decryption — keyed by hashStr, cleaned up after decrypt
26834
+ ephemeralEvents = /* @__PURE__ */ new Map();
26826
26835
  prevMiniblockHash;
26827
26836
  prevMiniblockNum;
26828
26837
  lastEventNum = 0n;
@@ -26937,7 +26946,7 @@ var StreamStateView = class {
26937
26946
  const confirmed = [];
26938
26947
  for (const parsedEvent of minipoolEvents) {
26939
26948
  if (parsedEvent.ephemeral) {
26940
- this.processEphemeralEvent(parsedEvent, encryptionEmitter);
26949
+ this.processEphemeralEvent(parsedEvent, encryptionEmitter, stateEmitter);
26941
26950
  continue;
26942
26951
  }
26943
26952
  const existingEvent = this.minipoolEvents.get(parsedEvent.hashStr);
@@ -26962,18 +26971,27 @@ var StreamStateView = class {
26962
26971
  this.syncCookie = nextSyncCookie;
26963
26972
  return { appended, updated, confirmed };
26964
26973
  }
26965
- processEphemeralEvent(event, encryptionEmitter) {
26974
+ processEphemeralEvent(event, encryptionEmitter, stateEmitter) {
26966
26975
  const payload = event.event.payload;
26967
26976
  check(isDefined(payload), `Event has no payload ${event.hashStr}`, Err.STREAM_BAD_EVENT);
26968
- if (payload.case !== "memberPayload") {
26969
- return;
26977
+ switch (payload.case) {
26978
+ case "memberPayload":
26979
+ this.processEphemeralMemberPayload(event, payload.value, encryptionEmitter);
26980
+ break;
26981
+ case "gdmChannelPayload":
26982
+ this.processEphemeralChannelPayload(event, payload.value.content, encryptionEmitter, stateEmitter);
26983
+ break;
26984
+ default:
26985
+ break;
26970
26986
  }
26971
- switch (payload.value.content.case) {
26987
+ }
26988
+ processEphemeralMemberPayload(event, payload, encryptionEmitter) {
26989
+ switch (payload.content.case) {
26972
26990
  case "keySolicitation":
26973
- encryptionEmitter?.emit("newKeySolicitation", this.streamId, event.hashStr, event.creatorUserId, payload.value.content.value, getEventSignature(event), true);
26991
+ encryptionEmitter?.emit("newKeySolicitation", this.streamId, event.hashStr, event.creatorUserId, payload.content.value, getEventSignature(event), true);
26974
26992
  break;
26975
26993
  case "keyFulfillment": {
26976
- const fulfillment = payload.value.content.value;
26994
+ const fulfillment = payload.content.value;
26977
26995
  encryptionEmitter?.emit("ephemeralKeyFulfillment", {
26978
26996
  streamId: this.streamId,
26979
26997
  userId: userIdFromAddress(fulfillment.userAddress),
@@ -26989,6 +27007,24 @@ var StreamStateView = class {
26989
27007
  break;
26990
27008
  }
26991
27009
  }
27010
+ processEphemeralChannelPayload(event, content, encryptionEmitter, _stateEmitter) {
27011
+ if (content.case !== "message") {
27012
+ return;
27013
+ }
27014
+ const encryptedData = content.value;
27015
+ if (!encryptedData) {
27016
+ return;
27017
+ }
27018
+ const encryptedContent = {
27019
+ kind: "channelMessage",
27020
+ content: encryptedData
27021
+ };
27022
+ this.ephemeralEvents.set(event.hashStr, {
27023
+ creatorUserId: event.creatorUserId,
27024
+ encryptedContent
27025
+ });
27026
+ encryptionEmitter?.emit("newEncryptedContent", this.streamId, event.hashStr, encryptedContent);
27027
+ }
26992
27028
  processAppendedEvent(timelineEvent, cleartext, encryptionEmitter, stateEmitter) {
26993
27029
  check(!this.minipoolEvents.has(timelineEvent.hashStr));
26994
27030
  if (timelineEvent.remoteEvent.event.payload.case !== "miniblockHeader") {
@@ -27094,6 +27130,17 @@ var StreamStateView = class {
27094
27130
  }
27095
27131
  // update streeam state with successfully decrypted events by hashStr event id
27096
27132
  updateDecryptedContent(eventId, content, emitter) {
27133
+ const ephemeral = this.ephemeralEvents.get(eventId);
27134
+ if (ephemeral) {
27135
+ this.ephemeralEvents.delete(eventId);
27136
+ emitter.emit("ephemeralEvent", this.streamId, {
27137
+ hashStr: eventId,
27138
+ creatorUserId: ephemeral.creatorUserId,
27139
+ content,
27140
+ encryptedContent: void 0
27141
+ });
27142
+ return;
27143
+ }
27097
27144
  this.membershipContent.onDecryptedContent(eventId, content, emitter);
27098
27145
  this.getContent().onDecryptedContent(eventId, content, emitter);
27099
27146
  const minipoolEvent = this.minipoolEvents.get(eventId);
@@ -27107,6 +27154,7 @@ var StreamStateView = class {
27107
27154
  }
27108
27155
  // update stream with decryption status
27109
27156
  updateDecryptedContentError(eventId, content, _emitter) {
27157
+ this.ephemeralEvents.delete(eventId);
27110
27158
  this.streamsView.timelinesView.streamEventDecryptedContentError(this.streamId, eventId, content);
27111
27159
  }
27112
27160
  initialize(nextSyncCookie, minipoolEvents, snapshot, miniblocks, prependedMiniblocks, prevSnapshotMiniblockNum, cleartexts, localEvents, emitter) {
@@ -30195,14 +30243,17 @@ var Client = class extends import_events2.default {
30195
30243
  const stream = this.stream(streamId);
30196
30244
  check(stream !== void 0, "stream not found");
30197
30245
  const payload = (0, import_protobuf21.create)(ChannelMessageSchema, inPayload);
30198
- const localId = stream.appendLocalEvent(payload, "sending", opts?.appClientAddress);
30199
- opts?.onLocalEventAppended?.(localId);
30246
+ const localId = opts?.ephemeral ? void 0 : stream.appendLocalEvent(payload, "sending", opts?.appClientAddress);
30247
+ if (localId) {
30248
+ opts?.onLocalEventAppended?.(localId);
30249
+ }
30200
30250
  if (opts?.beforeSendEventHook) {
30201
30251
  await opts?.beforeSendEventHook;
30202
30252
  }
30203
30253
  return this.makeAndSendChannelMessageEvent(streamId, payload, localId, {
30204
30254
  disableTags: opts?.disableTags,
30205
- appClientAddress: opts?.appClientAddress
30255
+ appClientAddress: opts?.appClientAddress,
30256
+ ephemeral: opts?.ephemeral
30206
30257
  });
30207
30258
  }
30208
30259
  async makeAndSendChannelMessageEvent(streamId, payload, localId, opts) {
@@ -30223,8 +30274,9 @@ var Client = class extends import_events2.default {
30223
30274
  return this.makeEventAndAddToStream(streamId, make_GDMChannelPayload_Message(message), {
30224
30275
  method: "sendMessageGDM",
30225
30276
  localId,
30226
- cleartext,
30227
- tags
30277
+ cleartext: opts?.ephemeral ? void 0 : cleartext,
30278
+ tags,
30279
+ ephemeral: opts?.ephemeral
30228
30280
  });
30229
30281
  }
30230
30282
  throw new Error(`invalid streamId: ${streamId}`);
@@ -31370,7 +31422,7 @@ var import_debug3 = __toESM(require_src(), 1);
31370
31422
  var import_protobuf22 = require("@bufbuild/protobuf");
31371
31423
 
31372
31424
  // package.json
31373
- var version = "4.1.0";
31425
+ var version = "4.1.2";
31374
31426
 
31375
31427
  // src/modules/utils.ts
31376
31428
  var getPackageManager = () => {
@@ -32189,8 +32241,8 @@ async function installSkill(projectDir) {
32189
32241
  // src/modules/create.ts
32190
32242
  var import_prompts3 = __toESM(require("prompts"));
32191
32243
  var import_picocolors5 = require("picocolors");
32192
- var import_viem11 = require("viem");
32193
- var import_accounts7 = require("viem/accounts");
32244
+ var import_viem16 = require("viem");
32245
+ var import_accounts8 = require("viem/accounts");
32194
32246
 
32195
32247
  // ../../node_modules/.bun/@slicekit+erc8128@0.1.0/node_modules/@slicekit/erc8128/dist/esm/index.js
32196
32248
  var j = class extends Error {
@@ -32561,7 +32613,11 @@ async function postJson(relayerUrl, body, options) {
32561
32613
  headers: { "Content-Type": "application/json" },
32562
32614
  body
32563
32615
  });
32564
- const signedRequest = options?.httpAuth ? await t(request, options.httpAuth.signer, options.httpAuth.signOptions) : request;
32616
+ const httpAuth = options?.httpAuth;
32617
+ if (!httpAuth) {
32618
+ return fetch(request);
32619
+ }
32620
+ const signedRequest = await t(request, httpAuth.signer, httpAuth.signOptions);
32565
32621
  return fetch(signedRequest);
32566
32622
  }
32567
32623
  function createJsonRpcTransport(relayerUrl, options) {
@@ -32615,11 +32671,22 @@ function createJsonRpcTransport(relayerUrl, options) {
32615
32671
  };
32616
32672
  }
32617
32673
 
32674
+ // ../relayer-client/dist/httpAuth.js
32675
+ function getHttpAuthOptions(config) {
32676
+ if (!config.authSigner) {
32677
+ return void 0;
32678
+ }
32679
+ return {
32680
+ signer: config.authSigner,
32681
+ signOptions: config.authSignOptions
32682
+ };
32683
+ }
32684
+
32618
32685
  // ../relayer-client/dist/actions/checkHealth.js
32619
32686
  async function checkHealth(client) {
32620
32687
  try {
32621
32688
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32622
- httpAuth: client.relayerConfig.httpAuth
32689
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
32623
32690
  });
32624
32691
  await transport.request("wallet_health");
32625
32692
  return {
@@ -32650,7 +32717,7 @@ async function checkHealth(client) {
32650
32717
  async function getCapabilities(client, params) {
32651
32718
  try {
32652
32719
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32653
- httpAuth: client.relayerConfig.httpAuth
32720
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
32654
32721
  });
32655
32722
  const rpcParams = params?.chainIds && params.chainIds.length > 0 ? {
32656
32723
  ...params,
@@ -32718,7 +32785,7 @@ var getNonceAbi = [
32718
32785
  ];
32719
32786
  async function prepareCalls(client, params) {
32720
32787
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32721
- httpAuth: client.relayerConfig.httpAuth
32788
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
32722
32789
  });
32723
32790
  const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id ?? 1;
32724
32791
  let resolvedNonce = params.nonce;
@@ -32798,7 +32865,7 @@ async function prepareCalls(client, params) {
32798
32865
  // ../relayer-client/dist/actions/sendPreparedCalls.js
32799
32866
  async function sendPreparedCalls(client, params) {
32800
32867
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32801
- httpAuth: client.relayerConfig.httpAuth
32868
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
32802
32869
  });
32803
32870
  const rpcParams = {
32804
32871
  context: params.context,
@@ -32833,7 +32900,7 @@ function statusCodeToString(code) {
32833
32900
  async function getCallsStatus(client, params) {
32834
32901
  try {
32835
32902
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32836
- httpAuth: client.relayerConfig.httpAuth
32903
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
32837
32904
  });
32838
32905
  const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id;
32839
32906
  const rpcParams = chainId !== void 0 ? {
@@ -32926,7 +32993,7 @@ async function upgradeAccount(client, params) {
32926
32993
  throw new Error("Must provide either signerKey or walletClient");
32927
32994
  }
32928
32995
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32929
- httpAuth: client.relayerConfig.httpAuth
32996
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
32930
32997
  });
32931
32998
  const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id;
32932
32999
  const prepared = await transport.request("wallet_prepareUpgradeAccount", {
@@ -32996,7 +33063,7 @@ async function upgradeAccount(client, params) {
32996
33063
  // ../relayer-client/dist/actions/getKeys.js
32997
33064
  async function getKeys2(client, params) {
32998
33065
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
32999
- httpAuth: client.relayerConfig.httpAuth
33066
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
33000
33067
  });
33001
33068
  const rpcParams = {
33002
33069
  address: params.address
@@ -33011,7 +33078,7 @@ async function getKeys2(client, params) {
33011
33078
  // ../relayer-client/dist/actions/verifySignature.js
33012
33079
  async function verifySignature(client, params) {
33013
33080
  const transport = createJsonRpcTransport(client.relayerConfig.relayerUrl, {
33014
- httpAuth: client.relayerConfig.httpAuth
33081
+ httpAuth: getHttpAuthOptions(client.relayerConfig)
33015
33082
  });
33016
33083
  const chainId = params.chainId ?? client.relayerConfig.chainId ?? client.chain?.id ?? 1;
33017
33084
  const hexChainId = `0x${chainId.toString(16)}`;
@@ -33105,6 +33172,27 @@ function getChain(chainId, rpcUrl) {
33105
33172
  };
33106
33173
  }
33107
33174
 
33175
+ // ../relayer-client/dist/escrow/computeEscrowId.js
33176
+ var import_viem12 = require("viem");
33177
+
33178
+ // ../relayer-client/dist/escrow/buildEscrowStruct.js
33179
+ var import_viem11 = require("viem");
33180
+
33181
+ // ../relayer-client/dist/escrow/createEscrowCalls.js
33182
+ var import_viem13 = require("viem");
33183
+ var ERC20_APPROVE_ABI = (0, import_viem13.parseAbi)([
33184
+ "function approve(address spender, uint256 amount) returns (bool)"
33185
+ ]);
33186
+
33187
+ // ../relayer-client/dist/escrow/refundEscrowCalls.js
33188
+ var import_viem14 = require("viem");
33189
+
33190
+ // ../relayer-client/dist/escrow/signSettlement.js
33191
+ var import_accounts7 = require("viem/accounts");
33192
+
33193
+ // ../relayer-client/dist/escrow/writeSettlementCalls.js
33194
+ var import_viem15 = require("viem");
33195
+
33108
33196
  // ../contracts/dist/addresses.json
33109
33197
  var addresses_default = {
33110
33198
  dev: {
@@ -35868,16 +35956,16 @@ async function create17(argv) {
35868
35956
  throw new Error(`No accountProxy address found for ${townsConfig.environmentId}/${chainId}`);
35869
35957
  }
35870
35958
  const relayerUrl = townsConfig.services.relayer.url;
35871
- const relayerClient = (0, import_viem11.createPublicClient)({
35959
+ const relayerClient = (0, import_viem16.createPublicClient)({
35872
35960
  chain: {
35873
35961
  id: chainId,
35874
35962
  name: "Local",
35875
35963
  nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
35876
35964
  rpcUrls: { default: { http: [townsConfig.base.rpcUrl] } }
35877
35965
  },
35878
- transport: (0, import_viem11.http)(townsConfig.base.rpcUrl)
35966
+ transport: (0, import_viem16.http)(townsConfig.base.rpcUrl)
35879
35967
  }).extend(relayerActions({ relayerUrl }));
35880
- const botPrivateKey = argv.botPrivateKey || (0, import_accounts7.generatePrivateKey)();
35968
+ const botPrivateKey = argv.botPrivateKey || (0, import_accounts8.generatePrivateKey)();
35881
35969
  const { result: createResult, auth: authUsedForCreate } = await executeWithAuthRetry(
35882
35970
  auth,
35883
35971
  async (activeAuth) => {
@@ -36345,8 +36433,8 @@ async function promptNotify() {
36345
36433
 
36346
36434
  // src/modules/delegate.ts
36347
36435
  var import_picocolors8 = require("picocolors");
36348
- var import_viem12 = require("viem");
36349
- var import_accounts8 = require("viem/accounts");
36436
+ var import_viem17 = require("viem");
36437
+ var import_accounts9 = require("viem/accounts");
36350
36438
  var import_chains4 = require("viem/chains");
36351
36439
  var CHAIN_NAME_TO_ID = {
36352
36440
  base: 8453,
@@ -36426,11 +36514,11 @@ Use a chain name (${Object.keys(CHAIN_NAME_TO_ID).join(", ")}) or a numeric chai
36426
36514
  );
36427
36515
  process.exit(1);
36428
36516
  }
36429
- const account = (0, import_accounts8.privateKeyToAccount)(appPrivateKey);
36517
+ const account = (0, import_accounts9.privateKeyToAccount)(appPrivateKey);
36430
36518
  const chain = getChain(chainId, rpcUrl);
36431
- const relayerClient = (0, import_viem12.createPublicClient)({
36519
+ const relayerClient = (0, import_viem17.createPublicClient)({
36432
36520
  chain,
36433
- transport: (0, import_viem12.http)(rpcUrl)
36521
+ transport: (0, import_viem17.http)(rpcUrl)
36434
36522
  }).extend(relayerActions({ relayerUrl }));
36435
36523
  console.log((0, import_picocolors8.dim)(`Delegating account ${account.address} on chain ${chainId}...`));
36436
36524
  const result = await relayerClient.upgradeAccount({
@@ -36498,7 +36586,7 @@ async function rotateSecret(argv) {
36498
36586
  // src/modules/admin.ts
36499
36587
  var import_prompts6 = __toESM(require("prompts"));
36500
36588
  var import_picocolors10 = require("picocolors");
36501
- var import_viem13 = require("viem");
36589
+ var import_viem18 = require("viem");
36502
36590
  var FIELD_DEFS2 = METADATA_FIELD_DEFS;
36503
36591
  var FIELD_BY_ALIAS = {
36504
36592
  username: "username",
@@ -36649,14 +36737,14 @@ async function admin(argv) {
36649
36737
  }
36650
36738
  async function resolveAdminAppAddress(argv) {
36651
36739
  const resolved = resolveAppAddress(argv._[1]);
36652
- if (resolved && (0, import_viem13.isAddress)(resolved)) {
36740
+ if (resolved && (0, import_viem18.isAddress)(resolved)) {
36653
36741
  return resolved;
36654
36742
  }
36655
36743
  const { value } = await (0, import_prompts6.default)({
36656
36744
  type: "text",
36657
36745
  name: "value",
36658
36746
  message: "Paste app address (0x...)",
36659
- validate: (v) => (0, import_viem13.isAddress)(v) ? true : "Enter a valid EVM address"
36747
+ validate: (v) => (0, import_viem18.isAddress)(v) ? true : "Enter a valid EVM address"
36660
36748
  });
36661
36749
  if (!value) {
36662
36750
  return void 0;