@projectqai/proto 0.0.29 → 0.0.30

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/device.ts CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  EntityChangeRequestSchema,
11
11
  ConfigurableComponentSchema,
12
12
  ConfigurableState,
13
+ ConfigurationComponentSchema,
13
14
  EntityChange,
14
15
  LifetimeSchema,
15
16
  DeviceComponentSchema,
@@ -147,6 +148,9 @@ export interface AttachOptions<S extends SchemaProperties> {
147
148
  device?: { category?: string };
148
149
  icon?: string;
149
150
  schema: S;
151
+ /** Default config to push on attach so the plugin starts without manual
152
+ * configuration. Pushed with fresh=0 so it won't overwrite an existing config. */
153
+ config?: InferConfig<S>;
150
154
  init?: (client: WorldClient, config: InferConfig<S>, signal: AbortSignal) => Promise<void>;
151
155
  run: (client: WorldClient, config: InferConfig<S>, signal: AbortSignal) => Promise<void>;
152
156
  health?: () => HealthResult | Promise<HealthResult>;
@@ -197,6 +201,21 @@ export async function attach<S extends SchemaProperties>(opts: AttachOptions<S>)
197
201
 
198
202
  // Register entity without device — device is managed by heartbeat
199
203
  await push(client, create(EntitySchema, { ...entity, device: undefined }));
204
+
205
+ // Push a default config if specified, with fresh=0 so it won't
206
+ // overwrite an existing config that has a newer timestamp.
207
+ if (opts.config !== undefined) {
208
+ await push(client, create(EntitySchema, {
209
+ id: entityID,
210
+ config: create(ConfigurationComponentSchema, {
211
+ value: opts.config as Record<string, unknown>,
212
+ }),
213
+ lifetime: create(LifetimeSchema, {
214
+ fresh: create(TimestampSchema, { seconds: 0n }),
215
+ }),
216
+ }));
217
+ }
218
+
200
219
  console.log(`attached entity=${entityID}`);
201
220
 
202
221
  // Heartbeat
@@ -49,6 +49,11 @@ export declare type Entity = Message<"world.Entity"> & {
49
49
  */
50
50
  lease?: Lease;
51
51
 
52
+ /**
53
+ * @generated from field: optional world.Routing routing = 7;
54
+ */
55
+ routing?: Routing;
56
+
52
57
  /**
53
58
  * @generated from field: optional world.GeoSpatialComponent geo = 11;
54
59
  */
@@ -195,6 +200,11 @@ export declare type Entity = Message<"world.Entity"> & {
195
200
  * @generated from field: optional world.TargetPoseComponent target_pose = 62;
196
201
  */
197
202
  targetPose?: TargetPoseComponent;
203
+
204
+ /**
205
+ * @generated from field: optional world.ChatComponent chat = 39;
206
+ */
207
+ chat?: ChatComponent;
198
208
  };
199
209
 
200
210
  /**
@@ -221,6 +231,11 @@ export declare type Controller = Message<"world.Controller"> & {
221
231
  * @generated from field: optional string node = 2;
222
232
  */
223
233
  node?: string;
234
+
235
+ /**
236
+ * @generated from field: optional string origin = 3;
237
+ */
238
+ origin?: string;
224
239
  };
225
240
 
226
241
  /**
@@ -281,6 +296,14 @@ export declare type Lifetime = Message<"world.Lifetime"> & {
281
296
  * @generated from field: optional google.protobuf.Timestamp fresh = 3;
282
297
  */
283
298
  fresh?: Timestamp;
299
+
300
+ /**
301
+ * per-component lifetime metadata
302
+ * key is the proto field number of the component in Entity (e.g. 11 for geo)
303
+ *
304
+ * @generated from field: map<int32, world.Lifetime> components = 4;
305
+ */
306
+ components: { [key: number]: Lifetime };
284
307
  };
285
308
 
286
309
  /**
@@ -289,6 +312,43 @@ export declare type Lifetime = Message<"world.Lifetime"> & {
289
312
  */
290
313
  export declare const LifetimeSchema: GenMessage<Lifetime>;
291
314
 
315
+ /**
316
+ * @generated from message world.Channel
317
+ */
318
+ export declare type Channel = Message<"world.Channel"> & {
319
+ /**
320
+ * empty string is the default channel
321
+ *
322
+ * @generated from field: string name = 1;
323
+ */
324
+ name: string;
325
+ };
326
+
327
+ /**
328
+ * Describes the message world.Channel.
329
+ * Use `create(ChannelSchema)` to create a new message.
330
+ */
331
+ export declare const ChannelSchema: GenMessage<Channel>;
332
+
333
+ /**
334
+ * Presence of this component marks the entity as routable to other nodes
335
+ * or downstream consumers. Entities without Routing stay local.
336
+ *
337
+ * @generated from message world.Routing
338
+ */
339
+ export declare type Routing = Message<"world.Routing"> & {
340
+ /**
341
+ * @generated from field: repeated world.Channel channels = 1;
342
+ */
343
+ channels: Channel[];
344
+ };
345
+
346
+ /**
347
+ * Describes the message world.Routing.
348
+ * Use `create(RoutingSchema)` to create a new message.
349
+ */
350
+ export declare const RoutingSchema: GenMessage<Routing>;
351
+
292
352
  /**
293
353
  * @generated from message world.GeoSpatialComponent
294
354
  */
@@ -1695,6 +1755,11 @@ export declare type DeviceComponent = Message<"world.DeviceComponent"> & {
1695
1755
  * @generated from field: optional world.LPWANDevice lpwan = 25;
1696
1756
  */
1697
1757
  lpwan?: LPWANDevice;
1758
+
1759
+ /**
1760
+ * @generated from field: optional world.MeshtasticDevice meshtastic = 26;
1761
+ */
1762
+ meshtastic?: MeshtasticDevice;
1698
1763
  };
1699
1764
 
1700
1765
  /**
@@ -1852,6 +1917,42 @@ export declare type SerialDevice = Message<"world.SerialDevice"> & {
1852
1917
  */
1853
1918
  export declare const SerialDeviceSchema: GenMessage<SerialDevice>;
1854
1919
 
1920
+ /**
1921
+ * @generated from message world.MeshtasticDevice
1922
+ */
1923
+ export declare type MeshtasticDevice = Message<"world.MeshtasticDevice"> & {
1924
+ /**
1925
+ * @generated from field: optional uint32 node_num = 1;
1926
+ */
1927
+ nodeNum?: number;
1928
+
1929
+ /**
1930
+ * @generated from field: optional string long_name = 2;
1931
+ */
1932
+ longName?: string;
1933
+
1934
+ /**
1935
+ * @generated from field: optional string short_name = 3;
1936
+ */
1937
+ shortName?: string;
1938
+
1939
+ /**
1940
+ * @generated from field: optional string hardware_model = 4;
1941
+ */
1942
+ hardwareModel?: string;
1943
+
1944
+ /**
1945
+ * @generated from field: optional bytes public_key = 5;
1946
+ */
1947
+ publicKey?: Uint8Array;
1948
+ };
1949
+
1950
+ /**
1951
+ * Describes the message world.MeshtasticDevice.
1952
+ * Use `create(MeshtasticDeviceSchema)` to create a new message.
1953
+ */
1954
+ export declare const MeshtasticDeviceSchema: GenMessage<MeshtasticDevice>;
1955
+
1855
1956
  /**
1856
1957
  * @generated from message world.LPWANDevice
1857
1958
  */
@@ -1905,6 +2006,38 @@ export declare type ConfigurationComponent = Message<"world.ConfigurationCompone
1905
2006
  */
1906
2007
  export declare const ConfigurationComponentSchema: GenMessage<ConfigurationComponent>;
1907
2008
 
2009
+ /**
2010
+ * @generated from message world.ChatComponent
2011
+ */
2012
+ export declare type ChatComponent = Message<"world.ChatComponent"> & {
2013
+ /**
2014
+ * entity pointer: sender entity ID
2015
+ *
2016
+ * @generated from field: optional string sender = 1;
2017
+ */
2018
+ sender?: string;
2019
+
2020
+ /**
2021
+ * entity pointer: recipient entity ID (if known)
2022
+ *
2023
+ * @generated from field: optional string to = 3;
2024
+ */
2025
+ to?: string;
2026
+
2027
+ /**
2028
+ * message text
2029
+ *
2030
+ * @generated from field: string message = 4;
2031
+ */
2032
+ message: string;
2033
+ };
2034
+
2035
+ /**
2036
+ * Describes the message world.ChatComponent.
2037
+ * Use `create(ChatComponentSchema)` to create a new message.
2038
+ */
2039
+ export declare const ChatComponentSchema: GenMessage<ChatComponent>;
2040
+
1908
2041
  /**
1909
2042
  * @generated from message world.EntityFilter
1910
2043
  */
