jennah-sdk-ts 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -105,6 +105,26 @@ export declare const SERVICES: {
105
105
  input: typeof import("./gen/jennah/agent/v1/memory_pb.js").GetMemoryVocabularyRequestSchema;
106
106
  output: typeof import("./gen/jennah/agent/v1/memory_pb.js").GetMemoryVocabularyResponseSchema;
107
107
  };
108
+ prepareFormationModel: {
109
+ methodKind: "unary";
110
+ input: typeof import("./gen/jennah/agent/v1/memory_pb.js").PrepareFormationModelRequestSchema;
111
+ output: typeof import("./gen/jennah/agent/v1/memory_pb.js").PrepareFormationModelResponseSchema;
112
+ };
113
+ setFormationModel: {
114
+ methodKind: "unary";
115
+ input: typeof import("./gen/jennah/agent/v1/memory_pb.js").SetFormationModelRequestSchema;
116
+ output: typeof import("./gen/jennah/agent/v1/memory_pb.js").SetFormationModelResponseSchema;
117
+ };
118
+ getFormationModel: {
119
+ methodKind: "unary";
120
+ input: typeof import("./gen/jennah/agent/v1/memory_pb.js").GetFormationModelRequestSchema;
121
+ output: typeof import("./gen/jennah/agent/v1/memory_pb.js").GetFormationModelResponseSchema;
122
+ };
123
+ removeFormationModel: {
124
+ methodKind: "unary";
125
+ input: typeof import("./gen/jennah/agent/v1/memory_pb.js").RemoveFormationModelRequestSchema;
126
+ output: typeof import("./gen/jennah/agent/v1/memory_pb.js").RemoveFormationModelResponseSchema;
127
+ };
108
128
  }>;
