@kusinta/iot-schema 0.2.0-beta.44 → 0.2.0-beta.46

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": "@kusinta/iot-schema",
3
- "version": "0.2.0-beta.44",
3
+ "version": "0.2.0-beta.46",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": ["src"],
@@ -417,22 +417,26 @@ export declare type RoomClimateList = Message<"kusinta.iot.climate.v1.RoomClimat
417
417
  export declare const RoomClimateListSchema: GenMessage<RoomClimateList>;
418
418
 
419
419
  /**
420
- * One fixed 15-minute bucket of a room's history. Every reading is optional: absent
421
- * means nothing was known for that bucket, never zero.
420
+ * One bucket of a room's history, of the length RoomHistory.resolution names. Every reading
421
+ * is optional: absent means nothing was known for that bucket, never zero.
422
+ *
423
+ * An hour is made of its quarter hours, each reading as stated beside it. A reading none of
424
+ * the hour's quarter hours knew is absent in the hour too; a mean is taken over the quarter
425
+ * hours that knew one, and a sum likewise, so an hour partly unknown sums only what was known.
422
426
  *
423
427
  * @generated from message kusinta.iot.climate.v1.RoomHistorySample
424
428
  */
425
429
  export declare type RoomHistorySample = Message<"kusinta.iot.climate.v1.RoomHistorySample"> & {
426
430
  /**
427
- * The start of the bucket. Buckets are fixed 15-minute intervals aligned to UTC
428
- * quarter hours (:00, :15, :30, :45).
431
+ * The start of the bucket.
429
432
  *
430
433
  * @generated from field: google.protobuf.Timestamp at = 1;
431
434
  */
432
435
  at?: Timestamp | undefined;
433
436
 
434
437
  /**
435
- * The mean of the room's measured temperature over the bucket, in centidegrees.
438
+ * The mean of the room's measured temperature over the bucket, in centidegrees. An hour:
439
+ * the mean of its quarter hours' means.
436
440
  *
437
441
  * @generated from field: optional sint32 measured_centidegrees = 2;
438
442
  */
@@ -440,7 +444,8 @@ export declare type RoomHistorySample = Message<"kusinta.iot.climate.v1.RoomHist
440
444
 
441
445
  /**
442
446
  * RoomClimate.target_centidegrees and .effective_target_centidegrees as they were in
443
- * force at the bucket's start, in centidegrees.
447
+ * force at the bucket's start, in centidegrees. An hour: its first quarter hour's, and so
448
+ * absent when that quarter hour did not know them, whatever the later ones knew.
444
449
  *
445
450
  * @generated from field: optional sint32 target_centidegrees = 3;
446
451
  */
@@ -453,14 +458,16 @@ export declare type RoomHistorySample = Message<"kusinta.iot.climate.v1.RoomHist
453
458
 
454
459
  /**
455
460
  * The mean opening over the bucket across the room's valves that report one, in
456
- * thousandths of fully open. Absent if none of them does.
461
+ * thousandths of fully open. Absent if none of them does. An hour: the mean of its quarter
462
+ * hours' means.
457
463
  *
458
464
  * @generated from field: optional uint32 valve_open_permille = 5;
459
465
  */
460
466
  valveOpenPermille?: number | undefined;
461
467
 
462
468
  /**
463
- * The seconds within the bucket during which any of the room's valves was open.
469
+ * The seconds within the bucket during which any of the room's valves was open. An hour:
470
+ * the sum of its quarter hours', so up to 3600.
464
471
  *
465
472
  * @generated from field: optional uint32 valve_open_seconds = 6;
466
473
  */
@@ -471,7 +478,8 @@ export declare type RoomHistorySample = Message<"kusinta.iot.climate.v1.RoomHist
471
478
  * (heating.v1.FloorZone), counted from the contact state the zone's output reports, read
472
479
  * through its closed_value, not from what was commanded. Kept apart from the valve
473
480
  * fields: a zone's duty and a valve's opening are different controls with different time
474
- * scales. Absent where no floor zone heats the room.
481
+ * scales. Absent where no floor zone heats the room. An hour: the sum of its quarter
482
+ * hours', as valve_open_seconds.
475
483
  *
476
484
  * @generated from field: optional uint32 floor_heating_seconds = 7;
477
485
  */
@@ -485,7 +493,13 @@ export declare type RoomHistorySample = Message<"kusinta.iot.climate.v1.RoomHist
485
493
  export declare const RoomHistorySampleSchema: GenMessage<RoomHistorySample>;
486
494
 
487
495
  /**
488
- * A room's history, in reply to GetRoomHistory.
496
+ * A room's history at one resolution, in reply to GetRoomHistory.
497
+ *
498
+ * A bucket is given only once the gateway has made it, never before it ends, and only where
499
+ * all of it lies within what the recipient may read. The covered range is over bucket starts,
500
+ * as the request's range is: a bucket is within it when covered_from <= at < covered_to. A
501
+ * bucket within it that is not among the samples is one for which nothing is known; of any
502
+ * other bucket this answer says nothing, and an app MUST NOT show it as empty on its account.
489
503
  *
490
504
  * @generated from message kusinta.iot.climate.v1.RoomHistory
491
505
  */
@@ -496,22 +510,60 @@ export declare type RoomHistory = Message<"kusinta.iot.climate.v1.RoomHistory">
496
510
  roomId?: SpaceId | undefined;
497
511
 
498
512
  /**
499
- * The earliest moment the gateway still holds for this room. The request's from_time
500
- * and to_time are clamped to [kept_from, now], so nothing before kept_from is ever
501
- * returned. For a room in the recipient's own home it is no earlier than the start of
502
- * their current residency, nor than when the room last joined their home; for any other
503
- * room, no earlier than when it last left a home.
513
+ * The start of the earliest bucket the gateway still holds for this room at this resolution
514
+ * that the recipient may read. The request's from_time and to_time are clamped to
515
+ * [kept_from, now], so nothing before kept_from is ever returned. For a room in the
516
+ * recipient's own home it is no earlier than the start of their current residency, nor than
517
+ * when the room last joined their home; for any other room, no earlier than when it last
518
+ * left a home. How far back the room's history reaches for the recipient, whether or not
519
+ * this answer reaches that far. Always set: where nothing is held for the recipient at this
520
+ * resolution, it is no earlier than covered_to.
504
521
  *
505
522
  * @generated from field: google.protobuf.Timestamp kept_from = 2;
506
523
  */
507
524
  keptFrom?: Timestamp | undefined;
508
525
 
509
526
  /**
510
- * The buckets within the clamped range, in order of `at`.
527
+ * The buckets within [covered_from, covered_to), in order of `at`.
511
528
  *
512
529
  * @generated from field: repeated kusinta.iot.climate.v1.RoomHistorySample samples = 3;
513
530
  */
514
531
  samples: RoomHistorySample[];
532
+
533
+ /**
534
+ * The length of the samples' buckets. An app labels and plots them by this, never by the
535
+ * resolution it asked for.
536
+ *
537
+ * @generated from field: kusinta.iot.climate.v1.RoomHistoryResolution resolution = 4;
538
+ */
539
+ resolution: RoomHistoryResolution;
540
+
541
+ /**
542
+ * The range this answer covers, [covered_from, covered_to). Both unset only in an answer
543
+ * from a gateway that predates them, which caps nothing: it covers the range asked, clamped.
544
+ *
545
+ * covered_to is the request's to_time as clamped, but never later than the start of the
546
+ * oldest bucket at this resolution the gateway has still to make — for an hour, possibly
547
+ * days after it ends — so no bucket within the range is made later. The time after it may be
548
+ * held at a finer resolution, and an app asks for it there.
549
+ *
550
+ * covered_from is the request's from_time as clamped, unless more than 768 samples fall
551
+ * between it and covered_to: then the answer is capped, keeping the newest 768, and
552
+ * covered_from is samples[0].at. Either way it is never later than covered_to, and an answer
553
+ * that covers nothing has the two equal.
554
+ *
555
+ * An answer is capped exactly when covered_from is later than kept_from and than the
556
+ * from_time asked for, if one was. The app asks for the next page with the same from_time,
557
+ * this answer's resolution, and to_time = covered_from, until an answer is not capped.
558
+ *
559
+ * @generated from field: google.protobuf.Timestamp covered_from = 5;
560
+ */
561
+ coveredFrom?: Timestamp | undefined;
562
+
563
+ /**
564
+ * @generated from field: google.protobuf.Timestamp covered_to = 6;
565
+ */
566
+ coveredTo?: Timestamp | undefined;
515
567
  };
516
568
 
517
569
  /**
@@ -968,6 +1020,49 @@ export enum ClimateModeKind {
968
1020
  */
969
1021
  export declare const ClimateModeKindSchema: GenEnum<ClimateModeKind>;
970
1022
 
1023
+ /**
1024
+ * The length of the buckets a room's history is given in. Buckets are fixed and aligned to
1025
+ * UTC, whatever the building's time zone.
1026
+ *
1027
+ * @generated from enum kusinta.iot.climate.v1.RoomHistoryResolution
1028
+ */
1029
+ export enum RoomHistoryResolution {
1030
+ /**
1031
+ * In a request: the gateway chooses (webrtc.v1.GetRoomHistory). In an answer: quarter hours,
1032
+ * from a gateway that predates this field.
1033
+ *
1034
+ * Rollout note: an app that predates this field asks with it unset and reads every sample as
1035
+ * a quarter hour and every answer as whole. A gateway may therefore give hours, or cap an
1036
+ * answer, only to apps that read RoomHistory.resolution and its covered range: app handling
1037
+ * ships before or with the gateway that does.
1038
+ *
1039
+ * @generated from enum value: ROOM_HISTORY_RESOLUTION_UNSPECIFIED = 0;
1040
+ */
1041
+ UNSPECIFIED = 0,
1042
+
1043
+ /**
1044
+ * 15-minute buckets (:00, :15, :30, :45).
1045
+ *
1046
+ * @generated from enum value: ROOM_HISTORY_RESOLUTION_QUARTER_HOUR = 1;
1047
+ */
1048
+ QUARTER_HOUR = 1,
1049
+
1050
+ /**
1051
+ * Hour buckets, each made of its four quarter hours as RoomHistorySample says. An hour is
1052
+ * given only where all of it lies within what the recipient may read (RoomHistory): one
1053
+ * that straddles the start of their residency, or the room joining their home, is left out,
1054
+ * never trimmed or averaged again from its readable part.
1055
+ *
1056
+ * @generated from enum value: ROOM_HISTORY_RESOLUTION_HOUR = 2;
1057
+ */
1058
+ HOUR = 2,
1059
+ }
1060
+
1061
+ /**
1062
+ * Describes the enum kusinta.iot.climate.v1.RoomHistoryResolution.
1063
+ */
1064
+ export declare const RoomHistoryResolutionSchema: GenEnum<RoomHistoryResolution>;
1065
+
971
1066
  /**
972
1067
  * The length of the periods an ApartmentClimateSummary is given in. Each period runs from
973
1068
  * the start of one local date to the start of another in the building's time zone
@@ -10,7 +10,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
10
10
  * Describes the file kusinta/iot/climate/v1/climate.proto.
11
11
  */
12
12
  export const file_kusinta_iot_climate_v1_climate = /*@__PURE__*/
