@alphauspkgs/blue-sdk-ts 1.0.42 → 1.0.44

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.
@@ -34,7 +34,7 @@ import type { AccountServiceDiscountsExportSchema, GroupServiceDiscountsExportSc
34
34
  import { file_api_ripple_v1_invoiceservicediscounts } from "../../api/ripple/v1/invoiceservicediscounts_pb";
35
35
  import type { BillingGroupAccountSupportPlan } from "../../api/ripple/v1/accountsupportplan_pb";
36
36
  import { file_api_ripple_v1_accountsupportplan } from "../../api/ripple/v1/accountsupportplan_pb";
37
- import type { AdjustmentEntrySchema } from "../../api/ripple/v1/adjustmententry_pb";
37
+ import type { AdjustmentEntry, AdjustmentEntrySchema } from "../../api/ripple/v1/adjustmententry_pb";
38
38
  import { file_api_ripple_v1_adjustmententry } from "../../api/ripple/v1/adjustmententry_pb";
39
39
  import type { AdjustmentConfigSchema, ConfigFilters, ManagementAccount } from "../../api/adjustment_pb";
40
40
  import { file_api_adjustment } from "../../api/adjustment_pb";
@@ -53,7 +53,7 @@ import type { Message } from "@bufbuild/protobuf";
53
53
  * Describes the file billing/v1/billing.proto.
54
54
  */
55
55
  export const file_billing_v1_billing: GenFile = /*@__PURE__*/
56
- fileDesc("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SEmJsdWVhcGkuYmlsbGluZy52MSKgBAoMQmlsbGluZ0dyb3VwEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYByABKAkSDAoEdHlwZRgMIAEoCRIQCghoYXNDaGlsZBgNIAEoCBI+ChBiaWxsaW5nR3JvdXBJbmZvGAogASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8SOgoOYWNjb3VudE9wdGlvbnMYCCABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSJgoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50EiIKBHRhZ3MYBiADKAsyFC5ibHVlYXBpLmFwaS5Db3N0VGFnEkgKD2ludm9pY2VTZXR0aW5ncxgFIAEoCzIvLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSSAoPYWRkaXRpb25hbEl0ZW1zGAsgASgLMi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIyCgphd3NPcHRpb25zGAkgASgLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c09wdGlvbnMioAEKG0JpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIpCgNhd3MYASADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKwoFYXp1cmUYAiADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKQoDZ2NwGAMgAygLMhwuYmx1ZWFwaS5hcGkuQWRkaXRpb25hbEl0ZW1zIu4BChtCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQwoDYXdzGAEgASgLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cFZlbmRvcmVkSW52b2ljZVNldHRpbmcSRQoFYXp1cmUYAiABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxJDCgNnY3AYAyABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZyLTAwoiQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxIQCghjYWxjVHlwZRgBIAEoCRIUCgxkaXNjb3VudFJhdGUYAiABKAESFwoPc3Vic3RpdHV0aW9uRmVlGAMgASgJEhcKD3N1YnN0aXR1dGlvbkZpeBgEIAEoARIYChBzdWJzdGl0dXRpb25SYXRlGAUgASgBEhIKCnN1cHBvcnRGZWUYBiABKAkSEwoLc3VwcG9ydFJhdGUYByABKAESEgoKc3VwcG9ydEZpeBgIIAEoARIPCgd0YXhSYXRlGAkgASgBEhAKCGN1cnJlbmN5GAogASgJEhsKE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYCyABKAkSIgoac3Vic3RpdHV0aW9uRmVlVGFyZ2V0VXNhZ2UYDCABKAkSGQoRZGlzY291bnRDYWxjTG9naWMYDSABKAkSIQoZc3Vic3RpdHV0aW9uRmVlQ2FsY1RhcmdldBgOIAEoCRIfChdzdWJzdGl0dXRpb25GZWVDYWxjVHlwZRgPIAEoCRIbChNzdXBwb3J0QW1vdW50VGFyZ2V0GBAgASgJEhwKFHN1cHBvcnRGZWVDYWxjVGFyZ2V0GBEgASgJIpIBChhMaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sSDwoHdmVuZG9ycxgCIAEoCRIQCghjYWxjVHlwZRgDIAEoCRITCgtkaXNwbGF5Q29zdBgEIAEoCRIOCgZiZ1R5cGUYBSABKAkilAQKGUNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJIjUKCkF3c09wdGlvbnMSFgoOdXNlUHJvRm9ybWFDdXIYASABKAgSDwoHcGF5ZXJJZBgCIAEoCSKrAQoOQWNjb3VudE9wdGlvbnMSMQoDYXdzGAEgASgLMiQuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlZ2lzdGVyQWNjb3VudHMSMQoDZ2NwGAIgASgLMiQuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlZ2lzdGVyQWNjb3VudHMSMwoFYXp1cmUYAyABKAsyJC5ibHVlYXBpLmJpbGxpbmcudjEuUmVnaXN0ZXJBY2NvdW50cyI2ChBSZWdpc3RlckFjY291bnRzEg8KB2VuYWJsZWQYASABKAgSEQoJYWNjb3VudElkGAIgASgJIlQKDlZlbmRvckFjY291bnRzEg4KBnZlbmRvchgBIAEoCRIyCghhY2NvdW50cxgCIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50VG9BZGQiYAoMQXp1cmVPcHRpb25zEhUKDXJlc291cmNlR3JvdXAYASABKAgSGwoTYXBwbHlQY0Vhcm5lZENyZWRpdBgCIAEoCBIcChRhcHBseUNhbXBhaWduUHJpY2luZxgDIAEoCCKqBwofQ3JlYXRlQmlsbGluZ0dyb3VwTWVyZ2VkUmVxdWVzdBIWCg5iaWxsaW5nR3JvdXBJZBgBIAEoCRIYChBiaWxsaW5nR3JvdXBOYW1lGAIgASgJEhMKC2NvbXBhbnlOYW1lGAMgASgJEhQKDGJpbGxpbmdUaXRsZRgEIAEoCRITCgtwaG9uZU51bWJlchgFIAEoCRISCgpwb3N0YWxDb2RlGAYgASgJEg8KB2FkZHJlc3MYByABKAkSEAoIcGVyc29uYWwYCCABKAkSDwoHcmVtYXJrcxgJIAEoCRIRCglwcm9qZWN0SWQYCiABKAkSEAoIbGFuZ3VhZ2UYCyABKAkSEwoLZGlzcGxheUNvc3QYDCABKAkSGAoQZXhjaGFuZ2VSYXRlVHlwZRgNIAEoCRI6Cg5hY2NvdW50T3B0aW9ucxgPIAEoCzIiLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50T3B0aW9ucxJGCghpbnZvaWNlcxgOIAEoCzI0LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZRIyCgphd3NPcHRpb25zGBAgASgLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c09wdGlvbnMSDAoEY2l0eRgRIAEoCRISCgpwcmVmZWN0dXJlGBIgASgJEg8KB2NvdW50cnkYEyABKAkSGQoRaW52b2ljZVRlbXBsYXRlSWQYFCABKAkSMwoLdGFnU2V0dGluZ3MYFSADKAsyHi5ibHVlYXBpLmJpbGxpbmcudjEuVGFnU2V0dGluZxI4Cg1ub25UYWdTZXR0aW5nGBYgASgLMiEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ1NldHRpbmcSOgoOdmVuZG9yQWNjb3VudHMYFyADKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuVmVuZG9yQWNjb3VudHMSWwoMY3VzdG9tRmllbGRzGBggAygLMkUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZFJlcXVlc3QuQ3VzdG9tRmllbGRzRW50cnkSNgoMYXp1cmVPcHRpb25zGBkgASgLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkF6dXJlT3B0aW9ucxozChFDdXN0b21GaWVsZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIv8BCiBDcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZRJHCgNhd3MYASABKAsyOi5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VWZW5kb3ISSQoFYXp1cmUYAiABKAsyOi5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VWZW5kb3ISRwoDZ2NwGAMgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yItcDCiZDcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZVZlbmRvchIQCghjYWxjVHlwZRgBIAEoCRIUCgxkaXNjb3VudFJhdGUYAiABKAESFwoPc3Vic3RpdHV0aW9uRmVlGAMgASgJEhcKD3N1YnN0aXR1dGlvbkZpeBgEIAEoARIYChBzdWJzdGl0dXRpb25SYXRlGAUgASgBEhIKCnN1cHBvcnRGZWUYBiABKAkSEwoLc3VwcG9ydFJhdGUYByABKAESEgoKc3VwcG9ydEZpeBgIIAEoARIPCgd0YXhSYXRlGAkgASgBEhAKCGN1cnJlbmN5GAogASgJEhsKE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYCyABKAkSIgoac3Vic3RpdHV0aW9uRmVlVGFyZ2V0VXNhZ2UYDCABKAkSGQoRZGlzY291bnRDYWxjTG9naWMYDSABKAkSIQoZc3Vic3RpdHV0aW9uRmVlQ2FsY1RhcmdldBgOIAEoCRIfChdzdWJzdGl0dXRpb25GZWVDYWxjVHlwZRgPIAEoCRIbChNzdXBwb3J0QW1vdW50VGFyZ2V0GBAgASgJEhwKFHN1cHBvcnRGZWVDYWxjVGFyZ2V0GBEgASgJImMKFkdldEJpbGxpbmdHcm91cFJlcXVlc3QSGQoRYmlsbGluZ0ludGVybmFsSWQYASABKAkSLgoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siUQoXR2V0QmlsbGluZ0dyb3VwUmVzcG9uc2USNgoMYmlsbGluZ0dyb3VwGAEgASgLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cCKWAQoLQWNjZXNzR3JvdXASFQoNYWNjZXNzR3JvdXBJZBgBIAEoCRIXCg9hY2Nlc3NHcm91cE5hbWUYAiABKAkSHgoWYWNjZXNzR3JvdXBEZXNjcmlwdGlvbhgDIAEoCRI3Cg1iaWxsaW5nR3JvdXBzGAQgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cCJeChVHZXRBY2Nlc3NHcm91cFJlcXVlc3QSFQoNYWNjZXNzR3JvdXBJZBgBIAEoCRIuCgpmaWVsZF9tYXNrGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJOChZHZXRBY2Nlc3NHcm91cFJlc3BvbnNlEjQKC2FjY2Vzc0dyb3VwGAEgASgLMh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY2Vzc0dyb3VwIq8CChJBd3NEYWlseVJ1bkhpc3RvcnkSGQoRYmlsbGluZ0ludGVybmFsSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSDQoFbW9udGgYAyABKAkSQAoIYWNjb3VudHMYBCADKAsyLi5ibHVlYXBpLmJpbGxpbmcudjEuQXdzRGFpbHlSdW5IaXN0b3J5LkFjY291bnQalAEKB0FjY291bnQSEQoJYWNjb3VudElkGAEgASgJEkcKB2hpc3RvcnkYAiADKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQXdzRGFpbHlSdW5IaXN0b3J5LkFjY291bnQuSGlzdG9yeRotCgdIaXN0b3J5EhEKCXRpbWVzdGFtcBgBIAEoCRIPCgd0cmlnZ2VyGAIgASgJIj8KHUxpc3RBd3NEYWlseVJ1bkhpc3RvcnlSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEg8KB2dyb3VwSWQYAiABKAkiVgoaTGlzdFVzYWdlQ29zdHNEcmlmdFJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAIgASgJEg0KBW1vbnRoGAMgASgJIoYBCg9Vc2FnZUNvc3RzRHJpZnQSGQoRYmlsbGluZ0ludGVybmFsSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSDwoHYWNjb3VudBgDIAEoCRIQCghzbmFwc2hvdBgEIAEoARIPCgdjdXJyZW50GAUgASgBEgwKBGRpZmYYBiABKAEiMgoRR2V0SW52b2ljZVJlcXVlc3QSDAoEZGF0ZRgBIAEoCRIPCgdncm91cElkGAIgASgJIjkKGEV4cG9ydEludm9pY2VGaWxlUmVxdWVzdBIMCgRkYXRlGAEgASgJEg8KB2dyb3VwSWQYAiABKAkiKAoZRXhwb3J0SW52b2ljZUZpbGVSZXNwb25zZRILCgN1cmwYASABKAkiNQojUmVhZFNlcnZpY2VEaXNjb3VudHNTZXJ2aWNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJIiQKIkxpc3RJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QiXgohR2V0SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EgoKAmlkGAEgASgJEi0KCWZpZWxkTWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siagoXSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIPCgdjcmVhdGVkGAQgASgJEg8KB3VwZGF0ZWQYBSABKAkiHAoaTGlzdEludm9pY2VUZW1wbGF0ZVJlcXVlc3QiXQooVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVRlbXBsYXRlUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhIfChFpbnZvaWNlVGVtcGxhdGVJZBgCIAEoCUIE4kEBAiKeAgobTGlzdEludm9pY2VUZW1wbGF0ZVJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHY3JlYXRlZBgEIAEoCRIPCgd1cGRhdGVkGAUgASgJEhkKEW51bWJlck9mQ29ubmVjdGVkGAYgASgFElAKFWNvbm5lY3RlZEJpbGxpbmdHcm91cBgHIAMoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlQ29ubmVjdGVkQmlsbGluZ0dyb3VwcxJBCghpbnZvaWNlcxgIIAEoCzIvLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MiIgogR2V0SW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QiSAohR2V0SW52b2ljZURpc3BsYXlTZXR0aW5nc1Jlc3BvbnNlEiMKG3Nob3dSSVNQVXBmcm9udFRpbWVJbnRlcnZhbBgBIAEoCCKsAQojVXBkYXRlSW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QSVQoHc2V0dGluZxgBIAMoCzJELmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlRGlzcGxheVNldHRpbmdzUmVxdWVzdC5TZXR0aW5nRW50cnkaLgoMU2V0dGluZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEibAodSW52b2ljZUNvbm5lY3RlZEJpbGxpbmdHcm91cHMSGQoRYmlsbGluZ0ludGVybmFsSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgDIAEoCSI8CilMaXN0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJIocBCh5BY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSCgoCaWQYASABKAkSDwoHYWNjb3VudBgCIAEoCRJIChBzZXJ2aWNlRGlzY291bnRzGAMgASgLMi4uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkludm9pY2VTZXJ2aWNlRGlzY291bnRzIjgKF0FjY291bnRTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCSJ9CitDcmVhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSPQoIYWNjb3VudHMYBCADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFNlcnZpY2VEaXNjb3VudHMibQosQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USPQoIYWNjb3VudHMYBCADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFNlcnZpY2VEaXNjb3VudHMifQorVXBkYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIm0KLFVwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIj4KK0RlbGV0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSJ9CitSZW1vdmVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSPQoIYWNjb3VudHMYBCADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFNlcnZpY2VEaXNjb3VudHMiTwowQ3JlYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSCgoCaWQYAiABKAkiPwoxQ3JlYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRIKCgJpZBgBIAEoCSJPCjBVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIKCgJpZBgCIAEoCSI/CjFVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlEgoKAmlkGAEgASgJIkMKMERlbGV0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJIlcKFENyZWF0ZUludm9pY2VSZXF1ZXN0EgwKBGRhdGUYBCABKAkSDgoGdmVuZG9yGAEgASgJEhEKCWFsbEdyb3VwcxgCIAEoCBIOCgZncm91cHMYAyADKAkiJQoXR2V0SW52b2ljZVN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiKAoYTGlzdEludm9pY2VTdGF0dXNSZXF1ZXN0EgwKBGRhdGUYASABKAkiYAocVXBkYXRlSW52b2ljZVByZXZpZXdzUmVxdWVzdBIMCgRkYXRlGAEgASgJEhEKCWFsbEdyb3VwcxgCIAEoCBIOCgZncm91cHMYAyADKAkSDwoHZW5hYmxlZBgEIAEoCCLPAQoVQ3JlYXRlUmVzZWxsZXJSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSDQoFZW1haWwYAiABKAkSEAoIcGFzc3dvcmQYAyABKAkSFAoMbm90aWZpY2F0aW9uGAQgASgIEjYKCndhdmVDb25maWcYBSADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWcSNgoKYXF1YUNvbmZpZxgGIAMoCzIiLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlckNvbmZpZyJGChRMaXN0UmVzZWxsZXJzUmVxdWVzdBIuCgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayJQChJHZXRSZXNlbGxlclJlcXVlc3QSCgoCaWQYASABKAkSLgoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sipgIKFVVwZGF0ZVJlc2VsbGVyUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhITCgVlbWFpbBgCIAEoCUIE4kEBARIXCghwYXNzd29yZBgDIAEoCUIF4kECBAESPAoKd2F2ZUNvbmZpZxgEIAMoCzIiLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlckNvbmZpZ0IE4kEBARI8CgphcXVhQ29uZmlnGAUgAygLMiIuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyQ29uZmlnQgTiQQEBEhsKDG5vdGlmaWNhdGlvbhgGIAEoCEIF4kECBAESNAoKdXBkYXRlTWFzaxgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQIiIwoVRGVsZXRlUmVzZWxsZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkoKGEdldEJpbGxpbmdTZXR0aW5nUmVxdWVzdBIuCgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzayLHAgoZR2V0QmlsbGluZ1NldHRpbmdSZXNwb25zZRIwCgl5ZWFyTW9udGgYASADKAsyHS5ibHVlYXBpLmFwaS5yaXBwbGUuWWVhck1vbnRoEjQKDnJvdW5kaW5nTWV0aG9kGAIgASgLMhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJvdW5kaW5nEjoKFGV4cG9ydFJvdW5kaW5nTWV0aG9kGAMgASgLMhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJvdW5kaW5nEjgKDWludm9pY2VMYXlvdXQYBCABKAsyIS5ibHVlYXBpLmFwaS5yaXBwbGUuSW52b2ljZUxheW91dBIzCg5pbnZvaWNlRHVlRGF0ZRgFIAEoCzIbLmJsdWVhcGkuYXBpLnJpcHBsZS5EdWVEYXRlEhcKD3N1cHBvcnRDdXJyZW5jeRgGIAMoCSI5ChhMaXN0RXhjaGFuZ2VSYXRlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJImUKHFNldEdsb2JhbEV4Y2hhbmdlUmF0ZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJEhAKCGN1cnJlbmN5GAMgASgJEhQKDGV4Y2hhbmdlUmF0ZRgEIAEoASJ3ChtTZXRQYXllckV4Y2hhbmdlUmF0ZVJlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRINCgVtb250aBgDIAEoCRIQCghjdXJyZW5jeRgEIAEoCRIUCgxleGNoYW5nZVJhdGUYBSABKAEibAoiU2V0QmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlUmVxdWVzdBIPCgdncm91cElkGAEgASgJEg0KBW1vbnRoGAIgASgJEhAKCGN1cnJlbmN5GAMgASgJEhQKDGV4Y2hhbmdlUmF0ZRgEIAEoASLiAQoZTGlzdEV4Y2hhbmdlUmF0ZXNSZXNwb25zZRINCgVtb250aBgBIAEoCRI2CgZjb21tb24YAiABKAsyJi5ibHVlYXBpLmFwaS5yaXBwbGUuQ29tbW9uRXhjaGFuZ2VSYXRlEkIKDGJpbGxpbmdHcm91cBgDIAMoCzIsLmJsdWVhcGkuYXBpLnJpcHBsZS5CaWxsaW5nR3JvdXBFeGNoYW5nZVJhdGUSOgoFcGF5ZXIYBCABKAsyKy5ibHVlYXBpLmFwaS5yaXBwbGUuVmVuZG9yUGF5ZXJFeGNoYW5nZVJhdGUiSQoXTGlzdEFjY2Vzc0dyb3Vwc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siVAoYQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSFQoNYmlsbGluZ0dyb3VwcxgDIAMoCSJgChhVcGRhdGVBY2Nlc3NHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIVCg1iaWxsaW5nR3JvdXBzGAQgAygJIiYKGERlbGV0ZUFjY2Vzc0dyb3VwUmVxdWVzdBIKCgJpZBgBIAEoCSJ9ChJMaXN0SW52b2ljZVJlcXVlc3QSDAoEZGF0ZRgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSGQoRYmlsbGluZ0ludGVybmFsSWQYAyABKAkSLgoKZmllbGRfbWFzaxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sihAkKE0xpc3RJbnZvaWNlUmVzcG9uc2USGQoRYmlsbGluZ0ludGVybmFsSWQYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgDIAEoCRITCgtjb21wYW55TmFtZRgEIAEoCRIaChJmaW5hbGl6YXRpb25TdGF0dXMYBSABKAkSEQoJaXNDcmVhdGVkGAYgASgIEhkKEWlzU2V0dGluZ01vZGlmaWVkGAcgASgIEhMKC2NyZWF0ZWREYXRlGAggASgJEhMKC3VwZGF0ZWREYXRlGAkgASgJEhYKDmNyZWF0ZWRWZW5kb3JzGAogAygJEhMKC2lzUHVibGlzaGVkGAsgASgIEl0KE3ZlbmRvckJpbGxpbmdBbW91bnQYDCADKAsyQC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXNwb25zZS5WZW5kb3JCaWxsaW5nQW1vdW50RW50cnkSGgoSYmlsbGluZ0Ftb3VudFRvdGFsGA0gASgJEhAKCGN1cnJlbmN5GA4gASgJEg0KBXVybElkGA8gASgJEm0KG2NyZWF0ZWRWZW5kb3JJbnZvaWNlU2V0dGluZxgQIAMoCzJILmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVJlc3BvbnNlLkNyZWF0ZWRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EmkKGXNhdmVkVmVuZG9ySW52b2ljZVNldHRpbmcYESADKAsyRi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXNwb25zZS5TYXZlZFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSbQobZGVmYXVsdFZlbmRvckludm9pY2VTZXR0aW5nGBIgAygLMkguYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuRGVmYXVsdFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSEAoIaGFzQ2hpbGQYEyABKAgaOgoYVmVuZG9yQmlsbGluZ0Ftb3VudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaZwogQ3JlYXRlZFZlbmRvckludm9pY2VTZXR0aW5nRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuYmx1ZWFwaS5iaWxsaW5nLnYxLkludm9pY2VTZXR0aW5nczoCOAEaZQoeU2F2ZWRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlU2V0dGluZ3M6AjgBGmcKIERlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlU2V0dGluZ3M6AjgBIikKG0xpc3RBYmNCaWxsaW5nR3JvdXBzUmVxdWVzdBIKCgJpZBgBIAEoCSJOCiJMaXN0QWJjQmlsbGluZ0dyb3VwQWNjb3VudHNSZXF1ZXN0Eg8KB3BheWVySWQYASABKAkSFwoPYmlsbGluZ0dyb3VwQXJuGAIgASgJIo8BCg9BYmNCaWxsaW5nR3JvdXASCwoDYXJuGAEgASgJEgwKBG5hbWUYAiABKAkSFAoMY3JlYXRpb25UaW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhgKEHByaW1hcnlBY2NvdW50SWQYBSABKAkSDAoEc2l6ZRgGIAEoCRIOCgZzdGF0dXMYByABKAkiNAoKQWJjQWNjb3VudBIRCglhY2NvdW50SWQYASABKAkSEwoLYWNjb3VudE5hbWUYAiABKAkiYgodUmVhZEludm9pY2VBZGp1c3RtZW50c1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRINCgVtb250aBgDIAEoCRIPCgdmZWVUeXBlGAQgASgJIpkBChxSZWFkQWRqdXN0bWVudEVudHJpZXNSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhITCgVtb250aBgCIAEoCUIE4kEBARpOCiJBZGp1c3RtZW50RW50cmllc1JlcXVlc3RBd3NPcHRpb25zEhMKC3NwcERpc2NvdW50GAEgASgIEhMKC2VkcERpc2NvdW50GAIgASgIIkMKGUdldEFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECIp4DChtBcHBseUFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECElMKB3NldHRpbmcYAiABKAsyPC5ibHVlYXBpLmJpbGxpbmcudjEuQXBwbHlBZGp1c3RtZW50RW50cnlSZXF1ZXN0LkFwcGx5U2V0dGluZ0IE4kEBAhIVCgdlbnRyaWVzGAMgAygJQgTiQQECGvwBCgxBcHBseVNldHRpbmcSEwoFbW9udGgYASABKAlCBOJBAQESFQoHdGF4RnJlZRgCIAEoCEIE4kEBARJqCgxleGNoYW5nZVJhdGUYAyADKAsyTi5ibHVlYXBpLmJpbGxpbmcudjEuQXBwbHlBZGp1c3RtZW50RW50cnlSZXF1ZXN0LkFwcGx5U2V0dGluZy5FeGNoYW5nZVJhdGVFbnRyeUIE4kEBARIfChFiaWxsaW5nSW50ZXJuYWxJZBgEIAEoCUIE4kEBARozChFFeGNoYW5nZVJhdGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAE6AjgBIkwKHVJlc3RvcmVBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIVCgdlbnRyaWVzGAMgAygJQgTiQQECIl8KG1NwbGl0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEAoCaWQYAiABKAlCBOJBAQISGAoKc3RhcnRNb250aBgDIAEoCUIE4kEBAiL8AQoeQWxsb2NhdGVBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIQCgJpZBgCIAEoCUIE4kEBAhJWCgZjb25maWcYAyADKAsyQC5ibHVlYXBpLmJpbGxpbmcudjEuQWxsb2NhdGVBZGp1c3RtZW50RW50cnlSZXF1ZXN0LkFjY291bnRDb25maWdCBOJBAQISIQoTYWNjb3VudEZvclJlbWFpbmluZxgEIAEoCUIE4kEBAho3Cg1BY2NvdW50Q29uZmlnEhAKAmlkGAEgASgJQgTiQQECEhQKBmFtb3VudBgCIAEoAUIE4kEBAiJMCiJSZXN0b3JlU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIQCgJpZBgCIAEoCUIE4kEBAiJPCiVSZXN0b3JlQWxsb2NhdGVBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIQCgJpZBgCIAEoCUIE4kEBAiI8ChtMaXN0QWNjb3VudFJlc291cmNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJIkoKD1Jlc291cmNlQWNjb3VudBIPCgdwYXllcklkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSEgoKcmVnaXN0ZXJlZBgDIAEoCCIsChpHZXRBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkijQEKHUNyZWF0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIqCgZjb25maWcYAiADKAsyGi5ibHVlYXBpLmFwaS5Db25maWdGaWx0ZXJzEjAKCGFjY291bnRzGAMgAygLMh4uYmx1ZWFwaS5hcGkuTWFuYWdlbWVudEFjY291bnQijQEKHVVwZGF0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIqCgZjb25maWcYAiADKAsyGi5ibHVlYXBpLmFwaS5Db25maWdGaWx0ZXJzEjAKCGFjY291bnRzGAMgAygLMh4uYmx1ZWFwaS5hcGkuTWFuYWdlbWVudEFjY291bnQiLwodRGVsZXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJImcKGVJlYWRVbnRhZ2dlZEdyb3Vwc1JlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEjQKCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQEBIlwKJFJlYWRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VzUmVxdWVzdBI0CgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBASJmCiJHZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EgoKAmlkGAEgASgJEjQKCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQEBInwKJUNyZWF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIwCgZjb25maWcYAyABKAsyIC5ibHVlYXBpLmFwaS5yaXBwbGUuTWV0aG9kQ29uZmlnIsUBCiVVcGRhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EhAKAmlkGAEgASgJQgTiQQECElQKGGN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRgCIAEoCzIsLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCBOJBAQISNAoKdXBkYXRlTWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQIiMwolRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBIKCgJpZBgBIAEoCSJdCi5HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0EhUKB2dyb3VwSWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECIskBCi9HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXNwb25zZRIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAyABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISLAoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50QgTiQQEBIvcCCi5TZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0EhUKB2dyb3VwSWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEoABCgdzZXR0aW5nGAMgAygLMmkuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQIalAEKJkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nEhAKAmlkGAEgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAIgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEhYKCGFjY291bnRzGAMgAygJQgTiQQEBImAKMURlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QSFQoHZ3JvdXBJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQIikQEKJENyZWF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEkYKB3NldHRpbmcYAyABKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHNTZXR0aW5nIsUBCiRVcGRhdGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISVQoXaW52b2ljZVNlcnZpY2VEaXNjb3VudHMYAiABKAsyLi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHNCBOJBAQISNAoKdXBkYXRlTWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQIiMgokRGVsZXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EgoKAmlkGAEgASgJIm4KB1RhZ0RhdGESEgoKY3VzdG9tZXJJZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSFAoMY3VzdG9tZXJOYW1lGAMgASgJEiYKBHRhZ3MYBCADKAsyGC5ibHVlYXBpLmJpbGxpbmcudjEuVGFncyIjCgRUYWdzEgsKA2tleRgBIAEoCRIOCgZ2YWx1ZXMYAiADKAkiLgoOR2V0VGFnc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgwKBHR5cGUYAiABKAkiOwoLQ3VzdG9tRmllbGQSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIl4KF0JpbGxpbmdHcm91cEN1c3RvbUZpZWxkEg0KBXZhbHVlGAEgASgJEjQKC2N1c3RvbUZpZWxkGAIgASgLMh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIjUKIkxpc3RCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKFAQojTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVzcG9uc2USDwoHZ3JvdXBJZBgBIAEoCRJNChhiaWxsaW5nR3JvdXBDdXN0b21GaWVsZHMYAiADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQiPAoYQ3JlYXRlQ3VzdG9tRmllbGRSZXF1ZXN0EgsKA2tleRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCSJIChhVcGRhdGVDdXN0b21GaWVsZFJlcXVlc3QSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIiYKGERlbGV0ZUN1c3RvbUZpZWxkUmVxdWVzdBIKCgJpZBgBIAEoCSIYChZMaXN0Q3VzdG9tRmllbGRSZXF1ZXN0ImsKF0NyZWF0ZUZyZWVGb3JtYXRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSDgoGdmVuZG9yGAIgASgJEi8KBWl0ZW1zGAMgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSJhCgxGcmVlRm9ybUl0ZW0SDQoFbGFiZWwYASABKAkSEAoIdW5pdENvc3QYAiABKAMSDQoFdG90YWwYBSABKAMSEAoIcXVhbnRpdHkYAyABKA0SDwoHZW5hYmxlZBgEIAEoCCI6ChdEZWxldGVGcmVlRm9ybWF0UmVxdWVzdBIPCgdncm91cElkGAEgASgJEg4KBnZlbmRvchgCIAEoCSI9ChRHZXRGcmVlRm9ybWF0UmVxdWVzdBIPCgdncm91cElkGAEgASgJEhQKDGlzQXNzb2NpYXRlZBgCIAEoCCJuChVHZXRGcmVlRm9ybWF0UmVzcG9uc2USDwoHZ3JvdXBJZBgDIAEoCRIOCgZ2ZW5kb3IYASABKAkSNAoKZnJlZUZvcm1hdBgCIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5GcmVlRm9ybUl0ZW0idwoeVXBkYXRlVGFnc0FkZGluZ1NldHRpbmdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEjQKBWl0ZW1zGAMgAygLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ3NBZGRpbmdTZXR0aW5nIj4KG0dldFRhZ3NBZGRpbmdTZXR0aW5nUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCSJJChFUYWdzQWRkaW5nU2V0dGluZxIPCgdncm91cElkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSDwoHdGFnS2V5cxgDIAMoCSJNCh1FeHBvcnRTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQEibworRXhwb3J0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESEgoKZGlyZWN0TGluaxgDIAEoCCJ0CjBFeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSFAoGZm9ybWF0GAEgASgJQgTiQQECEhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEhIKCmRpcmVjdExpbmsYAyABKAgiNgocRXhwb3J0QmlsbGluZ0dyb3VwQ3N2UmVxdWVzdBIWCghsYW5ndWFnZRgCIAEoCUIE4kEBASI1Ch1FeHBvcnRCaWxsaW5nR3JvdXBDc3ZSZXNwb25zZRIUCgxkb3dubG9hZExpbmsYASABKAkiXAoeRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXF1ZXN0EhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEiIKFGluY2x1ZGVNaXNjZWxsYW5lb3VzGAMgASgIQgTiQQEBIjcKH0V4cG9ydEludm9pY2VTZXR0aW5nQ3N2UmVzcG9uc2USFAoMZG93bmxvYWRMaW5rGAEgASgJIkAKLUdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJIjwKLkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiuQEKIUFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBIPCgdncm91cElkGAEgASgJElMKB2lkVG9LZXkYAiADKAsyQi5ibHVlYXBpLmJpbGxpbmcudjEuQWRkQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0LklkVG9LZXlFbnRyeRouCgxJZFRvS2V5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJOCiREZWxldGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIVCg1jdXN0b21GaWVsZElkGAIgASgJInYKH0FkZEFjY291bnRUb0JpbGxpbmdHcm91cFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMgoIYWNjb3VudHMYAyADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkIlEKDEFjY291bnRUb0FkZBISCgpjdXN0b21lcklkGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBG5vdGUYBCABKAkiqwEKHEFkZFRhZ3NUb0JpbGxpbmdHcm91cFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMAoIc2V0dGluZ3MYAyADKAsyHi5ibHVlYXBpLmJpbGxpbmcudjEuVGFnU2V0dGluZxI4Cg1ub25UYWdTZXR0aW5nGAQgASgLMiEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ1NldHRpbmciRwoKVGFnU2V0dGluZxISCgpjdXN0b21lcklkGAEgASgJEiUKBHRhZ3MYAiADKAsyFy5ibHVlYXBpLmJpbGxpbmcudjEuVGFnIjEKA1RhZxILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSDgoGYXNzaWduGAMgASgFIj4KDU5vblRhZ1NldHRpbmcSDwoHaW5jbHVkZRgBIAEoCBIMCgR0eXBlGAIgASgJEg4KBmFtb3VudBgDIAEoASI+Ch1TYXZlVGFnSW52b2ljZVNldHRpbmdSZXNwb25zZRIOCgZzdGF0dXMYASABKAkSDQoFZXJyb3IYAiABKAkifgomVXBkYXRlTm9uVGFnR3JvdXBUb0JpbGxpbmdHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEjgKCHNldHRpbmdzGAMgAygLMiYuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ0dyb3VwU2V0dGluZyI+ChJOb25UYWdHcm91cFNldHRpbmcSCgoCaWQYASABKAkSDAoEdHlwZRgCIAEoCRIOCgZhbW91bnQYAyABKAEimgEKGlNhdmVJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhEKCWFsbEdyb3VwcxgDIAEoCBIOCgZncm91cHMYBCADKAkSOwoOaW52b2ljZVNldHRpbmcYBSABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzIpUECg9JbnZvaWNlU2V0dGluZ3MSEQoJaW52b2ljZU5vGAIgASgJEhQKDGRpc2NvdW50UmF0ZRgEIAEoARIbChNkaXNjb3VudFRhcmdldFVzYWdlGAUgASgJEhkKEWRpc2NvdW50Q2FsY0xvZ2ljGAYgASgJEg8KB3RheFJhdGUYByABKAESEgoKc3VwcG9ydEZlZRgIIAEoCRITCgtzdXBwb3J0UmF0ZRgJIAEoARIcChRzdXBwb3J0RmVlQ2FsY1RhcmdldBgKIAEoCRISCgpzdXBwb3J0Rml4GAsgASgBEhcKD3N1YnN0aXR1dGlvbkZlZRgMIAEoCRIYChBzdWJzdGl0dXRpb25SYXRlGA0gASgBEhcKD3N1YnN0aXR1dGlvbkZpeBgOIAEoARIhChlzdWJzdGl0dXRpb25GZWVDYWxjVGFyZ2V0GA8gASgJEiIKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGBAgASgJEh8KF3N1YnN0aXR1dGlvbkZlZUNhbGNUeXBlGBEgASgJEhAKCGN1cnJlbmN5GAMgASgJEhQKDGV4Y2hhbmdlUmF0ZRgSIAEoARIMCgRtZW1vGBMgASgJEhAKCGNhbGNUeXBlGBQgASgJEjkKD2FkZGl0aW9uYWxJdGVtcxgVIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5GcmVlRm9ybUl0ZW0irQMKEEJhc2ljSW5mb3JtYXRpb24SGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgDIAEoCRITCgtjb21wYW55TmFtZRgEIAEoCRIWCglhZGRyZXNzZWUYBSABKAlIAIgBARIUCgdjb3VudHJ5GAYgASgJSAGIAQESFwoKcG9zdGFsQ29kZRgHIAEoCUgCiAEBEhEKBGNpdHkYCCABKAlIA4gBARIYCgtwaG9uZU51bWJlchgJIAEoCUgEiAEBEhkKDGFkZHJlc3NMaW5lMRgKIAEoCUgFiAEBEhkKDGFkZHJlc3NMaW5lMhgLIAEoCUgGiAEBEhIKBXN0YXRlGAwgASgJSAeIAQESFwoKcHJlZmVjdHVyZRgNIAEoCUgIiAEBQgwKCl9hZGRyZXNzZWVCCgoIX2NvdW50cnlCDQoLX3Bvc3RhbENvZGVCBwoFX2NpdHlCDgoMX3Bob25lTnVtYmVyQg8KDV9hZGRyZXNzTGluZTFCDwoNX2FkZHJlc3NMaW5lMkIICgZfc3RhdGVCDQoLX3ByZWZlY3R1cmUidwopVXBkYXRlQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvblJlcXVlc3QSCgoCaWQYASABKAkSPgoQYmFzaWNJbmZvcm1hdGlvbhgCIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5CYXNpY0luZm9ybWF0aW9uIrwBCiVVcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHNSZXF1ZXN0EgoKAmlkGAEgASgJElcKB2lkVG9LZXkYAiADKAsyRi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRzUmVxdWVzdC5JZFRvS2V5RW50cnkaLgoMSWRUb0tleUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicgojVXBkYXRlQmlsbGluZ0dyb3VwRnJlZUZvcm1hdFJlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEi8KBWl0ZW1zGAMgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSLqAgooVXBkYXRlQmlsbGluZ0dyb3VwTGlua2VkUmVzb3VyY2VzUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSFwoPc2VsZWN0aW9uTWV0aG9kGAMgASgJEjIKCGFjY291bnRzGAQgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRUb0FkZBIwCghzZXR0aW5ncxgFIAMoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5UYWdTZXR0aW5nEj0KDW5vblRhZ1NldHRpbmcYBiABKAsyIS5ibHVlYXBpLmJpbGxpbmcudjEuTm9uVGFnU2V0dGluZ0gAiAEBEj8KDmFjY291bnRPcHRpb25zGAcgASgLMiIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRPcHRpb25zSAGIAQFCEAoOX25vblRhZ1NldHRpbmdCEQoPX2FjY291bnRPcHRpb25zIrgBCihVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EgoKAmlkGAEgASgJEhkKDGJpbGxpbmdUaXRsZRgCIAEoCUgAiAEBEhwKD2NhbGN1bGF0aW9uVHlwZRgDIAEoCUgBiAEBEhUKCGxhbmd1YWdlGAQgASgJSAKIAQFCDwoNX2JpbGxpbmdUaXRsZUISChBfY2FsY3VsYXRpb25UeXBlQgsKCV9sYW5ndWFnZSKvAQooVXBkYXRlQmlsbGluZ0dyb3VwUmVzZWxsZXJDaGFyZ2VzUmVxdWVzdBIKCgJpZBgBIAEoCRIcCg9pbnZvaWNlVGVtcGxhdGUYAiABKAlIAIgBARJFCgdpbnZvaWNlGAMgASgLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlQhIKEF9pbnZvaWNlVGVtcGxhdGUivwQKKlVwZGF0ZUJpbGxpbmdHcm91cEFkZGl0aW9uYWxDaGFyZ2VzUmVxdWVzdBIKCgJpZBgBIAEoCRJ4CgNhd3MYAiADKAsyZS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0LkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nQgTiQQECEnoKBWF6dXJlGAMgAygLMmUuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEFkZGl0aW9uYWxDaGFyZ2VzUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhJ4CgNnY3AYBCADKAsyZS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0LkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nQgTiQQECGpQBCiZDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZxIQCgJpZBgBIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgCIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIWCghhY2NvdW50cxgDIAMoCUIE4kEBASInChlEZWxldGVCaWxsaW5nR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJIlIKKEdldEJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECIqABCilHZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXNwb25zZRIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSDwoHZW5hYmxlZBgDIAEoCBJGCgdzZXR0aW5nGAQgAygLMjUuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhbiLwAQorVXBkYXRlQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISFQoHZW5hYmxlZBgDIAEoCEIE4kEBARJMCgdzZXR0aW5nGAQgAygLMjUuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhbkIE4kEBARI0Cgp1cGRhdGVNYXNrGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBAiIxChdHZXRBbm5vdW5jZW1lbnRzUmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAEoCSKnAQoZQ3JlYXRlQW5ub3VuY2VtZW50UmVxdWVzdBINCgVsYWJlbBgBIAEoCRIMCgR0eXBlGAIgASgJEhAKCGNvbnRlbnRzGAMgASgJEhUKDWJpbGxpbmdHcm91cHMYBCADKAkSGAoQYWxsQmlsbGluZ0dyb3VwcxgFIAEoCBINCgVzdGFydBgGIAEoAxILCgNlbmQYByABKAMSDgoGc3RhdHVzGAggASgJIngKGVVwZGF0ZUFubm91bmNlbWVudFJlcXVlc3QSFgoOYW5ub3VuY2VtZW50SWQYASABKAkSQwoMYW5ub3VuY2VtZW50GAIgASgLMi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFubm91bmNlbWVudFJlcXVlc3QiSgogVXBkYXRlQW5ub3VuY2VtZW50c1N0YXR1c1JlcXVlc3QSFgoOYW5ub3VuY2VtZW50SWQYASADKAkSDgoGc3RhdHVzGAIgASgJIkUKHVVwZGF0ZUFubm91bmNlbWVudERhdGVSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgAygJEgwKBGRhdGUYAiABKAMiMwoZRGVsZXRlQW5ub3VuY2VtZW50UmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAEoCSLpAQoMQW5ub3VuY2VtZW50EgoKAmlkGAEgASgJEg0KBWxhYmVsGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHbWVzc2FnZRgEIAEoCRIVCg1iaWxsaW5nR3JvdXBzGAUgAygJEhgKEGFsbEJpbGxpbmdHcm91cHMYDSABKAgSDQoFc3RhcnQYBiABKAkSCwoDZW5kGAcgASgJEgwKBGRhdGUYCCABKAkSDgoGc3RhdHVzGAkgASgJEhIKCnVzZXJTdGF0dXMYCiABKAkSDwoHY3JlYXRlZBgLIAEoCRIPCgd1cGRhdGVkGAwgASgJIjYKI0dldEJpbGxpbmdHcm91cEFubm91bmNlbWVudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkilgEKJEdldEJpbGxpbmdHcm91cEFubm91bmNlbWVudHNSZXNwb25zZRIPCgdncm91cElkGAEgASgJEhEKCWdyb3VwTmFtZRgCIAEoCRIRCgljb21wYW55SWQYAyABKAkSNwoNYW5ub3VuY2VtZW50cxgEIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5Bbm5vdW5jZW1lbnQiEwoRR2V0Q3JlZGl0c1JlcXVlc3QixAEKBkNyZWRpdBIKCgJpZBgBIAEoCRISCgpjdXN0b21lcklkGAIgASgJEhQKDGN1c3RvbWVyTmFtZRgDIAEoCRIUCgxjcmVkaXRBbW91bnQYBCABKAESDAoEdGVybRgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIPCgdjcmVhdGVkGAcgASgJEhIKCmluaXRpYWxGZWUYCCABKAESFQoNY3JlZGl0QmFsYW5jZRgJIAEoARIPCgdhcHBsaWVkGAogASgIIhcKFUdldENzdlNldHRpbmdzUmVxdWVzdCKkAQoKQ3N2U2V0dGluZxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEjIKA2NvbBgDIAMoCzIlLmJsdWVhcGkuYmlsbGluZy52MS5Dc3ZTZXR0aW5nLkNvbHVtbhpICgZDb2x1bW4SDAoEbmFtZRgBIAEoCRIKCgJpZBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIPCgdlbmFibGVkGAQgASgIIuYBCiBVcGRhdGVJbnZvaWNlRXhjaGFuZ2VSYXRlUmVxdWVzdBINCgVtb250aBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSXAoMZXhjaGFuZ2VSYXRlGAMgAygLMkYuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VFeGNoYW5nZVJhdGVSZXF1ZXN0LkV4Y2hhbmdlUmF0ZUVudHJ5EhAKCGdyb3VwSWRzGAQgAygJGjMKEUV4Y2hhbmdlUmF0ZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEiWwoaQ29udmVydEludm9pY2VUb1BkZlJlcXVlc3QSDAoEZGF0ZRgBIAEoCRIVCg1iaWxsaW5nZ3JvdXBzGAIgAygJEhgKEGFsbEJpbGxpbmdHcm91cHMYAyABKAgiRAobQ29udmVydEludm9pY2VUb1BkZlJlc3BvbnNlEhAKCHByb2dyZXNzGAEgASgJEhMKC2Rvd25sb2FkVXJsGAIgASgJIogCCiFMaXN0QmlsbGluZ0dyb3Vwc1BhZ2luYXRlZFJlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sSDwoHdmVuZG9ycxgCIAEoCRIQCghjYWxjVHlwZRgDIAEoCRITCgtkaXNwbGF5Q29zdBgEIAEoCRIOCgZiZ1R5cGUYBSABKAkSEwoLY29tcGFueU5hbWUYBiABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgHIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgIIAEoCRIQCghwYWdlU2l6ZRgJIAEoBRISCgpwYWdlTnVtYmVyGAogASgFIpcCChRCaWxsaW5nR3JvdXBMaXN0SXRlbRIYChBiaWxsaW5nR3JvdXBOYW1lGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhMKC2NvbXBhbnlOYW1lGAMgASgJEhgKEGJpbGxpbmdHcm91cFR5cGUYBCABKAkSTAoHdmVuZG9ycxgFIAMoCzI7LmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBMaXN0SXRlbS5CaWxsaW5nR3JvdXBWZW5kb3ISGQoRYmlsbGluZ0ludGVybmFsSWQYBiABKAkaNQoSQmlsbGluZ0dyb3VwVmVuZG9yEg4KBnZlbmRvchgBIAEoCRIPCgdlbmFibGVkGAIgASgIIrQBCiJMaXN0QmlsbGluZ0dyb3Vwc1BhZ2luYXRlZFJlc3BvbnNlEj8KDWJpbGxpbmdHcm91cHMYASADKAsyKC5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwTGlzdEl0ZW0SEgoKdG90YWxDb3VudBgCIAEoBRITCgtjdXJyZW50UGFnZRgDIAEoBRIQCghwYWdlU2l6ZRgEIAEoBRISCgp0b3RhbFBhZ2VzGAUgASgFIo4BCiFDaGlsZEJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24SCgoCaWQYASABKAkSEgoKaW50ZXJuYWxJZBgGIAEoCRIQCghwYXJlbnRJZBgCIAEoCRIUCgxyb290UGFyZW50SWQYBSABKAkSDAoEbmFtZRgDIAEoCRITCgtjb21wYW55TmFtZRgEIAEoCSK+AQokQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwEhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgDIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIsCghhY2NvdW50cxgEIAMoCzIULmJsdWVhcGkuYXBpLkFjY291bnRCBOJBAQEigAIKEUNoaWxkQmlsbGluZ0dyb3VwEk8KEGJhc2ljSW5mb3JtYXRpb24YASABKAsyNS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uEk0KD2ludm9pY2VTZXR0aW5ncxgCIAEoCzI0LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncxI5CgtiaWxsaW5nSW5mbxgDIAEoCzIkLmJsdWVhcGkuYXBpLnJpcHBsZS5CaWxsaW5nR3JvdXBJbmZvEhAKCGhhc0NoaWxkGAQgASgIIuUBCiBDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncxJDCgNhd3MYASABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxIhChlhY2NvdW50U3VwcG9ydFBsYW5FbmFibGVkGAIgASgIElkKGmFjY291bnRTdXBwb3J0UGxhblNldHRpbmdzGAMgAygLMjUuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhbiL7AQoeQ3JlYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0Ek8KEGJhc2ljSW5mb3JtYXRpb24YASABKAsyNS5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uEjkKC2JpbGxpbmdJbmZvGAMgASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8STQoPaW52b2ljZVNldHRpbmdzGAIgASgLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzIiEKH0NyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiMQobR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkiVgocR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZRI2CgdkZXRhaWxzGAEgASgLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwIkEKHVJlYWRDaGlsZEJpbGxpbmdHcm91cHNSZXF1ZXN0Eg4KBnJvb3RJZBgBIAEoCRIQCghwYXJlbnRJZBgCIAEoCSLAAQoeVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSTwoQYmFzaWNJbmZvcm1hdGlvbhgCIAEoCzI1LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24SOQoLYmlsbGluZ0luZm8YAyABKAsyJC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwSW5mbyIhCh9VcGRhdGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIjQKHkRlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJIiEKH0RlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UikgEKLVVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJEk0KD2ludm9pY2VTZXR0aW5ncxgCIAEoCzI0LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncyIwCi5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1Jlc3BvbnNlIpoDCjNTZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSGAoKaW50ZXJuYWxJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISFAoGcm9vdElkGAMgASgJQgTiQQECEoUBCgdzZXR0aW5nGAQgAygLMm4uYmx1ZWFwaS5iaWxsaW5nLnYxLlNldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdC5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZ0IE4kEBAhqUAQomQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmcSEAoCaWQYASABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAiABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISFgoIYWNjb3VudHMYAyADKAlCBOJBAQEiVAoyU2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCRIKCgJpZBgCIAEoCSKOAQo5U2V0Q2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSPQoIYWNjb3VudHMYAiADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFNlcnZpY2VEaXNjb3VudHMiWQozR2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSDgoGdmVuZG9yGAIgASgJIs4BCjRHZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlc3BvbnNlEhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgDIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIsCghhY2NvdW50cxgEIAMoCzIULmJsdWVhcGkuYXBpLkFjY291bnRCBOJBAQEiSAoyR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCSJBCjNHZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiUAo6UmVhZENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJInkKHUJ1bGtDcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0Eg4KBnZlbmRvchgFIAEoCRISCgpjc3ZDb250ZW50GAEgASgMEhEKCWRlbGltaXRlchgCIAEoCRIRCgloYXNIZWFkZXIYAyABKAgSDgoGZHJ5UnVuGAQgASgIIlUKG0J1bGtDcmVhdGVCaWxsaW5nR3JvdXBFcnJvchINCgVpbmRleBgBIAEoBRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJIu0BCh5CdWxrQ3JlYXRlQmlsbGluZ0dyb3VwTWV0YWRhdGESDgoGc3RhdHVzGAEgASgJEhIKCnRvdGFsQ291bnQYAiABKAUSFgoOcHJvY2Vzc2VkQ291bnQYAyABKAUSFAoMc3VjY2Vzc0NvdW50GAQgASgFEhQKDGZhaWx1cmVDb3VudBgFIAEoBRI/CgZlcnJvcnMYBiADKAsyLy5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0NyZWF0ZUJpbGxpbmdHcm91cEVycm9yEhEKCXN0YXJ0VGltZRgHIAEoCRIPCgdlbmRUaW1lGAggASgJIrkBChNFeGNsdWRlU2VydmljZUVudHJ5Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJEhcKD2V4Y2VwdF9wYXllcl9pZBgGIAMoCRIOCgZhY3Rpb24YByABKAkSDgoGc3RhdHVzGAggASgJEhUKDWVycm9yX21lc3NhZ2UYCSABKAkijwEKIENyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJEhcKD2V4Y2VwdF9wYXllcl9pZBgGIAMoCSJbCiFDcmVhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2USNgoFZW50cnkYASABKAsyJy5ibHVlYXBpLmJpbGxpbmcudjEuRXhjbHVkZVNlcnZpY2VFbnRyeSKPAQogVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QSDgoGbXNwX2lkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIQCghwYXllcl9pZBgDIAEoCRIPCgdzZXJ2aWNlGAQgASgJEg8KB3Byb2R1Y3QYBSABKAkSFwoPZXhjZXB0X3BheWVyX2lkGAYgAygJIlsKIVVwZGF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZRI2CgVlbnRyeRgBIAEoCzInLmJsdWVhcGkuYmlsbGluZy52MS5FeGNsdWRlU2VydmljZUVudHJ5InYKIERlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSEAoIcGF5ZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIPCgdwcm9kdWN0GAUgASgJIlsKIURlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZRI2CgVlbnRyeRgBIAEoCzInLmJsdWVhcGkuYmlsbGluZy52MS5FeGNsdWRlU2VydmljZUVudHJ5IjwKGkxpc3RFeGNsdWRlU2VydmljZXNSZXF1ZXN0Eg4KBm1zcF9pZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkiVwobTGlzdEV4Y2x1ZGVTZXJ2aWNlc1Jlc3BvbnNlEjgKB2VudHJpZXMYASADKAsyJy5ibHVlYXBpLmJpbGxpbmcudjEuRXhjbHVkZVNlcnZpY2VFbnRyeSJECgtTZXJ2aWNlSXRlbRIKCgJpZBgBIAEoCRIMCgRjb2RlGAIgASgJEg0KBW5hbWVzGAMgAygJEgwKBHNrdXMYBCADKAkiMwoTTGlzdFNlcnZpY2VzUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDAoEY29kZRgCIAEoCSJFChRMaXN0U2VydmljZXNSZXNwb25zZRItCgRkYXRhGAEgAygLMh8uYmx1ZWFwaS5iaWxsaW5nLnYxLlNlcnZpY2VJdGVtInIKFkJ1bGtMaW5rQWNjb3VudFJlcXVlc3QSDgoGdmVuZG9yGAUgASgJEhIKCmNzdkNvbnRlbnQYASABKAwSEQoJZGVsaW1pdGVyGAIgASgJEhEKCWhhc0hlYWRlchgDIAEoCBIOCgZkcnlSdW4YBCABKAgiYQoUQnVsa0xpbmtBY2NvdW50RXJyb3ISDQoFaW5kZXgYASABKAUSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEQoJYWNjb3VudElkGAMgASgJEg8KB21lc3NhZ2UYBCABKAki3wEKF0J1bGtMaW5rQWNjb3VudE1ldGFkYXRhEg4KBnN0YXR1cxgBIAEoCRISCgp0b3RhbENvdW50GAIgASgFEhYKDnByb2Nlc3NlZENvdW50GAMgASgFEhQKDHN1Y2Nlc3NDb3VudBgEIAEoBRIUCgxmYWlsdXJlQ291bnQYBSABKAUSOAoGZXJyb3JzGAYgAygLMiguYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtMaW5rQWNjb3VudEVycm9yEhEKCXN0YXJ0VGltZRgHIAEoCRIPCgdlbmRUaW1lGAggASgJIj4KGkJ1bGtUYWdCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmNzdkNvbnRlbnQYASABKAwSDAoEbW9kZRgCIAEoCSKCAQoYQnVsa1RhZ0JpbGxpbmdHcm91cEVycm9yEg0KBWluZGV4GAEgASgFEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhIKCmN1c3RvbWVySWQYAyABKAkSCwoDa2V5GAQgASgJEg0KBXZhbHVlGAUgASgJEg8KB21lc3NhZ2UYBiABKAki5wEKG0J1bGtUYWdCaWxsaW5nR3JvdXBNZXRhZGF0YRIOCgZzdGF0dXMYASABKAkSEgoKdG90YWxDb3VudBgCIAEoBRIWCg5wcm9jZXNzZWRDb3VudBgDIAEoBRIUCgxzdWNjZXNzQ291bnQYBCABKAUSFAoMZmFpbHVyZUNvdW50GAUgASgFEjwKBmVycm9ycxgGIAMoCzIsLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrVGFnQmlsbGluZ0dyb3VwRXJyb3ISEQoJc3RhcnRUaW1lGAcgASgJEg8KB2VuZFRpbWUYCCABKAkyo7IBCgdCaWxsaW5nEoABChFMaXN0QmlsbGluZ0dyb3VwcxIsLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QaIC5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwIhmC0+STAhMSES92MS9iaWxsaW5nZ3JvdXBzMAESsAEKGkxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkEjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVxdWVzdBo2LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QmlsbGluZ0dyb3Vwc1BhZ2luYXRlZFJlc3BvbnNlIiOC0+STAh0SGy92MS9iaWxsaW5nZ3JvdXBzOnBhZ2luYXRlZBKDAQoSQ3JlYXRlQmlsbGluZ0dyb3VwEi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QaIC5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwIhyC0+STAhY6ASoiES92MS9iaWxsaW5nZ3JvdXBzEpYBChhDcmVhdGVCaWxsaW5nR3JvdXBNZXJnZWQSMy5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwTWVyZ2VkUmVxdWVzdBogLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiI4LT5JMCHToBKiIYL3YxL2JpbGxpbmdncm91cHMvbWVyZ2VkEnkKEURlbGV0ZUJpbGxpbkdyb3VwEi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUJpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiHYLT5JMCFyoVL3YxL2JpbGxpbmdncm91cC97aWR9EowBChhBZGRBY2NvdW50VG9CaWxsaW5nR3JvdXASMy5ibHVlYXBpLmJpbGxpbmcudjEuQWRkQWNjb3VudFRvQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIjgtPkkwIdOgEqIhgvdjEvYmlsbGluZ2dyb3VwL2FjY291bnQSmQEKD0dldEJpbGxpbmdHcm91cBIqLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBSZXF1ZXN0GisuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cFJlc3BvbnNlIi2C0+STAicSJS92MS9iaWxsaW5nZ3JvdXBzL3tiaWxsaW5nSW50ZXJuYWxJZH0SkQEKDkdldEFjY2Vzc0dyb3VwEikuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFjY2Vzc0dyb3VwUmVxdWVzdBoqLmJsdWVhcGkuYmlsbGluZy52MS5HZXRBY2Nlc3NHcm91cFJlc3BvbnNlIiiC0+STAiISIC92MS9hY2Nlc3Nncm91cHMve2FjY2Vzc0dyb3VwSWR9Ep4BChZMaXN0QXdzRGFpbHlSdW5IaXN0b3J5EjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBd3NEYWlseVJ1bkhpc3RvcnlSZXF1ZXN0GiYuYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeSIngtPkkwIhOgEqIhwvdjEvYXdzL2RhaWx5cnVuaGlzdG9yeTpyZWFkMAESmgEKE0xpc3RVc2FnZUNvc3RzRHJpZnQSLi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdFVzYWdlQ29zdHNEcmlmdFJlcXVlc3QaIy5ibHVlYXBpLmJpbGxpbmcudjEuVXNhZ2VDb3N0c0RyaWZ0IiyC0+STAiY6ASoiIS92MS97dmVuZG9yfS91c2FnZWNvc3RzZHJpZnQ6cmVhZDABEnwKDUNyZWF0ZUludm9pY2USKC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlSW52b2ljZVJlcXVlc3QaGy5ibHVlYXBpLmFwaS5JbnZvaWNlTWVzc2FnZSIkgtPkkwIeOgEqIhkvdjEvaW52b2ljZS97ZGF0ZX06Y3JlYXRlEpsBChlDcmVhdGVJbnZvaWNlV2l0aFNldHRpbmdzEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLlNhdmVJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0GhsuYmx1ZWFwaS5hcGkuSW52b2ljZU1lc3NhZ2UiMYLT5JMCKzoBKiImL3YxL2ludm9pY2Uve2RhdGV9OmNyZWF0ZSZzYXZlc2V0dGluZ3MSiQEKE1NhdmVJbnZvaWNlU2V0dGluZ3MSLi5ibHVlYXBpLmJpbGxpbmcudjEuU2F2ZUludm9pY2VTZXR0aW5nc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJDoBKiIfL3YxL2ludm9pY2Uve2RhdGV9OnNhdmVzZXR0aW5ncxKiAQoTQ29udmVydEludm9pY2VUb1BkZhIuLmJsdWVhcGkuYmlsbGluZy52MS5Db252ZXJ0SW52b2ljZVRvUGRmUmVxdWVzdBovLmJsdWVhcGkuYmlsbGluZy52MS5Db252ZXJ0SW52b2ljZVRvUGRmUmVzcG9uc2UiKoLT5JMCJDoBKiIfL3YxL2ludm9pY2Uve2RhdGV9OmNvbnZlcnR0b3BkZhJ9ChBHZXRJbnZvaWNlU3RhdHVzEisuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEludm9pY2VTdGF0dXNSZXF1ZXN0GhsuYmx1ZWFwaS5hcGkuSW52b2ljZU1lc3NhZ2UiH4LT5JMCGRIXL3YxL2ludm9pY2Uvc3RhdHVzL3tpZH0SiwEKEUxpc3RJbnZvaWNlU3RhdHVzEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlU3RhdHVzUmVxdWVzdBobLmJsdWVhcGkuYXBpLkludm9pY2VNZXNzYWdlIimC0+STAiM6ASoiHi92MS9pbnZvaWNlL3N0YXR1cy97ZGF0ZX06cmVhZDABEm0KCkdldEludm9pY2USJS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0SW52b2ljZVJlcXVlc3QaFC5ibHVlYXBpLmFwaS5JbnZvaWNlIiKC0+STAhw6ASoiFy92MS9pbnZvaWNlL3tkYXRlfTpyZWFkEn0KC0xpc3RJbnZvaWNlEiYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVxdWVzdBonLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVJlc3BvbnNlIhuC0+STAhU6ASoiEC92MS9pbnZvaWNlOnJlYWQwARKIAQoVVXBkYXRlSW52b2ljZVByZXZpZXdzEjAuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VQcmV2aWV3c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJYLT5JMCHzoBKhoaL3YxL2ludm9pY2Uve2RhdGV9OnByZXZpZXcSlgEKEUV4cG9ydEludm9pY2VGaWxlEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEludm9pY2VGaWxlUmVxdWVzdBotLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRJbnZvaWNlRmlsZVJlc3BvbnNlIiSC0+STAh46ASoiGS92MS9pbnZvaWNlL3tkYXRlfTpleHBvcnQSlgEKE0xpc3RJbnZvaWNlVGVtcGxhdGUSLi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VUZW1wbGF0ZVJlcXVlc3QaLy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VUZW1wbGF0ZVJlc3BvbnNlIhyC0+STAhYSFC92MS9pbnZvaWNlL3RlbXBsYXRlMAESrQEKGUdldEludm9pY2VEaXNwbGF5U2V0dGluZ3MSNC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0SW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QaNS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0SW52b2ljZURpc3BsYXlTZXR0aW5nc1Jlc3BvbnNlIiOC0+STAh0SGy92MS9pbnZvaWNlL2Rpc3BsYXlzZXR0aW5ncxKXAQocVXBkYXRlSW52b2ljZURpc3BsYXlTZXR0aW5ncxI3LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlRGlzcGxheVNldHRpbmdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSImgtPkkwIgOgEqIhsvdjEvaW52b2ljZS9kaXNwbGF5c2V0dGluZ3MSlgEKGVVwZGF0ZUludm9pY2VFeGNoYW5nZVJhdGUSNC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZUV4Y2hhbmdlUmF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiK4LT5JMCJToBKhogL3YxL2ludm9pY2UvZXhjaGFuZ2VyYXRlL3ttb250aH0SrAEKIVVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VUZW1wbGF0ZRI8LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlVGVtcGxhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjGC0+STAis6ASoiJi92MS9iaWxsaW5nZ3JvdXBzL3tpZH0vaW52b2ljZXRlbXBsYXRlErEBChxSZWFkU2VydmljZURpc2NvdW50c1NlcnZpY2VzEjcuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRTZXJ2aWNlRGlzY291bnRzU2VydmljZXNSZXF1ZXN0Gh4uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLlNlcnZpY2UiNoLT5JMCMDoBKiIrL3YxL3NlcnZpY2VkaXNjb3VudHMve3ZlbmRvcn0vc2VydmljZXM6cmVhZDABEqoBCh1DcmVhdGVJbnZvaWNlU2VydmljZURpc2NvdW50cxI4LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaLi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHMiH4LT5JMCGToBKiIUL3YxL3NlcnZpY2VkaXNjb3VudHMSrwEKHVVwZGF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBouLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIkgtPkkwIeOgEqGhkvdjEvc2VydmljZWRpc2NvdW50cy97aWR9EpQBCh1EZWxldGVJbnZvaWNlU2VydmljZURpc2NvdW50cxI4LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIYLT5JMCGyoZL3YxL3NlcnZpY2VkaXNjb3VudHMve2lkfRKqAQobTGlzdEludm9pY2VTZXJ2aWNlRGlzY291bnRzEjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaKy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHMiJILT5JMCHjoBKiIZL3YxL3NlcnZpY2VkaXNjb3VudHM6cmVhZDABEqYBChpHZXRJbnZvaWNlU2VydmljZURpc2NvdW50cxI1LmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaLi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHMiIYLT5JMCGxIZL3YxL3NlcnZpY2VkaXNjb3VudHMve2lkfRKiAQoWRXhwb3J0U2VydmljZURpc2NvdW50cxIxLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBotLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5TZXJ2aWNlRGlzY291bnRzRXhwb3J0IiaC0+STAiA6ASoiGy92MS9zZXJ2aWNlZGlzY291bnRzOmV4cG9ydBLwAQopQ3JlYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSRC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GkUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiNoLT5JMCMDoBKiIrL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2JpbGxpbmdncm91cBLwAQopVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSRC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GkUuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiNoLT5JMCMDoBKhorL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2JpbGxpbmdncm91cBK+AQopRGVsZXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSRC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjOC0+STAi0qKy92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9iaWxsaW5nZ3JvdXAS0QEKIkxpc3RBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPS5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaMi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzIjaC0+STAjA6ASoiKy92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9hY2NvdW50OnJlYWQwARLcAQokQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaQC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiMYLT5JMCKzoBKiImL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQS3AEKJFVwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GkAuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIjGC0+STAis6ASoaJi92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9hY2NvdW50ErkBCiRSZW1vdmVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuUmVtb3ZlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI4gtPkkwIyOgEqGi0vdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYWNjb3VudDpyZW1vdmUSrwEKJERlbGV0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ii6C0+STAigqJi92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9hY2NvdW50Es0BCiRFeHBvcnRBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBo0LmJsdWVhcGkuYXBpLnJpcHBsZS52MS5BY2NvdW50U2VydmljZURpc2NvdW50c0V4cG9ydCIugtPkkwIoOgEqIiMvdjEvc2VydmljZWRpc2NvdW50cy9hY2NvdW50OmV4cG9ydBLaAQopRXhwb3J0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSRC5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GjIuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkdyb3VwU2VydmljZURpc2NvdW50c0V4cG9ydCIzgtPkkwItOgEqIigvdjEvc2VydmljZWRpc2NvdW50cy9iaWxsaW5nZ3JvdXA6ZXhwb3J0EuQBCiZHZXRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJBLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaQi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSIzgtPkkwItEisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYmlsbGluZ2dyb3VwEnMKDkNyZWF0ZVJlc2VsbGVyEikuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZVJlc2VsbGVyUmVxdWVzdBocLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlciIYgtPkkwISOgEqIg0vdjEvcmVzZWxsZXJzEnAKDUxpc3RSZXNlbGxlcnMSKC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdFJlc2VsbGVyc1JlcXVlc3QaHC5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXIiFYLT5JMCDxINL3YxL3Jlc2VsbGVyczABEm8KC0dldFJlc2VsbGVyEiYuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldFJlc2VsbGVyUmVxdWVzdBocLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlciIagtPkkwIUEhIvdjEvcmVzZWxsZXJzL3tpZH0SeAoOVXBkYXRlUmVzZWxsZXISKS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlUmVzZWxsZXJSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyIh2C0+STAhc6ASoaEi92MS9yZXNlbGxlcnMve2lkfRJvCg5EZWxldGVSZXNlbGxlchIpLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVSZXNlbGxlclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiGoLT5JMCFCoSL3YxL3Jlc2VsbGVycy97aWR9EoYBChFHZXRCaWxsaW5nU2V0dGluZxIsLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nU2V0dGluZ1JlcXVlc3QaLS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ1NldHRpbmdSZXNwb25zZSIUgtPkkwIOEgwvdjEvc2V0dGluZ3MSmwEKEUxpc3RFeGNoYW5nZVJhdGVzEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RFeGNoYW5nZVJhdGVzUmVxdWVzdBotLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0RXhjaGFuZ2VSYXRlc1Jlc3BvbnNlIimC0+STAiMSIS92MS97dmVuZG9yfS9leGNoYW5nZXJhdGUve21vbnRofRKWAQoVU2V0R2xvYmFsRXhjaGFuZ2VSYXRlEjAuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEdsb2JhbEV4Y2hhbmdlUmF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiM4LT5JMCLToBKiIoL3YxL2V4Y2hhbmdlcmF0ZS9nbG9iYWwve3ZlbmRvcn0ve21vbnRofRKKAQoUU2V0UGF5ZXJFeGNoYW5nZVJhdGUSLy5ibHVlYXBpLmJpbGxpbmcudjEuU2V0UGF5ZXJFeGNoYW5nZVJhdGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IimC0+STAiM6ASoiHi92MS9leGNoYW5nZXJhdGUvcGF5ZXIve21vbnRofRKfAQobU2V0QmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlEjYuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEJpbGxpbmdHcm91cEV4Y2hhbmdlUmF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMCKjoBKiIlL3YxL2V4Y2hhbmdlcmF0ZS9iaWxsaW5nZ3JvdXAve21vbnRofRJ8ChBMaXN0QWNjZXNzR3JvdXBzEisuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBY2Nlc3NHcm91cHNSZXF1ZXN0Gh8uYmx1ZWFwaS5hcGkucmlwcGxlLkFjY2Vzc0dyb3VwIhiC0+STAhISEC92MS9hY2Nlc3Nncm91cHMwARJ/ChFDcmVhdGVBY2Nlc3NHcm91cBIsLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBY2Nlc3NHcm91cFJlcXVlc3QaHy5ibHVlYXBpLmFwaS5yaXBwbGUuQWNjZXNzR3JvdXAiG4LT5JMCFToBKiIQL3YxL2FjY2Vzc2dyb3VwcxKEAQoRVXBkYXRlQWNjZXNzR3JvdXASLC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0Gh8uYmx1ZWFwaS5hcGkucmlwcGxlLkFjY2Vzc0dyb3VwIiCC0+STAho6ASoaFS92MS9hY2Nlc3Nncm91cHMve2lkfRJ4ChFEZWxldGVBY2Nlc3NHcm91cBIsLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVBY2Nlc3NHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiHYLT5JMCFyoVL3YxL2FjY2Vzc2dyb3Vwcy97aWR9Ep8BChRMaXN0QWJjQmlsbGluZ0dyb3VwcxIvLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWJjQmlsbGluZ0dyb3Vwc1JlcXVlc3QaIy5ibHVlYXBpLmJpbGxpbmcudjEuQWJjQmlsbGluZ0dyb3VwIi+C0+STAikSJy92MS9iaWxsaW5nZ3JvdXBzL2JpbGxpbmdjb25kdWN0b3Ive2lkfTABErYBChtMaXN0QWJjQmlsbGluZ0dyb3VwQWNjb3VudHMSNi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFiY0JpbGxpbmdHcm91cEFjY291bnRzUmVxdWVzdBoeLmJsdWVhcGkuYmlsbGluZy52MS5BYmNBY2NvdW50Ij2C0+STAjcSNS92MS9iaWxsaW5nZ3JvdXBzL2JpbGxpbmdjb25kdWN0b3Ive3BheWVySWR9L2FjY291bnRzMAESnAEKFlJlYWRJbnZvaWNlQWRqdXN0bWVudHMSMS5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZEludm9pY2VBZGp1c3RtZW50c1JlcXVlc3QaHC5ibHVlYXBpLmFwaS53YXZlLkFkanVzdG1lbnQiL4LT5JMCKToBKiIkL3YxL3t2ZW5kb3J9L2ludm9pY2VhZGp1c3RtZW50czpyZWFkMAESowEKFVJlYWRBZGp1c3RtZW50RW50cmllcxIwLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkQWRqdXN0bWVudEVudHJpZXNSZXF1ZXN0GiYuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkFkanVzdG1lbnRFbnRyeSIugtPkkwIoOgEqIiMvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXM6cmVhZDABEpgBChJHZXRBZGp1c3RtZW50RW50cnkSLS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBomLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5BZGp1c3RtZW50RW50cnkiK4LT5JMCJRIjL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL3tpZH0SkAEKFEFwcGx5QWRqdXN0bWVudEVudHJ5Ei8uYmx1ZWFwaS5iaWxsaW5nLnYxLkFwcGx5QWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIvgtPkkwIpOgEqIiQvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXM6YXBwbHkSlgEKFlJlc3RvcmVBZGp1c3RtZW50RW50cnkSMS5ibHVlYXBpLmJpbGxpbmcudjEuUmVzdG9yZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMYLT5JMCKzoBKiImL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzOnJlc3RvcmUSlQEKFFNwbGl0QWRqdXN0bWVudEVudHJ5Ei8uYmx1ZWFwaS5iaWxsaW5nLnYxLlNwbGl0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI0gtPkkwIuOgEqIikvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXMve2lkfS9zcGxpdBKeAQoXQWxsb2NhdGVBZGp1c3RtZW50RW50cnkSMi5ibHVlYXBpLmJpbGxpbmcudjEuQWxsb2NhdGVBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjeC0+STAjE6ASoiLC92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L2FsbG9jYXRlEqsBChtSZXN0b3JlU3BsaXRBZGp1c3RtZW50RW50cnkSNi5ibHVlYXBpLmJpbGxpbmcudjEuUmVzdG9yZVNwbGl0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI8gtPkkwI2OgEqIjEvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXMve2lkfS9zcGxpdDpyZXN0b3JlErQBCh5SZXN0b3JlQWxsb2NhdGVBZGp1c3RtZW50RW50cnkSOS5ibHVlYXBpLmJpbGxpbmcudjEuUmVzdG9yZUFsbG9jYXRlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI/gtPkkwI5OgEqIjQvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXMve2lkfS9hbGxvY2F0ZTpyZXN0b3JlEpcBChRMaXN0QWNjb3VudFJlc291cmNlcxIvLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWNjb3VudFJlc291cmNlc1JlcXVlc3QaIy5ibHVlYXBpLmJpbGxpbmcudjEuUmVzb3VyY2VBY2NvdW50IieC0+STAiESHy92MS9yZXNvdXJjZXMvYWNjb3VudHMve3ZlbmRvcn0wARKLAQoTR2V0QWRqdXN0bWVudENvbmZpZxIuLmJsdWVhcGkuYmlsbGluZy52MS5HZXRBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBodLmJsdWVhcGkuYXBpLkFkanVzdG1lbnRDb25maWciJYLT5JMCHxIdL3YxL2FkanVzdG1lbnRjb25maWcve3ZlbmRvcn0SlAEKFkNyZWF0ZUFkanVzdG1lbnRDb25maWcSMS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QaHS5ibHVlYXBpLmFwaS5BZGp1c3RtZW50Q29uZmlnIiiC0+STAiI6ASoiHS92MS9hZGp1c3RtZW50Y29uZmlnL3t2ZW5kb3J9EpQBChZVcGRhdGVBZGp1c3RtZW50Q29uZmlnEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkuQWRqdXN0bWVudENvbmZpZyIogtPkkwIiOgEqGh0vdjEvYWRqdXN0bWVudGNvbmZpZy97dmVuZG9yfRKKAQoWRGVsZXRlQWRqdXN0bWVudENvbmZpZxIxLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIlgtPkkwIfKh0vdjEvYWRqdXN0bWVudGNvbmZpZy97dmVuZG9yfRKVAQoSUmVhZFVudGFnZ2VkR3JvdXBzEi0uYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRVbnRhZ2dlZEdyb3Vwc1JlcXVlc3QaIS5ibHVlYXBpLmFwaS5yaXBwbGUuVW50YWdnZWRHcm91cCIrgtPkkwIlOgEqIiAvdjEve3ZlbmRvcn0vdW50YWdnZWRncm91cHM6cmVhZDABErgBCh1SZWFkQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlcxI4LmJsdWVhcGkuYmlsbGluZy52MS5SZWFkQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlc1JlcXVlc3QaLC5ibHVlYXBpLmFwaS5yaXBwbGUuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlIi2C0+STAic6ASoiIi92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzOnJlYWQwARKvAQobR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaLC5ibHVlYXBpLmFwaS5yaXBwbGUuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlIiqC0+STAiQSIi92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzL3tpZH0SswEKHkNyZWF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRI5LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GiwuYmx1ZWFwaS5hcGkucmlwcGxlLkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZSIogtPkkwIiOgEqIh0vdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcxK4AQoeVXBkYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEjkuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaLC5ibHVlYXBpLmFwaS5yaXBwbGUuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlIi2C0+STAic6ASoaIi92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzL3tpZH0SnwEKHkRlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRI5LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiqC0+STAiQqIi92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzL3tpZH0S+wEKJ0dldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cBJCLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0GkMuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlc3BvbnNlIkWC0+STAj8SPS92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzL2JpbGxpbmdncm91cC97Z3JvdXBJZH0ve3ZlbmRvcn0wARLPAQonU2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwEkIuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiSILT5JMCQjoBKiI9L3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMvYmlsbGluZ2dyb3VwL3tncm91cElkfS97dmVuZG9yfRLSAQoqRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwEkUuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiRYLT5JMCPyo9L3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMvYmlsbGluZ2dyb3VwL3tncm91cElkfS97dmVuZG9yfRJeCgdHZXRUYWdzEiIuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldFRhZ3NSZXF1ZXN0GhsuYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ0RhdGEiEILT5JMCChIIL3YxL3RhZ3MwARJ+ChFDcmVhdGVDdXN0b21GaWVsZBIsLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDdXN0b21GaWVsZFJlcXVlc3QaHy5ibHVlYXBpLmJpbGxpbmcudjEuQ3VzdG9tRmllbGQiGoLT5JMCFDoBKiIPL3YxL2N1c3RvbWZpZWxkEoEBCg9MaXN0Q3VzdG9tRmllbGQSKi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEN1c3RvbUZpZWxkUmVxdWVzdBofLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GaWVsZCIfgtPkkwIZOgEqIhQvdjEvY3VzdG9tZmllbGQ6cmVhZDABEpQBChpBZGRCaWxsaW5nR3JvdXBDdXN0b21GaWVsZBI1LmJsdWVhcGkuYmlsbGluZy52MS5BZGRCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiJ4LT5JMCIToBKiIcL3YxL2JpbGxpbmdncm91cC9jdXN0b21maWVsZBK+AQobTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkEjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QaNy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVzcG9uc2UiLILT5JMCJjoBKiIhL3YxL2JpbGxpbmdncm91cC9jdXN0b21maWVsZDpyZWFkMAESgwEKFUFkZFRhZ3NUb0JpbGxpbmdHcm91cBIwLmJsdWVhcGkuYmlsbGluZy52MS5BZGRUYWdzVG9CaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiCC0+STAho6ASoiFS92MS9iaWxsaW5nZ3JvdXAvdGFncxKvAQofVXBkYXRlTm9uVGFnR3JvdXBUb0JpbGxpbmdHcm91cBI6LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVOb25UYWdHcm91cFRvQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI4gtPkkwIyOgEqIi0vdjEvYmlsbGluZ2dyb3VwL3tpZH0ve3ZlbmRvcn0vdW50YWdnZWRncm91cHMSsQEKHURlbGV0ZUJpbGxpbmdHcm91cEN1c3RvbUZpZWxkEjguYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI+gtPkkwI4KjYvdjEvYmlsbGluZ2dyb3VwL2N1c3RvbWZpZWxkL3tncm91cElkfS97Y3VzdG9tRmllbGRJZH0SgwEKEVVwZGF0ZUN1c3RvbUZpZWxkEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUN1c3RvbUZpZWxkUmVxdWVzdBofLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GaWVsZCIfgtPkkwIZOgEqGhQvdjEvY3VzdG9tZmllbGQve2lkfRJ3ChFEZWxldGVDdXN0b21GaWVsZBIsLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVDdXN0b21GaWVsZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiHILT5JMCFioUL3YxL2N1c3RvbWZpZWxkL3tpZH0ScgoQQ3JlYXRlRnJlZUZvcm1hdBIrLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVGcmVlRm9ybWF0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIZgtPkkwITOgEqIg4vdjEvZnJlZWZvcm1hdBJ5ChBEZWxldGVGcmVlRm9ybWF0EisuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUZyZWVGb3JtYXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiCC0+STAhoqGC92MS9mcmVlZm9ybWF0L3tncm91cElkfRKIAQoNR2V0RnJlZUZvcm1hdBIoLmJsdWVhcGkuYmlsbGluZy52MS5HZXRGcmVlRm9ybWF0UmVxdWVzdBopLmJsdWVhcGkuYmlsbGluZy52MS5HZXRGcmVlRm9ybWF0UmVzcG9uc2UiIILT5JMCGhIYL3YxL2ZyZWVmb3JtYXQve2dyb3VwSWR9MAESogEKFEdldFRhZ3NBZGRpbmdTZXR0aW5nEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldFRhZ3NBZGRpbmdTZXR0aW5nUmVxdWVzdBolLmJsdWVhcGkuYmlsbGluZy52MS5UYWdzQWRkaW5nU2V0dGluZyIwgtPkkwIqEigvdjEve3ZlbmRvcn0vdGFnc2FkZGluZ3NldHRpbmcve2dyb3VwSWR9MAESmgEKF1VwZGF0ZVRhZ3NBZGRpbmdTZXR0aW5nEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZVRhZ3NBZGRpbmdTZXR0aW5nUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIzgtPkkwItOgEqGigvdjEve3ZlbmRvcn0vdGFnc2FkZGluZ3NldHRpbmcve2dyb3VwSWR9EqEBChVFeHBvcnRCaWxsaW5nR3JvdXBDc3YSMC5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0QmlsbGluZ0dyb3VwQ3N2UmVxdWVzdBoxLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRCaWxsaW5nR3JvdXBDc3ZSZXNwb25zZSIjgtPkkwIdEhsvdjEvZXhwb3J0Y3N2L2JpbGxpbmctZ3JvdXASqQEKF0V4cG9ydEludm9pY2VTZXR0aW5nQ3N2EjIuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEludm9pY2VTZXR0aW5nQ3N2UmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRJbnZvaWNlU2V0dGluZ0NzdlJlc3BvbnNlIiWC0+STAh8SHS92MS9leHBvcnRjc3YvaW52b2ljZS1zZXR0aW5nEqcBCiJVcGRhdGVCaWxsaW5nR3JvdXBCYXNpY0luZm9ybWF0aW9uEj0uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb25SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiqC0+STAiQ6ASoaHy92MS9iaWxsaW5nZ3JvdXAve2lkfTpiYXNpY0luZm8SogEKHlVwZGF0ZUJpbGxpbmdHcm91cEN1c3RvbUZpZWxkcxI5LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ii2C0+STAic6ASoaIi92MS9iaWxsaW5nZ3JvdXAve2lkfTpjdXN0b21GaWVsZHMSnAEKHFVwZGF0ZUJpbGxpbmdHcm91cEZyZWVGb3JtYXQSNy5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwRnJlZUZvcm1hdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiK4LT5JMCJToBKhogL3YxL2JpbGxpbmdncm91cC97aWR9OmZyZWVGb3JtYXQSpQEKIVVwZGF0ZUJpbGxpbmdHcm91cExpbmtlZFJlc291cmNlcxI8LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBMaW5rZWRSZXNvdXJjZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiqC0+STAiQ6ASoaHy92MS9iaWxsaW5nZ3JvdXAve2lkfTpyZXNvdXJjZXMSqwEKIVVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncxI8LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjCC0+STAio6ASoaJS92MS9iaWxsaW5nZ3JvdXAve2lkfTppbnZvaWNlU2V0dGluZ3MSqwEKIVVwZGF0ZUJpbGxpbmdHcm91cFJlc2VsbGVyQ2hhcmdlcxI8LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBSZXNlbGxlckNoYXJnZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjCC0+STAio6ASoaJS92MS9iaWxsaW5nZ3JvdXAve2lkfTpyZXNlbGxlckNoYXJnZXMSsQEKI1VwZGF0ZUJpbGxpbmdHcm91cEFkZGl0aW9uYWxDaGFyZ2VzEj4uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEFkZGl0aW9uYWxDaGFyZ2VzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIygtPkkwIsOgEqGicvdjEvYmlsbGluZ2dyb3VwL3tpZH06YWRkaXRpb25hbENoYXJnZXMS1AEKIUdldEJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhbhI8LmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXF1ZXN0Gj0uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlc3BvbnNlIjKC0+STAiwSKi92MS9iaWxsaW5nZ3JvdXAve2lkfS97dmVuZG9yfS9zdXBwb3J0cGxhbhK2AQokVXBkYXRlQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiNYLT5JMCLzoBKhoqL3YxL2JpbGxpbmdncm91cC97aWR9L3t2ZW5kb3J9L3N1cHBvcnRwbGFuEoEBChJDcmVhdGVBbm5vdW5jZW1lbnQSLS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQW5ub3VuY2VtZW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIkgtPkkwIeOgEqIhkvdjEvcmVzZWxsZXIvYW5ub3VuY2VtZW50EpIBChJVcGRhdGVBbm5vdW5jZW1lbnQSLS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQW5ub3VuY2VtZW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI1gtPkkwIvOgEqGiovdjEvcmVzZWxsZXIvYW5ub3VuY2VtZW50L3thbm5vdW5jZW1lbnRJZH0SnAEKGVVwZGF0ZUFubm91bmNlbWVudHNTdGF0dXMSNC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQW5ub3VuY2VtZW50c1N0YXR1c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMYLT5JMCKzoBKjImL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudHMvYnVsay9zdGF0dXMSoAEKFlVwZGF0ZUFubm91bmNlbWVudERhdGUSMS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQW5ub3VuY2VtZW50RGF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiO4LT5JMCNToBKjIwL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudHMve2Fubm91bmNlbWVudElkfS9kYXRlEo8BChJEZWxldGVBbm5vdW5jZW1lbnQSLS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQW5ub3VuY2VtZW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIygtPkkwIsKiovdjEvcmVzZWxsZXIvYW5ub3VuY2VtZW50L3thbm5vdW5jZW1lbnRJZH0SoAEKEEdldEFubm91bmNlbWVudHMSKy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QW5ub3VuY2VtZW50c1JlcXVlc3QaIC5ibHVlYXBpLmJpbGxpbmcudjEuQW5ub3VuY2VtZW50IjuC0+STAjUSMy9iaWxsaW5nL3YxL3Jlc2VsbGVyL2Fubm91bmNlbWVudHMve2Fubm91bmNlbWVudElkfTABEs4BChxHZXRCaWxsaW5nR3JvdXBBbm5vdW5jZW1lbnRzEjcuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEFubm91bmNlbWVudHNSZXF1ZXN0GjguYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEFubm91bmNlbWVudHNSZXNwb25zZSI5gtPkkwIzEjEvdjEvYmlsbGluZ2dyb3VwL3Jlc2VsbGVyL2Fubm91bmNlbWVudHMve2dyb3VwSWR9MAESZgoKR2V0Q3JlZGl0cxIlLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDcmVkaXRzUmVxdWVzdBoaLmJsdWVhcGkuYmlsbGluZy52MS5DcmVkaXQiE4LT5JMCDRILL3YxL2NyZWRpdHMwARJ2Cg5HZXRDc3ZTZXR0aW5ncxIpLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDc3ZTZXR0aW5nc1JlcXVlc3QaHi5ibHVlYXBpLmJpbGxpbmcudjEuQ3N2U2V0dGluZyIXgtPkkwIREg8vdjEvY3N2c2V0dGluZ3MwARKpAQoXQ3JlYXRlQ2hpbGRCaWxsaW5nR3JvdXASMi5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0GjMuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4SqgEKFEdldENoaWxkQmlsbGluZ0dyb3VwEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBowLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIi+C0+STAikSJy92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfRKgAQoWUmVhZENoaWxkQmlsbGluZ0dyb3VwcxIxLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkQ2hpbGRCaWxsaW5nR3JvdXBzUmVxdWVzdBolLmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cCIqgtPkkwIkOgEqIh8vdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbjpyZWFkMAEStgEKF1VwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIjKC0+STAiw6ASoaJy92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfRKzAQoXRGVsZXRlQ2hpbGRCaWxsaW5nR3JvdXASMi5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0GjMuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiL4LT5JMCKSonL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9EvMBCiZVcGRhdGVDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncxJBLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1JlcXVlc3QaQi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXNwb25zZSJCgtPkkwI8OgEqGjcvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vaW52b2ljZVNldHRpbmdzEtIBCitTZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkYuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IkOC0+STAj06ASoiOC92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9zZXJ2aWNlRGlzY291bnRzEu0BCjJTZXRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxJNLmJsdWVhcGkuYmlsbGluZy52MS5TZXRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiUILT5JMCSjoBKiJFL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L3NlcnZpY2VEaXNjb3VudHMvYWNjb3VudHM6c2V0EuUBCixTZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRJHLmJsdWVhcGkuYmlsbGluZy52MS5TZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiVILT5JMCTjoBKiJJL3YxL3t2ZW5kb3J9L2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L2N1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRKWAgosR2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USRy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0GkguYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVzcG9uc2UiUYLT5JMCSxJJL3YxL3t2ZW5kb3J9L2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L2N1c3RvbWl6ZWRCaWxsaW5nU2VydmljZTABEoACCitHZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkYuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GkcuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSJAgtPkkwI6EjgvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vc2VydmljZURpc2NvdW50cxKLAgozUmVhZENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEk4uYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaMi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzIk6C0+STAkgSRi92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9zZXJ2aWNlRGlzY291bnRzL2FjY291bnRzOnJlYWQwARKHAQoWQnVsa0NyZWF0ZUJpbGxpbmdHcm91cBIxLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iJ4LT5JMCIToBKiIcL3YxL2JpbGxpbmdncm91cHM6YnVsa0NyZWF0ZRK/AQoZQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeRI0LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2UiNYLT5JMCLzoBKiIqL3YxL2JpbGxpbmdncm91cHMvZXhjbHVkZS1zZXJ2aWNlLXNldHRpbmdzEr8BChlVcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5EjQuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0GjUuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZSI1gtPkkwIvOgEqGiovdjEvYmlsbGluZ2dyb3Vwcy9leGNsdWRlLXNlcnZpY2Utc2V0dGluZ3MSvAEKGURlbGV0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnkSNC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QaNS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlIjKC0+STAiwqKi92MS9iaWxsaW5nZ3JvdXBzL2V4Y2x1ZGUtc2VydmljZS1zZXR0aW5ncxKqAQoTTGlzdEV4Y2x1ZGVTZXJ2aWNlcxIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0RXhjbHVkZVNlcnZpY2VzUmVxdWVzdBovLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0RXhjbHVkZVNlcnZpY2VzUmVzcG9uc2UiMoLT5JMCLBIqL3YxL2JpbGxpbmdncm91cHMvZXhjbHVkZS1zZXJ2aWNlLXNldHRpbmdzEoABCgxMaXN0U2VydmljZXMSJy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdFNlcnZpY2VzUmVxdWVzdBooLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0U2VydmljZXNSZXNwb25zZSIdgtPkkwIXEhUvdjEve3ZlbmRvcn0vc2VydmljZXMSfgoPQnVsa0xpbmtBY2NvdW50EiouYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtMaW5rQWNjb3VudFJlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIiyC0+STAiY6ASoiIS92MS9iaWxsaW5nZ3JvdXBzOmJ1bGtMaW5rQWNjb3VudBJ+ChNCdWxrVGFnQmlsbGluZ0dyb3VwEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtUYWdCaWxsaW5nR3JvdXBSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIkgtPkkwIeOgEqIhkvdjEvYmlsbGluZ2dyb3VwczpidWxrVGFnGp0BkkGZARJGKEJFVEEpIEJpbGxpbmcgQVBJLiBCYXNlIFVSTDogaHR0cHM6Ly9hcGkuYWxwaGF1cy5jbG91ZC9tL2JsdWUvYmlsbGluZxpPChJTZXJ2aWNlIGRlZmluaXRpb24SOWh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9ibHVlYXBpL3RyZWUvbWFpbi9iaWxsaW5nL0JRChljbG91ZC5hbHBoYXVzLmFwaS5iaWxsaW5nQgxCaWxsaW5nUHJvdG9aJmdpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS9iaWxsaW5nYgZwcm90bzM", [file_api_account, file_api_invoice, file_api_costtag, file_api_ripple_accessgroup, file_api_ripple_billinggroup, file_api_ripple_reseller, file_api_ripple_yearmonth, file_api_ripple_rounding, file_api_ripple_invoicelayout, file_api_ripple_duedate, file_api_ripple_exchangerate, file_api_ripple_untaggedgroup, file_api_ripple_customizedbillingservice, file_api_ripple_v1_invoiceservicediscounts, file_api_ripple_v1_accountsupportplan, file_api_ripple_v1_adjustmententry, file_api_adjustment, file_api_wave_adjustment, file_protos_operation, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_empty, file_protoc_gen_openapiv2_options_annotations, file_google_protobuf_field_mask]);
56
+ fileDesc("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SEmJsdWVhcGkuYmlsbGluZy52MSKgBAoMQmlsbGluZ0dyb3VwEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYByABKAkSDAoEdHlwZRgMIAEoCRIQCghoYXNDaGlsZBgNIAEoCBI+ChBiaWxsaW5nR3JvdXBJbmZvGAogASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8SOgoOYWNjb3VudE9wdGlvbnMYCCABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSJgoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50EiIKBHRhZ3MYBiADKAsyFC5ibHVlYXBpLmFwaS5Db3N0VGFnEkgKD2ludm9pY2VTZXR0aW5ncxgFIAEoCzIvLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSSAoPYWRkaXRpb25hbEl0ZW1zGAsgASgLMi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIyCgphd3NPcHRpb25zGAkgASgLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c09wdGlvbnMioAEKG0JpbGxpbmdHcm91cEFkZGl0aW9uYWxJdGVtcxIpCgNhd3MYASADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKwoFYXp1cmUYAiADKAsyHC5ibHVlYXBpLmFwaS5BZGRpdGlvbmFsSXRlbXMSKQoDZ2NwGAMgAygLMhwuYmx1ZWFwaS5hcGkuQWRkaXRpb25hbEl0ZW1zIu4BChtCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSQwoDYXdzGAEgASgLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cFZlbmRvcmVkSW52b2ljZVNldHRpbmcSRQoFYXp1cmUYAiABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxJDCgNnY3AYAyABKAsyNi5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZyLTAwoiQmlsbGluZ0dyb3VwVmVuZG9yZWRJbnZvaWNlU2V0dGluZxIQCghjYWxjVHlwZRgBIAEoCRIUCgxkaXNjb3VudFJhdGUYAiABKAESFwoPc3Vic3RpdHV0aW9uRmVlGAMgASgJEhcKD3N1YnN0aXR1dGlvbkZpeBgEIAEoARIYChBzdWJzdGl0dXRpb25SYXRlGAUgASgBEhIKCnN1cHBvcnRGZWUYBiABKAkSEwoLc3VwcG9ydFJhdGUYByABKAESEgoKc3VwcG9ydEZpeBgIIAEoARIPCgd0YXhSYXRlGAkgASgBEhAKCGN1cnJlbmN5GAogASgJEhsKE2Rpc2NvdW50VGFyZ2V0VXNhZ2UYCyABKAkSIgoac3Vic3RpdHV0aW9uRmVlVGFyZ2V0VXNhZ2UYDCABKAkSGQoRZGlzY291bnRDYWxjTG9naWMYDSABKAkSIQoZc3Vic3RpdHV0aW9uRmVlQ2FsY1RhcmdldBgOIAEoCRIfChdzdWJzdGl0dXRpb25GZWVDYWxjVHlwZRgPIAEoCRIbChNzdXBwb3J0QW1vdW50VGFyZ2V0GBAgASgJEhwKFHN1cHBvcnRGZWVDYWxjVGFyZ2V0GBEgASgJIpIBChhMaXN0QmlsbGluZ0dyb3Vwc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sSDwoHdmVuZG9ycxgCIAEoCRIQCghjYWxjVHlwZRgDIAEoCRITCgtkaXNwbGF5Q29zdBgEIAEoCRIOCgZiZ1R5cGUYBSABKAkiswQKGUNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJEh0KFWludm9pY2VMYXlvdXRDb25maWdJZBgUIAEoCSI1CgpBd3NPcHRpb25zEhYKDnVzZVByb0Zvcm1hQ3VyGAEgASgIEg8KB3BheWVySWQYAiABKAkiqwEKDkFjY291bnRPcHRpb25zEjEKA2F3cxgBIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5SZWdpc3RlckFjY291bnRzEjEKA2djcBgCIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5SZWdpc3RlckFjY291bnRzEjMKBWF6dXJlGAMgASgLMiQuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlZ2lzdGVyQWNjb3VudHMiNgoQUmVnaXN0ZXJBY2NvdW50cxIPCgdlbmFibGVkGAEgASgIEhEKCWFjY291bnRJZBgCIAEoCSJUCg5WZW5kb3JBY2NvdW50cxIOCgZ2ZW5kb3IYASABKAkSMgoIYWNjb3VudHMYAiADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkImAKDEF6dXJlT3B0aW9ucxIVCg1yZXNvdXJjZUdyb3VwGAEgASgIEhsKE2FwcGx5UGNFYXJuZWRDcmVkaXQYAiABKAgSHAoUYXBwbHlDYW1wYWlnblByaWNpbmcYAyABKAgiqgcKH0NyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZFJlcXVlc3QSFgoOYmlsbGluZ0dyb3VwSWQYASABKAkSGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRITCgtjb21wYW55TmFtZRgDIAEoCRIUCgxiaWxsaW5nVGl0bGUYBCABKAkSEwoLcGhvbmVOdW1iZXIYBSABKAkSEgoKcG9zdGFsQ29kZRgGIAEoCRIPCgdhZGRyZXNzGAcgASgJEhAKCHBlcnNvbmFsGAggASgJEg8KB3JlbWFya3MYCSABKAkSEQoJcHJvamVjdElkGAogASgJEhAKCGxhbmd1YWdlGAsgASgJEhMKC2Rpc3BsYXlDb3N0GAwgASgJEhgKEGV4Y2hhbmdlUmF0ZVR5cGUYDSABKAkSOgoOYWNjb3VudE9wdGlvbnMYDyABKAsyIi5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudE9wdGlvbnMSRgoIaW52b2ljZXMYDiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USMgoKYXdzT3B0aW9ucxgQIAEoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5Bd3NPcHRpb25zEgwKBGNpdHkYESABKAkSEgoKcHJlZmVjdHVyZRgSIAEoCRIPCgdjb3VudHJ5GBMgASgJEhkKEWludm9pY2VUZW1wbGF0ZUlkGBQgASgJEjMKC3RhZ1NldHRpbmdzGBUgAygLMh4uYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ1NldHRpbmcSOAoNbm9uVGFnU2V0dGluZxgWIAEoCzIhLmJsdWVhcGkuYmlsbGluZy52MS5Ob25UYWdTZXR0aW5nEjoKDnZlbmRvckFjY291bnRzGBcgAygLMiIuYmx1ZWFwaS5iaWxsaW5nLnYxLlZlbmRvckFjY291bnRzElsKDGN1c3RvbUZpZWxkcxgYIAMoCzJFLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBNZXJnZWRSZXF1ZXN0LkN1c3RvbUZpZWxkc0VudHJ5EjYKDGF6dXJlT3B0aW9ucxgZIAEoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5BenVyZU9wdGlvbnMaMwoRQ3VzdG9tRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASL/AQogQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2USRwoDYXdzGAEgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yEkkKBWF6dXJlGAIgASgLMjouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3RJbnZvaWNlVmVuZG9yEkcKA2djcBgDIAEoCzI6LmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0SW52b2ljZVZlbmRvciLXAwomQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VWZW5kb3ISEAoIY2FsY1R5cGUYASABKAkSFAoMZGlzY291bnRSYXRlGAIgASgBEhcKD3N1YnN0aXR1dGlvbkZlZRgDIAEoCRIXCg9zdWJzdGl0dXRpb25GaXgYBCABKAESGAoQc3Vic3RpdHV0aW9uUmF0ZRgFIAEoARISCgpzdXBwb3J0RmVlGAYgASgJEhMKC3N1cHBvcnRSYXRlGAcgASgBEhIKCnN1cHBvcnRGaXgYCCABKAESDwoHdGF4UmF0ZRgJIAEoARIQCghjdXJyZW5jeRgKIAEoCRIbChNkaXNjb3VudFRhcmdldFVzYWdlGAsgASgJEiIKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGAwgASgJEhkKEWRpc2NvdW50Q2FsY0xvZ2ljGA0gASgJEiEKGXN1YnN0aXR1dGlvbkZlZUNhbGNUYXJnZXQYDiABKAkSHwoXc3Vic3RpdHV0aW9uRmVlQ2FsY1R5cGUYDyABKAkSGwoTc3VwcG9ydEFtb3VudFRhcmdldBgQIAEoCRIcChRzdXBwb3J0RmVlQ2FsY1RhcmdldBgRIAEoCSJjChZHZXRCaWxsaW5nR3JvdXBSZXF1ZXN0EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlEKF0dldEJpbGxpbmdHcm91cFJlc3BvbnNlEjYKDGJpbGxpbmdHcm91cBgBIAEoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAilgEKC0FjY2Vzc0dyb3VwEhUKDWFjY2Vzc0dyb3VwSWQYASABKAkSFwoPYWNjZXNzR3JvdXBOYW1lGAIgASgJEh4KFmFjY2Vzc0dyb3VwRGVzY3JpcHRpb24YAyABKAkSNwoNYmlsbGluZ0dyb3VwcxgEIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiXgoVR2V0QWNjZXNzR3JvdXBSZXF1ZXN0EhUKDWFjY2Vzc0dyb3VwSWQYASABKAkSLgoKZmllbGRfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siTgoWR2V0QWNjZXNzR3JvdXBSZXNwb25zZRI0CgthY2Nlc3NHcm91cBgBIAEoCzIfLmJsdWVhcGkuYmlsbGluZy52MS5BY2Nlc3NHcm91cCKvAgoSQXdzRGFpbHlSdW5IaXN0b3J5EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg0KBW1vbnRoGAMgASgJEkAKCGFjY291bnRzGAQgAygLMi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeS5BY2NvdW50GpQBCgdBY2NvdW50EhEKCWFjY291bnRJZBgBIAEoCRJHCgdoaXN0b3J5GAIgAygLMjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkF3c0RhaWx5UnVuSGlzdG9yeS5BY2NvdW50Lkhpc3RvcnkaLQoHSGlzdG9yeRIRCgl0aW1lc3RhbXAYASABKAkSDwoHdHJpZ2dlchgCIAEoCSI/Ch1MaXN0QXdzRGFpbHlSdW5IaXN0b3J5UmVxdWVzdBINCgVtb250aBgBIAEoCRIPCgdncm91cElkGAIgASgJIlYKGkxpc3RVc2FnZUNvc3RzRHJpZnRSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIZChFiaWxsaW5nSW50ZXJuYWxJZBgCIAEoCRINCgVtb250aBgDIAEoCSKGAQoPVXNhZ2VDb3N0c0RyaWZ0EhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg8KB2FjY291bnQYAyABKAkSEAoIc25hcHNob3QYBCABKAESDwoHY3VycmVudBgFIAEoARIMCgRkaWZmGAYgASgBIjIKEUdldEludm9pY2VSZXF1ZXN0EgwKBGRhdGUYASABKAkSDwoHZ3JvdXBJZBgCIAEoCSI5ChhFeHBvcnRJbnZvaWNlRmlsZVJlcXVlc3QSDAoEZGF0ZRgBIAEoCRIPCgdncm91cElkGAIgASgJIigKGUV4cG9ydEludm9pY2VGaWxlUmVzcG9uc2USCwoDdXJsGAEgASgJIjUKI1JlYWRTZXJ2aWNlRGlzY291bnRzU2VydmljZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCSIkCiJMaXN0SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Il4KIUdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIKCgJpZBgBIAEoCRItCglmaWVsZE1hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrImoKF0ludm9pY2VTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHY3JlYXRlZBgEIAEoCRIPCgd1cGRhdGVkGAUgASgJIhwKGkxpc3RJbnZvaWNlVGVtcGxhdGVSZXF1ZXN0Il0KKFVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VUZW1wbGF0ZVJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISHwoRaW52b2ljZVRlbXBsYXRlSWQYAiABKAlCBOJBAQIingIKG0xpc3RJbnZvaWNlVGVtcGxhdGVSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB2NyZWF0ZWQYBCABKAkSDwoHdXBkYXRlZBgFIAEoCRIZChFudW1iZXJPZkNvbm5lY3RlZBgGIAEoBRJQChVjb25uZWN0ZWRCaWxsaW5nR3JvdXAYByADKAsyMS5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZUNvbm5lY3RlZEJpbGxpbmdHcm91cHMSQQoIaW52b2ljZXMYCCABKAsyLy5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzIiIKIEdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0IkgKIUdldEludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXNwb25zZRIjChtzaG93UklTUFVwZnJvbnRUaW1lSW50ZXJ2YWwYASABKAgirAEKI1VwZGF0ZUludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0ElUKB3NldHRpbmcYASADKAsyRC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZURpc3BsYXlTZXR0aW5nc1JlcXVlc3QuU2V0dGluZ0VudHJ5Gi4KDFNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBImwKHUludm9pY2VDb25uZWN0ZWRCaWxsaW5nR3JvdXBzEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkiPAopTGlzdEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKHAQoeQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEgoKAmlkGAEgASgJEg8KB2FjY291bnQYAiABKAkSSAoQc2VydmljZURpc2NvdW50cxgDIAEoCzIuLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyI4ChdBY2NvdW50U2VydmljZURpc2NvdW50cxIKCgJpZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkifQorQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIm0KLENyZWF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIn0KK1VwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRI9CghhY2NvdW50cxgEIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyJtCixVcGRhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRI9CghhY2NvdW50cxgEIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyI+CitEZWxldGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkifQorUmVtb3ZlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEj0KCGFjY291bnRzGAQgAygLMisuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzIk8KMENyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJEgoKAmlkGAIgASgJIj8KMUNyZWF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiTwowVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSCgoCaWQYAiABKAkiPwoxVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRIKCgJpZBgBIAEoCSJDCjBEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSJXChRDcmVhdGVJbnZvaWNlUmVxdWVzdBIMCgRkYXRlGAQgASgJEg4KBnZlbmRvchgBIAEoCRIRCglhbGxHcm91cHMYAiABKAgSDgoGZ3JvdXBzGAMgAygJIiUKF0dldEludm9pY2VTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIigKGExpc3RJbnZvaWNlU3RhdHVzUmVxdWVzdBIMCgRkYXRlGAEgASgJImAKHFVwZGF0ZUludm9pY2VQcmV2aWV3c1JlcXVlc3QSDAoEZGF0ZRgBIAEoCRIRCglhbGxHcm91cHMYAiABKAgSDgoGZ3JvdXBzGAMgAygJEg8KB2VuYWJsZWQYBCABKAgizwEKFUNyZWF0ZVJlc2VsbGVyUmVxdWVzdBIPCgdncm91cElkGAEgASgJEg0KBWVtYWlsGAIgASgJEhAKCHBhc3N3b3JkGAMgASgJEhQKDG5vdGlmaWNhdGlvbhgEIAEoCBI2Cgp3YXZlQ29uZmlnGAUgAygLMiIuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyQ29uZmlnEjYKCmFxdWFDb25maWcYBiADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWciRgoUTGlzdFJlc2VsbGVyc1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2siUAoSR2V0UmVzZWxsZXJSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIqYCChVVcGRhdGVSZXNlbGxlclJlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISEwoFZW1haWwYAiABKAlCBOJBAQESFwoIcGFzc3dvcmQYAyABKAlCBeJBAgQBEjwKCndhdmVDb25maWcYBCADKAsyIi5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXJDb25maWdCBOJBAQESPAoKYXF1YUNvbmZpZxgFIAMoCzIiLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlckNvbmZpZ0IE4kEBARIbCgxub3RpZmljYXRpb24YBiABKAhCBeJBAgQBEjQKCnVwZGF0ZU1hc2sYByABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQECIiMKFURlbGV0ZVJlc2VsbGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJKChhHZXRCaWxsaW5nU2V0dGluZ1JlcXVlc3QSLgoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sixwIKGUdldEJpbGxpbmdTZXR0aW5nUmVzcG9uc2USMAoJeWVhck1vbnRoGAEgAygLMh0uYmx1ZWFwaS5hcGkucmlwcGxlLlllYXJNb250aBI0Cg5yb3VuZGluZ01ldGhvZBgCIAEoCzIcLmJsdWVhcGkuYXBpLnJpcHBsZS5Sb3VuZGluZxI6ChRleHBvcnRSb3VuZGluZ01ldGhvZBgDIAEoCzIcLmJsdWVhcGkuYXBpLnJpcHBsZS5Sb3VuZGluZxI4Cg1pbnZvaWNlTGF5b3V0GAQgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQSMwoOaW52b2ljZUR1ZURhdGUYBSABKAsyGy5ibHVlYXBpLmFwaS5yaXBwbGUuRHVlRGF0ZRIXCg9zdXBwb3J0Q3VycmVuY3kYBiADKAkiOQoYTGlzdEV4Y2hhbmdlUmF0ZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCSJlChxTZXRHbG9iYWxFeGNoYW5nZVJhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRINCgVtb250aBgCIAEoCRIQCghjdXJyZW5jeRgDIAEoCRIUCgxleGNoYW5nZVJhdGUYBCABKAEidwobU2V0UGF5ZXJFeGNoYW5nZVJhdGVSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSDQoFbW9udGgYAyABKAkSEAoIY3VycmVuY3kYBCABKAkSFAoMZXhjaGFuZ2VSYXRlGAUgASgBImwKIlNldEJpbGxpbmdHcm91cEV4Y2hhbmdlUmF0ZVJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRINCgVtb250aBgCIAEoCRIQCghjdXJyZW5jeRgDIAEoCRIUCgxleGNoYW5nZVJhdGUYBCABKAEi4gEKGUxpc3RFeGNoYW5nZVJhdGVzUmVzcG9uc2USDQoFbW9udGgYASABKAkSNgoGY29tbW9uGAIgASgLMiYuYmx1ZWFwaS5hcGkucmlwcGxlLkNvbW1vbkV4Y2hhbmdlUmF0ZRJCCgxiaWxsaW5nR3JvdXAYAyADKAsyLC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlEjoKBXBheWVyGAQgASgLMisuYmx1ZWFwaS5hcGkucmlwcGxlLlZlbmRvclBheWVyRXhjaGFuZ2VSYXRlIkkKF0xpc3RBY2Nlc3NHcm91cHNSZXF1ZXN0Ei4KCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIlQKGENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhUKDWJpbGxpbmdHcm91cHMYAyADKAkiYAoYVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSFQoNYmlsbGluZ0dyb3VwcxgEIAMoCSImChhEZWxldGVBY2Nlc3NHcm91cFJlcXVlc3QSCgoCaWQYASABKAkifQoSTGlzdEludm9pY2VSZXF1ZXN0EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhkKEWJpbGxpbmdJbnRlcm5hbElkGAMgASgJEi4KCmZpZWxkX21hc2sYBCABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIoQJChNMaXN0SW52b2ljZVJlc3BvbnNlEhkKEWJpbGxpbmdJbnRlcm5hbElkGAEgASgJEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEhgKEGJpbGxpbmdHcm91cE5hbWUYAyABKAkSEwoLY29tcGFueU5hbWUYBCABKAkSGgoSZmluYWxpemF0aW9uU3RhdHVzGAUgASgJEhEKCWlzQ3JlYXRlZBgGIAEoCBIZChFpc1NldHRpbmdNb2RpZmllZBgHIAEoCBITCgtjcmVhdGVkRGF0ZRgIIAEoCRITCgt1cGRhdGVkRGF0ZRgJIAEoCRIWCg5jcmVhdGVkVmVuZG9ycxgKIAMoCRITCgtpc1B1Ymxpc2hlZBgLIAEoCBJdChN2ZW5kb3JCaWxsaW5nQW1vdW50GAwgAygLMkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuVmVuZG9yQmlsbGluZ0Ftb3VudEVudHJ5EhoKEmJpbGxpbmdBbW91bnRUb3RhbBgNIAEoCRIQCghjdXJyZW5jeRgOIAEoCRINCgV1cmxJZBgPIAEoCRJtChtjcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmcYECADKAsySC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXNwb25zZS5DcmVhdGVkVmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRJpChlzYXZlZFZlbmRvckludm9pY2VTZXR0aW5nGBEgAygLMkYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UuU2F2ZWRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5Em0KG2RlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZxgSIAMoCzJILmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVJlc3BvbnNlLkRlZmF1bHRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EhAKCGhhc0NoaWxkGBMgASgIGjoKGFZlbmRvckJpbGxpbmdBbW91bnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGmcKIENyZWF0ZWRWZW5kb3JJbnZvaWNlU2V0dGluZ0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlU2V0dGluZ3M6AjgBGmUKHlNhdmVkVmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzOgI4ARpnCiBEZWZhdWx0VmVuZG9ySW52b2ljZVNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzOgI4ASIpChtMaXN0QWJjQmlsbGluZ0dyb3Vwc1JlcXVlc3QSCgoCaWQYASABKAkiTgoiTGlzdEFiY0JpbGxpbmdHcm91cEFjY291bnRzUmVxdWVzdBIPCgdwYXllcklkGAEgASgJEhcKD2JpbGxpbmdHcm91cEFybhgCIAEoCSKPAQoPQWJjQmlsbGluZ0dyb3VwEgsKA2FybhgBIAEoCRIMCgRuYW1lGAIgASgJEhQKDGNyZWF0aW9uVGltZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIYChBwcmltYXJ5QWNjb3VudElkGAUgASgJEgwKBHNpemUYBiABKAkSDgoGc3RhdHVzGAcgASgJIjQKCkFiY0FjY291bnQSEQoJYWNjb3VudElkGAEgASgJEhMKC2FjY291bnROYW1lGAIgASgJImIKHVJlYWRJbnZvaWNlQWRqdXN0bWVudHNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSDQoFbW9udGgYAyABKAkSDwoHZmVlVHlwZRgEIAEoCSKZAQocUmVhZEFkanVzdG1lbnRFbnRyaWVzUmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEwoFbW9udGgYAiABKAlCBOJBAQEaTgoiQWRqdXN0bWVudEVudHJpZXNSZXF1ZXN0QXdzT3B0aW9ucxITCgtzcHBEaXNjb3VudBgBIAEoCBITCgtlZHBEaXNjb3VudBgCIAEoCCJDChlHZXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhIQCgJpZBgCIAEoCUIE4kEBAiKeAwobQXBwbHlBZGp1c3RtZW50RW50cnlSZXF1ZXN0EhQKBnZlbmRvchgBIAEoCUIE4kEBAhJTCgdzZXR0aW5nGAIgASgLMjwuYmx1ZWFwaS5iaWxsaW5nLnYxLkFwcGx5QWRqdXN0bWVudEVudHJ5UmVxdWVzdC5BcHBseVNldHRpbmdCBOJBAQISFQoHZW50cmllcxgDIAMoCUIE4kEBAhr8AQoMQXBwbHlTZXR0aW5nEhMKBW1vbnRoGAEgASgJQgTiQQEBEhUKB3RheEZyZWUYAiABKAhCBOJBAQESagoMZXhjaGFuZ2VSYXRlGAMgAygLMk4uYmx1ZWFwaS5iaWxsaW5nLnYxLkFwcGx5QWRqdXN0bWVudEVudHJ5UmVxdWVzdC5BcHBseVNldHRpbmcuRXhjaGFuZ2VSYXRlRW50cnlCBOJBAQESHwoRYmlsbGluZ0ludGVybmFsSWQYBCABKAlCBOJBAQEaMwoRRXhjaGFuZ2VSYXRlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgBOgI4ASJMCh1SZXN0b3JlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISFQoHZW50cmllcxgDIAMoCUIE4kEBAiJfChtTcGxpdEFkanVzdG1lbnRFbnRyeVJlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhAKAmlkGAIgASgJQgTiQQECEhgKCnN0YXJ0TW9udGgYAyABKAlCBOJBAQIi/AEKHkFsbG9jYXRlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEAoCaWQYAiABKAlCBOJBAQISVgoGY29uZmlnGAMgAygLMkAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFsbG9jYXRlQWRqdXN0bWVudEVudHJ5UmVxdWVzdC5BY2NvdW50Q29uZmlnQgTiQQECEiEKE2FjY291bnRGb3JSZW1haW5pbmcYBCABKAlCBOJBAQIaNwoNQWNjb3VudENvbmZpZxIQCgJpZBgBIAEoCUIE4kEBAhIUCgZhbW91bnQYAiABKAFCBOJBAQIiTAoiUmVzdG9yZVNwbGl0QWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEAoCaWQYAiABKAlCBOJBAQIiTwolUmVzdG9yZUFsbG9jYXRlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEAoCaWQYAiABKAlCBOJBAQIifgoWQ3JlYXRlQ3VzdG9tRmVlUmVxdWVzdBIUCgZ2ZW5kb3IYASABKAlCBOJBAQISEwoFbW9udGgYAiABKAlCBOJBAQISOQoHZW50cmllcxgDIAMoCzIiLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GZWVFbnRyeUIE4kEBAiKhAwoOQ3VzdG9tRmVlRW50cnkSFwoJYWNjb3VudElkGAEgASgJQgTiQQECEhwKDnBheWVyQWNjb3VudElkGAIgASgJQgTiQQECEhUKB2ZlZVR5cGUYAyABKAlCBOJBAQISGQoLbW9iaW5naVR5cGUYBCABKAlCBOJBAQISFAoGYW1vdW50GAUgASgBQgTiQQECEhoKDGN1cnJlbmN5Q29kZRgGIAEoCUIE4kEBAhIZCgtkZXNjcmlwdGlvbhgHIAEoCUIE4kEBAhIZCgtwcm9kdWN0Q29kZRgIIAEoCUIE4kEBARIZCgtwcm9kdWN0TmFtZRgJIAEoCUIE4kEBARIYCgp1c2FnZVN0YXJ0GAogASgJQgTiQQEBEhoKDHRpbWVJbnRlcnZhbBgLIAEoCUIE4kEBARJACgRtZXRhGAwgAygLMiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZlZUVudHJ5Lk1ldGFFbnRyeUIE4kEBARorCglNZXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIqChdDcmVhdGVDdXN0b21GZWVSZXNwb25zZRIPCgdjcmVhdGVkGAEgASgFIn0KH0xpc3RBZGp1c3RtZW50RW50cnlJdGVtc1JlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEhMKBW1vbnRoGAIgASgJQgTiQQECEhkKC21vYmluZ2lUeXBlGAMgASgJQgTiQQEBEhQKBnN0YXR1cxgEIAEoCUIE4kEBASK6AQoTQWRqdXN0bWVudEVudHJ5SXRlbRI1CgVlbnRyeRgBIAEoCzImLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5BZGp1c3RtZW50RW50cnkSPwoEbWV0YRgCIAMoCzIxLmJsdWVhcGkuYmlsbGluZy52MS5BZGp1c3RtZW50RW50cnlJdGVtLk1ldGFFbnRyeRorCglNZXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI8ChtMaXN0QWNjb3VudFJlc291cmNlc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEg0KBW1vbnRoGAIgASgJIkoKD1Jlc291cmNlQWNjb3VudBIPCgdwYXllcklkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSEgoKcmVnaXN0ZXJlZBgDIAEoCCIsChpHZXRBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkijQEKHUNyZWF0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIqCgZjb25maWcYAiADKAsyGi5ibHVlYXBpLmFwaS5Db25maWdGaWx0ZXJzEjAKCGFjY291bnRzGAMgAygLMh4uYmx1ZWFwaS5hcGkuTWFuYWdlbWVudEFjY291bnQijQEKHVVwZGF0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIqCgZjb25maWcYAiADKAsyGi5ibHVlYXBpLmFwaS5Db25maWdGaWx0ZXJzEjAKCGFjY291bnRzGAMgAygLMh4uYmx1ZWFwaS5hcGkuTWFuYWdlbWVudEFjY291bnQiLwodRGVsZXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJImcKGVJlYWRVbnRhZ2dlZEdyb3Vwc1JlcXVlc3QSFAoGdmVuZG9yGAEgASgJQgTiQQECEjQKCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQEBIlwKJFJlYWRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VzUmVxdWVzdBI0CgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFza0IE4kEBASJmCiJHZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EgoKAmlkGAEgASgJEjQKCmZpZWxkX21hc2sYAiABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQEBInwKJUNyZWF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRIwCgZjb25maWcYAyABKAsyIC5ibHVlYXBpLmFwaS5yaXBwbGUuTWV0aG9kQ29uZmlnIsUBCiVVcGRhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0EhAKAmlkGAEgASgJQgTiQQECElQKGGN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRgCIAEoCzIsLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCBOJBAQISNAoKdXBkYXRlTWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQIiMwolRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBIKCgJpZBgBIAEoCSJdCi5HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0EhUKB2dyb3VwSWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECIskBCi9HZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXNwb25zZRIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQISQAoOY2hhcmdpbmdUYXJnZXQYAyABKA4yIi5ibHVlYXBpLmFwaS5yaXBwbGUuQ2hhcmdpbmdUYXJnZXRCBOJBAQISLAoIYWNjb3VudHMYBCADKAsyFC5ibHVlYXBpLmFwaS5BY2NvdW50QgTiQQEBIvcCCi5TZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXBSZXF1ZXN0EhUKB2dyb3VwSWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEoABCgdzZXR0aW5nGAMgAygLMmkuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQIalAEKJkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nEhAKAmlkGAEgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAIgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEhYKCGFjY291bnRzGAMgAygJQgTiQQEBImAKMURlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QSFQoHZ3JvdXBJZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQIikQEKJENyZWF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEkYKB3NldHRpbmcYAyABKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHNTZXR0aW5nIsUBCiRVcGRhdGVJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEAoCaWQYASABKAlCBOJBAQISVQoXaW52b2ljZVNlcnZpY2VEaXNjb3VudHMYAiABKAsyLi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuSW52b2ljZVNlcnZpY2VEaXNjb3VudHNCBOJBAQISNAoKdXBkYXRlTWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCBOJBAQIiMgokRGVsZXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EgoKAmlkGAEgASgJIm4KB1RhZ0RhdGESEgoKY3VzdG9tZXJJZBgBIAEoCRIRCglhY2NvdW50SWQYAiABKAkSFAoMY3VzdG9tZXJOYW1lGAMgASgJEiYKBHRhZ3MYBCADKAsyGC5ibHVlYXBpLmJpbGxpbmcudjEuVGFncyIjCgRUYWdzEgsKA2tleRgBIAEoCRIOCgZ2YWx1ZXMYAiADKAkiLgoOR2V0VGFnc1JlcXVlc3QSDgoGdmVuZG9yGAEgASgJEgwKBHR5cGUYAiABKAkiOwoLQ3VzdG9tRmllbGQSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIl4KF0JpbGxpbmdHcm91cEN1c3RvbUZpZWxkEg0KBXZhbHVlGAEgASgJEjQKC2N1c3RvbUZpZWxkGAIgASgLMh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIjUKIkxpc3RCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKFAQojTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVzcG9uc2USDwoHZ3JvdXBJZBgBIAEoCRJNChhiaWxsaW5nR3JvdXBDdXN0b21GaWVsZHMYAiADKAsyKy5ibHVlYXBpLmJpbGxpbmcudjEuQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQiPAoYQ3JlYXRlQ3VzdG9tRmllbGRSZXF1ZXN0EgsKA2tleRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCSJIChhVcGRhdGVDdXN0b21GaWVsZFJlcXVlc3QSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIiYKGERlbGV0ZUN1c3RvbUZpZWxkUmVxdWVzdBIKCgJpZBgBIAEoCSIYChZMaXN0Q3VzdG9tRmllbGRSZXF1ZXN0ImsKF0NyZWF0ZUZyZWVGb3JtYXRSZXF1ZXN0Eg8KB2dyb3VwSWQYASABKAkSDgoGdmVuZG9yGAIgASgJEi8KBWl0ZW1zGAMgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSJhCgxGcmVlRm9ybUl0ZW0SDQoFbGFiZWwYASABKAkSEAoIdW5pdENvc3QYAiABKAMSDQoFdG90YWwYBSABKAMSEAoIcXVhbnRpdHkYAyABKA0SDwoHZW5hYmxlZBgEIAEoCCI6ChdEZWxldGVGcmVlRm9ybWF0UmVxdWVzdBIPCgdncm91cElkGAEgASgJEg4KBnZlbmRvchgCIAEoCSI9ChRHZXRGcmVlRm9ybWF0UmVxdWVzdBIPCgdncm91cElkGAEgASgJEhQKDGlzQXNzb2NpYXRlZBgCIAEoCCJuChVHZXRGcmVlRm9ybWF0UmVzcG9uc2USDwoHZ3JvdXBJZBgDIAEoCRIOCgZ2ZW5kb3IYASABKAkSNAoKZnJlZUZvcm1hdBgCIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5GcmVlRm9ybUl0ZW0idwoeVXBkYXRlVGFnc0FkZGluZ1NldHRpbmdSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIPCgdncm91cElkGAIgASgJEjQKBWl0ZW1zGAMgAygLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ3NBZGRpbmdTZXR0aW5nIj4KG0dldFRhZ3NBZGRpbmdTZXR0aW5nUmVxdWVzdBIOCgZ2ZW5kb3IYASABKAkSDwoHZ3JvdXBJZBgCIAEoCSJJChFUYWdzQWRkaW5nU2V0dGluZxIPCgdncm91cElkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSDwoHdGFnS2V5cxgDIAMoCSJNCh1FeHBvcnRTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQEibworRXhwb3J0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIUCgZmb3JtYXQYASABKAlCBOJBAQISFgoIbGFuZ3VhZ2UYAiABKAlCBOJBAQESEgoKZGlyZWN0TGluaxgDIAEoCCJ0CjBFeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSFAoGZm9ybWF0GAEgASgJQgTiQQECEhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEhIKCmRpcmVjdExpbmsYAyABKAgiNgocRXhwb3J0QmlsbGluZ0dyb3VwQ3N2UmVxdWVzdBIWCghsYW5ndWFnZRgCIAEoCUIE4kEBASI1Ch1FeHBvcnRCaWxsaW5nR3JvdXBDc3ZSZXNwb25zZRIUCgxkb3dubG9hZExpbmsYASABKAkiXAoeRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXF1ZXN0EhYKCGxhbmd1YWdlGAIgASgJQgTiQQEBEiIKFGluY2x1ZGVNaXNjZWxsYW5lb3VzGAMgASgIQgTiQQEBIjcKH0V4cG9ydEludm9pY2VTZXR0aW5nQ3N2UmVzcG9uc2USFAoMZG93bmxvYWRMaW5rGAEgASgJIkAKLUdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBIPCgdncm91cElkGAEgASgJIjwKLkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2USCgoCaWQYASABKAkiuQEKIUFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBIPCgdncm91cElkGAEgASgJElMKB2lkVG9LZXkYAiADKAsyQi5ibHVlYXBpLmJpbGxpbmcudjEuQWRkQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0LklkVG9LZXlFbnRyeRouCgxJZFRvS2V5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJOCiREZWxldGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIVCg1jdXN0b21GaWVsZElkGAIgASgJInYKH0FkZEFjY291bnRUb0JpbGxpbmdHcm91cFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMgoIYWNjb3VudHMYAyADKAsyIC5ibHVlYXBpLmJpbGxpbmcudjEuQWNjb3VudFRvQWRkIlEKDEFjY291bnRUb0FkZBISCgpjdXN0b21lcklkGAEgASgJEhEKCWFjY291bnRJZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBG5vdGUYBCABKAkiqwEKHEFkZFRhZ3NUb0JpbGxpbmdHcm91cFJlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSMAoIc2V0dGluZ3MYAyADKAsyHi5ibHVlYXBpLmJpbGxpbmcudjEuVGFnU2V0dGluZxI4Cg1ub25UYWdTZXR0aW5nGAQgASgLMiEuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ1NldHRpbmciRwoKVGFnU2V0dGluZxISCgpjdXN0b21lcklkGAEgASgJEiUKBHRhZ3MYAiADKAsyFy5ibHVlYXBpLmJpbGxpbmcudjEuVGFnIjEKA1RhZxILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSDgoGYXNzaWduGAMgASgFIj4KDU5vblRhZ1NldHRpbmcSDwoHaW5jbHVkZRgBIAEoCBIMCgR0eXBlGAIgASgJEg4KBmFtb3VudBgDIAEoASI+Ch1TYXZlVGFnSW52b2ljZVNldHRpbmdSZXNwb25zZRIOCgZzdGF0dXMYASABKAkSDQoFZXJyb3IYAiABKAkifgomVXBkYXRlTm9uVGFnR3JvdXBUb0JpbGxpbmdHcm91cFJlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEjgKCHNldHRpbmdzGAMgAygLMiYuYmx1ZWFwaS5iaWxsaW5nLnYxLk5vblRhZ0dyb3VwU2V0dGluZyI+ChJOb25UYWdHcm91cFNldHRpbmcSCgoCaWQYASABKAkSDAoEdHlwZRgCIAEoCRIOCgZhbW91bnQYAyABKAEimgEKGlNhdmVJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EgwKBGRhdGUYASABKAkSDgoGdmVuZG9yGAIgASgJEhEKCWFsbEdyb3VwcxgDIAEoCBIOCgZncm91cHMYBCADKAkSOwoOaW52b2ljZVNldHRpbmcYBSABKAsyIy5ibHVlYXBpLmJpbGxpbmcudjEuSW52b2ljZVNldHRpbmdzIpUECg9JbnZvaWNlU2V0dGluZ3MSEQoJaW52b2ljZU5vGAIgASgJEhQKDGRpc2NvdW50UmF0ZRgEIAEoARIbChNkaXNjb3VudFRhcmdldFVzYWdlGAUgASgJEhkKEWRpc2NvdW50Q2FsY0xvZ2ljGAYgASgJEg8KB3RheFJhdGUYByABKAESEgoKc3VwcG9ydEZlZRgIIAEoCRITCgtzdXBwb3J0UmF0ZRgJIAEoARIcChRzdXBwb3J0RmVlQ2FsY1RhcmdldBgKIAEoCRISCgpzdXBwb3J0Rml4GAsgASgBEhcKD3N1YnN0aXR1dGlvbkZlZRgMIAEoCRIYChBzdWJzdGl0dXRpb25SYXRlGA0gASgBEhcKD3N1YnN0aXR1dGlvbkZpeBgOIAEoARIhChlzdWJzdGl0dXRpb25GZWVDYWxjVGFyZ2V0GA8gASgJEiIKGnN1YnN0aXR1dGlvbkZlZVRhcmdldFVzYWdlGBAgASgJEh8KF3N1YnN0aXR1dGlvbkZlZUNhbGNUeXBlGBEgASgJEhAKCGN1cnJlbmN5GAMgASgJEhQKDGV4Y2hhbmdlUmF0ZRgSIAEoARIMCgRtZW1vGBMgASgJEhAKCGNhbGNUeXBlGBQgASgJEjkKD2FkZGl0aW9uYWxJdGVtcxgVIAMoCzIgLmJsdWVhcGkuYmlsbGluZy52MS5GcmVlRm9ybUl0ZW0irQMKEEJhc2ljSW5mb3JtYXRpb24SGAoQYmlsbGluZ0dyb3VwTmFtZRgCIAEoCRIWCg5iaWxsaW5nR3JvdXBJZBgDIAEoCRITCgtjb21wYW55TmFtZRgEIAEoCRIWCglhZGRyZXNzZWUYBSABKAlIAIgBARIUCgdjb3VudHJ5GAYgASgJSAGIAQESFwoKcG9zdGFsQ29kZRgHIAEoCUgCiAEBEhEKBGNpdHkYCCABKAlIA4gBARIYCgtwaG9uZU51bWJlchgJIAEoCUgEiAEBEhkKDGFkZHJlc3NMaW5lMRgKIAEoCUgFiAEBEhkKDGFkZHJlc3NMaW5lMhgLIAEoCUgGiAEBEhIKBXN0YXRlGAwgASgJSAeIAQESFwoKcHJlZmVjdHVyZRgNIAEoCUgIiAEBQgwKCl9hZGRyZXNzZWVCCgoIX2NvdW50cnlCDQoLX3Bvc3RhbENvZGVCBwoFX2NpdHlCDgoMX3Bob25lTnVtYmVyQg8KDV9hZGRyZXNzTGluZTFCDwoNX2FkZHJlc3NMaW5lMkIICgZfc3RhdGVCDQoLX3ByZWZlY3R1cmUidwopVXBkYXRlQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvblJlcXVlc3QSCgoCaWQYASABKAkSPgoQYmFzaWNJbmZvcm1hdGlvbhgCIAEoCzIkLmJsdWVhcGkuYmlsbGluZy52MS5CYXNpY0luZm9ybWF0aW9uIrwBCiVVcGRhdGVCaWxsaW5nR3JvdXBDdXN0b21GaWVsZHNSZXF1ZXN0EgoKAmlkGAEgASgJElcKB2lkVG9LZXkYAiADKAsyRi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRzUmVxdWVzdC5JZFRvS2V5RW50cnkaLgoMSWRUb0tleUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEicgojVXBkYXRlQmlsbGluZ0dyb3VwRnJlZUZvcm1hdFJlcXVlc3QSCgoCaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEi8KBWl0ZW1zGAMgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkZyZWVGb3JtSXRlbSLqAgooVXBkYXRlQmlsbGluZ0dyb3VwTGlua2VkUmVzb3VyY2VzUmVxdWVzdBIKCgJpZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkSFwoPc2VsZWN0aW9uTWV0aG9kGAMgASgJEjIKCGFjY291bnRzGAQgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRUb0FkZBIwCghzZXR0aW5ncxgFIAMoCzIeLmJsdWVhcGkuYmlsbGluZy52MS5UYWdTZXR0aW5nEj0KDW5vblRhZ1NldHRpbmcYBiABKAsyIS5ibHVlYXBpLmJpbGxpbmcudjEuTm9uVGFnU2V0dGluZ0gAiAEBEj8KDmFjY291bnRPcHRpb25zGAcgASgLMiIuYmx1ZWFwaS5iaWxsaW5nLnYxLkFjY291bnRPcHRpb25zSAGIAQFCEAoOX25vblRhZ1NldHRpbmdCEQoPX2FjY291bnRPcHRpb25zIvYBCihVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3NSZXF1ZXN0EgoKAmlkGAEgASgJEhkKDGJpbGxpbmdUaXRsZRgCIAEoCUgAiAEBEhwKD2NhbGN1bGF0aW9uVHlwZRgDIAEoCUgBiAEBEhUKCGxhbmd1YWdlGAQgASgJSAKIAQESIgoVaW52b2ljZUxheW91dENvbmZpZ0lkGAUgASgJSAOIAQFCDwoNX2JpbGxpbmdUaXRsZUISChBfY2FsY3VsYXRpb25UeXBlQgsKCV9sYW5ndWFnZUIYChZfaW52b2ljZUxheW91dENvbmZpZ0lkIq8BCihVcGRhdGVCaWxsaW5nR3JvdXBSZXNlbGxlckNoYXJnZXNSZXF1ZXN0EgoKAmlkGAEgASgJEhwKD2ludm9pY2VUZW1wbGF0ZRgCIAEoCUgAiAEBEkUKB2ludm9pY2UYAyABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdEludm9pY2VCEgoQX2ludm9pY2VUZW1wbGF0ZSK/BAoqVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0EgoKAmlkGAEgASgJEngKA2F3cxgCIAMoCzJlLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQISegoFYXp1cmUYAyADKAsyZS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0LkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nQgTiQQECEngKA2djcBgEIAMoCzJlLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBBZGRpdGlvbmFsQ2hhcmdlc1JlcXVlc3QuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ1NldHRpbmdCBOJBAQIalAEKJkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nEhAKAmlkGAEgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAIgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEhYKCGFjY291bnRzGAMgAygJQgTiQQEBIicKGURlbGV0ZUJpbGxpbmdHcm91cFJlcXVlc3QSCgoCaWQYASABKAkiUgooR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVxdWVzdBIQCgJpZBgBIAEoCUIE4kEBAhIUCgZ2ZW5kb3IYAiABKAlCBOJBAQIioAEKKUdldEJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlc3BvbnNlEgoKAmlkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIPCgdlbmFibGVkGAMgASgIEkYKB3NldHRpbmcYBCADKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuIvABCitVcGRhdGVCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW5SZXF1ZXN0EhAKAmlkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhIVCgdlbmFibGVkGAMgASgIQgTiQQEBEkwKB3NldHRpbmcYBCADKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuQgTiQQEBEjQKCnVwZGF0ZU1hc2sYBSABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQgTiQQECIjEKF0dldEFubm91bmNlbWVudHNSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgASgJIqcBChlDcmVhdGVBbm5vdW5jZW1lbnRSZXF1ZXN0Eg0KBWxhYmVsGAEgASgJEgwKBHR5cGUYAiABKAkSEAoIY29udGVudHMYAyABKAkSFQoNYmlsbGluZ0dyb3VwcxgEIAMoCRIYChBhbGxCaWxsaW5nR3JvdXBzGAUgASgIEg0KBXN0YXJ0GAYgASgDEgsKA2VuZBgHIAEoAxIOCgZzdGF0dXMYCCABKAkieAoZVXBkYXRlQW5ub3VuY2VtZW50UmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAEoCRJDCgxhbm5vdW5jZW1lbnQYAiABKAsyLS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQW5ub3VuY2VtZW50UmVxdWVzdCJKCiBVcGRhdGVBbm5vdW5jZW1lbnRzU3RhdHVzUmVxdWVzdBIWCg5hbm5vdW5jZW1lbnRJZBgBIAMoCRIOCgZzdGF0dXMYAiABKAkiRQodVXBkYXRlQW5ub3VuY2VtZW50RGF0ZVJlcXVlc3QSFgoOYW5ub3VuY2VtZW50SWQYASADKAkSDAoEZGF0ZRgCIAEoAyIzChlEZWxldGVBbm5vdW5jZW1lbnRSZXF1ZXN0EhYKDmFubm91bmNlbWVudElkGAEgASgJIukBCgxBbm5vdW5jZW1lbnQSCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSDAoEdHlwZRgDIAEoCRIPCgdtZXNzYWdlGAQgASgJEhUKDWJpbGxpbmdHcm91cHMYBSADKAkSGAoQYWxsQmlsbGluZ0dyb3VwcxgNIAEoCBINCgVzdGFydBgGIAEoCRILCgNlbmQYByABKAkSDAoEZGF0ZRgIIAEoCRIOCgZzdGF0dXMYCSABKAkSEgoKdXNlclN0YXR1cxgKIAEoCRIPCgdjcmVhdGVkGAsgASgJEg8KB3VwZGF0ZWQYDCABKAkiNgojR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50c1JlcXVlc3QSDwoHZ3JvdXBJZBgBIAEoCSKWAQokR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50c1Jlc3BvbnNlEg8KB2dyb3VwSWQYASABKAkSEQoJZ3JvdXBOYW1lGAIgASgJEhEKCWNvbXBhbnlJZBgDIAEoCRI3Cg1hbm5vdW5jZW1lbnRzGAQgAygLMiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFubm91bmNlbWVudCITChFHZXRDcmVkaXRzUmVxdWVzdCLEAQoGQ3JlZGl0EgoKAmlkGAEgASgJEhIKCmN1c3RvbWVySWQYAiABKAkSFAoMY3VzdG9tZXJOYW1lGAMgASgJEhQKDGNyZWRpdEFtb3VudBgEIAEoARIMCgR0ZXJtGAUgASgJEhMKC2Rlc2NyaXB0aW9uGAYgASgJEg8KB2NyZWF0ZWQYByABKAkSEgoKaW5pdGlhbEZlZRgIIAEoARIVCg1jcmVkaXRCYWxhbmNlGAkgASgBEg8KB2FwcGxpZWQYCiABKAgiFwoVR2V0Q3N2U2V0dGluZ3NSZXF1ZXN0IqQBCgpDc3ZTZXR0aW5nEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSMgoDY29sGAMgAygLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNzdlNldHRpbmcuQ29sdW1uGkgKBkNvbHVtbhIMCgRuYW1lGAEgASgJEgoKAmlkGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB2VuYWJsZWQYBCABKAgi5gEKIFVwZGF0ZUludm9pY2VFeGNoYW5nZVJhdGVSZXF1ZXN0Eg0KBW1vbnRoGAEgASgJEg4KBnZlbmRvchgCIAEoCRJcCgxleGNoYW5nZVJhdGUYAyADKAsyRi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZUV4Y2hhbmdlUmF0ZVJlcXVlc3QuRXhjaGFuZ2VSYXRlRW50cnkSEAoIZ3JvdXBJZHMYBCADKAkaMwoRRXhjaGFuZ2VSYXRlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgBOgI4ASJbChpDb252ZXJ0SW52b2ljZVRvUGRmUmVxdWVzdBIMCgRkYXRlGAEgASgJEhUKDWJpbGxpbmdncm91cHMYAiADKAkSGAoQYWxsQmlsbGluZ0dyb3VwcxgDIAEoCCJEChtDb252ZXJ0SW52b2ljZVRvUGRmUmVzcG9uc2USEAoIcHJvZ3Jlc3MYASABKAkSEwoLZG93bmxvYWRVcmwYAiABKAkiiAIKIUxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVxdWVzdBIuCgpmaWVsZF9tYXNrGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzaxIPCgd2ZW5kb3JzGAIgASgJEhAKCGNhbGNUeXBlGAMgASgJEhMKC2Rpc3BsYXlDb3N0GAQgASgJEg4KBmJnVHlwZRgFIAEoCRITCgtjb21wYW55TmFtZRgGIAEoCRIYChBiaWxsaW5nR3JvdXBOYW1lGAcgASgJEhYKDmJpbGxpbmdHcm91cElkGAggASgJEhAKCHBhZ2VTaXplGAkgASgFEhIKCnBhZ2VOdW1iZXIYCiABKAUilwIKFEJpbGxpbmdHcm91cExpc3RJdGVtEhgKEGJpbGxpbmdHcm91cE5hbWUYASABKAkSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEwoLY29tcGFueU5hbWUYAyABKAkSGAoQYmlsbGluZ0dyb3VwVHlwZRgEIAEoCRJMCgd2ZW5kb3JzGAUgAygLMjsuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cExpc3RJdGVtLkJpbGxpbmdHcm91cFZlbmRvchIZChFiaWxsaW5nSW50ZXJuYWxJZBgGIAEoCRo1ChJCaWxsaW5nR3JvdXBWZW5kb3ISDgoGdmVuZG9yGAEgASgJEg8KB2VuYWJsZWQYAiABKAgitAEKIkxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVzcG9uc2USPwoNYmlsbGluZ0dyb3VwcxgBIAMoCzIoLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBMaXN0SXRlbRISCgp0b3RhbENvdW50GAIgASgFEhMKC2N1cnJlbnRQYWdlGAMgASgFEhAKCHBhZ2VTaXplGAQgASgFEhIKCnRvdGFsUGFnZXMYBSABKAUijgEKIUNoaWxkQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvbhIKCgJpZBgBIAEoCRISCgppbnRlcm5hbElkGAYgASgJEhAKCHBhcmVudElkGAIgASgJEhQKDHJvb3RQYXJlbnRJZBgFIAEoCRIMCgRuYW1lGAMgASgJEhMKC2NvbXBhbnlOYW1lGAQgASgJIr4BCiRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASEAoCaWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAMgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEiwKCGFjY291bnRzGAQgAygLMhQuYmx1ZWFwaS5hcGkuQWNjb3VudEIE4kEBASKAAgoRQ2hpbGRCaWxsaW5nR3JvdXASTwoQYmFzaWNJbmZvcm1hdGlvbhgBIAEoCzI1LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24STQoPaW52b2ljZVNldHRpbmdzGAIgASgLMjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEjkKC2JpbGxpbmdJbmZvGAMgASgLMiQuYmx1ZWFwaS5hcGkucmlwcGxlLkJpbGxpbmdHcm91cEluZm8SEAoIaGFzQ2hpbGQYBCABKAgi5QEKIENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEkMKA2F3cxgBIAEoCzI2LmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXBWZW5kb3JlZEludm9pY2VTZXR0aW5nEiEKGWFjY291bnRTdXBwb3J0UGxhbkVuYWJsZWQYAiABKAgSWQoaYWNjb3VudFN1cHBvcnRQbGFuU2V0dGluZ3MYAyADKAsyNS5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuIpoCCh5DcmVhdGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QSTwoQYmFzaWNJbmZvcm1hdGlvbhgBIAEoCzI1LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24SOQoLYmlsbGluZ0luZm8YAyABKAsyJC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwSW5mbxJNCg9pbnZvaWNlU2V0dGluZ3MYAiABKAsyNC5ibHVlYXBpLmJpbGxpbmcudjEuQ2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2V0dGluZ3MSHQoVaW52b2ljZUxheW91dENvbmZpZ0lkGAQgASgJIiEKH0NyZWF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiMQobR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkiVgocR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZRI2CgdkZXRhaWxzGAEgASgLMiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwIkEKHVJlYWRDaGlsZEJpbGxpbmdHcm91cHNSZXF1ZXN0Eg4KBnJvb3RJZBgBIAEoCRIQCghwYXJlbnRJZBgCIAEoCSLAAQoeVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkSTwoQYmFzaWNJbmZvcm1hdGlvbhgCIAEoCzI1LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24SOQoLYmlsbGluZ0luZm8YAyABKAsyJC5ibHVlYXBpLmFwaS5yaXBwbGUuQmlsbGluZ0dyb3VwSW5mbyIhCh9VcGRhdGVDaGlsZEJpbGxpbmdHcm91cFJlc3BvbnNlIjQKHkRlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJIiEKH0RlbGV0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2Ui0AEKLVVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJEk0KD2ludm9pY2VTZXR0aW5ncxgCIAEoCzI0LmJsdWVhcGkuYmlsbGluZy52MS5DaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5ncxIiChVpbnZvaWNlTGF5b3V0Q29uZmlnSWQYAyABKAlIAIgBAUIYChZfaW52b2ljZUxheW91dENvbmZpZ0lkIjAKLlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVzcG9uc2UimgMKM1NldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBIYCgppbnRlcm5hbElkGAEgASgJQgTiQQECEhQKBnZlbmRvchgCIAEoCUIE4kEBAhIUCgZyb290SWQYAyABKAlCBOJBAQIShQEKB3NldHRpbmcYBCADKAsybi5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXF1ZXN0LkN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdTZXR0aW5nQgTiQQECGpQBCiZDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nU2V0dGluZxIQCgJpZBgBIAEoCUIE4kEBAhJACg5jaGFyZ2luZ1RhcmdldBgCIAEoDjIiLmJsdWVhcGkuYXBpLnJpcHBsZS5DaGFyZ2luZ1RhcmdldEIE4kEBAhIWCghhY2NvdW50cxgDIAMoCUIE4kEBASJUCjJTZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJEgoKAmlkGAIgASgJIo4BCjlTZXRDaGlsZEJpbGxpbmdHcm91cEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCRI9CghhY2NvdW50cxgCIAMoCzIrLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50U2VydmljZURpc2NvdW50cyJZCjNHZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QSEgoKaW50ZXJuYWxJZBgBIAEoCRIOCgZ2ZW5kb3IYAiABKAkizgEKNEdldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVzcG9uc2USEAoCaWQYASABKAlCBOJBAQISFAoGdmVuZG9yGAIgASgJQgTiQQECEkAKDmNoYXJnaW5nVGFyZ2V0GAMgASgOMiIuYmx1ZWFwaS5hcGkucmlwcGxlLkNoYXJnaW5nVGFyZ2V0QgTiQQECEiwKCGFjY291bnRzGAQgAygLMhQuYmx1ZWFwaS5hcGkuQWNjb3VudEIE4kEBASJICjJHZXRDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBISCgppbnRlcm5hbElkGAEgASgJIkEKM0dldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZRIKCgJpZBgBIAEoCSJQCjpSZWFkQ2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0EhIKCmludGVybmFsSWQYASABKAkieQodQnVsa0NyZWF0ZUJpbGxpbmdHcm91cFJlcXVlc3QSDgoGdmVuZG9yGAUgASgJEhIKCmNzdkNvbnRlbnQYASABKAwSEQoJZGVsaW1pdGVyGAIgASgJEhEKCWhhc0hlYWRlchgDIAEoCBIOCgZkcnlSdW4YBCABKAgiVQobQnVsa0NyZWF0ZUJpbGxpbmdHcm91cEVycm9yEg0KBWluZGV4GAEgASgFEhYKDmJpbGxpbmdHcm91cElkGAIgASgJEg8KB21lc3NhZ2UYAyABKAki7QEKHkJ1bGtDcmVhdGVCaWxsaW5nR3JvdXBNZXRhZGF0YRIOCgZzdGF0dXMYASABKAkSEgoKdG90YWxDb3VudBgCIAEoBRIWCg5wcm9jZXNzZWRDb3VudBgDIAEoBRIUCgxzdWNjZXNzQ291bnQYBCABKAUSFAoMZmFpbHVyZUNvdW50GAUgASgFEj8KBmVycm9ycxgGIAMoCzIvLmJsdWVhcGkuYmlsbGluZy52MS5CdWxrQ3JlYXRlQmlsbGluZ0dyb3VwRXJyb3ISEQoJc3RhcnRUaW1lGAcgASgJEg8KB2VuZFRpbWUYCCABKAkiuQEKE0V4Y2x1ZGVTZXJ2aWNlRW50cnkSDgoGbXNwX2lkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIQCghwYXllcl9pZBgDIAEoCRIPCgdzZXJ2aWNlGAQgASgJEg8KB3Byb2R1Y3QYBSABKAkSFwoPZXhjZXB0X3BheWVyX2lkGAYgAygJEg4KBmFjdGlvbhgHIAEoCRIOCgZzdGF0dXMYCCABKAkSFQoNZXJyb3JfbWVzc2FnZRgJIAEoCSKPAQogQ3JlYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QSDgoGbXNwX2lkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIQCghwYXllcl9pZBgDIAEoCRIPCgdzZXJ2aWNlGAQgASgJEg8KB3Byb2R1Y3QYBSABKAkSFwoPZXhjZXB0X3BheWVyX2lkGAYgAygJIlsKIUNyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZRI2CgVlbnRyeRgBIAEoCzInLmJsdWVhcGkuYmlsbGluZy52MS5FeGNsdWRlU2VydmljZUVudHJ5Io8BCiBVcGRhdGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBIOCgZtc3BfaWQYASABKAkSDgoGdmVuZG9yGAIgASgJEhAKCHBheWVyX2lkGAMgASgJEg8KB3NlcnZpY2UYBCABKAkSDwoHcHJvZHVjdBgFIAEoCRIXCg9leGNlcHRfcGF5ZXJfaWQYBiADKAkiWwohVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlEjYKBWVudHJ5GAEgASgLMicuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4Y2x1ZGVTZXJ2aWNlRW50cnkidgogRGVsZXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QSDgoGbXNwX2lkGAEgASgJEg4KBnZlbmRvchgCIAEoCRIQCghwYXllcl9pZBgDIAEoCRIPCgdzZXJ2aWNlGAQgASgJEg8KB3Byb2R1Y3QYBSABKAkiWwohRGVsZXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlEjYKBWVudHJ5GAEgASgLMicuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4Y2x1ZGVTZXJ2aWNlRW50cnkiPAoaTGlzdEV4Y2x1ZGVTZXJ2aWNlc1JlcXVlc3QSDgoGbXNwX2lkGAEgASgJEg4KBnZlbmRvchgCIAEoCSJXChtMaXN0RXhjbHVkZVNlcnZpY2VzUmVzcG9uc2USOAoHZW50cmllcxgBIAMoCzInLmJsdWVhcGkuYmlsbGluZy52MS5FeGNsdWRlU2VydmljZUVudHJ5IkQKC1NlcnZpY2VJdGVtEgoKAmlkGAEgASgJEgwKBGNvZGUYAiABKAkSDQoFbmFtZXMYAyADKAkSDAoEc2t1cxgEIAMoCSIzChNMaXN0U2VydmljZXNSZXF1ZXN0Eg4KBnZlbmRvchgBIAEoCRIMCgRjb2RlGAIgASgJIkUKFExpc3RTZXJ2aWNlc1Jlc3BvbnNlEi0KBGRhdGEYASADKAsyHy5ibHVlYXBpLmJpbGxpbmcudjEuU2VydmljZUl0ZW0icgoWQnVsa0xpbmtBY2NvdW50UmVxdWVzdBIOCgZ2ZW5kb3IYBSABKAkSEgoKY3N2Q29udGVudBgBIAEoDBIRCglkZWxpbWl0ZXIYAiABKAkSEQoJaGFzSGVhZGVyGAMgASgIEg4KBmRyeVJ1bhgEIAEoCCJhChRCdWxrTGlua0FjY291bnRFcnJvchINCgVpbmRleBgBIAEoBRIWCg5iaWxsaW5nR3JvdXBJZBgCIAEoCRIRCglhY2NvdW50SWQYAyABKAkSDwoHbWVzc2FnZRgEIAEoCSLfAQoXQnVsa0xpbmtBY2NvdW50TWV0YWRhdGESDgoGc3RhdHVzGAEgASgJEhIKCnRvdGFsQ291bnQYAiABKAUSFgoOcHJvY2Vzc2VkQ291bnQYAyABKAUSFAoMc3VjY2Vzc0NvdW50GAQgASgFEhQKDGZhaWx1cmVDb3VudBgFIAEoBRI4CgZlcnJvcnMYBiADKAsyKC5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0xpbmtBY2NvdW50RXJyb3ISEQoJc3RhcnRUaW1lGAcgASgJEg8KB2VuZFRpbWUYCCABKAkiPgoaQnVsa1RhZ0JpbGxpbmdHcm91cFJlcXVlc3QSEgoKY3N2Q29udGVudBgBIAEoDBIMCgRtb2RlGAIgASgJIoIBChhCdWxrVGFnQmlsbGluZ0dyb3VwRXJyb3ISDQoFaW5kZXgYASABKAUSFgoOYmlsbGluZ0dyb3VwSWQYAiABKAkSEgoKY3VzdG9tZXJJZBgDIAEoCRILCgNrZXkYBCABKAkSDQoFdmFsdWUYBSABKAkSDwoHbWVzc2FnZRgGIAEoCSLnAQobQnVsa1RhZ0JpbGxpbmdHcm91cE1ldGFkYXRhEg4KBnN0YXR1cxgBIAEoCRISCgp0b3RhbENvdW50GAIgASgFEhYKDnByb2Nlc3NlZENvdW50GAMgASgFEhQKDHN1Y2Nlc3NDb3VudBgEIAEoBRIUCgxmYWlsdXJlQ291bnQYBSABKAUSPAoGZXJyb3JzGAYgAygLMiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtUYWdCaWxsaW5nR3JvdXBFcnJvchIRCglzdGFydFRpbWUYByABKAkSDwoHZW5kVGltZRgIIAEoCSI3CilHZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBIKCgJpZBgBIAEoCSJ5CipHZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2USMQoGbGF5b3V0GAEgASgLMiEuYmx1ZWFwaS5hcGkucmlwcGxlLkludm9pY2VMYXlvdXQSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCSJKCilTZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBIKCgJpZBgBIAEoCRIRCglsYXlvdXRfaWQYAiABKAkiYwogQ3JlYXRlSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QSDAoEbmFtZRgBIAEoCRIxCgZsYXlvdXQYAiABKAsyIS5ibHVlYXBpLmFwaS5yaXBwbGUuSW52b2ljZUxheW91dCI2CiFDcmVhdGVJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2USEQoJbGF5b3V0X2lkGAEgASgJIm8KIFVwZGF0ZUludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJEjEKBmxheW91dBgCIAEoCzIhLmJsdWVhcGkuYXBpLnJpcHBsZS5JbnZvaWNlTGF5b3V0EgwKBG5hbWUYAyABKAkiIAoeUmVhZEludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0Im4KH1JlYWRJbnZvaWNlTGF5b3V0Q29uZmlnUmVzcG9uc2USCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIxCgZsYXlvdXQYAyABKAsyIS5ibHVlYXBpLmFwaS5yaXBwbGUuSW52b2ljZUxheW91dDL5uwEKB0JpbGxpbmcSgAEKEUxpc3RCaWxsaW5nR3JvdXBzEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBzUmVxdWVzdBogLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiGYLT5JMCExIRL3YxL2JpbGxpbmdncm91cHMwARKwAQoaTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWQSNS5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cHNQYWdpbmF0ZWRSZXF1ZXN0GjYuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nR3JvdXBzUGFnaW5hdGVkUmVzcG9uc2UiI4LT5JMCHRIbL3YxL2JpbGxpbmdncm91cHM6cGFnaW5hdGVkEoMBChJDcmVhdGVCaWxsaW5nR3JvdXASLS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwUmVxdWVzdBogLmJsdWVhcGkuYmlsbGluZy52MS5CaWxsaW5nR3JvdXAiHILT5JMCFjoBKiIRL3YxL2JpbGxpbmdncm91cHMSlgEKGENyZWF0ZUJpbGxpbmdHcm91cE1lcmdlZBIzLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBNZXJnZWRSZXF1ZXN0GiAuYmx1ZWFwaS5iaWxsaW5nLnYxLkJpbGxpbmdHcm91cCIjgtPkkwIdOgEqIhgvdjEvYmlsbGluZ2dyb3Vwcy9tZXJnZWQSeQoRRGVsZXRlQmlsbGluR3JvdXASLS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIdgtPkkwIXKhUvdjEvYmlsbGluZ2dyb3VwL3tpZH0SjAEKGEFkZEFjY291bnRUb0JpbGxpbmdHcm91cBIzLmJsdWVhcGkuYmlsbGluZy52MS5BZGRBY2NvdW50VG9CaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiOC0+STAh06ASoiGC92MS9iaWxsaW5nZ3JvdXAvYWNjb3VudBKZAQoPR2V0QmlsbGluZ0dyb3VwEiouYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cFJlcXVlc3QaKy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwUmVzcG9uc2UiLYLT5JMCJxIlL3YxL2JpbGxpbmdncm91cHMve2JpbGxpbmdJbnRlcm5hbElkfRKRAQoOR2V0QWNjZXNzR3JvdXASKS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QWNjZXNzR3JvdXBSZXF1ZXN0GiouYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFjY2Vzc0dyb3VwUmVzcG9uc2UiKILT5JMCIhIgL3YxL2FjY2Vzc2dyb3Vwcy97YWNjZXNzR3JvdXBJZH0SngEKFkxpc3RBd3NEYWlseVJ1bkhpc3RvcnkSMS5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEF3c0RhaWx5UnVuSGlzdG9yeVJlcXVlc3QaJi5ibHVlYXBpLmJpbGxpbmcudjEuQXdzRGFpbHlSdW5IaXN0b3J5IieC0+STAiE6ASoiHC92MS9hd3MvZGFpbHlydW5oaXN0b3J5OnJlYWQwARKaAQoTTGlzdFVzYWdlQ29zdHNEcmlmdBIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0VXNhZ2VDb3N0c0RyaWZ0UmVxdWVzdBojLmJsdWVhcGkuYmlsbGluZy52MS5Vc2FnZUNvc3RzRHJpZnQiLILT5JMCJjoBKiIhL3YxL3t2ZW5kb3J9L3VzYWdlY29zdHNkcmlmdDpyZWFkMAESfAoNQ3JlYXRlSW52b2ljZRIoLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVJbnZvaWNlUmVxdWVzdBobLmJsdWVhcGkuYXBpLkludm9pY2VNZXNzYWdlIiSC0+STAh46ASoiGS92MS9pbnZvaWNlL3tkYXRlfTpjcmVhdGUSmwEKGUNyZWF0ZUludm9pY2VXaXRoU2V0dGluZ3MSLi5ibHVlYXBpLmJpbGxpbmcudjEuU2F2ZUludm9pY2VTZXR0aW5nc1JlcXVlc3QaGy5ibHVlYXBpLmFwaS5JbnZvaWNlTWVzc2FnZSIxgtPkkwIrOgEqIiYvdjEvaW52b2ljZS97ZGF0ZX06Y3JlYXRlJnNhdmVzZXR0aW5ncxKJAQoTU2F2ZUludm9pY2VTZXR0aW5ncxIuLmJsdWVhcGkuYmlsbGluZy52MS5TYXZlSW52b2ljZVNldHRpbmdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIqgtPkkwIkOgEqIh8vdjEvaW52b2ljZS97ZGF0ZX06c2F2ZXNldHRpbmdzEqIBChNDb252ZXJ0SW52b2ljZVRvUGRmEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkNvbnZlcnRJbnZvaWNlVG9QZGZSZXF1ZXN0Gi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkNvbnZlcnRJbnZvaWNlVG9QZGZSZXNwb25zZSIqgtPkkwIkOgEqIh8vdjEvaW52b2ljZS97ZGF0ZX06Y29udmVydHRvcGRmEn0KEEdldEludm9pY2VTdGF0dXMSKy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0SW52b2ljZVN0YXR1c1JlcXVlc3QaGy5ibHVlYXBpLmFwaS5JbnZvaWNlTWVzc2FnZSIfgtPkkwIZEhcvdjEvaW52b2ljZS9zdGF0dXMve2lkfRKLAQoRTGlzdEludm9pY2VTdGF0dXMSLC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VTdGF0dXNSZXF1ZXN0GhsuYmx1ZWFwaS5hcGkuSW52b2ljZU1lc3NhZ2UiKYLT5JMCIzoBKiIeL3YxL2ludm9pY2Uvc3RhdHVzL3tkYXRlfTpyZWFkMAESbQoKR2V0SW52b2ljZRIlLmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlUmVxdWVzdBoULmJsdWVhcGkuYXBpLkludm9pY2UiIoLT5JMCHDoBKiIXL3YxL2ludm9pY2Uve2RhdGV9OnJlYWQSfQoLTGlzdEludm9pY2USJi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VSZXF1ZXN0GicuYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RJbnZvaWNlUmVzcG9uc2UiG4LT5JMCFToBKiIQL3YxL2ludm9pY2U6cmVhZDABEogBChVVcGRhdGVJbnZvaWNlUHJldmlld3MSMC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZVByZXZpZXdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIlgtPkkwIfOgEqGhovdjEvaW52b2ljZS97ZGF0ZX06cHJldmlldxKWAQoRRXhwb3J0SW52b2ljZUZpbGUSLC5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0SW52b2ljZUZpbGVSZXF1ZXN0Gi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEludm9pY2VGaWxlUmVzcG9uc2UiJILT5JMCHjoBKiIZL3YxL2ludm9pY2Uve2RhdGV9OmV4cG9ydBKWAQoTTGlzdEludm9pY2VUZW1wbGF0ZRIuLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVRlbXBsYXRlUmVxdWVzdBovLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0SW52b2ljZVRlbXBsYXRlUmVzcG9uc2UiHILT5JMCFhIUL3YxL2ludm9pY2UvdGVtcGxhdGUwARKtAQoZR2V0SW52b2ljZURpc3BsYXlTZXR0aW5ncxI0LmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlRGlzcGxheVNldHRpbmdzUmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5HZXRJbnZvaWNlRGlzcGxheVNldHRpbmdzUmVzcG9uc2UiI4LT5JMCHRIbL3YxL2ludm9pY2UvZGlzcGxheXNldHRpbmdzEpcBChxVcGRhdGVJbnZvaWNlRGlzcGxheVNldHRpbmdzEjcuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VEaXNwbGF5U2V0dGluZ3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiaC0+STAiA6ASoiGy92MS9pbnZvaWNlL2Rpc3BsYXlzZXR0aW5ncxKWAQoZVXBkYXRlSW52b2ljZUV4Y2hhbmdlUmF0ZRI0LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVJbnZvaWNlRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIrgtPkkwIlOgEqGiAvdjEvaW52b2ljZS9leGNoYW5nZXJhdGUve21vbnRofRKsAQohVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVRlbXBsYXRlEjwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VUZW1wbGF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMYLT5JMCKzoBKiImL3YxL2JpbGxpbmdncm91cHMve2lkfS9pbnZvaWNldGVtcGxhdGUSsQEKHFJlYWRTZXJ2aWNlRGlzY291bnRzU2VydmljZXMSNy5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZFNlcnZpY2VEaXNjb3VudHNTZXJ2aWNlc1JlcXVlc3QaHi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuU2VydmljZSI2gtPkkwIwOgEqIisvdjEvc2VydmljZWRpc2NvdW50cy97dmVuZG9yfS9zZXJ2aWNlczpyZWFkMAESqgEKHUNyZWF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBouLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIfgtPkkwIZOgEqIhQvdjEvc2VydmljZWRpc2NvdW50cxKvAQodVXBkYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSOC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Gi4uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkludm9pY2VTZXJ2aWNlRGlzY291bnRzIiSC0+STAh46ASoaGS92MS9zZXJ2aWNlZGlzY291bnRzL3tpZH0SlAEKHURlbGV0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIhgtPkkwIbKhkvdjEvc2VydmljZWRpc2NvdW50cy97aWR9EqoBChtMaXN0SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSNi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBorLmJsdWVhcGkuYmlsbGluZy52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIkgtPkkwIeOgEqIhkvdjEvc2VydmljZWRpc2NvdW50czpyZWFkMAESpgEKGkdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzEjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBouLmJsdWVhcGkuYXBpLnJpcHBsZS52MS5JbnZvaWNlU2VydmljZURpc2NvdW50cyIhgtPkkwIbEhkvdjEvc2VydmljZWRpc2NvdW50cy97aWR9EqIBChZFeHBvcnRTZXJ2aWNlRGlzY291bnRzEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydFNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0Gi0uYmx1ZWFwaS5hcGkucmlwcGxlLnYxLlNlcnZpY2VEaXNjb3VudHNFeHBvcnQiJoLT5JMCIDoBKiIbL3YxL3NlcnZpY2VkaXNjb3VudHM6ZXhwb3J0EvABCilDcmVhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaRS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSI2gtPkkwIwOgEqIisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYmlsbGluZ2dyb3VwEvABCilVcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaRS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSI2gtPkkwIwOgEqGisvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYmlsbGluZ2dyb3VwEr4BCilEZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiM4LT5JMCLSorL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2JpbGxpbmdncm91cBLRAQoiTGlzdEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI9LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMiNoLT5JMCMDoBKiIrL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQ6cmVhZDABEtwBCiRDcmVhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSPy5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpALmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXNwb25zZSIxgtPkkwIrOgEqIiYvdjEvc2VydmljZWRpc2NvdW50cy97Z3JvdXBJZH0vYWNjb3VudBLcAQokVXBkYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaQC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVzcG9uc2UiMYLT5JMCKzoBKhomL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQSuQEKJFJlbW92ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5SZW1vdmVBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjiC0+STAjI6ASoaLS92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9hY2NvdW50OnJlbW92ZRKvAQokRGVsZXRlQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEj8uYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiLoLT5JMCKComL3YxL3NlcnZpY2VkaXNjb3VudHMve2dyb3VwSWR9L2FjY291bnQSzQEKJEV4cG9ydEFjY291bnRJbnZvaWNlU2VydmljZURpc2NvdW50cxI/LmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHNSZXF1ZXN0GjQuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkFjY291bnRTZXJ2aWNlRGlzY291bnRzRXhwb3J0Ii6C0+STAig6ASoiIy92MS9zZXJ2aWNlZGlzY291bnRzL2FjY291bnQ6ZXhwb3J0EtoBCilFeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50cxJELmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaMi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuR3JvdXBTZXJ2aWNlRGlzY291bnRzRXhwb3J0IjOC0+STAi06ASoiKC92MS9zZXJ2aWNlZGlzY291bnRzL2JpbGxpbmdncm91cDpleHBvcnQS5AEKJkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzEkEuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBpCLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIjOC0+STAi0SKy92MS9zZXJ2aWNlZGlzY291bnRzL3tncm91cElkfS9iaWxsaW5nZ3JvdXAScwoOQ3JlYXRlUmVzZWxsZXISKS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlUmVzZWxsZXJSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyIhiC0+STAhI6ASoiDS92MS9yZXNlbGxlcnMScAoNTGlzdFJlc2VsbGVycxIoLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0UmVzZWxsZXJzUmVxdWVzdBocLmJsdWVhcGkuYXBpLnJpcHBsZS5SZXNlbGxlciIVgtPkkwIPEg0vdjEvcmVzZWxsZXJzMAESbwoLR2V0UmVzZWxsZXISJi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0UmVzZWxsZXJSZXF1ZXN0GhwuYmx1ZWFwaS5hcGkucmlwcGxlLlJlc2VsbGVyIhqC0+STAhQSEi92MS9yZXNlbGxlcnMve2lkfRJ4Cg5VcGRhdGVSZXNlbGxlchIpLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVSZXNlbGxlclJlcXVlc3QaHC5ibHVlYXBpLmFwaS5yaXBwbGUuUmVzZWxsZXIiHYLT5JMCFzoBKhoSL3YxL3Jlc2VsbGVycy97aWR9Em8KDkRlbGV0ZVJlc2VsbGVyEikuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZVJlc2VsbGVyUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIagtPkkwIUKhIvdjEvcmVzZWxsZXJzL3tpZH0ShgEKEUdldEJpbGxpbmdTZXR0aW5nEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdTZXR0aW5nUmVxdWVzdBotLmJsdWVhcGkuYmlsbGluZy52MS5HZXRCaWxsaW5nU2V0dGluZ1Jlc3BvbnNlIhSC0+STAg4SDC92MS9zZXR0aW5ncxKbAQoRTGlzdEV4Y2hhbmdlUmF0ZXMSLC5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEV4Y2hhbmdlUmF0ZXNSZXF1ZXN0Gi0uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RFeGNoYW5nZVJhdGVzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL3t2ZW5kb3J9L2V4Y2hhbmdlcmF0ZS97bW9udGh9EpYBChVTZXRHbG9iYWxFeGNoYW5nZVJhdGUSMC5ibHVlYXBpLmJpbGxpbmcudjEuU2V0R2xvYmFsRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIzgtPkkwItOgEqIigvdjEvZXhjaGFuZ2VyYXRlL2dsb2JhbC97dmVuZG9yfS97bW9udGh9EooBChRTZXRQYXllckV4Y2hhbmdlUmF0ZRIvLmJsdWVhcGkuYmlsbGluZy52MS5TZXRQYXllckV4Y2hhbmdlUmF0ZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKYLT5JMCIzoBKiIeL3YxL2V4Y2hhbmdlcmF0ZS9wYXllci97bW9udGh9Ep8BChtTZXRCaWxsaW5nR3JvdXBFeGNoYW5nZVJhdGUSNi5ibHVlYXBpLmJpbGxpbmcudjEuU2V0QmlsbGluZ0dyb3VwRXhjaGFuZ2VSYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIwgtPkkwIqOgEqIiUvdjEvZXhjaGFuZ2VyYXRlL2JpbGxpbmdncm91cC97bW9udGh9EnwKEExpc3RBY2Nlc3NHcm91cHMSKy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFjY2Vzc0dyb3Vwc1JlcXVlc3QaHy5ibHVlYXBpLmFwaS5yaXBwbGUuQWNjZXNzR3JvdXAiGILT5JMCEhIQL3YxL2FjY2Vzc2dyb3VwczABEn8KEUNyZWF0ZUFjY2Vzc0dyb3VwEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdBofLmJsdWVhcGkuYXBpLnJpcHBsZS5BY2Nlc3NHcm91cCIbgtPkkwIVOgEqIhAvdjEvYWNjZXNzZ3JvdXBzEoQBChFVcGRhdGVBY2Nlc3NHcm91cBIsLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBY2Nlc3NHcm91cFJlcXVlc3QaHy5ibHVlYXBpLmFwaS5yaXBwbGUuQWNjZXNzR3JvdXAiIILT5JMCGjoBKhoVL3YxL2FjY2Vzc2dyb3Vwcy97aWR9EngKEURlbGV0ZUFjY2Vzc0dyb3VwEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFjY2Vzc0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIdgtPkkwIXKhUvdjEvYWNjZXNzZ3JvdXBzL3tpZH0SnwEKFExpc3RBYmNCaWxsaW5nR3JvdXBzEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBYmNCaWxsaW5nR3JvdXBzUmVxdWVzdBojLmJsdWVhcGkuYmlsbGluZy52MS5BYmNCaWxsaW5nR3JvdXAiL4LT5JMCKRInL3YxL2JpbGxpbmdncm91cHMvYmlsbGluZ2NvbmR1Y3Rvci97aWR9MAEStgEKG0xpc3RBYmNCaWxsaW5nR3JvdXBBY2NvdW50cxI2LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QWJjQmlsbGluZ0dyb3VwQWNjb3VudHNSZXF1ZXN0Gh4uYmx1ZWFwaS5iaWxsaW5nLnYxLkFiY0FjY291bnQiPYLT5JMCNxI1L3YxL2JpbGxpbmdncm91cHMvYmlsbGluZ2NvbmR1Y3Rvci97cGF5ZXJJZH0vYWNjb3VudHMwARKcAQoWUmVhZEludm9pY2VBZGp1c3RtZW50cxIxLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkSW52b2ljZUFkanVzdG1lbnRzUmVxdWVzdBocLmJsdWVhcGkuYXBpLndhdmUuQWRqdXN0bWVudCIvgtPkkwIpOgEqIiQvdjEve3ZlbmRvcn0vaW52b2ljZWFkanVzdG1lbnRzOnJlYWQwARKjAQoVUmVhZEFkanVzdG1lbnRFbnRyaWVzEjAuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRBZGp1c3RtZW50RW50cmllc1JlcXVlc3QaJi5ibHVlYXBpLmFwaS5yaXBwbGUudjEuQWRqdXN0bWVudEVudHJ5Ii6C0+STAig6ASoiIy92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllczpyZWFkMAESmAEKEkdldEFkanVzdG1lbnRFbnRyeRItLmJsdWVhcGkuYmlsbGluZy52MS5HZXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0GiYuYmx1ZWFwaS5hcGkucmlwcGxlLnYxLkFkanVzdG1lbnRFbnRyeSIrgtPkkwIlEiMvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXMve2lkfRKQAQoUQXBwbHlBZGp1c3RtZW50RW50cnkSLy5ibHVlYXBpLmJpbGxpbmcudjEuQXBwbHlBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ii+C0+STAik6ASoiJC92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllczphcHBseRKWAQoWUmVzdG9yZUFkanVzdG1lbnRFbnRyeRIxLmJsdWVhcGkuYmlsbGluZy52MS5SZXN0b3JlQWRqdXN0bWVudEVudHJ5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIxgtPkkwIrOgEqIiYvdjEve3ZlbmRvcn0vYWRqdXN0bWVudGVudHJpZXM6cmVzdG9yZRKVAQoUU3BsaXRBZGp1c3RtZW50RW50cnkSLy5ibHVlYXBpLmJpbGxpbmcudjEuU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjSC0+STAi46ASoiKS92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L3NwbGl0Ep4BChdBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeRIyLmJsdWVhcGkuYmlsbGluZy52MS5BbGxvY2F0ZUFkanVzdG1lbnRFbnRyeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiN4LT5JMCMToBKiIsL3YxL3t2ZW5kb3J9L2FkanVzdG1lbnRlbnRyaWVzL3tpZH0vYWxsb2NhdGUSqwEKG1Jlc3RvcmVTcGxpdEFkanVzdG1lbnRFbnRyeRI2LmJsdWVhcGkuYmlsbGluZy52MS5SZXN0b3JlU3BsaXRBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjyC0+STAjY6ASoiMS92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L3NwbGl0OnJlc3RvcmUStAEKHlJlc3RvcmVBbGxvY2F0ZUFkanVzdG1lbnRFbnRyeRI5LmJsdWVhcGkuYmlsbGluZy52MS5SZXN0b3JlQWxsb2NhdGVBZGp1c3RtZW50RW50cnlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ij+C0+STAjk6ASoiNC92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy97aWR9L2FsbG9jYXRlOnJlc3RvcmUSoAEKD0NyZWF0ZUN1c3RvbUZlZRIqLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDdXN0b21GZWVSZXF1ZXN0GisuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbUZlZVJlc3BvbnNlIjSC0+STAi46ASoiKS92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cmllcy9jdXN0b21mZWVzEq0BChhMaXN0QWRqdXN0bWVudEVudHJ5SXRlbXMSMy5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEFkanVzdG1lbnRFbnRyeUl0ZW1zUmVxdWVzdBonLmJsdWVhcGkuYmlsbGluZy52MS5BZGp1c3RtZW50RW50cnlJdGVtIjGC0+STAis6ASoiJi92MS97dmVuZG9yfS9hZGp1c3RtZW50ZW50cnlpdGVtczpyZWFkMAESlwEKFExpc3RBY2NvdW50UmVzb3VyY2VzEi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RBY2NvdW50UmVzb3VyY2VzUmVxdWVzdBojLmJsdWVhcGkuYmlsbGluZy52MS5SZXNvdXJjZUFjY291bnQiJ4LT5JMCIRIfL3YxL3Jlc291cmNlcy9hY2NvdW50cy97dmVuZG9yfTABEosBChNHZXRBZGp1c3RtZW50Q29uZmlnEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEFkanVzdG1lbnRDb25maWdSZXF1ZXN0Gh0uYmx1ZWFwaS5hcGkuQWRqdXN0bWVudENvbmZpZyIlgtPkkwIfEh0vdjEvYWRqdXN0bWVudGNvbmZpZy97dmVuZG9yfRKUAQoWQ3JlYXRlQWRqdXN0bWVudENvbmZpZxIxLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBZGp1c3RtZW50Q29uZmlnUmVxdWVzdBodLmJsdWVhcGkuYXBpLkFkanVzdG1lbnRDb25maWciKILT5JMCIjoBKiIdL3YxL2FkanVzdG1lbnRjb25maWcve3ZlbmRvcn0SlAEKFlVwZGF0ZUFkanVzdG1lbnRDb25maWcSMS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQWRqdXN0bWVudENvbmZpZ1JlcXVlc3QaHS5ibHVlYXBpLmFwaS5BZGp1c3RtZW50Q29uZmlnIiiC0+STAiI6ASoaHS92MS9hZGp1c3RtZW50Y29uZmlnL3t2ZW5kb3J9EooBChZEZWxldGVBZGp1c3RtZW50Q29uZmlnEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUFkanVzdG1lbnRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiWC0+STAh8qHS92MS9hZGp1c3RtZW50Y29uZmlnL3t2ZW5kb3J9EpUBChJSZWFkVW50YWdnZWRHcm91cHMSLS5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZFVudGFnZ2VkR3JvdXBzUmVxdWVzdBohLmJsdWVhcGkuYXBpLnJpcHBsZS5VbnRhZ2dlZEdyb3VwIiuC0+STAiU6ASoiIC92MS97dmVuZG9yfS91bnRhZ2dlZGdyb3VwczpyZWFkMAESuAEKHVJlYWRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VzEjguYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VzUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiLYLT5JMCJzoBKiIiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXM6cmVhZDABEq8BChtHZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USNi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiKoLT5JMCJBIiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMve2lkfRKzAQoeQ3JlYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEjkuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaLC5ibHVlYXBpLmFwaS5yaXBwbGUuQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlIiiC0+STAiI6ASoiHS92MS9jdXN0b21pemVkYmlsbGluZ3NlcnZpY2VzErgBCh5VcGRhdGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2USOS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBosLmJsdWVhcGkuYXBpLnJpcHBsZS5DdXN0b21pemVkQmlsbGluZ1NlcnZpY2UiLYLT5JMCJzoBKhoiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMve2lkfRKfAQoeRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEjkuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJCoiL3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMve2lkfRL7AQonR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwEkIuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZUJpbGxpbmdHcm91cFJlcXVlc3QaQy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVzcG9uc2UiRYLT5JMCPxI9L3YxL2N1c3RvbWl6ZWRiaWxsaW5nc2VydmljZXMvYmlsbGluZ2dyb3VwL3tncm91cElkfS97dmVuZG9yfTABEs8BCidTZXRDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASQi5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJIgtPkkwJCOgEqIj0vdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy9iaWxsaW5nZ3JvdXAve2dyb3VwSWR9L3t2ZW5kb3J9EtIBCipEZWxldGVDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VCaWxsaW5nR3JvdXASRS5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlQmlsbGluZ0dyb3VwUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJFgtPkkwI/Kj0vdjEvY3VzdG9taXplZGJpbGxpbmdzZXJ2aWNlcy9iaWxsaW5nZ3JvdXAve2dyb3VwSWR9L3t2ZW5kb3J9El4KB0dldFRhZ3MSIi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0VGFnc1JlcXVlc3QaGy5ibHVlYXBpLmJpbGxpbmcudjEuVGFnRGF0YSIQgtPkkwIKEggvdjEvdGFnczABEn4KEUNyZWF0ZUN1c3RvbUZpZWxkEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbUZpZWxkUmVxdWVzdBofLmJsdWVhcGkuYmlsbGluZy52MS5DdXN0b21GaWVsZCIagtPkkwIUOgEqIg8vdjEvY3VzdG9tZmllbGQSgQEKD0xpc3RDdXN0b21GaWVsZBIqLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0Q3VzdG9tRmllbGRSZXF1ZXN0Gh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIh+C0+STAhk6ASoiFC92MS9jdXN0b21maWVsZDpyZWFkMAESlAEKGkFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkEjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkFkZEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIngtPkkwIhOgEqIhwvdjEvYmlsbGluZ2dyb3VwL2N1c3RvbWZpZWxkEr4BChtMaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSNi5ibHVlYXBpLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdHcm91cEN1c3RvbUZpZWxkUmVxdWVzdBo3LmJsdWVhcGkuYmlsbGluZy52MS5MaXN0QmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXNwb25zZSIsgtPkkwImOgEqIiEvdjEvYmlsbGluZ2dyb3VwL2N1c3RvbWZpZWxkOnJlYWQwARKDAQoVQWRkVGFnc1RvQmlsbGluZ0dyb3VwEjAuYmx1ZWFwaS5iaWxsaW5nLnYxLkFkZFRhZ3NUb0JpbGxpbmdHcm91cFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIILT5JMCGjoBKiIVL3YxL2JpbGxpbmdncm91cC90YWdzEq8BCh9VcGRhdGVOb25UYWdHcm91cFRvQmlsbGluZ0dyb3VwEjouYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZU5vblRhZ0dyb3VwVG9CaWxsaW5nR3JvdXBSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjiC0+STAjI6ASoiLS92MS9iaWxsaW5nZ3JvdXAve2lkfS97dmVuZG9yfS91bnRhZ2dlZGdyb3VwcxKxAQodRGVsZXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGQSOC5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ij6C0+STAjgqNi92MS9iaWxsaW5nZ3JvdXAvY3VzdG9tZmllbGQve2dyb3VwSWR9L3tjdXN0b21GaWVsZElkfRKDAQoRVXBkYXRlQ3VzdG9tRmllbGQSLC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9tRmllbGRSZXF1ZXN0Gh8uYmx1ZWFwaS5iaWxsaW5nLnYxLkN1c3RvbUZpZWxkIh+C0+STAhk6ASoaFC92MS9jdXN0b21maWVsZC97aWR9EncKEURlbGV0ZUN1c3RvbUZpZWxkEiwuYmx1ZWFwaS5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbUZpZWxkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIcgtPkkwIWKhQvdjEvY3VzdG9tZmllbGQve2lkfRJyChBDcmVhdGVGcmVlRm9ybWF0EisuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUZyZWVGb3JtYXRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IhmC0+STAhM6ASoiDi92MS9mcmVlZm9ybWF0EnkKEERlbGV0ZUZyZWVGb3JtYXQSKy5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlRnJlZUZvcm1hdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiIILT5JMCGioYL3YxL2ZyZWVmb3JtYXQve2dyb3VwSWR9EogBCg1HZXRGcmVlRm9ybWF0EiguYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEZyZWVGb3JtYXRSZXF1ZXN0GikuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEZyZWVGb3JtYXRSZXNwb25zZSIggtPkkwIaEhgvdjEvZnJlZWZvcm1hdC97Z3JvdXBJZH0wARKiAQoUR2V0VGFnc0FkZGluZ1NldHRpbmcSLy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0VGFnc0FkZGluZ1NldHRpbmdSZXF1ZXN0GiUuYmx1ZWFwaS5iaWxsaW5nLnYxLlRhZ3NBZGRpbmdTZXR0aW5nIjCC0+STAioSKC92MS97dmVuZG9yfS90YWdzYWRkaW5nc2V0dGluZy97Z3JvdXBJZH0wARKaAQoXVXBkYXRlVGFnc0FkZGluZ1NldHRpbmcSMi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlVGFnc0FkZGluZ1NldHRpbmdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjOC0+STAi06ASoaKC92MS97dmVuZG9yfS90YWdzYWRkaW5nc2V0dGluZy97Z3JvdXBJZH0SoQEKFUV4cG9ydEJpbGxpbmdHcm91cENzdhIwLmJsdWVhcGkuYmlsbGluZy52MS5FeHBvcnRCaWxsaW5nR3JvdXBDc3ZSZXF1ZXN0GjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEJpbGxpbmdHcm91cENzdlJlc3BvbnNlIiOC0+STAh0SGy92MS9leHBvcnRjc3YvYmlsbGluZy1ncm91cBKpAQoXRXhwb3J0SW52b2ljZVNldHRpbmdDc3YSMi5ibHVlYXBpLmJpbGxpbmcudjEuRXhwb3J0SW52b2ljZVNldHRpbmdDc3ZSZXF1ZXN0GjMuYmx1ZWFwaS5iaWxsaW5nLnYxLkV4cG9ydEludm9pY2VTZXR0aW5nQ3N2UmVzcG9uc2UiJYLT5JMCHxIdL3YxL2V4cG9ydGNzdi9pbnZvaWNlLXNldHRpbmcSpwEKIlVwZGF0ZUJpbGxpbmdHcm91cEJhc2ljSW5mb3JtYXRpb24SPS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQmFzaWNJbmZvcm1hdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJDoBKhofL3YxL2JpbGxpbmdncm91cC97aWR9OmJhc2ljSW5mbxKiAQoeVXBkYXRlQmlsbGluZ0dyb3VwQ3VzdG9tRmllbGRzEjkuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEN1c3RvbUZpZWxkc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiLYLT5JMCJzoBKhoiL3YxL2JpbGxpbmdncm91cC97aWR9OmN1c3RvbUZpZWxkcxKcAQocVXBkYXRlQmlsbGluZ0dyb3VwRnJlZUZvcm1hdBI3LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nR3JvdXBGcmVlRm9ybWF0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIrgtPkkwIlOgEqGiAvdjEvYmlsbGluZ2dyb3VwL3tpZH06ZnJlZUZvcm1hdBKlAQohVXBkYXRlQmlsbGluZ0dyb3VwTGlua2VkUmVzb3VyY2VzEjwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cExpbmtlZFJlc291cmNlc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJDoBKhofL3YxL2JpbGxpbmdncm91cC97aWR9OnJlc291cmNlcxKrAQohVXBkYXRlQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEjwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMCKjoBKholL3YxL2JpbGxpbmdncm91cC97aWR9Omludm9pY2VTZXR0aW5ncxKrAQohVXBkYXRlQmlsbGluZ0dyb3VwUmVzZWxsZXJDaGFyZ2VzEjwuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdHcm91cFJlc2VsbGVyQ2hhcmdlc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiMILT5JMCKjoBKholL3YxL2JpbGxpbmdncm91cC97aWR9OnJlc2VsbGVyQ2hhcmdlcxKxAQojVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXMSPi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQWRkaXRpb25hbENoYXJnZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjKC0+STAiw6ASoaJy92MS9iaWxsaW5nZ3JvdXAve2lkfTphZGRpdGlvbmFsQ2hhcmdlcxLUAQohR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuEjwuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdHcm91cEFjY291bnRTdXBwb3J0UGxhblJlcXVlc3QaPS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVzcG9uc2UiMoLT5JMCLBIqL3YxL2JpbGxpbmdncm91cC97aWR9L3t2ZW5kb3J9L3N1cHBvcnRwbGFuErYBCiRVcGRhdGVCaWxsaW5nR3JvdXBBY2NvdW50U3VwcG9ydFBsYW4SPy5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ0dyb3VwQWNjb3VudFN1cHBvcnRQbGFuUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI1gtPkkwIvOgEqGiovdjEvYmlsbGluZ2dyb3VwL3tpZH0ve3ZlbmRvcn0vc3VwcG9ydHBsYW4SgQEKEkNyZWF0ZUFubm91bmNlbWVudBItLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVBbm5vdW5jZW1lbnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiSC0+STAh46ASoiGS92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnQSkgEKElVwZGF0ZUFubm91bmNlbWVudBItLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBbm5vdW5jZW1lbnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjWC0+STAi86ASoaKi92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnQve2Fubm91bmNlbWVudElkfRKcAQoZVXBkYXRlQW5ub3VuY2VtZW50c1N0YXR1cxI0LmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBbm5vdW5jZW1lbnRzU3RhdHVzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIxgtPkkwIrOgEqMiYvdjEvcmVzZWxsZXIvYW5ub3VuY2VtZW50cy9idWxrL3N0YXR1cxKgAQoWVXBkYXRlQW5ub3VuY2VtZW50RGF0ZRIxLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVBbm5vdW5jZW1lbnREYXRlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI7gtPkkwI1OgEqMjAvdjEvcmVzZWxsZXIvYW5ub3VuY2VtZW50cy97YW5ub3VuY2VtZW50SWR9L2RhdGUSjwEKEkRlbGV0ZUFubm91bmNlbWVudBItLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVBbm5vdW5jZW1lbnRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IjKC0+STAiwqKi92MS9yZXNlbGxlci9hbm5vdW5jZW1lbnQve2Fubm91bmNlbWVudElkfRKgAQoQR2V0QW5ub3VuY2VtZW50cxIrLmJsdWVhcGkuYmlsbGluZy52MS5HZXRBbm5vdW5jZW1lbnRzUmVxdWVzdBogLmJsdWVhcGkuYmlsbGluZy52MS5Bbm5vdW5jZW1lbnQiO4LT5JMCNRIzL2JpbGxpbmcvdjEvcmVzZWxsZXIvYW5ub3VuY2VtZW50cy97YW5ub3VuY2VtZW50SWR9MAESzgEKHEdldEJpbGxpbmdHcm91cEFubm91bmNlbWVudHMSNy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50c1JlcXVlc3QaOC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwQW5ub3VuY2VtZW50c1Jlc3BvbnNlIjmC0+STAjMSMS92MS9iaWxsaW5nZ3JvdXAvcmVzZWxsZXIvYW5ub3VuY2VtZW50cy97Z3JvdXBJZH0wARJmCgpHZXRDcmVkaXRzEiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENyZWRpdHNSZXF1ZXN0GhouYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWRpdCITgtPkkwINEgsvdjEvY3JlZGl0czABEnYKDkdldENzdlNldHRpbmdzEikuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENzdlNldHRpbmdzUmVxdWVzdBoeLmJsdWVhcGkuYmlsbGluZy52MS5Dc3ZTZXR0aW5nIheC0+STAhESDy92MS9jc3ZzZXR0aW5nczABEqkBChdDcmVhdGVDaGlsZEJpbGxpbmdHcm91cBIyLmJsdWVhcGkuYmlsbGluZy52MS5DcmVhdGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QaMy5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbhKqAQoUR2V0Q2hpbGRCaWxsaW5nR3JvdXASLy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0GjAuYmx1ZWFwaS5iaWxsaW5nLnYxLkdldENoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiL4LT5JMCKRInL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9EqABChZSZWFkQ2hpbGRCaWxsaW5nR3JvdXBzEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRDaGlsZEJpbGxpbmdHcm91cHNSZXF1ZXN0GiUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNoaWxkQmlsbGluZ0dyb3VwIiqC0+STAiQ6ASoiHy92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuOnJlYWQwARK2AQoXVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXASMi5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXF1ZXN0GjMuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwUmVzcG9uc2UiMoLT5JMCLDoBKhonL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9ErMBChdEZWxldGVDaGlsZEJpbGxpbmdHcm91cBIyLmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVDaGlsZEJpbGxpbmdHcm91cFJlcXVlc3QaMy5ibHVlYXBpLmJpbGxpbmcudjEuRGVsZXRlQ2hpbGRCaWxsaW5nR3JvdXBSZXNwb25zZSIvgtPkkwIpKicvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0S8wEKJlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzEkEuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUNoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNldHRpbmdzUmVxdWVzdBpCLmJsdWVhcGkuYmlsbGluZy52MS5VcGRhdGVDaGlsZEJpbGxpbmdHcm91cEludm9pY2VTZXR0aW5nc1Jlc3BvbnNlIkKC0+STAjw6ASoaNy92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9pbnZvaWNlU2V0dGluZ3MS0gEKK1NldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSRi5ibHVlYXBpLmJpbGxpbmcudjEuU2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiQ4LT5JMCPToBKiI4L3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L3NlcnZpY2VEaXNjb3VudHMS7QEKMlNldENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzEk0uYmx1ZWFwaS5iaWxsaW5nLnYxLlNldENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJQgtPkkwJKOgEqIkUvdjEvYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vc2VydmljZURpc2NvdW50cy9hY2NvdW50czpzZXQS5QEKLFNldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEkcuYmx1ZWFwaS5iaWxsaW5nLnYxLlNldENoaWxkQmlsbGluZ0dyb3VwQ3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSJUgtPkkwJOOgEqIkkvdjEve3ZlbmRvcn0vYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vY3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlEpYCCixHZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZRJHLmJsdWVhcGkuYmlsbGluZy52MS5HZXRDaGlsZEJpbGxpbmdHcm91cEN1c3RvbWl6ZWRCaWxsaW5nU2VydmljZVJlcXVlc3QaSC5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBDdXN0b21pemVkQmlsbGluZ1NlcnZpY2VSZXNwb25zZSJRgtPkkwJLEkkvdjEve3ZlbmRvcn0vYmlsbGluZ2dyb3Vwcy9jaGlsZHJlbi97aW50ZXJuYWxJZH0vY3VzdG9taXplZEJpbGxpbmdTZXJ2aWNlMAESgAIKK0dldENoaWxkQmlsbGluZ0dyb3VwSW52b2ljZVNlcnZpY2VEaXNjb3VudHMSRi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1JlcXVlc3QaRy5ibHVlYXBpLmJpbGxpbmcudjEuR2V0Q2hpbGRCaWxsaW5nR3JvdXBJbnZvaWNlU2VydmljZURpc2NvdW50c1Jlc3BvbnNlIkCC0+STAjoSOC92MS9iaWxsaW5nZ3JvdXBzL2NoaWxkcmVuL3tpbnRlcm5hbElkfS9zZXJ2aWNlRGlzY291bnRzEosCCjNSZWFkQ2hpbGRCaWxsaW5nR3JvdXBBY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMSTi5ibHVlYXBpLmJpbGxpbmcudjEuUmVhZENoaWxkQmlsbGluZ0dyb3VwQWNjb3VudEludm9pY2VTZXJ2aWNlRGlzY291bnRzUmVxdWVzdBoyLmJsdWVhcGkuYmlsbGluZy52MS5BY2NvdW50SW52b2ljZVNlcnZpY2VEaXNjb3VudHMiToLT5JMCSBJGL3YxL2JpbGxpbmdncm91cHMvY2hpbGRyZW4ve2ludGVybmFsSWR9L3NlcnZpY2VEaXNjb3VudHMvYWNjb3VudHM6cmVhZDABEocBChZCdWxrQ3JlYXRlQmlsbGluZ0dyb3VwEjEuYmx1ZWFwaS5iaWxsaW5nLnYxLkJ1bGtDcmVhdGVCaWxsaW5nR3JvdXBSZXF1ZXN0GhEucHJvdG9zLk9wZXJhdGlvbiIngtPkkwIhOgEqIhwvdjEvYmlsbGluZ2dyb3VwczpidWxrQ3JlYXRlEr8BChlDcmVhdGVFeGNsdWRlU2VydmljZUVudHJ5EjQuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXF1ZXN0GjUuYmx1ZWFwaS5iaWxsaW5nLnYxLkNyZWF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnlSZXNwb25zZSI1gtPkkwIvOgEqIiovdjEvYmlsbGluZ2dyb3Vwcy9leGNsdWRlLXNlcnZpY2Utc2V0dGluZ3MSvwEKGVVwZGF0ZUV4Y2x1ZGVTZXJ2aWNlRW50cnkSNC5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlcXVlc3QaNS5ibHVlYXBpLmJpbGxpbmcudjEuVXBkYXRlRXhjbHVkZVNlcnZpY2VFbnRyeVJlc3BvbnNlIjWC0+STAi86ASoaKi92MS9iaWxsaW5nZ3JvdXBzL2V4Y2x1ZGUtc2VydmljZS1zZXR0aW5ncxK8AQoZRGVsZXRlRXhjbHVkZVNlcnZpY2VFbnRyeRI0LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVFeGNsdWRlU2VydmljZUVudHJ5UmVxdWVzdBo1LmJsdWVhcGkuYmlsbGluZy52MS5EZWxldGVFeGNsdWRlU2VydmljZUVudHJ5UmVzcG9uc2UiMoLT5JMCLCoqL3YxL2JpbGxpbmdncm91cHMvZXhjbHVkZS1zZXJ2aWNlLXNldHRpbmdzEqoBChNMaXN0RXhjbHVkZVNlcnZpY2VzEi4uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RFeGNsdWRlU2VydmljZXNSZXF1ZXN0Gi8uYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RFeGNsdWRlU2VydmljZXNSZXNwb25zZSIygtPkkwIsEiovdjEvYmlsbGluZ2dyb3Vwcy9leGNsdWRlLXNlcnZpY2Utc2V0dGluZ3MSgAEKDExpc3RTZXJ2aWNlcxInLmJsdWVhcGkuYmlsbGluZy52MS5MaXN0U2VydmljZXNSZXF1ZXN0GiguYmx1ZWFwaS5iaWxsaW5nLnYxLkxpc3RTZXJ2aWNlc1Jlc3BvbnNlIh2C0+STAhcSFS92MS97dmVuZG9yfS9zZXJ2aWNlcxJ+Cg9CdWxrTGlua0FjY291bnQSKi5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa0xpbmtBY2NvdW50UmVxdWVzdBoRLnByb3Rvcy5PcGVyYXRpb24iLILT5JMCJjoBKiIhL3YxL2JpbGxpbmdncm91cHM6YnVsa0xpbmtBY2NvdW50En4KE0J1bGtUYWdCaWxsaW5nR3JvdXASLi5ibHVlYXBpLmJpbGxpbmcudjEuQnVsa1RhZ0JpbGxpbmdHcm91cFJlcXVlc3QaES5wcm90b3MuT3BlcmF0aW9uIiSC0+STAh46ASoiGS92MS9iaWxsaW5nZ3JvdXBzOmJ1bGtUYWcS1wEKIkdldEJpbGxpbmdHcm91cEludm9pY2VMYXlvdXRDb25maWcSPS5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QaPi5ibHVlYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZ1Jlc3BvbnNlIjKC0+STAiwSKi92MS9iaWxsaW5nZ3JvdXBzL3tpZH0vaW52b2ljZWxheW91dGNvbmZpZxKyAQoiU2V0QmlsbGluZ0dyb3VwSW52b2ljZUxheW91dENvbmZpZxI9LmJsdWVhcGkuYmlsbGluZy52MS5TZXRCaWxsaW5nR3JvdXBJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI1gtPkkwIvOgEqIiovdjEvYmlsbGluZ2dyb3Vwcy97aWR9L2ludm9pY2VsYXlvdXRjb25maWcSrAEKGUNyZWF0ZUludm9pY2VMYXlvdXRDb25maWcSNC5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlSW52b2ljZUxheW91dENvbmZpZ1JlcXVlc3QaNS5ibHVlYXBpLmJpbGxpbmcudjEuQ3JlYXRlSW52b2ljZUxheW91dENvbmZpZ1Jlc3BvbnNlIiKC0+STAhw6ASoiFy92MS9pbnZvaWNlbGF5b3V0Y29uZmlnEpIBChlVcGRhdGVJbnZvaWNlTGF5b3V0Q29uZmlnEjQuYmx1ZWFwaS5iaWxsaW5nLnYxLlVwZGF0ZUludm9pY2VMYXlvdXRDb25maWdSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IieC0+STAiE6ASoaHC92MS9pbnZvaWNlbGF5b3V0Y29uZmlnL3tpZH0SrQEKF1JlYWRJbnZvaWNlTGF5b3V0Q29uZmlnEjIuYmx1ZWFwaS5iaWxsaW5nLnYxLlJlYWRJbnZvaWNlTGF5b3V0Q29uZmlnUmVxdWVzdBozLmJsdWVhcGkuYmlsbGluZy52MS5SZWFkSW52b2ljZUxheW91dENvbmZpZ1Jlc3BvbnNlIieC0+STAiE6ASoiHC92MS9pbnZvaWNlbGF5b3V0Y29uZmlnOnJlYWQwARqdAZJBmQESRihCRVRBKSBCaWxsaW5nIEFQSS4gQmFzZSBVUkw6IGh0dHBzOi8vYXBpLmFscGhhdXMuY2xvdWQvbS9ibHVlL2JpbGxpbmcaTwoSU2VydmljZSBkZWZpbml0aW9uEjlodHRwczovL2dpdGh1Yi5jb20vYWxwaGF1c2xhYnMvYmx1ZWFwaS90cmVlL21haW4vYmlsbGluZy9CUQoZY2xvdWQuYWxwaGF1cy5hcGkuYmlsbGluZ0IMQmlsbGluZ1Byb3RvWiZnaXRodWIuY29tL2FscGhhdXNsYWJzL2JsdWVhcGkvYmlsbGluZ2IGcHJvdG8z", [file_api_account, file_api_invoice, file_api_costtag, file_api_ripple_accessgroup, file_api_ripple_billinggroup, file_api_ripple_reseller, file_api_ripple_yearmonth, file_api_ripple_rounding, file_api_ripple_invoicelayout, file_api_ripple_duedate, file_api_ripple_exchangerate, file_api_ripple_untaggedgroup, file_api_ripple_customizedbillingservice, file_api_ripple_v1_invoiceservicediscounts, file_api_ripple_v1_accountsupportplan, file_api_ripple_v1_adjustmententry, file_api_adjustment, file_api_wave_adjustment, file_protos_operation, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_empty, file_protoc_gen_openapiv2_options_annotations, file_google_protobuf_field_mask]);
57
57
 
58
58
  /**
59
59
  * @generated from message blueapi.billing.v1.BillingGroup
@@ -521,6 +521,13 @@ export type CreateBillingGroupRequest = Message<"blueapi.billing.v1.CreateBillin
521
521
  * @generated from field: string country = 19;
522
522
  */
523
523
  country: string;
524
+
525
+ /**
526
+ * Optional. Invoice Layout Config Id.
527
+ *
528
+ * @generated from field: string invoiceLayoutConfigId = 20;
529
+ */
530
+ invoiceLayoutConfigId: string;
524
531
  };
525
532
 
526
533
  /**
@@ -3544,6 +3551,241 @@ export type RestoreAllocateAdjustmentEntryRequest = Message<"blueapi.billing.v1.
3544
3551
  export const RestoreAllocateAdjustmentEntryRequestSchema: GenMessage<RestoreAllocateAdjustmentEntryRequest> = /*@__PURE__*/
3545
3552
  messageDesc(file_billing_v1_billing, 85);
3546
3553
 
3554
+ /**
3555
+ * Request message for the Billing.CreateCustomFee rpc.
3556
+ *
3557
+ * @generated from message blueapi.billing.v1.CreateCustomFeeRequest
3558
+ */
3559
+ export type CreateCustomFeeRequest = Message<"blueapi.billing.v1.CreateCustomFeeRequest"> & {
3560
+ /**
3561
+ * Required. At the moment, only `aws` is supported.
3562
+ *
3563
+ * @generated from field: string vendor = 1;
3564
+ */
3565
+ vendor: string;
3566
+
3567
+ /**
3568
+ * Required. The billing month. Format is `yyyymm`.
3569
+ *
3570
+ * @generated from field: string month = 2;
3571
+ */
3572
+ month: string;
3573
+
3574
+ /**
3575
+ * Required. The fee entries to create.
3576
+ *
3577
+ * @generated from field: repeated blueapi.billing.v1.CustomFeeEntry entries = 3;
3578
+ */
3579
+ entries: CustomFeeEntry[];
3580
+ };
3581
+
3582
+ /**
3583
+ * Describes the message blueapi.billing.v1.CreateCustomFeeRequest.
3584
+ * Use `create(CreateCustomFeeRequestSchema)` to create a new message.
3585
+ */
3586
+ export const CreateCustomFeeRequestSchema: GenMessage<CreateCustomFeeRequest> = /*@__PURE__*/
3587
+ messageDesc(file_billing_v1_billing, 86);
3588
+
3589
+ /**
3590
+ * A single custom fee entry to write to the adjustments table.
3591
+ *
3592
+ * @generated from message blueapi.billing.v1.CustomFeeEntry
3593
+ */
3594
+ export type CustomFeeEntry = Message<"blueapi.billing.v1.CustomFeeEntry"> & {
3595
+ /**
3596
+ * Required. The linked account ID (customer_id in the fee table sort key).
3597
+ *
3598
+ * @generated from field: string accountId = 1;
3599
+ */
3600
+ accountId: string;
3601
+
3602
+ /**
3603
+ * Required. The payer account ID (account_id in the fee table sort key).
3604
+ *
3605
+ * @generated from field: string payerAccountId = 2;
3606
+ */
3607
+ payerAccountId: string;
3608
+
3609
+ /**
3610
+ * Required. The fee type for the sort key type segment.
3611
+ * Determines the main Type column value in Adjusting Entries (e.g., "Fee").
3612
+ *
3613
+ * @generated from field: string feeType = 3;
3614
+ */
3615
+ feeType: string;
3616
+
3617
+ /**
3618
+ * Required. The entry type stored in the mobingi_type column.
3619
+ * Used for filtering and categorization (e.g., "COMMITMENT" for Guaranteed Commitments, "CUSTOM" for Custom Fees).
3620
+ * Accepted values: UPFRONT, SUPPORT, REGISTRAR, OTHERS, CREDIT, REFUND, COMMITMENT, CUSTOM.
3621
+ *
3622
+ * @generated from field: string mobingiType = 4;
3623
+ */
3624
+ mobingiType: string;
3625
+
3626
+ /**
3627
+ * Required. The fee amount (cost). Positive for charges, negative for rebates.
3628
+ *
3629
+ * @generated from field: double amount = 5;
3630
+ */
3631
+ amount: number;
3632
+
3633
+ /**
3634
+ * Required. The currency code (e.g., "USD").
3635
+ *
3636
+ * @generated from field: string currencyCode = 6;
3637
+ */
3638
+ currencyCode: string;
3639
+
3640
+ /**
3641
+ * Required. Human-readable description of the fee.
3642
+ * For commitment entries: e.g., "Guaranteed Compute Savings Plan - Premium".
3643
+ *
3644
+ * @generated from field: string description = 7;
3645
+ */
3646
+ description: string;
3647
+
3648
+ /**
3649
+ * Optional. The product/service code (e.g., "aws/savingsplan").
3650
+ *
3651
+ * @generated from field: string productCode = 8;
3652
+ */
3653
+ productCode: string;
3654
+
3655
+ /**
3656
+ * Optional. The product/service display name (e.g., "Compute Savings Plan").
3657
+ *
3658
+ * @generated from field: string productName = 9;
3659
+ */
3660
+ productName: string;
3661
+
3662
+ /**
3663
+ * Optional. The usage start time in RFC 3339 format.
3664
+ *
3665
+ * @generated from field: string usageStart = 10;
3666
+ */
3667
+ usageStart: string;
3668
+
3669
+ /**
3670
+ * Optional. The time interval in ISO 8601 interval format.
3671
+ *
3672
+ * @generated from field: string timeInterval = 11;
3673
+ */
3674
+ timeInterval: string;
3675
+
3676
+ /**
3677
+ * Optional. Additional metadata as key-value pairs.
3678
+ * For Guaranteed Commitment entries, may contain: commitment_id, invoice_id,
3679
+ * contract_term, fee_rate, monthly_commitment, monthly_savings, net_savings,
3680
+ * utilization, billing_account_id, commitment_display_name,
3681
+ * commitment_leased_name, provider, commitment_type.
3682
+ *
3683
+ * @generated from field: map<string, string> meta = 12;
3684
+ */
3685
+ meta: { [key: string]: string };
3686
+ };
3687
+
3688
+ /**
3689
+ * Describes the message blueapi.billing.v1.CustomFeeEntry.
3690
+ * Use `create(CustomFeeEntrySchema)` to create a new message.
3691
+ */
3692
+ export const CustomFeeEntrySchema: GenMessage<CustomFeeEntry> = /*@__PURE__*/
3693
+ messageDesc(file_billing_v1_billing, 87);
3694
+
3695
+ /**
3696
+ * Response message for the Billing.CreateCustomFee rpc.
3697
+ *
3698
+ * @generated from message blueapi.billing.v1.CreateCustomFeeResponse
3699
+ */
3700
+ export type CreateCustomFeeResponse = Message<"blueapi.billing.v1.CreateCustomFeeResponse"> & {
3701
+ /**
3702
+ * The number of entries successfully created.
3703
+ *
3704
+ * @generated from field: int32 created = 1;
3705
+ */
3706
+ created: number;
3707
+ };
3708
+
3709
+ /**
3710
+ * Describes the message blueapi.billing.v1.CreateCustomFeeResponse.
3711
+ * Use `create(CreateCustomFeeResponseSchema)` to create a new message.
3712
+ */
3713
+ export const CreateCustomFeeResponseSchema: GenMessage<CreateCustomFeeResponse> = /*@__PURE__*/
3714
+ messageDesc(file_billing_v1_billing, 88);
3715
+
3716
+ /**
3717
+ * Request message for the Billing.ListAdjustmentEntryItems rpc.
3718
+ *
3719
+ * @generated from message blueapi.billing.v1.ListAdjustmentEntryItemsRequest
3720
+ */
3721
+ export type ListAdjustmentEntryItemsRequest = Message<"blueapi.billing.v1.ListAdjustmentEntryItemsRequest"> & {
3722
+ /**
3723
+ * Required. At the moment, only `aws` is supported.
3724
+ *
3725
+ * @generated from field: string vendor = 1;
3726
+ */
3727
+ vendor: string;
3728
+
3729
+ /**
3730
+ * Required. The billing month. Format is `yyyymm`.
3731
+ *
3732
+ * @generated from field: string month = 2;
3733
+ */
3734
+ month: string;
3735
+
3736
+ /**
3737
+ * Optional. Filter by entry type (mobingi_type column).
3738
+ * If not specified, returns all adjustment entry items.
3739
+ *
3740
+ * @generated from field: string mobingiType = 3;
3741
+ */
3742
+ mobingiType: string;
3743
+
3744
+ /**
3745
+ * Optional. Filter by apply status.
3746
+ * "applied" returns entries where apply=true, "pending" returns entries where apply=false.
3747
+ * If empty, returns all entries regardless of status.
3748
+ *
3749
+ * @generated from field: string status = 4;
3750
+ */
3751
+ status: string;
3752
+ };
3753
+
3754
+ /**
3755
+ * Describes the message blueapi.billing.v1.ListAdjustmentEntryItemsRequest.
3756
+ * Use `create(ListAdjustmentEntryItemsRequestSchema)` to create a new message.
3757
+ */
3758
+ export const ListAdjustmentEntryItemsRequestSchema: GenMessage<ListAdjustmentEntryItemsRequest> = /*@__PURE__*/
3759
+ messageDesc(file_billing_v1_billing, 89);
3760
+
3761
+ /**
3762
+ * An adjustment entry item with additional metadata for the Guaranteed Commitment Entries UI.
3763
+ *
3764
+ * @generated from message blueapi.billing.v1.AdjustmentEntryItem
3765
+ */
3766
+ export type AdjustmentEntryItem = Message<"blueapi.billing.v1.AdjustmentEntryItem"> & {
3767
+ /**
3768
+ * The standard adjustment entry fields (id, account info, entry info, settings).
3769
+ *
3770
+ * @generated from field: blueapi.api.ripple.v1.AdjustmentEntry entry = 1;
3771
+ */
3772
+ entry?: AdjustmentEntry;
3773
+
3774
+ /**
3775
+ * Additional metadata as key-value pairs.
3776
+ *
3777
+ * @generated from field: map<string, string> meta = 2;
3778
+ */
3779
+ meta: { [key: string]: string };
3780
+ };
3781
+
3782
+ /**
3783
+ * Describes the message blueapi.billing.v1.AdjustmentEntryItem.
3784
+ * Use `create(AdjustmentEntryItemSchema)` to create a new message.
3785
+ */
3786
+ export const AdjustmentEntryItemSchema: GenMessage<AdjustmentEntryItem> = /*@__PURE__*/
3787
+ messageDesc(file_billing_v1_billing, 90);
3788
+
3547
3789
  /**
3548
3790
  * Request message for the Billing.ListAccountResources rpc.
3549
3791
  *
@@ -3570,7 +3812,7 @@ export type ListAccountResourcesRequest = Message<"blueapi.billing.v1.ListAccoun
3570
3812
  * Use `create(ListAccountResourcesRequestSchema)` to create a new message.
3571
3813
  */
3572
3814
  export const ListAccountResourcesRequestSchema: GenMessage<ListAccountResourcesRequest> = /*@__PURE__*/
3573
- messageDesc(file_billing_v1_billing, 86);
3815
+ messageDesc(file_billing_v1_billing, 91);
3574
3816
 
3575
3817
  /**
3576
3818
  * @generated from message blueapi.billing.v1.ResourceAccount
@@ -3597,7 +3839,7 @@ export type ResourceAccount = Message<"blueapi.billing.v1.ResourceAccount"> & {
3597
3839
  * Use `create(ResourceAccountSchema)` to create a new message.
3598
3840
  */
3599
3841
  export const ResourceAccountSchema: GenMessage<ResourceAccount> = /*@__PURE__*/
3600
- messageDesc(file_billing_v1_billing, 87);
3842
+ messageDesc(file_billing_v1_billing, 92);
3601
3843
 
3602
3844
  /**
3603
3845
  * Request message for the Billing.GetAdjustmentConfig rpc.
@@ -3618,7 +3860,7 @@ export type GetAdjustmentConfigRequest = Message<"blueapi.billing.v1.GetAdjustme
3618
3860
  * Use `create(GetAdjustmentConfigRequestSchema)` to create a new message.
3619
3861
  */
3620
3862
  export const GetAdjustmentConfigRequestSchema: GenMessage<GetAdjustmentConfigRequest> = /*@__PURE__*/
3621
- messageDesc(file_billing_v1_billing, 88);
3863
+ messageDesc(file_billing_v1_billing, 93);
3622
3864
 
3623
3865
  /**
3624
3866
  * Request message for the Billing.CreateAdjustmentConfig rpc.
@@ -3654,7 +3896,7 @@ export type CreateAdjustmentConfigRequest = Message<"blueapi.billing.v1.CreateAd
3654
3896
  * Use `create(CreateAdjustmentConfigRequestSchema)` to create a new message.
3655
3897
  */
3656
3898
  export const CreateAdjustmentConfigRequestSchema: GenMessage<CreateAdjustmentConfigRequest> = /*@__PURE__*/
3657
- messageDesc(file_billing_v1_billing, 89);
3899
+ messageDesc(file_billing_v1_billing, 94);
3658
3900
 
3659
3901
  /**
3660
3902
  * Request message for the Billing.UpdateAdjustmentConfig rpc.
@@ -3689,7 +3931,7 @@ export type UpdateAdjustmentConfigRequest = Message<"blueapi.billing.v1.UpdateAd
3689
3931
  * Use `create(UpdateAdjustmentConfigRequestSchema)` to create a new message.
3690
3932
  */
3691
3933
  export const UpdateAdjustmentConfigRequestSchema: GenMessage<UpdateAdjustmentConfigRequest> = /*@__PURE__*/
3692
- messageDesc(file_billing_v1_billing, 90);
3934
+ messageDesc(file_billing_v1_billing, 95);
3693
3935
 
3694
3936
  /**
3695
3937
  * Request message for the Billing.DeleteAdjustmentConfig rpc.
@@ -3710,7 +3952,7 @@ export type DeleteAdjustmentConfigRequest = Message<"blueapi.billing.v1.DeleteAd
3710
3952
  * Use `create(DeleteAdjustmentConfigRequestSchema)` to create a new message.
3711
3953
  */
3712
3954
  export const DeleteAdjustmentConfigRequestSchema: GenMessage<DeleteAdjustmentConfigRequest> = /*@__PURE__*/
3713
- messageDesc(file_billing_v1_billing, 91);
3955
+ messageDesc(file_billing_v1_billing, 96);
3714
3956
 
3715
3957
  /**
3716
3958
  * Request message for the Billing.ReadUntaggedGroups rpc.
@@ -3740,7 +3982,7 @@ export type ReadUntaggedGroupsRequest = Message<"blueapi.billing.v1.ReadUntagged
3740
3982
  * Use `create(ReadUntaggedGroupsRequestSchema)` to create a new message.
3741
3983
  */
3742
3984
  export const ReadUntaggedGroupsRequestSchema: GenMessage<ReadUntaggedGroupsRequest> = /*@__PURE__*/
3743
- messageDesc(file_billing_v1_billing, 92);
3985
+ messageDesc(file_billing_v1_billing, 97);
3744
3986
 
3745
3987
  /**
3746
3988
  * Request message for the Billing.ReadCustomizedBillingServices rpc.
@@ -3763,7 +4005,7 @@ export type ReadCustomizedBillingServicesRequest = Message<"blueapi.billing.v1.R
3763
4005
  * Use `create(ReadCustomizedBillingServicesRequestSchema)` to create a new message.
3764
4006
  */
3765
4007
  export const ReadCustomizedBillingServicesRequestSchema: GenMessage<ReadCustomizedBillingServicesRequest> = /*@__PURE__*/
3766
- messageDesc(file_billing_v1_billing, 93);
4008
+ messageDesc(file_billing_v1_billing, 98);
3767
4009
 
3768
4010
  /**
3769
4011
  * Request message for the Billing.GetCustomizedBillingService rpc.
@@ -3793,7 +4035,7 @@ export type GetCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.Get
3793
4035
  * Use `create(GetCustomizedBillingServiceRequestSchema)` to create a new message.
3794
4036
  */
3795
4037
  export const GetCustomizedBillingServiceRequestSchema: GenMessage<GetCustomizedBillingServiceRequest> = /*@__PURE__*/
3796
- messageDesc(file_billing_v1_billing, 94);
4038
+ messageDesc(file_billing_v1_billing, 99);
3797
4039
 
3798
4040
  /**
3799
4041
  * Request message for the Billing.CreateCustomizedBillingService rpc.
@@ -3828,7 +4070,7 @@ export type CreateCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.
3828
4070
  * Use `create(CreateCustomizedBillingServiceRequestSchema)` to create a new message.
3829
4071
  */
3830
4072
  export const CreateCustomizedBillingServiceRequestSchema: GenMessage<CreateCustomizedBillingServiceRequest> = /*@__PURE__*/
3831
- messageDesc(file_billing_v1_billing, 95);
4073
+ messageDesc(file_billing_v1_billing, 100);
3832
4074
 
3833
4075
  /**
3834
4076
  * Request message for the Billing.UpdateCustomizedBillingService rpc.
@@ -3864,7 +4106,7 @@ export type UpdateCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.
3864
4106
  * Use `create(UpdateCustomizedBillingServiceRequestSchema)` to create a new message.
3865
4107
  */
3866
4108
  export const UpdateCustomizedBillingServiceRequestSchema: GenMessage<UpdateCustomizedBillingServiceRequest> = /*@__PURE__*/
3867
- messageDesc(file_billing_v1_billing, 96);
4109
+ messageDesc(file_billing_v1_billing, 101);
3868
4110
 
3869
4111
  /**
3870
4112
  * Request message for the Billing.DeleteCustomizedBillingService rpc.
@@ -3885,7 +4127,7 @@ export type DeleteCustomizedBillingServiceRequest = Message<"blueapi.billing.v1.
3885
4127
  * Use `create(DeleteCustomizedBillingServiceRequestSchema)` to create a new message.
3886
4128
  */
3887
4129
  export const DeleteCustomizedBillingServiceRequestSchema: GenMessage<DeleteCustomizedBillingServiceRequest> = /*@__PURE__*/
3888
- messageDesc(file_billing_v1_billing, 97);
4130
+ messageDesc(file_billing_v1_billing, 102);
3889
4131
 
3890
4132
  /**
3891
4133
  * Request message for the Billing.GetCustomizedBillingServiceBillingGroup rpc.
@@ -3913,7 +4155,7 @@ export type GetCustomizedBillingServiceBillingGroupRequest = Message<"blueapi.bi
3913
4155
  * Use `create(GetCustomizedBillingServiceBillingGroupRequestSchema)` to create a new message.
3914
4156
  */
3915
4157
  export const GetCustomizedBillingServiceBillingGroupRequestSchema: GenMessage<GetCustomizedBillingServiceBillingGroupRequest> = /*@__PURE__*/
3916
- messageDesc(file_billing_v1_billing, 98);
4158
+ messageDesc(file_billing_v1_billing, 103);
3917
4159
 
3918
4160
  /**
3919
4161
  * Response message for the Billing.GetCustomizedBillingServiceBillingGroup rpc.
@@ -3957,7 +4199,7 @@ export type GetCustomizedBillingServiceBillingGroupResponse = Message<"blueapi.b
3957
4199
  * Use `create(GetCustomizedBillingServiceBillingGroupResponseSchema)` to create a new message.
3958
4200
  */
3959
4201
  export const GetCustomizedBillingServiceBillingGroupResponseSchema: GenMessage<GetCustomizedBillingServiceBillingGroupResponse> = /*@__PURE__*/
3960
- messageDesc(file_billing_v1_billing, 99);
4202
+ messageDesc(file_billing_v1_billing, 104);
3961
4203
 
3962
4204
  /**
3963
4205
  * Request message for the Billing.SetCustomizedBillingServiceBillingGroup rpc.
@@ -3992,7 +4234,7 @@ export type SetCustomizedBillingServiceBillingGroupRequest = Message<"blueapi.bi
3992
4234
  * Use `create(SetCustomizedBillingServiceBillingGroupRequestSchema)` to create a new message.
3993
4235
  */
3994
4236
  export const SetCustomizedBillingServiceBillingGroupRequestSchema: GenMessage<SetCustomizedBillingServiceBillingGroupRequest> = /*@__PURE__*/
3995
- messageDesc(file_billing_v1_billing, 100);
4237
+ messageDesc(file_billing_v1_billing, 105);
3996
4238
 
3997
4239
  /**
3998
4240
  * CustomizedBillingServiceBillingSetting
@@ -4029,7 +4271,7 @@ export type SetCustomizedBillingServiceBillingGroupRequest_CustomizedBillingServ
4029
4271
  * Use `create(SetCustomizedBillingServiceBillingGroupRequest_CustomizedBillingServiceBillingSettingSchema)` to create a new message.
4030
4272
  */
4031
4273
  export const SetCustomizedBillingServiceBillingGroupRequest_CustomizedBillingServiceBillingSettingSchema: GenMessage<SetCustomizedBillingServiceBillingGroupRequest_CustomizedBillingServiceBillingSetting> = /*@__PURE__*/
4032
- messageDesc(file_billing_v1_billing, 100, 0);
4274
+ messageDesc(file_billing_v1_billing, 105, 0);
4033
4275
 
4034
4276
  /**
4035
4277
  * Request message for the Billing.DeleteCustomizedBillingServiceBillingGroup rpc.
@@ -4057,7 +4299,7 @@ export type DeleteCustomizedBillingServiceBillingGroupRequest = Message<"blueapi
4057
4299
  * Use `create(DeleteCustomizedBillingServiceBillingGroupRequestSchema)` to create a new message.
4058
4300
  */
4059
4301
  export const DeleteCustomizedBillingServiceBillingGroupRequestSchema: GenMessage<DeleteCustomizedBillingServiceBillingGroupRequest> = /*@__PURE__*/
4060
- messageDesc(file_billing_v1_billing, 101);
4302
+ messageDesc(file_billing_v1_billing, 106);
4061
4303
 
4062
4304
  /**
4063
4305
  * Request message for the Billing.CreateInvoiceServiceDiscounts rpc.
@@ -4092,7 +4334,7 @@ export type CreateInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.C
4092
4334
  * Use `create(CreateInvoiceServiceDiscountsRequestSchema)` to create a new message.
4093
4335
  */
4094
4336
  export const CreateInvoiceServiceDiscountsRequestSchema: GenMessage<CreateInvoiceServiceDiscountsRequest> = /*@__PURE__*/
4095
- messageDesc(file_billing_v1_billing, 102);
4337
+ messageDesc(file_billing_v1_billing, 107);
4096
4338
 
4097
4339
  /**
4098
4340
  * Request message for the Billing.UpdateInvoiceServiceDiscounts rpc.
@@ -4128,7 +4370,7 @@ export type UpdateInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.U
4128
4370
  * Use `create(UpdateInvoiceServiceDiscountsRequestSchema)` to create a new message.
4129
4371
  */
4130
4372
  export const UpdateInvoiceServiceDiscountsRequestSchema: GenMessage<UpdateInvoiceServiceDiscountsRequest> = /*@__PURE__*/
4131
- messageDesc(file_billing_v1_billing, 103);
4373
+ messageDesc(file_billing_v1_billing, 108);
4132
4374
 
4133
4375
  /**
4134
4376
  * Request message for the Billing.DeleteInvoiceServiceDiscounts rpc.
@@ -4149,7 +4391,7 @@ export type DeleteInvoiceServiceDiscountsRequest = Message<"blueapi.billing.v1.D
4149
4391
  * Use `create(DeleteInvoiceServiceDiscountsRequestSchema)` to create a new message.
4150
4392
  */
4151
4393
  export const DeleteInvoiceServiceDiscountsRequestSchema: GenMessage<DeleteInvoiceServiceDiscountsRequest> = /*@__PURE__*/
4152
- messageDesc(file_billing_v1_billing, 104);
4394
+ messageDesc(file_billing_v1_billing, 109);
4153
4395
 
4154
4396
  /**
4155
4397
  * Response for tag request
@@ -4183,7 +4425,7 @@ export type TagData = Message<"blueapi.billing.v1.TagData"> & {
4183
4425
  * Use `create(TagDataSchema)` to create a new message.
4184
4426
  */
4185
4427
  export const TagDataSchema: GenMessage<TagData> = /*@__PURE__*/
4186
- messageDesc(file_billing_v1_billing, 105);
4428
+ messageDesc(file_billing_v1_billing, 110);
4187
4429
 
4188
4430
  /**
4189
4431
  * @generated from message blueapi.billing.v1.Tags
@@ -4205,7 +4447,7 @@ export type Tags = Message<"blueapi.billing.v1.Tags"> & {
4205
4447
  * Use `create(TagsSchema)` to create a new message.
4206
4448
  */
4207
4449
  export const TagsSchema: GenMessage<Tags> = /*@__PURE__*/
4208
- messageDesc(file_billing_v1_billing, 106);
4450
+ messageDesc(file_billing_v1_billing, 111);
4209
4451
 
4210
4452
  /**
4211
4453
  * @generated from message blueapi.billing.v1.GetTagsRequest
@@ -4227,7 +4469,7 @@ export type GetTagsRequest = Message<"blueapi.billing.v1.GetTagsRequest"> & {
4227
4469
  * Use `create(GetTagsRequestSchema)` to create a new message.
4228
4470
  */
4229
4471
  export const GetTagsRequestSchema: GenMessage<GetTagsRequest> = /*@__PURE__*/
4230
- messageDesc(file_billing_v1_billing, 107);
4472
+ messageDesc(file_billing_v1_billing, 112);
4231
4473
 
4232
4474
  /**
4233
4475
  * @generated from message blueapi.billing.v1.CustomField
@@ -4260,7 +4502,7 @@ export type CustomField = Message<"blueapi.billing.v1.CustomField"> & {
4260
4502
  * Use `create(CustomFieldSchema)` to create a new message.
4261
4503
  */
4262
4504
  export const CustomFieldSchema: GenMessage<CustomField> = /*@__PURE__*/
4263
- messageDesc(file_billing_v1_billing, 108);
4505
+ messageDesc(file_billing_v1_billing, 113);
4264
4506
 
4265
4507
  /**
4266
4508
  * @generated from message blueapi.billing.v1.BillingGroupCustomField
@@ -4282,7 +4524,7 @@ export type BillingGroupCustomField = Message<"blueapi.billing.v1.BillingGroupCu
4282
4524
  * Use `create(BillingGroupCustomFieldSchema)` to create a new message.
4283
4525
  */
4284
4526
  export const BillingGroupCustomFieldSchema: GenMessage<BillingGroupCustomField> = /*@__PURE__*/
4285
- messageDesc(file_billing_v1_billing, 109);
4527
+ messageDesc(file_billing_v1_billing, 114);
4286
4528
 
4287
4529
  /**
4288
4530
  * @generated from message blueapi.billing.v1.ListBillingGroupCustomFieldRequest
@@ -4302,7 +4544,7 @@ export type ListBillingGroupCustomFieldRequest = Message<"blueapi.billing.v1.Lis
4302
4544
  * Use `create(ListBillingGroupCustomFieldRequestSchema)` to create a new message.
4303
4545
  */
4304
4546
  export const ListBillingGroupCustomFieldRequestSchema: GenMessage<ListBillingGroupCustomFieldRequest> = /*@__PURE__*/
4305
- messageDesc(file_billing_v1_billing, 110);
4547
+ messageDesc(file_billing_v1_billing, 115);
4306
4548
 
4307
4549
  /**
4308
4550
  * @generated from message blueapi.billing.v1.ListBillingGroupCustomFieldResponse
@@ -4324,7 +4566,7 @@ export type ListBillingGroupCustomFieldResponse = Message<"blueapi.billing.v1.Li
4324
4566
  * Use `create(ListBillingGroupCustomFieldResponseSchema)` to create a new message.
4325
4567
  */
4326
4568
  export const ListBillingGroupCustomFieldResponseSchema: GenMessage<ListBillingGroupCustomFieldResponse> = /*@__PURE__*/
4327
- messageDesc(file_billing_v1_billing, 111);
4569
+ messageDesc(file_billing_v1_billing, 116);
4328
4570
 
4329
4571
  /**
4330
4572
  * @generated from message blueapi.billing.v1.CreateCustomFieldRequest
@@ -4346,7 +4588,7 @@ export type CreateCustomFieldRequest = Message<"blueapi.billing.v1.CreateCustomF
4346
4588
  * Use `create(CreateCustomFieldRequestSchema)` to create a new message.
4347
4589
  */
4348
4590
  export const CreateCustomFieldRequestSchema: GenMessage<CreateCustomFieldRequest> = /*@__PURE__*/
4349
- messageDesc(file_billing_v1_billing, 112);
4591
+ messageDesc(file_billing_v1_billing, 117);
4350
4592
 
4351
4593
  /**
4352
4594
  * @generated from message blueapi.billing.v1.UpdateCustomFieldRequest
@@ -4373,7 +4615,7 @@ export type UpdateCustomFieldRequest = Message<"blueapi.billing.v1.UpdateCustomF
4373
4615
  * Use `create(UpdateCustomFieldRequestSchema)` to create a new message.
4374
4616
  */
4375
4617
  export const UpdateCustomFieldRequestSchema: GenMessage<UpdateCustomFieldRequest> = /*@__PURE__*/
4376
- messageDesc(file_billing_v1_billing, 113);
4618
+ messageDesc(file_billing_v1_billing, 118);
4377
4619
 
4378
4620
  /**
4379
4621
  * @generated from message blueapi.billing.v1.DeleteCustomFieldRequest
@@ -4390,7 +4632,7 @@ export type DeleteCustomFieldRequest = Message<"blueapi.billing.v1.DeleteCustomF
4390
4632
  * Use `create(DeleteCustomFieldRequestSchema)` to create a new message.
4391
4633
  */
4392
4634
  export const DeleteCustomFieldRequestSchema: GenMessage<DeleteCustomFieldRequest> = /*@__PURE__*/
4393
- messageDesc(file_billing_v1_billing, 114);
4635
+ messageDesc(file_billing_v1_billing, 119);
4394
4636
 
4395
4637
  /**
4396
4638
  * @generated from message blueapi.billing.v1.ListCustomFieldRequest
@@ -4403,7 +4645,7 @@ export type ListCustomFieldRequest = Message<"blueapi.billing.v1.ListCustomField
4403
4645
  * Use `create(ListCustomFieldRequestSchema)` to create a new message.
4404
4646
  */
4405
4647
  export const ListCustomFieldRequestSchema: GenMessage<ListCustomFieldRequest> = /*@__PURE__*/
4406
- messageDesc(file_billing_v1_billing, 115);
4648
+ messageDesc(file_billing_v1_billing, 120);
4407
4649
 
4408
4650
  /**
4409
4651
  * BillingGroup FreeFormat: Also known as miscellaneous
@@ -4432,7 +4674,7 @@ export type CreateFreeFormatRequest = Message<"blueapi.billing.v1.CreateFreeForm
4432
4674
  * Use `create(CreateFreeFormatRequestSchema)` to create a new message.
4433
4675
  */
4434
4676
  export const CreateFreeFormatRequestSchema: GenMessage<CreateFreeFormatRequest> = /*@__PURE__*/
4435
- messageDesc(file_billing_v1_billing, 116);
4677
+ messageDesc(file_billing_v1_billing, 121);
4436
4678
 
4437
4679
  /**
4438
4680
  * @generated from message blueapi.billing.v1.FreeFormItem
@@ -4469,7 +4711,7 @@ export type FreeFormItem = Message<"blueapi.billing.v1.FreeFormItem"> & {
4469
4711
  * Use `create(FreeFormItemSchema)` to create a new message.
4470
4712
  */
4471
4713
  export const FreeFormItemSchema: GenMessage<FreeFormItem> = /*@__PURE__*/
4472
- messageDesc(file_billing_v1_billing, 117);
4714
+ messageDesc(file_billing_v1_billing, 122);
4473
4715
 
4474
4716
  /**
4475
4717
  * @generated from message blueapi.billing.v1.DeleteFreeFormatRequest
@@ -4491,7 +4733,7 @@ export type DeleteFreeFormatRequest = Message<"blueapi.billing.v1.DeleteFreeForm
4491
4733
  * Use `create(DeleteFreeFormatRequestSchema)` to create a new message.
4492
4734
  */
4493
4735
  export const DeleteFreeFormatRequestSchema: GenMessage<DeleteFreeFormatRequest> = /*@__PURE__*/
4494
- messageDesc(file_billing_v1_billing, 118);
4736
+ messageDesc(file_billing_v1_billing, 123);
4495
4737
 
4496
4738
  /**
4497
4739
  * @generated from message blueapi.billing.v1.GetFreeFormatRequest
@@ -4518,7 +4760,7 @@ export type GetFreeFormatRequest = Message<"blueapi.billing.v1.GetFreeFormatRequ
4518
4760
  * Use `create(GetFreeFormatRequestSchema)` to create a new message.
4519
4761
  */
4520
4762
  export const GetFreeFormatRequestSchema: GenMessage<GetFreeFormatRequest> = /*@__PURE__*/
4521
- messageDesc(file_billing_v1_billing, 119);
4763
+ messageDesc(file_billing_v1_billing, 124);
4522
4764
 
4523
4765
  /**
4524
4766
  * @generated from message blueapi.billing.v1.GetFreeFormatResponse
@@ -4545,7 +4787,7 @@ export type GetFreeFormatResponse = Message<"blueapi.billing.v1.GetFreeFormatRes
4545
4787
  * Use `create(GetFreeFormatResponseSchema)` to create a new message.
4546
4788
  */
4547
4789
  export const GetFreeFormatResponseSchema: GenMessage<GetFreeFormatResponse> = /*@__PURE__*/
4548
- messageDesc(file_billing_v1_billing, 120);
4790
+ messageDesc(file_billing_v1_billing, 125);
4549
4791
 
4550
4792
  /**
4551
4793
  * BillingGroup tags adding setting
@@ -4574,7 +4816,7 @@ export type UpdateTagsAddingSettingRequest = Message<"blueapi.billing.v1.UpdateT
4574
4816
  * Use `create(UpdateTagsAddingSettingRequestSchema)` to create a new message.
4575
4817
  */
4576
4818
  export const UpdateTagsAddingSettingRequestSchema: GenMessage<UpdateTagsAddingSettingRequest> = /*@__PURE__*/
4577
- messageDesc(file_billing_v1_billing, 121);
4819
+ messageDesc(file_billing_v1_billing, 126);
4578
4820
 
4579
4821
  /**
4580
4822
  * @generated from message blueapi.billing.v1.GetTagsAddingSettingRequest
@@ -4596,7 +4838,7 @@ export type GetTagsAddingSettingRequest = Message<"blueapi.billing.v1.GetTagsAdd
4596
4838
  * Use `create(GetTagsAddingSettingRequestSchema)` to create a new message.
4597
4839
  */
4598
4840
  export const GetTagsAddingSettingRequestSchema: GenMessage<GetTagsAddingSettingRequest> = /*@__PURE__*/
4599
- messageDesc(file_billing_v1_billing, 122);
4841
+ messageDesc(file_billing_v1_billing, 127);
4600
4842
 
4601
4843
  /**
4602
4844
  * @generated from message blueapi.billing.v1.TagsAddingSetting
@@ -4623,7 +4865,7 @@ export type TagsAddingSetting = Message<"blueapi.billing.v1.TagsAddingSetting">
4623
4865
  * Use `create(TagsAddingSettingSchema)` to create a new message.
4624
4866
  */
4625
4867
  export const TagsAddingSettingSchema: GenMessage<TagsAddingSetting> = /*@__PURE__*/
4626
- messageDesc(file_billing_v1_billing, 123);
4868
+ messageDesc(file_billing_v1_billing, 128);
4627
4869
 
4628
4870
  /**
4629
4871
  * Request message for the ExportServiceDiscounts rpc.
@@ -4655,7 +4897,7 @@ export type ExportServiceDiscountsRequest = Message<"blueapi.billing.v1.ExportSe
4655
4897
  * Use `create(ExportServiceDiscountsRequestSchema)` to create a new message.
4656
4898
  */
4657
4899
  export const ExportServiceDiscountsRequestSchema: GenMessage<ExportServiceDiscountsRequest> = /*@__PURE__*/
4658
- messageDesc(file_billing_v1_billing, 124);
4900
+ messageDesc(file_billing_v1_billing, 129);
4659
4901
 
4660
4902
  /**
4661
4903
  * Request message for the ExportAccountInvoiceServiceDiscounts rpc.
@@ -4694,7 +4936,7 @@ export type ExportAccountInvoiceServiceDiscountsRequest = Message<"blueapi.billi
4694
4936
  * Use `create(ExportAccountInvoiceServiceDiscountsRequestSchema)` to create a new message.
4695
4937
  */
4696
4938
  export const ExportAccountInvoiceServiceDiscountsRequestSchema: GenMessage<ExportAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
4697
- messageDesc(file_billing_v1_billing, 125);
4939
+ messageDesc(file_billing_v1_billing, 130);
4698
4940
 
4699
4941
  /**
4700
4942
  * Request message for the ExportBillingGroupInvoiceServiceDiscounts rpc.
@@ -4733,7 +4975,7 @@ export type ExportBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.
4733
4975
  * Use `create(ExportBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
4734
4976
  */
4735
4977
  export const ExportBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<ExportBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
4736
- messageDesc(file_billing_v1_billing, 126);
4978
+ messageDesc(file_billing_v1_billing, 131);
4737
4979
 
4738
4980
  /**
4739
4981
  * Request message for the ExportBillingGroupCsv rpc.
@@ -4757,7 +4999,7 @@ export type ExportBillingGroupCsvRequest = Message<"blueapi.billing.v1.ExportBil
4757
4999
  * Use `create(ExportBillingGroupCsvRequestSchema)` to create a new message.
4758
5000
  */
4759
5001
  export const ExportBillingGroupCsvRequestSchema: GenMessage<ExportBillingGroupCsvRequest> = /*@__PURE__*/
4760
- messageDesc(file_billing_v1_billing, 127);
5002
+ messageDesc(file_billing_v1_billing, 132);
4761
5003
 
4762
5004
  /**
4763
5005
  * Response message for the ExportBillingGroupCsv rpc.
@@ -4779,7 +5021,7 @@ export type ExportBillingGroupCsvResponse = Message<"blueapi.billing.v1.ExportBi
4779
5021
  * Use `create(ExportBillingGroupCsvResponseSchema)` to create a new message.
4780
5022
  */
4781
5023
  export const ExportBillingGroupCsvResponseSchema: GenMessage<ExportBillingGroupCsvResponse> = /*@__PURE__*/
4782
- messageDesc(file_billing_v1_billing, 128);
5024
+ messageDesc(file_billing_v1_billing, 133);
4783
5025
 
4784
5026
  /**
4785
5027
  * port from m/ripple/exportcsv/billing-group-setting
@@ -4809,7 +5051,7 @@ export type ExportInvoiceSettingCsvRequest = Message<"blueapi.billing.v1.ExportI
4809
5051
  * Use `create(ExportInvoiceSettingCsvRequestSchema)` to create a new message.
4810
5052
  */
4811
5053
  export const ExportInvoiceSettingCsvRequestSchema: GenMessage<ExportInvoiceSettingCsvRequest> = /*@__PURE__*/
4812
- messageDesc(file_billing_v1_billing, 129);
5054
+ messageDesc(file_billing_v1_billing, 134);
4813
5055
 
4814
5056
  /**
4815
5057
  * Response message for the ExportBillingGroupCsv rpc.
@@ -4831,7 +5073,7 @@ export type ExportInvoiceSettingCsvResponse = Message<"blueapi.billing.v1.Export
4831
5073
  * Use `create(ExportInvoiceSettingCsvResponseSchema)` to create a new message.
4832
5074
  */
4833
5075
  export const ExportInvoiceSettingCsvResponseSchema: GenMessage<ExportInvoiceSettingCsvResponse> = /*@__PURE__*/
4834
- messageDesc(file_billing_v1_billing, 130);
5076
+ messageDesc(file_billing_v1_billing, 135);
4835
5077
 
4836
5078
  /**
4837
5079
  * @generated from message blueapi.billing.v1.GetBillingGroupInvoiceServiceDiscountsRequest
@@ -4848,7 +5090,7 @@ export type GetBillingGroupInvoiceServiceDiscountsRequest = Message<"blueapi.bil
4848
5090
  * Use `create(GetBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
4849
5091
  */
4850
5092
  export const GetBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<GetBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
4851
- messageDesc(file_billing_v1_billing, 131);
5093
+ messageDesc(file_billing_v1_billing, 136);
4852
5094
 
4853
5095
  /**
4854
5096
  * @generated from message blueapi.billing.v1.GetBillingGroupInvoiceServiceDiscountsResponse
@@ -4867,7 +5109,7 @@ export type GetBillingGroupInvoiceServiceDiscountsResponse = Message<"blueapi.bi
4867
5109
  * Use `create(GetBillingGroupInvoiceServiceDiscountsResponseSchema)` to create a new message.
4868
5110
  */
4869
5111
  export const GetBillingGroupInvoiceServiceDiscountsResponseSchema: GenMessage<GetBillingGroupInvoiceServiceDiscountsResponse> = /*@__PURE__*/
4870
- messageDesc(file_billing_v1_billing, 132);
5112
+ messageDesc(file_billing_v1_billing, 137);
4871
5113
 
4872
5114
  /**
4873
5115
  * @generated from message blueapi.billing.v1.AddBillingGroupCustomFieldRequest
@@ -4893,7 +5135,7 @@ export type AddBillingGroupCustomFieldRequest = Message<"blueapi.billing.v1.AddB
4893
5135
  * Use `create(AddBillingGroupCustomFieldRequestSchema)` to create a new message.
4894
5136
  */
4895
5137
  export const AddBillingGroupCustomFieldRequestSchema: GenMessage<AddBillingGroupCustomFieldRequest> = /*@__PURE__*/
4896
- messageDesc(file_billing_v1_billing, 133);
5138
+ messageDesc(file_billing_v1_billing, 138);
4897
5139
 
4898
5140
  /**
4899
5141
  * @generated from message blueapi.billing.v1.DeleteBillingGroupCustomFieldRequest
@@ -4919,7 +5161,7 @@ export type DeleteBillingGroupCustomFieldRequest = Message<"blueapi.billing.v1.D
4919
5161
  * Use `create(DeleteBillingGroupCustomFieldRequestSchema)` to create a new message.
4920
5162
  */
4921
5163
  export const DeleteBillingGroupCustomFieldRequestSchema: GenMessage<DeleteBillingGroupCustomFieldRequest> = /*@__PURE__*/
4922
- messageDesc(file_billing_v1_billing, 134);
5164
+ messageDesc(file_billing_v1_billing, 139);
4923
5165
 
4924
5166
  /**
4925
5167
  * @generated from message blueapi.billing.v1.AddAccountToBillingGroupRequest
@@ -4952,7 +5194,7 @@ export type AddAccountToBillingGroupRequest = Message<"blueapi.billing.v1.AddAcc
4952
5194
  * Use `create(AddAccountToBillingGroupRequestSchema)` to create a new message.
4953
5195
  */
4954
5196
  export const AddAccountToBillingGroupRequestSchema: GenMessage<AddAccountToBillingGroupRequest> = /*@__PURE__*/
4955
- messageDesc(file_billing_v1_billing, 135);
5197
+ messageDesc(file_billing_v1_billing, 140);
4956
5198
 
4957
5199
  /**
4958
5200
  * New message for account details
@@ -4994,7 +5236,7 @@ export type AccountToAdd = Message<"blueapi.billing.v1.AccountToAdd"> & {
4994
5236
  * Use `create(AccountToAddSchema)` to create a new message.
4995
5237
  */
4996
5238
  export const AccountToAddSchema: GenMessage<AccountToAdd> = /*@__PURE__*/
4997
- messageDesc(file_billing_v1_billing, 136);
5239
+ messageDesc(file_billing_v1_billing, 141);
4998
5240
 
4999
5241
  /**
5000
5242
  * @generated from message blueapi.billing.v1.AddTagsToBillingGroupRequest
@@ -5034,7 +5276,7 @@ export type AddTagsToBillingGroupRequest = Message<"blueapi.billing.v1.AddTagsTo
5034
5276
  * Use `create(AddTagsToBillingGroupRequestSchema)` to create a new message.
5035
5277
  */
5036
5278
  export const AddTagsToBillingGroupRequestSchema: GenMessage<AddTagsToBillingGroupRequest> = /*@__PURE__*/
5037
- messageDesc(file_billing_v1_billing, 137);
5279
+ messageDesc(file_billing_v1_billing, 142);
5038
5280
 
5039
5281
  /**
5040
5282
  * Settings for a specific customer account for AddTagsToBillingGroup
@@ -5062,7 +5304,7 @@ export type TagSetting = Message<"blueapi.billing.v1.TagSetting"> & {
5062
5304
  * Use `create(TagSettingSchema)` to create a new message.
5063
5305
  */
5064
5306
  export const TagSettingSchema: GenMessage<TagSetting> = /*@__PURE__*/
5065
- messageDesc(file_billing_v1_billing, 138);
5307
+ messageDesc(file_billing_v1_billing, 143);
5066
5308
 
5067
5309
  /**
5068
5310
  * Individual tag definition for AddTagsToBillingGroup
@@ -5097,7 +5339,7 @@ export type Tag = Message<"blueapi.billing.v1.Tag"> & {
5097
5339
  * Use `create(TagSchema)` to create a new message.
5098
5340
  */
5099
5341
  export const TagSchema: GenMessage<Tag> = /*@__PURE__*/
5100
- messageDesc(file_billing_v1_billing, 139);
5342
+ messageDesc(file_billing_v1_billing, 144);
5101
5343
 
5102
5344
  /**
5103
5345
  * Non-tag settings for a billing group for AddTagsToBillingGroup
@@ -5132,7 +5374,7 @@ export type NonTagSetting = Message<"blueapi.billing.v1.NonTagSetting"> & {
5132
5374
  * Use `create(NonTagSettingSchema)` to create a new message.
5133
5375
  */
5134
5376
  export const NonTagSettingSchema: GenMessage<NonTagSetting> = /*@__PURE__*/
5135
- messageDesc(file_billing_v1_billing, 140);
5377
+ messageDesc(file_billing_v1_billing, 145);
5136
5378
 
5137
5379
  /**
5138
5380
  * Response message for tag invoice setting operation for AddTagsToBillingGroup
@@ -5160,7 +5402,7 @@ export type SaveTagInvoiceSettingResponse = Message<"blueapi.billing.v1.SaveTagI
5160
5402
  * Use `create(SaveTagInvoiceSettingResponseSchema)` to create a new message.
5161
5403
  */
5162
5404
  export const SaveTagInvoiceSettingResponseSchema: GenMessage<SaveTagInvoiceSettingResponse> = /*@__PURE__*/
5163
- messageDesc(file_billing_v1_billing, 141);
5405
+ messageDesc(file_billing_v1_billing, 146);
5164
5406
 
5165
5407
  /**
5166
5408
  * Request message for updating non-tag group settings for a billing group for UpdateNonTagGroupToBillingGroup
@@ -5195,7 +5437,7 @@ export type UpdateNonTagGroupToBillingGroupRequest = Message<"blueapi.billing.v1
5195
5437
  * Use `create(UpdateNonTagGroupToBillingGroupRequestSchema)` to create a new message.
5196
5438
  */
5197
5439
  export const UpdateNonTagGroupToBillingGroupRequestSchema: GenMessage<UpdateNonTagGroupToBillingGroupRequest> = /*@__PURE__*/
5198
- messageDesc(file_billing_v1_billing, 142);
5440
+ messageDesc(file_billing_v1_billing, 147);
5199
5441
 
5200
5442
  /**
5201
5443
  * Individual non-tag group setting for UpdateNonTagGroupToBillingGroup
@@ -5230,7 +5472,7 @@ export type NonTagGroupSetting = Message<"blueapi.billing.v1.NonTagGroupSetting"
5230
5472
  * Use `create(NonTagGroupSettingSchema)` to create a new message.
5231
5473
  */
5232
5474
  export const NonTagGroupSettingSchema: GenMessage<NonTagGroupSetting> = /*@__PURE__*/
5233
- messageDesc(file_billing_v1_billing, 143);
5475
+ messageDesc(file_billing_v1_billing, 148);
5234
5476
 
5235
5477
  /**
5236
5478
  * @generated from message blueapi.billing.v1.SaveInvoiceSettingsRequest
@@ -5280,7 +5522,7 @@ export type SaveInvoiceSettingsRequest = Message<"blueapi.billing.v1.SaveInvoice
5280
5522
  * Use `create(SaveInvoiceSettingsRequestSchema)` to create a new message.
5281
5523
  */
5282
5524
  export const SaveInvoiceSettingsRequestSchema: GenMessage<SaveInvoiceSettingsRequest> = /*@__PURE__*/
5283
- messageDesc(file_billing_v1_billing, 144);
5525
+ messageDesc(file_billing_v1_billing, 149);
5284
5526
 
5285
5527
  /**
5286
5528
  * @generated from message blueapi.billing.v1.InvoiceSettings
@@ -5415,7 +5657,7 @@ export type InvoiceSettings = Message<"blueapi.billing.v1.InvoiceSettings"> & {
5415
5657
  * Use `create(InvoiceSettingsSchema)` to create a new message.
5416
5658
  */
5417
5659
  export const InvoiceSettingsSchema: GenMessage<InvoiceSettings> = /*@__PURE__*/
5418
- messageDesc(file_billing_v1_billing, 145);
5660
+ messageDesc(file_billing_v1_billing, 150);
5419
5661
 
5420
5662
  /**
5421
5663
  * @generated from message blueapi.billing.v1.BasicInformation
@@ -5487,7 +5729,7 @@ export type BasicInformation = Message<"blueapi.billing.v1.BasicInformation"> &
5487
5729
  * Use `create(BasicInformationSchema)` to create a new message.
5488
5730
  */
5489
5731
  export const BasicInformationSchema: GenMessage<BasicInformation> = /*@__PURE__*/
5490
- messageDesc(file_billing_v1_billing, 146);
5732
+ messageDesc(file_billing_v1_billing, 151);
5491
5733
 
5492
5734
  /**
5493
5735
  * @generated from message blueapi.billing.v1.UpdateBillingGroupBasicInformationRequest
@@ -5509,7 +5751,7 @@ export type UpdateBillingGroupBasicInformationRequest = Message<"blueapi.billing
5509
5751
  * Use `create(UpdateBillingGroupBasicInformationRequestSchema)` to create a new message.
5510
5752
  */
5511
5753
  export const UpdateBillingGroupBasicInformationRequestSchema: GenMessage<UpdateBillingGroupBasicInformationRequest> = /*@__PURE__*/
5512
- messageDesc(file_billing_v1_billing, 147);
5754
+ messageDesc(file_billing_v1_billing, 152);
5513
5755
 
5514
5756
  /**
5515
5757
  * @generated from message blueapi.billing.v1.UpdateBillingGroupCustomFieldsRequest
@@ -5531,7 +5773,7 @@ export type UpdateBillingGroupCustomFieldsRequest = Message<"blueapi.billing.v1.
5531
5773
  * Use `create(UpdateBillingGroupCustomFieldsRequestSchema)` to create a new message.
5532
5774
  */
5533
5775
  export const UpdateBillingGroupCustomFieldsRequestSchema: GenMessage<UpdateBillingGroupCustomFieldsRequest> = /*@__PURE__*/
5534
- messageDesc(file_billing_v1_billing, 148);
5776
+ messageDesc(file_billing_v1_billing, 153);
5535
5777
 
5536
5778
  /**
5537
5779
  * @generated from message blueapi.billing.v1.UpdateBillingGroupFreeFormatRequest
@@ -5558,7 +5800,7 @@ export type UpdateBillingGroupFreeFormatRequest = Message<"blueapi.billing.v1.Up
5558
5800
  * Use `create(UpdateBillingGroupFreeFormatRequestSchema)` to create a new message.
5559
5801
  */
5560
5802
  export const UpdateBillingGroupFreeFormatRequestSchema: GenMessage<UpdateBillingGroupFreeFormatRequest> = /*@__PURE__*/
5561
- messageDesc(file_billing_v1_billing, 149);
5803
+ messageDesc(file_billing_v1_billing, 154);
5562
5804
 
5563
5805
  /**
5564
5806
  * @generated from message blueapi.billing.v1.UpdateBillingGroupLinkedResourcesRequest
@@ -5611,7 +5853,7 @@ export type UpdateBillingGroupLinkedResourcesRequest = Message<"blueapi.billing.
5611
5853
  * Use `create(UpdateBillingGroupLinkedResourcesRequestSchema)` to create a new message.
5612
5854
  */
5613
5855
  export const UpdateBillingGroupLinkedResourcesRequestSchema: GenMessage<UpdateBillingGroupLinkedResourcesRequest> = /*@__PURE__*/
5614
- messageDesc(file_billing_v1_billing, 150);
5856
+ messageDesc(file_billing_v1_billing, 155);
5615
5857
 
5616
5858
  /**
5617
5859
  * @generated from message blueapi.billing.v1.UpdateBillingGroupInvoiceSettingsRequest
@@ -5636,6 +5878,13 @@ export type UpdateBillingGroupInvoiceSettingsRequest = Message<"blueapi.billing.
5636
5878
  * @generated from field: optional string language = 4;
5637
5879
  */
5638
5880
  language?: string;
5881
+
5882
+ /**
5883
+ * Optional. Invoice Layout Config Id.
5884
+ *
5885
+ * @generated from field: optional string invoiceLayoutConfigId = 5;
5886
+ */
5887
+ invoiceLayoutConfigId?: string;
5639
5888
  };
5640
5889
 
5641
5890
  /**
@@ -5643,7 +5892,7 @@ export type UpdateBillingGroupInvoiceSettingsRequest = Message<"blueapi.billing.
5643
5892
  * Use `create(UpdateBillingGroupInvoiceSettingsRequestSchema)` to create a new message.
5644
5893
  */
5645
5894
  export const UpdateBillingGroupInvoiceSettingsRequestSchema: GenMessage<UpdateBillingGroupInvoiceSettingsRequest> = /*@__PURE__*/
5646
- messageDesc(file_billing_v1_billing, 151);
5895
+ messageDesc(file_billing_v1_billing, 156);
5647
5896
 
5648
5897
  /**
5649
5898
  * @generated from message blueapi.billing.v1.UpdateBillingGroupResellerChargesRequest
@@ -5670,7 +5919,7 @@ export type UpdateBillingGroupResellerChargesRequest = Message<"blueapi.billing.
5670
5919
  * Use `create(UpdateBillingGroupResellerChargesRequestSchema)` to create a new message.
5671
5920
  */
5672
5921
  export const UpdateBillingGroupResellerChargesRequestSchema: GenMessage<UpdateBillingGroupResellerChargesRequest> = /*@__PURE__*/
5673
- messageDesc(file_billing_v1_billing, 152);
5922
+ messageDesc(file_billing_v1_billing, 157);
5674
5923
 
5675
5924
  /**
5676
5925
  * @generated from message blueapi.billing.v1.UpdateBillingGroupAdditionalChargesRequest
@@ -5704,7 +5953,7 @@ export type UpdateBillingGroupAdditionalChargesRequest = Message<"blueapi.billin
5704
5953
  * Use `create(UpdateBillingGroupAdditionalChargesRequestSchema)` to create a new message.
5705
5954
  */
5706
5955
  export const UpdateBillingGroupAdditionalChargesRequestSchema: GenMessage<UpdateBillingGroupAdditionalChargesRequest> = /*@__PURE__*/
5707
- messageDesc(file_billing_v1_billing, 153);
5956
+ messageDesc(file_billing_v1_billing, 158);
5708
5957
 
5709
5958
  /**
5710
5959
  * CustomizedBillingServiceBillingSetting
@@ -5741,7 +5990,7 @@ export type UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceB
5741
5990
  * Use `create(UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceBillingSettingSchema)` to create a new message.
5742
5991
  */
5743
5992
  export const UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceBillingSettingSchema: GenMessage<UpdateBillingGroupAdditionalChargesRequest_CustomizedBillingServiceBillingSetting> = /*@__PURE__*/
5744
- messageDesc(file_billing_v1_billing, 153, 0);
5993
+ messageDesc(file_billing_v1_billing, 158, 0);
5745
5994
 
5746
5995
  /**
5747
5996
  * @generated from message blueapi.billing.v1.DeleteBillingGroupRequest
@@ -5758,7 +6007,7 @@ export type DeleteBillingGroupRequest = Message<"blueapi.billing.v1.DeleteBillin
5758
6007
  * Use `create(DeleteBillingGroupRequestSchema)` to create a new message.
5759
6008
  */
5760
6009
  export const DeleteBillingGroupRequestSchema: GenMessage<DeleteBillingGroupRequest> = /*@__PURE__*/
5761
- messageDesc(file_billing_v1_billing, 154);
6010
+ messageDesc(file_billing_v1_billing, 159);
5762
6011
 
5763
6012
  /**
5764
6013
  * Request message for the GetBillingGroupAccountSupportPlan rpc.
@@ -5786,7 +6035,7 @@ export type GetBillingGroupAccountSupportPlanRequest = Message<"blueapi.billing.
5786
6035
  * Use `create(GetBillingGroupAccountSupportPlanRequestSchema)` to create a new message.
5787
6036
  */
5788
6037
  export const GetBillingGroupAccountSupportPlanRequestSchema: GenMessage<GetBillingGroupAccountSupportPlanRequest> = /*@__PURE__*/
5789
- messageDesc(file_billing_v1_billing, 155);
6038
+ messageDesc(file_billing_v1_billing, 160);
5790
6039
 
5791
6040
  /**
5792
6041
  * Response message for the GetBillingGroupAccountSupportPlan rpc.
@@ -5828,7 +6077,7 @@ export type GetBillingGroupAccountSupportPlanResponse = Message<"blueapi.billing
5828
6077
  * Use `create(GetBillingGroupAccountSupportPlanResponseSchema)` to create a new message.
5829
6078
  */
5830
6079
  export const GetBillingGroupAccountSupportPlanResponseSchema: GenMessage<GetBillingGroupAccountSupportPlanResponse> = /*@__PURE__*/
5831
- messageDesc(file_billing_v1_billing, 156);
6080
+ messageDesc(file_billing_v1_billing, 161);
5832
6081
 
5833
6082
  /**
5834
6083
  * Request message for the UpdateBillingGroupAccountSupportPlan rpc.
@@ -5878,7 +6127,7 @@ export type UpdateBillingGroupAccountSupportPlanRequest = Message<"blueapi.billi
5878
6127
  * Use `create(UpdateBillingGroupAccountSupportPlanRequestSchema)` to create a new message.
5879
6128
  */
5880
6129
  export const UpdateBillingGroupAccountSupportPlanRequestSchema: GenMessage<UpdateBillingGroupAccountSupportPlanRequest> = /*@__PURE__*/
5881
- messageDesc(file_billing_v1_billing, 157);
6130
+ messageDesc(file_billing_v1_billing, 162);
5882
6131
 
5883
6132
  /**
5884
6133
  * @generated from message blueapi.billing.v1.GetAnnouncementsRequest
@@ -5897,7 +6146,7 @@ export type GetAnnouncementsRequest = Message<"blueapi.billing.v1.GetAnnouncemen
5897
6146
  * Use `create(GetAnnouncementsRequestSchema)` to create a new message.
5898
6147
  */
5899
6148
  export const GetAnnouncementsRequestSchema: GenMessage<GetAnnouncementsRequest> = /*@__PURE__*/
5900
- messageDesc(file_billing_v1_billing, 158);
6149
+ messageDesc(file_billing_v1_billing, 163);
5901
6150
 
5902
6151
  /**
5903
6152
  * @generated from message blueapi.billing.v1.CreateAnnouncementRequest
@@ -5965,7 +6214,7 @@ export type CreateAnnouncementRequest = Message<"blueapi.billing.v1.CreateAnnoun
5965
6214
  * Use `create(CreateAnnouncementRequestSchema)` to create a new message.
5966
6215
  */
5967
6216
  export const CreateAnnouncementRequestSchema: GenMessage<CreateAnnouncementRequest> = /*@__PURE__*/
5968
- messageDesc(file_billing_v1_billing, 159);
6217
+ messageDesc(file_billing_v1_billing, 164);
5969
6218
 
5970
6219
  /**
5971
6220
  * @generated from message blueapi.billing.v1.UpdateAnnouncementRequest
@@ -5989,7 +6238,7 @@ export type UpdateAnnouncementRequest = Message<"blueapi.billing.v1.UpdateAnnoun
5989
6238
  * Use `create(UpdateAnnouncementRequestSchema)` to create a new message.
5990
6239
  */
5991
6240
  export const UpdateAnnouncementRequestSchema: GenMessage<UpdateAnnouncementRequest> = /*@__PURE__*/
5992
- messageDesc(file_billing_v1_billing, 160);
6241
+ messageDesc(file_billing_v1_billing, 165);
5993
6242
 
5994
6243
  /**
5995
6244
  * @generated from message blueapi.billing.v1.UpdateAnnouncementsStatusRequest
@@ -6011,7 +6260,7 @@ export type UpdateAnnouncementsStatusRequest = Message<"blueapi.billing.v1.Updat
6011
6260
  * Use `create(UpdateAnnouncementsStatusRequestSchema)` to create a new message.
6012
6261
  */
6013
6262
  export const UpdateAnnouncementsStatusRequestSchema: GenMessage<UpdateAnnouncementsStatusRequest> = /*@__PURE__*/
6014
- messageDesc(file_billing_v1_billing, 161);
6263
+ messageDesc(file_billing_v1_billing, 166);
6015
6264
 
6016
6265
  /**
6017
6266
  * @generated from message blueapi.billing.v1.UpdateAnnouncementDateRequest
@@ -6035,7 +6284,7 @@ export type UpdateAnnouncementDateRequest = Message<"blueapi.billing.v1.UpdateAn
6035
6284
  * Use `create(UpdateAnnouncementDateRequestSchema)` to create a new message.
6036
6285
  */
6037
6286
  export const UpdateAnnouncementDateRequestSchema: GenMessage<UpdateAnnouncementDateRequest> = /*@__PURE__*/
6038
- messageDesc(file_billing_v1_billing, 162);
6287
+ messageDesc(file_billing_v1_billing, 167);
6039
6288
 
6040
6289
  /**
6041
6290
  * @generated from message blueapi.billing.v1.DeleteAnnouncementRequest
@@ -6054,7 +6303,7 @@ export type DeleteAnnouncementRequest = Message<"blueapi.billing.v1.DeleteAnnoun
6054
6303
  * Use `create(DeleteAnnouncementRequestSchema)` to create a new message.
6055
6304
  */
6056
6305
  export const DeleteAnnouncementRequestSchema: GenMessage<DeleteAnnouncementRequest> = /*@__PURE__*/
6057
- messageDesc(file_billing_v1_billing, 163);
6306
+ messageDesc(file_billing_v1_billing, 168);
6058
6307
 
6059
6308
  /**
6060
6309
  * @generated from message blueapi.billing.v1.Announcement
@@ -6131,7 +6380,7 @@ export type Announcement = Message<"blueapi.billing.v1.Announcement"> & {
6131
6380
  * Use `create(AnnouncementSchema)` to create a new message.
6132
6381
  */
6133
6382
  export const AnnouncementSchema: GenMessage<Announcement> = /*@__PURE__*/
6134
- messageDesc(file_billing_v1_billing, 164);
6383
+ messageDesc(file_billing_v1_billing, 169);
6135
6384
 
6136
6385
  /**
6137
6386
  * @generated from message blueapi.billing.v1.GetBillingGroupAnnouncementsRequest
@@ -6150,7 +6399,7 @@ export type GetBillingGroupAnnouncementsRequest = Message<"blueapi.billing.v1.Ge
6150
6399
  * Use `create(GetBillingGroupAnnouncementsRequestSchema)` to create a new message.
6151
6400
  */
6152
6401
  export const GetBillingGroupAnnouncementsRequestSchema: GenMessage<GetBillingGroupAnnouncementsRequest> = /*@__PURE__*/
6153
- messageDesc(file_billing_v1_billing, 165);
6402
+ messageDesc(file_billing_v1_billing, 170);
6154
6403
 
6155
6404
  /**
6156
6405
  * @generated from message blueapi.billing.v1.GetBillingGroupAnnouncementsResponse
@@ -6182,7 +6431,7 @@ export type GetBillingGroupAnnouncementsResponse = Message<"blueapi.billing.v1.G
6182
6431
  * Use `create(GetBillingGroupAnnouncementsResponseSchema)` to create a new message.
6183
6432
  */
6184
6433
  export const GetBillingGroupAnnouncementsResponseSchema: GenMessage<GetBillingGroupAnnouncementsResponse> = /*@__PURE__*/
6185
- messageDesc(file_billing_v1_billing, 166);
6434
+ messageDesc(file_billing_v1_billing, 171);
6186
6435
 
6187
6436
  /**
6188
6437
  * @generated from message blueapi.billing.v1.GetCreditsRequest
@@ -6195,7 +6444,7 @@ export type GetCreditsRequest = Message<"blueapi.billing.v1.GetCreditsRequest">
6195
6444
  * Use `create(GetCreditsRequestSchema)` to create a new message.
6196
6445
  */
6197
6446
  export const GetCreditsRequestSchema: GenMessage<GetCreditsRequest> = /*@__PURE__*/
6198
- messageDesc(file_billing_v1_billing, 167);
6447
+ messageDesc(file_billing_v1_billing, 172);
6199
6448
 
6200
6449
  /**
6201
6450
  * @generated from message blueapi.billing.v1.Credit
@@ -6257,7 +6506,7 @@ export type Credit = Message<"blueapi.billing.v1.Credit"> & {
6257
6506
  * Use `create(CreditSchema)` to create a new message.
6258
6507
  */
6259
6508
  export const CreditSchema: GenMessage<Credit> = /*@__PURE__*/
6260
- messageDesc(file_billing_v1_billing, 168);
6509
+ messageDesc(file_billing_v1_billing, 173);
6261
6510
 
6262
6511
  /**
6263
6512
  * @generated from message blueapi.billing.v1.GetCsvSettingsRequest
@@ -6270,7 +6519,7 @@ export type GetCsvSettingsRequest = Message<"blueapi.billing.v1.GetCsvSettingsRe
6270
6519
  * Use `create(GetCsvSettingsRequestSchema)` to create a new message.
6271
6520
  */
6272
6521
  export const GetCsvSettingsRequestSchema: GenMessage<GetCsvSettingsRequest> = /*@__PURE__*/
6273
- messageDesc(file_billing_v1_billing, 169);
6522
+ messageDesc(file_billing_v1_billing, 174);
6274
6523
 
6275
6524
  /**
6276
6525
  * @generated from message blueapi.billing.v1.CsvSetting
@@ -6297,7 +6546,7 @@ export type CsvSetting = Message<"blueapi.billing.v1.CsvSetting"> & {
6297
6546
  * Use `create(CsvSettingSchema)` to create a new message.
6298
6547
  */
6299
6548
  export const CsvSettingSchema: GenMessage<CsvSetting> = /*@__PURE__*/
6300
- messageDesc(file_billing_v1_billing, 170);
6549
+ messageDesc(file_billing_v1_billing, 175);
6301
6550
 
6302
6551
  /**
6303
6552
  * @generated from message blueapi.billing.v1.CsvSetting.Column
@@ -6329,7 +6578,7 @@ export type CsvSetting_Column = Message<"blueapi.billing.v1.CsvSetting.Column">
6329
6578
  * Use `create(CsvSetting_ColumnSchema)` to create a new message.
6330
6579
  */
6331
6580
  export const CsvSetting_ColumnSchema: GenMessage<CsvSetting_Column> = /*@__PURE__*/
6332
- messageDesc(file_billing_v1_billing, 170, 0);
6581
+ messageDesc(file_billing_v1_billing, 175, 0);
6333
6582
 
6334
6583
  /**
6335
6584
  * @generated from message blueapi.billing.v1.UpdateInvoiceExchangeRateRequest
@@ -6370,7 +6619,7 @@ export type UpdateInvoiceExchangeRateRequest = Message<"blueapi.billing.v1.Updat
6370
6619
  * Use `create(UpdateInvoiceExchangeRateRequestSchema)` to create a new message.
6371
6620
  */
6372
6621
  export const UpdateInvoiceExchangeRateRequestSchema: GenMessage<UpdateInvoiceExchangeRateRequest> = /*@__PURE__*/
6373
- messageDesc(file_billing_v1_billing, 171);
6622
+ messageDesc(file_billing_v1_billing, 176);
6374
6623
 
6375
6624
  /**
6376
6625
  * @generated from message blueapi.billing.v1.ConvertInvoiceToPdfRequest
@@ -6404,7 +6653,7 @@ export type ConvertInvoiceToPdfRequest = Message<"blueapi.billing.v1.ConvertInvo
6404
6653
  * Use `create(ConvertInvoiceToPdfRequestSchema)` to create a new message.
6405
6654
  */
6406
6655
  export const ConvertInvoiceToPdfRequestSchema: GenMessage<ConvertInvoiceToPdfRequest> = /*@__PURE__*/
6407
- messageDesc(file_billing_v1_billing, 172);
6656
+ messageDesc(file_billing_v1_billing, 177);
6408
6657
 
6409
6658
  /**
6410
6659
  * @generated from message blueapi.billing.v1.ConvertInvoiceToPdfResponse
@@ -6429,7 +6678,7 @@ export type ConvertInvoiceToPdfResponse = Message<"blueapi.billing.v1.ConvertInv
6429
6678
  * Use `create(ConvertInvoiceToPdfResponseSchema)` to create a new message.
6430
6679
  */
6431
6680
  export const ConvertInvoiceToPdfResponseSchema: GenMessage<ConvertInvoiceToPdfResponse> = /*@__PURE__*/
6432
- messageDesc(file_billing_v1_billing, 173);
6681
+ messageDesc(file_billing_v1_billing, 178);
6433
6682
 
6434
6683
  /**
6435
6684
  * Request message for the Billing.ListBillingGroupsPaginated rpc.
@@ -6520,7 +6769,7 @@ export type ListBillingGroupsPaginatedRequest = Message<"blueapi.billing.v1.List
6520
6769
  * Use `create(ListBillingGroupsPaginatedRequestSchema)` to create a new message.
6521
6770
  */
6522
6771
  export const ListBillingGroupsPaginatedRequestSchema: GenMessage<ListBillingGroupsPaginatedRequest> = /*@__PURE__*/
6523
- messageDesc(file_billing_v1_billing, 174);
6772
+ messageDesc(file_billing_v1_billing, 179);
6524
6773
 
6525
6774
  /**
6526
6775
  * Response row for paginated billing groups table.
@@ -6576,7 +6825,7 @@ export type BillingGroupListItem = Message<"blueapi.billing.v1.BillingGroupListI
6576
6825
  * Use `create(BillingGroupListItemSchema)` to create a new message.
6577
6826
  */
6578
6827
  export const BillingGroupListItemSchema: GenMessage<BillingGroupListItem> = /*@__PURE__*/
6579
- messageDesc(file_billing_v1_billing, 175);
6828
+ messageDesc(file_billing_v1_billing, 180);
6580
6829
 
6581
6830
  /**
6582
6831
  * Vendor availability entries.
@@ -6604,7 +6853,7 @@ export type BillingGroupListItem_BillingGroupVendor = Message<"blueapi.billing.v
6604
6853
  * Use `create(BillingGroupListItem_BillingGroupVendorSchema)` to create a new message.
6605
6854
  */
6606
6855
  export const BillingGroupListItem_BillingGroupVendorSchema: GenMessage<BillingGroupListItem_BillingGroupVendor> = /*@__PURE__*/
6607
- messageDesc(file_billing_v1_billing, 175, 0);
6856
+ messageDesc(file_billing_v1_billing, 180, 0);
6608
6857
 
6609
6858
  /**
6610
6859
  * Response message for the Billing.ListBillingGroupsPaginated rpc.
@@ -6653,7 +6902,7 @@ export type ListBillingGroupsPaginatedResponse = Message<"blueapi.billing.v1.Lis
6653
6902
  * Use `create(ListBillingGroupsPaginatedResponseSchema)` to create a new message.
6654
6903
  */
6655
6904
  export const ListBillingGroupsPaginatedResponseSchema: GenMessage<ListBillingGroupsPaginatedResponse> = /*@__PURE__*/
6656
- messageDesc(file_billing_v1_billing, 176);
6905
+ messageDesc(file_billing_v1_billing, 181);
6657
6906
 
6658
6907
  /**
6659
6908
  * @generated from message blueapi.billing.v1.ChildBillingGroupBasicInformation
@@ -6707,7 +6956,7 @@ export type ChildBillingGroupBasicInformation = Message<"blueapi.billing.v1.Chil
6707
6956
  * Use `create(ChildBillingGroupBasicInformationSchema)` to create a new message.
6708
6957
  */
6709
6958
  export const ChildBillingGroupBasicInformationSchema: GenMessage<ChildBillingGroupBasicInformation> = /*@__PURE__*/
6710
- messageDesc(file_billing_v1_billing, 177);
6959
+ messageDesc(file_billing_v1_billing, 182);
6711
6960
 
6712
6961
  /**
6713
6962
  * @generated from message blueapi.billing.v1.CustomizedBillingServiceBillingGroup
@@ -6747,7 +6996,7 @@ export type CustomizedBillingServiceBillingGroup = Message<"blueapi.billing.v1.C
6747
6996
  * Use `create(CustomizedBillingServiceBillingGroupSchema)` to create a new message.
6748
6997
  */
6749
6998
  export const CustomizedBillingServiceBillingGroupSchema: GenMessage<CustomizedBillingServiceBillingGroup> = /*@__PURE__*/
6750
- messageDesc(file_billing_v1_billing, 178);
6999
+ messageDesc(file_billing_v1_billing, 183);
6751
7000
 
6752
7001
  /**
6753
7002
  * Contains basic information and invoice settings related data.
@@ -6791,7 +7040,7 @@ export type ChildBillingGroup = Message<"blueapi.billing.v1.ChildBillingGroup">
6791
7040
  * Use `create(ChildBillingGroupSchema)` to create a new message.
6792
7041
  */
6793
7042
  export const ChildBillingGroupSchema: GenMessage<ChildBillingGroup> = /*@__PURE__*/
6794
- messageDesc(file_billing_v1_billing, 179);
7043
+ messageDesc(file_billing_v1_billing, 184);
6795
7044
 
6796
7045
  /**
6797
7046
  * @generated from message blueapi.billing.v1.ChildBillingGroupInvoiceSettings
@@ -6822,7 +7071,7 @@ export type ChildBillingGroupInvoiceSettings = Message<"blueapi.billing.v1.Child
6822
7071
  * Use `create(ChildBillingGroupInvoiceSettingsSchema)` to create a new message.
6823
7072
  */
6824
7073
  export const ChildBillingGroupInvoiceSettingsSchema: GenMessage<ChildBillingGroupInvoiceSettings> = /*@__PURE__*/
6825
- messageDesc(file_billing_v1_billing, 180);
7074
+ messageDesc(file_billing_v1_billing, 185);
6826
7075
 
6827
7076
  /**
6828
7077
  * @generated from message blueapi.billing.v1.CreateChildBillingGroupRequest
@@ -6848,6 +7097,13 @@ export type CreateChildBillingGroupRequest = Message<"blueapi.billing.v1.CreateC
6848
7097
  * @generated from field: blueapi.billing.v1.ChildBillingGroupInvoiceSettings invoiceSettings = 2;
6849
7098
  */
6850
7099
  invoiceSettings?: ChildBillingGroupInvoiceSettings;
7100
+
7101
+ /**
7102
+ * Optional. Invoice layout config id to attach.
7103
+ *
7104
+ * @generated from field: string invoiceLayoutConfigId = 4;
7105
+ */
7106
+ invoiceLayoutConfigId: string;
6851
7107
  };
6852
7108
 
6853
7109
  /**
@@ -6855,7 +7111,7 @@ export type CreateChildBillingGroupRequest = Message<"blueapi.billing.v1.CreateC
6855
7111
  * Use `create(CreateChildBillingGroupRequestSchema)` to create a new message.
6856
7112
  */
6857
7113
  export const CreateChildBillingGroupRequestSchema: GenMessage<CreateChildBillingGroupRequest> = /*@__PURE__*/
6858
- messageDesc(file_billing_v1_billing, 181);
7114
+ messageDesc(file_billing_v1_billing, 186);
6859
7115
 
6860
7116
  /**
6861
7117
  * @generated from message blueapi.billing.v1.CreateChildBillingGroupResponse
@@ -6868,7 +7124,7 @@ export type CreateChildBillingGroupResponse = Message<"blueapi.billing.v1.Create
6868
7124
  * Use `create(CreateChildBillingGroupResponseSchema)` to create a new message.
6869
7125
  */
6870
7126
  export const CreateChildBillingGroupResponseSchema: GenMessage<CreateChildBillingGroupResponse> = /*@__PURE__*/
6871
- messageDesc(file_billing_v1_billing, 182);
7127
+ messageDesc(file_billing_v1_billing, 187);
6872
7128
 
6873
7129
  /**
6874
7130
  * @generated from message blueapi.billing.v1.GetChildBillingGroupRequest
@@ -6887,7 +7143,7 @@ export type GetChildBillingGroupRequest = Message<"blueapi.billing.v1.GetChildBi
6887
7143
  * Use `create(GetChildBillingGroupRequestSchema)` to create a new message.
6888
7144
  */
6889
7145
  export const GetChildBillingGroupRequestSchema: GenMessage<GetChildBillingGroupRequest> = /*@__PURE__*/
6890
- messageDesc(file_billing_v1_billing, 183);
7146
+ messageDesc(file_billing_v1_billing, 188);
6891
7147
 
6892
7148
  /**
6893
7149
  * @generated from message blueapi.billing.v1.GetChildBillingGroupResponse
@@ -6904,7 +7160,7 @@ export type GetChildBillingGroupResponse = Message<"blueapi.billing.v1.GetChildB
6904
7160
  * Use `create(GetChildBillingGroupResponseSchema)` to create a new message.
6905
7161
  */
6906
7162
  export const GetChildBillingGroupResponseSchema: GenMessage<GetChildBillingGroupResponse> = /*@__PURE__*/
6907
- messageDesc(file_billing_v1_billing, 184);
7163
+ messageDesc(file_billing_v1_billing, 189);
6908
7164
 
6909
7165
  /**
6910
7166
  * @generated from message blueapi.billing.v1.ReadChildBillingGroupsRequest
@@ -6932,7 +7188,7 @@ export type ReadChildBillingGroupsRequest = Message<"blueapi.billing.v1.ReadChil
6932
7188
  * Use `create(ReadChildBillingGroupsRequestSchema)` to create a new message.
6933
7189
  */
6934
7190
  export const ReadChildBillingGroupsRequestSchema: GenMessage<ReadChildBillingGroupsRequest> = /*@__PURE__*/
6935
- messageDesc(file_billing_v1_billing, 185);
7191
+ messageDesc(file_billing_v1_billing, 190);
6936
7192
 
6937
7193
  /**
6938
7194
  * @generated from message blueapi.billing.v1.UpdateChildBillingGroupRequest
@@ -6965,7 +7221,7 @@ export type UpdateChildBillingGroupRequest = Message<"blueapi.billing.v1.UpdateC
6965
7221
  * Use `create(UpdateChildBillingGroupRequestSchema)` to create a new message.
6966
7222
  */
6967
7223
  export const UpdateChildBillingGroupRequestSchema: GenMessage<UpdateChildBillingGroupRequest> = /*@__PURE__*/
6968
- messageDesc(file_billing_v1_billing, 186);
7224
+ messageDesc(file_billing_v1_billing, 191);
6969
7225
 
6970
7226
  /**
6971
7227
  * @generated from message blueapi.billing.v1.UpdateChildBillingGroupResponse
@@ -6978,7 +7234,7 @@ export type UpdateChildBillingGroupResponse = Message<"blueapi.billing.v1.Update
6978
7234
  * Use `create(UpdateChildBillingGroupResponseSchema)` to create a new message.
6979
7235
  */
6980
7236
  export const UpdateChildBillingGroupResponseSchema: GenMessage<UpdateChildBillingGroupResponse> = /*@__PURE__*/
6981
- messageDesc(file_billing_v1_billing, 187);
7237
+ messageDesc(file_billing_v1_billing, 192);
6982
7238
 
6983
7239
  /**
6984
7240
  * @generated from message blueapi.billing.v1.DeleteChildBillingGroupRequest
@@ -6997,7 +7253,7 @@ export type DeleteChildBillingGroupRequest = Message<"blueapi.billing.v1.DeleteC
6997
7253
  * Use `create(DeleteChildBillingGroupRequestSchema)` to create a new message.
6998
7254
  */
6999
7255
  export const DeleteChildBillingGroupRequestSchema: GenMessage<DeleteChildBillingGroupRequest> = /*@__PURE__*/
7000
- messageDesc(file_billing_v1_billing, 188);
7256
+ messageDesc(file_billing_v1_billing, 193);
7001
7257
 
7002
7258
  /**
7003
7259
  * @generated from message blueapi.billing.v1.DeleteChildBillingGroupResponse
@@ -7010,7 +7266,7 @@ export type DeleteChildBillingGroupResponse = Message<"blueapi.billing.v1.Delete
7010
7266
  * Use `create(DeleteChildBillingGroupResponseSchema)` to create a new message.
7011
7267
  */
7012
7268
  export const DeleteChildBillingGroupResponseSchema: GenMessage<DeleteChildBillingGroupResponse> = /*@__PURE__*/
7013
- messageDesc(file_billing_v1_billing, 189);
7269
+ messageDesc(file_billing_v1_billing, 194);
7014
7270
 
7015
7271
  /**
7016
7272
  * @generated from message blueapi.billing.v1.UpdateChildBillingGroupInvoiceSettingsRequest
@@ -7029,6 +7285,13 @@ export type UpdateChildBillingGroupInvoiceSettingsRequest = Message<"blueapi.bil
7029
7285
  * @generated from field: blueapi.billing.v1.ChildBillingGroupInvoiceSettings invoiceSettings = 2;
7030
7286
  */
7031
7287
  invoiceSettings?: ChildBillingGroupInvoiceSettings;
7288
+
7289
+ /**
7290
+ * Optional. Invoice layout config id to attach.
7291
+ *
7292
+ * @generated from field: optional string invoiceLayoutConfigId = 3;
7293
+ */
7294
+ invoiceLayoutConfigId?: string;
7032
7295
  };
7033
7296
 
7034
7297
  /**
@@ -7036,7 +7299,7 @@ export type UpdateChildBillingGroupInvoiceSettingsRequest = Message<"blueapi.bil
7036
7299
  * Use `create(UpdateChildBillingGroupInvoiceSettingsRequestSchema)` to create a new message.
7037
7300
  */
7038
7301
  export const UpdateChildBillingGroupInvoiceSettingsRequestSchema: GenMessage<UpdateChildBillingGroupInvoiceSettingsRequest> = /*@__PURE__*/
7039
- messageDesc(file_billing_v1_billing, 190);
7302
+ messageDesc(file_billing_v1_billing, 195);
7040
7303
 
7041
7304
  /**
7042
7305
  * @generated from message blueapi.billing.v1.UpdateChildBillingGroupInvoiceSettingsResponse
@@ -7049,7 +7312,7 @@ export type UpdateChildBillingGroupInvoiceSettingsResponse = Message<"blueapi.bi
7049
7312
  * Use `create(UpdateChildBillingGroupInvoiceSettingsResponseSchema)` to create a new message.
7050
7313
  */
7051
7314
  export const UpdateChildBillingGroupInvoiceSettingsResponseSchema: GenMessage<UpdateChildBillingGroupInvoiceSettingsResponse> = /*@__PURE__*/
7052
- messageDesc(file_billing_v1_billing, 191);
7315
+ messageDesc(file_billing_v1_billing, 196);
7053
7316
 
7054
7317
  /**
7055
7318
  * @generated from message blueapi.billing.v1.SetChildBillingGroupCustomizedBillingServiceRequest
@@ -7089,7 +7352,7 @@ export type SetChildBillingGroupCustomizedBillingServiceRequest = Message<"bluea
7089
7352
  * Use `create(SetChildBillingGroupCustomizedBillingServiceRequestSchema)` to create a new message.
7090
7353
  */
7091
7354
  export const SetChildBillingGroupCustomizedBillingServiceRequestSchema: GenMessage<SetChildBillingGroupCustomizedBillingServiceRequest> = /*@__PURE__*/
7092
- messageDesc(file_billing_v1_billing, 192);
7355
+ messageDesc(file_billing_v1_billing, 197);
7093
7356
 
7094
7357
  /**
7095
7358
  * CustomizedBillingServiceBillingSetting
@@ -7126,7 +7389,7 @@ export type SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillin
7126
7389
  * Use `create(SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSettingSchema)` to create a new message.
7127
7390
  */
7128
7391
  export const SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSettingSchema: GenMessage<SetChildBillingGroupCustomizedBillingServiceRequest_CustomizedBillingServiceBillingSetting> = /*@__PURE__*/
7129
- messageDesc(file_billing_v1_billing, 192, 0);
7392
+ messageDesc(file_billing_v1_billing, 197, 0);
7130
7393
 
7131
7394
  /**
7132
7395
  * @generated from message blueapi.billing.v1.SetChildBillingGroupInvoiceServiceDiscountsRequest
@@ -7154,7 +7417,7 @@ export type SetChildBillingGroupInvoiceServiceDiscountsRequest = Message<"blueap
7154
7417
  * Use `create(SetChildBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
7155
7418
  */
7156
7419
  export const SetChildBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<SetChildBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
7157
- messageDesc(file_billing_v1_billing, 193);
7420
+ messageDesc(file_billing_v1_billing, 198);
7158
7421
 
7159
7422
  /**
7160
7423
  * @generated from message blueapi.billing.v1.SetChildBillingGroupAccountInvoiceServiceDiscountsRequest
@@ -7180,7 +7443,7 @@ export type SetChildBillingGroupAccountInvoiceServiceDiscountsRequest = Message<
7180
7443
  * Use `create(SetChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema)` to create a new message.
7181
7444
  */
7182
7445
  export const SetChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema: GenMessage<SetChildBillingGroupAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
7183
- messageDesc(file_billing_v1_billing, 194);
7446
+ messageDesc(file_billing_v1_billing, 199);
7184
7447
 
7185
7448
  /**
7186
7449
  * @generated from message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceRequest
@@ -7206,7 +7469,7 @@ export type GetChildBillingGroupCustomizedBillingServiceRequest = Message<"bluea
7206
7469
  * Use `create(GetChildBillingGroupCustomizedBillingServiceRequestSchema)` to create a new message.
7207
7470
  */
7208
7471
  export const GetChildBillingGroupCustomizedBillingServiceRequestSchema: GenMessage<GetChildBillingGroupCustomizedBillingServiceRequest> = /*@__PURE__*/
7209
- messageDesc(file_billing_v1_billing, 195);
7472
+ messageDesc(file_billing_v1_billing, 200);
7210
7473
 
7211
7474
  /**
7212
7475
  * @generated from message blueapi.billing.v1.GetChildBillingGroupCustomizedBillingServiceResponse
@@ -7246,7 +7509,7 @@ export type GetChildBillingGroupCustomizedBillingServiceResponse = Message<"blue
7246
7509
  * Use `create(GetChildBillingGroupCustomizedBillingServiceResponseSchema)` to create a new message.
7247
7510
  */
7248
7511
  export const GetChildBillingGroupCustomizedBillingServiceResponseSchema: GenMessage<GetChildBillingGroupCustomizedBillingServiceResponse> = /*@__PURE__*/
7249
- messageDesc(file_billing_v1_billing, 196);
7512
+ messageDesc(file_billing_v1_billing, 201);
7250
7513
 
7251
7514
  /**
7252
7515
  * @generated from message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsRequest
@@ -7265,7 +7528,7 @@ export type GetChildBillingGroupInvoiceServiceDiscountsRequest = Message<"blueap
7265
7528
  * Use `create(GetChildBillingGroupInvoiceServiceDiscountsRequestSchema)` to create a new message.
7266
7529
  */
7267
7530
  export const GetChildBillingGroupInvoiceServiceDiscountsRequestSchema: GenMessage<GetChildBillingGroupInvoiceServiceDiscountsRequest> = /*@__PURE__*/
7268
- messageDesc(file_billing_v1_billing, 197);
7531
+ messageDesc(file_billing_v1_billing, 202);
7269
7532
 
7270
7533
  /**
7271
7534
  * @generated from message blueapi.billing.v1.GetChildBillingGroupInvoiceServiceDiscountsResponse
@@ -7284,7 +7547,7 @@ export type GetChildBillingGroupInvoiceServiceDiscountsResponse = Message<"bluea
7284
7547
  * Use `create(GetChildBillingGroupInvoiceServiceDiscountsResponseSchema)` to create a new message.
7285
7548
  */
7286
7549
  export const GetChildBillingGroupInvoiceServiceDiscountsResponseSchema: GenMessage<GetChildBillingGroupInvoiceServiceDiscountsResponse> = /*@__PURE__*/
7287
- messageDesc(file_billing_v1_billing, 198);
7550
+ messageDesc(file_billing_v1_billing, 203);
7288
7551
 
7289
7552
  /**
7290
7553
  * @generated from message blueapi.billing.v1.ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest
@@ -7303,7 +7566,7 @@ export type ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest = Message
7303
7566
  * Use `create(ReadChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema)` to create a new message.
7304
7567
  */
7305
7568
  export const ReadChildBillingGroupAccountInvoiceServiceDiscountsRequestSchema: GenMessage<ReadChildBillingGroupAccountInvoiceServiceDiscountsRequest> = /*@__PURE__*/
7306
- messageDesc(file_billing_v1_billing, 199);
7569
+ messageDesc(file_billing_v1_billing, 204);
7307
7570
 
7308
7571
  /**
7309
7572
  * @generated from message blueapi.billing.v1.BulkCreateBillingGroupRequest
@@ -7352,7 +7615,7 @@ export type BulkCreateBillingGroupRequest = Message<"blueapi.billing.v1.BulkCrea
7352
7615
  * Use `create(BulkCreateBillingGroupRequestSchema)` to create a new message.
7353
7616
  */
7354
7617
  export const BulkCreateBillingGroupRequestSchema: GenMessage<BulkCreateBillingGroupRequest> = /*@__PURE__*/
7355
- messageDesc(file_billing_v1_billing, 200);
7618
+ messageDesc(file_billing_v1_billing, 205);
7356
7619
 
7357
7620
  /**
7358
7621
  * @generated from message blueapi.billing.v1.BulkCreateBillingGroupError
@@ -7385,7 +7648,7 @@ export type BulkCreateBillingGroupError = Message<"blueapi.billing.v1.BulkCreate
7385
7648
  * Use `create(BulkCreateBillingGroupErrorSchema)` to create a new message.
7386
7649
  */
7387
7650
  export const BulkCreateBillingGroupErrorSchema: GenMessage<BulkCreateBillingGroupError> = /*@__PURE__*/
7388
- messageDesc(file_billing_v1_billing, 201);
7651
+ messageDesc(file_billing_v1_billing, 206);
7389
7652
 
7390
7653
  /**
7391
7654
  * Metadata for the BulkCreateBillingGroup long-running operation.
@@ -7456,7 +7719,7 @@ export type BulkCreateBillingGroupMetadata = Message<"blueapi.billing.v1.BulkCre
7456
7719
  * Use `create(BulkCreateBillingGroupMetadataSchema)` to create a new message.
7457
7720
  */
7458
7721
  export const BulkCreateBillingGroupMetadataSchema: GenMessage<BulkCreateBillingGroupMetadata> = /*@__PURE__*/
7459
- messageDesc(file_billing_v1_billing, 202);
7722
+ messageDesc(file_billing_v1_billing, 207);
7460
7723
 
7461
7724
  /**
7462
7725
  * @generated from message blueapi.billing.v1.ExcludeServiceEntry
@@ -7531,7 +7794,7 @@ export type ExcludeServiceEntry = Message<"blueapi.billing.v1.ExcludeServiceEntr
7531
7794
  * Use `create(ExcludeServiceEntrySchema)` to create a new message.
7532
7795
  */
7533
7796
  export const ExcludeServiceEntrySchema: GenMessage<ExcludeServiceEntry> = /*@__PURE__*/
7534
- messageDesc(file_billing_v1_billing, 203);
7797
+ messageDesc(file_billing_v1_billing, 208);
7535
7798
 
7536
7799
  /**
7537
7800
  * @generated from message blueapi.billing.v1.CreateExcludeServiceEntryRequest
@@ -7585,7 +7848,7 @@ export type CreateExcludeServiceEntryRequest = Message<"blueapi.billing.v1.Creat
7585
7848
  * Use `create(CreateExcludeServiceEntryRequestSchema)` to create a new message.
7586
7849
  */
7587
7850
  export const CreateExcludeServiceEntryRequestSchema: GenMessage<CreateExcludeServiceEntryRequest> = /*@__PURE__*/
7588
- messageDesc(file_billing_v1_billing, 204);
7851
+ messageDesc(file_billing_v1_billing, 209);
7589
7852
 
7590
7853
  /**
7591
7854
  * @generated from message blueapi.billing.v1.CreateExcludeServiceEntryResponse
@@ -7604,7 +7867,7 @@ export type CreateExcludeServiceEntryResponse = Message<"blueapi.billing.v1.Crea
7604
7867
  * Use `create(CreateExcludeServiceEntryResponseSchema)` to create a new message.
7605
7868
  */
7606
7869
  export const CreateExcludeServiceEntryResponseSchema: GenMessage<CreateExcludeServiceEntryResponse> = /*@__PURE__*/
7607
- messageDesc(file_billing_v1_billing, 205);
7870
+ messageDesc(file_billing_v1_billing, 210);
7608
7871
 
7609
7872
  /**
7610
7873
  * @generated from message blueapi.billing.v1.UpdateExcludeServiceEntryRequest
@@ -7658,7 +7921,7 @@ export type UpdateExcludeServiceEntryRequest = Message<"blueapi.billing.v1.Updat
7658
7921
  * Use `create(UpdateExcludeServiceEntryRequestSchema)` to create a new message.
7659
7922
  */
7660
7923
  export const UpdateExcludeServiceEntryRequestSchema: GenMessage<UpdateExcludeServiceEntryRequest> = /*@__PURE__*/
7661
- messageDesc(file_billing_v1_billing, 206);
7924
+ messageDesc(file_billing_v1_billing, 211);
7662
7925
 
7663
7926
  /**
7664
7927
  * @generated from message blueapi.billing.v1.UpdateExcludeServiceEntryResponse
@@ -7677,7 +7940,7 @@ export type UpdateExcludeServiceEntryResponse = Message<"blueapi.billing.v1.Upda
7677
7940
  * Use `create(UpdateExcludeServiceEntryResponseSchema)` to create a new message.
7678
7941
  */
7679
7942
  export const UpdateExcludeServiceEntryResponseSchema: GenMessage<UpdateExcludeServiceEntryResponse> = /*@__PURE__*/
7680
- messageDesc(file_billing_v1_billing, 207);
7943
+ messageDesc(file_billing_v1_billing, 212);
7681
7944
 
7682
7945
  /**
7683
7946
  * @generated from message blueapi.billing.v1.DeleteExcludeServiceEntryRequest
@@ -7724,7 +7987,7 @@ export type DeleteExcludeServiceEntryRequest = Message<"blueapi.billing.v1.Delet
7724
7987
  * Use `create(DeleteExcludeServiceEntryRequestSchema)` to create a new message.
7725
7988
  */
7726
7989
  export const DeleteExcludeServiceEntryRequestSchema: GenMessage<DeleteExcludeServiceEntryRequest> = /*@__PURE__*/
7727
- messageDesc(file_billing_v1_billing, 208);
7990
+ messageDesc(file_billing_v1_billing, 213);
7728
7991
 
7729
7992
  /**
7730
7993
  * @generated from message blueapi.billing.v1.DeleteExcludeServiceEntryResponse
@@ -7743,7 +8006,7 @@ export type DeleteExcludeServiceEntryResponse = Message<"blueapi.billing.v1.Dele
7743
8006
  * Use `create(DeleteExcludeServiceEntryResponseSchema)` to create a new message.
7744
8007
  */
7745
8008
  export const DeleteExcludeServiceEntryResponseSchema: GenMessage<DeleteExcludeServiceEntryResponse> = /*@__PURE__*/
7746
- messageDesc(file_billing_v1_billing, 209);
8009
+ messageDesc(file_billing_v1_billing, 214);
7747
8010
 
7748
8011
  /**
7749
8012
  * @generated from message blueapi.billing.v1.ListExcludeServicesRequest
@@ -7769,7 +8032,7 @@ export type ListExcludeServicesRequest = Message<"blueapi.billing.v1.ListExclude
7769
8032
  * Use `create(ListExcludeServicesRequestSchema)` to create a new message.
7770
8033
  */
7771
8034
  export const ListExcludeServicesRequestSchema: GenMessage<ListExcludeServicesRequest> = /*@__PURE__*/
7772
- messageDesc(file_billing_v1_billing, 210);
8035
+ messageDesc(file_billing_v1_billing, 215);
7773
8036
 
7774
8037
  /**
7775
8038
  * @generated from message blueapi.billing.v1.ListExcludeServicesResponse
@@ -7788,7 +8051,7 @@ export type ListExcludeServicesResponse = Message<"blueapi.billing.v1.ListExclud
7788
8051
  * Use `create(ListExcludeServicesResponseSchema)` to create a new message.
7789
8052
  */
7790
8053
  export const ListExcludeServicesResponseSchema: GenMessage<ListExcludeServicesResponse> = /*@__PURE__*/
7791
- messageDesc(file_billing_v1_billing, 211);
8054
+ messageDesc(file_billing_v1_billing, 216);
7792
8055
 
7793
8056
  /**
7794
8057
  * Represents a single service with its associated names and SKUs.
@@ -7830,7 +8093,7 @@ export type ServiceItem = Message<"blueapi.billing.v1.ServiceItem"> & {
7830
8093
  * Use `create(ServiceItemSchema)` to create a new message.
7831
8094
  */
7832
8095
  export const ServiceItemSchema: GenMessage<ServiceItem> = /*@__PURE__*/
7833
- messageDesc(file_billing_v1_billing, 212);
8096
+ messageDesc(file_billing_v1_billing, 217);
7834
8097
 
7835
8098
  /**
7836
8099
  * @generated from message blueapi.billing.v1.ListServicesRequest
@@ -7859,7 +8122,7 @@ export type ListServicesRequest = Message<"blueapi.billing.v1.ListServicesReques
7859
8122
  * Use `create(ListServicesRequestSchema)` to create a new message.
7860
8123
  */
7861
8124
  export const ListServicesRequestSchema: GenMessage<ListServicesRequest> = /*@__PURE__*/
7862
- messageDesc(file_billing_v1_billing, 213);
8125
+ messageDesc(file_billing_v1_billing, 218);
7863
8126
 
7864
8127
  /**
7865
8128
  * @generated from message blueapi.billing.v1.ListServicesResponse
@@ -7878,7 +8141,7 @@ export type ListServicesResponse = Message<"blueapi.billing.v1.ListServicesRespo
7878
8141
  * Use `create(ListServicesResponseSchema)` to create a new message.
7879
8142
  */
7880
8143
  export const ListServicesResponseSchema: GenMessage<ListServicesResponse> = /*@__PURE__*/
7881
- messageDesc(file_billing_v1_billing, 214);
8144
+ messageDesc(file_billing_v1_billing, 219);
7882
8145
 
7883
8146
  /**
7884
8147
  * @generated from message blueapi.billing.v1.BulkLinkAccountRequest
@@ -7927,7 +8190,7 @@ export type BulkLinkAccountRequest = Message<"blueapi.billing.v1.BulkLinkAccount
7927
8190
  * Use `create(BulkLinkAccountRequestSchema)` to create a new message.
7928
8191
  */
7929
8192
  export const BulkLinkAccountRequestSchema: GenMessage<BulkLinkAccountRequest> = /*@__PURE__*/
7930
- messageDesc(file_billing_v1_billing, 215);
8193
+ messageDesc(file_billing_v1_billing, 220);
7931
8194
 
7932
8195
  /**
7933
8196
  * @generated from message blueapi.billing.v1.BulkLinkAccountError
@@ -7967,7 +8230,7 @@ export type BulkLinkAccountError = Message<"blueapi.billing.v1.BulkLinkAccountEr
7967
8230
  * Use `create(BulkLinkAccountErrorSchema)` to create a new message.
7968
8231
  */
7969
8232
  export const BulkLinkAccountErrorSchema: GenMessage<BulkLinkAccountError> = /*@__PURE__*/
7970
- messageDesc(file_billing_v1_billing, 216);
8233
+ messageDesc(file_billing_v1_billing, 221);
7971
8234
 
7972
8235
  /**
7973
8236
  * Metadata for the BulkLinkAccount long-running operation.
@@ -8038,7 +8301,7 @@ export type BulkLinkAccountMetadata = Message<"blueapi.billing.v1.BulkLinkAccoun
8038
8301
  * Use `create(BulkLinkAccountMetadataSchema)` to create a new message.
8039
8302
  */
8040
8303
  export const BulkLinkAccountMetadataSchema: GenMessage<BulkLinkAccountMetadata> = /*@__PURE__*/
8041
- messageDesc(file_billing_v1_billing, 217);
8304
+ messageDesc(file_billing_v1_billing, 222);
8042
8305
 
8043
8306
  /**
8044
8307
  * Request for BulkTagBillingGroup.
@@ -8068,7 +8331,7 @@ export type BulkTagBillingGroupRequest = Message<"blueapi.billing.v1.BulkTagBill
8068
8331
  * Use `create(BulkTagBillingGroupRequestSchema)` to create a new message.
8069
8332
  */
8070
8333
  export const BulkTagBillingGroupRequestSchema: GenMessage<BulkTagBillingGroupRequest> = /*@__PURE__*/
8071
- messageDesc(file_billing_v1_billing, 218);
8334
+ messageDesc(file_billing_v1_billing, 223);
8072
8335
 
8073
8336
  /**
8074
8337
  * Describes a single failed row in a BulkTagBillingGroup operation.
@@ -8124,7 +8387,7 @@ export type BulkTagBillingGroupError = Message<"blueapi.billing.v1.BulkTagBillin
8124
8387
  * Use `create(BulkTagBillingGroupErrorSchema)` to create a new message.
8125
8388
  */
8126
8389
  export const BulkTagBillingGroupErrorSchema: GenMessage<BulkTagBillingGroupError> = /*@__PURE__*/
8127
- messageDesc(file_billing_v1_billing, 219);
8390
+ messageDesc(file_billing_v1_billing, 224);
8128
8391
 
8129
8392
  /**
8130
8393
  * Metadata for the BulkTagBillingGroup long-running operation.
@@ -8195,7 +8458,205 @@ export type BulkTagBillingGroupMetadata = Message<"blueapi.billing.v1.BulkTagBil
8195
8458
  * Use `create(BulkTagBillingGroupMetadataSchema)` to create a new message.
8196
8459
  */
8197
8460
  export const BulkTagBillingGroupMetadataSchema: GenMessage<BulkTagBillingGroupMetadata> = /*@__PURE__*/
8198
- messageDesc(file_billing_v1_billing, 220);
8461
+ messageDesc(file_billing_v1_billing, 225);
8462
+
8463
+ /**
8464
+ * @generated from message blueapi.billing.v1.GetBillingGroupInvoiceLayoutConfigRequest
8465
+ */
8466
+ export type GetBillingGroupInvoiceLayoutConfigRequest = Message<"blueapi.billing.v1.GetBillingGroupInvoiceLayoutConfigRequest"> & {
8467
+ /**
8468
+ * Required. The billing group internal id.
8469
+ *
8470
+ * @generated from field: string id = 1;
8471
+ */
8472
+ id: string;
8473
+ };
8474
+
8475
+ /**
8476
+ * Describes the message blueapi.billing.v1.GetBillingGroupInvoiceLayoutConfigRequest.
8477
+ * Use `create(GetBillingGroupInvoiceLayoutConfigRequestSchema)` to create a new message.
8478
+ */
8479
+ export const GetBillingGroupInvoiceLayoutConfigRequestSchema: GenMessage<GetBillingGroupInvoiceLayoutConfigRequest> = /*@__PURE__*/
8480
+ messageDesc(file_billing_v1_billing, 226);
8481
+
8482
+ /**
8483
+ * @generated from message blueapi.billing.v1.GetBillingGroupInvoiceLayoutConfigResponse
8484
+ */
8485
+ export type GetBillingGroupInvoiceLayoutConfigResponse = Message<"blueapi.billing.v1.GetBillingGroupInvoiceLayoutConfigResponse"> & {
8486
+ /**
8487
+ * @generated from field: blueapi.api.ripple.InvoiceLayout layout = 1;
8488
+ */
8489
+ layout?: InvoiceLayout;
8490
+
8491
+ /**
8492
+ * Layout id.
8493
+ *
8494
+ * @generated from field: string id = 2;
8495
+ */
8496
+ id: string;
8497
+
8498
+ /**
8499
+ * Layout name.
8500
+ *
8501
+ * @generated from field: string name = 3;
8502
+ */
8503
+ name: string;
8504
+ };
8505
+
8506
+ /**
8507
+ * Describes the message blueapi.billing.v1.GetBillingGroupInvoiceLayoutConfigResponse.
8508
+ * Use `create(GetBillingGroupInvoiceLayoutConfigResponseSchema)` to create a new message.
8509
+ */
8510
+ export const GetBillingGroupInvoiceLayoutConfigResponseSchema: GenMessage<GetBillingGroupInvoiceLayoutConfigResponse> = /*@__PURE__*/
8511
+ messageDesc(file_billing_v1_billing, 227);
8512
+
8513
+ /**
8514
+ * @generated from message blueapi.billing.v1.SetBillingGroupInvoiceLayoutConfigRequest
8515
+ */
8516
+ export type SetBillingGroupInvoiceLayoutConfigRequest = Message<"blueapi.billing.v1.SetBillingGroupInvoiceLayoutConfigRequest"> & {
8517
+ /**
8518
+ * Required. The billing group internal id.
8519
+ *
8520
+ * @generated from field: string id = 1;
8521
+ */
8522
+ id: string;
8523
+
8524
+ /**
8525
+ * Required. The layout id.
8526
+ *
8527
+ * @generated from field: string layout_id = 2;
8528
+ */
8529
+ layoutId: string;
8530
+ };
8531
+
8532
+ /**
8533
+ * Describes the message blueapi.billing.v1.SetBillingGroupInvoiceLayoutConfigRequest.
8534
+ * Use `create(SetBillingGroupInvoiceLayoutConfigRequestSchema)` to create a new message.
8535
+ */
8536
+ export const SetBillingGroupInvoiceLayoutConfigRequestSchema: GenMessage<SetBillingGroupInvoiceLayoutConfigRequest> = /*@__PURE__*/
8537
+ messageDesc(file_billing_v1_billing, 228);
8538
+
8539
+ /**
8540
+ * @generated from message blueapi.billing.v1.CreateInvoiceLayoutConfigRequest
8541
+ */
8542
+ export type CreateInvoiceLayoutConfigRequest = Message<"blueapi.billing.v1.CreateInvoiceLayoutConfigRequest"> & {
8543
+ /**
8544
+ * Required. The name of the invoice layout.
8545
+ *
8546
+ * @generated from field: string name = 1;
8547
+ */
8548
+ name: string;
8549
+
8550
+ /**
8551
+ * Required. The actual invoice layout configs.
8552
+ *
8553
+ * @generated from field: blueapi.api.ripple.InvoiceLayout layout = 2;
8554
+ */
8555
+ layout?: InvoiceLayout;
8556
+ };
8557
+
8558
+ /**
8559
+ * Describes the message blueapi.billing.v1.CreateInvoiceLayoutConfigRequest.
8560
+ * Use `create(CreateInvoiceLayoutConfigRequestSchema)` to create a new message.
8561
+ */
8562
+ export const CreateInvoiceLayoutConfigRequestSchema: GenMessage<CreateInvoiceLayoutConfigRequest> = /*@__PURE__*/
8563
+ messageDesc(file_billing_v1_billing, 229);
8564
+
8565
+ /**
8566
+ * @generated from message blueapi.billing.v1.CreateInvoiceLayoutConfigResponse
8567
+ */
8568
+ export type CreateInvoiceLayoutConfigResponse = Message<"blueapi.billing.v1.CreateInvoiceLayoutConfigResponse"> & {
8569
+ /**
8570
+ * The id assigned for this layout.
8571
+ *
8572
+ * @generated from field: string layout_id = 1;
8573
+ */
8574
+ layoutId: string;
8575
+ };
8576
+
8577
+ /**
8578
+ * Describes the message blueapi.billing.v1.CreateInvoiceLayoutConfigResponse.
8579
+ * Use `create(CreateInvoiceLayoutConfigResponseSchema)` to create a new message.
8580
+ */
8581
+ export const CreateInvoiceLayoutConfigResponseSchema: GenMessage<CreateInvoiceLayoutConfigResponse> = /*@__PURE__*/
8582
+ messageDesc(file_billing_v1_billing, 230);
8583
+
8584
+ /**
8585
+ * @generated from message blueapi.billing.v1.UpdateInvoiceLayoutConfigRequest
8586
+ */
8587
+ export type UpdateInvoiceLayoutConfigRequest = Message<"blueapi.billing.v1.UpdateInvoiceLayoutConfigRequest"> & {
8588
+ /**
8589
+ * Required. The layout id to be updated
8590
+ *
8591
+ * @generated from field: string id = 1;
8592
+ */
8593
+ id: string;
8594
+
8595
+ /**
8596
+ * Required. The new layout values.
8597
+ *
8598
+ * @generated from field: blueapi.api.ripple.InvoiceLayout layout = 2;
8599
+ */
8600
+ layout?: InvoiceLayout;
8601
+
8602
+ /**
8603
+ * Optional. The updated name of this invoice layout config.
8604
+ *
8605
+ * @generated from field: string name = 3;
8606
+ */
8607
+ name: string;
8608
+ };
8609
+
8610
+ /**
8611
+ * Describes the message blueapi.billing.v1.UpdateInvoiceLayoutConfigRequest.
8612
+ * Use `create(UpdateInvoiceLayoutConfigRequestSchema)` to create a new message.
8613
+ */
8614
+ export const UpdateInvoiceLayoutConfigRequestSchema: GenMessage<UpdateInvoiceLayoutConfigRequest> = /*@__PURE__*/
8615
+ messageDesc(file_billing_v1_billing, 231);
8616
+
8617
+ /**
8618
+ * @generated from message blueapi.billing.v1.ReadInvoiceLayoutConfigRequest
8619
+ */
8620
+ export type ReadInvoiceLayoutConfigRequest = Message<"blueapi.billing.v1.ReadInvoiceLayoutConfigRequest"> & {
8621
+ };
8622
+
8623
+ /**
8624
+ * Describes the message blueapi.billing.v1.ReadInvoiceLayoutConfigRequest.
8625
+ * Use `create(ReadInvoiceLayoutConfigRequestSchema)` to create a new message.
8626
+ */
8627
+ export const ReadInvoiceLayoutConfigRequestSchema: GenMessage<ReadInvoiceLayoutConfigRequest> = /*@__PURE__*/
8628
+ messageDesc(file_billing_v1_billing, 232);
8629
+
8630
+ /**
8631
+ * @generated from message blueapi.billing.v1.ReadInvoiceLayoutConfigResponse
8632
+ */
8633
+ export type ReadInvoiceLayoutConfigResponse = Message<"blueapi.billing.v1.ReadInvoiceLayoutConfigResponse"> & {
8634
+ /**
8635
+ * Invoice layout config id.
8636
+ *
8637
+ * @generated from field: string id = 1;
8638
+ */
8639
+ id: string;
8640
+
8641
+ /**
8642
+ * Invoice layout config name.
8643
+ *
8644
+ * @generated from field: string name = 2;
8645
+ */
8646
+ name: string;
8647
+
8648
+ /**
8649
+ * @generated from field: blueapi.api.ripple.InvoiceLayout layout = 3;
8650
+ */
8651
+ layout?: InvoiceLayout;
8652
+ };
8653
+
8654
+ /**
8655
+ * Describes the message blueapi.billing.v1.ReadInvoiceLayoutConfigResponse.
8656
+ * Use `create(ReadInvoiceLayoutConfigResponseSchema)` to create a new message.
8657
+ */
8658
+ export const ReadInvoiceLayoutConfigResponseSchema: GenMessage<ReadInvoiceLayoutConfigResponse> = /*@__PURE__*/
8659
+ messageDesc(file_billing_v1_billing, 233);
8199
8660
 
8200
8661
  /**
8201
8662
  * Billing service definition.
@@ -8889,6 +9350,29 @@ export const Billing: GenService<{
8889
9350
  input: typeof RestoreAllocateAdjustmentEntryRequestSchema;
8890
9351
  output: typeof EmptySchema;
8891
9352
  },
9353
+ /**
9354
+ * Creates custom fee entries in the RIPPLE_FEES table.
9355
+ * Used to write Guaranteed Commitment entries and Custom Fee entries directly to the fee table. Only available in Ripple.
9356
+ *
9357
+ * @generated from rpc blueapi.billing.v1.Billing.CreateCustomFee
9358
+ */
9359
+ createCustomFee: {
9360
+ methodKind: "unary";
9361
+ input: typeof CreateCustomFeeRequestSchema;
9362
+ output: typeof CreateCustomFeeResponseSchema;
9363
+ },
9364
+ /**
9365
+ * Lists adjustment entry items from the fee table.
9366
+ * Reads fee entries from the RIPPLE_FEES table, optionally filtered by mobingi_type.
9367
+ * Note: Commitment entries (mobingi_type="COMMITMENT") are excluded from ReadAdjustmentEntries to avoid duplication with the Adjusting Entries UI. Only available in Ripple.
9368
+ *
9369
+ * @generated from rpc blueapi.billing.v1.Billing.ListAdjustmentEntryItems
9370
+ */
9371
+ listAdjustmentEntryItems: {
9372
+ methodKind: "server_streaming";
9373
+ input: typeof ListAdjustmentEntryItemsRequestSchema;
9374
+ output: typeof AdjustmentEntryItemSchema;
9375
+ },
8892
9376
  /**
8893
9377
  * WORK-IN-PROGRESS: Returns all registered accounts that are not associated to any billing groups and accounts found in CUR for the specified month. For Ripple only
8894
9378
  *
@@ -9585,6 +10069,56 @@ export const Billing: GenService<{
9585
10069
  input: typeof BulkTagBillingGroupRequestSchema;
9586
10070
  output: typeof OperationSchema;
9587
10071
  },
10072
+ /**
10073
+ * WORK-IN-PROGRESS. Gets the billing group invoice layout configs, used for overriding MSP level configs.
10074
+ *
10075
+ * @generated from rpc blueapi.billing.v1.Billing.GetBillingGroupInvoiceLayoutConfig
10076
+ */
10077
+ getBillingGroupInvoiceLayoutConfig: {
10078
+ methodKind: "unary";
10079
+ input: typeof GetBillingGroupInvoiceLayoutConfigRequestSchema;
10080
+ output: typeof GetBillingGroupInvoiceLayoutConfigResponseSchema;
10081
+ },
10082
+ /**
10083
+ * WORK-IN-PROGRESS. Sets the billing group invoice layout configs.
10084
+ *
10085
+ * @generated from rpc blueapi.billing.v1.Billing.SetBillingGroupInvoiceLayoutConfig
10086
+ */
10087
+ setBillingGroupInvoiceLayoutConfig: {
10088
+ methodKind: "unary";
10089
+ input: typeof SetBillingGroupInvoiceLayoutConfigRequestSchema;
10090
+ output: typeof EmptySchema;
10091
+ },
10092
+ /**
10093
+ * WORK-IN-PROGRESS. Creates an invoice layout config.
10094
+ *
10095
+ * @generated from rpc blueapi.billing.v1.Billing.CreateInvoiceLayoutConfig
10096
+ */
10097
+ createInvoiceLayoutConfig: {
10098
+ methodKind: "unary";
10099
+ input: typeof CreateInvoiceLayoutConfigRequestSchema;
10100
+ output: typeof CreateInvoiceLayoutConfigResponseSchema;
10101
+ },
10102
+ /**
10103
+ * WORK-IN-PROGRESS. Updates an invoice layout config.
10104
+ *
10105
+ * @generated from rpc blueapi.billing.v1.Billing.UpdateInvoiceLayoutConfig
10106
+ */
10107
+ updateInvoiceLayoutConfig: {
10108
+ methodKind: "unary";
10109
+ input: typeof UpdateInvoiceLayoutConfigRequestSchema;
10110
+ output: typeof EmptySchema;
10111
+ },
10112
+ /**
10113
+ * WORK-IN-PROGRESS. Reads all invoice layout config under an msp.
10114
+ *
10115
+ * @generated from rpc blueapi.billing.v1.Billing.ReadInvoiceLayoutConfig
10116
+ */
10117
+ readInvoiceLayoutConfig: {
10118
+ methodKind: "server_streaming";
10119
+ input: typeof ReadInvoiceLayoutConfigRequestSchema;
10120
+ output: typeof ReadInvoiceLayoutConfigResponseSchema;
10121
+ },
9588
10122
  }> = /*@__PURE__*/
9589
10123
  serviceDesc(file_billing_v1_billing, 0);
9590
10124