@eide/foir-proto-ts 0.41.0 → 0.42.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.41.0",
3
+ "version": "0.42.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetAssignmentsRequest, GetAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentDeclarationsRequest, ListExperimentDeclarationsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
6
+ import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetAssignmentsRequest, GetAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentDeclarationsRequest, ListExperimentDeclarationsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, PreviewExperimentWinnerRolloutRequest, PreviewExperimentWinnerRolloutResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, RollbackExperimentRequest, RollbackExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -117,6 +117,24 @@ export declare const ExperimentsService: {
117
117
  readonly O: typeof ApplyExperimentWinnerResponse,
118
118
  readonly kind: MethodKind.Unary,
119
119
  },
120
+ /**
121
+ * @generated from rpc experiments.v1.ExperimentsService.PreviewExperimentWinnerRollout
122
+ */
123
+ readonly previewExperimentWinnerRollout: {
124
+ readonly name: "PreviewExperimentWinnerRollout",
125
+ readonly I: typeof PreviewExperimentWinnerRolloutRequest,
126
+ readonly O: typeof PreviewExperimentWinnerRolloutResponse,
127
+ readonly kind: MethodKind.Unary,
128
+ },
129
+ /**
130
+ * @generated from rpc experiments.v1.ExperimentsService.RollbackExperiment
131
+ */
132
+ readonly rollbackExperiment: {
133
+ readonly name: "RollbackExperiment",
134
+ readonly I: typeof RollbackExperimentRequest,
135
+ readonly O: typeof RollbackExperimentResponse,
136
+ readonly kind: MethodKind.Unary,
137
+ },
120
138
  /**
121
139
  * Stats.
122
140
  *
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetAssignmentsRequest, GetAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentDeclarationsRequest, ListExperimentDeclarationsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
6
+ import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetAssignmentsRequest, GetAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentDeclarationsRequest, ListExperimentDeclarationsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, PreviewExperimentWinnerRolloutRequest, PreviewExperimentWinnerRolloutResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, RollbackExperimentRequest, RollbackExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -117,6 +117,24 @@ export const ExperimentsService = {
117
117
  O: ApplyExperimentWinnerResponse,
118
118
  kind: MethodKind.Unary,
119
119
  },
120
+ /**
121
+ * @generated from rpc experiments.v1.ExperimentsService.PreviewExperimentWinnerRollout
122
+ */
123
+ previewExperimentWinnerRollout: {
124
+ name: "PreviewExperimentWinnerRollout",
125
+ I: PreviewExperimentWinnerRolloutRequest,
126
+ O: PreviewExperimentWinnerRolloutResponse,
127
+ kind: MethodKind.Unary,
128
+ },
129
+ /**
130
+ * @generated from rpc experiments.v1.ExperimentsService.RollbackExperiment
131
+ */
132
+ rollbackExperiment: {
133
+ name: "RollbackExperiment",
134
+ I: RollbackExperimentRequest,
135
+ O: RollbackExperimentResponse,
136
+ kind: MethodKind.Unary,
137
+ },
120
138
  /**
121
139
  * Stats.
122
140
  *
@@ -958,6 +958,23 @@ export declare type ApplyExperimentWinnerResponse = Message<"experiments.v1.Appl
958
958
  * @generated from field: experiments.v1.Experiment experiment = 1;
959
959
  */
960
960
  experiment?: Experiment | undefined;
961
+
962
+ /**
963
+ * Number of parent records whose default variant was changed (or
964
+ * would have been, but was already the winner). Drives the admin
965
+ * confirmation copy.
966
+ *
967
+ * @generated from field: int32 affected_record_count = 2;
968
+ */
969
+ affectedRecordCount: number;
970
+
971
+ /**
972
+ * Number of variant rows whose experimentKey/variantKey metadata
973
+ * was cleared as part of the rollout sweep.
974
+ *
975
+ * @generated from field: int32 cleared_variant_count = 3;
976
+ */
977
+ clearedVariantCount: number;
961
978
  };
962
979
 
963
980
  /**
@@ -966,6 +983,136 @@ export declare type ApplyExperimentWinnerResponse = Message<"experiments.v1.Appl
966
983
  */
967
984
  export declare const ApplyExperimentWinnerResponseSchema: GenMessage<ApplyExperimentWinnerResponse>;
968
985
 