@@ -1957,6 +2090,13 @@ export declare type EntityFilter = Message<"world.EntityFilter"> & {
1957
2090
  */
1958
2091
  mission?: MissionFilter;
1959
2092
 
2093
+ /**
2094
+ * entity must be routed to this channel
2095
+ *
2096
+ * @generated from field: optional world.ChannelFilter channel = 10;
2097
+ */
2098
+ channel?: ChannelFilter;
2099
+
1960
2100
  /**
1961
2101
  * @generated from field: optional world.DeviceFilter device = 50;
1962
2102
  */
@@ -2133,6 +2273,24 @@ export declare type ConfigurationFilter = Message<"world.ConfigurationFilter"> &
2133
2273
  */
2134
2274
  export declare const ConfigurationFilterSchema: GenMessage<ConfigurationFilter>;
2135
2275
 
2276
+ /**
2277
+ * @generated from message world.ChannelFilter
2278
+ */
2279
+ export declare type ChannelFilter = Message<"world.ChannelFilter"> & {
2280
+ /**
2281
+ * match entities routed to this channel name
2282
+ *
2283
+ * @generated from field: string name = 1;
2284
+ */
2285
+ name: string;
2286
+ };
2287
+
2288
+ /**
2289
+ * Describes the message world.ChannelFilter.
2290
+ * Use `create(ChannelFilterSchema)` to create a new message.
2291
+ */
2292
+ export declare const ChannelFilterSchema: GenMessage<ChannelFilter>;
2293
+
2136
2294
  /**
2137
2295
  * @generated from message world.WatchBehavior
2138
2296
  */
@@ -2964,6 +3122,204 @@ export enum EntityChange {
2964
3122
  */
2965
3123
  export declare const EntityChangeSchema: GenEnum<EntityChange>;
2966
3124
 
3125
+ /**
3126
+ * Proto field numbers of Entity component fields.
3127
+ * Used in EntityFilter.component and Lifetime.components.
3128
+ *
3129
+ * @generated from enum world.EntityComponent
3130
+ */
3131
+ export enum EntityComponent {
3132
+ /**
3133
+ * @generated from enum value: EntityComponentUnspecified = 0;
3134
+ */
3135
+ EntityComponentUnspecified = 0,
3136
+
3137
+ /**
3138
+ * @generated from enum value: EntityComponentLabel = 2;
3139
+ */
3140
+ EntityComponentLabel = 2,
3141
+
3142
+ /**
3143
+ * @generated from enum value: EntityComponentController = 3;
3144
+ */
3145
+ EntityComponentController = 3,
3146
+
3147
+ /**
3148
+ * @generated from enum value: EntityComponentLifetime = 4;
3149
+ */
3150
+ EntityComponentLifetime = 4,
3151
+
3152
+ /**
3153
+ * @generated from enum value: EntityComponentPriority = 5;
3154
+ */
3155
+ EntityComponentPriority = 5,
3156
+
3157
+ /**
3158
+ * @generated from enum value: EntityComponentLease = 6;
3159
+ */
3160
+ EntityComponentLease = 6,
3161
+
3162
+ /**
3163
+ * @generated from enum value: EntityComponentRouting = 7;
3164
+ */
3165
+ EntityComponentRouting = 7,
3166
+
3167
+ /**
3168
+ * @generated from enum value: EntityComponentGeo = 11;
3169
+ */
3170
+ EntityComponentGeo = 11,
3171
+
3172
+ /**
3173
+ * @generated from enum value: EntityComponentSymbol = 12;
3174
+ */
3175
+ EntityComponentSymbol = 12,
3176
+
3177
+ /**
3178
+ * @generated from enum value: EntityComponentCamera = 15;
3179
+ */
3180
+ EntityComponentCamera = 15,
3181
+
3182
+ /**
3183
+ * @generated from enum value: EntityComponentDetection = 16;
3184
+ */
3185
+ EntityComponentDetection = 16,
3186
+
3187
+ /**
3188
+ * @generated from enum value: EntityComponentBearing = 17;
3189
+ */
3190
+ EntityComponentBearing = 17,
3191
+
3192
+ /**
3193
+ * @generated from enum value: EntityComponentTrack = 21;
3194
+ */
3195
+ EntityComponentTrack = 21,
3196
+
3197
+ /**
3198
+ * @generated from enum value: EntityComponentLocator = 22;
3199
+ */
3200
+ EntityComponentLocator = 22,
3201
+
3202
+ /**
3203
+ * @generated from enum value: EntityComponentTaskable = 23;
3204
+ */
3205
+ EntityComponentTaskable = 23,
3206
+
3207
+ /**
3208
+ * @generated from enum value: EntityComponentKinematics = 24;
3209
+ */
3210
+ EntityComponentKinematics = 24,
3211
+
3212
+ /**
3213
+ * @generated from enum value: EntityComponentShape = 25;
3214
+ */
3215
+ EntityComponentShape = 25,
3216
+
3217
+ /**
3218
+ * @generated from enum value: EntityComponentClassification = 26;
3219
+ */
3220
+ EntityComponentClassification = 26,
3221
+
3222
+ /**
3223
+ * @generated from enum value: EntityComponentTransponder = 27;
3224
+ */
3225
+ EntityComponentTransponder = 27,
3226
+
3227
+ /**
3228
+ * @generated from enum value: EntityComponentAdministrative = 28;
3229
+ */
3230
+ EntityComponentAdministrative = 28,
3231
+
3232
+ /**
3233
+ * @generated from enum value: EntityComponentLocalShape = 29;
3234
+ */
3235
+ EntityComponentLocalShape = 29,
3236
+
3237
+ /**
3238
+ * @generated from enum value: EntityComponentOrientation = 30;
3239
+ */
3240
+ EntityComponentOrientation = 30,
3241
+
3242
+ /**
3243
+ * @generated from enum value: EntityComponentMission = 31;
3244
+ */
3245
+ EntityComponentMission = 31,
3246
+
3247
+ /**
3248
+ * @generated from enum value: EntityComponentLink = 32;
3249
+ */
3250
+ EntityComponentLink = 32,
3251
+
3252
+ /**
3253
+ * @generated from enum value: EntityComponentPower = 33;
3254
+ */
3255
+ EntityComponentPower = 33,
3256
+
3257
+ /**
3258
+ * @generated from enum value: EntityComponentNavigation = 34;
3259
+ */
3260
+ EntityComponentNavigation = 34,
3261
+
3262
+ /**
3263
+ * @generated from enum value: EntityComponentCapture = 35;
3264
+ */
3265
+ EntityComponentCapture = 35,
3266
+
3267
+ /**
3268
+ * @generated from enum value: EntityComponentMetric = 36;
3269
+ */
3270
+ EntityComponentMetric = 36,
3271
+
3272
+ /**
3273
+ * @generated from enum value: EntityComponentSensor = 37;
3274
+ */
3275
+ EntityComponentSensor = 37,
3276
+
3277
+ /**
3278
+ * @generated from enum value: EntityComponentPose = 38;
3279
+ */
3280
+ EntityComponentPose = 38,
3281
+
3282
+ /**
3283
+ * @generated from enum value: EntityComponentChat = 39;
3284
+ */
3285
+ EntityComponentChat = 39,
3286
+
3287
+ /**
3288
+ * @generated from enum value: EntityComponentTaskExecution = 41;
3289
+ */
3290
+ EntityComponentTaskExecution = 41,
3291
+
3292
+ /**
3293
+ * @generated from enum value: EntityComponentDevice = 50;
3294
+ */
3295
+ EntityComponentDevice = 50,
3296
+
3297
+ /**
3298
+ * @generated from enum value: EntityComponentConfig = 51;
3299
+ */
3300
+ EntityComponentConfig = 51,
3301
+
3302
+ /**
3303
+ * @generated from enum value: EntityComponentConfigurable = 52;
3304
+ */
3305
+ EntityComponentConfigurable = 52,
3306
+
3307
+ /**
3308
+ * @generated from enum value: EntityComponentInteractivity = 60;
3309
+ */
3310
+ EntityComponentInteractivity = 60,
3311
+
3312
+ /**
3313
+ * @generated from enum value: EntityComponentTargetPose = 62;
3314
+ */
3315
+ EntityComponentTargetPose = 62,
3316
+ }
3317
+
3318
+ /**
3319
+ * Describes the enum world.EntityComponent.
3320
+ */
3321
+ export declare const EntityComponentSchema: GenEnum<EntityComponent>;
3322
+
2967
3323
  /**
2968
3324
  * @generated from enum world.TaskStatus
2969
3325
  */
package/dist/world_pb.js CHANGED
@@ -11,7 +11,7 @@ import { file_metrics } from "./metrics_pb.js";
11
11
  * Describes the file world.proto.
12
12
  */
13
13
  export const file_world = /*@__PURE__*/
14
- fileDesc("Cgt3b3JsZC5wcm90bxIFd29ybGQiwRAKBkVudGl0eRIKCgJpZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEioKCmNvbnRyb2xsZXIYAyABKAsyES53b3JsZC5Db250cm9sbGVySAGIAQESJgoIbGlmZXRpbWUYBCABKAsyDy53b3JsZC5MaWZldGltZUgCiAEBEiYKCHByaW9yaXR5GAUgASgOMg8ud29ybGQuUHJpb3JpdHlIA4gBARIgCgVsZWFzZRgGIAEoCzIMLndvcmxkLkxlYXNlSASIAQESLAoDZ2VvGAsgASgLMhoud29ybGQuR2VvU3BhdGlhbENvbXBvbmVudEgFiAEBEisKBnN5bWJvbBgMIAEoCzIWLndvcmxkLlN5bWJvbENvbXBvbmVudEgGiAEBEisKBmNhbWVyYRgPIAEoCzIWLndvcmxkLkNhbWVyYUNvbXBvbmVudEgHiAEBEjEKCWRldGVjdGlvbhgQIAEoCzIZLndvcmxkLkRldGVjdGlvbkNvbXBvbmVudEgIiAEBEi0KB2JlYXJpbmcYESABKAsyFy53b3JsZC5CZWFyaW5nQ29tcG9uZW50SAmIAQESKQoFdHJhY2sYFSABKAsyFS53b3JsZC5UcmFja0NvbXBvbmVudEgKiAEBEi0KB2xvY2F0b3IYFiABKAsyFy53b3JsZC5Mb2NhdG9yQ29tcG9uZW50SAuIAQESMwoKa2luZW1hdGljcxgYIAEoCzIaLndvcmxkLktpbmVtYXRpY3NDb21wb25lbnRIDIgBARIsCgVzaGFwZRgZIAEoCzIYLndvcmxkLkdlb1NoYXBlQ29tcG9uZW50SA2IAQESOwoOY2xhc3NpZmljYXRpb24YGiABKAsyHi53b3JsZC5DbGFzc2lmaWNhdGlvbkNvbXBvbmVudEgOiAEBEjUKC3RyYW5zcG9uZGVyGBsgASgLMhsud29ybGQuVHJhbnNwb25kZXJDb21wb25lbnRID4gBARI7Cg5hZG1pbmlzdHJhdGl2ZRgcIAEoCzIeLndvcmxkLkFkbWluaXN0cmF0aXZlQ29tcG9uZW50SBCIAQESNQoLb3JpZW50YXRpb24YHiABKAsyGy53b3JsZC5PcmllbnRhdGlvbkNvbXBvbmVudEgRiAEBEjMKCm5hdmlnYXRpb24YIiABKAsyGi53b3JsZC5OYXZpZ2F0aW9uQ29tcG9uZW50SBKIAQESKQoFcG93ZXIYISABKAsyFS53b3JsZC5Qb3dlckNvbXBvbmVudEgTiAEBEi0KB2NhcHR1cmUYIyABKAsyFy53b3JsZC5DYXB0dXJlQ29tcG9uZW50SBSIAQESLwoIdGFza2FibGUYFyABKAsyGC53b3JsZC5UYXNrYWJsZUNvbXBvbmVudEgViAEBEisKBmRldmljZRgyIAEoCzIWLndvcmxkLkRldmljZUNvbXBvbmVudEgWiAEBEjIKBmNvbmZpZxgzIAEoCzIdLndvcmxkLkNvbmZpZ3VyYXRpb25Db21wb25lbnRIF4gBARI3Cgxjb25maWd1cmFibGUYNCABKAsyHC53b3JsZC5Db25maWd1cmFibGVDb21wb25lbnRIGIgBARItCgdtaXNzaW9uGB8gASgLMhcud29ybGQuTWlzc2lvbkNvbXBvbmVudEgZiAEBEicKBGxpbmsYICABKAsyFC53b3JsZC5MaW5rQ29tcG9uZW50SBqIAQESKwoGbWV0cmljGCQgASgLMhYud29ybGQuTWV0cmljQ29tcG9uZW50SBuIAQESKwoGc2Vuc29yGCUgASgLMhYud29ybGQuU2Vuc29yQ29tcG9uZW50SByIAQESNAoLbG9jYWxfc2hhcGUYHSABKAsyGi53b3JsZC5Mb2NhbFNoYXBlQ29tcG9uZW50SB2IAQESJwoEcG9zZRgmIAEoCzIULndvcmxkLlBvc2VDb21wb25lbnRIHogBARI6Cg50YXNrX2V4ZWN1dGlvbhgpIAEoCzIdLndvcmxkLlRhc2tFeGVjdXRpb25Db21wb25lbnRIH4gBARI5Cg1pbnRlcmFjdGl2aXR5GDwgASgLMh0ud29ybGQuSW50ZXJhY3Rpdml0eUNvbXBvbmVudEggiAEBEjQKC3RhcmdldF9wb3NlGD4gASgLMhoud29ybGQuVGFyZ2V0UG9zZUNvbXBvbmVudEghiAEBQggKBl9sYWJlbEINCgtfY29udHJvbGxlckILCglfbGlmZXRpbWVCCwoJX3ByaW9yaXR5QggKBl9sZWFzZUIGCgRfZ2VvQgkKB19zeW1ib2xCCQoHX2NhbWVyYUIMCgpfZGV0ZWN0aW9uQgoKCF9iZWFyaW5nQggKBl90cmFja0IKCghfbG9jYXRvckINCgtfa2luZW1hdGljc0IICgZfc2hhcGVCEQoPX2NsYXNzaWZpY2F0aW9uQg4KDF90cmFuc3BvbmRlckIRCg9fYWRtaW5pc3RyYXRpdmVCDgoMX29yaWVudGF0aW9uQg0KC19uYXZpZ2F0aW9uQggKBl9wb3dlckIKCghfY2FwdHVyZUILCglfdGFza2FibGVCCQoHX2RldmljZUIJCgdfY29uZmlnQg8KDV9jb25maWd1cmFibGVCCgoIX21pc3Npb25CBwoFX2xpbmtCCQoHX21ldHJpY0IJCgdfc2Vuc29yQg4KDF9sb2NhbF9zaGFwZUIHCgVfcG9zZUIRCg9fdGFza19leGVjdXRpb25CEAoOX2ludGVyYWN0aXZpdHlCDgoMX3RhcmdldF9wb3NlSgQIBxAISgQICBAJSgQICRAKSgQIChALIkAKCkNvbnRyb2xsZXISDwoCaWQYASABKAlIAIgBARIRCgRub2RlGAIgASgJSAGIAQFCBQoDX2lkQgcKBV9ub2RlIlkKBUxlYXNlEhIKCmNvbnRyb2xsZXIYASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyK2AQoITGlmZXRpbWUSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgVmcmVzaBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIHCgVfZnJvbUIICgZfdW50aWxCCAoGX2ZyZXNoIp8BChNHZW9TcGF0aWFsQ29tcG9uZW50EhEKCWxvbmdpdHVkZRgBIAEoARIQCghsYXRpdHVkZRgCIAEoARIVCghhbHRpdHVkZRgDIAEoAUgAiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAGIAQFCCwoJX2FsdGl0dWRlQg0KC19jb3ZhcmlhbmNlIiYKD1N5bWJvbENvbXBvbmVudBITCgttaWxTdGQyNTI1QxgBIAEoCSJiChZJbnRlcmFjdGl2aXR5Q29tcG9uZW50EhEKBGljb24YASABKAlIAIgBARIaCg1yZWZlcmVuY2VfdXJsGAMgASgJSAGIAQFCBwoFX2ljb25CEAoOX3JlZmVyZW5jZV91cmwiygEKC01lZGlhU3RyZWFtEg0KBWxhYmVsGAEgASgJEgsKA3VybBgCIAEoCRIsCghwcm90b2NvbBgDIAEoDjIaLndvcmxkLk1lZGlhU3RyZWFtUHJvdG9jb2wSJAoEcm9sZRgJIAEoDjIWLndvcmxkLk1lZGlhU3RyZWFtUm9sZRINCgVjb2RlYxgKIAEoCRISCgV3aWR0aBgLIAEoBUgAiAEBEhMKBmhlaWdodBgMIAEoBUgBiAEBQggKBl93aWR0aEIJCgdfaGVpZ2h0Io4CCg9DYW1lcmFDb21wb25lbnQSIwoHc3RyZWFtcxgBIAMoCzISLndvcmxkLk1lZGlhU3RyZWFtEhgKC2ZvY2FsX3BvaW50GAIgASgJSACIAQESEAoDZm92GAMgASgBSAGIAQESFgoJcmFuZ2VfbWluGAQgASgBSAKIAQESFgoJcmFuZ2VfbWF4GAUgASgBSAOIAQESFQoIZm92X3dpZGUYBiABKAFIBIgBARIVCghmb3ZfdGVsZRgHIAEoAUgFiAEBQg4KDF9mb2NhbF9wb2ludEIGCgRfZm92QgwKCl9yYW5nZV9taW5CDAoKX3JhbmdlX21heEILCglfZm92X3dpZGVCCwoJX2Zvdl90ZWxlIsABChJEZXRlY3Rpb25Db21wb25lbnQSHQoQZGV0ZWN0b3JFbnRpdHlJZBgBIAEoCUgAiAEBEhsKDmNsYXNzaWZpY2F0aW9uGAIgASgJSAGIAQESNQoMbGFzdE1lYXN1cmVkGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhMKEV9kZXRlY3RvckVudGl0eUlkQhEKD19jbGFzc2lmaWNhdGlvbkIPCg1fbGFzdE1lYXN1cmVkIloKEEJlYXJpbmdDb21wb25lbnQSFAoHYXppbXV0aBgBIAEoAUgAiAEBEhYKCWVsZXZhdGlvbhgCIAEoAUgBiAEBQgoKCF9hemltdXRoQgwKCl9lbGV2YXRpb24iIwoPU2Vuc29yQ29tcG9uZW50EhAKCGNvdmVyYWdlGAIgAygJIjgKClF1YXRlcm5pb24SCQoBeBgBIAEoARIJCgF5GAIgASgBEgkKAXoYAyABKAESCQoBdxgEIAEoASKuAQoQQ292YXJpYW5jZU1hdHJpeBIQCgNteHgYASABKAFIAIgBARIQCgNteHkYAiABKAFIAYgBARIQCgNteHoYAyABKAFIAogBARIQCgNteXkYBCABKAFIA4gBARIQCgNteXoYBSABKAFIBIgBARIQCgNtenoYBiABKAFIBYgBAUIGCgRfbXh4QgYKBF9teHlCBgoEX214ekIGCgRfbXl5QgYKBF9teXpCBgoEX216eiLMAQoPQ2FydGVzaWFuT2Zmc2V0Eg4KBmVhc3RfbRgBIAEoARIPCgdub3J0aF9tGAIgASgBEhEKBHVwX20YAyABKAFIAIgBARIwCgpjb3ZhcmlhbmNlGAQgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgBiAEBEisKC29yaWVudGF0aW9uGAUgASgLMhEud29ybGQuUXVhdGVybmlvbkgCiAEBQgcKBV91cF9tQg0KC19jb3ZhcmlhbmNlQg4KDF9vcmllbnRhdGlvbiLgAQoLUG9sYXJPZmZzZXQSDwoHYXppbXV0aBgBIAEoARIWCgllbGV2YXRpb24YAiABKAFIAIgBARISCgVyYW5nZRgDIAEoAUgBiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAKIAQESKwoLb3JpZW50YXRpb24YBSABKAsyES53b3JsZC5RdWF0ZXJuaW9uSAOIAQFCDAoKX2VsZXZhdGlvbkIICgZfcmFuZ2VCDQoLX2NvdmFyaWFuY2VCDgoMX29yaWVudGF0aW9uInsKDVBvc2VDb21wb25lbnQSDgoGcGFyZW50GAEgASgJEisKCWNhcnRlc2lhbhgCIAEoCzIWLndvcmxkLkNhcnRlc2lhbk9mZnNldEgAEiMKBXBvbGFyGAMgASgLMhIud29ybGQuUG9sYXJPZmZzZXRIAEIICgZvZmZzZXQicQoTVGFyZ2V0UG9zZUNvbXBvbmVudBIrCgljYXJ0ZXNpYW4YASABKAsyFi53b3JsZC5DYXJ0ZXNpYW5PZmZzZXRIABIjCgVwb2xhchgCIAEoCzISLndvcmxkLlBvbGFyT2Zmc2V0SABCCAoGb2Zmc2V0IkoKD0FuZ3VsYXJWZWxvY2l0eRIRCglyb2xsX3JhdGUYASABKAESEgoKcGl0Y2hfcmF0ZRgCIAEoARIQCgh5YXdfcmF0ZRgDIAEoASJ/ChRPcmllbnRhdGlvbkNvbXBvbmVudBImCgtvcmllbnRhdGlvbhgBIAEoCzIRLndvcmxkLlF1YXRlcm5pb24SMAoKY292YXJpYW5jZRgCIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAIgBAUINCgtfY292YXJpYW5jZSKQAQoOVHJhY2tDb21wb25lbnQSFAoHdHJhY2tlchgBIAEoCUgAiAEBEhQKB2hpc3RvcnkYAiABKAlIAYgBARIXCgpwcmVkaWN0aW9uGAMgASgJSAKIAQESEgoKZGV0ZWN0aW9ucxgEIAMoCUIKCghfdHJhY2tlckIKCghfaGlzdG9yeUINCgtfcHJlZGljdGlvbiIrChBMb2NhdG9yQ29tcG9uZW50EhcKD2xvY2F0ZWRFbnRpdHlJZBgBIAEoCSI1Cg9UYXNrYWJsZUNvbnRleHQSFQoIZW50aXR5SWQYASABKAlIAIgBAUILCglfZW50aXR5SWQiNgoQVGFza2FibGVBc3NpZ25lZRIVCghlbnRpdHlJZBgBIAEoCUgAiAEBQgsKCV9lbnRpdHlJZCL1AQoRVGFza2FibGVDb21wb25lbnQSFQoIcmVzZXJ2ZWQYASABKAlIAIgBARISCgVsYWJlbBgCIAEoCUgBiAEBEicKB2NvbnRleHQYAyADKAsyFi53b3JsZC5UYXNrYWJsZUNvbnRleHQSKQoIYXNzaWduZWUYBCADKAsyFy53b3JsZC5UYXNrYWJsZUFzc2lnbmVlEicKBnNjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSIQoEbW9kZRgGIAEoDjITLndvcmxkLlRhc2thYmxlTW9kZUILCglfcmVzZXJ2ZWRCCAoGX2xhYmVsItUBChZUYXNrRXhlY3V0aW9uQ29tcG9uZW50EgwKBHRhc2sYASABKAkSMAoKcGFyYW1ldGVycxgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIoCgVzdGF0ZRgDIAEoDjIZLndvcmxkLlRhc2tFeGVjdXRpb25TdGF0ZRITCgZyZWFzb24YBCABKAlIAYgBARIVCghwcmlvcml0eRgFIAEoDUgCiAEBQg0KC19wYXJhbWV0ZXJzQgkKB19yZWFzb25CCwoJX3ByaW9yaXR5IqIBCg1LaW5lbWF0aWNzRW51EhEKBGVhc3QYASABKAFIAIgBARISCgVub3J0aBgCIAEoAUgBiAEBEg8KAnVwGAMgASgBSAKIAQESMAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIA4gBAUIHCgVfZWFzdEIICgZfbm9ydGhCBQoDX3VwQg0KC19jb3ZhcmlhbmNlIu8BChNLaW5lbWF0aWNzQ29tcG9uZW50Ei4KC3ZlbG9jaXR5RW51GAEgASgLMhQud29ybGQuS2luZW1hdGljc0VudUgAiAEBEjIKD2FjY2VsZXJhdGlvbkVudRgCIAEoCzIULndvcmxkLktpbmVtYXRpY3NFbnVIAYgBARI4ChNhbmd1bGFyVmVsb2NpdHlCb2R5GAMgASgLMhYud29ybGQuQW5ndWxhclZlbG9jaXR5SAKIAQFCDgoMX3ZlbG9jaXR5RW51QhIKEF9hY2NlbGVyYXRpb25FbnVCFgoUX2FuZ3VsYXJWZWxvY2l0eUJvZHkiQgoIR2VvbWV0cnkSDwoDd2tiGAEgASgMQgIYARIlCgZwbGFuYXIYAiABKAsyFS53b3JsZC5QbGFuYXJHZW9tZXRyeSJIChFHZW9TaGFwZUNvbXBvbmVudBImCghnZW9tZXRyeRgBIAEoCzIPLndvcmxkLkdlb21ldHJ5SACIAQFCCwoJX2dlb21ldHJ5ImQKE0xvY2FsU2hhcGVDb21wb25lbnQSEwoLcmVsYXRpdmVfdG8YAiABKAkSKwoIZ2VvbWV0cnkYASABKAsyFC53b3JsZC5Mb2NhbEdlb21ldHJ5SACIAQFCCwoJX2dlb21ldHJ5IqgBChdDbGFzc2lmaWNhdGlvbkNvbXBvbmVudBI8CglkaW1lbnNpb24YASABKA4yJC53b3JsZC5DbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkgAiAEBEjQKCGlkZW50aXR5GAIgASgOMh0ud29ybGQuQ2xhc3NpZmljYXRpb25JZGVudGl0eUgBiAEBQgwKCl9kaW1lbnNpb25CCwoJX2lkZW50aXR5IpQBCg5UcmFuc3BvbmRlckFJUxIRCgRtbXNpGAEgASgNSACIAQESEAoDaW1vGAIgASgNSAGIAQESFQoIY2FsbHNpZ24YAyABKAlIAogBARIYCgt2ZXNzZWxfbmFtZRgEIAEoCUgDiAEBQgcKBV9tbXNpQgYKBF9pbW9CCwoJX2NhbGxzaWduQg4KDF92ZXNzZWxfbmFtZSJjCg9UcmFuc3BvbmRlckFEU0ISGQoMaWNhb19hZGRyZXNzGAEgASgNSACIAQESFgoJZmxpZ2h0X2lkGAIgASgJSAGIAQFCDwoNX2ljYW9fYWRkcmVzc0IMCgpfZmxpZ2h0X2lkInsKFFRyYW5zcG9uZGVyQ29tcG9uZW50EicKA2FpcxgBIAEoCzIVLndvcmxkLlRyYW5zcG9uZGVyQUlTSACIAQESKQoEYWRzYhgCIAEoCzIWLndvcmxkLlRyYW5zcG9uZGVyQURTQkgBiAEBQgYKBF9haXNCBwoFX2Fkc2Ii2wIKF0FkbWluaXN0cmF0aXZlQ29tcG9uZW50Eg8KAmlkGAEgASgJSACIAQESEQoEZmxhZxgCIAEoCUgBiAEBEhIKBW93bmVyGAMgASgJSAKIAQESGQoMbWFudWZhY3R1cmVyGAQgASgJSAOIAQESEgoFbW9kZWwYBSABKAlIBIgBARIXCgp5ZWFyX2J1aWx0GAYgASgNSAWIAQESFQoIbGVuZ3RoX20YByABKAJIBogBARIXCgp0b25uYWdlX2d0GAggASgCSAeIAQESHAoPZW5naW5lX3Bvd2VyX2t3GAkgASgCSAiIAQFCBQoDX2lkQgcKBV9mbGFnQggKBl9vd25lckIPCg1fbWFudWZhY3R1cmVyQggKBl9tb2RlbEINCgtfeWVhcl9idWlsdEILCglfbGVuZ3RoX21CDQoLX3Rvbm5hZ2VfZ3RCEgoQX2VuZ2luZV9wb3dlcl9rdyLwAQoTTmF2aWdhdGlvbkNvbXBvbmVudBIoCgRtb2RlGAEgASgOMhUud29ybGQuTmF2aWdhdGlvbk1vZGVIAIgBARISCgVhcm1lZBgCIAEoCEgBiAEBEhYKCWVtZXJnZW5jeRgDIAEoCEgCiAEBEh0KEHdheXBvaW50X2N1cnJlbnQYBCABKA1IA4gBARIbCg53YXlwb2ludF90b3RhbBgFIAEoDUgEiAEBQgcKBV9tb2RlQggKBl9hcm1lZEIMCgpfZW1lcmdlbmN5QhMKEV93YXlwb2ludF9jdXJyZW50QhEKD193YXlwb2ludF90b3RhbCKtAQoQTWlzc2lvbkNvbXBvbmVudBIPCgdtZW1iZXJzGAEgAygJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESGAoLZGVzdGluYXRpb24YAyABKAlIAYgBARIsCgNldGEYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQg4KDF9kZXN0aW5hdGlvbkIGCgRfZXRhIsQCCg1MaW5rQ29tcG9uZW50EiYKBnN0YXR1cxgBIAEoDjIRLndvcmxkLkxpbmtTdGF0dXNIAIgBARIVCghyc3NpX2RibRgCIAEoEUgBiAEBEhMKBnNucl9kYhgDIAEoEUgCiAEBEhAKA3ZpYRgFIAEoCUgDiAEBEhwKD2xhc3RfbGF0ZW5jeV9tcxgGIAEoDUgEiAEBEhsKDmF2Z19sYXRlbmN5X21zGAcgASgNSAWIAQESMgoJbGFzdF9zZWVuGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQgkKB19zdGF0dXNCCwoJX3Jzc2lfZGJtQgkKB19zbnJfZGJCBgoEX3ZpYUISChBfbGFzdF9sYXRlbmN5X21zQhEKD19hdmdfbGF0ZW5jeV9tc0IMCgpfbGFzdF9zZWVuIuwBChBDYXB0dXJlQ29tcG9uZW50EhQKB3BheWxvYWQYASABKAxIAIgBARIRCgRwb3J0GAIgASgNSAGIAQESGQoMY29udGVudF90eXBlGAMgASgJSAKIAQESGAoLY2FwdHVyZWRfYnkYBCABKAlIA4gBARI0CgtjYXB0dXJlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBAUIKCghfcGF5bG9hZEIHCgVfcG9ydEIPCg1fY29udGVudF90eXBlQg4KDF9jYXB0dXJlZF9ieUIOCgxfY2FwdHVyZWRfYXQirAEKDlBvd2VyQ29tcG9uZW50EiUKGGJhdHRlcnlfY2hhcmdlX3JlbWFpbmluZxgBIAEoAkgAiAEBEhQKB3ZvbHRhZ2UYAiABKAJIAYgBARIeChFyZW1haW5pbmdfc2Vjb25kcxgDIAEoDUgCiAEBQhsKGV9iYXR0ZXJ5X2NoYXJnZV9yZW1haW5pbmdCCgoIX3ZvbHRhZ2VCFAoSX3JlbWFpbmluZ19zZWNvbmRzIjEKEURldmljZUNsYXNzT3B0aW9uEg0KBWNsYXNzGAEgASgJEg0KBWxhYmVsGAIgASgJIuoCChVDb25maWd1cmFibGVDb21wb25lbnQSJwoGc2NoZW1hGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJwoFc3RhdGUYAyABKA4yGC53b3JsZC5Db25maWd1cmFibGVTdGF0ZRISCgVlcnJvchgEIAEoCUgAiAEBEhIKBWxhYmVsGAUgASgJSAGIAQESFwoPYXBwbGllZF92ZXJzaW9uGAYgASgEEjoKGHN1cHBvcnRlZF9kZXZpY2VfY2xhc3NlcxgHIAMoCzIYLndvcmxkLkRldmljZUNsYXNzT3B0aW9uEjUKDHNjaGVkdWxlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIICgZfZXJyb3JCCAoGX2xhYmVsQg8KDV9zY2hlZHVsZWRfYXQipwQKD0RldmljZUNvbXBvbmVudBITCgZwYXJlbnQYASABKAlIAIgBARITCgtjb21wb3NpdGlvbhgCIAMoCRIfChJ1bmlxdWVfaGFyZHdhcmVfaWQYBCABKAlIAYgBARIhCgVzdGF0ZRgGIAEoDjISLndvcmxkLkRldmljZVN0YXRlEhIKBWVycm9yGAcgASgJSAKIAQESEgoFY2xhc3MYCiABKAlIA4gBARIVCghjYXRlZ29yeRgNIAEoCUgEiAEBEiQKBG5vZGUYFCABKAsyES53b3JsZC5Ob2RlRGV2aWNlSAWIAQESIgoDdXNiGBUgASgLMhAud29ybGQuVXNiRGV2aWNlSAaIAQESIAoCaXAYFiABKAsyDy53b3JsZC5JcERldmljZUgHiAEBEigKBnNlcmlhbBgXIAEoCzITLndvcmxkLlNlcmlhbERldmljZUgIiAEBEiwKCGV0aGVybmV0GBggASgLMhUud29ybGQuRXRoZXJuZXREZXZpY2VICYgBARImCgVscHdhbhgZIAEoCzISLndvcmxkLkxQV0FORGV2aWNlSAqIAQFCCQoHX3BhcmVudEIVChNfdW5pcXVlX2hhcmR3YXJlX2lkQggKBl9lcnJvckIICgZfY2xhc3NCCwoJX2NhdGVnb3J5QgcKBV9ub2RlQgYKBF91c2JCBQoDX2lwQgkKB19zZXJpYWxCCwoJX2V0aGVybmV0QggKBl9scHdhbiKGAQoKTm9kZURldmljZRIVCghob3N0bmFtZRgBIAEoCUgAiAEBEg8KAm9zGAIgASgJSAGIAQESEQoEYXJjaBgDIAEoCUgCiAEBEhQKB251bV9jcHUYBCABKA1IA4gBAUILCglfaG9zdG5hbWVCBQoDX29zQgcKBV9hcmNoQgoKCF9udW1fY3B1IvkCCglVc2JEZXZpY2USFgoJdmVuZG9yX2lkGAEgASgNSACIAQESFwoKcHJvZHVjdF9pZBgCIAEoDUgBiAEBEhkKDGRldmljZV9jbGFzcxgDIAEoDUgCiAEBEhwKD2RldmljZV9zdWJjbGFzcxgEIAEoDUgDiAEBEhwKD2RldmljZV9wcm90b2NvbBgFIAEoDUgEiAEBEh4KEW1hbnVmYWN0dXJlcl9uYW1lGAYgASgJSAWIAQESGQoMcHJvZHVjdF9uYW1lGAcgASgJSAaIAQESGgoNc2VyaWFsX251bWJlchgIIAEoCUgHiAEBQgwKCl92ZW5kb3JfaWRCDQoLX3Byb2R1Y3RfaWRCDwoNX2RldmljZV9jbGFzc0ISChBfZGV2aWNlX3N1YmNsYXNzQhIKEF9kZXZpY2VfcHJvdG9jb2xCFAoSX21hbnVmYWN0dXJlcl9uYW1lQg8KDV9wcm9kdWN0X25hbWVCEAoOX3NlcmlhbF9udW1iZXIiQgoISXBEZXZpY2USEQoEaG9zdBgBIAEoCUgAiAEBEhEKBHBvcnQYAiABKA1IAYgBAUIHCgVfaG9zdEIHCgVfcG9ydCJaCg5FdGhlcm5ldERldmljZRIYCgttYWNfYWRkcmVzcxgBIAEoCUgAiAEBEhMKBnZlbmRvchgCIAEoCUgBiAEBQg4KDF9tYWNfYWRkcmVzc0IJCgdfdmVuZG9yIlAKDFNlcmlhbERldmljZRIRCgRwYXRoGAEgASgJSACIAQESFgoJYmF1ZF9yYXRlGAIgASgNSAGIAQFCBwoFX3BhdGhCDAoKX2JhdWRfcmF0ZSJJCgtMUFdBTkRldmljZRIQCgNldWkYASABKAlIAIgBARIUCgdhZGRyZXNzGAIgASgJSAGIAQFCBgoEX2V1aUIKCghfYWRkcmVzcyJRChZDb25maWd1cmF0aW9uQ29tcG9uZW50EiYKBXZhbHVlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgd2ZXJzaW9uGAUgASgEIp0ECgxFbnRpdHlGaWx0ZXISDwoCaWQYASABKAlIAIgBARISCgVsYWJlbBgCIAEoCUgBiAEBEiIKA2dlbxgDIAEoCzIQLndvcmxkLkdlb0ZpbHRlckgCiAEBEiwKCHRhc2thYmxlGAQgASgLMhUud29ybGQuVGFza2FibGVGaWx0ZXJIA4gBARIRCgljb21wb25lbnQYBSADKA0SMAoKY29udHJvbGxlchgHIAEoCzIXLndvcmxkLkNvbnRyb2xsZXJGaWx0ZXJIBIgBARImCgV0cmFjaxgIIAEoCzISLndvcmxkLlRyYWNrRmlsdGVySAWIAQESKgoHbWlzc2lvbhgJIAEoCzIULndvcmxkLk1pc3Npb25GaWx0ZXJIBogBARIoCgZkZXZpY2UYMiABKAsyEy53b3JsZC5EZXZpY2VGaWx0ZXJIB4gBARIvCgZjb25maWcYMyABKAsyGi53b3JsZC5Db25maWd1cmF0aW9uRmlsdGVySAiIAQESHwoCb3IYZCADKAsyEy53b3JsZC5FbnRpdHlGaWx0ZXISIAoDbm90GGUgASgLMhMud29ybGQuRW50aXR5RmlsdGVyQgUKA19pZEIICgZfbGFiZWxCBgoEX2dlb0ILCglfdGFza2FibGVCDQoLX2NvbnRyb2xsZXJCCAoGX3RyYWNrQgoKCF9taXNzaW9uQgkKB19kZXZpY2VCCQoHX2NvbmZpZyIqChBDb250cm9sbGVyRmlsdGVyEg8KAmlkGAEgASgJSACIAQFCBQoDX2lkIi8KC1RyYWNrRmlsdGVyEhQKB3RyYWNrZXIYASABKAlIAIgBAUIKCghfdHJhY2tlciJdCg1NaXNzaW9uRmlsdGVyEhcKCm1pc3Npb25faWQYASABKAlIAIgBARIWCgltZW1iZXJfaWQYAiABKAlIAYgBAUINCgtfbWlzc2lvbl9pZEIMCgpfbWVtYmVyX2lkIocBCg5UYXNrYWJsZUZpbHRlchIsCgdjb250ZXh0GAEgASgLMhYud29ybGQuVGFza2FibGVDb250ZXh0SACIAQESLgoIYXNzaWduZWUYAiABKAsyFy53b3JsZC5UYXNrYWJsZUFzc2lnbmVlSAGIAQFCCgoIX2NvbnRleHRCCwoJX2Fzc2lnbmVlIk4KCUdlb0ZpbHRlchIjCghnZW9tZXRyeRgBIAEoCzIPLndvcmxkLkdlb21ldHJ5SAASFQoLZ2VvRW50aXR5SWQYAiABKAlIAEIFCgNnZW8iZgoMRGV2aWNlRmlsdGVyEhMKBnBhcmVudBgBIAEoCUgAiAEBEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZCIVChNDb25maWd1cmF0aW9uRmlsdGVyIrQBCg1XYXRjaEJlaGF2aW9yEhgKC21heF9yYXRlX2h6GAEgASgCSACIAQESKgoMbWluX3ByaW9yaXR5GAMgASgOMg8ud29ybGQuUHJpb3JpdHlIAYgBARIiChVrZWVwYWxpdmVfaW50ZXJ2YWxfbXMYBCABKA1IAogBAUIOCgxfbWF4X3JhdGVfaHpCDwoNX21pbl9wcmlvcml0eUIYChZfa2VlcGFsaXZlX2ludGVydmFsX21zInwKE0xpc3RFbnRpdGllc1JlcXVlc3QSIwoGZmlsdGVyGAIgASgLMhMud29ybGQuRW50aXR5RmlsdGVyEiwKCWJlaGF2aW91chgEIAEoCzIULndvcmxkLldhdGNoQmVoYXZpb3JIAIgBAUIMCgpfYmVoYXZpb3VySgQIARACIjcKFExpc3RFbnRpdGllc1Jlc3BvbnNlEh8KCGVudGl0aWVzGAEgAygLMg0ud29ybGQuRW50aXR5IloKE0VudGl0eUNoYW5nZVJlcXVlc3QSHgoHY2hhbmdlcxgBIAMoCzINLndvcmxkLkVudGl0eRIjCgxyZXBsYWNlbWVudHMYAiADKAsyDS53b3JsZC5FbnRpdHkiIQoTRXhwaXJlRW50aXR5UmVxdWVzdBIKCgJpZBgBIAEoCSIWChRFeHBpcmVFbnRpdHlSZXNwb25zZSI3ChRFbnRpdHlDaGFuZ2VSZXNwb25zZRIQCghhY2NlcHRlZBgBIAEoCBINCgVkZWJ1ZxgCIAEoCSJSChFFbnRpdHlDaGFuZ2VFdmVudBIdCgZlbnRpdHkYASABKAsyDS53b3JsZC5FbnRpdHkSHgoBdBgCIAEoDjITLndvcmxkLkVudGl0eUNoYW5nZSI9ChFFbnRpdHlDaGFuZ2VCYXRjaBIoCgZldmVudHMYASADKAsyGC53b3JsZC5FbnRpdHlDaGFuZ2VFdmVudCIeChBHZXRFbnRpdHlSZXF1ZXN0EgoKAmlkGAEgASgJIjIKEUdldEVudGl0eVJlc3BvbnNlEh0KBmVudGl0eRgBIAEoCzINLndvcmxkLkVudGl0eSIVChNHZXRMb2NhbE5vZGVSZXF1ZXN0IkYKFEdldExvY2FsTm9kZVJlc3BvbnNlEh0KBmVudGl0eRgBIAEoCzINLndvcmxkLkVudGl0eRIPCgdub2RlX2lkGAIgASgJIhEKD09ic2VydmVyUmVxdWVzdCJzCg1PYnNlcnZlclN0YXRlEhwKA2dlbxgBIAEoCzIPLndvcmxkLkdlb21ldHJ5EjQKC3ZpZXdIaXN0b3J5GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg4KDF92aWV3SGlzdG9yeSJGCg5SdW5UYXNrUmVxdWVzdBIQCghlbnRpdHlJZBgBIAEoCRIVCghwcmlvcml0eRgCIAEoDUgAiAEBQgsKCV9wcmlvcml0eSKDAQoPUnVuVGFza1Jlc3BvbnNlEhMKC2V4ZWN1dGlvbklkGAEgASgJEiEKBnN0YXR1cxgCIAEoDjIRLndvcmxkLlRhc2tTdGF0dXMSIAoTaHVtYW5SZWFkYWJsZVJlYXNvbhgDIAEoCUgAiAEBQhYKFF9odW1hblJlYWRhYmxlUmVhc29uKmIKCFByaW9yaXR5EhcKE1ByaW9yaXR5VW5zcGVjaWZpZWQQABITCg9Qcmlvcml0eVJvdXRpbmUQARIVChFQcmlvcml0eUltbWVkaWF0ZRACEhEKDVByaW9yaXR5Rmxhc2gQAyrsAQoTTWVkaWFTdHJlYW1Qcm90b2NvbBIiCh5NZWRpYVN0cmVhbVByb3RvY29sVW5zcGVjaWZpZWQQABIdChlNZWRpYVN0cmVhbVByb3RvY29sV2VicnRjEAESGgoWTWVkaWFTdHJlYW1Qcm90b2NvbEhscxACEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xNanBlZxADEhwKGE1lZGlhU3RyZWFtUHJvdG9jb2xJbWFnZRAEEh0KGU1lZGlhU3RyZWFtUHJvdG9jb2xJZnJhbWUQBRIbChdNZWRpYVN0cmVhbVByb3RvY29sUnRzcBAGKn8KD01lZGlhU3RyZWFtUm9sZRIeChpNZWRpYVN0cmVhbVJvbGVVbnNwZWNpZmllZBAAEhcKE01lZGlhU3RyZWFtUm9sZU1haW4QARIWChJNZWRpYVN0cmVhbVJvbGVTdWIQAhIbChdNZWRpYVN0cmVhbVJvbGVTbmFwc2hvdBADKnoKDFRhc2thYmxlTW9kZRIZChVUYXNrYWJsZU1vZGVFeGNsdXNpdmUQABIZChVUYXNrYWJsZU1vZGVSZWNvbmNpbGUQARIVChFUYXNrYWJsZU1vZGVTcGF3bhACEh0KGVRhc2thYmxlTW9kZVByaW9yaXR5UXVldWUQAyqRAQoSVGFza0V4ZWN1dGlvblN0YXRlEh0KGVRhc2tFeGVjdXRpb25TdGF0ZVBlbmRpbmcQABIdChlUYXNrRXhlY3V0aW9uU3RhdGVSdW5uaW5nEAESHwobVGFza0V4ZWN1dGlvblN0YXRlQ29tcGxldGVkEAISHAoYVGFza0V4ZWN1dGlvblN0YXRlRmFpbGVkEAMqjAIKFkNsYXNzaWZpY2F0aW9uSWRlbnRpdHkSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUludmFsaWQQABIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5UGVuZGluZxABEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlVbmtub3duEAISIAocQ2xhc3NpZmljYXRpb25JZGVudGl0eUZyaWVuZBADEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlOZXV0cmFsEAQSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eUhvc3RpbGUQBRIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5U3VzcGVjdBAGKsQCCh1DbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbhIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkludmFsaWQQABIoCiRDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblVua25vd24QARImCiJDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvblNwYWNlEAISJAogQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25BaXIQAxInCiNDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkdyb3VuZBAEEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU2VhU3VyZmFjZRAFEisKJ0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU3Vic3VyZmFjZRAGKvYBCg5OYXZpZ2F0aW9uTW9kZRIdChlOYXZpZ2F0aW9uTW9kZVVuc3BlY2lmaWVkEAASGQoVTmF2aWdhdGlvbk1vZGVQbGFubmVkEAESHAoYTmF2aWdhdGlvbk1vZGVTdGF0aW9uYXJ5EAISGgoWTmF2aWdhdGlvbk1vZGVVbmRlcndheRADEhwKGE5hdmlnYXRpb25Nb2RlQXV0b25vbW91cxAEEhgKFE5hdmlnYXRpb25Nb2RlR3VpZGVkEAUSGwoXTmF2aWdhdGlvbk1vZGVMb2l0ZXJpbmcQBhIbChdOYXZpZ2F0aW9uTW9kZVJldHVybmluZxAHKmwKCkxpbmtTdGF0dXMSGQoVTGlua1N0YXR1c1Vuc3BlY2lmaWVkEAASFwoTTGlua1N0YXR1c0Nvbm5lY3RlZBABEhYKEkxpbmtTdGF0dXNEZWdyYWRlZBACEhIKDkxpbmtTdGF0dXNMb3N0EAMqUwoLRGV2aWNlU3RhdGUSFgoSRGV2aWNlU3RhdGVQZW5kaW5nEAASFQoRRGV2aWNlU3RhdGVBY3RpdmUQARIVChFEZXZpY2VTdGF0ZUZhaWxlZBACKsoBChFDb25maWd1cmFibGVTdGF0ZRIdChlDb25maWd1cmFibGVTdGF0ZUluYWN0aXZlEAASHQoZQ29uZmlndXJhYmxlU3RhdGVTdGFydGluZxABEhsKF0NvbmZpZ3VyYWJsZVN0YXRlQWN0aXZlEAISGwoXQ29uZmlndXJhYmxlU3RhdGVGYWlsZWQQAxIdChlDb25maWd1cmFibGVTdGF0ZUNvbmZsaWN0EAQSHgoaQ29uZmlndXJhYmxlU3RhdGVTY2hlZHVsZWQQBSp1CgxFbnRpdHlDaGFuZ2USFwoTRW50aXR5Q2hhbmdlSW52YWxpZBAAEhcKE0VudGl0eUNoYW5nZVVwZGF0ZWQQARIXChNFbnRpdHlDaGFuZ2VFeHBpcmVkEAISGgoWRW50aXR5Q2hhbmdlVW5vYnNlcnZlZBADKmkKClRhc2tTdGF0dXMSFQoRVGFza1N0YXR1c0ludmFsaWQQABIVChFUYXNrU3RhdHVzUnVubmluZxABEhcKE1Rhc2tTdGF0dXNDb21wbGV0ZWQQAhIUChBUYXNrU3RhdHVzRmFpbGVkEAMy7QMKDFdvcmxkU2VydmljZRJHCgxMaXN0RW50aXRpZXMSGi53b3JsZC5MaXN0RW50aXRpZXNSZXF1ZXN0Ghsud29ybGQuTGlzdEVudGl0aWVzUmVzcG9uc2USPgoJR2V0RW50aXR5Ehcud29ybGQuR2V0RW50aXR5UmVxdWVzdBoYLndvcmxkLkdldEVudGl0eVJlc3BvbnNlEkcKDVdhdGNoRW50aXRpZXMSGi53b3JsZC5MaXN0RW50aXRpZXNSZXF1ZXN0Ghgud29ybGQuRW50aXR5Q2hhbmdlRXZlbnQwARI/CgRQdXNoEhoud29ybGQuRW50aXR5Q2hhbmdlUmVxdWVzdBobLndvcmxkLkVudGl0eUNoYW5nZVJlc3BvbnNlEkcKDEV4cGlyZUVudGl0eRIaLndvcmxkLkV4cGlyZUVudGl0eVJlcXVlc3QaGy53b3JsZC5FeHBpcmVFbnRpdHlSZXNwb25zZRJHCgxHZXRMb2NhbE5vZGUSGi53b3JsZC5HZXRMb2NhbE5vZGVSZXF1ZXN0Ghsud29ybGQuR2V0TG9jYWxOb2RlUmVzcG9uc2USOAoHUnVuVGFzaxIVLndvcmxkLlJ1blRhc2tSZXF1ZXN0GhYud29ybGQuUnVuVGFza1Jlc3BvbnNlQiBaHmdpdGh1Yi5jb20vcHJvamVjdHFhaS9wcm90by9nb2IGcHJvdG8z", [file_geometry, file_google_protobuf_struct, file_google_protobuf_timestamp, file_metrics]);
14
+ fileDesc("Cgt3b3JsZC5wcm90bxIFd29ybGQinxEKBkVudGl0eRIKCgJpZBgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEioKCmNvbnRyb2xsZXIYAyABKAsyES53b3JsZC5Db250cm9sbGVySAGIAQESJgoIbGlmZXRpbWUYBCABKAsyDy53b3JsZC5MaWZldGltZUgCiAEBEiYKCHByaW9yaXR5GAUgASgOMg8ud29ybGQuUHJpb3JpdHlIA4gBARIgCgVsZWFzZRgGIAEoCzIMLndvcmxkLkxlYXNlSASIAQESJAoHcm91dGluZxgHIAEoCzIOLndvcmxkLlJvdXRpbmdIBYgBARIsCgNnZW8YCyABKAsyGi53b3JsZC5HZW9TcGF0aWFsQ29tcG9uZW50SAaIAQESKwoGc3ltYm9sGAwgASgLMhYud29ybGQuU3ltYm9sQ29tcG9uZW50SAeIAQESKwoGY2FtZXJhGA8gASgLMhYud29ybGQuQ2FtZXJhQ29tcG9uZW50SAiIAQESMQoJZGV0ZWN0aW9uGBAgASgLMhkud29ybGQuRGV0ZWN0aW9uQ29tcG9uZW50SAmIAQESLQoHYmVhcmluZxgRIAEoCzIXLndvcmxkLkJlYXJpbmdDb21wb25lbnRICogBARIpCgV0cmFjaxgVIAEoCzIVLndvcmxkLlRyYWNrQ29tcG9uZW50SAuIAQESLQoHbG9jYXRvchgWIAEoCzIXLndvcmxkLkxvY2F0b3JDb21wb25lbnRIDIgBARIzCgpraW5lbWF0aWNzGBggASgLMhoud29ybGQuS2luZW1hdGljc0NvbXBvbmVudEgNiAEBEiwKBXNoYXBlGBkgASgLMhgud29ybGQuR2VvU2hhcGVDb21wb25lbnRIDogBARI7Cg5jbGFzc2lmaWNhdGlvbhgaIAEoCzIeLndvcmxkLkNsYXNzaWZpY2F0aW9uQ29tcG9uZW50SA+IAQESNQoLdHJhbnNwb25kZXIYGyABKAsyGy53b3JsZC5UcmFuc3BvbmRlckNvbXBvbmVudEgQiAEBEjsKDmFkbWluaXN0cmF0aXZlGBwgASgLMh4ud29ybGQuQWRtaW5pc3RyYXRpdmVDb21wb25lbnRIEYgBARI1CgtvcmllbnRhdGlvbhgeIAEoCzIbLndvcmxkLk9yaWVudGF0aW9uQ29tcG9uZW50SBKIAQESMwoKbmF2aWdhdGlvbhgiIAEoCzIaLndvcmxkLk5hdmlnYXRpb25Db21wb25lbnRIE4gBARIpCgVwb3dlchghIAEoCzIVLndvcmxkLlBvd2VyQ29tcG9uZW50SBSIAQESLQoHY2FwdHVyZRgjIAEoCzIXLndvcmxkLkNhcHR1cmVDb21wb25lbnRIFYgBARIvCgh0YXNrYWJsZRgXIAEoCzIYLndvcmxkLlRhc2thYmxlQ29tcG9uZW50SBaIAQESKwoGZGV2aWNlGDIgASgLMhYud29ybGQuRGV2aWNlQ29tcG9uZW50SBeIAQESMgoGY29uZmlnGDMgASgLMh0ud29ybGQuQ29uZmlndXJhdGlvbkNvbXBvbmVudEgYiAEBEjcKDGNvbmZpZ3VyYWJsZRg0IAEoCzIcLndvcmxkLkNvbmZpZ3VyYWJsZUNvbXBvbmVudEgZiAEBEi0KB21pc3Npb24YHyABKAsyFy53b3JsZC5NaXNzaW9uQ29tcG9uZW50SBqIAQESJwoEbGluaxggIAEoCzIULndvcmxkLkxpbmtDb21wb25lbnRIG4gBARIrCgZtZXRyaWMYJCABKAsyFi53b3JsZC5NZXRyaWNDb21wb25lbnRIHIgBARIrCgZzZW5zb3IYJSABKAsyFi53b3JsZC5TZW5zb3JDb21wb25lbnRIHYgBARI0Cgtsb2NhbF9zaGFwZRgdIAEoCzIaLndvcmxkLkxvY2FsU2hhcGVDb21wb25lbnRIHogBARInCgRwb3NlGCYgASgLMhQud29ybGQuUG9zZUNvbXBvbmVudEgfiAEBEjoKDnRhc2tfZXhlY3V0aW9uGCkgASgLMh0ud29ybGQuVGFza0V4ZWN1dGlvbkNvbXBvbmVudEggiAEBEjkKDWludGVyYWN0aXZpdHkYPCABKAsyHS53b3JsZC5JbnRlcmFjdGl2aXR5Q29tcG9uZW50SCGIAQESNAoLdGFyZ2V0X3Bvc2UYPiABKAsyGi53b3JsZC5UYXJnZXRQb3NlQ29tcG9uZW50SCKIAQESJwoEY2hhdBgnIAEoCzIULndvcmxkLkNoYXRDb21wb25lbnRII4gBAUIICgZfbGFiZWxCDQoLX2NvbnRyb2xsZXJCCwoJX2xpZmV0aW1lQgsKCV9wcmlvcml0eUIICgZfbGVhc2VCCgoIX3JvdXRpbmdCBgoEX2dlb0IJCgdfc3ltYm9sQgkKB19jYW1lcmFCDAoKX2RldGVjdGlvbkIKCghfYmVhcmluZ0IICgZfdHJhY2tCCgoIX2xvY2F0b3JCDQoLX2tpbmVtYXRpY3NCCAoGX3NoYXBlQhEKD19jbGFzc2lmaWNhdGlvbkIOCgxfdHJhbnNwb25kZXJCEQoPX2FkbWluaXN0cmF0aXZlQg4KDF9vcmllbnRhdGlvbkINCgtfbmF2aWdhdGlvbkIICgZfcG93ZXJCCgoIX2NhcHR1cmVCCwoJX3Rhc2thYmxlQgkKB19kZXZpY2VCCQoHX2NvbmZpZ0IPCg1fY29uZmlndXJhYmxlQgoKCF9taXNzaW9uQgcKBV9saW5rQgkKB19tZXRyaWNCCQoHX3NlbnNvckIOCgxfbG9jYWxfc2hhcGVCBwoFX3Bvc2VCEQoPX3Rhc2tfZXhlY3V0aW9uQhAKDl9pbnRlcmFjdGl2aXR5Qg4KDF90YXJnZXRfcG9zZUIHCgVfY2hhdEoECAgQCUoECAkQCkoECAoQCyJgCgpDb250cm9sbGVyEg8KAmlkGAEgASgJSACIAQESEQoEbm9kZRgCIAEoCUgBiAEBEhMKBm9yaWdpbhgDIAEoCUgCiAEBQgUKA19pZEIHCgVfbm9kZUIJCgdfb3JpZ2luIlkKBUxlYXNlEhIKCmNvbnRyb2xsZXIYASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAgoITGlmZXRpbWUSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIuCgVmcmVzaBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIzCgpjb21wb25lbnRzGAQgAygLMh8ud29ybGQuTGlmZXRpbWUuQ29tcG9uZW50c0VudHJ5GkIKD0NvbXBvbmVudHNFbnRyeRILCgNrZXkYASABKAUSHgoFdmFsdWUYAiABKAsyDy53b3JsZC5MaWZldGltZToCOAFCBwoFX2Zyb21CCAoGX3VudGlsQggKBl9mcmVzaCIXCgdDaGFubmVsEgwKBG5hbWUYASABKAkiKwoHUm91dGluZxIgCghjaGFubmVscxgBIAMoCzIOLndvcmxkLkNoYW5uZWwinwEKE0dlb1NwYXRpYWxDb21wb25lbnQSEQoJbG9uZ2l0dWRlGAEgASgBEhAKCGxhdGl0dWRlGAIgASgBEhUKCGFsdGl0dWRlGAMgASgBSACIAQESMAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAYgBAUILCglfYWx0aXR1ZGVCDQoLX2NvdmFyaWFuY2UiJgoPU3ltYm9sQ29tcG9uZW50EhMKC21pbFN0ZDI1MjVDGAEgASgJImIKFkludGVyYWN0aXZpdHlDb21wb25lbnQSEQoEaWNvbhgBIAEoCUgAiAEBEhoKDXJlZmVyZW5jZV91cmwYAyABKAlIAYgBAUIHCgVfaWNvbkIQCg5fcmVmZXJlbmNlX3VybCLKAQoLTWVkaWFTdHJlYW0SDQoFbGFiZWwYASABKAkSCwoDdXJsGAIgASgJEiwKCHByb3RvY29sGAMgASgOMhoud29ybGQuTWVkaWFTdHJlYW1Qcm90b2NvbBIkCgRyb2xlGAkgASgOMhYud29ybGQuTWVkaWFTdHJlYW1Sb2xlEg0KBWNvZGVjGAogASgJEhIKBXdpZHRoGAsgASgFSACIAQESEwoGaGVpZ2h0GAwgASgFSAGIAQFCCAoGX3dpZHRoQgkKB19oZWlnaHQijgIKD0NhbWVyYUNvbXBvbmVudBIjCgdzdHJlYW1zGAEgAygLMhIud29ybGQuTWVkaWFTdHJlYW0SGAoLZm9jYWxfcG9pbnQYAiABKAlIAIgBARIQCgNmb3YYAyABKAFIAYgBARIWCglyYW5nZV9taW4YBCABKAFIAogBARIWCglyYW5nZV9tYXgYBSABKAFIA4gBARIVCghmb3Zfd2lkZRgGIAEoAUgEiAEBEhUKCGZvdl90ZWxlGAcgASgBSAWIAQFCDgoMX2ZvY2FsX3BvaW50QgYKBF9mb3ZCDAoKX3JhbmdlX21pbkIMCgpfcmFuZ2VfbWF4QgsKCV9mb3Zfd2lkZUILCglfZm92X3RlbGUiwAEKEkRldGVjdGlvbkNvbXBvbmVudBIdChBkZXRlY3RvckVudGl0eUlkGAEgASgJSACIAQESGwoOY2xhc3NpZmljYXRpb24YAiABKAlIAYgBARI1CgxsYXN0TWVhc3VyZWQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEwoRX2RldGVjdG9yRW50aXR5SWRCEQoPX2NsYXNzaWZpY2F0aW9uQg8KDV9sYXN0TWVhc3VyZWQiWgoQQmVhcmluZ0NvbXBvbmVudBIUCgdhemltdXRoGAEgASgBSACIAQESFgoJZWxldmF0aW9uGAIgASgBSAGIAQFCCgoIX2F6aW11dGhCDAoKX2VsZXZhdGlvbiIjCg9TZW5zb3JDb21wb25lbnQSEAoIY292ZXJhZ2UYAiADKAkiOAoKUXVhdGVybmlvbhIJCgF4GAEgASgBEgkKAXkYAiABKAESCQoBehgDIAEoARIJCgF3GAQgASgBIq4BChBDb3ZhcmlhbmNlTWF0cml4EhAKA214eBgBIAEoAUgAiAEBEhAKA214eRgCIAEoAUgBiAEBEhAKA214ehgDIAEoAUgCiAEBEhAKA215eRgEIAEoAUgDiAEBEhAKA215ehgFIAEoAUgEiAEBEhAKA216ehgGIAEoAUgFiAEBQgYKBF9teHhCBgoEX214eUIGCgRfbXh6QgYKBF9teXlCBgoEX215ekIGCgRfbXp6IswBCg9DYXJ0ZXNpYW5PZmZzZXQSDgoGZWFzdF9tGAEgASgBEg8KB25vcnRoX20YAiABKAESEQoEdXBfbRgDIAEoAUgAiAEBEjAKCmNvdmFyaWFuY2UYBCABKAsyFy53b3JsZC5Db3ZhcmlhbmNlTWF0cml4SAGIAQESKwoLb3JpZW50YXRpb24YBSABKAsyES53b3JsZC5RdWF0ZXJuaW9uSAKIAQFCBwoFX3VwX21CDQoLX2NvdmFyaWFuY2VCDgoMX29yaWVudGF0aW9uIuABCgtQb2xhck9mZnNldBIPCgdhemltdXRoGAEgASgBEhYKCWVsZXZhdGlvbhgCIAEoAUgAiAEBEhIKBXJhbmdlGAMgASgBSAGIAQESMAoKY292YXJpYW5jZRgEIAEoCzIXLndvcmxkLkNvdmFyaWFuY2VNYXRyaXhIAogBARIrCgtvcmllbnRhdGlvbhgFIAEoCzIRLndvcmxkLlF1YXRlcm5pb25IA4gBAUIMCgpfZWxldmF0aW9uQggKBl9yYW5nZUINCgtfY292YXJpYW5jZUIOCgxfb3JpZW50YXRpb24iewoNUG9zZUNvbXBvbmVudBIOCgZwYXJlbnQYASABKAkSKwoJY2FydGVzaWFuGAIgASgLMhYud29ybGQuQ2FydGVzaWFuT2Zmc2V0SAASIwoFcG9sYXIYAyABKAsyEi53b3JsZC5Qb2xhck9mZnNldEgAQggKBm9mZnNldCJxChNUYXJnZXRQb3NlQ29tcG9uZW50EisKCWNhcnRlc2lhbhgBIAEoCzIWLndvcmxkLkNhcnRlc2lhbk9mZnNldEgAEiMKBXBvbGFyGAIgASgLMhIud29ybGQuUG9sYXJPZmZzZXRIAEIICgZvZmZzZXQiSgoPQW5ndWxhclZlbG9jaXR5EhEKCXJvbGxfcmF0ZRgBIAEoARISCgpwaXRjaF9yYXRlGAIgASgBEhAKCHlhd19yYXRlGAMgASgBIn8KFE9yaWVudGF0aW9uQ29tcG9uZW50EiYKC29yaWVudGF0aW9uGAEgASgLMhEud29ybGQuUXVhdGVybmlvbhIwCgpjb3ZhcmlhbmNlGAIgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgAiAEBQg0KC19jb3ZhcmlhbmNlIpABCg5UcmFja0NvbXBvbmVudBIUCgd0cmFja2VyGAEgASgJSACIAQESFAoHaGlzdG9yeRgCIAEoCUgBiAEBEhcKCnByZWRpY3Rpb24YAyABKAlIAogBARISCgpkZXRlY3Rpb25zGAQgAygJQgoKCF90cmFja2VyQgoKCF9oaXN0b3J5Qg0KC19wcmVkaWN0aW9uIisKEExvY2F0b3JDb21wb25lbnQSFwoPbG9jYXRlZEVudGl0eUlkGAEgASgJIjUKD1Rhc2thYmxlQ29udGV4dBIVCghlbnRpdHlJZBgBIAEoCUgAiAEBQgsKCV9lbnRpdHlJZCI2ChBUYXNrYWJsZUFzc2lnbmVlEhUKCGVudGl0eUlkGAEgASgJSACIAQFCCwoJX2VudGl0eUlkIvUBChFUYXNrYWJsZUNvbXBvbmVudBIVCghyZXNlcnZlZBgBIAEoCUgAiAEBEhIKBWxhYmVsGAIgASgJSAGIAQESJwoHY29udGV4dBgDIAMoCzIWLndvcmxkLlRhc2thYmxlQ29udGV4dBIpCghhc3NpZ25lZRgEIAMoCzIXLndvcmxkLlRhc2thYmxlQXNzaWduZWUSJwoGc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIhCgRtb2RlGAYgASgOMhMud29ybGQuVGFza2FibGVNb2RlQgsKCV9yZXNlcnZlZEIICgZfbGFiZWwi1QEKFlRhc2tFeGVjdXRpb25Db21wb25lbnQSDAoEdGFzaxgBIAEoCRIwCgpwYXJhbWV0ZXJzGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEigKBXN0YXRlGAMgASgOMhkud29ybGQuVGFza0V4ZWN1dGlvblN0YXRlEhMKBnJlYXNvbhgEIAEoCUgBiAEBEhUKCHByaW9yaXR5GAUgASgNSAKIAQFCDQoLX3BhcmFtZXRlcnNCCQoHX3JlYXNvbkILCglfcHJpb3JpdHkiogEKDUtpbmVtYXRpY3NFbnUSEQoEZWFzdBgBIAEoAUgAiAEBEhIKBW5vcnRoGAIgASgBSAGIAQESDwoCdXAYAyABKAFIAogBARIwCgpjb3ZhcmlhbmNlGAQgASgLMhcud29ybGQuQ292YXJpYW5jZU1hdHJpeEgDiAEBQgcKBV9lYXN0QggKBl9ub3J0aEIFCgNfdXBCDQoLX2NvdmFyaWFuY2Ui7wEKE0tpbmVtYXRpY3NDb21wb25lbnQSLgoLdmVsb2NpdHlFbnUYASABKAsyFC53b3JsZC5LaW5lbWF0aWNzRW51SACIAQESMgoPYWNjZWxlcmF0aW9uRW51GAIgASgLMhQud29ybGQuS2luZW1hdGljc0VudUgBiAEBEjgKE2FuZ3VsYXJWZWxvY2l0eUJvZHkYAyABKAsyFi53b3JsZC5Bbmd1bGFyVmVsb2NpdHlIAogBAUIOCgxfdmVsb2NpdHlFbnVCEgoQX2FjY2VsZXJhdGlvbkVudUIWChRfYW5ndWxhclZlbG9jaXR5Qm9keSJCCghHZW9tZXRyeRIPCgN3a2IYASABKAxCAhgBEiUKBnBsYW5hchgCIAEoCzIVLndvcmxkLlBsYW5hckdlb21ldHJ5IkgKEUdlb1NoYXBlQ29tcG9uZW50EiYKCGdlb21ldHJ5GAEgASgLMg8ud29ybGQuR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiZAoTTG9jYWxTaGFwZUNvbXBvbmVudBITCgtyZWxhdGl2ZV90bxgCIAEoCRIrCghnZW9tZXRyeRgBIAEoCzIULndvcmxkLkxvY2FsR2VvbWV0cnlIAIgBAUILCglfZ2VvbWV0cnkiqAEKF0NsYXNzaWZpY2F0aW9uQ29tcG9uZW50EjwKCWRpbWVuc2lvbhgBIAEoDjIkLndvcmxkLkNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uSACIAQESNAoIaWRlbnRpdHkYAiABKA4yHS53b3JsZC5DbGFzc2lmaWNhdGlvbklkZW50aXR5SAGIAQFCDAoKX2RpbWVuc2lvbkILCglfaWRlbnRpdHkilAEKDlRyYW5zcG9uZGVyQUlTEhEKBG1tc2kYASABKA1IAIgBARIQCgNpbW8YAiABKA1IAYgBARIVCghjYWxsc2lnbhgDIAEoCUgCiAEBEhgKC3Zlc3NlbF9uYW1lGAQgASgJSAOIAQFCBwoFX21tc2lCBgoEX2ltb0ILCglfY2FsbHNpZ25CDgoMX3Zlc3NlbF9uYW1lImMKD1RyYW5zcG9uZGVyQURTQhIZCgxpY2FvX2FkZHJlc3MYASABKA1IAIgBARIWCglmbGlnaHRfaWQYAiABKAlIAYgBAUIPCg1faWNhb19hZGRyZXNzQgwKCl9mbGlnaHRfaWQiewoUVHJhbnNwb25kZXJDb21wb25lbnQSJwoDYWlzGAEgASgLMhUud29ybGQuVHJhbnNwb25kZXJBSVNIAIgBARIpCgRhZHNiGAIgASgLMhYud29ybGQuVHJhbnNwb25kZXJBRFNCSAGIAQFCBgoEX2Fpc0IHCgVfYWRzYiLbAgoXQWRtaW5pc3RyYXRpdmVDb21wb25lbnQSDwoCaWQYASABKAlIAIgBARIRCgRmbGFnGAIgASgJSAGIAQESEgoFb3duZXIYAyABKAlIAogBARIZCgxtYW51ZmFjdHVyZXIYBCABKAlIA4gBARISCgVtb2RlbBgFIAEoCUgEiAEBEhcKCnllYXJfYnVpbHQYBiABKA1IBYgBARIVCghsZW5ndGhfbRgHIAEoAkgGiAEBEhcKCnRvbm5hZ2VfZ3QYCCABKAJIB4gBARIcCg9lbmdpbmVfcG93ZXJfa3cYCSABKAJICIgBAUIFCgNfaWRCBwoFX2ZsYWdCCAoGX293bmVyQg8KDV9tYW51ZmFjdHVyZXJCCAoGX21vZGVsQg0KC195ZWFyX2J1aWx0QgsKCV9sZW5ndGhfbUINCgtfdG9ubmFnZV9ndEISChBfZW5naW5lX3Bvd2VyX2t3IvABChNOYXZpZ2F0aW9uQ29tcG9uZW50EigKBG1vZGUYASABKA4yFS53b3JsZC5OYXZpZ2F0aW9uTW9kZUgAiAEBEhIKBWFybWVkGAIgASgISAGIAQESFgoJZW1lcmdlbmN5GAMgASgISAKIAQESHQoQd2F5cG9pbnRfY3VycmVudBgEIAEoDUgDiAEBEhsKDndheXBvaW50X3RvdGFsGAUgASgNSASIAQFCBwoFX21vZGVCCAoGX2FybWVkQgwKCl9lbWVyZ2VuY3lCEwoRX3dheXBvaW50X2N1cnJlbnRCEQoPX3dheXBvaW50X3RvdGFsIq0BChBNaXNzaW9uQ29tcG9uZW50Eg8KB21lbWJlcnMYASADKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIYCgtkZXN0aW5hdGlvbhgDIAEoCUgBiAEBEiwKA2V0YRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIOCgxfZGVzY3JpcHRpb25CDgoMX2Rlc3RpbmF0aW9uQgYKBF9ldGEixAIKDUxpbmtDb21wb25lbnQSJgoGc3RhdHVzGAEgASgOMhEud29ybGQuTGlua1N0YXR1c0gAiAEBEhUKCHJzc2lfZGJtGAIgASgRSAGIAQESEwoGc25yX2RiGAMgASgRSAKIAQESEAoDdmlhGAUgASgJSAOIAQESHAoPbGFzdF9sYXRlbmN5X21zGAYgASgNSASIAQESGwoOYXZnX2xhdGVuY3lfbXMYByABKA1IBYgBARIyCglsYXN0X3NlZW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQFCCQoHX3N0YXR1c0ILCglfcnNzaV9kYm1CCQoHX3Nucl9kYkIGCgRfdmlhQhIKEF9sYXN0X2xhdGVuY3lfbXNCEQoPX2F2Z19sYXRlbmN5X21zQgwKCl9sYXN0X3NlZW4i7AEKEENhcHR1cmVDb21wb25lbnQSFAoHcGF5bG9hZBgBIAEoDEgAiAEBEhEKBHBvcnQYAiABKA1IAYgBARIZCgxjb250ZW50X3R5cGUYAyABKAlIAogBARIYCgtjYXB0dXJlZF9ieRgEIAEoCUgDiAEBEjQKC2NhcHR1cmVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBQgoKCF9wYXlsb2FkQgcKBV9wb3J0Qg8KDV9jb250ZW50X3R5cGVCDgoMX2NhcHR1cmVkX2J5Qg4KDF9jYXB0dXJlZF9hdCKsAQoOUG93ZXJDb21wb25lbnQSJQoYYmF0dGVyeV9jaGFyZ2VfcmVtYWluaW5nGAEgASgCSACIAQESFAoHdm9sdGFnZRgCIAEoAkgBiAEBEh4KEXJlbWFpbmluZ19zZWNvbmRzGAMgASgNSAKIAQFCGwoZX2JhdHRlcnlfY2hhcmdlX3JlbWFpbmluZ0IKCghfdm9sdGFnZUIUChJfcmVtYWluaW5nX3NlY29uZHMiMQoRRGV2aWNlQ2xhc3NPcHRpb24SDQoFY2xhc3MYASABKAkSDQoFbGFiZWwYAiABKAki6gIKFUNvbmZpZ3VyYWJsZUNvbXBvbmVudBInCgZzY2hlbWEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgVzdGF0ZRgDIAEoDjIYLndvcmxkLkNvbmZpZ3VyYWJsZVN0YXRlEhIKBWVycm9yGAQgASgJSACIAQESEgoFbGFiZWwYBSABKAlIAYgBARIXCg9hcHBsaWVkX3ZlcnNpb24YBiABKAQSOgoYc3VwcG9ydGVkX2RldmljZV9jbGFzc2VzGAcgAygLMhgud29ybGQuRGV2aWNlQ2xhc3NPcHRpb24SNQoMc2NoZWR1bGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQggKBl9lcnJvckIICgZfbGFiZWxCDwoNX3NjaGVkdWxlZF9hdCLoBAoPRGV2aWNlQ29tcG9uZW50EhMKBnBhcmVudBgBIAEoCUgAiAEBEhMKC2NvbXBvc2l0aW9uGAIgAygJEh8KEnVuaXF1ZV9oYXJkd2FyZV9pZBgEIAEoCUgBiAEBEiEKBXN0YXRlGAYgASgOMhIud29ybGQuRGV2aWNlU3RhdGUSEgoFZXJyb3IYByABKAlIAogBARISCgVjbGFzcxgKIAEoCUgDiAEBEhUKCGNhdGVnb3J5GA0gASgJSASIAQESJAoEbm9kZRgUIAEoCzIRLndvcmxkLk5vZGVEZXZpY2VIBYgBARIiCgN1c2IYFSABKAsyEC53b3JsZC5Vc2JEZXZpY2VIBogBARIgCgJpcBgWIAEoCzIPLndvcmxkLklwRGV2aWNlSAeIAQESKAoGc2VyaWFsGBcgASgLMhMud29ybGQuU2VyaWFsRGV2aWNlSAiIAQESLAoIZXRoZXJuZXQYGCABKAsyFS53b3JsZC5FdGhlcm5ldERldmljZUgJiAEBEiYKBWxwd2FuGBkgASgLMhIud29ybGQuTFBXQU5EZXZpY2VICogBARIwCgptZXNodGFzdGljGBogASgLMhcud29ybGQuTWVzaHRhc3RpY0RldmljZUgLiAEBQgkKB19wYXJlbnRCFQoTX3VuaXF1ZV9oYXJkd2FyZV9pZEIICgZfZXJyb3JCCAoGX2NsYXNzQgsKCV9jYXRlZ29yeUIHCgVfbm9kZUIGCgRfdXNiQgUKA19pcEIJCgdfc2VyaWFsQgsKCV9ldGhlcm5ldEIICgZfbHB3YW5CDQoLX21lc2h0YXN0aWMihgEKCk5vZGVEZXZpY2USFQoIaG9zdG5hbWUYASABKAlIAIgBARIPCgJvcxgCIAEoCUgBiAEBEhEKBGFyY2gYAyABKAlIAogBARIUCgdudW1fY3B1GAQgASgNSAOIAQFCCwoJX2hvc3RuYW1lQgUKA19vc0IHCgVfYXJjaEIKCghfbnVtX2NwdSL5AgoJVXNiRGV2aWNlEhYKCXZlbmRvcl9pZBgBIAEoDUgAiAEBEhcKCnByb2R1Y3RfaWQYAiABKA1IAYgBARIZCgxkZXZpY2VfY2xhc3MYAyABKA1IAogBARIcCg9kZXZpY2Vfc3ViY2xhc3MYBCABKA1IA4gBARIcCg9kZXZpY2VfcHJvdG9jb2wYBSABKA1IBIgBARIeChFtYW51ZmFjdHVyZXJfbmFtZRgGIAEoCUgFiAEBEhkKDHByb2R1Y3RfbmFtZRgHIAEoCUgGiAEBEhoKDXNlcmlhbF9udW1iZXIYCCABKAlIB4gBAUIMCgpfdmVuZG9yX2lkQg0KC19wcm9kdWN0X2lkQg8KDV9kZXZpY2VfY2xhc3NCEgoQX2RldmljZV9zdWJjbGFzc0ISChBfZGV2aWNlX3Byb3RvY29sQhQKEl9tYW51ZmFjdHVyZXJfbmFtZUIPCg1fcHJvZHVjdF9uYW1lQhAKDl9zZXJpYWxfbnVtYmVyIkIKCElwRGV2aWNlEhEKBGhvc3QYASABKAlIAIgBARIRCgRwb3J0GAIgASgNSAGIAQFCBwoFX2hvc3RCBwoFX3BvcnQiWgoORXRoZXJuZXREZXZpY2USGAoLbWFjX2FkZHJlc3MYASABKAlIAIgBARITCgZ2ZW5kb3IYAiABKAlIAYgBAUIOCgxfbWFjX2FkZHJlc3NCCQoHX3ZlbmRvciJQCgxTZXJpYWxEZXZpY2USEQoEcGF0aBgBIAEoCUgAiAEBEhYKCWJhdWRfcmF0ZRgCIAEoDUgBiAEBQgcKBV9wYXRoQgwKCl9iYXVkX3JhdGUi3AEKEE1lc2h0YXN0aWNEZXZpY2USFQoIbm9kZV9udW0YASABKA1IAIgBARIWCglsb25nX25hbWUYAiABKAlIAYgBARIXCgpzaG9ydF9uYW1lGAMgASgJSAKIAQESGwoOaGFyZHdhcmVfbW9kZWwYBCABKAlIA4gBARIXCgpwdWJsaWNfa2V5GAUgASgMSASIAQFCCwoJX25vZGVfbnVtQgwKCl9sb25nX25hbWVCDQoLX3Nob3J0X25hbWVCEQoPX2hhcmR3YXJlX21vZGVsQg0KC19wdWJsaWNfa2V5IkkKC0xQV0FORGV2aWNlEhAKA2V1aRgBIAEoCUgAiAEBEhQKB2FkZHJlc3MYAiABKAlIAYgBAUIGCgRfZXVpQgoKCF9hZGRyZXNzIlEKFkNvbmZpZ3VyYXRpb25Db21wb25lbnQSJgoFdmFsdWUYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB3ZlcnNpb24YBSABKAQiXgoNQ2hhdENvbXBvbmVudBITCgZzZW5kZXIYASABKAlIAIgBARIPCgJ0bxgDIAEoCUgBiAEBEg8KB21lc3NhZ2UYBCABKAlCCQoHX3NlbmRlckIFCgNfdG9KBAgCEAMi1QQKDEVudGl0eUZpbHRlchIPCgJpZBgBIAEoCUgAiAEBEhIKBWxhYmVsGAIgASgJSAGIAQESIgoDZ2VvGAMgASgLMhAud29ybGQuR2VvRmlsdGVySAKIAQESLAoIdGFza2FibGUYBCABKAsyFS53b3JsZC5UYXNrYWJsZUZpbHRlckgDiAEBEhEKCWNvbXBvbmVudBgFIAMoDRIwCgpjb250cm9sbGVyGAcgASgLMhcud29ybGQuQ29udHJvbGxlckZpbHRlckgEiAEBEiYKBXRyYWNrGAggASgLMhIud29ybGQuVHJhY2tGaWx0ZXJIBYgBARIqCgdtaXNzaW9uGAkgASgLMhQud29ybGQuTWlzc2lvbkZpbHRlckgGiAEBEioKB2NoYW5uZWwYCiABKAsyFC53b3JsZC5DaGFubmVsRmlsdGVySAeIAQESKAoGZGV2aWNlGDIgASgLMhMud29ybGQuRGV2aWNlRmlsdGVySAiIAQESLwoGY29uZmlnGDMgASgLMhoud29ybGQuQ29uZmlndXJhdGlvbkZpbHRlckgJiAEBEh8KAm9yGGQgAygLMhMud29ybGQuRW50aXR5RmlsdGVyEiAKA25vdBhlIAEoCzITLndvcmxkLkVudGl0eUZpbHRlckIFCgNfaWRCCAoGX2xhYmVsQgYKBF9nZW9CCwoJX3Rhc2thYmxlQg0KC19jb250cm9sbGVyQggKBl90cmFja0IKCghfbWlzc2lvbkIKCghfY2hhbm5lbEIJCgdfZGV2aWNlQgkKB19jb25maWciKgoQQ29udHJvbGxlckZpbHRlchIPCgJpZBgBIAEoCUgAiAEBQgUKA19pZCIvCgtUcmFja0ZpbHRlchIUCgd0cmFja2VyGAEgASgJSACIAQFCCgoIX3RyYWNrZXIiXQoNTWlzc2lvbkZpbHRlchIXCgptaXNzaW9uX2lkGAEgASgJSACIAQESFgoJbWVtYmVyX2lkGAIgASgJSAGIAQFCDQoLX21pc3Npb25faWRCDAoKX21lbWJlcl9pZCKHAQoOVGFza2FibGVGaWx0ZXISLAoHY29udGV4dBgBIAEoCzIWLndvcmxkLlRhc2thYmxlQ29udGV4dEgAiAEBEi4KCGFzc2lnbmVlGAIgASgLMhcud29ybGQuVGFza2FibGVBc3NpZ25lZUgBiAEBQgoKCF9jb250ZXh0QgsKCV9hc3NpZ25lZSJOCglHZW9GaWx0ZXISIwoIZ2VvbWV0cnkYASABKAsyDy53b3JsZC5HZW9tZXRyeUgAEhUKC2dlb0VudGl0eUlkGAIgASgJSABCBQoDZ2VvImYKDERldmljZUZpbHRlchITCgZwYXJlbnQYASABKAlIAIgBARIfChJ1bmlxdWVfaGFyZHdhcmVfaWQYBCABKAlIAYgBAUIJCgdfcGFyZW50QhUKE191bmlxdWVfaGFyZHdhcmVfaWQiFQoTQ29uZmlndXJhdGlvbkZpbHRlciIdCg1DaGFubmVsRmlsdGVyEgwKBG5hbWUYASABKAkitAEKDVdhdGNoQmVoYXZpb3ISGAoLbWF4X3JhdGVfaHoYASABKAJIAIgBARIqCgxtaW5fcHJpb3JpdHkYAyABKA4yDy53b3JsZC5Qcmlvcml0eUgBiAEBEiIKFWtlZXBhbGl2ZV9pbnRlcnZhbF9tcxgEIAEoDUgCiAEBQg4KDF9tYXhfcmF0ZV9oekIPCg1fbWluX3ByaW9yaXR5QhgKFl9rZWVwYWxpdmVfaW50ZXJ2YWxfbXMifAoTTGlzdEVudGl0aWVzUmVxdWVzdBIjCgZmaWx0ZXIYAiABKAsyEy53b3JsZC5FbnRpdHlGaWx0ZXISLAoJYmVoYXZpb3VyGAQgASgLMhQud29ybGQuV2F0Y2hCZWhhdmlvckgAiAEBQgwKCl9iZWhhdmlvdXJKBAgBEAIiNwoUTGlzdEVudGl0aWVzUmVzcG9uc2USHwoIZW50aXRpZXMYASADKAsyDS53b3JsZC5FbnRpdHkiWgoTRW50aXR5Q2hhbmdlUmVxdWVzdBIeCgdjaGFuZ2VzGAEgAygLMg0ud29ybGQuRW50aXR5EiMKDHJlcGxhY2VtZW50cxgCIAMoCzINLndvcmxkLkVudGl0eSIhChNFeHBpcmVFbnRpdHlSZXF1ZXN0EgoKAmlkGAEgASgJIhYKFEV4cGlyZUVudGl0eVJlc3BvbnNlIjcKFEVudGl0eUNoYW5nZVJlc3BvbnNlEhAKCGFjY2VwdGVkGAEgASgIEg0KBWRlYnVnGAIgASgJIlIKEUVudGl0eUNoYW5nZUV2ZW50Eh0KBmVudGl0eRgBIAEoCzINLndvcmxkLkVudGl0eRIeCgF0GAIgASgOMhMud29ybGQuRW50aXR5Q2hhbmdlIj0KEUVudGl0eUNoYW5nZUJhdGNoEigKBmV2ZW50cxgBIAMoCzIYLndvcmxkLkVudGl0eUNoYW5nZUV2ZW50Ih4KEEdldEVudGl0eVJlcXVlc3QSCgoCaWQYASABKAkiMgoRR2V0RW50aXR5UmVzcG9uc2USHQoGZW50aXR5GAEgASgLMg0ud29ybGQuRW50aXR5IhUKE0dldExvY2FsTm9kZVJlcXVlc3QiRgoUR2V0TG9jYWxOb2RlUmVzcG9uc2USHQoGZW50aXR5GAEgASgLMg0ud29ybGQuRW50aXR5Eg8KB25vZGVfaWQYAiABKAkiEQoPT2JzZXJ2ZXJSZXF1ZXN0InMKDU9ic2VydmVyU3RhdGUSHAoDZ2VvGAEgASgLMg8ud29ybGQuR2VvbWV0cnkSNAoLdmlld0hpc3RvcnkYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDgoMX3ZpZXdIaXN0b3J5IkYKDlJ1blRhc2tSZXF1ZXN0EhAKCGVudGl0eUlkGAEgASgJEhUKCHByaW9yaXR5GAIgASgNSACIAQFCCwoJX3ByaW9yaXR5IoMBCg9SdW5UYXNrUmVzcG9uc2USEwoLZXhlY3V0aW9uSWQYASABKAkSIQoGc3RhdHVzGAIgASgOMhEud29ybGQuVGFza1N0YXR1cxIgChNodW1hblJlYWRhYmxlUmVhc29uGAMgASgJSACIAQFCFgoUX2h1bWFuUmVhZGFibGVSZWFzb24qYgoIUHJpb3JpdHkSFwoTUHJpb3JpdHlVbnNwZWNpZmllZBAAEhMKD1ByaW9yaXR5Um91dGluZRABEhUKEVByaW9yaXR5SW1tZWRpYXRlEAISEQoNUHJpb3JpdHlGbGFzaBADKuwBChNNZWRpYVN0cmVhbVByb3RvY29sEiIKHk1lZGlhU3RyZWFtUHJvdG9jb2xVbnNwZWNpZmllZBAAEh0KGU1lZGlhU3RyZWFtUHJvdG9jb2xXZWJydGMQARIaChZNZWRpYVN0cmVhbVByb3RvY29sSGxzEAISHAoYTWVkaWFTdHJlYW1Qcm90b2NvbE1qcGVnEAMSHAoYTWVkaWFTdHJlYW1Qcm90b2NvbEltYWdlEAQSHQoZTWVkaWFTdHJlYW1Qcm90b2NvbElmcmFtZRAFEhsKF01lZGlhU3RyZWFtUHJvdG9jb2xSdHNwEAYqfwoPTWVkaWFTdHJlYW1Sb2xlEh4KGk1lZGlhU3RyZWFtUm9sZVVuc3BlY2lmaWVkEAASFwoTTWVkaWFTdHJlYW1Sb2xlTWFpbhABEhYKEk1lZGlhU3RyZWFtUm9sZVN1YhACEhsKF01lZGlhU3RyZWFtUm9sZVNuYXBzaG90EAMqegoMVGFza2FibGVNb2RlEhkKFVRhc2thYmxlTW9kZUV4Y2x1c2l2ZRAAEhkKFVRhc2thYmxlTW9kZVJlY29uY2lsZRABEhUKEVRhc2thYmxlTW9kZVNwYXduEAISHQoZVGFza2FibGVNb2RlUHJpb3JpdHlRdWV1ZRADKpEBChJUYXNrRXhlY3V0aW9uU3RhdGUSHQoZVGFza0V4ZWN1dGlvblN0YXRlUGVuZGluZxAAEh0KGVRhc2tFeGVjdXRpb25TdGF0ZVJ1bm5pbmcQARIfChtUYXNrRXhlY3V0aW9uU3RhdGVDb21wbGV0ZWQQAhIcChhUYXNrRXhlY3V0aW9uU3RhdGVGYWlsZWQQAyqMAgoWQ2xhc3NpZmljYXRpb25JZGVudGl0eRIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5SW52YWxpZBAAEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlQZW5kaW5nEAESIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eVVua25vd24QAhIgChxDbGFzc2lmaWNhdGlvbklkZW50aXR5RnJpZW5kEAMSIQodQ2xhc3NpZmljYXRpb25JZGVudGl0eU5ldXRyYWwQBBIhCh1DbGFzc2lmaWNhdGlvbklkZW50aXR5SG9zdGlsZRAFEiEKHUNsYXNzaWZpY2F0aW9uSWRlbnRpdHlTdXNwZWN0EAYqxAIKHUNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uEigKJENsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uSW52YWxpZBAAEigKJENsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uVW5rbm93bhABEiYKIkNsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uU3BhY2UQAhIkCiBDbGFzc2lmaWNhdGlvbkJhdHRsZURpbWVuc2lvbkFpchADEicKI0NsYXNzaWZpY2F0aW9uQmF0dGxlRGltZW5zaW9uR3JvdW5kEAQSKwonQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25TZWFTdXJmYWNlEAUSKwonQ2xhc3NpZmljYXRpb25CYXR0bGVEaW1lbnNpb25TdWJzdXJmYWNlEAYq9gEKDk5hdmlnYXRpb25Nb2RlEh0KGU5hdmlnYXRpb25Nb2RlVW5zcGVjaWZpZWQQABIZChVOYXZpZ2F0aW9uTW9kZVBsYW5uZWQQARIcChhOYXZpZ2F0aW9uTW9kZVN0YXRpb25hcnkQAhIaChZOYXZpZ2F0aW9uTW9kZVVuZGVyd2F5EAMSHAoYTmF2aWdhdGlvbk1vZGVBdXRvbm9tb3VzEAQSGAoUTmF2aWdhdGlvbk1vZGVHdWlkZWQQBRIbChdOYXZpZ2F0aW9uTW9kZUxvaXRlcmluZxAGEhsKF05hdmlnYXRpb25Nb2RlUmV0dXJuaW5nEAcqbAoKTGlua1N0YXR1cxIZChVMaW5rU3RhdHVzVW5zcGVjaWZpZWQQABIXChNMaW5rU3RhdHVzQ29ubmVjdGVkEAESFgoSTGlua1N0YXR1c0RlZ3JhZGVkEAISEgoOTGlua1N0YXR1c0xvc3QQAypTCgtEZXZpY2VTdGF0ZRIWChJEZXZpY2VTdGF0ZVBlbmRpbmcQABIVChFEZXZpY2VTdGF0ZUFjdGl2ZRABEhUKEURldmljZVN0YXRlRmFpbGVkEAIqygEKEUNvbmZpZ3VyYWJsZVN0YXRlEh0KGUNvbmZpZ3VyYWJsZVN0YXRlSW5hY3RpdmUQABIdChlDb25maWd1cmFibGVTdGF0ZVN0YXJ0aW5nEAESGwoXQ29uZmlndXJhYmxlU3RhdGVBY3RpdmUQAhIbChdDb25maWd1cmFibGVTdGF0ZUZhaWxlZBADEh0KGUNvbmZpZ3VyYWJsZVN0YXRlQ29uZmxpY3QQBBIeChpDb25maWd1cmFibGVTdGF0ZVNjaGVkdWxlZBAFKnUKDEVudGl0eUNoYW5nZRIXChNFbnRpdHlDaGFuZ2VJbnZhbGlkEAASFwoTRW50aXR5Q2hhbmdlVXBkYXRlZBABEhcKE0VudGl0eUNoYW5nZUV4cGlyZWQQAhIaChZFbnRpdHlDaGFuZ2VVbm9ic2VydmVkEAMqvwgKD0VudGl0eUNvbXBvbmVudBIeChpFbnRpdHlDb21wb25lbnRVbnNwZWNpZmllZBAAEhgKFEVudGl0eUNvbXBvbmVudExhYmVsEAISHQoZRW50aXR5Q29tcG9uZW50Q29udHJvbGxlchADEhsKF0VudGl0eUNvbXBvbmVudExpZmV0aW1lEAQSGwoXRW50aXR5Q29tcG9uZW50UHJpb3JpdHkQBRIYChRFbnRpdHlDb21wb25lbnRMZWFzZRAGEhoKFkVudGl0eUNvbXBvbmVudFJvdXRpbmcQBxIWChJFbnRpdHlDb21wb25lbnRHZW8QCxIZChVFbnRpdHlDb21wb25lbnRTeW1ib2wQDBIZChVFbnRpdHlDb21wb25lbnRDYW1lcmEQDxIcChhFbnRpdHlDb21wb25lbnREZXRlY3Rpb24QEBIaChZFbnRpdHlDb21wb25lbnRCZWFyaW5nEBESGAoURW50aXR5Q29tcG9uZW50VHJhY2sQFRIaChZFbnRpdHlDb21wb25lbnRMb2NhdG9yEBYSGwoXRW50aXR5Q29tcG9uZW50VGFza2FibGUQFxIdChlFbnRpdHlDb21wb25lbnRLaW5lbWF0aWNzEBgSGAoURW50aXR5Q29tcG9uZW50U2hhcGUQGRIhCh1FbnRpdHlDb21wb25lbnRDbGFzc2lmaWNhdGlvbhAaEh4KGkVudGl0eUNvbXBvbmVudFRyYW5zcG9uZGVyEBsSIQodRW50aXR5Q29tcG9uZW50QWRtaW5pc3RyYXRpdmUQHBIdChlFbnRpdHlDb21wb25lbnRMb2NhbFNoYXBlEB0SHgoaRW50aXR5Q29tcG9uZW50T3JpZW50YXRpb24QHhIaChZFbnRpdHlDb21wb25lbnRNaXNzaW9uEB8SFwoTRW50aXR5Q29tcG9uZW50TGluaxAgEhgKFEVudGl0eUNvbXBvbmVudFBvd2VyECESHQoZRW50aXR5Q29tcG9uZW50TmF2aWdhdGlvbhAiEhoKFkVudGl0eUNvbXBvbmVudENhcHR1cmUQIxIZChVFbnRpdHlDb21wb25lbnRNZXRyaWMQJBIZChVFbnRpdHlDb21wb25lbnRTZW5zb3IQJRIXChNFbnRpdHlDb21wb25lbnRQb3NlECYSFwoTRW50aXR5Q29tcG9uZW50Q2hhdBAnEiAKHEVudGl0eUNvbXBvbmVudFRhc2tFeGVjdXRpb24QKRIZChVFbnRpdHlDb21wb25lbnREZXZpY2UQMhIZChVFbnRpdHlDb21wb25lbnRDb25maWcQMxIfChtFbnRpdHlDb21wb25lbnRDb25maWd1cmFibGUQNBIgChxFbnRpdHlDb21wb25lbnRJbnRlcmFjdGl2aXR5EDwSHQoZRW50aXR5Q29tcG9uZW50VGFyZ2V0UG9zZRA+KmkKClRhc2tTdGF0dXMSFQoRVGFza1N0YXR1c0ludmFsaWQQABIVChFUYXNrU3RhdHVzUnVubmluZxABEhcKE1Rhc2tTdGF0dXNDb21wbGV0ZWQQAhIUChBUYXNrU3RhdHVzRmFpbGVkEAMy7QMKDFdvcmxkU2VydmljZRJHCgxMaXN0RW50aXRpZXMSGi53b3JsZC5MaXN0RW50aXRpZXNSZXF1ZXN0Ghsud29ybGQuTGlzdEVudGl0aWVzUmVzcG9uc2USPgoJR2V0RW50aXR5Ehcud29ybGQuR2V0RW50aXR5UmVxdWVzdBoYLndvcmxkLkdldEVudGl0eVJlc3BvbnNlEkcKDVdhdGNoRW50aXRpZXMSGi53b3JsZC5MaXN0RW50aXRpZXNSZXF1ZXN0Ghgud29ybGQuRW50aXR5Q2hhbmdlRXZlbnQwARI/CgRQdXNoEhoud29ybGQuRW50aXR5Q2hhbmdlUmVxdWVzdBobLndvcmxkLkVudGl0eUNoYW5nZVJlc3BvbnNlEkcKDEV4cGlyZUVudGl0eRIaLndvcmxkLkV4cGlyZUVudGl0eVJlcXVlc3QaGy53b3JsZC5FeHBpcmVFbnRpdHlSZXNwb25zZRJHCgxHZXRMb2NhbE5vZGUSGi53b3JsZC5HZXRMb2NhbE5vZGVSZXF1ZXN0Ghsud29ybGQuR2V0TG9jYWxOb2RlUmVzcG9uc2USOAoHUnVuVGFzaxIVLndvcmxkLlJ1blRhc2tSZXF1ZXN0GhYud29ybGQuUnVuVGFza1Jlc3BvbnNlQiBaHmdpdGh1Yi5jb20vcHJvamVjdHFhaS9wcm90by9nb2IGcHJvdG8z", [file_geometry, file_google_protobuf_struct, file_google_protobuf_timestamp, file_metrics]);
15
15
 
16
16
  /**
17
17
  * Describes the message world.Entity.
@@ -41,509 +41,544 @@ export const LeaseSchema = /*@__PURE__*/
41
41
  export const LifetimeSchema = /*@__PURE__*/
42
42
  messageDesc(file_world, 3);
43
43
 
44
+ /**
45
+ * Describes the message world.Channel.
46
+ * Use `create(ChannelSchema)` to create a new message.
47
+ */
48
+ export const ChannelSchema = /*@__PURE__*/
49
+ messageDesc(file_world, 4);
50
+
51
+ /**
52
+ * Describes the message world.Routing.
53
+ * Use `create(RoutingSchema)` to create a new message.
54
+ */
55
+ export const RoutingSchema = /*@__PURE__*/
56
+ messageDesc(file_world, 5);
57
+
44
58
  /**
45
59
  * Describes the message world.GeoSpatialComponent.
46
60
  * Use `create(GeoSpatialComponentSchema)` to create a new message.
47
61
  */
48
62
  export const GeoSpatialComponentSchema = /*@__PURE__*/
49
- messageDesc(file_world, 4);
63
+ messageDesc(file_world, 6);
50
64
 
51
65
  /**
52
66
  * Describes the message world.SymbolComponent.
53
67
  * Use `create(SymbolComponentSchema)` to create a new message.
54
68
  */
55
69
  export const SymbolComponentSchema = /*@__PURE__*/
56
- messageDesc(file_world, 5);
70
+ messageDesc(file_world, 7);
57
71
 
58
72
  /**
59
73
  * Describes the message world.InteractivityComponent.
60
74
  * Use `create(InteractivityComponentSchema)` to create a new message.
61
75
  */
62
76
  export const InteractivityComponentSchema = /*@__PURE__*/
63
- messageDesc(file_world, 6);
77
+ messageDesc(file_world, 8);
64
78
 
65
79
  /**
66
80
  * Describes the message world.MediaStream.
67
81
  * Use `create(MediaStreamSchema)` to create a new message.
68
82
  */
69
83
  export const MediaStreamSchema = /*@__PURE__*/
70
- messageDesc(file_world, 7);
84
+ messageDesc(file_world, 9);
71
85
 
72
86
  /**
73
87
  * Describes the message world.CameraComponent.
74
88
  * Use `create(CameraComponentSchema)` to create a new message.
75
89
  */
76
90
  export const CameraComponentSchema = /*@__PURE__*/
77
- messageDesc(file_world, 8);
91
+ messageDesc(file_world, 10);
78
92
 
79
93
  /**
80
94
  * Describes the message world.DetectionComponent.
81
95
  * Use `create(DetectionComponentSchema)` to create a new message.
82
96
  */
83
97
  export const DetectionComponentSchema = /*@__PURE__*/
84
- messageDesc(file_world, 9);
98
+ messageDesc(file_world, 11);
85
99
 
86
100
  /**
87
101
  * Describes the message world.BearingComponent.
88
102
  * Use `create(BearingComponentSchema)` to create a new message.
89
103
  */
90
104
  export const BearingComponentSchema = /*@__PURE__*/
91
- messageDesc(file_world, 10);
105
+ messageDesc(file_world, 12);
92
106
 
93
107
  /**
94
108
  * Describes the message world.SensorComponent.
95
109
  * Use `create(SensorComponentSchema)` to create a new message.
96
110
  */
97
111
  export const SensorComponentSchema = /*@__PURE__*/
98
- messageDesc(file_world, 11);
112
+ messageDesc(file_world, 13);
99
113
 
100
114
  /**
101
115
  * Describes the message world.Quaternion.
102
116
  * Use `create(QuaternionSchema)` to create a new message.
103
117
  */
104
118
  export const QuaternionSchema = /*@__PURE__*/
105
- messageDesc(file_world, 12);
119
+ messageDesc(file_world, 14);
106
120
 
107
121
  /**
108
122
  * Describes the message world.CovarianceMatrix.
109
123
  * Use `create(CovarianceMatrixSchema)` to create a new message.
110
124
  */
111
125
  export const CovarianceMatrixSchema = /*@__PURE__*/
112
- messageDesc(file_world, 13);
126
+ messageDesc(file_world, 15);
113
127
 
114
128
  /**
115
129
  * Describes the message world.CartesianOffset.
116
130
  * Use `create(CartesianOffsetSchema)` to create a new message.
117
131
  */
118
132
  export const CartesianOffsetSchema = /*@__PURE__*/
119
- messageDesc(file_world, 14);
133
+ messageDesc(file_world, 16);
120
134
 
121
135
  /**
122
136
  * Describes the message world.PolarOffset.
123
137
  * Use `create(PolarOffsetSchema)` to create a new message.
124
138
  */
125
139
  export const PolarOffsetSchema = /*@__PURE__*/
126
- messageDesc(file_world, 15);
140
+ messageDesc(file_world, 17);
127
141
 
128
142
  /**
129
143
  * Describes the message world.PoseComponent.
130
144
  * Use `create(PoseComponentSchema)` to create a new message.
131
145
  */
132
146
  export const PoseComponentSchema = /*@__PURE__*/
133
- messageDesc(file_world, 16);
147
+ messageDesc(file_world, 18);
134
148
 
135
149
  /**
136
150
  * Describes the message world.TargetPoseComponent.
137
151
  * Use `create(TargetPoseComponentSchema)` to create a new message.
138
152
  */
139
153
  export const TargetPoseComponentSchema = /*@__PURE__*/
140
- messageDesc(file_world, 17);
154
+ messageDesc(file_world, 19);
141
155
 
142
156
  /**
143
157
  * Describes the message world.AngularVelocity.
144
158
  * Use `create(AngularVelocitySchema)` to create a new message.
145
159
  */
146
160
  export const AngularVelocitySchema = /*@__PURE__*/
147
- messageDesc(file_world, 18);
161
+ messageDesc(file_world, 20);
148
162
 
149
163
  /**
150
164
  * Describes the message world.OrientationComponent.
151
165
  * Use `create(OrientationComponentSchema)` to create a new message.
152
166
  */
153
167
  export const OrientationComponentSchema = /*@__PURE__*/
154
- messageDesc(file_world, 19);
168
+ messageDesc(file_world, 21);
155
169
 
156
170
  /**
157
171
  * Describes the message world.TrackComponent.
158
172
  * Use `create(TrackComponentSchema)` to create a new message.
159
173
  */
160
174
  export const TrackComponentSchema = /*@__PURE__*/
161
- messageDesc(file_world, 20);
175
+ messageDesc(file_world, 22);
162
176
 
163
177
  /**
164
178
  * Describes the message world.LocatorComponent.
165
179
  * Use `create(LocatorComponentSchema)` to create a new message.
166
180
  */
167
181
  export const LocatorComponentSchema = /*@__PURE__*/
168
- messageDesc(file_world, 21);
182
+ messageDesc(file_world, 23);
169
183
 
170
184
  /**
171
185
  * Describes the message world.TaskableContext.
172
186
  * Use `create(TaskableContextSchema)` to create a new message.
173
187
  */
174
188
  export const TaskableContextSchema = /*@__PURE__*/
175
- messageDesc(file_world, 22);
189
+ messageDesc(file_world, 24);
176
190
 
177
191
  /**
178
192
  * Describes the message world.TaskableAssignee.
179
193
  * Use `create(TaskableAssigneeSchema)` to create a new message.
180
194
  */
181
195
  export const TaskableAssigneeSchema = /*@__PURE__*/
182
- messageDesc(file_world, 23);
196
+ messageDesc(file_world, 25);
183
197
 
184
198
  /**
185
199
  * Describes the message world.TaskableComponent.
186
200
  * Use `create(TaskableComponentSchema)` to create a new message.
187
201
  */
188
202
  export const TaskableComponentSchema = /*@__PURE__*/
189
- messageDesc(file_world, 24);
203
+ messageDesc(file_world, 26);
190
204
 
191
205
  /**
192
206
  * Describes the message world.TaskExecutionComponent.
193
207
  * Use `create(TaskExecutionComponentSchema)` to create a new message.
194
208
  */
195
209
  export const TaskExecutionComponentSchema = /*@__PURE__*/
196
- messageDesc(file_world, 25);
210
+ messageDesc(file_world, 27);
197
211
 
198
212
  /**
199
213
  * Describes the message world.KinematicsEnu.
200
214
  * Use `create(KinematicsEnuSchema)` to create a new message.
201
215
  */
202
216
  export const KinematicsEnuSchema = /*@__PURE__*/
203
- messageDesc(file_world, 26);
217
+ messageDesc(file_world, 28);
204
218
 
205
219
  /**
206
220
  * Describes the message world.KinematicsComponent.
207
221
  * Use `create(KinematicsComponentSchema)` to create a new message.
208
222
  */
209
223
  export const KinematicsComponentSchema = /*@__PURE__*/
210
- messageDesc(file_world, 27);
224
+ messageDesc(file_world, 29);
211
225
 
212
226
  /**
213
227
  * Describes the message world.Geometry.
214
228
  * Use `create(GeometrySchema)` to create a new message.
215
229
  */
216
230
  export const GeometrySchema = /*@__PURE__*/
217
- messageDesc(file_world, 28);
231
+ messageDesc(file_world, 30);
218
232
 
219
233
  /**
220
234
  * Describes the message world.GeoShapeComponent.
221
235
  * Use `create(GeoShapeComponentSchema)` to create a new message.
222
236
  */
223
237
  export const GeoShapeComponentSchema = /*@__PURE__*/
224
- messageDesc(file_world, 29);
238
+ messageDesc(file_world, 31);
225
239
 
226
240
  /**
227
241
  * Describes the message world.LocalShapeComponent.
228
242
  * Use `create(LocalShapeComponentSchema)` to create a new message.
229
243
  */
230
244
  export const LocalShapeComponentSchema = /*@__PURE__*/
231
- messageDesc(file_world, 30);
245
+ messageDesc(file_world, 32);
232
246
 
233
247
  /**
234
248
  * Describes the message world.ClassificationComponent.
235
249
  * Use `create(ClassificationComponentSchema)` to create a new message.
236
250
  */
237
251
  export const ClassificationComponentSchema = /*@__PURE__*/
238
- messageDesc(file_world, 31);
252
+ messageDesc(file_world, 33);
239
253
 
240
254
  /**
241
255
  * Describes the message world.TransponderAIS.
242
256
  * Use `create(TransponderAISSchema)` to create a new message.
243
257
  */
244
258
  export const TransponderAISSchema = /*@__PURE__*/
245
- messageDesc(file_world, 32);
259
+ messageDesc(file_world, 34);
246
260
 
247
261
  /**
248
262
  * Describes the message world.TransponderADSB.
249
263
  * Use `create(TransponderADSBSchema)` to create a new message.
250
264
  */
251
265
  export const TransponderADSBSchema = /*@__PURE__*/
252
- messageDesc(file_world, 33);
266
+ messageDesc(file_world, 35);
253
267
 
254
268
  /**
255
269
  * Describes the message world.TransponderComponent.
256
270
  * Use `create(TransponderComponentSchema)` to create a new message.
257
271
  */
258
272
  export const TransponderComponentSchema = /*@__PURE__*/
259
- messageDesc(file_world, 34);
273
+ messageDesc(file_world, 36);
260
274
 
261
275
  /**
262
276
  * Describes the message world.AdministrativeComponent.
263
277
  * Use `create(AdministrativeComponentSchema)` to create a new message.
264
278
  */
265
279
  export const AdministrativeComponentSchema = /*@__PURE__*/
266
- messageDesc(file_world, 35);
280
+ messageDesc(file_world, 37);
267
281
 
268
282
  /**
269
283
  * Describes the message world.NavigationComponent.
270
284
  * Use `create(NavigationComponentSchema)` to create a new message.
271
285
  */
272
286
  export const NavigationComponentSchema = /*@__PURE__*/
273
- messageDesc(file_world, 36);
287
+ messageDesc(file_world, 38);
274
288
 
275
289
  /**
276
290
  * Describes the message world.MissionComponent.
277
291
  * Use `create(MissionComponentSchema)` to create a new message.
278
292
  */
279
293
  export const MissionComponentSchema = /*@__PURE__*/
280
- messageDesc(file_world, 37);
294
+ messageDesc(file_world, 39);
281
295
 
282
296
  /**
283
297
  * Describes the message world.LinkComponent.
284
298
  * Use `create(LinkComponentSchema)` to create a new message.
285
299
  */
286
300
  export const LinkComponentSchema = /*@__PURE__*/
287
- messageDesc(file_world, 38);
301
+ messageDesc(file_world, 40);
288
302
 
289
303
  /**
290
304
  * Describes the message world.CaptureComponent.
291
305
  * Use `create(CaptureComponentSchema)` to create a new message.
292
306
  */
293
307
  export const CaptureComponentSchema = /*@__PURE__*/
294
- messageDesc(file_world, 39);
308
+ messageDesc(file_world, 41);
295
309
 
296
310
  /**
297
311
  * Describes the message world.PowerComponent.
298
312
  * Use `create(PowerComponentSchema)` to create a new message.
299
313
  */
300
314
  export const PowerComponentSchema = /*@__PURE__*/
301
- messageDesc(file_world, 40);
315
+ messageDesc(file_world, 42);
302
316
 
303
317
  /**
304
318
  * Describes the message world.DeviceClassOption.
305
319
  * Use `create(DeviceClassOptionSchema)` to create a new message.
306
320
  */
307
321
  export const DeviceClassOptionSchema = /*@__PURE__*/
308
- messageDesc(file_world, 41);
322
+ messageDesc(file_world, 43);
309
323
 
310
324
  /**
311
325
  * Describes the message world.ConfigurableComponent.
312
326
  * Use `create(ConfigurableComponentSchema)` to create a new message.
313
327
  */
314
328
  export const ConfigurableComponentSchema = /*@__PURE__*/
315
- messageDesc(file_world, 42);
329
+ messageDesc(file_world, 44);
316
330
 
317
331
  /**
318
332
  * Describes the message world.DeviceComponent.
319
333
  * Use `create(DeviceComponentSchema)` to create a new message.
320
334
  */
321
335
  export const DeviceComponentSchema = /*@__PURE__*/
322
- messageDesc(file_world, 43);
336
+ messageDesc(file_world, 45);
323
337
 
324
338
  /**
325
339
  * Describes the message world.NodeDevice.
326
340
  * Use `create(NodeDeviceSchema)` to create a new message.
327
341
  */
328
342
  export const NodeDeviceSchema = /*@__PURE__*/
329
- messageDesc(file_world, 44);
343
+ messageDesc(file_world, 46);
330
344
 
331
345
  /**
332
346
  * Describes the message world.UsbDevice.
333
347
  * Use `create(UsbDeviceSchema)` to create a new message.
334
348
  */
335
349
  export const UsbDeviceSchema = /*@__PURE__*/
336
- messageDesc(file_world, 45);
350
+ messageDesc(file_world, 47);
337
351
 
338
352
  /**
339
353
  * Describes the message world.IpDevice.
340
354
  * Use `create(IpDeviceSchema)` to create a new message.
341
355
  */
342
356
  export const IpDeviceSchema = /*@__PURE__*/
343
- messageDesc(file_world, 46);
357
+ messageDesc(file_world, 48);
344
358
 
345
359
  /**
346
360
  * Describes the message world.EthernetDevice.
347
361
  * Use `create(EthernetDeviceSchema)` to create a new message.
348
362
  */
349
363
  export const EthernetDeviceSchema = /*@__PURE__*/
350
- messageDesc(file_world, 47);
364
+ messageDesc(file_world, 49);
351
365
 
352
366
  /**
353
367
  * Describes the message world.SerialDevice.
354
368
  * Use `create(SerialDeviceSchema)` to create a new message.
355
369
  */
356
370
  export const SerialDeviceSchema = /*@__PURE__*/
357
- messageDesc(file_world, 48);
371
+ messageDesc(file_world, 50);
372
+
373
+ /**
374
+ * Describes the message world.MeshtasticDevice.
375
+ * Use `create(MeshtasticDeviceSchema)` to create a new message.
376
+ */
377
+ export const MeshtasticDeviceSchema = /*@__PURE__*/
378
+ messageDesc(file_world, 51);
358
379
 
359
380
  /**
360
381
  * Describes the message world.LPWANDevice.
361
382
  * Use `create(LPWANDeviceSchema)` to create a new message.
362
383
  */
363
384
  export const LPWANDeviceSchema = /*@__PURE__*/
364
- messageDesc(file_world, 49);
385
+ messageDesc(file_world, 52);
365
386
 
366
387
  /**
367
388
  * Describes the message world.ConfigurationComponent.
368
389
  * Use `create(ConfigurationComponentSchema)` to create a new message.
369
390
  */
370
391
  export const ConfigurationComponentSchema = /*@__PURE__*/
371
- messageDesc(file_world, 50);
392
+ messageDesc(file_world, 53);
393
+
394
+ /**
395
+ * Describes the message world.ChatComponent.
396
+ * Use `create(ChatComponentSchema)` to create a new message.
397
+ */
398
+ export const ChatComponentSchema = /*@__PURE__*/
399
+ messageDesc(file_world, 54);
372
400
 
373
401
  /**
374
402
  * Describes the message world.EntityFilter.
375
403
  * Use `create(EntityFilterSchema)` to create a new message.
376
404
  */
377
405
  export const EntityFilterSchema = /*@__PURE__*/
378
- messageDesc(file_world, 51);
406
+ messageDesc(file_world, 55);
379
407
 
380
408
  /**
381
409
  * Describes the message world.ControllerFilter.
382
410
  * Use `create(ControllerFilterSchema)` to create a new message.
383
411
  */
384
412
  export const ControllerFilterSchema = /*@__PURE__*/
385
- messageDesc(file_world, 52);
413
+ messageDesc(file_world, 56);
386
414
 
387
415
  /**
388
416
  * Describes the message world.TrackFilter.
389
417
  * Use `create(TrackFilterSchema)` to create a new message.
390
418
  */
391
419
  export const TrackFilterSchema = /*@__PURE__*/
392
- messageDesc(file_world, 53);
420
+ messageDesc(file_world, 57);
393
421
 
394
422
  /**
395
423
  * Describes the message world.MissionFilter.
396
424
  * Use `create(MissionFilterSchema)` to create a new message.
397
425
  */
398
426
  export const MissionFilterSchema = /*@__PURE__*/
399
- messageDesc(file_world, 54);
427
+ messageDesc(file_world, 58);
400
428
 
401
429
  /**
402
430
  * Describes the message world.TaskableFilter.
403
431
  * Use `create(TaskableFilterSchema)` to create a new message.
404
432
  */
405
433
  export const TaskableFilterSchema = /*@__PURE__*/
406
- messageDesc(file_world, 55);
434
+ messageDesc(file_world, 59);
407
435
 
408
436
  /**
409
437
  * Describes the message world.GeoFilter.
410
438
  * Use `create(GeoFilterSchema)` to create a new message.
411
439
  */
412
440
  export const GeoFilterSchema = /*@__PURE__*/
413
- messageDesc(file_world, 56);
441
+ messageDesc(file_world, 60);
414
442
 
415
443
  /**
416
444
  * Describes the message world.DeviceFilter.
417
445
  * Use `create(DeviceFilterSchema)` to create a new message.
418
446
  */
419
447
  export const DeviceFilterSchema = /*@__PURE__*/
420
- messageDesc(file_world, 57);
448
+ messageDesc(file_world, 61);
421
449
 
422
450
  /**
423
451
  * Describes the message world.ConfigurationFilter.
424
452
  * Use `create(ConfigurationFilterSchema)` to create a new message.
425
453
  */
426
454
  export const ConfigurationFilterSchema = /*@__PURE__*/
427
- messageDesc(file_world, 58);
455
+ messageDesc(file_world, 62);
456
+
457
+ /**
458
+ * Describes the message world.ChannelFilter.
459
+ * Use `create(ChannelFilterSchema)` to create a new message.
460
+ */
461
+ export const ChannelFilterSchema = /*@__PURE__*/
462
+ messageDesc(file_world, 63);
428
463
 
429
464
  /**
430
465
  * Describes the message world.WatchBehavior.
431
466
  * Use `create(WatchBehaviorSchema)` to create a new message.
432
467
  */
433
468
  export const WatchBehaviorSchema = /*@__PURE__*/
434
- messageDesc(file_world, 59);
469
+ messageDesc(file_world, 64);
435
470
 
436
471
  /**
437
472
  * Describes the message world.ListEntitiesRequest.
438
473
  * Use `create(ListEntitiesRequestSchema)` to create a new message.
439
474
  */
440
475
  export const ListEntitiesRequestSchema = /*@__PURE__*/
441
- messageDesc(file_world, 60);
476
+ messageDesc(file_world, 65);
442
477
 
443
478
  /**
444
479
  * Describes the message world.ListEntitiesResponse.
445
480
  * Use `create(ListEntitiesResponseSchema)` to create a new message.
446
481
  */
447
482
  export const ListEntitiesResponseSchema = /*@__PURE__*/
448
- messageDesc(file_world, 61);
483
+ messageDesc(file_world, 66);
449
484
 
450
485
  /**
451
486
  * Describes the message world.EntityChangeRequest.
452
487
  * Use `create(EntityChangeRequestSchema)` to create a new message.
453
488
  */
454
489
  export const EntityChangeRequestSchema = /*@__PURE__*/
455
- messageDesc(file_world, 62);
490
+ messageDesc(file_world, 67);
456
491
 
457
492
  /**
458
493
  * Describes the message world.ExpireEntityRequest.
459
494
  * Use `create(ExpireEntityRequestSchema)` to create a new message.
460
495
  */
461
496
  export const ExpireEntityRequestSchema = /*@__PURE__*/
462
- messageDesc(file_world, 63);
497
+ messageDesc(file_world, 68);
463
498
 
464
499
  /**
465
500
  * Describes the message world.ExpireEntityResponse.
466
501
  * Use `create(ExpireEntityResponseSchema)` to create a new message.
467
502
  */
468
503
  export const ExpireEntityResponseSchema = /*@__PURE__*/
469
- messageDesc(file_world, 64);
504
+ messageDesc(file_world, 69);
470
505
 
471
506
  /**
472
507
  * Describes the message world.EntityChangeResponse.
473
508
  * Use `create(EntityChangeResponseSchema)` to create a new message.
474
509
  */
475
510
  export const EntityChangeResponseSchema = /*@__PURE__*/
476
- messageDesc(file_world, 65);
511
+ messageDesc(file_world, 70);
477
512
 
478
513
  /**
479
514
  * Describes the message world.EntityChangeEvent.
480
515
  * Use `create(EntityChangeEventSchema)` to create a new message.
481
516
  */
482
517
  export const EntityChangeEventSchema = /*@__PURE__*/
483
- messageDesc(file_world, 66);
518
+ messageDesc(file_world, 71);
484
519
 
485
520
  /**
486
521
  * Describes the message world.EntityChangeBatch.
487
522
  * Use `create(EntityChangeBatchSchema)` to create a new message.
488
523
  */
489
524
  export const EntityChangeBatchSchema = /*@__PURE__*/
490
- messageDesc(file_world, 67);
525
+ messageDesc(file_world, 72);
491
526
 
492
527
  /**
493
528
  * Describes the message world.GetEntityRequest.
494
529
  * Use `create(GetEntityRequestSchema)` to create a new message.
495
530
  */
496
531
  export const GetEntityRequestSchema = /*@__PURE__*/
497
- messageDesc(file_world, 68);
532
+ messageDesc(file_world, 73);
498
533
 
499
534
  /**
500
535
  * Describes the message world.GetEntityResponse.
501
536
  * Use `create(GetEntityResponseSchema)` to create a new message.
502
537
  */
503
538
  export const GetEntityResponseSchema = /*@__PURE__*/
504
- messageDesc(file_world, 69);
539
+ messageDesc(file_world, 74);
505
540
 
506
541
  /**
507
542
  * Describes the message world.GetLocalNodeRequest.
508
543
  * Use `create(GetLocalNodeRequestSchema)` to create a new message.
509
544
  */
510
545
  export const GetLocalNodeRequestSchema = /*@__PURE__*/
511
- messageDesc(file_world, 70);
546
+ messageDesc(file_world, 75);
512
547
 
513
548
  /**
514
549
  * Describes the message world.GetLocalNodeResponse.
515
550
  * Use `create(GetLocalNodeResponseSchema)` to create a new message.
516
551
  */
517
552
  export const GetLocalNodeResponseSchema = /*@__PURE__*/
518
- messageDesc(file_world, 71);
553
+ messageDesc(file_world, 76);
519
554
 
520
555
  /**
521
556
  * Describes the message world.ObserverRequest.
522
557
  * Use `create(ObserverRequestSchema)` to create a new message.
523
558
  */
524
559
  export const ObserverRequestSchema = /*@__PURE__*/
525
- messageDesc(file_world, 72);
560
+ messageDesc(file_world, 77);
526
561
 
527
562
  /**
528
563
  * Describes the message world.ObserverState.
529
564
  * Use `create(ObserverStateSchema)` to create a new message.
530
565
  */
531
566
  export const ObserverStateSchema = /*@__PURE__*/
532
- messageDesc(file_world, 73);
567
+ messageDesc(file_world, 78);
533
568
 
534
569
  /**
535
570
  * Describes the message world.RunTaskRequest.
536
571
  * Use `create(RunTaskRequestSchema)` to create a new message.
537
572
  */
538
573
  export const RunTaskRequestSchema = /*@__PURE__*/
539
- messageDesc(file_world, 74);
574
+ messageDesc(file_world, 79);
540
575
 
541
576
  /**
542
577
  * Describes the message world.RunTaskResponse.
543
578
  * Use `create(RunTaskResponseSchema)` to create a new message.
544
579
  */
545
580
  export const RunTaskResponseSchema = /*@__PURE__*/
546
- messageDesc(file_world, 75);
581
+ messageDesc(file_world, 80);
547
582
 
548
583
  /**
549
584
  * Describes the enum world.Priority.
@@ -689,11 +724,26 @@ export const EntityChangeSchema = /*@__PURE__*/
689
724
  export const EntityChange = /*@__PURE__*/
690
725
  tsEnum(EntityChangeSchema);
691
726
 
727
+ /**
728
+ * Describes the enum world.EntityComponent.
729
+ */
730
+ export const EntityComponentSchema = /*@__PURE__*/
731
+ enumDesc(file_world, 12);
732
+
733
+ /**
734
+ * Proto field numbers of Entity component fields.
735
+ * Used in EntityFilter.component and Lifetime.components.
736
+ *
737
+ * @generated from enum world.EntityComponent
738
+ */
739
+ export const EntityComponent = /*@__PURE__*/
740
+ tsEnum(EntityComponentSchema);
741
+
692
742
  /**
693
743
  * Describes the enum world.TaskStatus.
694
744
  */
695
745
  export const TaskStatusSchema = /*@__PURE__*/
696
- enumDesc(file_world, 12);
746
+ enumDesc(file_world, 13);
697
747
 
698
748
  /**
699
749
  * @generated from enum world.TaskStatus
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectqai/proto",
3
- "version": "0.0.29",
3
+ "version": "0.0.30",
4
4
  "author": "projectq-release-bot",
5
5
  "type": "module",
6
6
  "exports": {