13
- fileDesc("CiRrdXNpbnRhL2lvdC9jbGltYXRlL3YxL2NsaW1hdGUucHJvdG8SFmt1c2ludGEuaW90LmNsaW1hdGUudjEiogEKDFRhcmdldENoYW5nZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoEdXNlchgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZEgAEjMKBmRldmljZRgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkSABCBAoCYnkizggKC1Jvb21DbGltYXRlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIgChN0YXJnZXRfY2VudGlkZWdyZWVzGAIgASgRSACIAQESOwoNdGFyZ2V0X2NoYW5nZRgDIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuVGFyZ2V0Q2hhbmdlEioKHWVmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAGIAQESFgoOb3ZlcnJpZGVzX21vZGUYBSABKAgSNwoNbW9kZV9zcGFjZV9pZBgNIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSHQoQbWluX2NlbnRpZGVncmVlcxgGIAEoEUgCiAEBEh0KEG1heF9jZW50aWRlZ3JlZXMYByABKBFIA4gBARI1CgpzZW5zb3JfaWRzGAggAygLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSGgoSc2Vuc29yc19jb25maWd1cmVkGA4gASgIEiIKFW1lYXN1cmVkX2NlbnRpZGVncmVlcxgJIAEoEUgEiAEBEjYKC21lYXN1cmVkX2J5GAogASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSPwoJY29uZGl0aW9uGAsgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZUNvbmRpdGlvbhIcChRsb2NrX2RldmljZV9jb250cm9scxgMIAEoCBIWCg5zdGF0ZV93aXRoaGVsZBgPIAEoCBJACgxleHBsYW5hdGlvbnMYECADKAsyKi5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVFeHBsYW5hdGlvbhI1ChF0YXJnZXRfaGVsZF91bnRpbBgRIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNgoIcGxhbm5pbmcYEiABKA4yJC5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21QbGFubmluZxIqCh1jb21mb3J0X2JhbmRfbG93X2NlbnRpZGVncmVlcxgTIAEoEUgFiAEBEisKHmNvbWZvcnRfYmFuZF9oaWdoX2NlbnRpZGVncmVlcxgUIAEoEUgGiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzQiAKHl9lZmZlY3RpdmVfdGFyZ2V0X2NlbnRpZGVncmVlc0ITChFfbWluX2NlbnRpZGVncmVlc0ITChFfbWF4X2NlbnRpZGVncmVlc0IYChZfbWVhc3VyZWRfY2VudGlkZWdyZWVzQiAKHl9jb21mb3J0X2JhbmRfbG93X2NlbnRpZGVncmVlc0IhCh9fY29tZm9ydF9iYW5kX2hpZ2hfY2VudGlkZWdyZWVzIsMBChJDbGltYXRlRXhwbGFuYXRpb24SPAoEa2luZBgBIAEoDjIuLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZUV4cGxhbmF0aW9uS2luZBJCCgdzdWJqZWN0GAIgASgOMjEua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlRXhwbGFuYXRpb25TdWJqZWN0EisKB2VuZHNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIoMDCgtDbGltYXRlTW9kZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoEa2luZBgCIAEoDjInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGVLaW5kEiEKFHNldGJhY2tfY2VudGlkZWdyZWVzGAMgASgRSACIAQESLQoJc3RhcnRzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgZzZXRfYnkYBiABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSMgoJd2FybV9mcm9tGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlc0IMCgpfd2FybV9mcm9tInkKD1Jvb21DbGltYXRlTGlzdBIyCgVyb29tcxgBIAMoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGUSMgoFbW9kZXMYAiADKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVNb2RlIrEDChFSb29tSGlzdG9yeVNhbXBsZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIgoVbWVhc3VyZWRfY2VudGlkZWdyZWVzGAIgASgRSACIAQESIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgDIAEoEUgBiAEBEioKHWVmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAKIAQESIAoTdmFsdmVfb3Blbl9wZXJtaWxsZRgFIAEoDUgDiAEBEh8KEnZhbHZlX29wZW5fc2Vjb25kcxgGIAEoDUgEiAEBEiIKFWZsb29yX2hlYXRpbmdfc2Vjb25kcxgHIAEoDUgFiAEBQhgKFl9tZWFzdXJlZF9jZW50aWRlZ3JlZXNCFgoUX3RhcmdldF9jZW50aWRlZ3JlZXNCIAoeX2VmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzQhYKFF92YWx2ZV9vcGVuX3Blcm1pbGxlQhUKE192YWx2ZV9vcGVuX3NlY29uZHNCGAoWX2Zsb29yX2hlYXRpbmdfc2Vjb25kcyKrAQoLUm9vbUhpc3RvcnkSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLQoJa2VwdF9mcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6CgdzYW1wbGVzGAMgAygLMikua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeVNhbXBsZSLUAgoRQ2xpbWF0ZVBlcmlvZE1lYW4SLQoJc3RhcnRzX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIiChVtZWFzdXJlZF9jZW50aWRlZ3JlZXMYAyABKBFIAIgBARIgChN0YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAGIAQESIgoabWVhc3VyZWRfY292ZXJhZ2VfcGVybWlsbGUYBSABKA0SIAoYdGFyZ2V0X2NvdmVyYWdlX3Blcm1pbGxlGAYgASgNEhYKDnJvb21zX21lYXN1cmVkGAcgASgNEg0KBXJvb21zGAggASgNQhgKFl9tZWFzdXJlZF9jZW50aWRlZ3JlZXNCFgoUX3RhcmdldF9jZW50aWRlZ3JlZXMivgIKF0FwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBJCCgl3ZWlnaHRpbmcYAyABKA4yLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVTdW1tYXJ5V2VpZ2h0aW5nEi0KCWtlcHRfZnJvbRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoHcGVyaW9kcxgFIAMoCzIpLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVBlcmlvZE1lYW4q1QIKFFJvb21DbGltYXRlQ29uZGl0aW9uEiYKIlJPT01fQ0xJTUFURV9DT05ESVRJT05fVU5TUEVDSUZJRUQQABIiCh5ST09NX0NMSU1BVEVfQ09ORElUSU9OX0hPTERJTkcQARIkCiBST09NX0NMSU1BVEVfQ09ORElUSU9OX05PX1RBUkdFVBACEiYKIlJPT01fQ0xJTUFURV9DT05ESVRJT05fU0VOU09SX0xPU1QQAxImCiJST09NX0NMSU1BVEVfQ09ORElUSU9OX1dJTkRPV19PUEVOEAQSJQohUk9PTV9DTElNQVRFX0NPTkRJVElPTl9OT19IRUFUSU5HEAUSLgoqUk9PTV9DTElNQVRFX0NPTkRJVElPTl9IRUFUSU5HX1VOUkVBQ0hBQkxFEAYSJAogUk9PTV9DTElNQVRFX0NPTkRJVElPTl9OT19TRU5TT1IQByqGAQoMUm9vbVBsYW5uaW5nEh0KGVJPT01fUExBTk5JTkdfVU5TUEVDSUZJRUQQABIZChVST09NX1BMQU5OSU5HX1BMQU5ORUQQARIdChlST09NX1BMQU5OSU5HX05PVF9QTEFOTkVEEAISHQoZUk9PTV9QTEFOTklOR19VTkFWQUlMQUJMRRADKoAEChZDbGltYXRlRXhwbGFuYXRpb25LaW5kEigKJENMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9VTlNQRUNJRklFRBAAEiUKIUNMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9QUkVfSEVBVBABEiUKIUNMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9DT0FTVElORxACEicKI0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9QUklDRV9ISUdIEAMSJwojQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX1BFQUtfR1VBUkQQBBIvCitDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfSE9UX1dBVEVSX1BSSU9SSVRZEAUSMAosQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX1NIQVJFRF9QT1dFUl9CVURHRVQQBhIyCi5DTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfRElTVFJJQ1RfSEVBVElOR19QRUFLEAcSLworQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX0FUX0NPTUZPUlRfQ0VJTElORxAIEicKI0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9OT19SRUFESU5HEAkSKwonQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX09VVFNJREVfV0lORE9XEAoq9wEKGUNsaW1hdGVFeHBsYW5hdGlvblN1YmplY3QSKwonQ0xJTUFURV9FWFBMQU5BVElPTl9TVUJKRUNUX1VOU1BFQ0lGSUVEEAASJAogQ0xJTUFURV9FWFBMQU5BVElPTl9TVUJKRUNUX1JPT00QARIqCiZDTElNQVRFX0VYUExBTkFUSU9OX1NVQkpFQ1RfRkxPT1JfWk9ORRACEiwKKENMSU1BVEVfRVhQTEFOQVRJT05fU1VCSkVDVF9DT01GT1JUX0xPQUQQAxItCilDTElNQVRFX0VYUExBTkFUSU9OX1NVQkpFQ1RfQUREX09OX0hFQVRFUhAEKm8KD0NsaW1hdGVNb2RlS2luZBIhCh1DTElNQVRFX01PREVfS0lORF9VTlNQRUNJRklFRBAAEhoKFkNMSU1BVEVfTU9ERV9LSU5EX0FXQVkQARIdChlDTElNQVRFX01PREVfS0lORF9IT0xJREFZEAIqoQEKFENsaW1hdGVTdW1tYXJ5UGVyaW9kEiYKIkNMSU1BVEVfU1VNTUFSWV9QRVJJT0RfVU5TUEVDSUZJRUQQABIeChpDTElNQVRFX1NVTU1BUllfUEVSSU9EX0RBWRABEh8KG0NMSU1BVEVfU1VNTUFSWV9QRVJJT0RfV0VFSxACEiAKHENMSU1BVEVfU1VNTUFSWV9QRVJJT0RfTU9OVEgQAypvChdDbGltYXRlU3VtbWFyeVdlaWdodGluZxIpCiVDTElNQVRFX1NVTU1BUllfV0VJR0hUSU5HX1VOU1BFQ0lGSUVEEAASKQolQ0xJTUFURV9TVU1NQVJZX1dFSUdIVElOR19ST09NU19FUVVBTBABQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_identity_v1_identity]);
13
+ fileDesc("CiRrdXNpbnRhL2lvdC9jbGltYXRlL3YxL2NsaW1hdGUucHJvdG8SFmt1c2ludGEuaW90LmNsaW1hdGUudjEiogEKDFRhcmdldENoYW5nZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoEdXNlchgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZEgAEjMKBmRldmljZRgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkSABCBAoCYnkizggKC1Jvb21DbGltYXRlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIgChN0YXJnZXRfY2VudGlkZWdyZWVzGAIgASgRSACIAQESOwoNdGFyZ2V0X2NoYW5nZRgDIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuVGFyZ2V0Q2hhbmdlEioKHWVmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAGIAQESFgoOb3ZlcnJpZGVzX21vZGUYBSABKAgSNwoNbW9kZV9zcGFjZV9pZBgNIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSHQoQbWluX2NlbnRpZGVncmVlcxgGIAEoEUgCiAEBEh0KEG1heF9jZW50aWRlZ3JlZXMYByABKBFIA4gBARI1CgpzZW5zb3JfaWRzGAggAygLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSGgoSc2Vuc29yc19jb25maWd1cmVkGA4gASgIEiIKFW1lYXN1cmVkX2NlbnRpZGVncmVlcxgJIAEoEUgEiAEBEjYKC21lYXN1cmVkX2J5GAogASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSPwoJY29uZGl0aW9uGAsgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZUNvbmRpdGlvbhIcChRsb2NrX2RldmljZV9jb250cm9scxgMIAEoCBIWCg5zdGF0ZV93aXRoaGVsZBgPIAEoCBJACgxleHBsYW5hdGlvbnMYECADKAsyKi5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVFeHBsYW5hdGlvbhI1ChF0YXJnZXRfaGVsZF91bnRpbBgRIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNgoIcGxhbm5pbmcYEiABKA4yJC5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21QbGFubmluZxIqCh1jb21mb3J0X2JhbmRfbG93X2NlbnRpZGVncmVlcxgTIAEoEUgFiAEBEisKHmNvbWZvcnRfYmFuZF9oaWdoX2NlbnRpZGVncmVlcxgUIAEoEUgGiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzQiAKHl9lZmZlY3RpdmVfdGFyZ2V0X2NlbnRpZGVncmVlc0ITChFfbWluX2NlbnRpZGVncmVlc0ITChFfbWF4X2NlbnRpZGVncmVlc0IYChZfbWVhc3VyZWRfY2VudGlkZWdyZWVzQiAKHl9jb21mb3J0X2JhbmRfbG93X2NlbnRpZGVncmVlc0IhCh9fY29tZm9ydF9iYW5kX2hpZ2hfY2VudGlkZWdyZWVzIsMBChJDbGltYXRlRXhwbGFuYXRpb24SPAoEa2luZBgBIAEoDjIuLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZUV4cGxhbmF0aW9uS2luZBJCCgdzdWJqZWN0GAIgASgOMjEua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlRXhwbGFuYXRpb25TdWJqZWN0EisKB2VuZHNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIoMDCgtDbGltYXRlTW9kZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoEa2luZBgCIAEoDjInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGVLaW5kEiEKFHNldGJhY2tfY2VudGlkZWdyZWVzGAMgASgRSACIAQESLQoJc3RhcnRzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgZzZXRfYnkYBiABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSMgoJd2FybV9mcm9tGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlc0IMCgpfd2FybV9mcm9tInkKD1Jvb21DbGltYXRlTGlzdBIyCgVyb29tcxgBIAMoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGUSMgoFbW9kZXMYAiADKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVNb2RlIrEDChFSb29tSGlzdG9yeVNhbXBsZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIgoVbWVhc3VyZWRfY2VudGlkZWdyZWVzGAIgASgRSACIAQESIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgDIAEoEUgBiAEBEioKHWVmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAKIAQESIAoTdmFsdmVfb3Blbl9wZXJtaWxsZRgFIAEoDUgDiAEBEh8KEnZhbHZlX29wZW5fc2Vjb25kcxgGIAEoDUgEiAEBEiIKFWZsb29yX2hlYXRpbmdfc2Vjb25kcxgHIAEoDUgFiAEBQhgKFl9tZWFzdXJlZF9jZW50aWRlZ3JlZXNCFgoUX3RhcmdldF9jZW50aWRlZ3JlZXNCIAoeX2VmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzQhYKFF92YWx2ZV9vcGVuX3Blcm1pbGxlQhUKE192YWx2ZV9vcGVuX3NlY29uZHNCGAoWX2Zsb29yX2hlYXRpbmdfc2Vjb25kcyLQAgoLUm9vbUhpc3RvcnkSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLQoJa2VwdF9mcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6CgdzYW1wbGVzGAMgAygLMikua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeVNhbXBsZRJBCgpyZXNvbHV0aW9uGAQgASgOMi0ua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeVJlc29sdXRpb24SMAoMY292ZXJlZF9mcm9tGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjb3ZlcmVkX3RvGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLUAgoRQ2xpbWF0ZVBlcmlvZE1lYW4SLQoJc3RhcnRzX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIiChVtZWFzdXJlZF9jZW50aWRlZ3JlZXMYAyABKBFIAIgBARIgChN0YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAGIAQESIgoabWVhc3VyZWRfY292ZXJhZ2VfcGVybWlsbGUYBSABKA0SIAoYdGFyZ2V0X2NvdmVyYWdlX3Blcm1pbGxlGAYgASgNEhYKDnJvb21zX21lYXN1cmVkGAcgASgNEg0KBXJvb21zGAggASgNQhgKFl9tZWFzdXJlZF9jZW50aWRlZ3JlZXNCFgoUX3RhcmdldF9jZW50aWRlZ3JlZXMivgIKF0FwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBJCCgl3ZWlnaHRpbmcYAyABKA4yLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVTdW1tYXJ5V2VpZ2h0aW5nEi0KCWtlcHRfZnJvbRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoHcGVyaW9kcxgFIAMoCzIpLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVBlcmlvZE1lYW4q1QIKFFJvb21DbGltYXRlQ29uZGl0aW9uEiYKIlJPT01fQ0xJTUFURV9DT05ESVRJT05fVU5TUEVDSUZJRUQQABIiCh5ST09NX0NMSU1BVEVfQ09ORElUSU9OX0hPTERJTkcQARIkCiBST09NX0NMSU1BVEVfQ09ORElUSU9OX05PX1RBUkdFVBACEiYKIlJPT01fQ0xJTUFURV9DT05ESVRJT05fU0VOU09SX0xPU1QQAxImCiJST09NX0NMSU1BVEVfQ09ORElUSU9OX1dJTkRPV19PUEVOEAQSJQohUk9PTV9DTElNQVRFX0NPTkRJVElPTl9OT19IRUFUSU5HEAUSLgoqUk9PTV9DTElNQVRFX0NPTkRJVElPTl9IRUFUSU5HX1VOUkVBQ0hBQkxFEAYSJAogUk9PTV9DTElNQVRFX0NPTkRJVElPTl9OT19TRU5TT1IQByqGAQoMUm9vbVBsYW5uaW5nEh0KGVJPT01fUExBTk5JTkdfVU5TUEVDSUZJRUQQABIZChVST09NX1BMQU5OSU5HX1BMQU5ORUQQARIdChlST09NX1BMQU5OSU5HX05PVF9QTEFOTkVEEAISHQoZUk9PTV9QTEFOTklOR19VTkFWQUlMQUJMRRADKoAEChZDbGltYXRlRXhwbGFuYXRpb25LaW5kEigKJENMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9VTlNQRUNJRklFRBAAEiUKIUNMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9QUkVfSEVBVBABEiUKIUNMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9DT0FTVElORxACEicKI0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9QUklDRV9ISUdIEAMSJwojQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX1BFQUtfR1VBUkQQBBIvCitDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfSE9UX1dBVEVSX1BSSU9SSVRZEAUSMAosQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX1NIQVJFRF9QT1dFUl9CVURHRVQQBhIyCi5DTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfRElTVFJJQ1RfSEVBVElOR19QRUFLEAcSLworQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX0FUX0NPTUZPUlRfQ0VJTElORxAIEicKI0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9OT19SRUFESU5HEAkSKwonQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX09VVFNJREVfV0lORE9XEAoq9wEKGUNsaW1hdGVFeHBsYW5hdGlvblN1YmplY3QSKwonQ0xJTUFURV9FWFBMQU5BVElPTl9TVUJKRUNUX1VOU1BFQ0lGSUVEEAASJAogQ0xJTUFURV9FWFBMQU5BVElPTl9TVUJKRUNUX1JPT00QARIqCiZDTElNQVRFX0VYUExBTkFUSU9OX1NVQkpFQ1RfRkxPT1JfWk9ORRACEiwKKENMSU1BVEVfRVhQTEFOQVRJT05fU1VCSkVDVF9DT01GT1JUX0xPQUQQAxItCilDTElNQVRFX0VYUExBTkFUSU9OX1NVQkpFQ1RfQUREX09OX0hFQVRFUhAEKm8KD0NsaW1hdGVNb2RlS2luZBIhCh1DTElNQVRFX01PREVfS0lORF9VTlNQRUNJRklFRBAAEhoKFkNMSU1BVEVfTU9ERV9LSU5EX0FXQVkQARIdChlDTElNQVRFX01PREVfS0lORF9IT0xJREFZEAIqjAEKFVJvb21IaXN0b3J5UmVzb2x1dGlvbhInCiNST09NX0hJU1RPUllfUkVTT0xVVElPTl9VTlNQRUNJRklFRBAAEigKJFJPT01fSElTVE9SWV9SRVNPTFVUSU9OX1FVQVJURVJfSE9VUhABEiAKHFJPT01fSElTVE9SWV9SRVNPTFVUSU9OX0hPVVIQAiqhAQoUQ2xpbWF0ZVN1bW1hcnlQZXJpb2QSJgoiQ0xJTUFURV9TVU1NQVJZX1BFUklPRF9VTlNQRUNJRklFRBAAEh4KGkNMSU1BVEVfU1VNTUFSWV9QRVJJT0RfREFZEAESHwobQ0xJTUFURV9TVU1NQVJZX1BFUklPRF9XRUVLEAISIAocQ0xJTUFURV9TVU1NQVJZX1BFUklPRF9NT05USBADKm8KF0NsaW1hdGVTdW1tYXJ5V2VpZ2h0aW5nEikKJUNMSU1BVEVfU1VNTUFSWV9XRUlHSFRJTkdfVU5TUEVDSUZJRUQQABIpCiVDTElNQVRFX1NVTU1BUllfV0VJR0hUSU5HX1JPT01TX0VRVUFMEAFCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_identity_v1_identity]);
14
14
 
15
15
  /**
16
16
  * Describes the message kusinta.iot.climate.v1.TargetChange.
@@ -165,11 +165,26 @@ export const ClimateModeKindSchema = /*@__PURE__*/
165
165
  export const ClimateModeKind = /*@__PURE__*/
166
166
  tsEnum(ClimateModeKindSchema);
167
167
 
168
+ /**
169
+ * Describes the enum kusinta.iot.climate.v1.RoomHistoryResolution.
170
+ */
171
+ export const RoomHistoryResolutionSchema = /*@__PURE__*/
172
+ enumDesc(file_kusinta_iot_climate_v1_climate, 5);
173
+
174
+ /**
175
+ * The length of the buckets a room's history is given in. Buckets are fixed and aligned to
176
+ * UTC, whatever the building's time zone.
177
+ *
178
+ * @generated from enum kusinta.iot.climate.v1.RoomHistoryResolution
179
+ */
180
+ export const RoomHistoryResolution = /*@__PURE__*/
181
+ tsEnum(RoomHistoryResolutionSchema);
182
+
168
183
  /**
169
184
  * Describes the enum kusinta.iot.climate.v1.ClimateSummaryPeriod.
170
185
  */
171
186
  export const ClimateSummaryPeriodSchema = /*@__PURE__*/
172
- enumDesc(file_kusinta_iot_climate_v1_climate, 5);
187
+ enumDesc(file_kusinta_iot_climate_v1_climate, 6);
173
188
 
174
189
  /**
175
190
  * The length of the periods an ApartmentClimateSummary is given in. Each period runs from
@@ -194,7 +209,7 @@ export const ClimateSummaryPeriod = /*@__PURE__*/
194
209
  * Describes the enum kusinta.iot.climate.v1.ClimateSummaryWeighting.
195
210
  */
196
211
  export const ClimateSummaryWeightingSchema = /*@__PURE__*/
197
- enumDesc(file_kusinta_iot_climate_v1_climate, 6);
212
+ enumDesc(file_kusinta_iot_climate_v1_climate, 7);
198
213
 
199
214
  /**
200
215
  * How an apartment's mean is formed from its rooms' means.
@@ -743,6 +743,46 @@ export declare type CommissioningGrants = Message<"kusinta.iot.commissioning.v1.
743
743
  */
744
744
  export declare const CommissioningGrantsSchema: GenMessage<CommissioningGrants>;
745
745
 
746
+ /**
747
+ * A commissioning grant on a home that was granted, as its residents are told it afterwards
748
+ * (webrtc.v1.PrivacyDisclosure.commissioning_grants): who held commissioning access to their
749
+ * home, and when. The installer by the name they gave their account as the gateway last learnt
750
+ * it, never by user id; empty when none is learnt, and emptied once their account is deleted or
751
+ * removed from the gateway, when the record stays without it.
752
+ *
753
+ * @generated from message kusinta.iot.commissioning.v1.CommissioningGrantRecord
754
+ */
755
+ export declare type CommissioningGrantRecord = Message<"kusinta.iot.commissioning.v1.CommissioningGrantRecord"> & {
756
+ /**
757
+ * @generated from field: string installer_name = 1;
758
+ */
759
+ installerName: string;
760
+
761
+ /**
762
+ * When it was granted, and the time it covered: from its start until it ended. ended_at is
763
+ * unset while it is active.
764
+ *
765
+ * @generated from field: google.protobuf.Timestamp granted_at = 2;
766
+ */
767
+ grantedAt?: Timestamp | undefined;
768
+
769
+ /**
770
+ * @generated from field: google.protobuf.Timestamp starts_at = 3;
771
+ */
772
+ startsAt?: Timestamp | undefined;
773
+
774
+ /**
775
+ * @generated from field: google.protobuf.Timestamp ended_at = 4;
776
+ */
777
+ endedAt?: Timestamp | undefined;
778
+ };
779
+
780
+ /**
781
+ * Describes the message kusinta.iot.commissioning.v1.CommissioningGrantRecord.
782
+ * Use `create(CommissioningGrantRecordSchema)` to create a new message.
783
+ */
784
+ export declare const CommissioningGrantRecordSchema: GenMessage<CommissioningGrantRecord>;
785
+
746
786
  /**
747
787
  * Who answers a fact, or ran or concluded a test.
748
788
  *
@@ -11,7 +11,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
11
11
  * Describes the file kusinta/iot/commissioning/v1/commissioning.proto.
12
12
  */
13
13
  export const file_kusinta_iot_commissioning_v1_commissioning = /*@__PURE__*/
14
- fileDesc("CjBrdXNpbnRhL2lvdC9jb21taXNzaW9uaW5nL3YxL2NvbW1pc3Npb25pbmcucHJvdG8SHGt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEizwEKClByb3ZlbmFuY2USMgoFcGFydHkYASABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjgKCGV2aWRlbmNlGAIgASgOMiYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5FdmlkZW5jZRImCgJhdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoCYnkYBCABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQiLgoKQmluZGluZ1JlZhIRCglyZWNvcmRfaWQYASABKAkSDQoFZmllbGQYAiABKAkiMwoLVGVtcGxhdGVSZWYSEwoLdGVtcGxhdGVfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoDSL0BAoRQ29tbWlzc2lvbmluZ0ZhY3QSDwoHZmFjdF9pZBgBIAEoCRIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEQoJcmVjb3JkX2lkGAMgASgJEgsKA2tleRgEIAEoCRI2CgV2YWx1ZRgFIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZUgAEhEKB3Vua25vd24YBiABKAhIABI1CghhbnN3ZXJlchgHIAEoDjIjLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUGFydHkSOgoJbmVjZXNzaXR5GAggASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWNlc3NpdHkSNgoHZmVhdHVyZRgJIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI8Cgpwcm92ZW5hbmNlGAogASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlEhAKCHJldmlzaW9uGA0gASgEEkAKDWRldmlhdGVzX2Zyb20YDyABKAsyKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlUmVmEjYKBXRvcGljGBAgASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5GYWN0VG9waWNCCAoGYW5zd2VySgQICxANSgQIDhAPUgVzY29wZVIQdGVtcGxhdGVfdmVyc2lvblILdGVtcGxhdGVfaWQiegoMVGVtcGxhdGVGYWN0EgsKA2tleRgBIAEoCRIVCg1zdWJqZWN0X2xhYmVsGAIgASgJEjQKBXZhbHVlGAMgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlSgQIBBAFUgpwcm92ZW5hbmNlIvMBCg1Ib3VzZVRlbXBsYXRlEhMKC3RlbXBsYXRlX2lkGAEgASgJEjUKC2J1aWxkaW5nX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIMCgRuYW1lGAMgASgJEg8KB3ZlcnNpb24YBCABKA0SOQoFZmFjdHMYBSADKAsyKi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlRmFjdBI8Cgpwcm92ZW5hbmNlGAYgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlItsCCgROZWVkEhIKCGZhY3Rfa2V5GAEgASgJSAASNgoEdGVzdBgCIAEoDjImLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEtpbmRIABIyCghzcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoIYW5zd2VyZXIYBSABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjkKB2JpbmRpbmcYByABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSOwoKZmFjdF90b3BpYxgIIAEoDjInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmFjdFRvcGljQgYKBHdoYXRKBAgEEAVKBAgGEAdSCXJlY29yZF9pZFIFZmllbGQi2AEKDEZlYXR1cmVCbG9jaxI5CgZyZWFzb24YASABKA4yKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJsb2NrUmVhc29uEjQKCWRldmljZV9pZBgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjkKB2JpbmRpbmcYBSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEANKBAgEEAVSCXJlY29yZF9pZFIFZmllbGQi8QEKDUZlYXR1cmVTdGF0dXMSNgoHZmVhdHVyZRgBIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI5CgVzdGF0ZRgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZVN0YXRlEjEKBW5lZWRzGAMgAygLMiIua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWVkEjoKBmJsb2NrcxgEIAMoCzIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZUJsb2NrIrcEChFDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjQKBGtpbmQYAiABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYDSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSNAoJZGV2aWNlX2lkGAUgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSNgoFc3RhdGUYBiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZRI6CgdmYWlsdXJlGAcgASgOMikua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0RmFpbHVyZRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPAoKcHJvdmVuYW5jZRgLIAEoCzIoLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUHJvdmVuYW5jZRISCgpzdXBlcnNlZGVkGAwgASgISgQIAxAFUglyZWNvcmRfaWRSBWZpZWxkIvMCChRDb21taXNzaW9uaW5nUHJvZmlsZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPgoFZmFjdHMYAiADKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0Ej4KBXRlc3RzGAMgAygLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nVGVzdBI9CghmZWF0dXJlcxgEIAMoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZVN0YXR1cxI9Cgh0ZW1wbGF0ZRgGIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZRIWCg5uZWVkc193aXRoaGVsZBgHIAEoCEoECAUQBlILdGVtcGxhdGVfaWQiTgoJSG9tZVNldHVwEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg4KBnNldF91cBgCIAEoCCJECgpIb21lU2V0dXBzEjYKBWhvbWVzGAEgAygLMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXAi4gEKE0NvbW1pc3Npb25pbmdSZWNvcmQSPwoEZmFjdBgBIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0ZhY3RIABI/CgR0ZXN0GAIgASgLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nVGVzdEgAEj8KCHRlbXBsYXRlGAMgASgLMisua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib3VzZVRlbXBsYXRlSABCCAoGcmVjb3JkIo8EChJDb21taXNzaW9uaW5nR3JhbnQSEAoIZ3JhbnRfaWQYASABKAkSMgoIc3BhY2VfaWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjIKCWluc3RhbGxlchgDIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBIWCg5pbnN0YWxsZXJfbmFtZRgEIAEoCRJECgVzdGF0ZRgFIAEoDjI1Lmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50U3RhdGUSMAoMcmVxdWVzdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpleHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglzdGFydHNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmdyYW50ZWRfYnkYCiABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSLgoKZ3JhbnRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiwEKE0NvbW1pc3Npb25pbmdHcmFudHMSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEkAKBmdyYW50cxgCIAMoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50KnsKBVBhcnR5EhUKEVBBUlRZX1VOU1BFQ0lGSUVEEAASHAoYUEFSVFlfT1dORVJfT1JHQU5JU0FUSU9OEAESEwoPUEFSVFlfSE9VU0VIT0xEEAISEwoPUEFSVFlfSU5TVEFMTEVSEAMSEwoPUEFSVFlfQVVUT01BVElDEAQqcQoJTmVjZXNzaXR5EhkKFU5FQ0VTU0lUWV9VTlNQRUNJRklFRBAAEhYKEk5FQ0VTU0lUWV9SRVFVSVJFRBABEhkKFU5FQ0VTU0lUWV9GT1JfRkVBVFVSRRACEhYKEk5FQ0VTU0lUWV9PUFRJT05BTBADKqgBCghFdmlkZW5jZRIYChRFVklERU5DRV9VTlNQRUNJRklFRBAAEhMKD0VWSURFTkNFX1NUQVRFRBABEhIKDkVWSURFTkNFX1BIT1RPEAISFAoQRVZJREVOQ0VfRFJBV0lORxADEhYKEkVWSURFTkNFX0lOU1BFQ1RFRBAEEhUKEUVWSURFTkNFX01FQVNVUkVEEAUSFAoQRVZJREVOQ0VfREVSSVZFRBAGKqACCglGYWN0VG9waWMSGgoWRkFDVF9UT1BJQ19VTlNQRUNJRklFRBAAEhcKE0ZBQ1RfVE9QSUNfQlVJTERJTkcQARIUChBGQUNUX1RPUElDX1JPT01TEAISGgoWRkFDVF9UT1BJQ19IRUFUX1NPVVJDRRADEhwKGEZBQ1RfVE9QSUNfRkxPT1JfSEVBVElORxAEEhwKGEZBQ1RfVE9QSUNfQ09NRk9SVF9MT0FEUxAFEhoKFkZBQ1RfVE9QSUNfRUxFQ1RSSUNJVFkQBhIfChtGQUNUX1RPUElDX0RJU1RSSUNUX0hFQVRJTkcQBxIbChdGQUNUX1RPUElDX0NPTk5FQ1RJVklUWRAIEhYKEkZBQ1RfVE9QSUNfQ09NRk9SVBAJKqkBCgdGZWF0dXJlEhcKE0ZFQVRVUkVfVU5TUEVDSUZJRUQQABIXChNGRUFUVVJFX0ZMT09SX1pPTkVTEAESEQoNRkVBVFVSRV9QTEFOVBACEhkKFUZFQVRVUkVfQ09NRk9SVF9MT0FEUxADEhAKDEZFQVRVUkVfQ09TVBAEEhYKEkZFQVRVUkVfUEVBS19HVUFSRBAFEhQKEEZFQVRVUkVfUExBTk5JTkcQBiqFAQoMRmVhdHVyZVN0YXRlEh0KGUZFQVRVUkVfU1RBVEVfVU5TUEVDSUZJRUQQABIXChNGRUFUVVJFX1NUQVRFX1dPUktTEAESFwoTRkVBVFVSRV9TVEFURV9ORUVEUxACEiQKIEZFQVRVUkVfU1RBVEVfQkxPQ0tFRF9GT1JfU0FGRVRZEAMq9wEKC0Jsb2NrUmVhc29uEhwKGEJMT0NLX1JFQVNPTl9VTlNQRUNJRklFRBAAEhwKGEJMT0NLX1JFQVNPTl9URVNUX0ZBSUxFRBABEiIKHkJMT0NLX1JFQVNPTl9PVVRQVVRfTk9UX0xFQVNFRBACEiUKIUJMT0NLX1JFQVNPTl9QT1dFUl9PTl9OT1RfQVRfUkVTVBADEhwKGEJMT0NLX1JFQVNPTl9ERVZJQ0VfR09ORRAEEiIKHkJMT0NLX1JFQVNPTl9DT05UUk9MX1JPT01fR09ORRAFEh8KG0JMT0NLX1JFQVNPTl9MRUFTRV9UT09fTE9ORxAGKn4KCFRlc3RLaW5kEhkKFVRFU1RfS0lORF9VTlNQRUNJRklFRBAAEhoKFlRFU1RfS0lORF9PVVRQVVRfTEVBU0UQARIZChVURVNUX0tJTkRfWk9ORV9FRkZFQ1QQAhIgChxURVNUX0tJTkRfUFVNUF9BTExfWk9ORVNfT0ZGEAMqhQEKCVRlc3RTdGF0ZRIaChZURVNUX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSVEVTVF9TVEFURV9SVU5OSU5HEAESFQoRVEVTVF9TVEFURV9QQVNTRUQQAhIVChFURVNUX1NUQVRFX0ZBSUxFRBADEhYKElRFU1RfU1RBVEVfQUJPUlRFRBAEKp0CCgtUZXN0RmFpbHVyZRIcChhURVNUX0ZBSUxVUkVfVU5TUEVDSUZJRUQQABIlCiFURVNUX0ZBSUxVUkVfUE9XRVJfT05fTk9UX0FUX1JFU1QQARIgChxURVNUX0ZBSUxVUkVfTk9fU1RBVEVfQ0hBTkdFEAISIgoeVEVTVF9GQUlMVVJFX0xFQVNFX05PVF9SRU5FV0VEEAMSJwojVEVTVF9GQUlMVVJFX0RJRF9OT1RfUkVUVVJOX1RPX1JFU1QQBBIjCh9URVNUX0ZBSUxVUkVfREVWSUNFX1VOUkVBQ0hBQkxFEAUSGgoWVEVTVF9GQUlMVVJFX05PX0VGRkVDVBAGEhkKFVRFU1RfRkFJTFVSRV9PQlNFUlZFRBAHKpQBChdDb21taXNzaW9uaW5nR3JhbnRTdGF0ZRIpCiVDT01NSVNTSU9OSU5HX0dSQU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASJwojQ09NTUlTU0lPTklOR19HUkFOVF9TVEFURV9SRVFVRVNURUQQARIlCiFDT01NSVNTSU9OSU5HX0dSQU5UX1NUQVRFX0dSQU5URUQQAkICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_identity_v1_identity]);
14
+ fileDesc("CjBrdXNpbnRhL2lvdC9jb21taXNzaW9uaW5nL3YxL2NvbW1pc3Npb25pbmcucHJvdG8SHGt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEizwEKClByb3ZlbmFuY2USMgoFcGFydHkYASABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjgKCGV2aWRlbmNlGAIgASgOMiYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5FdmlkZW5jZRImCgJhdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoCYnkYBCABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQiLgoKQmluZGluZ1JlZhIRCglyZWNvcmRfaWQYASABKAkSDQoFZmllbGQYAiABKAkiMwoLVGVtcGxhdGVSZWYSEwoLdGVtcGxhdGVfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoDSL0BAoRQ29tbWlzc2lvbmluZ0ZhY3QSDwoHZmFjdF9pZBgBIAEoCRIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEQoJcmVjb3JkX2lkGAMgASgJEgsKA2tleRgEIAEoCRI2CgV2YWx1ZRgFIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZUgAEhEKB3Vua25vd24YBiABKAhIABI1CghhbnN3ZXJlchgHIAEoDjIjLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUGFydHkSOgoJbmVjZXNzaXR5GAggASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWNlc3NpdHkSNgoHZmVhdHVyZRgJIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI8Cgpwcm92ZW5hbmNlGAogASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlEhAKCHJldmlzaW9uGA0gASgEEkAKDWRldmlhdGVzX2Zyb20YDyABKAsyKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlUmVmEjYKBXRvcGljGBAgASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5GYWN0VG9waWNCCAoGYW5zd2VySgQICxANSgQIDhAPUgVzY29wZVIQdGVtcGxhdGVfdmVyc2lvblILdGVtcGxhdGVfaWQiegoMVGVtcGxhdGVGYWN0EgsKA2tleRgBIAEoCRIVCg1zdWJqZWN0X2xhYmVsGAIgASgJEjQKBXZhbHVlGAMgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlSgQIBBAFUgpwcm92ZW5hbmNlIvMBCg1Ib3VzZVRlbXBsYXRlEhMKC3RlbXBsYXRlX2lkGAEgASgJEjUKC2J1aWxkaW5nX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIMCgRuYW1lGAMgASgJEg8KB3ZlcnNpb24YBCABKA0SOQoFZmFjdHMYBSADKAsyKi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlRmFjdBI8Cgpwcm92ZW5hbmNlGAYgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlItsCCgROZWVkEhIKCGZhY3Rfa2V5GAEgASgJSAASNgoEdGVzdBgCIAEoDjImLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEtpbmRIABIyCghzcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoIYW5zd2VyZXIYBSABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjkKB2JpbmRpbmcYByABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSOwoKZmFjdF90b3BpYxgIIAEoDjInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmFjdFRvcGljQgYKBHdoYXRKBAgEEAVKBAgGEAdSCXJlY29yZF9pZFIFZmllbGQi2AEKDEZlYXR1cmVCbG9jaxI5CgZyZWFzb24YASABKA4yKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJsb2NrUmVhc29uEjQKCWRldmljZV9pZBgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjkKB2JpbmRpbmcYBSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEANKBAgEEAVSCXJlY29yZF9pZFIFZmllbGQi8QEKDUZlYXR1cmVTdGF0dXMSNgoHZmVhdHVyZRgBIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI5CgVzdGF0ZRgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZVN0YXRlEjEKBW5lZWRzGAMgAygLMiIua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWVkEjoKBmJsb2NrcxgEIAMoCzIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZUJsb2NrIrcEChFDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjQKBGtpbmQYAiABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYDSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSNAoJZGV2aWNlX2lkGAUgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSNgoFc3RhdGUYBiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZRI6CgdmYWlsdXJlGAcgASgOMikua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0RmFpbHVyZRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPAoKcHJvdmVuYW5jZRgLIAEoCzIoLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUHJvdmVuYW5jZRISCgpzdXBlcnNlZGVkGAwgASgISgQIAxAFUglyZWNvcmRfaWRSBWZpZWxkIvMCChRDb21taXNzaW9uaW5nUHJvZmlsZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPgoFZmFjdHMYAiADKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0Ej4KBXRlc3RzGAMgAygLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nVGVzdBI9CghmZWF0dXJlcxgEIAMoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZVN0YXR1cxI9Cgh0ZW1wbGF0ZRgGIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZRIWCg5uZWVkc193aXRoaGVsZBgHIAEoCEoECAUQBlILdGVtcGxhdGVfaWQiTgoJSG9tZVNldHVwEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg4KBnNldF91cBgCIAEoCCJECgpIb21lU2V0dXBzEjYKBWhvbWVzGAEgAygLMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXAi4gEKE0NvbW1pc3Npb25pbmdSZWNvcmQSPwoEZmFjdBgBIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0ZhY3RIABI/CgR0ZXN0GAIgASgLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nVGVzdEgAEj8KCHRlbXBsYXRlGAMgASgLMisua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib3VzZVRlbXBsYXRlSABCCAoGcmVjb3JkIo8EChJDb21taXNzaW9uaW5nR3JhbnQSEAoIZ3JhbnRfaWQYASABKAkSMgoIc3BhY2VfaWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjIKCWluc3RhbGxlchgDIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBIWCg5pbnN0YWxsZXJfbmFtZRgEIAEoCRJECgVzdGF0ZRgFIAEoDjI1Lmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50U3RhdGUSMAoMcmVxdWVzdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpleHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglzdGFydHNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmdyYW50ZWRfYnkYCiABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSLgoKZ3JhbnRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiwEKE0NvbW1pc3Npb25pbmdHcmFudHMSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEkAKBmdyYW50cxgCIAMoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50Ir8BChhDb21taXNzaW9uaW5nR3JhbnRSZWNvcmQSFgoOaW5zdGFsbGVyX25hbWUYASABKAkSLgoKZ3JhbnRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJc3RhcnRzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAqewoFUGFydHkSFQoRUEFSVFlfVU5TUEVDSUZJRUQQABIcChhQQVJUWV9PV05FUl9PUkdBTklTQVRJT04QARITCg9QQVJUWV9IT1VTRUhPTEQQAhITCg9QQVJUWV9JTlNUQUxMRVIQAxITCg9QQVJUWV9BVVRPTUFUSUMQBCpxCglOZWNlc3NpdHkSGQoVTkVDRVNTSVRZX1VOU1BFQ0lGSUVEEAASFgoSTkVDRVNTSVRZX1JFUVVJUkVEEAESGQoVTkVDRVNTSVRZX0ZPUl9GRUFUVVJFEAISFgoSTkVDRVNTSVRZX09QVElPTkFMEAMqqAEKCEV2aWRlbmNlEhgKFEVWSURFTkNFX1VOU1BFQ0lGSUVEEAASEwoPRVZJREVOQ0VfU1RBVEVEEAESEgoORVZJREVOQ0VfUEhPVE8QAhIUChBFVklERU5DRV9EUkFXSU5HEAMSFgoSRVZJREVOQ0VfSU5TUEVDVEVEEAQSFQoRRVZJREVOQ0VfTUVBU1VSRUQQBRIUChBFVklERU5DRV9ERVJJVkVEEAYqoAIKCUZhY3RUb3BpYxIaChZGQUNUX1RPUElDX1VOU1BFQ0lGSUVEEAASFwoTRkFDVF9UT1BJQ19CVUlMRElORxABEhQKEEZBQ1RfVE9QSUNfUk9PTVMQAhIaChZGQUNUX1RPUElDX0hFQVRfU09VUkNFEAMSHAoYRkFDVF9UT1BJQ19GTE9PUl9IRUFUSU5HEAQSHAoYRkFDVF9UT1BJQ19DT01GT1JUX0xPQURTEAUSGgoWRkFDVF9UT1BJQ19FTEVDVFJJQ0lUWRAGEh8KG0ZBQ1RfVE9QSUNfRElTVFJJQ1RfSEVBVElORxAHEhsKF0ZBQ1RfVE9QSUNfQ09OTkVDVElWSVRZEAgSFgoSRkFDVF9UT1BJQ19DT01GT1JUEAkqqQEKB0ZlYXR1cmUSFwoTRkVBVFVSRV9VTlNQRUNJRklFRBAAEhcKE0ZFQVRVUkVfRkxPT1JfWk9ORVMQARIRCg1GRUFUVVJFX1BMQU5UEAISGQoVRkVBVFVSRV9DT01GT1JUX0xPQURTEAMSEAoMRkVBVFVSRV9DT1NUEAQSFgoSRkVBVFVSRV9QRUFLX0dVQVJEEAUSFAoQRkVBVFVSRV9QTEFOTklORxAGKoUBCgxGZWF0dXJlU3RhdGUSHQoZRkVBVFVSRV9TVEFURV9VTlNQRUNJRklFRBAAEhcKE0ZFQVRVUkVfU1RBVEVfV09SS1MQARIXChNGRUFUVVJFX1NUQVRFX05FRURTEAISJAogRkVBVFVSRV9TVEFURV9CTE9DS0VEX0ZPUl9TQUZFVFkQAyr3AQoLQmxvY2tSZWFzb24SHAoYQkxPQ0tfUkVBU09OX1VOU1BFQ0lGSUVEEAASHAoYQkxPQ0tfUkVBU09OX1RFU1RfRkFJTEVEEAESIgoeQkxPQ0tfUkVBU09OX09VVFBVVF9OT1RfTEVBU0VEEAISJQohQkxPQ0tfUkVBU09OX1BPV0VSX09OX05PVF9BVF9SRVNUEAMSHAoYQkxPQ0tfUkVBU09OX0RFVklDRV9HT05FEAQSIgoeQkxPQ0tfUkVBU09OX0NPTlRST0xfUk9PTV9HT05FEAUSHwobQkxPQ0tfUkVBU09OX0xFQVNFX1RPT19MT05HEAYqfgoIVGVzdEtpbmQSGQoVVEVTVF9LSU5EX1VOU1BFQ0lGSUVEEAASGgoWVEVTVF9LSU5EX09VVFBVVF9MRUFTRRABEhkKFVRFU1RfS0lORF9aT05FX0VGRkVDVBACEiAKHFRFU1RfS0lORF9QVU1QX0FMTF9aT05FU19PRkYQAyqFAQoJVGVzdFN0YXRlEhoKFlRFU1RfU1RBVEVfVU5TUEVDSUZJRUQQABIWChJURVNUX1NUQVRFX1JVTk5JTkcQARIVChFURVNUX1NUQVRFX1BBU1NFRBACEhUKEVRFU1RfU1RBVEVfRkFJTEVEEAMSFgoSVEVTVF9TVEFURV9BQk9SVEVEEAQqnQIKC1Rlc3RGYWlsdXJlEhwKGFRFU1RfRkFJTFVSRV9VTlNQRUNJRklFRBAAEiUKIVRFU1RfRkFJTFVSRV9QT1dFUl9PTl9OT1RfQVRfUkVTVBABEiAKHFRFU1RfRkFJTFVSRV9OT19TVEFURV9DSEFOR0UQAhIiCh5URVNUX0ZBSUxVUkVfTEVBU0VfTk9UX1JFTkVXRUQQAxInCiNURVNUX0ZBSUxVUkVfRElEX05PVF9SRVRVUk5fVE9fUkVTVBAEEiMKH1RFU1RfRkFJTFVSRV9ERVZJQ0VfVU5SRUFDSEFCTEUQBRIaChZURVNUX0ZBSUxVUkVfTk9fRUZGRUNUEAYSGQoVVEVTVF9GQUlMVVJFX09CU0VSVkVEEAcqlAEKF0NvbW1pc3Npb25pbmdHcmFudFN0YXRlEikKJUNPTU1JU1NJT05JTkdfR1JBTlRfU1RBVEVfVU5TUEVDSUZJRUQQABInCiNDT01NSVNTSU9OSU5HX0dSQU5UX1NUQVRFX1JFUVVFU1RFRBABEiUKIUNPTU1JU1NJT05JTkdfR1JBTlRfU1RBVEVfR1JBTlRFRBACQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_identity_v1_identity]);
15
15
 
16
16
  /**
17
17
  * Describes the message kusinta.iot.commissioning.v1.Provenance.
@@ -125,6 +125,13 @@ export const CommissioningGrantSchema = /*@__PURE__*/
125
125
  export const CommissioningGrantsSchema = /*@__PURE__*/
126
126
  messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 15);
127
127
 
128
+ /**
129
+ * Describes the message kusinta.iot.commissioning.v1.CommissioningGrantRecord.
130
+ * Use `create(CommissioningGrantRecordSchema)` to create a new message.
131
+ */
132
+ export const CommissioningGrantRecordSchema = /*@__PURE__*/
133
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 16);
134
+
128
135
  /**
129
136
  * Describes the enum kusinta.iot.commissioning.v1.Party.
130
137
  */
@@ -128,8 +128,10 @@ export declare type DeviceEvent = Message<"kusinta.iot.device.v1.DeviceEvent"> &
128
128
  * how many it was not sent: that much a partial grant of events discloses.
129
129
  *
130
130
  * previous_event_number never names an event from before the user's current residency in
131
- * a home, nor from before their current, unbroken stretch of seeing the device — it is
132
- * unset instead, and follows_loss then looks no further back either. Otherwise it is the
131
+ * a home, nor from before their current, unbroken stretch of seeing the device, nor from
132
+ * before the home's climate history was last cleared (webrtc.v1 household.proto, CLIMATE
133
+ * HISTORY), which erases its events — it is unset instead, and follows_loss then looks no
134
+ * further back either. Otherwise it is the
133
135
  * event_number of the previous event of this device that this user was due — within the
134
136
  * grant they held when it happened — whether or not any session of theirs was open to be
135
137
  * sent it, so that events missed while away are a gap like any other. A number of the
@@ -15,7 +15,7 @@ import type { GatewayMembers, PromotionRequests } from "./members_pb.js";
15
15
  import type { HeatingLayout, HeatingRecord } from "../../heating/v1/heating_pb.js";
16
16
  import type { AccountLinkNonce, AccountLinks } from "../../accountlink/v1/account_link_pb.js";
17
17
  import type { CommissioningGrant, CommissioningGrants, CommissioningProfile, CommissioningRecord, CommissioningTest, HomeSetups } from "../../commissioning/v1/commissioning_pb.js";
18
- import type { HouseholdExport, HouseholdHandover, HouseholdHandovers } from "./household_pb.js";
18
+ import type { ClimateHistoryCleared, HouseholdExport, HouseholdHandover, HouseholdHandovers } from "./household_pb.js";
19
19
  import type { PairingErrorDetail, PairingWindow } from "../../common/v1/pairing_pb.js";
20
20
  import type { BackendHealth, ConnectorKind, DeviceOwnershipType } from "../../common/v1/types_pb.js";
21
21
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
@@ -1059,6 +1059,14 @@ export declare type GatewayMessage = Message<"kusinta.iot.webrtc.v1.GatewayMessa
1059
1059
  */
1060
1060
  value: HouseholdHandover;
1061
1061
  case: "householdHandover";
1062
+ } | {
1063
+ /**
1064
+ * A home's climate history was cleared; see ClimateHistoryCleared.
1065
+ *
1066
+ * @generated from field: kusinta.iot.webrtc.v1.ClimateHistoryCleared climate_history_cleared = 29;
1067
+ */
1068
+ value: ClimateHistoryCleared;
1069
+ case: "climateHistoryCleared";
1062
1070
  } | { case: undefined; value?: undefined };