986
+ /**
987
+ * Read-only dry-run for the admin confirmation dialog. Returns what
988
+ * records would be affected by ApplyExperimentWinner without making
989
+ * any changes. Same validation surface as ApplyExperimentWinner so
990
+ * the UI can surface "winner key not declared on this experiment"
991
+ * before the user clicks through.
992
+ *
993
+ * @generated from message experiments.v1.PreviewExperimentWinnerRolloutRequest
994
+ */
995
+ export declare type PreviewExperimentWinnerRolloutRequest = Message<"experiments.v1.PreviewExperimentWinnerRolloutRequest"> & {
996
+ /**
997
+ * @generated from field: string experiment_id = 1;
998
+ */
999
+ experimentId: string;
1000
+
1001
+ /**
1002
+ * @generated from field: string winner_variant_key = 2;
1003
+ */
1004
+ winnerVariantKey: string;
1005
+ };
1006
+
1007
+ /**
1008
+ * Describes the message experiments.v1.PreviewExperimentWinnerRolloutRequest.
1009
+ * Use `create(PreviewExperimentWinnerRolloutRequestSchema)` to create a new message.
1010
+ */
1011
+ export declare const PreviewExperimentWinnerRolloutRequestSchema: GenMessage<PreviewExperimentWinnerRolloutRequest>;
1012
+
1013
+ /**
1014
+ * @generated from message experiments.v1.AffectedRecord
1015
+ */
1016
+ export declare type AffectedRecord = Message<"experiments.v1.AffectedRecord"> & {
1017
+ /**
1018
+ * @generated from field: string record_id = 1;
1019
+ */
1020
+ recordId: string;
1021
+
1022
+ /**
1023
+ * Currently-set defaultVariantId, or empty when none.
1024
+ *
1025
+ * @generated from field: string current_default_variant_id = 2;
1026
+ */
1027
+ currentDefaultVariantId: string;
1028
+
1029
+ /**
1030
+ * Variant id that would become default after rollout, or empty if
1031
+ * the winner is "control" (no variant change — only metadata cleanup).
1032
+ *
1033
+ * @generated from field: string new_default_variant_id = 3;
1034
+ */
1035
+ newDefaultVariantId: string;
1036
+ };
1037
+
1038
+ /**
1039
+ * Describes the message experiments.v1.AffectedRecord.
1040
+ * Use `create(AffectedRecordSchema)` to create a new message.
1041
+ */
1042
+ export declare const AffectedRecordSchema: GenMessage<AffectedRecord>;
1043
+
1044
+ /**
1045
+ * @generated from message experiments.v1.PreviewExperimentWinnerRolloutResponse
1046
+ */
1047
+ export declare type PreviewExperimentWinnerRolloutResponse = Message<"experiments.v1.PreviewExperimentWinnerRolloutResponse"> & {
1048
+ /**
1049
+ * @generated from field: repeated experiments.v1.AffectedRecord affected_records = 1;
1050
+ */
1051
+ affectedRecords: AffectedRecord[];
1052
+
1053
+ /**
1054
+ * Cohort variants that would have their experimentKey/variantKey
1055
+ * metadata cleared (always == affected_records cohort + losers).
1056
+ *
1057
+ * @generated from field: int32 cleared_variant_count = 2;
1058
+ */
1059
+ clearedVariantCount: number;
1060
+ };
1061
+
1062
+ /**
1063
+ * Describes the message experiments.v1.PreviewExperimentWinnerRolloutResponse.
1064
+ * Use `create(PreviewExperimentWinnerRolloutResponseSchema)` to create a new message.
1065
+ */
1066
+ export declare const PreviewExperimentWinnerRolloutResponseSchema: GenMessage<PreviewExperimentWinnerRolloutResponse>;
1067
+
1068
+ /**
1069
+ * Restores the snapshot captured by the most recent
1070
+ * ApplyExperimentWinner call: re-applies previous default variants on
1071
+ * affected records, re-binds cohort variants to their old experimentKey/
1072
+ * variantKey metadata, transitions the experiment back to PAUSED so the
1073
+ * admin can decide whether to resume or end again.
1074
+ *
1075
+ * @generated from message experiments.v1.RollbackExperimentRequest
1076
+ */
1077
+ export declare type RollbackExperimentRequest = Message<"experiments.v1.RollbackExperimentRequest"> & {
1078
+ /**
1079
+ * @generated from field: string experiment_id = 1;
1080
+ */
1081
+ experimentId: string;
1082
+ };
1083
+
1084
+ /**
1085
+ * Describes the message experiments.v1.RollbackExperimentRequest.
1086
+ * Use `create(RollbackExperimentRequestSchema)` to create a new message.
1087
+ */
1088
+ export declare const RollbackExperimentRequestSchema: GenMessage<RollbackExperimentRequest>;
1089
+
1090
+ /**
1091
+ * @generated from message experiments.v1.RollbackExperimentResponse
1092
+ */
1093
+ export declare type RollbackExperimentResponse = Message<"experiments.v1.RollbackExperimentResponse"> & {
1094
+ /**
1095
+ * @generated from field: experiments.v1.Experiment experiment = 1;
1096
+ */
1097
+ experiment?: Experiment | undefined;
1098
+
1099
+ /**
1100
+ * @generated from field: int32 restored_record_count = 2;
1101
+ */
1102
+ restoredRecordCount: number;
1103
+
1104
+ /**
1105
+ * @generated from field: int32 restored_variant_count = 3;
1106
+ */
1107
+ restoredVariantCount: number;
1108
+ };
1109
+
1110
+ /**
1111
+ * Describes the message experiments.v1.RollbackExperimentResponse.
1112
+ * Use `create(RollbackExperimentResponseSchema)` to create a new message.
1113
+ */
1114
+ export declare const RollbackExperimentResponseSchema: GenMessage<RollbackExperimentResponse>;
1115
+
969
1116
  /**
970
1117
  * Reads assignment rows for the given identity. Exactly one of customer_id
971
1118
  * or viewer_key must be set — symmetric with RecordConversionInput. Both
@@ -1268,6 +1415,22 @@ export declare const ExperimentsService: GenService<{
1268
1415
  input: typeof ApplyExperimentWinnerRequestSchema;
1269
1416
  output: typeof ApplyExperimentWinnerResponseSchema;
1270
1417
  },
1418
+ /**
1419
+ * @generated from rpc experiments.v1.ExperimentsService.PreviewExperimentWinnerRollout
1420
+ */
1421
+ previewExperimentWinnerRollout: {
1422
+ methodKind: "unary";
1423
+ input: typeof PreviewExperimentWinnerRolloutRequestSchema;
1424
+ output: typeof PreviewExperimentWinnerRolloutResponseSchema;
1425
+ },
1426
+ /**
1427
+ * @generated from rpc experiments.v1.ExperimentsService.RollbackExperiment
1428
+ */
1429
+ rollbackExperiment: {
1430
+ methodKind: "unary";
1431
+ input: typeof RollbackExperimentRequestSchema;
1432
+ output: typeof RollbackExperimentResponseSchema;
1433
+ },
1271
1434
  /**
1272
1435
  * Stats.
1273
1436
  *
@@ -10,7 +10,7 @@ import { file_expressions_v1_expressions } from "../../expressions/v1/expression
10
10
  * Describes the file experiments/v1/experiments.proto.
11
11
  */