109
129
  readonly scopes: import("@bufbuild/protobuf/codegenv2").GenService<{
110
130
  createScope: {
@@ -2800,6 +2800,325 @@ export type GetMemoryVocabularyResponse = Message<"jennahapi.agent.v1.GetMemoryV
2800
2800
  * Use `create(GetMemoryVocabularyResponseSchema)` to create a new message.
2801
2801
  */
2802
2802
  export declare const GetMemoryVocabularyResponseSchema: GenMessage<GetMemoryVocabularyResponse>;
2803
+ /**
2804
+ * What the enterprise grants to let the platform call its Bedrock model.
2805
+ *
2806
+ * @generated from message jennahapi.agent.v1.BedrockFormationModelSetup
2807
+ */
2808
+ export type BedrockFormationModelSetup = Message<"jennahapi.agent.v1.BedrockFormationModelSetup"> & {
2809
+ /**
2810
+ * The AWS principal (an IAM role ARN) the enterprise's role must trust.
2811
+ *
2812
+ * @generated from field: string principal_arn = 1;
2813
+ */
2814
+ principalArn: string;
2815
+ /**
2816
+ * The external ID the role's trust policy must require (`sts:ExternalId`).
2817
+ * Unique to the enterprise; it is what stops another enterprise from using a
2818
+ * role that trusts the platform.
2819
+ *
2820
+ * @generated from field: string external_id = 2;
2821
+ */
2822
+ externalId: string;
2823
+ /**
2824
+ * The role-session name every call uses, for the enterprise's audit trail:
2825
+ * `jennah-` followed by the enterprise id.
2826
+ *
2827
+ * @generated from field: string session_name = 3;
2828
+ */
2829
+ sessionName: string;
2830
+ };
2831
+ /**
2832
+ * Describes the message jennahapi.agent.v1.BedrockFormationModelSetup.
2833
+ * Use `create(BedrockFormationModelSetupSchema)` to create a new message.
2834
+ */
2835
+ export declare const BedrockFormationModelSetupSchema: GenMessage<BedrockFormationModelSetup>;
2836
+ /**
2837
+ * What the enterprise grants to let the platform call its Vertex model.
2838
+ *
2839
+ * @generated from message jennahapi.agent.v1.VertexFormationModelSetup
2840
+ */
2841
+ export type VertexFormationModelSetup = Message<"jennahapi.agent.v1.VertexFormationModelSetup"> & {
2842
+ /**
2843
+ * The service account created for this enterprise alone. Grant it
2844
+ * `roles/aiplatform.user` in the project that serves the model.
2845
+ *
2846
+ * @generated from field: string service_account_email = 1;
2847
+ */
2848
+ serviceAccountEmail: string;
2849
+ };
2850
+ /**
2851
+ * Describes the message jennahapi.agent.v1.VertexFormationModelSetup.
2852
+ * Use `create(VertexFormationModelSetupSchema)` to create a new message.
2853
+ */
2854
+ export declare const VertexFormationModelSetupSchema: GenMessage<VertexFormationModelSetup>;
2855
+ /**
2856
+ * A Bedrock formation model.
2857
+ *
2858
+ * @generated from message jennahapi.agent.v1.BedrockFormationModel
2859
+ */
2860
+ export type BedrockFormationModel = Message<"jennahapi.agent.v1.BedrockFormationModel"> & {
2861
+ /**
2862
+ * The IAM role in the enterprise's account that trusts `principal_arn` with
2863
+ * the enterprise's external ID and may invoke the model.
2864
+ *
2865
+ * @generated from field: string role_arn = 1;
2866
+ */
2867
+ roleArn: string;
2868
+ /**
2869
+ * The AWS region calls are sent to. With a `global.` inference profile,
2870
+ * inference may run outside this region.
2871
+ *
2872
+ * @generated from field: string region = 2;
2873
+ */
2874
+ region: string;
2875
+ /**
2876
+ * A Bedrock model id or inference-profile id, e.g.
2877
+ * `global.anthropic.claude-sonnet-5-5`.
2878
+ *
2879
+ * @generated from field: string model = 3;
2880
+ */
2881
+ model: string;
2882
+ };
2883
+ /**
2884
+ * Describes the message jennahapi.agent.v1.BedrockFormationModel.
2885
+ * Use `create(BedrockFormationModelSchema)` to create a new message.
2886
+ */
2887
+ export declare const BedrockFormationModelSchema: GenMessage<BedrockFormationModel>;
2888
+ /**
2889
+ * A Vertex AI formation model.
2890
+ *
2891
+ * @generated from message jennahapi.agent.v1.VertexFormationModel
2892
+ */
2893
+ export type VertexFormationModel = Message<"jennahapi.agent.v1.VertexFormationModel"> & {
2894
+ /**
2895
+ * The GCP project that serves the model and granted the enterprise's service
2896
+ * account access.
2897
+ *
2898
+ * @generated from field: string project = 1;
2899
+ */
2900
+ project: string;
2901
+ /**
2902
+ * The Vertex location, e.g. `us-central1` or `global`.
2903
+ *
2904
+ * @generated from field: string location = 2;
2905
+ */
2906
+ location: string;
2907
+ /**
2908
+ * A Vertex publisher model id, e.g. `gemini-3.8-flash`.
2909
+ *
2910
+ * @generated from field: string model = 3;
2911
+ */
2912
+ model: string;
2913
+ };
2914
+ /**
2915
+ * Describes the message jennahapi.agent.v1.VertexFormationModel.
2916
+ * Use `create(VertexFormationModelSchema)` to create a new message.
2917
+ */
2918
+ export declare const VertexFormationModelSchema: GenMessage<VertexFormationModel>;
2919
+ /**
2920
+ * An enterprise's own formation model.
2921
+ *
2922
+ * @generated from message jennahapi.agent.v1.FormationModel
2923
+ */
2924
+ export type FormationModel = Message<"jennahapi.agent.v1.FormationModel"> & {
2925
+ /**
2926
+ * @generated from field: jennahapi.agent.v1.FormationModelProvider provider = 1;
2927
+ */
2928
+ provider: FormationModelProvider;
2929
+ /**
2930
+ * Set when `provider` is BEDROCK.
2931
+ *
2932
+ * @generated from field: jennahapi.agent.v1.BedrockFormationModel bedrock = 2;
2933
+ */
2934
+ bedrock?: BedrockFormationModel | undefined;
2935
+ /**
2936
+ * Set when `provider` is VERTEX.
2937
+ *
2938
+ * @generated from field: jennahapi.agent.v1.VertexFormationModel vertex = 3;
2939
+ */
2940
+ vertex?: VertexFormationModel | undefined;
2941
+ /**
2942
+ * How much the model reasons before answering: `low`, `medium` or `high`, or
2943
+ * empty for the provider's default. Every formation makes two model calls, and
2944
+ * reasoning is billed by the provider as output.
2945
+ *
2946
+ * @generated from field: string thinking_level = 4;
2947
+ */
2948
+ thinkingLevel: string;
2949
+ /**
2950
+ * The output bound of one model call, reasoning included. Zero means the
2951
+ * provider default (32,000 on Bedrock).
2952
+ *
2953
+ * @generated from field: int32 max_output_tokens = 5;
2954
+ */
2955
+ maxOutputTokens: number;
2956
+ /**
2957
+ * Output only: when the model was last set, and by whom.
2958
+ *
2959
+ * @generated from field: google.protobuf.Timestamp update_time = 6;
2960
+ */
2961
+ updateTime?: Timestamp | undefined;
2962
+ /**
2963
+ * @generated from field: string updated_by = 7;
2964
+ */
2965
+ updatedBy: string;
2966
+ };
2967
+ /**
2968
+ * Describes the message jennahapi.agent.v1.FormationModel.
2969
+ * Use `create(FormationModelSchema)` to create a new message.
2970
+ */
2971
+ export declare const FormationModelSchema: GenMessage<FormationModel>;
2972
+ /**
2973
+ * Request message for the MemoryService.PrepareFormationModel rpc.
2974
+ *
2975
+ * @generated from message jennahapi.agent.v1.PrepareFormationModelRequest
2976
+ */
2977
+ export type PrepareFormationModelRequest = Message<"jennahapi.agent.v1.PrepareFormationModelRequest"> & {
2978
+ /**
2979
+ * @generated from field: jennahapi.agent.v1.FormationModelProvider provider = 1;
2980
+ */
2981
+ provider: FormationModelProvider;
2982
+ };
2983
+ /**
2984
+ * Describes the message jennahapi.agent.v1.PrepareFormationModelRequest.
2985
+ * Use `create(PrepareFormationModelRequestSchema)` to create a new message.
2986
+ */
2987
+ export declare const PrepareFormationModelRequestSchema: GenMessage<PrepareFormationModelRequest>;
2988
+ /**
2989
+ * Response message for the MemoryService.PrepareFormationModel rpc.
2990
+ *
2991
+ * @generated from message jennahapi.agent.v1.PrepareFormationModelResponse
2992
+ */
2993
+ export type PrepareFormationModelResponse = Message<"jennahapi.agent.v1.PrepareFormationModelResponse"> & {
2994
+ /**
2995
+ * @generated from field: jennahapi.agent.v1.FormationModelProvider provider = 1;
2996
+ */
2997
+ provider: FormationModelProvider;
2998
+ /**
2999
+ * Set for BEDROCK.
3000
+ *
3001
+ * @generated from field: jennahapi.agent.v1.BedrockFormationModelSetup bedrock = 2;
3002
+ */
3003
+ bedrock?: BedrockFormationModelSetup | undefined;
3004
+ /**
3005
+ * Set for VERTEX.
3006
+ *
3007
+ * @generated from field: jennahapi.agent.v1.VertexFormationModelSetup vertex = 3;
3008
+ */
3009
+ vertex?: VertexFormationModelSetup | undefined;
3010
+ };
3011
+ /**
3012
+ * Describes the message jennahapi.agent.v1.PrepareFormationModelResponse.
3013
+ * Use `create(PrepareFormationModelResponseSchema)` to create a new message.
3014
+ */
3015
+ export declare const PrepareFormationModelResponseSchema: GenMessage<PrepareFormationModelResponse>;
3016
+ /**
3017
+ * Request message for the MemoryService.SetFormationModel rpc.
3018
+ *
3019
+ * @generated from message jennahapi.agent.v1.SetFormationModelRequest
3020
+ */
3021
+ export type SetFormationModelRequest = Message<"jennahapi.agent.v1.SetFormationModelRequest"> & {
3022
+ /**
3023
+ * The model to set. `update_time` and `updated_by` are ignored.
3024
+ *
3025
+ * @generated from field: jennahapi.agent.v1.FormationModel model = 1;
3026
+ */
3027
+ model?: FormationModel | undefined;
3028
+ };
3029
+ /**
3030
+ * Describes the message jennahapi.agent.v1.SetFormationModelRequest.
3031
+ * Use `create(SetFormationModelRequestSchema)` to create a new message.
3032
+ */
3033
+ export declare const SetFormationModelRequestSchema: GenMessage<SetFormationModelRequest>;
3034
+ /**
3035
+ * Response message for the MemoryService.SetFormationModel rpc.
3036
+ *
3037
+ * @generated from message jennahapi.agent.v1.SetFormationModelResponse
3038
+ */
3039
+ export type SetFormationModelResponse = Message<"jennahapi.agent.v1.SetFormationModelResponse"> & {
3040
+ /**
3041
+ * The model as stored.
3042
+ *
3043
+ * @generated from field: jennahapi.agent.v1.FormationModel model = 1;
3044
+ */
3045
+ model?: FormationModel | undefined;
3046
+ };
3047
+ /**
3048
+ * Describes the message jennahapi.agent.v1.SetFormationModelResponse.
3049
+ * Use `create(SetFormationModelResponseSchema)` to create a new message.
3050
+ */
3051
+ export declare const SetFormationModelResponseSchema: GenMessage<SetFormationModelResponse>;
3052
+ /**
3053
+ * Request message for the MemoryService.GetFormationModel rpc.
3054
+ *
3055
+ * @generated from message jennahapi.agent.v1.GetFormationModelRequest
3056
+ */
3057
+ export type GetFormationModelRequest = Message<"jennahapi.agent.v1.GetFormationModelRequest"> & {};
3058
+ /**
3059
+ * Describes the message jennahapi.agent.v1.GetFormationModelRequest.
3060
+ * Use `create(GetFormationModelRequestSchema)` to create a new message.
3061
+ */
3062
+ export declare const GetFormationModelRequestSchema: GenMessage<GetFormationModelRequest>;
3063
+ /**
3064
+ * Response message for the MemoryService.GetFormationModel rpc.
3065
+ *
3066
+ * @generated from message jennahapi.agent.v1.GetFormationModelResponse
3067
+ */
3068
+ export type GetFormationModelResponse = Message<"jennahapi.agent.v1.GetFormationModelResponse"> & {
3069
+ /**
3070
+ * The enterprise's formation model. Unset when it has none, and formation runs
3071
+ * on the platform's model.
3072
+ *
3073
+ * @generated from field: jennahapi.agent.v1.FormationModel model = 1;
3074
+ */
3075
+ model?: FormationModel | undefined;
3076
+ /**
3077
+ * The setup values issued for each provider, unset for a provider never
3078
+ * prepared.
3079
+ *
3080
+ * @generated from field: jennahapi.agent.v1.BedrockFormationModelSetup bedrock_setup = 2;
3081
+ */
3082
+ bedrockSetup?: BedrockFormationModelSetup | undefined;
3083
+ /**
3084
+ * @generated from field: jennahapi.agent.v1.VertexFormationModelSetup vertex_setup = 3;
3085
+ */
3086
+ vertexSetup?: VertexFormationModelSetup | undefined;
3087
+ };
3088
+ /**
3089
+ * Describes the message jennahapi.agent.v1.GetFormationModelResponse.
3090
+ * Use `create(GetFormationModelResponseSchema)` to create a new message.
3091
+ */
3092
+ export declare const GetFormationModelResponseSchema: GenMessage<GetFormationModelResponse>;
3093
+ /**
3094
+ * Request message for the MemoryService.RemoveFormationModel rpc.
3095
+ *
3096
+ * @generated from message jennahapi.agent.v1.RemoveFormationModelRequest
3097
+ */
3098
+ export type RemoveFormationModelRequest = Message<"jennahapi.agent.v1.RemoveFormationModelRequest"> & {};
3099
+ /**
3100
+ * Describes the message jennahapi.agent.v1.RemoveFormationModelRequest.
3101
+ * Use `create(RemoveFormationModelRequestSchema)` to create a new message.
3102
+ */
3103
+ export declare const RemoveFormationModelRequestSchema: GenMessage<RemoveFormationModelRequest>;
3104
+ /**
3105
+ * Response message for the MemoryService.RemoveFormationModel rpc.
3106
+ *
3107
+ * @generated from message jennahapi.agent.v1.RemoveFormationModelResponse
3108
+ */
3109
+ export type RemoveFormationModelResponse = Message<"jennahapi.agent.v1.RemoveFormationModelResponse"> & {
3110
+ /**
3111
+ * False when the enterprise had no formation model, which is still success.
3112
+ *
3113
+ * @generated from field: bool removed = 1;
3114
+ */
3115
+ removed: boolean;
3116
+ };
3117
+ /**
3118
+ * Describes the message jennahapi.agent.v1.RemoveFormationModelResponse.
3119
+ * Use `create(RemoveFormationModelResponseSchema)` to create a new message.
3120
+ */
3121
+ export declare const RemoveFormationModelResponseSchema: GenMessage<RemoveFormationModelResponse>;
2803
3122
  /**
2804
3123
  * Direction of vector+graph fusion when a query links the two sections.
2805
3124
  *
@@ -3060,6 +3379,33 @@ export declare enum MemoryDecision {
3060
3379
  * Describes the enum jennahapi.agent.v1.MemoryDecision.
3061
3380
  */
3062
3381
  export declare const MemoryDecisionSchema: GenEnum<MemoryDecision>;
3382
+ /**
3383
+ * Where an enterprise's own formation model is served.
3384
+ *
3385
+ * @generated from enum jennahapi.agent.v1.FormationModelProvider
3386
+ */
3387
+ export declare enum FormationModelProvider {
3388
+ /**
3389
+ * @generated from enum value: FORMATION_MODEL_PROVIDER_UNSPECIFIED = 0;
3390
+ */
3391
+ UNSPECIFIED = 0,
3392
+ /**
3393
+ * Amazon Bedrock in the enterprise's AWS account.
3394
+ *
3395
+ * @generated from enum value: FORMATION_MODEL_PROVIDER_BEDROCK = 1;
3396
+ */
3397
+ BEDROCK = 1,
3398
+ /**
3399
+ * Vertex AI in the enterprise's GCP project.
3400
+ *
3401
+ * @generated from enum value: FORMATION_MODEL_PROVIDER_VERTEX = 2;
3402
+ */
3403
+ VERTEX = 2
3404
+ }
3405
+ /**
3406
+ * Describes the enum jennahapi.agent.v1.FormationModelProvider.
3407
+ */
3408
+ export declare const FormationModelProviderSchema: GenEnum<FormationModelProvider>;
3063
3409
  /**
3064
3410
  * MemoryService is the unified memory-data plane for an agent workspace.
3065
3411
  *
@@ -3208,6 +3554,11 @@ export declare const MemoryService: GenService<{
3208
3554
  * in another region, because a region-pinned scope whose content is inferred
3209
3555
  * elsewhere breaks a residency commitment invisibly.
3210
3556
  *
3557
+ * An enterprise that configured its OWN formation model (SetFormationModel)
3558
+ * forms on that model instead, in every region, and never on the platform's:
3559
+ * a formation that cannot reach it fails with a status naming it, and writes
3560
+ * nothing. Such a formation consumes no formation units.
3561
+ *
3211
3562
  * Formation NEVER DELETES and never overwrites: a revision closes the prior
3212
3563
  * assertion's valid-time window and inserts a replacement, exactly as
3213
3564
  * SupersedeEdge and SupersedeChunk do, so what the agent believed before the
@@ -3305,4 +3656,73 @@ export declare const MemoryService: GenService<{
3305
3656
  input: typeof GetMemoryVocabularyRequestSchema;
3306
3657
  output: typeof GetMemoryVocabularyResponseSchema;
3307
3658
  };
3659
+ /**
3660
+ * Issues the values the enterprise needs to grant the platform access to its
3661
+ * model, for one provider. External (gateway) RPC.
3662
+ *
3663
+ * For BEDROCK: the AWS principal to trust and the external ID the trust policy
3664
+ * must require. For VERTEX: the email of the service account created for this
3665
+ * enterprise, which the enterprise grants Vertex access to in its project.
3666
+ *
3667
+ * Idempotent: repeating it returns the same values, and they do not change
3668
+ * while the enterprise exists. Requires a plan that includes a formation model
3669
+ * (`pro`, `scale`, `team`, `enterprise`).
3670
+ *
3671
+ * @generated from rpc jennahapi.agent.v1.MemoryService.PrepareFormationModel
3672
+ */
3673
+ prepareFormationModel: {
3674
+ methodKind: "unary";
3675
+ input: typeof PrepareFormationModelRequestSchema;
3676
+ output: typeof PrepareFormationModelResponseSchema;
3677
+ };
3678
+ /**
3679
+ * Sets the enterprise's formation model, replacing any previous one. External
3680
+ * (gateway) RPC. Requires a plan that includes a formation model.
3681
+ *
3682
+ * PROBES THE MODEL FIRST: one structured-output generation through the same
3683
+ * identity, request shape and bounds a formation uses. If it fails, nothing is
3684
+ * stored, any previous model stays in place, and the error is
3685
+ * FAILED_PRECONDITION with an ErrorInfo whose `step` metadata says which step
3686
+ * failed: `access` (the role could not be assumed, or the service account was
3687
+ * refused), `model` (the model is not enabled, not found, or refused the
3688
+ * settings), or `answer` (the model answered but not with usable structured
3689
+ * output). The provider's own message is included, since it describes the
3690
+ * enterprise's own account.
3691
+ *
3692
+ * `max_output_tokens` above 65,536 or negative is refused with
3693
+ * INVALID_ARGUMENT before any probe. Zero means the provider default.
3694
+ *
3695
+ * @generated from rpc jennahapi.agent.v1.MemoryService.SetFormationModel
3696
+ */
3697
+ setFormationModel: {
3698
+ methodKind: "unary";
3699
+ input: typeof SetFormationModelRequestSchema;
3700
+ output: typeof SetFormationModelResponseSchema;
3701
+ };
3702
+ /**
3703
+ * Reads the enterprise's formation model and the setup values issued to it.
3704
+ * External (gateway) RPC. Available on every plan, so an enterprise whose plan
3705
+ * no longer includes a formation model can still see the one it configured.
3706
+ *
3707
+ * @generated from rpc jennahapi.agent.v1.MemoryService.GetFormationModel
3708
+ */
3709
+ getFormationModel: {
3710
+ methodKind: "unary";
3711
+ input: typeof GetFormationModelRequestSchema;
3712
+ output: typeof GetFormationModelResponseSchema;
3713
+ };
3714
+ /**
3715
+ * Removes the enterprise's formation model, so formation runs on the platform's
3716
+ * model again from the next request. External (gateway) RPC. Available on every
3717
+ * plan, and the only way an enterprise whose plan no longer includes a
3718
+ * formation model can form memory again without upgrading. Removes no memory
3719
+ * and leaves the issued setup values in place.
3720
+ *
3721
+ * @generated from rpc jennahapi.agent.v1.MemoryService.RemoveFormationModel
3722
+ */
3723
+ removeFormationModel: {
3724
+ methodKind: "unary";
3725
+ input: typeof RemoveFormationModelRequestSchema;
3726
+ output: typeof RemoveFormationModelResponseSchema;
3727
+ };
3308
3728
  }>;
@@ -7,7 +7,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
7
7
  /**
8
8
  * Describes the file jennah/agent/v1/memory.proto.
9
9
  */
10
- export const file_jennah_agent_v1_memory = /*@__PURE__*/ fileDesc("ChxqZW5uYWgvYWdlbnQvdjEvbWVtb3J5LnByb3RvEhJqZW5uYWhhcGkuYWdlbnQudjEizAIKE0NvbW1pdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjEKA2xvZxgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwEjAKB3ZlY3RvcnMYAyADKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSLQoFZ3JhcGgYBCABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhXcml0ZRIcChRyZWplY3Rfb25fdHJ1bmNhdGlvbhgFIAEoCBIUCgx0YXJnZXRfc2NvcGUYBiABKAkSEAoIc2NvcGVfaWQYByABKAkSPAoNc3VwZXJzZXNzaW9ucxgIIAEoCzIlLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlc3Npb25Xcml0ZSKwAgoQRXhlY3V0aW9uTG9nU3RlcBIPCgdzdGVwX2lkGAEgASgJEhcKD3Rob3VnaHRfcHJvY2VzcxgCIAEoCRIRCgl0b29sX3VzZWQYAyABKAkSEgoKdG9vbF9pbnB1dBgEIAEoCRITCgt0b29sX291dHB1dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHNjb3BlX2lkGAcgASgJEkQKCG1ldGFkYXRhGAggAygLMjIuamVubmFoYXBpLmFnZW50LnYxLkV4ZWN1dGlvbkxvZ1N0ZXAuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilwIKC1ZlY3RvckNodW5rEhAKCGNodW5rX2lkGAEgASgJEhMKC3Jhd19jb250ZW50GAIgASgJEhEKCWVtYmVkZGluZxgDIAMoAhI/CghtZXRhZGF0YRgEIAMoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVuay5NZXRhZGF0YUVudHJ5EiwKCHZhbGlkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgppbnZhbGlkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiaAoKR3JhcGhXcml0ZRIsCgVub2RlcxgBIAMoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUSLAoFZWRnZXMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlIn8KEVN1cGVyc2Vzc2lvbldyaXRlEjMKBWVkZ2VzGAEgAygLMiQuamVubmFoYXBpLmFnZW50LnYxLkVkZ2VTdXBlcnNlc3Npb24SNQoGY2h1bmtzGAIgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLkNodW5rU3VwZXJzZXNzaW9uIloKEEVkZ2VTdXBlcnNlc3Npb24SFQoNcHJpb3JfZWRnZV9pZBgBIAEoCRIvCghuZXdfZWRnZRgCIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaEVkZ2UiXwoRQ2h1bmtTdXBlcnNlc3Npb24SFgoOcHJpb3JfY2h1bmtfaWQYASABKAkSMgoJbmV3X2NodW5rGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLlZlY3RvckNodW5rIosCCglHcmFwaE5vZGUSDwoHbm9kZV9pZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIrCgpwcm9wZXJ0aWVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9CghtZXRhZGF0YRgFIAMoCzIrLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUuTWV0YWRhdGFFbnRyeRIRCglub2RlX3R5cGUYBiABKAkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpIDCglHcmFwaEVkZ2USDwoHZWRnZV9pZBgBIAEoCRIWCg5zb3VyY2Vfbm9kZV9pZBgCIAEoCRIWCg50YXJnZXRfbm9kZV9pZBgDIAEoCRIZChFyZWxhdGlvbnNoaXBfdHlwZRgEIAEoCRIrCgpwcm9wZXJ0aWVzGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoIbWV0YWRhdGEYCSADKAsyKy5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpcCChRDb21taXRNZW1vcnlSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJleGVjdXRpb25fbG9nX3Jvd3MYAiABKAMSEwoLdmVjdG9yX3Jvd3MYAyABKAMSFwoPZ3JhcGhfbm9kZV9yb3dzGAQgASgDEhcKD2dyYXBoX2VkZ2Vfcm93cxgFIAEoAxIbChN0cnVuY2F0ZWRfY2h1bmtfaWRzGAYgAygJEhAKCHNjb3BlX2lkGAcgASgJEhoKEmVkZ2Vfc3VwZXJzZXNzaW9ucxgIIAEoAxIbChNjaHVua19zdXBlcnNlc3Npb25zGAkgASgDIucCChJRdWVyeU1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKCHNlbWFudGljGAIgASgLMiEuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUXVlcnkSLQoFZ3JhcGgYAyABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhRdWVyeRIpCgNsb2cYBCABKAsyHC5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUXVlcnkSDAoEbGluaxgFIAEoCBI9ChBmdXNpb25fZGlyZWN0aW9uGAYgASgOMiMuamVubmFoYXBpLmFnZW50LnYxLkZ1c2lvbkRpcmVjdGlvbhIpCgVhc19vZhgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRYWRkaXRpb25hbF9zY29wZXMYCCADKAkSEAoIc2NvcGVfaWQYCSABKAkipAIKDVNlbWFudGljUXVlcnkSEQoJZW1iZWRkaW5nGAEgAygCEhIKCnF1ZXJ5X3RleHQYAiABKAkSDQoFbGltaXQYAyABKAUSMwoHZmlsdGVycxgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlchIvCgthc19vZl92YWxpZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIYXNfb2ZfdHgYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjkKDnJldHJpZXZhbF9tb2RlGAcgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLlJldHJpZXZhbE1vZGUSDgoGcmVyYW5rGAggASgIIp8CCg5NZXRhZGF0YUZpbHRlchILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSPQoIb3BlcmF0b3IYAyABKA4yKy5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIuT3BlcmF0b3IisQEKCE9wZXJhdG9yEhgKFE9QRVJBVE9SX1VOU1BFQ0lGSUVEEAASEwoPT1BFUkFUT1JfRVFVQUxTEAESFgoST1BFUkFUT1JfTEVTU19USEFOEAISHwobT1BFUkFUT1JfTEVTU19USEFOX09SX0VRVUFMEAMSGQoVT1BFUkFUT1JfR1JFQVRFUl9USEFOEAQSIgoeT1BFUkFUT1JfR1JFQVRFUl9USEFOX09SX0VRVUFMEAUi2wEKCkdyYXBoUXVlcnkSMQoFc3RhcnQYASABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlTWF0Y2gSLAoFc3RlcHMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhTdGVwEg0KBWxpbWl0GAMgASgFEi8KC2FzX29mX3ZhbGlkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghhc19vZl90eBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiigEKDkdyYXBoTm9kZU1hdGNoEg0KBWxhYmVsGAEgASgJEjMKB2ZpbHRlcnMYAiADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuUHJvcGVydHlGaWx0ZXISNAoIbWV0YWRhdGEYAyADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIixQEKCUdyYXBoU3RlcBIZChFyZWxhdGlvbnNoaXBfdHlwZRgBIAEoCRI1CglkaXJlY3Rpb24YAiABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhEaXJlY3Rpb24SMAoEbm9kZRgDIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGVNYXRjaBI0CghtZXRhZGF0YRgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlciJECg5Qcm9wZXJ0eUZpbHRlchILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiegoITG9nUXVlcnkSDQoFbGltaXQYASABKAUSKQoFc2luY2UYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKCG1ldGFkYXRhGAMgAygLMiIuamVubmFoYXBpLmFnZW50LnYxLk1ldGFkYXRhRmlsdGVyIosCChNRdWVyeU1lbW9yeVJlc3BvbnNlEjQKCHNlbWFudGljGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUmVzdWx0Ei4KBWdyYXBoGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoUmVzdWx0EioKA2xvZxgDIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5Mb2dSZXN1bHQSLgoFZnVzZWQYBCABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuRnVzZWRSZXN1bHQSMgoOcmVhZF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkQKDlNlbWFudGljUmVzdWx0EjIKB21hdGNoZXMYASADKAsyIS5qZW5uYWhhcGkuYWdlbnQudjEuU2VtYW50aWNNYXRjaCK+AwoNU2VtYW50aWNNYXRjaBIQCghjaHVua19pZBgBIAEoCRITCgtyYXdfY29udGVudBgCIAEoCRIQCghkaXN0YW5jZRgDIAEoARJBCghtZXRhZGF0YRgEIAMoCzIvLmplbm5haGFwaS5hZ2VudC52MS5TZW1hbnRpY01hdGNoLk1ldGFkYXRhRW50cnkSEAoIc2NvcGVfaWQYBSABKAkSNgoIY2hhbm5lbHMYBiADKA4yJC5qZW5uYWhhcGkuYWdlbnQudjEuUmV0cmlldmFsQ2hhbm5lbBIVCg1sZXhpY2FsX3Njb3JlGAcgASgBEhEKCXJyZl9zY29yZRgIIAEoARIUCgxyZXJhbmtfc2NvcmUYCSABKAESGAoQcmVyYW5rX3RydW5jYXRlZBgKIAEoCBIsCgh2YWxpZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKC0dyYXBoUmVzdWx0EiUKBHJvd3MYASADKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkAKCUxvZ1Jlc3VsdBIzCgVzdGVwcxgBIAMoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwIjUKC0Z1c2VkUmVzdWx0EiYKBWl0ZW1zGAEgAygLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKFAgoUSW5zcGVjdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKB3ZlY3RvcnMYAiABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdFZlY3RvcnMSLwoFZ3JhcGgYAyABKAsyIC5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdEdyYXBoEisKA2xvZxgEIAEoCzIeLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TG9nEikKBWFzX29mGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghzY29wZV9pZBgGIAEoCSIzCg5JbnNwZWN0VmVjdG9ycxINCgVsaW1pdBgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJImgKDEluc3BlY3RHcmFwaBISCgpub2RlX2xpbWl0GAEgASgFEhIKCmVkZ2VfbGltaXQYAiABKAUSFwoPbm9kZV9wYWdlX3Rva2VuGAMgASgJEhcKD2VkZ2VfcGFnZV90b2tlbhgEIAEoCSJaCgpJbnNwZWN0TG9nEg0KBWxpbWl0GAEgASgFEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwYWdlX3Rva2VuGAMgASgJIswCChVJbnNwZWN0TWVtb3J5UmVzcG9uc2USOAoHdmVjdG9ycxgBIAEoCzInLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JJbnNwZWN0UmVzdWx0EjUKBWdyYXBoGAIgASgLMiYuamVubmFoYXBpLmFnZW50LnYxLkdyYXBoSW5zcGVjdFJlc3VsdBIqCgNsb2cYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUmVzdWx0EjIKDnJlYWRfdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChBuZXh0X2NodW5rX3Rva2VuGAUgASgJEhcKD25leHRfbm9kZV90b2tlbhgGIAEoCRIXCg9uZXh0X2VkZ2VfdG9rZW4YByABKAkSFgoObmV4dF9sb2dfdG9rZW4YCCABKAkiSgoTVmVjdG9ySW5zcGVjdFJlc3VsdBIzCgZjaHVua3MYASADKAsyIy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmtJbmZvIu0DCg9WZWN0b3JDaHVua0luZm8SEAoIY2h1bmtfaWQYASABKAkSEwoLcmF3X2NvbnRlbnQYAiABKAkSLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdHJ1bmNhdGVkGAQgASgISACIAQESGAoLdG9rZW5fY291bnQYBSABKANIAYgBARJDCghtZXRhZGF0YRgGIAMoCzIxLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVua0luZm8uTWV0YWRhdGFFbnRyeRIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYXNzZXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdHJ1bmNhdGVkQg4KDF90b2tlbl9jb3VudCJwChJHcmFwaEluc3BlY3RSZXN1bHQSLAoFbm9kZXMYASADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlEiwKBWVkZ2VzGAIgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoRWRnZSKPAQoUU3VwZXJzZWRlRWRnZVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEhUKDXByaW9yX2VkZ2VfaWQYAiABKAkSLwoIbmV3X2VkZ2UYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlEhAKCHNjb3BlX2lkGAQgASgJIk0KFVN1cGVyc2VkZUVkZ2VSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKUAQoVU3VwZXJzZWRlQ2h1bmtSZXF1ZXN0Eh0KEWFnZW50X2luc3RhbmNlX2lkGAEgASgJQgIYARIWCg5wcmlvcl9jaHVua19pZBgCIAEoCRIyCgluZXdfY2h1bmsYAyABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSEAoIc2NvcGVfaWQYBCABKAkiYQoWU3VwZXJzZWRlQ2h1bmtSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0cnVuY2F0ZWQYAiABKAgiRwoJVG9vbFRyYWNlEhEKCXRvb2xfdXNlZBgBIAEoCRISCgp0b29sX2lucHV0GAIgASgJEhMKC3Rvb2xfb3V0cHV0GAMgASgJIn0KEENvbnZlcnNhdGlvblR1cm4SKgoEcm9sZRgBIAEoDjIcLmplbm5haGFwaS5hZ2VudC52MS5UdXJuUm9sZRIPCgdjb250ZW50GAIgASgJEiwKBXRvb2xzGAMgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLlRvb2xUcmFjZSKiAQoRRm9ybU1lbW9yeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSMwoFdHVybnMYAiADKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuQ29udmVyc2F0aW9uVHVybhIVCg1mb3JtYXRpb25fa2V5GAMgASgJEi8KC29ic2VydmVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKwAgoPRm9ybWVkQ2FuZGlkYXRlEhQKDGNhbmRpZGF0ZV9pZBgBIAEoCRIvCgRraW5kGAIgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLkNhbmRpZGF0ZUtpbmQSDAoEdGV4dBgDIAEoCRIVCg1zb3VyY2VfZW50aXR5GAQgASgJEhkKEXJlbGF0aW9uc2hpcF90eXBlGAUgASgJEhUKDXRhcmdldF9lbnRpdHkYBiABKAkSNAoIZGVjaXNpb24YByABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5RGVjaXNpb24SEgoKbWF0Y2hlZF9pZBgIIAEoCRIYChByZWplY3Rpb25fcmVhc29uGAkgASgJEhsKE3ByZXNlcnZlc19zdHJ1Y3R1cmUYCiABKAgiOwoPUmVkYWN0aW9uUmVjb3JkEhIKCnR1cm5faW5kZXgYASABKAUSFAoMbWFza2VkX2NvdW50GAIgASgFIlgKE1N1bW1hcml6ZWRTdHJ1Y3R1cmUSEgoKdHVybl9pbmRleBgBIAEoBRITCgtkZXNjcmlwdGlvbhgCIAEoCRIYChBzdW1tYXJpemVkX2NvdW50GAMgASgFIv4DChJGb3JtTWVtb3J5UmVzcG9uc2USNAoQY29tbWl0X3RpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSZXhlY3V0aW9uX2xvZ19yb3dzGAIgASgDEhMKC3ZlY3Rvcl9yb3dzGAMgASgDEhcKD2dyYXBoX25vZGVfcm93cxgEIAEoAxIXCg9ncmFwaF9lZGdlX3Jvd3MYBSABKAMSGgoSZWRnZV9zdXBlcnNlc3Npb25zGAYgASgDEhsKE2NodW5rX3N1cGVyc2Vzc2lvbnMYByABKAMSNwoKY2FuZGlkYXRlcxgIIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtZWRDYW5kaWRhdGUSNwoKcmVkYWN0aW9ucxgJIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5SZWRhY3Rpb25SZWNvcmQSFQoNY2FuZGlkYXRlX2NhcBgKIAEoBRIaChJjYW5kaWRhdGVzX2Ryb3BwZWQYCyABKAUSEAoIc2NvcGVfaWQYDCABKAkSRgoVc3VtbWFyaXplZF9zdHJ1Y3R1cmVzGA0gAygLMicuamVubmFoYXBpLmFnZW50LnYxLlN1bW1hcml6ZWRTdHJ1Y3R1cmUSFwoPZm9ybWF0aW9uX3VuaXRzGA4gASgDIjAKC0VudGl0eUNsYXNzEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiPwoRUmVsYXRpb25TaWduYXR1cmUSFAoMc291cmNlX2NsYXNzGAEgASgJEhQKDHRhcmdldF9jbGFzcxgCIAEoCSJsCgxSZWxhdGlvblR5cGUSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRI5CgpzaWduYXR1cmVzGAMgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uU2lnbmF0dXJlIoUBChBNZW1vcnlWb2NhYnVsYXJ5EjcKDmVudGl0eV9jbGFzc2VzGAEgAygLMh8uamVubmFoYXBpLmFnZW50LnYxLkVudGl0eUNsYXNzEjgKDnJlbGF0aW9uX3R5cGVzGAIgAygLMiAuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uVHlwZSJsCh5EZWNsYXJlTWVtb3J5Vm9jYWJ1bGFyeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSOAoKdm9jYWJ1bGFyeRgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IlsKH0RlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2USOAoKdm9jYWJ1bGFyeRgBIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IjEKHVJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0EhAKCHNjb3BlX2lkGAEgASgJIiAKHlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIuChpHZXRNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBIQCghzY29wZV9pZBgBIAEoCSKQAQobR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlEjkKC2RlY2xhcmF0aW9uGAEgASgLMiQuamVubmFoYXBpLmFnZW50LnYxLk1lbW9yeVZvY2FidWxhcnkSNgoIcmVzb2x2ZWQYAiABKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5Vm9jYWJ1bGFyeSp4Cg9GdXNpb25EaXJlY3Rpb24SIAocRlVTSU9OX0RJUkVDVElPTl9VTlNQRUNJRklFRBAAEiEKHUZVU0lPTl9ESVJFQ1RJT05fVkVDVE9SX0ZJUlNUEAESIAocRlVTSU9OX0RJUkVDVElPTl9HUkFQSF9GSVJTVBACKmoKDVJldHJpZXZhbE1vZGUSHgoaUkVUUklFVkFMX01PREVfVU5TUEVDSUZJRUQQABIeChpSRVRSSUVWQUxfTU9ERV9WRUNUT1JfT05MWRABEhkKFVJFVFJJRVZBTF9NT0RFX0hZQlJJRBACKnIKEFJldHJpZXZhbENoYW5uZWwSIQodUkVUUklFVkFMX0NIQU5ORUxfVU5TUEVDSUZJRUQQABIcChhSRVRSSUVWQUxfQ0hBTk5FTF9WRUNUT1IQARIdChlSRVRSSUVWQUxfQ0hBTk5FTF9MRVhJQ0FMEAIqhgEKDkdyYXBoRGlyZWN0aW9uEh8KG0dSQVBIX0RJUkVDVElPTl9VTlNQRUNJRklFRBAAEhwKGEdSQVBIX0RJUkVDVElPTl9PVVRHT0lORxABEhwKGEdSQVBIX0RJUkVDVElPTl9JTkNPTUlORxACEhcKE0dSQVBIX0RJUkVDVElPTl9BTlkQAyp8CghUdXJuUm9sZRIZChVUVVJOX1JPTEVfVU5TUEVDSUZJRUQQABISCg5UVVJOX1JPTEVfVVNFUhABEhcKE1RVUk5fUk9MRV9BU1NJU1RBTlQQAhIUChBUVVJOX1JPTEVfU1lTVEVNEAMSEgoOVFVSTl9ST0xFX1RPT0wQBCppCg1DYW5kaWRhdGVLaW5kEh4KGkNBTkRJREFURV9LSU5EX1VOU1BFQ0lGSUVEEAASFwoTQ0FORElEQVRFX0tJTkRfRkFDVBABEh8KG0NBTkRJREFURV9LSU5EX1JFTEFUSU9OU0hJUBACKqABCg5NZW1vcnlEZWNpc2lvbhIfChtNRU1PUllfREVDSVNJT05fVU5TUEVDSUZJRUQQABIXChNNRU1PUllfREVDSVNJT05fTkVXEAESGwoXTUVNT1JZX0RFQ0lTSU9OX1JFVklTRUQQAhIZChVNRU1PUllfREVDSVNJT05fS05PV04QAxIcChhNRU1PUllfREVDSVNJT05fUkVKRUNURUQQBDLgDAoNTWVtb3J5U2VydmljZRK7AQoMQ29tbWl0TWVtb3J5EicuamVubmFoYXBpLmFnZW50LnYxLkNvbW1pdE1lbW9yeVJlcXVlc3QaKC5qZW5uYWhhcGkuYWdlbnQudjEuQ29tbWl0TWVtb3J5UmVzcG9uc2UiWILT5JMCUjoBKlooOgEqIiMvdjEvc2NvcGVzL3tzY29wZV9pZH0vbWVtb3J5OmNvbW1pdCIjL3YxL2FnZW50cy97c2NvcGVfaWR9L21lbW9yeTpjb21taXQStgEKC1F1ZXJ5TWVtb3J5EiYuamVubmFoYXBpLmFnZW50LnYxLlF1ZXJ5TWVtb3J5UmVxdWVzdBonLmplbm5haGFwaS5hZ2VudC52MS5RdWVyeU1lbW9yeVJlc3BvbnNlIlaC0+STAlA6ASpaJzoBKiIiL3YxL3Njb3Blcy97c2NvcGVfaWR9L21lbW9yeTpxdWVyeSIiL3YxL2FnZW50cy97c2NvcGVfaWR9L21lbW9yeTpxdWVyeRLAAQoNSW5zcGVjdE1lbW9yeRIoLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TWVtb3J5UmVxdWVzdBopLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TWVtb3J5UmVzcG9uc2UiWoLT5JMCVDoBKlopOgEqIiQvdjEvc2NvcGVzL3tzY29wZV9pZH0vbWVtb3J5Omluc3BlY3QiJC92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6aW5zcGVjdBLOAQoNU3VwZXJzZWRlRWRnZRIoLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlZGVFZGdlUmVxdWVzdBopLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlZGVFZGdlUmVzcG9uc2UiaILT5JMCYjoBKlowOgEqIisvdjEvc2NvcGVzL3tzY29wZV9pZH0vZ3JhcGgvZWRnZXM6c3VwZXJzZWRlIisvdjEvYWdlbnRzL3tzY29wZV9pZH0vZ3JhcGgvZWRnZXM6c3VwZXJzZWRlEtcBCg5TdXBlcnNlZGVDaHVuaxIpLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlZGVDaHVua1JlcXVlc3QaKi5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlQ2h1bmtSZXNwb25zZSJugtPkkwJoOgEqWjM6ASoiLi92MS9zY29wZXMve3Njb3BlX2lkfS92ZWN0b3JzL2NodW5rczpzdXBlcnNlZGUiLi92MS9hZ2VudHMve3Njb3BlX2lkfS92ZWN0b3JzL2NodW5rczpzdXBlcnNlZGUSiQEKCkZvcm1NZW1vcnkSJS5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybU1lbW9yeVJlcXVlc3QaJi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybU1lbW9yeVJlc3BvbnNlIiyC0+STAiY6ASoiIS92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6Zm9ybRKkAQoXRGVjbGFyZU1lbW9yeVZvY2FidWxhcnkSMi5qZW5uYWhhcGkuYWdlbnQudjEuRGVjbGFyZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0GjMuamVubmFoYXBpLmFnZW50LnYxLkRlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2UiIILT5JMCGjoBKhoVL3YxL21lbW9yeS92b2NhYnVsYXJ5Ep4BChZSZW1vdmVNZW1vcnlWb2NhYnVsYXJ5EjEuamVubmFoYXBpLmFnZW50LnYxLlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0GjIuamVubmFoYXBpLmFnZW50LnYxLlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIdgtPkkwIXKhUvdjEvbWVtb3J5L3ZvY2FidWxhcnkSlQEKE0dldE1lbW9yeVZvY2FidWxhcnkSLi5qZW5uYWhhcGkuYWdlbnQudjEuR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlcXVlc3QaLy5qZW5uYWhhcGkuYWdlbnQudjEuR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlIh2C0+STAhcSFS92MS9tZW1vcnkvdm9jYWJ1bGFyeUIpWidnaXRodWIuY29tL2FscGhhdXNsYWJzL2plbm5haC1hcGkvYWdlbnRiBnByb3RvMw", [file_google_api_annotations, file_google_protobuf_struct, file_google_protobuf_timestamp]);
10
+ export const file_jennah_agent_v1_memory = /*@__PURE__*/ fileDesc("ChxqZW5uYWgvYWdlbnQvdjEvbWVtb3J5LnByb3RvEhJqZW5uYWhhcGkuYWdlbnQudjEizAIKE0NvbW1pdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjEKA2xvZxgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwEjAKB3ZlY3RvcnMYAyADKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSLQoFZ3JhcGgYBCABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhXcml0ZRIcChRyZWplY3Rfb25fdHJ1bmNhdGlvbhgFIAEoCBIUCgx0YXJnZXRfc2NvcGUYBiABKAkSEAoIc2NvcGVfaWQYByABKAkSPAoNc3VwZXJzZXNzaW9ucxgIIAEoCzIlLmplbm5haGFwaS5hZ2VudC52MS5TdXBlcnNlc3Npb25Xcml0ZSKwAgoQRXhlY3V0aW9uTG9nU3RlcBIPCgdzdGVwX2lkGAEgASgJEhcKD3Rob3VnaHRfcHJvY2VzcxgCIAEoCRIRCgl0b29sX3VzZWQYAyABKAkSEgoKdG9vbF9pbnB1dBgEIAEoCRITCgt0b29sX291dHB1dBgFIAEoCRItCgl0aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHNjb3BlX2lkGAcgASgJEkQKCG1ldGFkYXRhGAggAygLMjIuamVubmFoYXBpLmFnZW50LnYxLkV4ZWN1dGlvbkxvZ1N0ZXAuTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilwIKC1ZlY3RvckNodW5rEhAKCGNodW5rX2lkGAEgASgJEhMKC3Jhd19jb250ZW50GAIgASgJEhEKCWVtYmVkZGluZxgDIAMoAhI/CghtZXRhZGF0YRgEIAMoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVuay5NZXRhZGF0YUVudHJ5EiwKCHZhbGlkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgppbnZhbGlkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiaAoKR3JhcGhXcml0ZRIsCgVub2RlcxgBIAMoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUSLAoFZWRnZXMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlIn8KEVN1cGVyc2Vzc2lvbldyaXRlEjMKBWVkZ2VzGAEgAygLMiQuamVubmFoYXBpLmFnZW50LnYxLkVkZ2VTdXBlcnNlc3Npb24SNQoGY2h1bmtzGAIgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLkNodW5rU3VwZXJzZXNzaW9uIloKEEVkZ2VTdXBlcnNlc3Npb24SFQoNcHJpb3JfZWRnZV9pZBgBIAEoCRIvCghuZXdfZWRnZRgCIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaEVkZ2UiXwoRQ2h1bmtTdXBlcnNlc3Npb24SFgoOcHJpb3JfY2h1bmtfaWQYASABKAkSMgoJbmV3X2NodW5rGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLlZlY3RvckNodW5rIosCCglHcmFwaE5vZGUSDwoHbm9kZV9pZBgBIAEoCRINCgVsYWJlbBgCIAEoCRIrCgpwcm9wZXJ0aWVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9CghtZXRhZGF0YRgFIAMoCzIrLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGUuTWV0YWRhdGFFbnRyeRIRCglub2RlX3R5cGUYBiABKAkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpIDCglHcmFwaEVkZ2USDwoHZWRnZV9pZBgBIAEoCRIWCg5zb3VyY2Vfbm9kZV9pZBgCIAEoCRIWCg50YXJnZXRfbm9kZV9pZBgDIAEoCRIZChFyZWxhdGlvbnNoaXBfdHlwZRgEIAEoCRIrCgpwcm9wZXJ0aWVzGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoIbWV0YWRhdGEYCSADKAsyKy5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpcCChRDb21taXRNZW1vcnlSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJleGVjdXRpb25fbG9nX3Jvd3MYAiABKAMSEwoLdmVjdG9yX3Jvd3MYAyABKAMSFwoPZ3JhcGhfbm9kZV9yb3dzGAQgASgDEhcKD2dyYXBoX2VkZ2Vfcm93cxgFIAEoAxIbChN0cnVuY2F0ZWRfY2h1bmtfaWRzGAYgAygJEhAKCHNjb3BlX2lkGAcgASgJEhoKEmVkZ2Vfc3VwZXJzZXNzaW9ucxgIIAEoAxIbChNjaHVua19zdXBlcnNlc3Npb25zGAkgASgDIucCChJRdWVyeU1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKCHNlbWFudGljGAIgASgLMiEuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUXVlcnkSLQoFZ3JhcGgYAyABKAsyHi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhRdWVyeRIpCgNsb2cYBCABKAsyHC5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUXVlcnkSDAoEbGluaxgFIAEoCBI9ChBmdXNpb25fZGlyZWN0aW9uGAYgASgOMiMuamVubmFoYXBpLmFnZW50LnYxLkZ1c2lvbkRpcmVjdGlvbhIpCgVhc19vZhgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRYWRkaXRpb25hbF9zY29wZXMYCCADKAkSEAoIc2NvcGVfaWQYCSABKAkipAIKDVNlbWFudGljUXVlcnkSEQoJZW1iZWRkaW5nGAEgAygCEhIKCnF1ZXJ5X3RleHQYAiABKAkSDQoFbGltaXQYAyABKAUSMwoHZmlsdGVycxgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlchIvCgthc19vZl92YWxpZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIYXNfb2ZfdHgYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjkKDnJldHJpZXZhbF9tb2RlGAcgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLlJldHJpZXZhbE1vZGUSDgoGcmVyYW5rGAggASgIIp8CCg5NZXRhZGF0YUZpbHRlchILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSPQoIb3BlcmF0b3IYAyABKA4yKy5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIuT3BlcmF0b3IisQEKCE9wZXJhdG9yEhgKFE9QRVJBVE9SX1VOU1BFQ0lGSUVEEAASEwoPT1BFUkFUT1JfRVFVQUxTEAESFgoST1BFUkFUT1JfTEVTU19USEFOEAISHwobT1BFUkFUT1JfTEVTU19USEFOX09SX0VRVUFMEAMSGQoVT1BFUkFUT1JfR1JFQVRFUl9USEFOEAQSIgoeT1BFUkFUT1JfR1JFQVRFUl9USEFOX09SX0VRVUFMEAUi2wEKCkdyYXBoUXVlcnkSMQoFc3RhcnQYASABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlTWF0Y2gSLAoFc3RlcHMYAiADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhTdGVwEg0KBWxpbWl0GAMgASgFEi8KC2FzX29mX3ZhbGlkGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghhc19vZl90eBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiigEKDkdyYXBoTm9kZU1hdGNoEg0KBWxhYmVsGAEgASgJEjMKB2ZpbHRlcnMYAiADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuUHJvcGVydHlGaWx0ZXISNAoIbWV0YWRhdGEYAyADKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuTWV0YWRhdGFGaWx0ZXIixQEKCUdyYXBoU3RlcBIZChFyZWxhdGlvbnNoaXBfdHlwZRgBIAEoCRI1CglkaXJlY3Rpb24YAiABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhEaXJlY3Rpb24SMAoEbm9kZRgDIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5HcmFwaE5vZGVNYXRjaBI0CghtZXRhZGF0YRgEIAMoCzIiLmplbm5haGFwaS5hZ2VudC52MS5NZXRhZGF0YUZpbHRlciJECg5Qcm9wZXJ0eUZpbHRlchILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiegoITG9nUXVlcnkSDQoFbGltaXQYASABKAUSKQoFc2luY2UYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKCG1ldGFkYXRhGAMgAygLMiIuamVubmFoYXBpLmFnZW50LnYxLk1ldGFkYXRhRmlsdGVyIosCChNRdWVyeU1lbW9yeVJlc3BvbnNlEjQKCHNlbWFudGljGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLlNlbWFudGljUmVzdWx0Ei4KBWdyYXBoGAIgASgLMh8uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoUmVzdWx0EioKA2xvZxgDIAEoCzIdLmplbm5haGFwaS5hZ2VudC52MS5Mb2dSZXN1bHQSLgoFZnVzZWQYBCABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuRnVzZWRSZXN1bHQSMgoOcmVhZF90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkQKDlNlbWFudGljUmVzdWx0EjIKB21hdGNoZXMYASADKAsyIS5qZW5uYWhhcGkuYWdlbnQudjEuU2VtYW50aWNNYXRjaCK+AwoNU2VtYW50aWNNYXRjaBIQCghjaHVua19pZBgBIAEoCRITCgtyYXdfY29udGVudBgCIAEoCRIQCghkaXN0YW5jZRgDIAEoARJBCghtZXRhZGF0YRgEIAMoCzIvLmplbm5haGFwaS5hZ2VudC52MS5TZW1hbnRpY01hdGNoLk1ldGFkYXRhRW50cnkSEAoIc2NvcGVfaWQYBSABKAkSNgoIY2hhbm5lbHMYBiADKA4yJC5qZW5uYWhhcGkuYWdlbnQudjEuUmV0cmlldmFsQ2hhbm5lbBIVCg1sZXhpY2FsX3Njb3JlGAcgASgBEhEKCXJyZl9zY29yZRgIIAEoARIUCgxyZXJhbmtfc2NvcmUYCSABKAESGAoQcmVyYW5rX3RydW5jYXRlZBgKIAEoCBIsCgh2YWxpZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKC0dyYXBoUmVzdWx0EiUKBHJvd3MYASADKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkAKCUxvZ1Jlc3VsdBIzCgVzdGVwcxgBIAMoCzIkLmplbm5haGFwaS5hZ2VudC52MS5FeGVjdXRpb25Mb2dTdGVwIjUKC0Z1c2VkUmVzdWx0EiYKBWl0ZW1zGAEgAygLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKFAgoUSW5zcGVjdE1lbW9yeVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEjMKB3ZlY3RvcnMYAiABKAsyIi5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdFZlY3RvcnMSLwoFZ3JhcGgYAyABKAsyIC5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdEdyYXBoEisKA2xvZxgEIAEoCzIeLmplbm5haGFwaS5hZ2VudC52MS5JbnNwZWN0TG9nEikKBWFzX29mGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghzY29wZV9pZBgGIAEoCSIzCg5JbnNwZWN0VmVjdG9ycxINCgVsaW1pdBgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJImgKDEluc3BlY3RHcmFwaBISCgpub2RlX2xpbWl0GAEgASgFEhIKCmVkZ2VfbGltaXQYAiABKAUSFwoPbm9kZV9wYWdlX3Rva2VuGAMgASgJEhcKD2VkZ2VfcGFnZV90b2tlbhgEIAEoCSJaCgpJbnNwZWN0TG9nEg0KBWxpbWl0GAEgASgFEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpwYWdlX3Rva2VuGAMgASgJIswCChVJbnNwZWN0TWVtb3J5UmVzcG9uc2USOAoHdmVjdG9ycxgBIAEoCzInLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JJbnNwZWN0UmVzdWx0EjUKBWdyYXBoGAIgASgLMiYuamVubmFoYXBpLmFnZW50LnYxLkdyYXBoSW5zcGVjdFJlc3VsdBIqCgNsb2cYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuTG9nUmVzdWx0EjIKDnJlYWRfdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIYChBuZXh0X2NodW5rX3Rva2VuGAUgASgJEhcKD25leHRfbm9kZV90b2tlbhgGIAEoCRIXCg9uZXh0X2VkZ2VfdG9rZW4YByABKAkSFgoObmV4dF9sb2dfdG9rZW4YCCABKAkiSgoTVmVjdG9ySW5zcGVjdFJlc3VsdBIzCgZjaHVua3MYASADKAsyIy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmtJbmZvIu0DCg9WZWN0b3JDaHVua0luZm8SEAoIY2h1bmtfaWQYASABKAkSEwoLcmF3X2NvbnRlbnQYAiABKAkSLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFgoJdHJ1bmNhdGVkGAQgASgISACIAQESGAoLdG9rZW5fY291bnQYBSABKANIAYgBARJDCghtZXRhZGF0YRgGIAMoCzIxLmplbm5haGFwaS5hZ2VudC52MS5WZWN0b3JDaHVua0luZm8uTWV0YWRhdGFFbnRyeRIsCgh2YWxpZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKaW52YWxpZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYXNzZXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdHJ1bmNhdGVkQg4KDF90b2tlbl9jb3VudCJwChJHcmFwaEluc3BlY3RSZXN1bHQSLAoFbm9kZXMYASADKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhOb2RlEiwKBWVkZ2VzGAIgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLkdyYXBoRWRnZSKPAQoUU3VwZXJzZWRlRWRnZVJlcXVlc3QSHQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAlCAhgBEhUKDXByaW9yX2VkZ2VfaWQYAiABKAkSLwoIbmV3X2VkZ2UYAyABKAsyHS5qZW5uYWhhcGkuYWdlbnQudjEuR3JhcGhFZGdlEhAKCHNjb3BlX2lkGAQgASgJIk0KFVN1cGVyc2VkZUVkZ2VSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKUAQoVU3VwZXJzZWRlQ2h1bmtSZXF1ZXN0Eh0KEWFnZW50X2luc3RhbmNlX2lkGAEgASgJQgIYARIWCg5wcmlvcl9jaHVua19pZBgCIAEoCRIyCgluZXdfY2h1bmsYAyABKAsyHy5qZW5uYWhhcGkuYWdlbnQudjEuVmVjdG9yQ2h1bmsSEAoIc2NvcGVfaWQYBCABKAkiYQoWU3VwZXJzZWRlQ2h1bmtSZXNwb25zZRI0ChBjb21taXRfdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0cnVuY2F0ZWQYAiABKAgiRwoJVG9vbFRyYWNlEhEKCXRvb2xfdXNlZBgBIAEoCRISCgp0b29sX2lucHV0GAIgASgJEhMKC3Rvb2xfb3V0cHV0GAMgASgJIn0KEENvbnZlcnNhdGlvblR1cm4SKgoEcm9sZRgBIAEoDjIcLmplbm5haGFwaS5hZ2VudC52MS5UdXJuUm9sZRIPCgdjb250ZW50GAIgASgJEiwKBXRvb2xzGAMgAygLMh0uamVubmFoYXBpLmFnZW50LnYxLlRvb2xUcmFjZSKiAQoRRm9ybU1lbW9yeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSMwoFdHVybnMYAiADKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuQ29udmVyc2F0aW9uVHVybhIVCg1mb3JtYXRpb25fa2V5GAMgASgJEi8KC29ic2VydmVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKwAgoPRm9ybWVkQ2FuZGlkYXRlEhQKDGNhbmRpZGF0ZV9pZBgBIAEoCRIvCgRraW5kGAIgASgOMiEuamVubmFoYXBpLmFnZW50LnYxLkNhbmRpZGF0ZUtpbmQSDAoEdGV4dBgDIAEoCRIVCg1zb3VyY2VfZW50aXR5GAQgASgJEhkKEXJlbGF0aW9uc2hpcF90eXBlGAUgASgJEhUKDXRhcmdldF9lbnRpdHkYBiABKAkSNAoIZGVjaXNpb24YByABKA4yIi5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5RGVjaXNpb24SEgoKbWF0Y2hlZF9pZBgIIAEoCRIYChByZWplY3Rpb25fcmVhc29uGAkgASgJEhsKE3ByZXNlcnZlc19zdHJ1Y3R1cmUYCiABKAgiOwoPUmVkYWN0aW9uUmVjb3JkEhIKCnR1cm5faW5kZXgYASABKAUSFAoMbWFza2VkX2NvdW50GAIgASgFIlgKE1N1bW1hcml6ZWRTdHJ1Y3R1cmUSEgoKdHVybl9pbmRleBgBIAEoBRITCgtkZXNjcmlwdGlvbhgCIAEoCRIYChBzdW1tYXJpemVkX2NvdW50GAMgASgFIv4DChJGb3JtTWVtb3J5UmVzcG9uc2USNAoQY29tbWl0X3RpbWVzdGFtcBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSZXhlY3V0aW9uX2xvZ19yb3dzGAIgASgDEhMKC3ZlY3Rvcl9yb3dzGAMgASgDEhcKD2dyYXBoX25vZGVfcm93cxgEIAEoAxIXCg9ncmFwaF9lZGdlX3Jvd3MYBSABKAMSGgoSZWRnZV9zdXBlcnNlc3Npb25zGAYgASgDEhsKE2NodW5rX3N1cGVyc2Vzc2lvbnMYByABKAMSNwoKY2FuZGlkYXRlcxgIIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtZWRDYW5kaWRhdGUSNwoKcmVkYWN0aW9ucxgJIAMoCzIjLmplbm5haGFwaS5hZ2VudC52MS5SZWRhY3Rpb25SZWNvcmQSFQoNY2FuZGlkYXRlX2NhcBgKIAEoBRIaChJjYW5kaWRhdGVzX2Ryb3BwZWQYCyABKAUSEAoIc2NvcGVfaWQYDCABKAkSRgoVc3VtbWFyaXplZF9zdHJ1Y3R1cmVzGA0gAygLMicuamVubmFoYXBpLmFnZW50LnYxLlN1bW1hcml6ZWRTdHJ1Y3R1cmUSFwoPZm9ybWF0aW9uX3VuaXRzGA4gASgDIjAKC0VudGl0eUNsYXNzEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiPwoRUmVsYXRpb25TaWduYXR1cmUSFAoMc291cmNlX2NsYXNzGAEgASgJEhQKDHRhcmdldF9jbGFzcxgCIAEoCSJsCgxSZWxhdGlvblR5cGUSDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRI5CgpzaWduYXR1cmVzGAMgAygLMiUuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uU2lnbmF0dXJlIoUBChBNZW1vcnlWb2NhYnVsYXJ5EjcKDmVudGl0eV9jbGFzc2VzGAEgAygLMh8uamVubmFoYXBpLmFnZW50LnYxLkVudGl0eUNsYXNzEjgKDnJlbGF0aW9uX3R5cGVzGAIgAygLMiAuamVubmFoYXBpLmFnZW50LnYxLlJlbGF0aW9uVHlwZSJsCh5EZWNsYXJlTWVtb3J5Vm9jYWJ1bGFyeVJlcXVlc3QSEAoIc2NvcGVfaWQYASABKAkSOAoKdm9jYWJ1bGFyeRgCIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IlsKH0RlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2USOAoKdm9jYWJ1bGFyeRgBIAEoCzIkLmplbm5haGFwaS5hZ2VudC52MS5NZW1vcnlWb2NhYnVsYXJ5IjEKHVJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0EhAKCHNjb3BlX2lkGAEgASgJIiAKHlJlbW92ZU1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIuChpHZXRNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBIQCghzY29wZV9pZBgBIAEoCSKQAQobR2V0TWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlEjkKC2RlY2xhcmF0aW9uGAEgASgLMiQuamVubmFoYXBpLmFnZW50LnYxLk1lbW9yeVZvY2FidWxhcnkSNgoIcmVzb2x2ZWQYAiABKAsyJC5qZW5uYWhhcGkuYWdlbnQudjEuTWVtb3J5Vm9jYWJ1bGFyeSJeChpCZWRyb2NrRm9ybWF0aW9uTW9kZWxTZXR1cBIVCg1wcmluY2lwYWxfYXJuGAEgASgJEhMKC2V4dGVybmFsX2lkGAIgASgJEhQKDHNlc3Npb25fbmFtZRgDIAEoCSI6ChlWZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwEh0KFXNlcnZpY2VfYWNjb3VudF9lbWFpbBgBIAEoCSJIChVCZWRyb2NrRm9ybWF0aW9uTW9kZWwSEAoIcm9sZV9hcm4YASABKAkSDgoGcmVnaW9uGAIgASgJEg0KBW1vZGVsGAMgASgJIkgKFFZlcnRleEZvcm1hdGlvbk1vZGVsEg8KB3Byb2plY3QYASABKAkSEAoIbG9jYXRpb24YAiABKAkSDQoFbW9kZWwYAyABKAkivAIKDkZvcm1hdGlvbk1vZGVsEjwKCHByb3ZpZGVyGAEgASgOMiouamVubmFoYXBpLmFnZW50LnYxLkZvcm1hdGlvbk1vZGVsUHJvdmlkZXISOgoHYmVkcm9jaxgCIAEoCzIpLmplbm5haGFwaS5hZ2VudC52MS5CZWRyb2NrRm9ybWF0aW9uTW9kZWwSOAoGdmVydGV4GAMgASgLMiguamVubmFoYXBpLmFnZW50LnYxLlZlcnRleEZvcm1hdGlvbk1vZGVsEhYKDnRoaW5raW5nX2xldmVsGAQgASgJEhkKEW1heF9vdXRwdXRfdG9rZW5zGAUgASgFEi8KC3VwZGF0ZV90aW1lGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgp1cGRhdGVkX2J5GAcgASgJIlwKHFByZXBhcmVGb3JtYXRpb25Nb2RlbFJlcXVlc3QSPAoIcHJvdmlkZXIYASABKA4yKi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybWF0aW9uTW9kZWxQcm92aWRlciLdAQodUHJlcGFyZUZvcm1hdGlvbk1vZGVsUmVzcG9uc2USPAoIcHJvdmlkZXIYASABKA4yKi5qZW5uYWhhcGkuYWdlbnQudjEuRm9ybWF0aW9uTW9kZWxQcm92aWRlchI/CgdiZWRyb2NrGAIgASgLMi4uamVubmFoYXBpLmFnZW50LnYxLkJlZHJvY2tGb3JtYXRpb25Nb2RlbFNldHVwEj0KBnZlcnRleBgDIAEoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwIk0KGFNldEZvcm1hdGlvbk1vZGVsUmVxdWVzdBIxCgVtb2RlbBgBIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbCJOChlTZXRGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEjEKBW1vZGVsGAEgASgLMiIuamVubmFoYXBpLmFnZW50LnYxLkZvcm1hdGlvbk1vZGVsIhoKGEdldEZvcm1hdGlvbk1vZGVsUmVxdWVzdCLaAQoZR2V0Rm9ybWF0aW9uTW9kZWxSZXNwb25zZRIxCgVtb2RlbBgBIAEoCzIiLmplbm5haGFwaS5hZ2VudC52MS5Gb3JtYXRpb25Nb2RlbBJFCg1iZWRyb2NrX3NldHVwGAIgASgLMi4uamVubmFoYXBpLmFnZW50LnYxLkJlZHJvY2tGb3JtYXRpb25Nb2RlbFNldHVwEkMKDHZlcnRleF9zZXR1cBgDIAEoCzItLmplbm5haGFwaS5hZ2VudC52MS5WZXJ0ZXhGb3JtYXRpb25Nb2RlbFNldHVwIh0KG1JlbW92ZUZvcm1hdGlvbk1vZGVsUmVxdWVzdCIvChxSZW1vdmVGb3JtYXRpb25Nb2RlbFJlc3BvbnNlEg8KB3JlbW92ZWQYASABKAgqeAoPRnVzaW9uRGlyZWN0aW9uEiAKHEZVU0lPTl9ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIhCh1GVVNJT05fRElSRUNUSU9OX1ZFQ1RPUl9GSVJTVBABEiAKHEZVU0lPTl9ESVJFQ1RJT05fR1JBUEhfRklSU1QQAipqCg1SZXRyaWV2YWxNb2RlEh4KGlJFVFJJRVZBTF9NT0RFX1VOU1BFQ0lGSUVEEAASHgoaUkVUUklFVkFMX01PREVfVkVDVE9SX09OTFkQARIZChVSRVRSSUVWQUxfTU9ERV9IWUJSSUQQAipyChBSZXRyaWV2YWxDaGFubmVsEiEKHVJFVFJJRVZBTF9DSEFOTkVMX1VOU1BFQ0lGSUVEEAASHAoYUkVUUklFVkFMX0NIQU5ORUxfVkVDVE9SEAESHQoZUkVUUklFVkFMX0NIQU5ORUxfTEVYSUNBTBACKoYBCg5HcmFwaERpcmVjdGlvbhIfChtHUkFQSF9ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIcChhHUkFQSF9ESVJFQ1RJT05fT1VUR09JTkcQARIcChhHUkFQSF9ESVJFQ1RJT05fSU5DT01JTkcQAhIXChNHUkFQSF9ESVJFQ1RJT05fQU5ZEAMqfAoIVHVyblJvbGUSGQoVVFVSTl9ST0xFX1VOU1BFQ0lGSUVEEAASEgoOVFVSTl9ST0xFX1VTRVIQARIXChNUVVJOX1JPTEVfQVNTSVNUQU5UEAISFAoQVFVSTl9ST0xFX1NZU1RFTRADEhIKDlRVUk5fUk9MRV9UT09MEAQqaQoNQ2FuZGlkYXRlS2luZBIeChpDQU5ESURBVEVfS0lORF9VTlNQRUNJRklFRBAAEhcKE0NBTkRJREFURV9LSU5EX0ZBQ1QQARIfChtDQU5ESURBVEVfS0lORF9SRUxBVElPTlNISVAQAiqgAQoOTWVtb3J5RGVjaXNpb24SHwobTUVNT1JZX0RFQ0lTSU9OX1VOU1BFQ0lGSUVEEAASFwoTTUVNT1JZX0RFQ0lTSU9OX05FVxABEhsKF01FTU9SWV9ERUNJU0lPTl9SRVZJU0VEEAISGQoVTUVNT1JZX0RFQ0lTSU9OX0tOT1dOEAMSHAoYTUVNT1JZX0RFQ0lTSU9OX1JFSkVDVEVEEAQqjQEKFkZvcm1hdGlvbk1vZGVsUHJvdmlkZXISKAokRk9STUFUSU9OX01PREVMX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASJAogRk9STUFUSU9OX01PREVMX1BST1ZJREVSX0JFRFJPQ0sQARIjCh9GT1JNQVRJT05fTU9ERUxfUFJPVklERVJfVkVSVEVYEAIywxEKDU1lbW9yeVNlcnZpY2USuwEKDENvbW1pdE1lbW9yeRInLmplbm5haGFwaS5hZ2VudC52MS5Db21taXRNZW1vcnlSZXF1ZXN0GiguamVubmFoYXBpLmFnZW50LnYxLkNvbW1pdE1lbW9yeVJlc3BvbnNlIliC0+STAlI6ASpaKDoBKiIjL3YxL3Njb3Blcy97c2NvcGVfaWR9L21lbW9yeTpjb21taXQiIy92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6Y29tbWl0ErYBCgtRdWVyeU1lbW9yeRImLmplbm5haGFwaS5hZ2VudC52MS5RdWVyeU1lbW9yeVJlcXVlc3QaJy5qZW5uYWhhcGkuYWdlbnQudjEuUXVlcnlNZW1vcnlSZXNwb25zZSJWgtPkkwJQOgEqWic6ASoiIi92MS9zY29wZXMve3Njb3BlX2lkfS9tZW1vcnk6cXVlcnkiIi92MS9hZ2VudHMve3Njb3BlX2lkfS9tZW1vcnk6cXVlcnkSwAEKDUluc3BlY3RNZW1vcnkSKC5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdE1lbW9yeVJlcXVlc3QaKS5qZW5uYWhhcGkuYWdlbnQudjEuSW5zcGVjdE1lbW9yeVJlc3BvbnNlIlqC0+STAlQ6ASpaKToBKiIkL3YxL3Njb3Blcy97c2NvcGVfaWR9L21lbW9yeTppbnNwZWN0IiQvdjEvYWdlbnRzL3tzY29wZV9pZH0vbWVtb3J5Omluc3BlY3QSzgEKDVN1cGVyc2VkZUVkZ2USKC5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlRWRnZVJlcXVlc3QaKS5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlRWRnZVJlc3BvbnNlImiC0+STAmI6ASpaMDoBKiIrL3YxL3Njb3Blcy97c2NvcGVfaWR9L2dyYXBoL2VkZ2VzOnN1cGVyc2VkZSIrL3YxL2FnZW50cy97c2NvcGVfaWR9L2dyYXBoL2VkZ2VzOnN1cGVyc2VkZRLXAQoOU3VwZXJzZWRlQ2h1bmsSKS5qZW5uYWhhcGkuYWdlbnQudjEuU3VwZXJzZWRlQ2h1bmtSZXF1ZXN0GiouamVubmFoYXBpLmFnZW50LnYxLlN1cGVyc2VkZUNodW5rUmVzcG9uc2UiboLT5JMCaDoBKlozOgEqIi4vdjEvc2NvcGVzL3tzY29wZV9pZH0vdmVjdG9ycy9jaHVua3M6c3VwZXJzZWRlIi4vdjEvYWdlbnRzL3tzY29wZV9pZH0vdmVjdG9ycy9jaHVua3M6c3VwZXJzZWRlEokBCgpGb3JtTWVtb3J5EiUuamVubmFoYXBpLmFnZW50LnYxLkZvcm1NZW1vcnlSZXF1ZXN0GiYuamVubmFoYXBpLmFnZW50LnYxLkZvcm1NZW1vcnlSZXNwb25zZSIsgtPkkwImOgEqIiEvdjEvYWdlbnRzL3tzY29wZV9pZH0vbWVtb3J5OmZvcm0SpAEKF0RlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5EjIuamVubmFoYXBpLmFnZW50LnYxLkRlY2xhcmVNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBozLmplbm5haGFwaS5hZ2VudC52MS5EZWNsYXJlTWVtb3J5Vm9jYWJ1bGFyeVJlc3BvbnNlIiCC0+STAho6ASoaFS92MS9tZW1vcnkvdm9jYWJ1bGFyeRKeAQoWUmVtb3ZlTWVtb3J5Vm9jYWJ1bGFyeRIxLmplbm5haGFwaS5hZ2VudC52MS5SZW1vdmVNZW1vcnlWb2NhYnVsYXJ5UmVxdWVzdBoyLmplbm5haGFwaS5hZ2VudC52MS5SZW1vdmVNZW1vcnlWb2NhYnVsYXJ5UmVzcG9uc2UiHYLT5JMCFyoVL3YxL21lbW9yeS92b2NhYnVsYXJ5EpUBChNHZXRNZW1vcnlWb2NhYnVsYXJ5Ei4uamVubmFoYXBpLmFnZW50LnYxLkdldE1lbW9yeVZvY2FidWxhcnlSZXF1ZXN0Gi8uamVubmFoYXBpLmFnZW50LnYxLkdldE1lbW9yeVZvY2FidWxhcnlSZXNwb25zZSIdgtPkkwIXEhUvdjEvbWVtb3J5L3ZvY2FidWxhcnkSpAEKFVByZXBhcmVGb3JtYXRpb25Nb2RlbBIwLmplbm5haGFwaS5hZ2VudC52MS5QcmVwYXJlRm9ybWF0aW9uTW9kZWxSZXF1ZXN0GjEuamVubmFoYXBpLmFnZW50LnYxLlByZXBhcmVGb3JtYXRpb25Nb2RlbFJlc3BvbnNlIiaC0+STAiA6ASoiGy92MS9mb3JtYXRpb24tbW9kZWw6cHJlcGFyZRKQAQoRU2V0Rm9ybWF0aW9uTW9kZWwSLC5qZW5uYWhhcGkuYWdlbnQudjEuU2V0Rm9ybWF0aW9uTW9kZWxSZXF1ZXN0Gi0uamVubmFoYXBpLmFnZW50LnYxLlNldEZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiHoLT5JMCGDoBKhoTL3YxL2Zvcm1hdGlvbi1tb2RlbBKNAQoRR2V0Rm9ybWF0aW9uTW9kZWwSLC5qZW5uYWhhcGkuYWdlbnQudjEuR2V0Rm9ybWF0aW9uTW9kZWxSZXF1ZXN0Gi0uamVubmFoYXBpLmFnZW50LnYxLkdldEZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiG4LT5JMCFRITL3YxL2Zvcm1hdGlvbi1tb2RlbBKWAQoUUmVtb3ZlRm9ybWF0aW9uTW9kZWwSLy5qZW5uYWhhcGkuYWdlbnQudjEuUmVtb3ZlRm9ybWF0aW9uTW9kZWxSZXF1ZXN0GjAuamVubmFoYXBpLmFnZW50LnYxLlJlbW92ZUZvcm1hdGlvbk1vZGVsUmVzcG9uc2UiG4LT5JMCFSoTL3YxL2Zvcm1hdGlvbi1tb2RlbEIpWidnaXRodWIuY29tL2FscGhhdXNsYWJzL2plbm5haC1hcGkvYWdlbnRiBnByb3RvMw", [file_google_api_annotations, file_google_protobuf_struct, file_google_protobuf_timestamp]);
11
11
  /**
12
12
  * Describes the message jennahapi.agent.v1.CommitMemoryRequest.
13
13
  * Use `create(CommitMemoryRequestSchema)` to create a new message.
@@ -327,6 +327,71 @@ export const GetMemoryVocabularyRequestSchema = /*@__PURE__*/ messageDesc(file_j
327
327
  * Use `create(GetMemoryVocabularyResponseSchema)` to create a new message.
328
328
  */
329
329
  export const GetMemoryVocabularyResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 52);
330
+ /**
331
+ * Describes the message jennahapi.agent.v1.BedrockFormationModelSetup.
332
+ * Use `create(BedrockFormationModelSetupSchema)` to create a new message.
333
+ */
334
+ export const BedrockFormationModelSetupSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 53);
335
+ /**
336
+ * Describes the message jennahapi.agent.v1.VertexFormationModelSetup.
337
+ * Use `create(VertexFormationModelSetupSchema)` to create a new message.
338
+ */
339
+ export const VertexFormationModelSetupSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 54);
340
+ /**
341
+ * Describes the message jennahapi.agent.v1.BedrockFormationModel.
342
+ * Use `create(BedrockFormationModelSchema)` to create a new message.
343
+ */
344
+ export const BedrockFormationModelSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 55);
345
+ /**
346
+ * Describes the message jennahapi.agent.v1.VertexFormationModel.
347
+ * Use `create(VertexFormationModelSchema)` to create a new message.
348
+ */
349
+ export const VertexFormationModelSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 56);
350
+ /**
351
+ * Describes the message jennahapi.agent.v1.FormationModel.
352
+ * Use `create(FormationModelSchema)` to create a new message.
353
+ */
354
+ export const FormationModelSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 57);
355
+ /**
356
+ * Describes the message jennahapi.agent.v1.PrepareFormationModelRequest.
357
+ * Use `create(PrepareFormationModelRequestSchema)` to create a new message.
358
+ */
359
+ export const PrepareFormationModelRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 58);
360
+ /**
361
+ * Describes the message jennahapi.agent.v1.PrepareFormationModelResponse.
362
+ * Use `create(PrepareFormationModelResponseSchema)` to create a new message.
363
+ */
364
+ export const PrepareFormationModelResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 59);
365
+ /**
366
+ * Describes the message jennahapi.agent.v1.SetFormationModelRequest.
367
+ * Use `create(SetFormationModelRequestSchema)` to create a new message.
368
+ */
369
+ export const SetFormationModelRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 60);
370
+ /**
371
+ * Describes the message jennahapi.agent.v1.SetFormationModelResponse.
372
+ * Use `create(SetFormationModelResponseSchema)` to create a new message.
373
+ */
374
+ export const SetFormationModelResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 61);
375
+ /**
376
+ * Describes the message jennahapi.agent.v1.GetFormationModelRequest.
377
+ * Use `create(GetFormationModelRequestSchema)` to create a new message.
378
+ */
379
+ export const GetFormationModelRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 62);
380
+ /**
381
+ * Describes the message jennahapi.agent.v1.GetFormationModelResponse.
382
+ * Use `create(GetFormationModelResponseSchema)` to create a new message.
383
+ */
384
+ export const GetFormationModelResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 63);
385
+ /**
386
+ * Describes the message jennahapi.agent.v1.RemoveFormationModelRequest.
387
+ * Use `create(RemoveFormationModelRequestSchema)` to create a new message.
388
+ */
389
+ export const RemoveFormationModelRequestSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 64);
390
+ /**
391
+ * Describes the message jennahapi.agent.v1.RemoveFormationModelResponse.
392
+ * Use `create(RemoveFormationModelResponseSchema)` to create a new message.
393
+ */
394
+ export const RemoveFormationModelResponseSchema = /*@__PURE__*/ messageDesc(file_jennah_agent_v1_memory, 65);
330
395
  /**
331
396
  * Direction of vector+graph fusion when a query links the two sections.
332
397
  *
@@ -594,6 +659,34 @@ export var MemoryDecision;
594
659
  * Describes the enum jennahapi.agent.v1.MemoryDecision.
595
660
  */