1063
1071
  };
1064
1072
 
@@ -27,7 +27,7 @@ import { file_kusinta_iot_webrtc_v1_permission_push } from "./permission_push_pb
27
27
  * Describes the file kusinta/iot/webrtc/v1/envelope.proto.
28
28
  */
29
29
  export const file_kusinta_iot_webrtc_v1_envelope = /*@__PURE__*/
30
- fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciIwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIs8NChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIABJKChJhY2NvdW50X2xpbmtfbm9uY2UYESABKAsyLC5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua05vbmNlSAASQQoNYWNjb3VudF9saW5rcxgSIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rc0gAElMKFWNvbW1pc3Npb25pbmdfcHJvZmlsZRgTIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABJRChRjb21taXNzaW9uaW5nX3JlY29yZBgUIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1JlY29yZEgAEj8KC2hvbWVfc2V0dXBzGBUgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXBzSAASTwoTY29tbWlzc2lvbmluZ19ncmFudBgWIAEoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYFyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYGCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJIChNob3VzZWhvbGRfaGFuZG92ZXJzGBkgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyc0gAEkIKEGhvdXNlaG9sZF9leHBvcnQYGiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkRXhwb3J0SABCCAoGcmVzdWx0IvsBCgxTdGFydFBhaXJpbmcSOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSNAoGd2luZG93GAIgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdXaW5kb3cSOgoQaW5pdGlhbF9zcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPQoJb3duZXJzaGlwGAQgASgOMioua3VzaW50YS5pb3QuY29tbW9uLnYxLkRldmljZU93bmVyc2hpcFR5cGUijwEKDlBhaXJpbmdTdGFydGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCKXAQoPUGFpcmluZ0ZpbmlzaGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEjUKCmRldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwiTQoLTGlua0NoYW5nZWQSLQoEbGluaxgBIAEoCzIfLmt1c2ludGEuaW90LmxpbmsudjEuRGV2aWNlTGluaxIPCgdyZW1vdmVkGAIgASgIIogDChNDb25uZWN0b3JEZXNjcmlwdG9yEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAMgAygNEhgKEHN1cHBvcnRzX3BhaXJpbmcYBCABKAgSHQoVc3VwcG9ydHNfcHJvdmlzaW9uaW5nGAUgASgIEhUKDWJyb2tlcnNfbGlua3MYBiABKAgSMgoEa2luZBgHIAEoDjIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5Db25uZWN0b3JLaW5kEhMKC2Rlc2NyaXB0aW9uGAggASgJEjwKDmJhY2tlbmRfaGVhbHRoGAkgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLkJhY2tlbmRIZWFsdGgSJQodc3VwcG9ydHNfYmFja2VuZF9yZWluaXRpYWxpemUYCiABKAgiVQoTQ29ubmVjdG9yc0Fubm91bmNlZBI+Cgpjb25uZWN0b3JzGAEgAygLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvckRlc2NyaXB0b3IiRwoSUm9vbUNsaW1hdGVDaGFuZ2VkEjEKBHJvb20YASABKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlIlYKEkNsaW1hdGVNb2RlQ2hhbmdlZBIxCgRtb2RlGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZRINCgVlbmRlZBgCIAEoCCL4DQoOR2F0ZXdheU1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJECg5zdGF0ZV9zbmFwc2hvdBgDIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VTdGF0ZVNuYXBzaG90SAASQAoPcHJvcGVydHlfcmVwb3J0GAQgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3BlcnR5UmVwb3J0SAASSAoRcGVybWlzc2lvbl91cGRhdGUYBSABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGl2ZVBlcm1pc3Npb25VcGRhdGVIABI+Cg5jb21tYW5kX3Jlc3VsdBgGIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kUmVzdWx0SAASKwoEcG9uZxgIIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qb25nSAASRgoSaGFuZHNoYWtlX3JlamVjdGVkGAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhhbmRzaGFrZVJlamVjdGVkSAASNAoFZXJyb3IYCiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9ySAASQgoQc3Vic2NyaXB0aW9uX2FjaxgLIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdWJzY3JpcHRpb25BY2tIABI6CgxkZXZpY2VfYWRkZWQYDCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQWRkZWRIABI+Cg5kZXZpY2VfcmVtb3ZlZBgNIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VSZW1vdmVkSAASRAoRbWFuYWdlbWVudF9yZXN1bHQYDiABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFuYWdlbWVudFJlc3VsdEgAEkAKDWRldmljZV9ldmVudHMYECABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRXZlbnRCYXRjaEgAEkAKD3BhaXJpbmdfc3RhcnRlZBgRIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QYWlyaW5nU3RhcnRlZEgAEkIKEHBhaXJpbmdfZmluaXNoZWQYEiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ0ZpbmlzaGVkSAASOgoMbGlua19jaGFuZ2VkGBMgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpbmtDaGFuZ2VkSAASSgoUY29ubmVjdG9yc19hbm5vdW5jZWQYFCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29ubmVjdG9yc0Fubm91bmNlZEgAEkkKFHJvb21fY2xpbWF0ZV9jaGFuZ2VkGBUgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21DbGltYXRlQ2hhbmdlZEgAEkkKFGNsaW1hdGVfbW9kZV9jaGFuZ2VkGBYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsaW1hdGVNb2RlQ2hhbmdlZEgAEk0KFnNlcnZpY2Vfc3RhdHVzX2NoYW5nZWQYFyABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2VydmljZVN0YXR1c0NoYW5nZWRIABI8Cg1zcGFjZV9pbnZpdGVzGBggASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgZIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEk0KEmNvbW1pc3Npb25pbmdfdGVzdBgaIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3RIABJRChRjb21taXNzaW9uaW5nX2dyYW50cxgbIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50c0gAEkYKEmhvdXNlaG9sZF9oYW5kb3ZlchgcIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Ib3VzZWhvbGRIYW5kb3ZlckgAQgkKB3BheWxvYWRKBAgPEBBKBAgHEAhSFmF0dHJpYnV0ZV93cml0ZV9yZXN1bHRSDnByb3BlcnR5X2V2ZW50IoMFCgpBcHBNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoJaGFuZHNoYWtlGAMgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkFwcEhhbmRzaGFrZUgAEjcKB2NvbW1hbmQYBCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEkIKDHJlYWRfcmVxdWVzdBgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlYWRSZXF1ZXN0SAASKwoEcGluZxgGIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QaW5nSAASPAoJc3Vic2NyaWJlGAcgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlN1YnNjcmliZURldmljZXNIABJACgt1bnN1YnNjcmliZRgIIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbnN1YnNjcmliZURldmljZXNIABI+CgptYW5hZ2VtZW50GAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXF1ZXN0SAASRwoPYXR0cmlidXRlX3dyaXRlGAogASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEjwKDXN0YXJ0X3BhaXJpbmcYCyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRQYWlyaW5nSABCCQoHcGF5bG9hZCqiAgoQR2F0ZXdheUVycm9yQ29kZRIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIjCh9HQVRFV0FZX0VSUk9SX0NPREVfTk9UX0VOVElUTEVEEAESJgoiR0FURVdBWV9FUlJPUl9DT0RFX0lOVkFMSURfUkVRVUVTVBACEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTkFWQUlMQUJMRRADEh8KG0dBVEVXQVlfRVJST1JfQ09ERV9JTlRFUk5BTBAEEiwKKEdBVEVXQVlfRVJST1JfQ09ERV9TRVNTSU9OX0xJTUlUX1JFQUNIRUQQBRIqCiZHQVRFV0FZX0VSUk9SX0NPREVfRkFJTEVEX1BSRUNPTkRJVElPThAGQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_members, file_kusinta_iot_webrtc_v1_permission_push]);
30
+ fileDesc("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciIwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIs8NChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIABJKChJhY2NvdW50X2xpbmtfbm9uY2UYESABKAsyLC5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua05vbmNlSAASQQoNYWNjb3VudF9saW5rcxgSIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rc0gAElMKFWNvbW1pc3Npb25pbmdfcHJvZmlsZRgTIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABJRChRjb21taXNzaW9uaW5nX3JlY29yZBgUIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1JlY29yZEgAEj8KC2hvbWVfc2V0dXBzGBUgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXBzSAASTwoTY29tbWlzc2lvbmluZ19ncmFudBgWIAEoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYFyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYGCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJIChNob3VzZWhvbGRfaGFuZG92ZXJzGBkgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyc0gAEkIKEGhvdXNlaG9sZF9leHBvcnQYGiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkRXhwb3J0SABCCAoGcmVzdWx0IvsBCgxTdGFydFBhaXJpbmcSOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSNAoGd2luZG93GAIgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdXaW5kb3cSOgoQaW5pdGlhbF9zcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPQoJb3duZXJzaGlwGAQgASgOMioua3VzaW50YS5pb3QuY29tbW9uLnYxLkRldmljZU93bmVyc2hpcFR5cGUijwEKDlBhaXJpbmdTdGFydGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCKXAQoPUGFpcmluZ0ZpbmlzaGVkEhMKC2luX3JlcGx5X3RvGAEgASgJEjUKCmRldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwiTQoLTGlua0NoYW5nZWQSLQoEbGluaxgBIAEoCzIfLmt1c2ludGEuaW90LmxpbmsudjEuRGV2aWNlTGluaxIPCgdyZW1vdmVkGAIgASgIIogDChNDb25uZWN0b3JEZXNjcmlwdG9yEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIhChlzdXBwb3J0ZWRfZGV2aWNlX3R5cGVfaWRzGAMgAygNEhgKEHN1cHBvcnRzX3BhaXJpbmcYBCABKAgSHQoVc3VwcG9ydHNfcHJvdmlzaW9uaW5nGAUgASgIEhUKDWJyb2tlcnNfbGlua3MYBiABKAgSMgoEa2luZBgHIAEoDjIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5Db25uZWN0b3JLaW5kEhMKC2Rlc2NyaXB0aW9uGAggASgJEjwKDmJhY2tlbmRfaGVhbHRoGAkgASgLMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLkJhY2tlbmRIZWFsdGgSJQodc3VwcG9ydHNfYmFja2VuZF9yZWluaXRpYWxpemUYCiABKAgiVQoTQ29ubmVjdG9yc0Fubm91bmNlZBI+Cgpjb25uZWN0b3JzGAEgAygLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvckRlc2NyaXB0b3IiRwoSUm9vbUNsaW1hdGVDaGFuZ2VkEjEKBHJvb20YASABKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlIlYKEkNsaW1hdGVNb2RlQ2hhbmdlZBIxCgRtb2RlGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZRINCgVlbmRlZBgCIAEoCCLJDgoOR2F0ZXdheU1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJECg5zdGF0ZV9zbmFwc2hvdBgDIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VTdGF0ZVNuYXBzaG90SAASQAoPcHJvcGVydHlfcmVwb3J0GAQgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3BlcnR5UmVwb3J0SAASSAoRcGVybWlzc2lvbl91cGRhdGUYBSABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGl2ZVBlcm1pc3Npb25VcGRhdGVIABI+Cg5jb21tYW5kX3Jlc3VsdBgGIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kUmVzdWx0SAASKwoEcG9uZxgIIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qb25nSAASRgoSaGFuZHNoYWtlX3JlamVjdGVkGAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhhbmRzaGFrZVJlamVjdGVkSAASNAoFZXJyb3IYCiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9ySAASQgoQc3Vic2NyaXB0aW9uX2FjaxgLIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdWJzY3JpcHRpb25BY2tIABI6CgxkZXZpY2VfYWRkZWQYDCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQWRkZWRIABI+Cg5kZXZpY2VfcmVtb3ZlZBgNIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VSZW1vdmVkSAASRAoRbWFuYWdlbWVudF9yZXN1bHQYDiABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFuYWdlbWVudFJlc3VsdEgAEkAKDWRldmljZV9ldmVudHMYECABKAsyJy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGV2aWNlRXZlbnRCYXRjaEgAEkAKD3BhaXJpbmdfc3RhcnRlZBgRIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QYWlyaW5nU3RhcnRlZEgAEkIKEHBhaXJpbmdfZmluaXNoZWQYEiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ0ZpbmlzaGVkSAASOgoMbGlua19jaGFuZ2VkGBMgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpbmtDaGFuZ2VkSAASSgoUY29ubmVjdG9yc19hbm5vdW5jZWQYFCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29ubmVjdG9yc0Fubm91bmNlZEgAEkkKFHJvb21fY2xpbWF0ZV9jaGFuZ2VkGBUgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21DbGltYXRlQ2hhbmdlZEgAEkkKFGNsaW1hdGVfbW9kZV9jaGFuZ2VkGBYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsaW1hdGVNb2RlQ2hhbmdlZEgAEk0KFnNlcnZpY2Vfc3RhdHVzX2NoYW5nZWQYFyABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2VydmljZVN0YXR1c0NoYW5nZWRIABI8Cg1zcGFjZV9pbnZpdGVzGBggASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgZIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEk0KEmNvbW1pc3Npb25pbmdfdGVzdBgaIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3RIABJRChRjb21taXNzaW9uaW5nX2dyYW50cxgbIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50c0gAEkYKEmhvdXNlaG9sZF9oYW5kb3ZlchgcIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Ib3VzZWhvbGRIYW5kb3ZlckgAEk8KF2NsaW1hdGVfaGlzdG9yeV9jbGVhcmVkGB0gASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsaW1hdGVIaXN0b3J5Q2xlYXJlZEgAQgkKB3BheWxvYWRKBAgPEBBKBAgHEAhSFmF0dHJpYnV0ZV93cml0ZV9yZXN1bHRSDnByb3BlcnR5X2V2ZW50IoMFCgpBcHBNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoJaGFuZHNoYWtlGAMgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkFwcEhhbmRzaGFrZUgAEjcKB2NvbW1hbmQYBCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlQ29tbWFuZEgAEkIKDHJlYWRfcmVxdWVzdBgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlYWRSZXF1ZXN0SAASKwoEcGluZxgGIAEoCzIbLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QaW5nSAASPAoJc3Vic2NyaWJlGAcgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlN1YnNjcmliZURldmljZXNIABJACgt1bnN1YnNjcmliZRgIIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbnN1YnNjcmliZURldmljZXNIABI+CgptYW5hZ2VtZW50GAkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXF1ZXN0SAASRwoPYXR0cmlidXRlX3dyaXRlGAogASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkF0dHJpYnV0ZVdyaXRlUmVxdWVzdEgAEjwKDXN0YXJ0X3BhaXJpbmcYCyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRQYWlyaW5nSABCCQoHcGF5bG9hZCqiAgoQR2F0ZXdheUVycm9yQ29kZRIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIjCh9HQVRFV0FZX0VSUk9SX0NPREVfTk9UX0VOVElUTEVEEAESJgoiR0FURVdBWV9FUlJPUl9DT0RFX0lOVkFMSURfUkVRVUVTVBACEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTkFWQUlMQUJMRRADEh8KG0dBVEVXQVlfRVJST1JfQ09ERV9JTlRFUk5BTBAEEiwKKEdBVEVXQVlfRVJST1JfQ09ERV9TRVNTSU9OX0xJTUlUX1JFQUNIRUQQBRIqCiZHQVRFV0FZX0VSUk9SX0NPREVfRkFJTEVEX1BSRUNPTkRJVElPThAGQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_pairing, file_kusinta_iot_common_v1_types, file_kusinta_iot_device_v1_device_event, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_webrtc_v1_command, file_kusinta_iot_webrtc_v1_device_state, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_management, file_kusinta_iot_webrtc_v1_members, file_kusinta_iot_webrtc_v1_permission_push]);
31
31
 
32
32
  /**
33
33
  * Describes the message kusinta.iot.webrtc.v1.Ping.
@@ -62,8 +62,9 @@ export declare type StaffAppointment = Message<"kusinta.iot.webrtc.v1.StaffAppoi
62
62
 
63
63
  /**
64
64
  * The staff member who appointed them, and the name they gave their account
65
- * (AppTokenClaims.name) as the gateway last learnt it; empty when none is learnt.
66
- * Self-chosen, as MemberDetail.name is.
65
+ * (AppTokenClaims.name) as the gateway last learnt it; empty when none is learnt. Both are
66
+ * cleared once that account is deleted or removed from the gateway, when the record stays
67
+ * without them. Self-chosen, as MemberDetail.name is.
67
68
  *
68
69
  * @generated from field: kusinta.iot.identity.v1.UserId appointed_by = 2;
69
70
  */
@@ -290,6 +291,77 @@ export declare type HouseholdHandover = Message<"kusinta.iot.webrtc.v1.Household
290
291
  */
291
292
  export declare const HouseholdHandoverSchema: GenMessage<HouseholdHandover>;
292
293
 
294
+ /**
295
+ * Erases a home's climate history (CLIMATE HISTORY), in one step, all of it or none, and
296
+ * nothing else. Answered with ManagementAck once it is erased. A household admin of the home
297
+ * only (HOUSEHOLD ADMIN, ADMIN-LESS HOME), and so not the departing household of a vacated
298
+ * handover (VACANCY); anyone else is refused as NOT_ENTITLED. home_id must be an apartment
299
+ * (INVALID_REQUEST otherwise).
300
+ *
301
+ * All of it goes, whenever it was recorded: also what the caller may not read themselves, from
302
+ * before their residency. Every resident of the home loses it, not only the caller, and each is
303
+ * told (ClimateHistoryCleared). Nothing recorded before the clear is kept, or recorded at or
304
+ * after it, a late write included: room history begins again with the first bucket that starts
305
+ * at or after the clear, and the summary of each length with its first period that starts at or
306
+ * after the clear; the gateway learns its models and makes its plans afresh from what is
307
+ * recorded at or after it. The household's members, the home's rooms and their settings, its
308
+ * modes, its commissioning and its heating records stay. It cannot be undone, and the gateway
309
+ * keeps no copy: an app asks its user to confirm, saying that everyone in the home loses it, and
310
+ * offers the household's export (EXPORT) first. Later parts of an export under way give nothing
311
+ * that was erased.
312
+ *
313
+ * The clear is pushed as ClimateHistoryCleared to every session of the home's residents, the
314
+ * caller's included, before the acknowledgement.
315
+ *
316
+ * The summaries are erased for everyone they are given to, so the property owner, the gateway
317
+ * administrators and whoever else is given the apartment's summary as service
318
+ * (PrivacyDisclosure.climate_summary_period) lose its periods from before the clear too, and
319
+ * are given none until the first period that starts at or after it has closed.
320
+ *
321
+ * @generated from message kusinta.iot.webrtc.v1.ClearClimateHistory
322
+ */
323
+ export declare type ClearClimateHistory = Message<"kusinta.iot.webrtc.v1.ClearClimateHistory"> & {
324
+ /**
325
+ * @generated from field: kusinta.iot.identity.v1.SpaceId home_id = 1;
326
+ */
327
+ homeId?: SpaceId | undefined;
328
+ };
329
+
330
+ /**
331
+ * Describes the message kusinta.iot.webrtc.v1.ClearClimateHistory.
332
+ * Use `create(ClearClimateHistorySchema)` to create a new message.
333
+ */
334
+ export declare const ClearClimateHistorySchema: GenMessage<ClearClimateHistory>;
335
+
336
+ /**
337
+ * A home's climate history was cleared (ClearClimateHistory), pushed as
338
+ * GatewayMessage.climate_history_cleared to the sessions of its residents. An app drops on
339
+ * arrival every room history, climate summary and device event of the home it holds from before
340
+ * cleared_at, rather than keeping what the gateway no longer does, and keeps cleared_at as a
341
+ * lasting floor for the home: a sample, period or event dated before it that arrives later — an
342
+ * answer already in flight at the clear — is dropped on arrival too. Nobody else is told:
343
+ * whoever is given the apartment's summary as service learns of it by reading it.
344
+ *
345
+ * @generated from message kusinta.iot.webrtc.v1.ClimateHistoryCleared
346
+ */
347
+ export declare type ClimateHistoryCleared = Message<"kusinta.iot.webrtc.v1.ClimateHistoryCleared"> & {
348
+ /**
349
+ * @generated from field: kusinta.iot.identity.v1.SpaceId home_id = 1;
350
+ */
351
+ homeId?: SpaceId | undefined;
352
+
353
+ /**
354
+ * @generated from field: google.protobuf.Timestamp cleared_at = 2;
355
+ */
356
+ clearedAt?: Timestamp | undefined;
357
+ };
358
+
359
+ /**
360
+ * Describes the message kusinta.iot.webrtc.v1.ClimateHistoryCleared.
361
+ * Use `create(ClimateHistoryClearedSchema)` to create a new message.
362
+ */
363
+ export declare const ClimateHistoryClearedSchema: GenMessage<ClimateHistoryCleared>;
364
+
293
365
  /**
294
366
  * Sets the household's own name for its home (space.v1.Space.home_name). Answered with
295
367
  * ManagementAck. Any resident of the home may — a name is not governance, so it is not kept to
@@ -397,8 +469,11 @@ export declare type HouseholdExport = Message<"kusinta.iot.webrtc.v1.HouseholdEx
397
469
  case: "roomClimates";
398
470
  } | {
399
471
  /**
400
- * One room's history over at most 7 days of buckets, as GetRoomHistory answers it. A
401
- * room's history comes in as many parts as it takes, in order.
472
+ * One room's history at one resolution, one GetRoomHistory answer's worth. A room's history
473
+ * comes at the finest resolution held for each stretch of time, with no time given twice:
474
+ * at the finest resolution the gateway gives, from its kept_from; at each coarser one, the
475
+ * buckets from its kept_from that end at or before the next finer one's kept_from. In as
476
+ * many parts as it takes.
402
477
  *
403
478
  * @generated from field: kusinta.iot.climate.v1.RoomHistory room_history = 3;
404
479
  */
@@ -13,7 +13,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
13
13
  * Describes the file kusinta/iot/webrtc/v1/household.proto.
14
14
  */
15
15
  export const file_kusinta_iot_webrtc_v1_household = /*@__PURE__*/
16
- fileDesc("CiVrdXNpbnRhL2lvdC93ZWJydGMvdjEvaG91c2Vob2xkLnByb3RvEhVrdXNpbnRhLmlvdC53ZWJydGMudjEiewoURGVtb3RlSG91c2Vob2xkQWRtaW4SMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMAoHdXNlcl9pZBgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZCL7AQoQU3RhZmZBcHBvaW50bWVudBIyCglhcHBvaW50ZWUYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNQoMYXBwb2ludGVkX2J5GAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhkKEWFwcG9pbnRlZF9ieV9uYW1lGAMgASgJEiYKAmF0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5CgRraW5kGAUgASgOMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YWZmQXBwb2ludG1lbnRLaW5kIksKFlN0YXJ0SG91c2Vob2xkSGFuZG92ZXISMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiLwoYQ29uZmlybUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIi4KF0NhbmNlbEhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIlEKFkxpc3RIb3VzZWhvbGRIYW5kb3ZlcnMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7wMKEUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJEjEKB2hvbWVfaWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBXN0YXRlGAMgASgOMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSMwoKc3RhcnRlZF9ieRgEIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBIXCg9zdGFydGVkX2J5X25hbWUYBSABKAkSGAoQc3RhcnRlZF9ieV9zdGFmZhgGIAEoCBIuCgpzdGFydGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZzdGFmZl9jb25maXJtYWJsZV9mcm9tGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmFjYXRlZBgKIAEoCBIeChZyZWNpcGllbnRfaW5faG91c2Vob2xkGAsgASgIEiEKGXJlY2lwaWVudF9ob3VzZWhvbGRfYWRtaW4YDCABKAgiTgoLU2V0SG9tZU5hbWUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSDAoEbmFtZRgCIAEoCSJRChJIb3VzZWhvbGRIYW5kb3ZlcnMSOwoJaGFuZG92ZXJzGAEgAygLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyIlwKE0V4cG9ydEhvdXNlaG9sZERhdGESMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEgoKcGFydF90b2tlbhgCIAEoCSK3AwoPSG91c2Vob2xkRXhwb3J0EjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEkAKDXJvb21fY2xpbWF0ZXMYAiABKAsyJy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlTGlzdEgAEjsKDHJvb21faGlzdG9yeRgDIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlIABJKCg9jbGltYXRlX3N1bW1hcnkYBCABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASSwoNY29tbWlzc2lvbmluZxgFIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABI4CgdoZWF0aW5nGAYgASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASFwoPbmV4dF9wYXJ0X3Rva2VuGAcgASgJQgYKBHBhcnQqhwEKFFN0YWZmQXBwb2ludG1lbnRLaW5kEiYKIlNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1TVEFGRl9BUFBPSU5UTUVOVF9LSU5EX0lOVklURRABEiQKIFNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfUFJPTU9USU9OEAIqswEKFkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSKAokSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASJAogSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1BFTkRJTkcQARImCiJIT1VTRUhPTERfSEFORE9WRVJfU1RBVEVfQ0FOQ0VMTEVEEAISIQodSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX0RPTkUQA0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity]);
16
+ fileDesc("CiVrdXNpbnRhL2lvdC93ZWJydGMvdjEvaG91c2Vob2xkLnByb3RvEhVrdXNpbnRhLmlvdC53ZWJydGMudjEiewoURGVtb3RlSG91c2Vob2xkQWRtaW4SMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMAoHdXNlcl9pZBgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZCL7AQoQU3RhZmZBcHBvaW50bWVudBIyCglhcHBvaW50ZWUYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNQoMYXBwb2ludGVkX2J5GAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEhkKEWFwcG9pbnRlZF9ieV9uYW1lGAMgASgJEiYKAmF0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5CgRraW5kGAUgASgOMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YWZmQXBwb2ludG1lbnRLaW5kIksKFlN0YXJ0SG91c2Vob2xkSGFuZG92ZXISMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiLwoYQ29uZmlybUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIi4KF0NhbmNlbEhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJIlEKFkxpc3RIb3VzZWhvbGRIYW5kb3ZlcnMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7wMKEUhvdXNlaG9sZEhhbmRvdmVyEhMKC2hhbmRvdmVyX2lkGAEgASgJEjEKB2hvbWVfaWQYAiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBXN0YXRlGAMgASgOMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSMwoKc3RhcnRlZF9ieRgEIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBIXCg9zdGFydGVkX2J5X25hbWUYBSABKAkSGAoQc3RhcnRlZF9ieV9zdGFmZhgGIAEoCBIuCgpzdGFydGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZzdGFmZl9jb25maXJtYWJsZV9mcm9tGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHdmFjYXRlZBgKIAEoCBIeChZyZWNpcGllbnRfaW5faG91c2Vob2xkGAsgASgIEiEKGXJlY2lwaWVudF9ob3VzZWhvbGRfYWRtaW4YDCABKAgiSAoTQ2xlYXJDbGltYXRlSGlzdG9yeRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ6ChVDbGltYXRlSGlzdG9yeUNsZWFyZWQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLgoKY2xlYXJlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiTgoLU2V0SG9tZU5hbWUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSDAoEbmFtZRgCIAEoCSJRChJIb3VzZWhvbGRIYW5kb3ZlcnMSOwoJaGFuZG92ZXJzGAEgAygLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyIlwKE0V4cG9ydEhvdXNlaG9sZERhdGESMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEgoKcGFydF90b2tlbhgCIAEoCSK3AwoPSG91c2Vob2xkRXhwb3J0EjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEkAKDXJvb21fY2xpbWF0ZXMYAiABKAsyJy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21DbGltYXRlTGlzdEgAEjsKDHJvb21faGlzdG9yeRgDIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlIABJKCg9jbGltYXRlX3N1bW1hcnkYBCABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASSwoNY29tbWlzc2lvbmluZxgFIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABI4CgdoZWF0aW5nGAYgASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASFwoPbmV4dF9wYXJ0X3Rva2VuGAcgASgJQgYKBHBhcnQqhwEKFFN0YWZmQXBwb2ludG1lbnRLaW5kEiYKIlNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1TVEFGRl9BUFBPSU5UTUVOVF9LSU5EX0lOVklURRABEiQKIFNUQUZGX0FQUE9JTlRNRU5UX0tJTkRfUFJPTU9USU9OEAIqswEKFkhvdXNlaG9sZEhhbmRvdmVyU3RhdGUSKAokSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASJAogSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX1BFTkRJTkcQARImCiJIT1VTRUhPTERfSEFORE9WRVJfU1RBVEVfQ0FOQ0VMTEVEEAISIQodSE9VU0VIT0xEX0hBTkRPVkVSX1NUQVRFX0RPTkUQA0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity]);
17
17
 
18
18
  /**
19
19
  * Describes the message kusinta.iot.webrtc.v1.DemoteHouseholdAdmin.
@@ -64,33 +64,47 @@ export const ListHouseholdHandoversSchema = /*@__PURE__*/
64
64
  export const HouseholdHandoverSchema = /*@__PURE__*/
65
65
  messageDesc(file_kusinta_iot_webrtc_v1_household, 6);
66
66
 
67
+ /**
68
+ * Describes the message kusinta.iot.webrtc.v1.ClearClimateHistory.
69
+ * Use `create(ClearClimateHistorySchema)` to create a new message.
70
+ */
71
+ export const ClearClimateHistorySchema = /*@__PURE__*/
72
+ messageDesc(file_kusinta_iot_webrtc_v1_household, 7);
73
+
74
+ /**
75
+ * Describes the message kusinta.iot.webrtc.v1.ClimateHistoryCleared.
76
+ * Use `create(ClimateHistoryClearedSchema)` to create a new message.
77
+ */
78
+ export const ClimateHistoryClearedSchema = /*@__PURE__*/
79
+ messageDesc(file_kusinta_iot_webrtc_v1_household, 8);
80
+
67
81
  /**
68
82
  * Describes the message kusinta.iot.webrtc.v1.SetHomeName.
69
83
  * Use `create(SetHomeNameSchema)` to create a new message.
70
84
  */
71
85
  export const SetHomeNameSchema = /*@__PURE__*/
72
- messageDesc(file_kusinta_iot_webrtc_v1_household, 7);
86
+ messageDesc(file_kusinta_iot_webrtc_v1_household, 9);
73
87
 
74
88
  /**
75
89
  * Describes the message kusinta.iot.webrtc.v1.HouseholdHandovers.
76
90
  * Use `create(HouseholdHandoversSchema)` to create a new message.
77
91
  */
78
92
  export const HouseholdHandoversSchema = /*@__PURE__*/
79
- messageDesc(file_kusinta_iot_webrtc_v1_household, 8);
93
+ messageDesc(file_kusinta_iot_webrtc_v1_household, 10);
80
94
 
81
95
  /**
82
96
  * Describes the message kusinta.iot.webrtc.v1.ExportHouseholdData.
83
97
  * Use `create(ExportHouseholdDataSchema)` to create a new message.
84
98
  */
85
99
  export const ExportHouseholdDataSchema = /*@__PURE__*/
86
- messageDesc(file_kusinta_iot_webrtc_v1_household, 9);
100
+ messageDesc(file_kusinta_iot_webrtc_v1_household, 11);
87
101
 
88
102
  /**
89
103
  * Describes the message kusinta.iot.webrtc.v1.HouseholdExport.
90
104
  * Use `create(HouseholdExportSchema)` to create a new message.
91
105
  */
92
106
  export const HouseholdExportSchema = /*@__PURE__*/
93
- messageDesc(file_kusinta_iot_webrtc_v1_household, 10);
107
+ messageDesc(file_kusinta_iot_webrtc_v1_household, 12);
94
108
 
95
109
  /**
96
110
  * Describes the enum kusinta.iot.webrtc.v1.StaffAppointmentKind.
@@ -10,13 +10,13 @@ import type { MembershipRelation, Role } from "../../access/v1/roles_pb.js";
10
10
  import type { LorawanProvisioning } from "../../vendor/lorawan/v1/lorawan_pb.js";
11
11
  import type { Space } from "../../space/v1/space_pb.js";
12
12
  import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb.js";
13
- import type { ClimateModeKind, ClimateSummaryPeriod } from "../../climate/v1/climate_pb.js";
13
+ import type { ClimateModeKind, ClimateSummaryPeriod, RoomHistoryResolution } from "../../climate/v1/climate_pb.js";
14
14
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
- import type { CancelHouseholdHandover, ConfirmHouseholdHandover, DemoteHouseholdAdmin, ExportHouseholdData, ListHouseholdHandovers, SetHomeName, StaffAppointment, StartHouseholdHandover } from "./household_pb.js";
15
+ import type { CancelHouseholdHandover, ClearClimateHistory, ConfirmHouseholdHandover, DemoteHouseholdAdmin, ExportHouseholdData, ListHouseholdHandovers, SetHomeName, StaffAppointment, StartHouseholdHandover } from "./household_pb.js";
16
+ import type { BindingRef, CommissioningFact, CommissioningGrantRecord, HouseTemplate, TestKind, TestState } from "../../commissioning/v1/commissioning_pb.js";
16
17
  import type { ServiceSignal } from "../../access/v1/acl_pb.js";
17
18
  import type { ComfortLoad, ComfortWindow, FloorZone, HeatingCircuit, HeatingPlant } from "../../heating/v1/heating_pb.js";
18
19
  import type { LinkedService } from "../../accountlink/v1/account_link_pb.js";
19
- import type { BindingRef, CommissioningFact, HouseTemplate, TestKind, TestState } from "../../commissioning/v1/commissioning_pb.js";
20
20
  import type { ApproveJoinRequest, CreateInvite, DenyJoinRequest, ListSpaceInvites, MarkInviteEmailSent, ResendInvite, RevokeInvite } from "./invite_pb.js";
21
21
  import type { AnswerPromotion, ListGatewayMembers, ListPromotionRequests, RemoveFromGateway, RequestPromotion, SetAccessUntil, SetMemberRole, SetOwnerOrganisation } from "./members_pb.js";
22
22
 
@@ -916,12 +916,13 @@ export declare type ListRoomClimates = Message<"kusinta.iot.webrtc.v1.ListRoomCl
916
916
  export declare const ListRoomClimatesSchema: GenMessage<ListRoomClimates>;
917
917
 
918
918
  /**
919
- * Reads a room's history, answered with a climate.v1.RoomHistory of fixed 15-minute
920
- * buckets aligned to UTC quarter hours (:00, :15, :30, :45). Needs READ on the room.
919
+ * Reads a room's history at one resolution, answered with a climate.v1.RoomHistory. Needs
920
+ * READ on the room.
921
921
  *
922
922
  * The range is half-open: a bucket is returned when from_time <= at < to_time, so
923
- * back-to-back windows neither repeat nor skip a bucket. Unset to_time means now;
924
- * unset from_time means RoomHistory.kept_from. Both are clamped to [kept_from, now].
923
+ * back-to-back windows neither repeat nor skip a bucket. Unset to_time means now; unset
924
+ * from_time means RoomHistory.kept_from. Both are clamped to [kept_from, now]. A long range is
925
+ * answered newest first, in capped pages (RoomHistory.covered_from).
925
926
  *
926
927
  * A room in a home is readable by its residents only, and only from the start of their
927
928
  * current residency (see access.v1.MembershipRelation). A caller who reaches it as service is
@@ -945,6 +946,19 @@ export declare type GetRoomHistory = Message<"kusinta.iot.webrtc.v1.GetRoomHisto
945
946
  * @generated from field: google.protobuf.Timestamp to_time = 3;
946
947
  */
947
948
  toTime?: Timestamp | undefined;
949
+
950
+ /**
951
+ * The resolution wanted. Unset, or one the gateway does not give, and the gateway chooses
952
+ * from the request and the resolutions alone, never from what it holds: the finest
953
+ * resolution it gives that it keeps for long enough to reach back to from_time, and whose
954
+ * bucket length fits the span from from_time to to_time (unset: now) into no more buckets
955
+ * than one answer may give samples (RoomHistory.covered_from); where none does, or from_time
956
+ * is unset, the coarsest. How long each is kept is the gateway's, the same for every room and
957
+ * recipient, so the choice tells nothing of a room or of who may read it.
958
+ *
959
+ * @generated from field: kusinta.iot.climate.v1.RoomHistoryResolution resolution = 4;
960
+ */
961
+ resolution: RoomHistoryResolution;
948
962
  };
949
963
 
950
964
  /**
@@ -991,7 +1005,9 @@ export declare type PrivacyDisclosure = Message<"kusinta.iot.webrtc.v1.PrivacyDi
991
1005
  * this length (climate.v1.ApartmentClimateSummary). UNSPECIFIED: no summary is given.
992
1006
  * The gateway's own setting, WEEK unless it is configured otherwise; no operation in this
993
1007
  * contract changes it. A change applies to periods that open after it: service is given
994
- * no period that opened before the last change.
1008
+ * no period that opened before the last change. A household's clear of its climate history
1009
+ * (ClearClimateHistory) likewise leaves service no period from before the clear, and none
1010
+ * until the first period that starts at or after it has closed.
995
1011
  *
996
1012
  * @generated from field: kusinta.iot.climate.v1.ClimateSummaryPeriod climate_summary_period = 4;
997
1013
  */
@@ -1027,6 +1043,15 @@ export declare type PrivacyDisclosure = Message<"kusinta.iot.webrtc.v1.PrivacyDi
1027
1043
  * @generated from field: repeated kusinta.iot.webrtc.v1.StaffAppointment staff_appointments = 8;
1028
1044
  */
1029
1045
  staffAppointments: StaffAppointment[];
1046
+
1047
+ /**
1048
+ * Each commissioning grant on this home that was granted since it was last wiped, oldest
1049
+ * first, active ones included (commissioning.v1, GRANTS): who held commissioning access to the
1050
+ * home, and when. Given to the home's residents only, as staff_appointments is.
1051
+ *
1052
+ * @generated from field: repeated kusinta.iot.commissioning.v1.CommissioningGrantRecord commissioning_grants = 9;
1053
+ */
1054
+ commissioningGrants: CommissioningGrantRecord[];
1030
1055
  };
1031
1056
 
1032
1057
  /**
@@ -1740,7 +1765,8 @@ export declare const ListHomeSetupsSchema: GenMessage<ListHomeSetups>;
1740
1765
  *
1741
1766
  * Accepted on any home the caller reaches, whether or not anyone could answer it: it lapses
1742
1767
  * unanswered where nobody does, so the answer tells the installer nothing of whether anyone
1743
- * lives there.
1768
+ * lives there. A caller who lives in the home is refused as FAILED_PRECONDITION with metadata
1769
+ * {"reason": "installer_lives_here"}, which tells them nothing they do not know.
1744
1770
  *
1745
1771
  * @generated from message kusinta.iot.webrtc.v1.RequestCommissioningGrant
1746
1772
  */
@@ -2313,6 +2339,12 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
2313
2339
  */
2314
2340
  value: SetHomeName;
2315
2341
  case: "setHomeName";
2342
+ } | {
2343
+ /**
2344
+ * @generated from field: kusinta.iot.webrtc.v1.ClearClimateHistory clear_climate_history = 69;
2345
+ */
2346
+ value: ClearClimateHistory;
2347
+ case: "clearClimateHistory";
2316
2348
  } | { case: undefined; value?: undefined };