12
12
  export const file_experiments_v1_experiments = /*@__PURE__*/
13
- fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIpUGCgpFeHBlcmltZW50EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESMAoGc3RhdHVzGAogASgOMiAuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXR1cxIRCglpc19hY3RpdmUYCyABKAgSNgoJdGFyZ2V0aW5nGBQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZxIXCg9jb250cm9sX3BlcmNlbnQYFSABKAUSMwoIdmFyaWFudHMYFiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIeChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGBcgASgJEjMKCnN0YXJ0X2RhdGUYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLQoHbWV0cmljcxgjIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIrCgVnb2FscxgkIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIRCgl0ZW5hbnRfaWQYKCABKAkSEgoKcHJvamVjdF9pZBgpIAEoCRIXCgpjcmVhdGVkX2J5GC0gASgJSAWIAQESFwoKdXBkYXRlZF9ieRguIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCCgoIX21ldHJpY3NCCAoGX2dvYWxzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5ItQDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESEwoLdmFyaWFudF9rZXkYBCABKAkSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSFgoOZXhwZXJpbWVudF9rZXkYBiABKAkSFwoKdmlld2VyX2tleRgHIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5Qg0KC19leHBpcmVzX2F0IkUKFUV4cGVyaW1lbnREZWNsYXJhdGlvbhIWCg5leHBlcmltZW50X2tleRgBIAEoCRIUCgx2YXJpYW50X2tleXMYAiADKAkipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSKLBAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARIrCgVnb2FscxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIICgZfZ29hbHMiSgoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiIKFEdldEV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIkcKFUdldEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIoChlHZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJMChpHZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCKfAQoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBI1CgZzdGF0dXMYASABKA4yIC5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHVzSACIAQESFgoJaXNfYWN0aXZlGAIgASgISAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCDAoKX2lzX2FjdGl2ZSJZChdMaXN0RXhwZXJpbWVudHNSZXNwb25zZRIvCgtleHBlcmltZW50cxgBIAMoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQSDQoFdG90YWwYAiABKAUimAQKF1VwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEjsKCXRhcmdldGluZxgEIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmdIAogBARIcCg9jb250cm9sX3BlcmNlbnQYBSABKAVIA4gBARIzCgh2YXJpYW50cxgGIAMoCzIhLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRWYXJpYW50EjMKCnN0YXJ0X2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESMQoIZW5kX2RhdGUYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIwoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgJIAEoCUgGiAEBEisKBWdvYWxzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfdGFyZ2V0aW5nQhIKEF9jb250cm9sX3BlcmNlbnRCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQhkKF19hc3NpZ25tZW50X3BlcnNpc3RlbmNlQggKBl9nb2FscyJKChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiJQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoWU3RhcnRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ii8KFlBhdXNlRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdQYXVzZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIwChdSZXN1bWVFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkoKGFJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCItChRFbmRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkcKFUVuZEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIyChlHZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiTAoaR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USLgoFc3RhdHMYASABKAsyHy5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHMinAEKHEZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC3ZhcmlhbnRfa2V5GAMgASgJEhcKCnZpZXdlcl9rZXkYBCABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiWQodRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USOAoKYXNzaWdubWVudBgBIAEoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IowBCiFSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiNQoiUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlEKHEFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkiTwodQXBwbHlFeHBlcmltZW50V2lubmVyUmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiaQoVR2V0QXNzaWdubWVudHNSZXF1ZXN0EhgKC2N1c3RvbWVyX2lkGAEgASgJSACIAQESFwoKdmlld2VyX2tleRgCIAEoCUgBiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleSJTChZHZXRBc3NpZ25tZW50c1Jlc3BvbnNlEjkKC2Fzc2lnbm1lbnRzGAEgAygLMiQuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudEFzc2lnbm1lbnQiIwohTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXF1ZXN0ImEKIkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVzcG9uc2USOwoMZGVjbGFyYXRpb25zGAEgAygLMiUuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudERlY2xhcmF0aW9uIoIBChZSZXNvbHZlRXhwb3N1cmVSZXF1ZXN0EhYKDmV4cGVyaW1lbnRfa2V5GAEgASgJEhgKC2N1c3RvbWVyX2lkGAIgASgJSACIAQESFwoKdmlld2VyX2tleRgDIAEoCUgBiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleSKkAQoXUmVzb2x2ZUV4cG9zdXJlUmVzcG9uc2USFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgppc19leHBvc2VkGAQgASgIEhkKEWFzc2lnbm1lbnRfbWV0aG9kGAUgASgJEhkKEWlzX25ld19hc3NpZ25tZW50GAYgASgIKrABChBFeHBlcmltZW50U3RhdHVzEiEKHUVYUEVSSU1FTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXRVhQRVJJTUVOVF9TVEFUVVNfRFJBRlQQARIdChlFWFBFUklNRU5UX1NUQVRVU19SVU5OSU5HEAISHAoYRVhQRVJJTUVOVF9TVEFUVVNfUEFVU0VEEAMSHwobRVhQRVJJTUVOVF9TVEFUVVNfQ09NUExFVEVEEAQyrw4KEkV4cGVyaW1lbnRzU2VydmljZRJcCg1HZXRFeHBlcmltZW50EiQuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFJlcXVlc3QaJS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50UmVzcG9uc2USawoSR2V0RXhwZXJpbWVudEJ5S2V5EikuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudEJ5S2V5UmVxdWVzdBoqLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRCeUtleVJlc3BvbnNlEmIKD0xpc3RFeHBlcmltZW50cxImLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50c1JlcXVlc3QaJy5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudHNSZXNwb25zZRJlChBDcmVhdGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5DcmVhdGVFeHBlcmltZW50UmVzcG9uc2USZQoQVXBkYXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLlVwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlEmUKEERlbGV0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5EZWxldGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLkRlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZRJiCg9TdGFydEV4cGVyaW1lbnQSJi5leHBlcmltZW50cy52MS5TdGFydEV4cGVyaW1lbnRSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuU3RhcnRFeHBlcmltZW50UmVzcG9uc2USYgoPUGF1c2VFeHBlcmltZW50EiYuZXhwZXJpbWVudHMudjEuUGF1c2VFeHBlcmltZW50UmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlBhdXNlRXhwZXJpbWVudFJlc3BvbnNlEmUKEFJlc3VtZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5SZXN1bWVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLlJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRJcCg1FbmRFeHBlcmltZW50EiQuZXhwZXJpbWVudHMudjEuRW5kRXhwZXJpbWVudFJlcXVlc3QaJS5leHBlcmltZW50cy52MS5FbmRFeHBlcmltZW50UmVzcG9uc2USdAoVQXBwbHlFeHBlcmltZW50V2lubmVyEiwuZXhwZXJpbWVudHMudjEuQXBwbHlFeHBlcmltZW50V2lubmVyUmVxdWVzdBotLmV4cGVyaW1lbnRzLnYxLkFwcGx5RXhwZXJpbWVudFdpbm5lclJlc3BvbnNlEmsKEkdldEV4cGVyaW1lbnRTdGF0cxIpLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRTdGF0c1JlcXVlc3QaKi5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50U3RhdHNSZXNwb25zZRJ0ChVGb3JjZUFzc2lnbkV4cGVyaW1lbnQSLC5leHBlcmltZW50cy52MS5Gb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXF1ZXN0Gi0uZXhwZXJpbWVudHMudjEuRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USgwEKGlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50EjEuZXhwZXJpbWVudHMudjEuUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXF1ZXN0GjIuZXhwZXJpbWVudHMudjEuUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRJfCg5HZXRBc3NpZ25tZW50cxIlLmV4cGVyaW1lbnRzLnYxLkdldEFzc2lnbm1lbnRzUmVxdWVzdBomLmV4cGVyaW1lbnRzLnYxLkdldEFzc2lnbm1lbnRzUmVzcG9uc2USYgoPUmVzb2x2ZUV4cG9zdXJlEiYuZXhwZXJpbWVudHMudjEuUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlJlc29sdmVFeHBvc3VyZVJlc3BvbnNlEoMBChpMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9ucxIxLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVxdWVzdBoyLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVzcG9uc2VCQ1pBZ2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2V4cGVyaW1lbnRzL3YxO2V4cGVyaW1lbnRzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIpUGCgpFeHBlcmltZW50EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESMAoGc3RhdHVzGAogASgOMiAuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXR1cxIRCglpc19hY3RpdmUYCyABKAgSNgoJdGFyZ2V0aW5nGBQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZxIXCg9jb250cm9sX3BlcmNlbnQYFSABKAUSMwoIdmFyaWFudHMYFiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIeChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGBcgASgJEjMKCnN0YXJ0X2RhdGUYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLQoHbWV0cmljcxgjIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIrCgVnb2FscxgkIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIRCgl0ZW5hbnRfaWQYKCABKAkSEgoKcHJvamVjdF9pZBgpIAEoCRIXCgpjcmVhdGVkX2J5GC0gASgJSAWIAQESFwoKdXBkYXRlZF9ieRguIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCCgoIX21ldHJpY3NCCAoGX2dvYWxzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5ItQDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESEwoLdmFyaWFudF9rZXkYBCABKAkSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSFgoOZXhwZXJpbWVudF9rZXkYBiABKAkSFwoKdmlld2VyX2tleRgHIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5Qg0KC19leHBpcmVzX2F0IkUKFUV4cGVyaW1lbnREZWNsYXJhdGlvbhIWCg5leHBlcmltZW50X2tleRgBIAEoCRIUCgx2YXJpYW50X2tleXMYAiADKAkipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSKLBAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARIrCgVnb2FscxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIICgZfZ29hbHMiSgoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiIKFEdldEV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIkcKFUdldEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIoChlHZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJMChpHZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCKfAQoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBI1CgZzdGF0dXMYASABKA4yIC5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHVzSACIAQESFgoJaXNfYWN0aXZlGAIgASgISAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCDAoKX2lzX2FjdGl2ZSJZChdMaXN0RXhwZXJpbWVudHNSZXNwb25zZRIvCgtleHBlcmltZW50cxgBIAMoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQSDQoFdG90YWwYAiABKAUimAQKF1VwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEjsKCXRhcmdldGluZxgEIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmdIAogBARIcCg9jb250cm9sX3BlcmNlbnQYBSABKAVIA4gBARIzCgh2YXJpYW50cxgGIAMoCzIhLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRWYXJpYW50EjMKCnN0YXJ0X2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESMQoIZW5kX2RhdGUYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIwoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgJIAEoCUgGiAEBEisKBWdvYWxzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfdGFyZ2V0aW5nQhIKEF9jb250cm9sX3BlcmNlbnRCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQhkKF19hc3NpZ25tZW50X3BlcnNpc3RlbmNlQggKBl9nb2FscyJKChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiJQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoWU3RhcnRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ii8KFlBhdXNlRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdQYXVzZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIwChdSZXN1bWVFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkoKGFJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCItChRFbmRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkcKFUVuZEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIyChlHZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiTAoaR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USLgoFc3RhdHMYASABKAsyHy5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHMinAEKHEZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC3ZhcmlhbnRfa2V5GAMgASgJEhcKCnZpZXdlcl9rZXkYBCABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiWQodRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USOAoKYXNzaWdubWVudBgBIAEoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IowBCiFSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiNQoiUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlEKHEFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkijQEKHUFwcGx5RXhwZXJpbWVudFdpbm5lclJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Eh0KFWFmZmVjdGVkX3JlY29yZF9jb3VudBgCIAEoBRIdChVjbGVhcmVkX3ZhcmlhbnRfY291bnQYAyABKAUiWgolUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJEhoKEndpbm5lcl92YXJpYW50X2tleRgCIAEoCSJnCg5BZmZlY3RlZFJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSIgoaY3VycmVudF9kZWZhdWx0X3ZhcmlhbnRfaWQYAiABKAkSHgoWbmV3X2RlZmF1bHRfdmFyaWFudF9pZBgDIAEoCSKBAQomUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVzcG9uc2USOAoQYWZmZWN0ZWRfcmVjb3JkcxgBIAMoCzIeLmV4cGVyaW1lbnRzLnYxLkFmZmVjdGVkUmVjb3JkEh0KFWNsZWFyZWRfdmFyaWFudF9jb3VudBgCIAEoBSIyChlSb2xsYmFja0V4cGVyaW1lbnRSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiiwEKGlJvbGxiYWNrRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Eh0KFXJlc3RvcmVkX3JlY29yZF9jb3VudBgCIAEoBRIeChZyZXN0b3JlZF92YXJpYW50X2NvdW50GAMgASgFImkKFUdldEFzc2lnbm1lbnRzUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAiABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiUwoWR2V0QXNzaWdubWVudHNSZXNwb25zZRI5Cgthc3NpZ25tZW50cxgBIAMoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IiMKIUxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVxdWVzdCJhCiJMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1Jlc3BvbnNlEjsKDGRlY2xhcmF0aW9ucxgBIAMoCzIlLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnREZWNsYXJhdGlvbiKCAQoWUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBIWCg5leHBlcmltZW50X2tleRgBIAEoCRIYCgtjdXN0b21lcl9pZBgCIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkipAEKF1Jlc29sdmVFeHBvc3VyZVJlc3BvbnNlEhYKDmV4cGVyaW1lbnRfa2V5GAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJEhIKCmlzX2NvbnRyb2wYAyABKAgSEgoKaXNfZXhwb3NlZBgEIAEoCBIZChFhc3NpZ25tZW50X21ldGhvZBgFIAEoCRIZChFpc19uZXdfYXNzaWdubWVudBgGIAEoCCqwAQoQRXhwZXJpbWVudFN0YXR1cxIhCh1FWFBFUklNRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF0VYUEVSSU1FTlRfU1RBVFVTX0RSQUZUEAESHQoZRVhQRVJJTUVOVF9TVEFUVVNfUlVOTklORxACEhwKGEVYUEVSSU1FTlRfU1RBVFVTX1BBVVNFRBADEh8KG0VYUEVSSU1FTlRfU1RBVFVTX0NPTVBMRVRFRBAEMq4QChJFeHBlcmltZW50c1NlcnZpY2USXAoNR2V0RXhwZXJpbWVudBIkLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRSZXF1ZXN0GiUuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFJlc3BvbnNlEmsKEkdldEV4cGVyaW1lbnRCeUtleRIpLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRCeUtleVJlcXVlc3QaKi5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRJiCg9MaXN0RXhwZXJpbWVudHMSJi5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudHNSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuTGlzdEV4cGVyaW1lbnRzUmVzcG9uc2USZQoQQ3JlYXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLkNyZWF0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEmUKEFVwZGF0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5VcGRhdGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLlVwZGF0ZUV4cGVyaW1lbnRSZXNwb25zZRJlChBEZWxldGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5EZWxldGVFeHBlcmltZW50UmVzcG9uc2USYgoPU3RhcnRFeHBlcmltZW50EiYuZXhwZXJpbWVudHMudjEuU3RhcnRFeHBlcmltZW50UmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlN0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEmIKD1BhdXNlRXhwZXJpbWVudBImLmV4cGVyaW1lbnRzLnYxLlBhdXNlRXhwZXJpbWVudFJlcXVlc3QaJy5leHBlcmltZW50cy52MS5QYXVzZUV4cGVyaW1lbnRSZXNwb25zZRJlChBSZXN1bWVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuUmVzdW1lRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5SZXN1bWVFeHBlcmltZW50UmVzcG9uc2USXAoNRW5kRXhwZXJpbWVudBIkLmV4cGVyaW1lbnRzLnYxLkVuZEV4cGVyaW1lbnRSZXF1ZXN0GiUuZXhwZXJpbWVudHMudjEuRW5kRXhwZXJpbWVudFJlc3BvbnNlEnQKFUFwcGx5RXhwZXJpbWVudFdpbm5lchIsLmV4cGVyaW1lbnRzLnYxLkFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QaLS5leHBlcmltZW50cy52MS5BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXNwb25zZRKPAQoeUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0EjUuZXhwZXJpbWVudHMudjEuUHJldmlld0V4cGVyaW1lbnRXaW5uZXJSb2xsb3V0UmVxdWVzdBo2LmV4cGVyaW1lbnRzLnYxLlByZXZpZXdFeHBlcmltZW50V2lubmVyUm9sbG91dFJlc3BvbnNlEmsKElJvbGxiYWNrRXhwZXJpbWVudBIpLmV4cGVyaW1lbnRzLnYxLlJvbGxiYWNrRXhwZXJpbWVudFJlcXVlc3QaKi5leHBlcmltZW50cy52MS5Sb2xsYmFja0V4cGVyaW1lbnRSZXNwb25zZRJrChJHZXRFeHBlcmltZW50U3RhdHMSKS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0GiouZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USdAoVRm9yY2VBc3NpZ25FeHBlcmltZW50EiwuZXhwZXJpbWVudHMudjEuRm9yY2VBc3NpZ25FeHBlcmltZW50UmVxdWVzdBotLmV4cGVyaW1lbnRzLnYxLkZvcmNlQXNzaWduRXhwZXJpbWVudFJlc3BvbnNlEoMBChpSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudBIxLmV4cGVyaW1lbnRzLnYxLlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVxdWVzdBoyLmV4cGVyaW1lbnRzLnYxLlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50UmVzcG9uc2USXwoOR2V0QXNzaWdubWVudHMSJS5leHBlcmltZW50cy52MS5HZXRBc3NpZ25tZW50c1JlcXVlc3QaJi5leHBlcmltZW50cy52MS5HZXRBc3NpZ25tZW50c1Jlc3BvbnNlEmIKD1Jlc29sdmVFeHBvc3VyZRImLmV4cGVyaW1lbnRzLnYxLlJlc29sdmVFeHBvc3VyZVJlcXVlc3QaJy5leHBlcmltZW50cy52MS5SZXNvbHZlRXhwb3N1cmVSZXNwb25zZRKDAQoaTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnMSMS5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1JlcXVlc3QaMi5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudERlY2xhcmF0aW9uc1Jlc3BvbnNlQkNaQWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9leHBlcmltZW50cy92MTtleHBlcmltZW50c3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message experiments.v1.ExperimentTargeting.
@@ -257,47 +257,82 @@ export const ApplyExperimentWinnerRequestSchema = /*@__PURE__*/
257
257
  export const ApplyExperimentWinnerResponseSchema = /*@__PURE__*/