596
661
  export const MemoryDecisionSchema = /*@__PURE__*/ enumDesc(file_jennah_agent_v1_memory, 6);
662
+ /**
663
+ * Where an enterprise's own formation model is served.
664
+ *
665
+ * @generated from enum jennahapi.agent.v1.FormationModelProvider
666
+ */
667
+ export var FormationModelProvider;
668
+ (function (FormationModelProvider) {
669
+ /**
670
+ * @generated from enum value: FORMATION_MODEL_PROVIDER_UNSPECIFIED = 0;
671
+ */
672
+ FormationModelProvider[FormationModelProvider["UNSPECIFIED"] = 0] = "UNSPECIFIED";
673
+ /**
674
+ * Amazon Bedrock in the enterprise's AWS account.
675
+ *
676
+ * @generated from enum value: FORMATION_MODEL_PROVIDER_BEDROCK = 1;
677
+ */
678
+ FormationModelProvider[FormationModelProvider["BEDROCK"] = 1] = "BEDROCK";
679
+ /**
680
+ * Vertex AI in the enterprise's GCP project.
681
+ *
682
+ * @generated from enum value: FORMATION_MODEL_PROVIDER_VERTEX = 2;
683
+ */
684
+ FormationModelProvider[FormationModelProvider["VERTEX"] = 2] = "VERTEX";
685
+ })(FormationModelProvider || (FormationModelProvider = {}));
686
+ /**
687
+ * Describes the enum jennahapi.agent.v1.FormationModelProvider.
688
+ */
689
+ export const FormationModelProviderSchema = /*@__PURE__*/ enumDesc(file_jennah_agent_v1_memory, 7);
597
690
  /**
598
691
  * MemoryService is the unified memory-data plane for an agent workspace.
599
692
  *
@@ -186,6 +186,15 @@ export type GetBillingStateResponse = Message<"jennahapi.billing.v1.GetBillingSt
186
186
  * @generated from field: bool overage_billable = 12;
187
187
  */