2317
2349
  };
2318
2350
 
@@ -23,7 +23,7 @@ import { file_kusinta_iot_webrtc_v1_members } from "./members_pb.js";
23
23
  * Describes the file kusinta/iot/webrtc/v1/management.proto.
24
24
  */
25
25
  export const file_kusinta_iot_webrtc_v1_management = /*@__PURE__*/
26
- fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMi7QEKFENvbmZpZ3VyZVJvb21DbGltYXRlEjEKB3Jvb21faWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjEKBmxpbWl0cxgCIAEoCzIhLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tTGltaXRzEjMKB3NlbnNvcnMYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUm9vbVNlbnNvcnMSIQoUbG9ja19kZXZpY2VfY29udHJvbHMYBCABKAhIAIgBAUIXChVfbG9ja19kZXZpY2VfY29udHJvbHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIp8BCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wItcCChFQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoPc2VydmljZV9wYXJ0aWVzGAUgAygLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VQYXJ0eRJMChZjbGltYXRlX3N1bW1hcnlfcGVyaW9kGAQgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBIfChdvd25lcl9vcmdhbmlzYXRpb25fbmFtZRgGIAEoCRIWCg5uYW1lc193aXRoaGVsZBgHIAEoCBJDChJzdGFmZl9hcHBvaW50bWVudHMYCCADKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhZmZBcHBvaW50bWVudEoECAIQBCJ/CgxTZXJ2aWNlUGFydHkSKQoEcm9sZRgBIAEoDjIbLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Sb2xlEjUKB3NpZ25hbHMYAiADKA4yJC5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuU2VydmljZVNpZ25hbBINCgVuYW1lcxgDIAMoCSJKChRHZXRQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7gEKGkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBItCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKElJlY29ubmVjdENvbm5lY3RvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZCJGCgtMaXN0SGVhdGluZxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJGCg9QdXRIZWF0aW5nUGxhbnQSMwoFcGxhbnQYASABKAsyJC5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdQbGFudCJMChFQdXRIZWF0aW5nQ2lyY3VpdBI3CgdjaXJjdWl0GAEgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdCI/CgxQdXRGbG9vclpvbmUSLwoEem9uZRgBIAEoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lIksKDlB1dENvbWZvcnRMb2FkEjkKDGNvbWZvcnRfbG9hZBgBIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWQiMwoTUmVtb3ZlSGVhdGluZ1JlY29yZBIKCgJpZBgBIAEoCRIQCghyZXZpc2lvbhgCIAEoBCKYAQoRU2V0Q29tZm9ydFdpbmRvd3MSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjYKB3dpbmRvd3MYAiADKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRXaW5kb3cSHQoQd2luZG93c19yZXZpc2lvbhgDIAEoBEgAiAEBQhMKEV93aW5kb3dzX3JldmlzaW9uIogBChdSZXF1ZXN0QWNjb3VudExpbmtOb25jZRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI6CgdzZXJ2aWNlGAIgASgOMikua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuTGlua2VkU2VydmljZSJFChBMaXN0QWNjb3VudExpbmtzEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIn4KDVVubGlua0FjY291bnQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOgoHc2VydmljZRgCIAEoDjIpLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkxpbmtlZFNlcnZpY2UiRwoRTGlzdENvbW1pc3Npb25pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIlUKFFB1dENvbW1pc3Npb25pbmdGYWN0Ej0KBGZhY3QYASABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0IjwKF1JlbW92ZUNvbW1pc3Npb25pbmdGYWN0Eg8KB2ZhY3RfaWQYASABKAkSEAoIcmV2aXNpb24YAiABKAQiUQoQUHV0SG91c2VUZW1wbGF0ZRI9Cgh0ZW1wbGF0ZRgBIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZSJZCg9TZXRIb21lVGVtcGxhdGUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEwoLdGVtcGxhdGVfaWQYAiABKAkinwEKFFJ1bkNvbW1pc3Npb25pbmdUZXN0EjQKBGtpbmQYASABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYBCABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEARSCXJlY29yZF9pZFIFZmllbGQiZgoZQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjgKB3ZlcmRpY3QYAiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZSJJCg5MaXN0SG9tZVNldHVwcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJPChlSZXF1ZXN0Q29tbWlzc2lvbmluZ0dyYW50EjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCKYAQoYQW5zd2VyQ29tbWlzc2lvbmluZ0dyYW50EhAKCGdyYW50X2lkGAEgASgJEg4KBmFjY2VwdBgCIAEoCBItCglzdGFydHNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIikKFUVuZENvbW1pc3Npb25pbmdHcmFudBIQCghncmFudF9pZBgBIAEoCSJSChdMaXN0Q29tbWlzc2lvbmluZ0dyYW50cxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ9Cg1TZXRBc3NldE93bmVyEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjYKC2Fzc2V0X293bmVyGAIgASgLMiEua3VzaW50YS5pb3QuY29tbW9uLnYxLkFzc2V0T3duZXIi9yYKEU1hbmFnZW1lbnRSZXF1ZXN0EjoKDGNyZWF0ZV9zcGFjZRgBIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVTcGFjZUgAEjoKDHVwZGF0ZV9zcGFjZRgCIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VcGRhdGVTcGFjZUgAEjoKDGRlbGV0ZV9zcGFjZRgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZWxldGVTcGFjZUgAEkgKFGFzc2lnbl91c2VyX3RvX3NwYWNlGAQgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkFzc2lnblVzZXJUb1NwYWNlSAASTAoWcmVtb3ZlX3VzZXJfZnJvbV9zcGFjZRgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVVc2VyRnJvbVNwYWNlSAASSgoVcGxhY2VfZGV2aWNlX2luX3NwYWNlGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlBsYWNlRGV2aWNlSW5TcGFjZUgAElAKGHJlbW92ZV9kZXZpY2VfZnJvbV9zcGFjZRgHIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VGcm9tU3BhY2VIABI6CgxjbGFpbV9kZXZpY2UYCCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xhaW1EZXZpY2VIABI+Cg5yZWxlYXNlX2RldmljZRgJIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZWxlYXNlRGV2aWNlSAASOAoLbGlzdF9zcGFjZXMYCiABKAsyIS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFNwYWNlc0gAEkUKEmNyZWF0ZV9kZXZpY2VfbGluaxgLIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVEZXZpY2VMaW5rSAASRQoScmVtb3ZlX2RldmljZV9saW5rGAwgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZURldmljZUxpbmtIABJDChFsaXN0X2RldmljZV9saW5rcxgNIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0RGV2aWNlTGlua3NIABJFChJ1cGRhdGVfZGV2aWNlX2xpbmsYDiABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlRGV2aWNlTGlua0gAEkIKEHByb3Zpc2lvbl9kZXZpY2UYDyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvdmlzaW9uRGV2aWNlSAASPwoPc2V0X3Jvb21fdGFyZ2V0GBAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldFJvb21UYXJnZXRIABJNChZjb25maWd1cmVfcm9vbV9jbGltYXRlGBEgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmZpZ3VyZVJvb21DbGltYXRlSAASQQoQc2V0X2NsaW1hdGVfbW9kZRgSIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRDbGltYXRlTW9kZUgAEkUKEmxpc3Rfcm9vbV9jbGltYXRlcxgTIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0Um9vbUNsaW1hdGVzSAASQQoQZ2V0X3Jvb21faGlzdG9yeRgUIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRSb29tSGlzdG9yeUgAEk0KFmdldF9wcml2YWN5X2Rpc2Nsb3N1cmUYFSABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0UHJpdmFjeURpc2Nsb3N1cmVIABJaCh1nZXRfYXBhcnRtZW50X2NsaW1hdGVfc3VtbWFyeRgWIAEoCzIxLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRBcGFydG1lbnRDbGltYXRlU3VtbWFyeUgAEkgKE3JlY29ubmVjdF9jb25uZWN0b3IYFyABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVjb25uZWN0Q29ubmVjdG9ySAASPAoNY3JlYXRlX2ludml0ZRgYIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVJbnZpdGVIABI8Cg1yZXNlbmRfaW52aXRlGBkgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlc2VuZEludml0ZUgAEjwKDXJldm9rZV9pbnZpdGUYGiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmV2b2tlSW52aXRlSAASTAoWbWFya19pbnZpdGVfZW1haWxfc2VudBgbIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYXJrSW52aXRlRW1haWxTZW50SAASRQoSbGlzdF9zcGFjZV9pbnZpdGVzGBwgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZUludml0ZXNIABJJChRhcHByb3ZlX2pvaW5fcmVxdWVzdBgdIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BcHByb3ZlSm9pblJlcXVlc3RIABJDChFkZW55X2pvaW5fcmVxdWVzdBgeIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZW55Sm9pblJlcXVlc3RIABJJChRsaXN0X2dhdGV3YXlfbWVtYmVycxgfIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0R2F0ZXdheU1lbWJlcnNIABI/Cg9zZXRfbWVtYmVyX3JvbGUYICABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0TWVtYmVyUm9sZUgAEkcKE3JlbW92ZV9mcm9tX2dhdGV3YXkYISABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRnJvbUdhdGV3YXlIABJBChBzZXRfYWNjZXNzX3VudGlsGCIgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEFjY2Vzc1VudGlsSAASUQoWc2V0X293bmVyX29yZ2FuaXNhdGlvbhgjIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRPd25lck9yZ2FuaXNhdGlvbkICGAFIABJEChFyZXF1ZXN0X3Byb21vdGlvbhgkIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXF1ZXN0UHJvbW90aW9uSAASQgoQYW5zd2VyX3Byb21vdGlvbhglIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BbnN3ZXJQcm9tb3Rpb25IABJPChdsaXN0X3Byb21vdGlvbl9yZXF1ZXN0cxgmIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0UHJvbW90aW9uUmVxdWVzdHNIABI6CgxsaXN0X2hlYXRpbmcYJyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhlYXRpbmdIABJDChFwdXRfaGVhdGluZ19wbGFudBgoIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIZWF0aW5nUGxhbnRIABJHChNwdXRfaGVhdGluZ19jaXJjdWl0GCkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhlYXRpbmdDaXJjdWl0SAASPQoOcHV0X2Zsb29yX3pvbmUYKiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Rmxvb3Jab25lSAASQQoQcHV0X2NvbWZvcnRfbG9hZBgrIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRDb21mb3J0TG9hZEgAEksKFXJlbW92ZV9oZWF0aW5nX3JlY29yZBgsIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVIZWF0aW5nUmVjb3JkSAASRwoTc2V0X2NvbWZvcnRfd2luZG93cxgtIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRDb21mb3J0V2luZG93c0gAElQKGnJlcXVlc3RfYWNjb3VudF9saW5rX25vbmNlGC4gASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RBY2NvdW50TGlua05vbmNlSAASRQoSbGlzdF9hY2NvdW50X2xpbmtzGC8gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RBY2NvdW50TGlua3NIABI+Cg51bmxpbmtfYWNjb3VudBgwIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbmxpbmtBY2NvdW50SAASRgoSbGlzdF9jb21taXNzaW9uaW5nGDEgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RDb21taXNzaW9uaW5nSAASTQoWcHV0X2NvbW1pc3Npb25pbmdfZmFjdBgyIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRDb21taXNzaW9uaW5nRmFjdEgAElMKGXJlbW92ZV9jb21taXNzaW9uaW5nX2ZhY3QYMyABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlQ29tbWlzc2lvbmluZ0ZhY3RIABJFChJwdXRfaG91c2VfdGVtcGxhdGUYNCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SG91c2VUZW1wbGF0ZUgAEkMKEXNldF9ob21lX3RlbXBsYXRlGDUgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEhvbWVUZW1wbGF0ZUgAEk0KFnJ1bl9jb21taXNzaW9uaW5nX3Rlc3QYNiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUnVuQ29tbWlzc2lvbmluZ1Rlc3RIABJXChtjb25jbHVkZV9jb21taXNzaW9uaW5nX3Rlc3QYNyABKAsyMC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdEgAEkEKEGxpc3RfaG9tZV9zZXR1cHMYOCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhvbWVTZXR1cHNIABJXChtyZXF1ZXN0X2NvbW1pc3Npb25pbmdfZ3JhbnQYOSABKAsyMC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdENvbW1pc3Npb25pbmdHcmFudEgAElUKGmFuc3dlcl9jb21taXNzaW9uaW5nX2dyYW50GDogASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLkFuc3dlckNvbW1pc3Npb25pbmdHcmFudEgAEk8KF2VuZF9jb21taXNzaW9uaW5nX2dyYW50GDsgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkVuZENvbW1pc3Npb25pbmdHcmFudEgAElMKGWxpc3RfY29tbWlzc2lvbmluZ19ncmFudHMYPCABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdENvbW1pc3Npb25pbmdHcmFudHNIABI/Cg9zZXRfYXNzZXRfb3duZXIYPSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0QXNzZXRPd25lckgAEk0KFmRlbW90ZV9ob3VzZWhvbGRfYWRtaW4YPiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVtb3RlSG91c2Vob2xkQWRtaW5IABJRChhzdGFydF9ob3VzZWhvbGRfaGFuZG92ZXIYPyABKAsyLS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRIb3VzZWhvbGRIYW5kb3ZlckgAElUKGmNvbmZpcm1faG91c2Vob2xkX2hhbmRvdmVyGEAgASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmZpcm1Ib3VzZWhvbGRIYW5kb3ZlckgAElMKGWNhbmNlbF9ob3VzZWhvbGRfaGFuZG92ZXIYQSABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2FuY2VsSG91c2Vob2xkSGFuZG92ZXJIABJRChhsaXN0X2hvdXNlaG9sZF9oYW5kb3ZlcnMYQiABKAsyLS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhvdXNlaG9sZEhhbmRvdmVyc0gAEksKFWV4cG9ydF9ob3VzZWhvbGRfZGF0YRhDIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5FeHBvcnRIb3VzZWhvbGREYXRhSAASOwoNc2V0X2hvbWVfbmFtZRhEIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRIb21lTmFtZUgAQgkKB3JlcXVlc3RCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_access_v1_roles, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_types, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_vendor_lorawan_v1_lorawan, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_members]);
26
+ fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMi7QEKFENvbmZpZ3VyZVJvb21DbGltYXRlEjEKB3Jvb21faWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjEKBmxpbWl0cxgCIAEoCzIhLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tTGltaXRzEjMKB3NlbnNvcnMYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUm9vbVNlbnNvcnMSIQoUbG9ja19kZXZpY2VfY29udHJvbHMYBCABKAhIAIgBAUIXChVfbG9ja19kZXZpY2VfY29udHJvbHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIuIBCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKCnJlc29sdXRpb24YBCABKA4yLS5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21IaXN0b3J5UmVzb2x1dGlvbiKtAwoRUHJpdmFjeURpc2Nsb3N1cmUSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKD3NlcnZpY2VfcGFydGllcxgFIAMoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXJ2aWNlUGFydHkSTAoWY2xpbWF0ZV9zdW1tYXJ5X3BlcmlvZBgEIAEoDjIsLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVN1bW1hcnlQZXJpb2QSHwoXb3duZXJfb3JnYW5pc2F0aW9uX25hbWUYBiABKAkSFgoObmFtZXNfd2l0aGhlbGQYByABKAgSQwoSc3RhZmZfYXBwb2ludG1lbnRzGAggAygLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YWZmQXBwb2ludG1lbnQSVAoUY29tbWlzc2lvbmluZ19ncmFudHMYCSADKAsyNi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudFJlY29yZEoECAIQBCJ/CgxTZXJ2aWNlUGFydHkSKQoEcm9sZRgBIAEoDjIbLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Sb2xlEjUKB3NpZ25hbHMYAiADKA4yJC5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuU2VydmljZVNpZ25hbBINCgVuYW1lcxgDIAMoCSJKChRHZXRQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7gEKGkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBItCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKElJlY29ubmVjdENvbm5lY3RvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZCJGCgtMaXN0SGVhdGluZxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJGCg9QdXRIZWF0aW5nUGxhbnQSMwoFcGxhbnQYASABKAsyJC5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdQbGFudCJMChFQdXRIZWF0aW5nQ2lyY3VpdBI3CgdjaXJjdWl0GAEgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdCI/CgxQdXRGbG9vclpvbmUSLwoEem9uZRgBIAEoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lIksKDlB1dENvbWZvcnRMb2FkEjkKDGNvbWZvcnRfbG9hZBgBIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWQiMwoTUmVtb3ZlSGVhdGluZ1JlY29yZBIKCgJpZBgBIAEoCRIQCghyZXZpc2lvbhgCIAEoBCKYAQoRU2V0Q29tZm9ydFdpbmRvd3MSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjYKB3dpbmRvd3MYAiADKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRXaW5kb3cSHQoQd2luZG93c19yZXZpc2lvbhgDIAEoBEgAiAEBQhMKEV93aW5kb3dzX3JldmlzaW9uIogBChdSZXF1ZXN0QWNjb3VudExpbmtOb25jZRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI6CgdzZXJ2aWNlGAIgASgOMikua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuTGlua2VkU2VydmljZSJFChBMaXN0QWNjb3VudExpbmtzEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIn4KDVVubGlua0FjY291bnQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOgoHc2VydmljZRgCIAEoDjIpLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkxpbmtlZFNlcnZpY2UiRwoRTGlzdENvbW1pc3Npb25pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIlUKFFB1dENvbW1pc3Npb25pbmdGYWN0Ej0KBGZhY3QYASABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0IjwKF1JlbW92ZUNvbW1pc3Npb25pbmdGYWN0Eg8KB2ZhY3RfaWQYASABKAkSEAoIcmV2aXNpb24YAiABKAQiUQoQUHV0SG91c2VUZW1wbGF0ZRI9Cgh0ZW1wbGF0ZRgBIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZSJZCg9TZXRIb21lVGVtcGxhdGUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEwoLdGVtcGxhdGVfaWQYAiABKAkinwEKFFJ1bkNvbW1pc3Npb25pbmdUZXN0EjQKBGtpbmQYASABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYBCABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEARSCXJlY29yZF9pZFIFZmllbGQiZgoZQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjgKB3ZlcmRpY3QYAiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZSJJCg5MaXN0SG9tZVNldHVwcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJPChlSZXF1ZXN0Q29tbWlzc2lvbmluZ0dyYW50EjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCKYAQoYQW5zd2VyQ29tbWlzc2lvbmluZ0dyYW50EhAKCGdyYW50X2lkGAEgASgJEg4KBmFjY2VwdBgCIAEoCBItCglzdGFydHNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIikKFUVuZENvbW1pc3Npb25pbmdHcmFudBIQCghncmFudF9pZBgBIAEoCSJSChdMaXN0Q29tbWlzc2lvbmluZ0dyYW50cxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ9Cg1TZXRBc3NldE93bmVyEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjYKC2Fzc2V0X293bmVyGAIgASgLMiEua3VzaW50YS5pb3QuY29tbW9uLnYxLkFzc2V0T3duZXIixCcKEU1hbmFnZW1lbnRSZXF1ZXN0EjoKDGNyZWF0ZV9zcGFjZRgBIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVTcGFjZUgAEjoKDHVwZGF0ZV9zcGFjZRgCIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VcGRhdGVTcGFjZUgAEjoKDGRlbGV0ZV9zcGFjZRgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZWxldGVTcGFjZUgAEkgKFGFzc2lnbl91c2VyX3RvX3NwYWNlGAQgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkFzc2lnblVzZXJUb1NwYWNlSAASTAoWcmVtb3ZlX3VzZXJfZnJvbV9zcGFjZRgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVVc2VyRnJvbVNwYWNlSAASSgoVcGxhY2VfZGV2aWNlX2luX3NwYWNlGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlBsYWNlRGV2aWNlSW5TcGFjZUgAElAKGHJlbW92ZV9kZXZpY2VfZnJvbV9zcGFjZRgHIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VGcm9tU3BhY2VIABI6CgxjbGFpbV9kZXZpY2UYCCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xhaW1EZXZpY2VIABI+Cg5yZWxlYXNlX2RldmljZRgJIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZWxlYXNlRGV2aWNlSAASOAoLbGlzdF9zcGFjZXMYCiABKAsyIS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFNwYWNlc0gAEkUKEmNyZWF0ZV9kZXZpY2VfbGluaxgLIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVEZXZpY2VMaW5rSAASRQoScmVtb3ZlX2RldmljZV9saW5rGAwgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZURldmljZUxpbmtIABJDChFsaXN0X2RldmljZV9saW5rcxgNIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0RGV2aWNlTGlua3NIABJFChJ1cGRhdGVfZGV2aWNlX2xpbmsYDiABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlRGV2aWNlTGlua0gAEkIKEHByb3Zpc2lvbl9kZXZpY2UYDyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvdmlzaW9uRGV2aWNlSAASPwoPc2V0X3Jvb21fdGFyZ2V0GBAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldFJvb21UYXJnZXRIABJNChZjb25maWd1cmVfcm9vbV9jbGltYXRlGBEgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmZpZ3VyZVJvb21DbGltYXRlSAASQQoQc2V0X2NsaW1hdGVfbW9kZRgSIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRDbGltYXRlTW9kZUgAEkUKEmxpc3Rfcm9vbV9jbGltYXRlcxgTIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0Um9vbUNsaW1hdGVzSAASQQoQZ2V0X3Jvb21faGlzdG9yeRgUIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRSb29tSGlzdG9yeUgAEk0KFmdldF9wcml2YWN5X2Rpc2Nsb3N1cmUYFSABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0UHJpdmFjeURpc2Nsb3N1cmVIABJaCh1nZXRfYXBhcnRtZW50X2NsaW1hdGVfc3VtbWFyeRgWIAEoCzIxLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRBcGFydG1lbnRDbGltYXRlU3VtbWFyeUgAEkgKE3JlY29ubmVjdF9jb25uZWN0b3IYFyABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVjb25uZWN0Q29ubmVjdG9ySAASPAoNY3JlYXRlX2ludml0ZRgYIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVJbnZpdGVIABI8Cg1yZXNlbmRfaW52aXRlGBkgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlc2VuZEludml0ZUgAEjwKDXJldm9rZV9pbnZpdGUYGiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmV2b2tlSW52aXRlSAASTAoWbWFya19pbnZpdGVfZW1haWxfc2VudBgbIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYXJrSW52aXRlRW1haWxTZW50SAASRQoSbGlzdF9zcGFjZV9pbnZpdGVzGBwgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZUludml0ZXNIABJJChRhcHByb3ZlX2pvaW5fcmVxdWVzdBgdIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BcHByb3ZlSm9pblJlcXVlc3RIABJDChFkZW55X2pvaW5fcmVxdWVzdBgeIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZW55Sm9pblJlcXVlc3RIABJJChRsaXN0X2dhdGV3YXlfbWVtYmVycxgfIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0R2F0ZXdheU1lbWJlcnNIABI/Cg9zZXRfbWVtYmVyX3JvbGUYICABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0TWVtYmVyUm9sZUgAEkcKE3JlbW92ZV9mcm9tX2dhdGV3YXkYISABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRnJvbUdhdGV3YXlIABJBChBzZXRfYWNjZXNzX3VudGlsGCIgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEFjY2Vzc1VudGlsSAASUQoWc2V0X293bmVyX29yZ2FuaXNhdGlvbhgjIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRPd25lck9yZ2FuaXNhdGlvbkICGAFIABJEChFyZXF1ZXN0X3Byb21vdGlvbhgkIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXF1ZXN0UHJvbW90aW9uSAASQgoQYW5zd2VyX3Byb21vdGlvbhglIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BbnN3ZXJQcm9tb3Rpb25IABJPChdsaXN0X3Byb21vdGlvbl9yZXF1ZXN0cxgmIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0UHJvbW90aW9uUmVxdWVzdHNIABI6CgxsaXN0X2hlYXRpbmcYJyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhlYXRpbmdIABJDChFwdXRfaGVhdGluZ19wbGFudBgoIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIZWF0aW5nUGxhbnRIABJHChNwdXRfaGVhdGluZ19jaXJjdWl0GCkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhlYXRpbmdDaXJjdWl0SAASPQoOcHV0X2Zsb29yX3pvbmUYKiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Rmxvb3Jab25lSAASQQoQcHV0X2NvbWZvcnRfbG9hZBgrIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRDb21mb3J0TG9hZEgAEksKFXJlbW92ZV9oZWF0aW5nX3JlY29yZBgsIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVIZWF0aW5nUmVjb3JkSAASRwoTc2V0X2NvbWZvcnRfd2luZG93cxgtIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRDb21mb3J0V2luZG93c0gAElQKGnJlcXVlc3RfYWNjb3VudF9saW5rX25vbmNlGC4gASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RBY2NvdW50TGlua05vbmNlSAASRQoSbGlzdF9hY2NvdW50X2xpbmtzGC8gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RBY2NvdW50TGlua3NIABI+Cg51bmxpbmtfYWNjb3VudBgwIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbmxpbmtBY2NvdW50SAASRgoSbGlzdF9jb21taXNzaW9uaW5nGDEgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RDb21taXNzaW9uaW5nSAASTQoWcHV0X2NvbW1pc3Npb25pbmdfZmFjdBgyIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRDb21taXNzaW9uaW5nRmFjdEgAElMKGXJlbW92ZV9jb21taXNzaW9uaW5nX2ZhY3QYMyABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlQ29tbWlzc2lvbmluZ0ZhY3RIABJFChJwdXRfaG91c2VfdGVtcGxhdGUYNCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SG91c2VUZW1wbGF0ZUgAEkMKEXNldF9ob21lX3RlbXBsYXRlGDUgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEhvbWVUZW1wbGF0ZUgAEk0KFnJ1bl9jb21taXNzaW9uaW5nX3Rlc3QYNiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUnVuQ29tbWlzc2lvbmluZ1Rlc3RIABJXChtjb25jbHVkZV9jb21taXNzaW9uaW5nX3Rlc3QYNyABKAsyMC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdEgAEkEKEGxpc3RfaG9tZV9zZXR1cHMYOCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhvbWVTZXR1cHNIABJXChtyZXF1ZXN0X2NvbW1pc3Npb25pbmdfZ3JhbnQYOSABKAsyMC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdENvbW1pc3Npb25pbmdHcmFudEgAElUKGmFuc3dlcl9jb21taXNzaW9uaW5nX2dyYW50GDogASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLkFuc3dlckNvbW1pc3Npb25pbmdHcmFudEgAEk8KF2VuZF9jb21taXNzaW9uaW5nX2dyYW50GDsgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkVuZENvbW1pc3Npb25pbmdHcmFudEgAElMKGWxpc3RfY29tbWlzc2lvbmluZ19ncmFudHMYPCABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdENvbW1pc3Npb25pbmdHcmFudHNIABI/Cg9zZXRfYXNzZXRfb3duZXIYPSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0QXNzZXRPd25lckgAEk0KFmRlbW90ZV9ob3VzZWhvbGRfYWRtaW4YPiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVtb3RlSG91c2Vob2xkQWRtaW5IABJRChhzdGFydF9ob3VzZWhvbGRfaGFuZG92ZXIYPyABKAsyLS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRIb3VzZWhvbGRIYW5kb3ZlckgAElUKGmNvbmZpcm1faG91c2Vob2xkX2hhbmRvdmVyGEAgASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmZpcm1Ib3VzZWhvbGRIYW5kb3ZlckgAElMKGWNhbmNlbF9ob3VzZWhvbGRfaGFuZG92ZXIYQSABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2FuY2VsSG91c2Vob2xkSGFuZG92ZXJIABJRChhsaXN0X2hvdXNlaG9sZF9oYW5kb3ZlcnMYQiABKAsyLS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhvdXNlaG9sZEhhbmRvdmVyc0gAEksKFWV4cG9ydF9ob3VzZWhvbGRfZGF0YRhDIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5FeHBvcnRIb3VzZWhvbGREYXRhSAASOwoNc2V0X2hvbWVfbmFtZRhEIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRIb21lTmFtZUgAEksKFWNsZWFyX2NsaW1hdGVfaGlzdG9yeRhFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGVhckNsaW1hdGVIaXN0b3J5SABCCQoHcmVxdWVzdEICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_access_v1_roles, file_kusinta_iot_accountlink_v1_account_link, file_kusinta_iot_climate_v1_climate, file_kusinta_iot_commissioning_v1_commissioning, file_kusinta_iot_common_v1_types, file_kusinta_iot_heating_v1_heating, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_link_v1_link, file_kusinta_iot_space_v1_space, file_kusinta_iot_vendor_lorawan_v1_lorawan, file_kusinta_iot_webrtc_v1_household, file_kusinta_iot_webrtc_v1_invite, file_kusinta_iot_webrtc_v1_members]);
27
27
 
28
28
  /**
29
29
  * Describes the message kusinta.iot.webrtc.v1.CreateSpace.