258
258
  messageDesc(file_experiments_v1_experiments, 34);
259
259
 
260
+ /**
261
+ * Describes the message experiments.v1.PreviewExperimentWinnerRolloutRequest.
262
+ * Use `create(PreviewExperimentWinnerRolloutRequestSchema)` to create a new message.
263
+ */
264
+ export const PreviewExperimentWinnerRolloutRequestSchema = /*@__PURE__*/
265
+ messageDesc(file_experiments_v1_experiments, 35);
266
+
267
+ /**
268
+ * Describes the message experiments.v1.AffectedRecord.
269
+ * Use `create(AffectedRecordSchema)` to create a new message.
270
+ */
271
+ export const AffectedRecordSchema = /*@__PURE__*/
272
+ messageDesc(file_experiments_v1_experiments, 36);
273
+
274
+ /**
275
+ * Describes the message experiments.v1.PreviewExperimentWinnerRolloutResponse.
276
+ * Use `create(PreviewExperimentWinnerRolloutResponseSchema)` to create a new message.
277
+ */
278
+ export const PreviewExperimentWinnerRolloutResponseSchema = /*@__PURE__*/
279
+ messageDesc(file_experiments_v1_experiments, 37);
280
+
281
+ /**
282
+ * Describes the message experiments.v1.RollbackExperimentRequest.
283
+ * Use `create(RollbackExperimentRequestSchema)` to create a new message.
284
+ */
285
+ export const RollbackExperimentRequestSchema = /*@__PURE__*/
286
+ messageDesc(file_experiments_v1_experiments, 38);
287
+
288
+ /**
289
+ * Describes the message experiments.v1.RollbackExperimentResponse.
290
+ * Use `create(RollbackExperimentResponseSchema)` to create a new message.
291
+ */
292
+ export const RollbackExperimentResponseSchema = /*@__PURE__*/
293
+ messageDesc(file_experiments_v1_experiments, 39);
294
+
260
295
  /**
261
296
  * Describes the message experiments.v1.GetAssignmentsRequest.
262
297
  * Use `create(GetAssignmentsRequestSchema)` to create a new message.
263
298
  */