188
188
  overageBillable: boolean;
189
+ /**
190
+ * Formations in the window that ran on the enterprise's own formation model
191
+ * (see MemoryService.SetFormationModel). They consume no formation units and
192
+ * are not in `formation_units_used`, because the enterprise pays its model
193
+ * provider for them directly; they are counted here so they stay visible.
194
+ *
195
+ * @generated from field: int64 byo_formations = 13;
196
+ */
197
+ byoFormations: bigint;
189
198
  };
190
199
  /**
191
200
  * Describes the message jennahapi.billing.v1.GetBillingStateResponse.
@@ -7,7 +7,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
7
  /**
8
8
  * Describes the file jennah/billing/v1/billing.proto.
9
9
  */
10
- export const file_jennah_billing_v1_billing = /*@__PURE__*/ fileDesc("Ch9qZW5uYWgvYmlsbGluZy92MS9iaWxsaW5nLnByb3RvEhRqZW5uYWhhcGkuYmlsbGluZy52MSKTAgoRQm91bmRTdWJzY3JpcHRpb24SMwoGc291cmNlGAEgASgOMiMuamVubmFoYXBpLmJpbGxpbmcudjEuQmlsbGluZ1NvdXJjZRIXCg9zdWJzY3JpcHRpb25faWQYAiABKAkSEwoLYWNjb3VudF9yZWYYAyABKAkSEwoLcHJvZHVjdF9yZWYYBCABKAkSDAoEdGllchgFIAEoCRIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2CgVzdGF0ZRgHIAEoDjInLmplbm5haGFwaS5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvblN0YXRlEhAKCHF1YW50aXR5GAggASgDIhgKFkdldEJpbGxpbmdTdGF0ZVJlcXVlc3QikAMKF0dldEJpbGxpbmdTdGF0ZVJlc3BvbnNlEgwKBHRpZXIYASABKAkSMwoGc291cmNlGAIgASgOMiMuamVubmFoYXBpLmJpbGxpbmcudjEuQmlsbGluZ1NvdXJjZRIRCglzb3VyY2VfaWQYAyABKAkSGgoSZXh0ZXJuYWxseV9tYW5hZ2VkGAQgASgIEj4KDXN1YnNjcmlwdGlvbnMYBSADKAsyJy5qZW5uYWhhcGkuYmlsbGluZy52MS5Cb3VuZFN1YnNjcmlwdGlvbhISCgptYW5hZ2VfdXJsGAYgASgJEiEKGWZvcm1hdGlvbl91bml0c19hbGxvd2FuY2UYByABKAMSHAoUZm9ybWF0aW9uX3VuaXRzX3VzZWQYCCABKAMSHwoXZm9ybWF0aW9uX292ZXJhZ2VfdW5pdHMYCSABKAMSGAoQb3ZlcmFnZV9tdWx0aXBsZRgKIAEoARIZChFvdmVyYWdlX3VuaXRfYmFuZBgLIAEoAxIYChBvdmVyYWdlX2JpbGxhYmxlGAwgASgIIjkKHVNldEZvcm1hdGlvbk92ZXJhZ2VDYXBSZXF1ZXN0EhgKEG92ZXJhZ2VfbXVsdGlwbGUYASABKAEiOgoeU2V0Rm9ybWF0aW9uT3ZlcmFnZUNhcFJlc3BvbnNlEhgKEG92ZXJhZ2VfbXVsdGlwbGUYASABKAEiNAoiQmluZE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVxdWVzdBIOCgZoYW5kbGUYASABKAkimQEKI0JpbmRNYXJrZXRwbGFjZVJlZ2lzdHJhdGlvblJlc3BvbnNlEj0KDHN1YnNjcmlwdGlvbhgBIAEoCzInLmplbm5haGFwaS5iaWxsaW5nLnYxLkJvdW5kU3Vic2NyaXB0aW9uEgwKBHRpZXIYAiABKAkSJQodYWNjZXNzX3Rva2VuX3JlZnJlc2hfcmVxdWlyZWQYAyABKAgiQwolUmVzb2x2ZU1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVxdWVzdBIaChJyZWdpc3RyYXRpb25fdG9rZW4YASABKAkiPgomUmVzb2x2ZU1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJImsKEFRva2VuVXNhZ2VGaWx0ZXISEAoIc2NvcGVfaWQYASABKAkSEwoLY2FsbGVyX2tpbmQYAiABKAkSEQoJY2FsbGVyX2lkGAMgASgJEg0KBW1vZGVsGAQgASgJEg4KBnJlZ2lvbhgFIAEoCSK7AgodR2V0Rm9ybWF0aW9uVG9rZW5Vc2FnZVJlcXVlc3QSLgoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKBWdyYWluGAMgASgOMiUuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZUdyYWluEjsKCGdyb3VwX2J5GAQgASgOMikuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZURpbWVuc2lvbhIRCgl0aW1lX3pvbmUYBSABKAkSNgoGZmlsdGVyGAYgASgLMiYuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZUZpbHRlciKFAQoQVG9rZW5Vc2FnZUJ1Y2tldBIUCgxwZXJpb2Rfc3RhcnQYASABKAkSCwoDa2V5GAIgASgJEhIKCmZvcm1hdGlvbnMYAyABKAMSFAoMaW5wdXRfdG9rZW5zGAQgASgDEhUKDW91dHB1dF90b2tlbnMYBSABKAMSDQoFdW5pdHMYBiABKAMiygEKHkdldEZvcm1hdGlvblRva2VuVXNhZ2VSZXNwb25zZRI3CgdidWNrZXRzGAEgAygLMiYuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZUJ1Y2tldBIuCgpzdGFydF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJdGltZV96b25lGAQgASgJKo0BCg1CaWxsaW5nU291cmNlEh4KGkJJTExJTkdfU09VUkNFX1VOU1BFQ0lGSUVEEAASGwoXQklMTElOR19TT1VSQ0VfUExBVEZPUk0QARIbChdCSUxMSU5HX1NPVVJDRV9PUEVSQVRPUhACEiIKHkJJTExJTkdfU09VUkNFX0FXU19NQVJLRVRQTEFDRRADKu0BChFTdWJzY3JpcHRpb25TdGF0ZRIiCh5TVUJTQ1JJUFRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIeChpTVUJTQ1JJUFRJT05fU1RBVEVfVU5CT1VORBABEh0KGVNVQlNDUklQVElPTl9TVEFURV9BQ1RJVkUQAhIrCidTVUJTQ1JJUFRJT05fU1RBVEVfUEVORElOR19WRVJJRklDQVRJT04QAxImCiJTVUJTQ1JJUFRJT05fU1RBVEVfTkVFRFNfQVRURU5USU9OEAQSIAocU1VCU0NSSVBUSU9OX1NUQVRFX0NBTkNFTExFRBAFKogBCg9Ub2tlblVzYWdlR3JhaW4SIQodVE9LRU5fVVNBR0VfR1JBSU5fVU5TUEVDSUZJRUQQABIZChVUT0tFTl9VU0FHRV9HUkFJTl9EQVkQARIaChZUT0tFTl9VU0FHRV9HUkFJTl9XRUVLEAISGwoXVE9LRU5fVVNBR0VfR1JBSU5fTU9OVEgQAyrCAQoTVG9rZW5Vc2FnZURpbWVuc2lvbhIlCiFUT0tFTl9VU0FHRV9ESU1FTlNJT05fVU5TUEVDSUZJRUQQABIfChtUT0tFTl9VU0FHRV9ESU1FTlNJT05fU0NPUEUQARIgChxUT0tFTl9VU0FHRV9ESU1FTlNJT05fQ0FMTEVSEAISHwobVE9LRU5fVVNBR0VfRElNRU5TSU9OX01PREVMEAMSIAocVE9LRU5fVVNBR0VfRElNRU5TSU9OX1JFR0lPThAEMtAGCg5CaWxsaW5nU2VydmljZRKDAQoPR2V0QmlsbGluZ1N0YXRlEiwuamVubmFoYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ1N0YXRlUmVxdWVzdBotLmplbm5haGFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdTdGF0ZVJlc3BvbnNlIhOC0+STAg0SCy92MS9iaWxsaW5nEq8BChZHZXRGb3JtYXRpb25Ub2tlblVzYWdlEjMuamVubmFoYXBpLmJpbGxpbmcudjEuR2V0Rm9ybWF0aW9uVG9rZW5Vc2FnZVJlcXVlc3QaNC5qZW5uYWhhcGkuYmlsbGluZy52MS5HZXRGb3JtYXRpb25Ub2tlblVzYWdlUmVzcG9uc2UiKoLT5JMCJBIiL3YxL2JpbGxpbmcvdXNhZ2UvZm9ybWF0aW9uLXRva2VucxKzAQobQmluZE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uEjguamVubmFoYXBpLmJpbGxpbmcudjEuQmluZE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVxdWVzdBo5Lmplbm5haGFwaS5iaWxsaW5nLnYxLkJpbmRNYXJrZXRwbGFjZVJlZ2lzdHJhdGlvblJlc3BvbnNlIh+C0+STAhk6ASoiFC92MS9iaWxsaW5nL2F3czpiaW5kErEBChZTZXRGb3JtYXRpb25PdmVyYWdlQ2FwEjMuamVubmFoYXBpLmJpbGxpbmcudjEuU2V0Rm9ybWF0aW9uT3ZlcmFnZUNhcFJlcXVlc3QaNC5qZW5uYWhhcGkuYmlsbGluZy52MS5TZXRGb3JtYXRpb25PdmVyYWdlQ2FwUmVzcG9uc2UiLILT5JMCJjoBKhohL3YxL2JpbGxpbmcvZm9ybWF0aW9uLW92ZXJhZ2UtY2FwEpsBCh5SZXNvbHZlTWFya2V0cGxhY2VSZWdpc3RyYXRpb24SOy5qZW5uYWhhcGkuYmlsbGluZy52MS5SZXNvbHZlTWFya2V0cGxhY2VSZWdpc3RyYXRpb25SZXF1ZXN0GjwuamVubmFoYXBpLmJpbGxpbmcudjEuUmVzb2x2ZU1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVzcG9uc2VCK1opZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9qZW5uYWgtYXBpL2JpbGxpbmdiBnByb3RvMw", [file_google_api_annotations, file_google_protobuf_timestamp]);
10
+ export const file_jennah_billing_v1_billing = /*@__PURE__*/ fileDesc("Ch9qZW5uYWgvYmlsbGluZy92MS9iaWxsaW5nLnByb3RvEhRqZW5uYWhhcGkuYmlsbGluZy52MSKTAgoRQm91bmRTdWJzY3JpcHRpb24SMwoGc291cmNlGAEgASgOMiMuamVubmFoYXBpLmJpbGxpbmcudjEuQmlsbGluZ1NvdXJjZRIXCg9zdWJzY3JpcHRpb25faWQYAiABKAkSEwoLYWNjb3VudF9yZWYYAyABKAkSEwoLcHJvZHVjdF9yZWYYBCABKAkSDAoEdGllchgFIAEoCRIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2CgVzdGF0ZRgHIAEoDjInLmplbm5haGFwaS5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvblN0YXRlEhAKCHF1YW50aXR5GAggASgDIhgKFkdldEJpbGxpbmdTdGF0ZVJlcXVlc3QiqAMKF0dldEJpbGxpbmdTdGF0ZVJlc3BvbnNlEgwKBHRpZXIYASABKAkSMwoGc291cmNlGAIgASgOMiMuamVubmFoYXBpLmJpbGxpbmcudjEuQmlsbGluZ1NvdXJjZRIRCglzb3VyY2VfaWQYAyABKAkSGgoSZXh0ZXJuYWxseV9tYW5hZ2VkGAQgASgIEj4KDXN1YnNjcmlwdGlvbnMYBSADKAsyJy5qZW5uYWhhcGkuYmlsbGluZy52MS5Cb3VuZFN1YnNjcmlwdGlvbhISCgptYW5hZ2VfdXJsGAYgASgJEiEKGWZvcm1hdGlvbl91bml0c19hbGxvd2FuY2UYByABKAMSHAoUZm9ybWF0aW9uX3VuaXRzX3VzZWQYCCABKAMSHwoXZm9ybWF0aW9uX292ZXJhZ2VfdW5pdHMYCSABKAMSGAoQb3ZlcmFnZV9tdWx0aXBsZRgKIAEoARIZChFvdmVyYWdlX3VuaXRfYmFuZBgLIAEoAxIYChBvdmVyYWdlX2JpbGxhYmxlGAwgASgIEhYKDmJ5b19mb3JtYXRpb25zGA0gASgDIjkKHVNldEZvcm1hdGlvbk92ZXJhZ2VDYXBSZXF1ZXN0EhgKEG92ZXJhZ2VfbXVsdGlwbGUYASABKAEiOgoeU2V0Rm9ybWF0aW9uT3ZlcmFnZUNhcFJlc3BvbnNlEhgKEG92ZXJhZ2VfbXVsdGlwbGUYASABKAEiNAoiQmluZE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVxdWVzdBIOCgZoYW5kbGUYASABKAkimQEKI0JpbmRNYXJrZXRwbGFjZVJlZ2lzdHJhdGlvblJlc3BvbnNlEj0KDHN1YnNjcmlwdGlvbhgBIAEoCzInLmplbm5haGFwaS5iaWxsaW5nLnYxLkJvdW5kU3Vic2NyaXB0aW9uEgwKBHRpZXIYAiABKAkSJQodYWNjZXNzX3Rva2VuX3JlZnJlc2hfcmVxdWlyZWQYAyABKAgiQwolUmVzb2x2ZU1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVxdWVzdBIaChJyZWdpc3RyYXRpb25fdG9rZW4YASABKAkiPgomUmVzb2x2ZU1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJImsKEFRva2VuVXNhZ2VGaWx0ZXISEAoIc2NvcGVfaWQYASABKAkSEwoLY2FsbGVyX2tpbmQYAiABKAkSEQoJY2FsbGVyX2lkGAMgASgJEg0KBW1vZGVsGAQgASgJEg4KBnJlZ2lvbhgFIAEoCSK7AgodR2V0Rm9ybWF0aW9uVG9rZW5Vc2FnZVJlcXVlc3QSLgoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKBWdyYWluGAMgASgOMiUuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZUdyYWluEjsKCGdyb3VwX2J5GAQgASgOMikuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZURpbWVuc2lvbhIRCgl0aW1lX3pvbmUYBSABKAkSNgoGZmlsdGVyGAYgASgLMiYuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZUZpbHRlciKFAQoQVG9rZW5Vc2FnZUJ1Y2tldBIUCgxwZXJpb2Rfc3RhcnQYASABKAkSCwoDa2V5GAIgASgJEhIKCmZvcm1hdGlvbnMYAyABKAMSFAoMaW5wdXRfdG9rZW5zGAQgASgDEhUKDW91dHB1dF90b2tlbnMYBSABKAMSDQoFdW5pdHMYBiABKAMiygEKHkdldEZvcm1hdGlvblRva2VuVXNhZ2VSZXNwb25zZRI3CgdidWNrZXRzGAEgAygLMiYuamVubmFoYXBpLmJpbGxpbmcudjEuVG9rZW5Vc2FnZUJ1Y2tldBIuCgpzdGFydF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJdGltZV96b25lGAQgASgJKo0BCg1CaWxsaW5nU291cmNlEh4KGkJJTExJTkdfU09VUkNFX1VOU1BFQ0lGSUVEEAASGwoXQklMTElOR19TT1VSQ0VfUExBVEZPUk0QARIbChdCSUxMSU5HX1NPVVJDRV9PUEVSQVRPUhACEiIKHkJJTExJTkdfU09VUkNFX0FXU19NQVJLRVRQTEFDRRADKu0BChFTdWJzY3JpcHRpb25TdGF0ZRIiCh5TVUJTQ1JJUFRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIeChpTVUJTQ1JJUFRJT05fU1RBVEVfVU5CT1VORBABEh0KGVNVQlNDUklQVElPTl9TVEFURV9BQ1RJVkUQAhIrCidTVUJTQ1JJUFRJT05fU1RBVEVfUEVORElOR19WRVJJRklDQVRJT04QAxImCiJTVUJTQ1JJUFRJT05fU1RBVEVfTkVFRFNfQVRURU5USU9OEAQSIAocU1VCU0NSSVBUSU9OX1NUQVRFX0NBTkNFTExFRBAFKogBCg9Ub2tlblVzYWdlR3JhaW4SIQodVE9LRU5fVVNBR0VfR1JBSU5fVU5TUEVDSUZJRUQQABIZChVUT0tFTl9VU0FHRV9HUkFJTl9EQVkQARIaChZUT0tFTl9VU0FHRV9HUkFJTl9XRUVLEAISGwoXVE9LRU5fVVNBR0VfR1JBSU5fTU9OVEgQAyrCAQoTVG9rZW5Vc2FnZURpbWVuc2lvbhIlCiFUT0tFTl9VU0FHRV9ESU1FTlNJT05fVU5TUEVDSUZJRUQQABIfChtUT0tFTl9VU0FHRV9ESU1FTlNJT05fU0NPUEUQARIgChxUT0tFTl9VU0FHRV9ESU1FTlNJT05fQ0FMTEVSEAISHwobVE9LRU5fVVNBR0VfRElNRU5TSU9OX01PREVMEAMSIAocVE9LRU5fVVNBR0VfRElNRU5TSU9OX1JFR0lPThAEMtAGCg5CaWxsaW5nU2VydmljZRKDAQoPR2V0QmlsbGluZ1N0YXRlEiwuamVubmFoYXBpLmJpbGxpbmcudjEuR2V0QmlsbGluZ1N0YXRlUmVxdWVzdBotLmplbm5haGFwaS5iaWxsaW5nLnYxLkdldEJpbGxpbmdTdGF0ZVJlc3BvbnNlIhOC0+STAg0SCy92MS9iaWxsaW5nEq8BChZHZXRGb3JtYXRpb25Ub2tlblVzYWdlEjMuamVubmFoYXBpLmJpbGxpbmcudjEuR2V0Rm9ybWF0aW9uVG9rZW5Vc2FnZVJlcXVlc3QaNC5qZW5uYWhhcGkuYmlsbGluZy52MS5HZXRGb3JtYXRpb25Ub2tlblVzYWdlUmVzcG9uc2UiKoLT5JMCJBIiL3YxL2JpbGxpbmcvdXNhZ2UvZm9ybWF0aW9uLXRva2VucxKzAQobQmluZE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uEjguamVubmFoYXBpLmJpbGxpbmcudjEuQmluZE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVxdWVzdBo5Lmplbm5haGFwaS5iaWxsaW5nLnYxLkJpbmRNYXJrZXRwbGFjZVJlZ2lzdHJhdGlvblJlc3BvbnNlIh+C0+STAhk6ASoiFC92MS9iaWxsaW5nL2F3czpiaW5kErEBChZTZXRGb3JtYXRpb25PdmVyYWdlQ2FwEjMuamVubmFoYXBpLmJpbGxpbmcudjEuU2V0Rm9ybWF0aW9uT3ZlcmFnZUNhcFJlcXVlc3QaNC5qZW5uYWhhcGkuYmlsbGluZy52MS5TZXRGb3JtYXRpb25PdmVyYWdlQ2FwUmVzcG9uc2UiLILT5JMCJjoBKhohL3YxL2JpbGxpbmcvZm9ybWF0aW9uLW92ZXJhZ2UtY2FwEpsBCh5SZXNvbHZlTWFya2V0cGxhY2VSZWdpc3RyYXRpb24SOy5qZW5uYWhhcGkuYmlsbGluZy52MS5SZXNvbHZlTWFya2V0cGxhY2VSZWdpc3RyYXRpb25SZXF1ZXN0GjwuamVubmFoYXBpLmJpbGxpbmcudjEuUmVzb2x2ZU1hcmtldHBsYWNlUmVnaXN0cmF0aW9uUmVzcG9uc2VCK1opZ2l0aHViLmNvbS9hbHBoYXVzbGFicy9qZW5uYWgtYXBpL2JpbGxpbmdiBnByb3RvMw", [file_google_api_annotations, file_google_protobuf_timestamp]);
11
11
  /**
12
12
  * Describes the message jennahapi.billing.v1.BoundSubscription.
13
13
  * Use `create(BoundSubscriptionSchema)` to create a new message.
package/dist/retry.js CHANGED
@@ -40,6 +40,7 @@ export const REPLAYABLE_READS = new Set([
40
40
  MEMORY + "QueryMemory",
41
41
  MEMORY + "InspectMemory",
42
42
  MEMORY + "GetMemoryVocabulary",
43
+ MEMORY + "GetFormationModel",
43
44
  SCOPE + "GetScope",
44
45
  SCOPE + "ListScopes",
45
46
  DATASET + "GetDataset",
@@ -90,6 +91,11 @@ export const NEVER_REPLAY = new Set([
90
91
  // declaration would overwrite it; rare administrative calls the caller retries.
91
92
  MEMORY + "DeclareMemoryVocabulary",
92
93
  MEMORY + "RemoveMemoryVocabulary",
94
+ // The formation model: setting runs a probe on the enterprise's own model and
95
+ // replaces the model set; rare administrative calls the caller retries knowingly.
96
+ MEMORY + "PrepareFormationModel",
97
+ MEMORY + "SetFormationModel",
98
+ MEMORY + "RemoveFormationModel",
93
99
  // A long poll that reports a pending approval as success.
94
100
  APPROVAL + "WaitApproval",
95
101
  // Each sends mail, records a decision, or ends an approval.
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.68.0";
2
- export declare const sourceCommit = "33a6dde78cb5eb3540379687e241318e0981acff";
1
+ export declare const version = "0.69.0";
2
+ export declare const sourceCommit = "33a4f5de21aa530d769e5075e55a2e07e4cdd282";
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Written by jennah-api release/typescript/assemble.sh; not committed.
2
- export const version = "0.68.0";
3
- export const sourceCommit = "33a6dde78cb5eb3540379687e241318e0981acff";
2
+ export const version = "0.69.0";
3
+ export const sourceCommit = "33a4f5de21aa530d769e5075e55a2e07e4cdd282";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jennah-sdk-ts",
3
- "version": "0.68.0",
3
+ "version": "0.69.0",
4
4
  "description": "TypeScript SDK for Jennah, the memory and context platform for AI agents",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/alphauslabs/jennah-sdk-ts#readme",