264
299
  export const GetAssignmentsRequestSchema = /*@__PURE__*/
265
- messageDesc(file_experiments_v1_experiments, 35);
300
+ messageDesc(file_experiments_v1_experiments, 40);
266
301
 
267
302
  /**
268
303
  * Describes the message experiments.v1.GetAssignmentsResponse.
269
304
  * Use `create(GetAssignmentsResponseSchema)` to create a new message.
270
305
  */
271
306
  export const GetAssignmentsResponseSchema = /*@__PURE__*/
272
- messageDesc(file_experiments_v1_experiments, 36);
307
+ messageDesc(file_experiments_v1_experiments, 41);
273
308
 
274
309
  /**
275
310
  * Describes the message experiments.v1.ListExperimentDeclarationsRequest.
276
311
  * Use `create(ListExperimentDeclarationsRequestSchema)` to create a new message.
277
312
  */
278
313
  export const ListExperimentDeclarationsRequestSchema = /*@__PURE__*/
279
- messageDesc(file_experiments_v1_experiments, 37);
314
+ messageDesc(file_experiments_v1_experiments, 42);
280
315
 
281
316
  /**
282
317
  * Describes the message experiments.v1.ListExperimentDeclarationsResponse.
283
318
  * Use `create(ListExperimentDeclarationsResponseSchema)` to create a new message.
284
319
  */
285
320
  export const ListExperimentDeclarationsResponseSchema = /*@__PURE__*/
286
- messageDesc(file_experiments_v1_experiments, 38);
321
+ messageDesc(file_experiments_v1_experiments, 43);
287
322
 
288
323
  /**
289
324
  * Describes the message experiments.v1.ResolveExposureRequest.
290
325
  * Use `create(ResolveExposureRequestSchema)` to create a new message.
291
326
  */
292
327
  export const ResolveExposureRequestSchema = /*@__PURE__*/
293
- messageDesc(file_experiments_v1_experiments, 39);
328
+ messageDesc(file_experiments_v1_experiments, 44);
294
329
 
295
330
  /**
296
331
  * Describes the message experiments.v1.ResolveExposureResponse.
297
332
  * Use `create(ResolveExposureResponseSchema)` to create a new message.
298
333
  */
299
334
  export const ResolveExposureResponseSchema = /*@__PURE__*/
300
- messageDesc(file_experiments_v1_experiments, 40);
335
+ messageDesc(file_experiments_v1_experiments, 45);
301
336
 
302
337
  /**
303
338
  * Describes the enum experiments.v1.ExperimentStatus.