@kusinta/iot-schema 0.2.0-beta.55 → 0.2.0-beta.57

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.55",
3
+ "version": "0.2.0-beta.57",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -490,6 +490,14 @@ export enum ServiceSignal {
490
490
  * @generated from enum value: SERVICE_SIGNAL_FLOOR_ZONE_UNCONTROLLED = 10;
491
491
  */
492
492
  FLOOR_ZONE_UNCONTROLLED = 10,
493
+
494
+ /**
495
+ * The home's street address, where one is set on it (webrtc.v1 SPACE ADDRESS), so that a
496
+ * technician can find the house. Never sent upstream.
497
+ *
498
+ * @generated from enum value: SERVICE_SIGNAL_ADDRESS = 11;
499
+ */
500
+ ADDRESS = 11,
493
501
  }
494
502
 
495
503
  /**
@@ -11,7 +11,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
11
11
  * Describes the file kusinta/iot/access/v1/acl.proto.
12
12
  */
13
13
  export const file_kusinta_iot_access_v1_acl = /*@__PURE__*/
14
- fileDesc("Ch9rdXNpbnRhL2lvdC9hY2Nlc3MvdjEvYWNsLnByb3RvEhVrdXNpbnRhLmlvdC5hY2Nlc3MudjEirgEKDEF0dHJpYnV0ZVJlZhIWCg5hdHRyaWJ1dGVfbmFtZRgBIAEoCRISCgpjbHVzdGVyX2lkGAIgASgNEhQKDGF0dHJpYnV0ZV9pZBgEIAEoDRIYCgtlbmRwb2ludF9pZBgDIAEoDUgAiAEBEh0KEHZlbmRvcl9leHRlbnNpb24YBSABKAlIAYgBAUIOCgxfZW5kcG9pbnRfaWRCEwoRX3ZlbmRvcl9leHRlbnNpb24iZQoKQ29tbWFuZFJlZhISCgpjbHVzdGVyX2lkGAEgASgNEhkKEW1hdHRlcl9jb21tYW5kX2lkGAIgASgNEhgKC2VuZHBvaW50X2lkGAMgASgNSACIAQFCDgoMX2VuZHBvaW50X2lkIloKCEV2ZW50UmVmEhIKCmNsdXN0ZXJfaWQYASABKA0SEAoIZXZlbnRfaWQYAiABKA0SGAoLZW5kcG9pbnRfaWQYAyABKA1IAIgBAUIOCgxfZW5kcG9pbnRfaWQi5wEKElByb3BlcnR5Q29uc3RyYWludBI2CglhdHRyaWJ1dGUYCCABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmEhEKB2ludF9tYXgYAiABKBFIABIRCgdpbnRfbWluGAMgASgRSAASEgoIdWludF9tYXgYBCABKA1IABISCgh1aW50X21pbhgFIAEoDUgAQgwKCmNvbnN0cmFpbnRKBAgBEAJKBAgGEAdKBAgHEAhSDmF0dHJpYnV0ZV9uYW1lUg5jbHVzdGVyX2lkX2hleFILZW5kcG9pbnRfaWQiwwQKCURldmljZUFjbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEikKBHJvbGUYAyABKA4yGy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUm9sZRJACg9hbGxvd2VkX2FjdGlvbnMYBCADKA4yJy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUGVybWlzc2lvbkFjdGlvbhJDChZhbGxvd2VkX2F0dHJpYnV0ZV9yZWZzGAcgAygLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhJHChRwcm9wZXJ0eV9jb25zdHJhaW50cxgGIAMoCzIpLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Qcm9wZXJ0eUNvbnN0cmFpbnQSPwoUYWxsb3dlZF9jb21tYW5kX3JlZnMYCSADKAsyIS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQ29tbWFuZFJlZhI7ChJhbGxvd2VkX2V2ZW50X3JlZnMYCiADKAsyHy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuRXZlbnRSZWYSOwoIcmVsYXRpb24YCyABKA4yKS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuTWVtYmVyc2hpcFJlbGF0aW9uSgQIBRAGUhJhbGxvd2VkX2F0dHJpYnV0ZXMi5QEKFEVmZmVjdGl2ZVBlcm1pc3Npb25zEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNgoKZ2F0ZXdheV9pZBgCIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZBI1CgtkZXZpY2VfYWNscxgDIAMoCzIgLmt1c2ludGEuaW90LmFjY2Vzcy52MS5EZXZpY2VBY2wSLAoIdmFsaWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKuACCg1TZXJ2aWNlU2lnbmFsEh4KGlNFUlZJQ0VfU0lHTkFMX1VOU1BFQ0lGSUVEEAASHwobU0VSVklDRV9TSUdOQUxfUkVBQ0hBQklMSVRZEAESGgoWU0VSVklDRV9TSUdOQUxfQkFUVEVSWRACEh0KGVNFUlZJQ0VfU0lHTkFMX1JBRElPX0xJTksQAxIbChdTRVJWSUNFX1NJR05BTF9GSVJNV0FSRRAEEhgKFFNFUlZJQ0VfU0lHTkFMX0ZBVUxUEAUSGQoVU0VSVklDRV9TSUdOQUxfRklMSU5HEAYSHQoZU0VSVklDRV9TSUdOQUxfUk9PTV9TRVRVUBAHEhgKFFNFUlZJQ0VfU0lHTkFMX0xJTktTEAgSHAoYU0VSVklDRV9TSUdOQUxfUkVTSURFTlRTEAkSKgomU0VSVklDRV9TSUdOQUxfRkxPT1JfWk9ORV9VTkNPTlRST0xMRUQQCkICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_identity_v1_identity]);
14
+ fileDesc("Ch9rdXNpbnRhL2lvdC9hY2Nlc3MvdjEvYWNsLnByb3RvEhVrdXNpbnRhLmlvdC5hY2Nlc3MudjEirgEKDEF0dHJpYnV0ZVJlZhIWCg5hdHRyaWJ1dGVfbmFtZRgBIAEoCRISCgpjbHVzdGVyX2lkGAIgASgNEhQKDGF0dHJpYnV0ZV9pZBgEIAEoDRIYCgtlbmRwb2ludF9pZBgDIAEoDUgAiAEBEh0KEHZlbmRvcl9leHRlbnNpb24YBSABKAlIAYgBAUIOCgxfZW5kcG9pbnRfaWRCEwoRX3ZlbmRvcl9leHRlbnNpb24iZQoKQ29tbWFuZFJlZhISCgpjbHVzdGVyX2lkGAEgASgNEhkKEW1hdHRlcl9jb21tYW5kX2lkGAIgASgNEhgKC2VuZHBvaW50X2lkGAMgASgNSACIAQFCDgoMX2VuZHBvaW50X2lkIloKCEV2ZW50UmVmEhIKCmNsdXN0ZXJfaWQYASABKA0SEAoIZXZlbnRfaWQYAiABKA0SGAoLZW5kcG9pbnRfaWQYAyABKA1IAIgBAUIOCgxfZW5kcG9pbnRfaWQi5wEKElByb3BlcnR5Q29uc3RyYWludBI2CglhdHRyaWJ1dGUYCCABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmEhEKB2ludF9tYXgYAiABKBFIABIRCgdpbnRfbWluGAMgASgRSAASEgoIdWludF9tYXgYBCABKA1IABISCgh1aW50X21pbhgFIAEoDUgAQgwKCmNvbnN0cmFpbnRKBAgBEAJKBAgGEAdKBAgHEAhSDmF0dHJpYnV0ZV9uYW1lUg5jbHVzdGVyX2lkX2hleFILZW5kcG9pbnRfaWQiwwQKCURldmljZUFjbBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEikKBHJvbGUYAyABKA4yGy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUm9sZRJACg9hbGxvd2VkX2FjdGlvbnMYBCADKA4yJy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUGVybWlzc2lvbkFjdGlvbhJDChZhbGxvd2VkX2F0dHJpYnV0ZV9yZWZzGAcgAygLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhJHChRwcm9wZXJ0eV9jb25zdHJhaW50cxgGIAMoCzIpLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Qcm9wZXJ0eUNvbnN0cmFpbnQSPwoUYWxsb3dlZF9jb21tYW5kX3JlZnMYCSADKAsyIS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQ29tbWFuZFJlZhI7ChJhbGxvd2VkX2V2ZW50X3JlZnMYCiADKAsyHy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuRXZlbnRSZWYSOwoIcmVsYXRpb24YCyABKA4yKS5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuTWVtYmVyc2hpcFJlbGF0aW9uSgQIBRAGUhJhbGxvd2VkX2F0dHJpYnV0ZXMi5QEKFEVmZmVjdGl2ZVBlcm1pc3Npb25zEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNgoKZ2F0ZXdheV9pZBgCIAEoCzIiLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkdhdGV3YXlJZBI1CgtkZXZpY2VfYWNscxgDIAMoCzIgLmt1c2ludGEuaW90LmFjY2Vzcy52MS5EZXZpY2VBY2wSLAoIdmFsaWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKvwCCg1TZXJ2aWNlU2lnbmFsEh4KGlNFUlZJQ0VfU0lHTkFMX1VOU1BFQ0lGSUVEEAASHwobU0VSVklDRV9TSUdOQUxfUkVBQ0hBQklMSVRZEAESGgoWU0VSVklDRV9TSUdOQUxfQkFUVEVSWRACEh0KGVNFUlZJQ0VfU0lHTkFMX1JBRElPX0xJTksQAxIbChdTRVJWSUNFX1NJR05BTF9GSVJNV0FSRRAEEhgKFFNFUlZJQ0VfU0lHTkFMX0ZBVUxUEAUSGQoVU0VSVklDRV9TSUdOQUxfRklMSU5HEAYSHQoZU0VSVklDRV9TSUdOQUxfUk9PTV9TRVRVUBAHEhgKFFNFUlZJQ0VfU0lHTkFMX0xJTktTEAgSHAoYU0VSVklDRV9TSUdOQUxfUkVTSURFTlRTEAkSKgomU0VSVklDRV9TSUdOQUxfRkxPT1JfWk9ORV9VTkNPTlRST0xMRUQQChIaChZTRVJWSUNFX1NJR05BTF9BRERSRVNTEAtCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_identity_v1_identity]);
15
15
 
16
16
  /**
17
17
  * Describes the message kusinta.iot.access.v1.AttributeRef.
@@ -592,6 +592,15 @@ export declare type CommissioningProfile = Message<"kusinta.iot.commissioning.v1
592
592
  * @generated from field: bool needs_withheld = 7;
593
593
  */
594
594
  needsWithheld: boolean;
595
+
596
+ /**
597
+ * For a home, how well the gateway's model of each room and each floor zone in it predicts
598
+ * it (see ModelFit): one per room or zone the gateway models. Empty for a space that is
599
+ * not a home, and for a home none of whose rooms or zones is modelled yet.
600
+ *
601
+ * @generated from field: repeated kusinta.iot.commissioning.v1.ModelFit model_fits = 8;
602
+ */
603
+ modelFits: ModelFit[];
595
604
  };
596
605
 
597
606
  /**
@@ -600,6 +609,50 @@ export declare type CommissioningProfile = Message<"kusinta.iot.commissioning.v1
600
609
  */
601
610
  export declare const CommissioningProfileSchema: GenMessage<CommissioningProfile>;
602
611
 
612
+ /**
613
+ * One room's or floor zone's model fit.
614
+ *
615
+ * @generated from message kusinta.iot.commissioning.v1.ModelFit
616
+ */
617
+ export declare type ModelFit = Message<"kusinta.iot.commissioning.v1.ModelFit"> & {
618
+ /**
619
+ * @generated from oneof kusinta.iot.commissioning.v1.ModelFit.subject
620
+ */
621
+ subject: {
622
+ /**
623
+ * @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 1;
624
+ */
625
+ value: SpaceId;
626
+ case: "roomId";
627
+ } | {
628
+ /**
629
+ * A heating.v1 FloorZone's zone_id.
630
+ *
631
+ * @generated from field: string floor_zone_id = 2;
632
+ */
633
+ value: string;
634
+ case: "floorZoneId";
635
+ } | { case: undefined; value?: undefined };
636
+
637
+ /**
638
+ * @generated from field: kusinta.iot.commissioning.v1.ModelFitBand band = 3;
639
+ */
640
+ band: ModelFitBand;
641
+
642
+ /**
643
+ * Set with NOT_ENOUGH_DATA, and with POOR where a gap explains it.
644
+ *
645
+ * @generated from field: kusinta.iot.commissioning.v1.ModelFitGap gap = 4;
646
+ */
647
+ gap: ModelFitGap;
648
+ };
649
+
650
+ /**
651
+ * Describes the message kusinta.iot.commissioning.v1.ModelFit.
652
+ * Use `create(ModelFitSchema)` to create a new message.
653
+ */
654
+ export declare const ModelFitSchema: GenMessage<ModelFit>;
655
+
603
656
  /**
604
657
  * Whether a home is set up: every REQUIRED fact answered with a value at least once, and
605
658
  * every output bound in it passed OUTPUT_LEASE at least once on the device it is bound to.
@@ -1374,6 +1427,125 @@ export enum TestFailure {
1374
1427
  */
1375
1428
  export declare const TestFailureSchema: GenEnum<TestFailure>;
1376
1429
 
1430
+ /**
1431
+ * How well a model predicts its room or zone.
1432
+ *
1433
+ * @generated from enum kusinta.iot.commissioning.v1.ModelFitBand
1434
+ */
1435
+ export enum ModelFitBand {
1436
+ /**
1437
+ * @generated from enum value: MODEL_FIT_BAND_UNSPECIFIED = 0;
1438
+ */
1439
+ UNSPECIFIED = 0,
1440
+
1441
+ /**
1442
+ * Not judged yet: see ModelFit.gap.
1443
+ *
1444
+ * @generated from enum value: MODEL_FIT_BAND_NOT_ENOUGH_DATA = 1;
1445
+ */
1446
+ NOT_ENOUGH_DATA = 1,
1447
+
1448
+ /**
1449
+ * No better than assuming no change: the planner does not plan with it.
1450
+ *
1451
+ * @generated from enum value: MODEL_FIT_BAND_POOR = 2;
1452
+ */
1453
+ POOR = 2,
1454
+
1455
+ /**
1456
+ * Better than assuming no change.
1457
+ *
1458
+ * @generated from enum value: MODEL_FIT_BAND_FAIR = 3;
1459
+ */
1460
+ FAIR = 3,
1461
+
1462
+ /**
1463
+ * Clearly better than assuming no change.
1464
+ *
1465
+ * @generated from enum value: MODEL_FIT_BAND_GOOD = 4;
1466
+ */
1467
+ GOOD = 4,
1468
+ }
1469
+
1470
+ /**
1471
+ * Describes the enum kusinta.iot.commissioning.v1.ModelFitBand.
1472
+ */
1473
+ export declare const ModelFitBandSchema: GenEnum<ModelFitBand>;
1474
+
1475
+ /**
1476
+ * What keeps a model from being judged, or from fitting at all: a client says what to do
1477
+ * about it. Read by a client that does not know a value as UNSPECIFIED.
1478
+ *
1479
+ * @generated from enum kusinta.iot.commissioning.v1.ModelFitGap
1480
+ */
1481
+ export enum ModelFitGap {
1482
+ /**
1483
+ * None, or none the gateway names.
1484
+ *
1485
+ * @generated from enum value: MODEL_FIT_GAP_UNSPECIFIED = 0;
1486
+ */
1487
+ UNSPECIFIED = 0,
1488
+
1489
+ /**
1490
+ * The heating has not varied enough yet for the model to learn from: the room's target
1491
+ * has barely changed, or it is outside the heating season. Time fixes it.
1492
+ *
1493
+ * @generated from enum value: MODEL_FIT_GAP_NO_EXCITATION = 1;
1494
+ */
1495
+ NO_EXCITATION = 1,
1496
+
1497
+ /**
1498
+ * No heat source is set up as serving the room's radiators, or more than one is
1499
+ * (heating.v1): the model has no one supply and outdoor temperature to learn against.
1500
+ *
1501
+ * @generated from enum value: MODEL_FIT_GAP_NO_PLANT = 2;
1502
+ */
1503
+ NO_PLANT = 2,
1504
+
1505
+ /**
1506
+ * A floor zone's circuit has no return temperature: its pipe probes are not bound.
1507
+ *
1508
+ * @generated from enum value: MODEL_FIT_GAP_NO_RETURNS = 3;
1509
+ */
1510
+ NO_RETURNS = 3,
1511
+
1512
+ /**
1513
+ * A floor zone the gateway does not drive: there is nothing of its own to learn from.
1514
+ *
1515
+ * @generated from enum value: MODEL_FIT_GAP_NOT_GATEWAY_DRIVEN = 4;
1516
+ */
1517
+ NOT_GATEWAY_DRIVEN = 4,
1518
+
1519
+ /**
1520
+ * The fit came out physically impossible: usually a sensor in the wrong place or a
1521
+ * mapping of rooms to zones that does not match the house.
1522
+ *
1523
+ * @generated from enum value: MODEL_FIT_GAP_NOT_PHYSICAL = 5;
1524
+ */
1525
+ NOT_PHYSICAL = 5,
1526
+
1527
+ /**
1528
+ * A floor zone's return temperature is shared with other zones of its circuit, so it says
1529
+ * nothing of the zone alone: the zone needs a return probe of its own.
1530
+ *
1531
+ * @generated from enum value: MODEL_FIT_GAP_RETURNS_SHARED = 6;
1532
+ */
1533
+ RETURNS_SHARED = 6,
1534
+
1535
+ /**
1536
+ * The model is fitted, and its predictions have not yet been scored over enough nights to
1537
+ * be judged. Time fixes it.
1538
+ *
1539
+ * @generated from enum value: MODEL_FIT_GAP_TOO_FEW_NIGHTS = 7;
1540
+ */
1541
+ TOO_FEW_NIGHTS = 7,
1542
+ }
1543
+
1544
+ /**
1545
+ * Describes the enum kusinta.iot.commissioning.v1.ModelFitGap.
1546
+ */
1547
+ export declare const ModelFitGapSchema: GenEnum<ModelFitGap>;
1548
+
1377
1549
  /**
1378
1550
  * Where a commissioning grant stands (see the file comment, GRANTS). An ended grant has no
1379
1551
  * state: it is listed no more.
@@ -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("CjBrdXNpbnRhL2lvdC9jb21taXNzaW9uaW5nL3YxL2NvbW1pc3Npb25pbmcucHJvdG8SHGt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEizwEKClByb3ZlbmFuY2USMgoFcGFydHkYASABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjgKCGV2aWRlbmNlGAIgASgOMiYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5FdmlkZW5jZRImCgJhdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoCYnkYBCABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQiLgoKQmluZGluZ1JlZhIRCglyZWNvcmRfaWQYASABKAkSDQoFZmllbGQYAiABKAkiMwoLVGVtcGxhdGVSZWYSEwoLdGVtcGxhdGVfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoDSL0BAoRQ29tbWlzc2lvbmluZ0ZhY3QSDwoHZmFjdF9pZBgBIAEoCRIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEQoJcmVjb3JkX2lkGAMgASgJEgsKA2tleRgEIAEoCRI2CgV2YWx1ZRgFIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZUgAEhEKB3Vua25vd24YBiABKAhIABI1CghhbnN3ZXJlchgHIAEoDjIjLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUGFydHkSOgoJbmVjZXNzaXR5GAggASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWNlc3NpdHkSNgoHZmVhdHVyZRgJIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI8Cgpwcm92ZW5hbmNlGAogASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlEhAKCHJldmlzaW9uGA0gASgEEkAKDWRldmlhdGVzX2Zyb20YDyABKAsyKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlUmVmEjYKBXRvcGljGBAgASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5GYWN0VG9waWNCCAoGYW5zd2VySgQICxANSgQIDhAPUgVzY29wZVIQdGVtcGxhdGVfdmVyc2lvblILdGVtcGxhdGVfaWQiegoMVGVtcGxhdGVGYWN0EgsKA2tleRgBIAEoCRIVCg1zdWJqZWN0X2xhYmVsGAIgASgJEjQKBXZhbHVlGAMgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlSgQIBBAFUgpwcm92ZW5hbmNlIvMBCg1Ib3VzZVRlbXBsYXRlEhMKC3RlbXBsYXRlX2lkGAEgASgJEjUKC2J1aWxkaW5nX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIMCgRuYW1lGAMgASgJEg8KB3ZlcnNpb24YBCABKA0SOQoFZmFjdHMYBSADKAsyKi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlRmFjdBI8Cgpwcm92ZW5hbmNlGAYgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlItsCCgROZWVkEhIKCGZhY3Rfa2V5GAEgASgJSAASNgoEdGVzdBgCIAEoDjImLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEtpbmRIABIyCghzcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoIYW5zd2VyZXIYBSABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjkKB2JpbmRpbmcYByABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSOwoKZmFjdF90b3BpYxgIIAEoDjInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmFjdFRvcGljQgYKBHdoYXRKBAgEEAVKBAgGEAdSCXJlY29yZF9pZFIFZmllbGQi2AEKDEZlYXR1cmVCbG9jaxI5CgZyZWFzb24YASABKA4yKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJsb2NrUmVhc29uEjQKCWRldmljZV9pZBgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjkKB2JpbmRpbmcYBSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEANKBAgEEAVSCXJlY29yZF9pZFIFZmllbGQi8QEKDUZlYXR1cmVTdGF0dXMSNgoHZmVhdHVyZRgBIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI5CgVzdGF0ZRgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZVN0YXRlEjEKBW5lZWRzGAMgAygLMiIua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWVkEjoKBmJsb2NrcxgEIAMoCzIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZUJsb2NrIqYFChFDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjQKBGtpbmQYAiABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYDSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSNAoJZGV2aWNlX2lkGAUgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSNgoFc3RhdGUYBiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZRI6CgdmYWlsdXJlGAcgASgOMikua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0RmFpbHVyZRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPAoKcHJvdmVuYW5jZRgLIAEoCzIoLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUHJvdmVuYW5jZRISCgpzdXBlcnNlZGVkGAwgASgIEi8KC2NvbmNsdWRlX2J5GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI8CghldmlkZW5jZRgPIAMoCzIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEV2aWRlbmNlSgQIAxAFUglyZWNvcmRfaWRSBWZpZWxkIl8KDFRlc3RFdmlkZW5jZRIPCgdyZWFkaW5nGAEgASgJEg0KBXZhbHVlGAIgASgSEi8KC29ic2VydmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLzAgoUQ29tbWlzc2lvbmluZ1Byb2ZpbGUSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj4KBWZhY3RzGAIgAygLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nRmFjdBI+CgV0ZXN0cxgDIAMoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3QSPQoIZmVhdHVyZXMYBCADKAsyKy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkZlYXR1cmVTdGF0dXMSPQoIdGVtcGxhdGUYBiABKAsyKy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkhvdXNlVGVtcGxhdGUSFgoObmVlZHNfd2l0aGhlbGQYByABKAhKBAgFEAZSC3RlbXBsYXRlX2lkIk4KCUhvbWVTZXR1cBIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIOCgZzZXRfdXAYAiABKAgiRAoKSG9tZVNldHVwcxI2CgVob21lcxgBIAMoCzInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG9tZVNldHVwIuIBChNDb21taXNzaW9uaW5nUmVjb3JkEj8KBGZhY3QYASABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0SAASPwoEdGVzdBgCIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3RIABI/Cgh0ZW1wbGF0ZRgDIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZUgAQggKBnJlY29yZCKPBAoSQ29tbWlzc2lvbmluZ0dyYW50EhAKCGdyYW50X2lkGAEgASgJEjIKCHNwYWNlX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIyCglpbnN0YWxsZXIYAyABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSFgoOaW5zdGFsbGVyX25hbWUYBCABKAkSRAoFc3RhdGUYBSABKA4yNS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudFN0YXRlEjAKDHJlcXVlc3RlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJc3RhcnRzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpncmFudGVkX2J5GAogASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEi4KCmdyYW50ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIosBChNDb21taXNzaW9uaW5nR3JhbnRzEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBJACgZncmFudHMYAiADKAsyMC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudCK/AQoYQ29tbWlzc2lvbmluZ0dyYW50UmVjb3JkEhYKDmluc3RhbGxlcl9uYW1lGAEgASgJEi4KCmdyYW50ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCXN0YXJ0c19hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKnsKBVBhcnR5EhUKEVBBUlRZX1VOU1BFQ0lGSUVEEAASHAoYUEFSVFlfT1dORVJfT1JHQU5JU0FUSU9OEAESEwoPUEFSVFlfSE9VU0VIT0xEEAISEwoPUEFSVFlfSU5TVEFMTEVSEAMSEwoPUEFSVFlfQVVUT01BVElDEAQqcQoJTmVjZXNzaXR5EhkKFU5FQ0VTU0lUWV9VTlNQRUNJRklFRBAAEhYKEk5FQ0VTU0lUWV9SRVFVSVJFRBABEhkKFU5FQ0VTU0lUWV9GT1JfRkVBVFVSRRACEhYKEk5FQ0VTU0lUWV9PUFRJT05BTBADKqgBCghFdmlkZW5jZRIYChRFVklERU5DRV9VTlNQRUNJRklFRBAAEhMKD0VWSURFTkNFX1NUQVRFRBABEhIKDkVWSURFTkNFX1BIT1RPEAISFAoQRVZJREVOQ0VfRFJBV0lORxADEhYKEkVWSURFTkNFX0lOU1BFQ1RFRBAEEhUKEUVWSURFTkNFX01FQVNVUkVEEAUSFAoQRVZJREVOQ0VfREVSSVZFRBAGKqACCglGYWN0VG9waWMSGgoWRkFDVF9UT1BJQ19VTlNQRUNJRklFRBAAEhcKE0ZBQ1RfVE9QSUNfQlVJTERJTkcQARIUChBGQUNUX1RPUElDX1JPT01TEAISGgoWRkFDVF9UT1BJQ19IRUFUX1NPVVJDRRADEhwKGEZBQ1RfVE9QSUNfRkxPT1JfSEVBVElORxAEEhwKGEZBQ1RfVE9QSUNfQ09NRk9SVF9MT0FEUxAFEhoKFkZBQ1RfVE9QSUNfRUxFQ1RSSUNJVFkQBhIfChtGQUNUX1RPUElDX0RJU1RSSUNUX0hFQVRJTkcQBxIbChdGQUNUX1RPUElDX0NPTk5FQ1RJVklUWRAIEhYKEkZBQ1RfVE9QSUNfQ09NRk9SVBAJKqkBCgdGZWF0dXJlEhcKE0ZFQVRVUkVfVU5TUEVDSUZJRUQQABIXChNGRUFUVVJFX0ZMT09SX1pPTkVTEAESEQoNRkVBVFVSRV9QTEFOVBACEhkKFUZFQVRVUkVfQ09NRk9SVF9MT0FEUxADEhAKDEZFQVRVUkVfQ09TVBAEEhYKEkZFQVRVUkVfUEVBS19HVUFSRBAFEhQKEEZFQVRVUkVfUExBTk5JTkcQBiqFAQoMRmVhdHVyZVN0YXRlEh0KGUZFQVRVUkVfU1RBVEVfVU5TUEVDSUZJRUQQABIXChNGRUFUVVJFX1NUQVRFX1dPUktTEAESFwoTRkVBVFVSRV9TVEFURV9ORUVEUxACEiQKIEZFQVRVUkVfU1RBVEVfQkxPQ0tFRF9GT1JfU0FGRVRZEAMqnAIKC0Jsb2NrUmVhc29uEhwKGEJMT0NLX1JFQVNPTl9VTlNQRUNJRklFRBAAEhwKGEJMT0NLX1JFQVNPTl9URVNUX0ZBSUxFRBABEiIKHkJMT0NLX1JFQVNPTl9PVVRQVVRfTk9UX0xFQVNFRBACEiUKIUJMT0NLX1JFQVNPTl9QT1dFUl9PTl9OT1RfQVRfUkVTVBADEhwKGEJMT0NLX1JFQVNPTl9ERVZJQ0VfR09ORRAEEiIKHkJMT0NLX1JFQVNPTl9DT05UUk9MX1JPT01fR09ORRAFEh8KG0JMT0NLX1JFQVNPTl9MRUFTRV9UT09fTE9ORxAGEiMKH0JMT0NLX1JFQVNPTl9ERVZJQ0VfQUNST1NTX0hPTUUQByp+CghUZXN0S2luZBIZChVURVNUX0tJTkRfVU5TUEVDSUZJRUQQABIaChZURVNUX0tJTkRfT1VUUFVUX0xFQVNFEAESGQoVVEVTVF9LSU5EX1pPTkVfRUZGRUNUEAISIAocVEVTVF9LSU5EX1BVTVBfQUxMX1pPTkVTX09GRhADKoUBCglUZXN0U3RhdGUSGgoWVEVTVF9TVEFURV9VTlNQRUNJRklFRBAAEhYKElRFU1RfU1RBVEVfUlVOTklORxABEhUKEVRFU1RfU1RBVEVfUEFTU0VEEAISFQoRVEVTVF9TVEFURV9GQUlMRUQQAxIWChJURVNUX1NUQVRFX0FCT1JURUQQBCqdAgoLVGVzdEZhaWx1cmUSHAoYVEVTVF9GQUlMVVJFX1VOU1BFQ0lGSUVEEAASJQohVEVTVF9GQUlMVVJFX1BPV0VSX09OX05PVF9BVF9SRVNUEAESIAocVEVTVF9GQUlMVVJFX05PX1NUQVRFX0NIQU5HRRACEiIKHlRFU1RfRkFJTFVSRV9MRUFTRV9OT1RfUkVORVdFRBADEicKI1RFU1RfRkFJTFVSRV9ESURfTk9UX1JFVFVSTl9UT19SRVNUEAQSIwofVEVTVF9GQUlMVVJFX0RFVklDRV9VTlJFQUNIQUJMRRAFEhoKFlRFU1RfRkFJTFVSRV9OT19FRkZFQ1QQBhIZChVURVNUX0ZBSUxVUkVfT0JTRVJWRUQQByqUAQoXQ29tbWlzc2lvbmluZ0dyYW50U3RhdGUSKQolQ09NTUlTU0lPTklOR19HUkFOVF9TVEFURV9VTlNQRUNJRklFRBAAEicKI0NPTU1JU1NJT05JTkdfR1JBTlRfU1RBVEVfUkVRVUVTVEVEEAESJQohQ09NTUlTU0lPTklOR19HUkFOVF9TVEFURV9HUkFOVEVEEAJCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_identity_v1_identity]);
14
+ fileDesc("CjBrdXNpbnRhL2lvdC9jb21taXNzaW9uaW5nL3YxL2NvbW1pc3Npb25pbmcucHJvdG8SHGt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEizwEKClByb3ZlbmFuY2USMgoFcGFydHkYASABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjgKCGV2aWRlbmNlGAIgASgOMiYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5FdmlkZW5jZRImCgJhdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoCYnkYBCABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQiLgoKQmluZGluZ1JlZhIRCglyZWNvcmRfaWQYASABKAkSDQoFZmllbGQYAiABKAkiMwoLVGVtcGxhdGVSZWYSEwoLdGVtcGxhdGVfaWQYASABKAkSDwoHdmVyc2lvbhgCIAEoDSL0BAoRQ29tbWlzc2lvbmluZ0ZhY3QSDwoHZmFjdF9pZBgBIAEoCRIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEQoJcmVjb3JkX2lkGAMgASgJEgsKA2tleRgEIAEoCRI2CgV2YWx1ZRgFIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZUgAEhEKB3Vua25vd24YBiABKAhIABI1CghhbnN3ZXJlchgHIAEoDjIjLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUGFydHkSOgoJbmVjZXNzaXR5GAggASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWNlc3NpdHkSNgoHZmVhdHVyZRgJIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI8Cgpwcm92ZW5hbmNlGAogASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlEhAKCHJldmlzaW9uGA0gASgEEkAKDWRldmlhdGVzX2Zyb20YDyABKAsyKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlUmVmEjYKBXRvcGljGBAgASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5GYWN0VG9waWNCCAoGYW5zd2VySgQICxANSgQIDhAPUgVzY29wZVIQdGVtcGxhdGVfdmVyc2lvblILdGVtcGxhdGVfaWQiegoMVGVtcGxhdGVGYWN0EgsKA2tleRgBIAEoCRIVCg1zdWJqZWN0X2xhYmVsGAIgASgJEjQKBXZhbHVlGAMgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlSgQIBBAFUgpwcm92ZW5hbmNlIvMBCg1Ib3VzZVRlbXBsYXRlEhMKC3RlbXBsYXRlX2lkGAEgASgJEjUKC2J1aWxkaW5nX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIMCgRuYW1lGAMgASgJEg8KB3ZlcnNpb24YBCABKA0SOQoFZmFjdHMYBSADKAsyKi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlbXBsYXRlRmFjdBI8Cgpwcm92ZW5hbmNlGAYgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Qcm92ZW5hbmNlItsCCgROZWVkEhIKCGZhY3Rfa2V5GAEgASgJSAASNgoEdGVzdBgCIAEoDjImLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEtpbmRIABIyCghzcGFjZV9pZBgDIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoIYW5zd2VyZXIYBSABKA4yIy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlBhcnR5EjkKB2JpbmRpbmcYByABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSOwoKZmFjdF90b3BpYxgIIAEoDjInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmFjdFRvcGljQgYKBHdoYXRKBAgEEAVKBAgGEAdSCXJlY29yZF9pZFIFZmllbGQi2AEKDEZlYXR1cmVCbG9jaxI5CgZyZWFzb24YASABKA4yKS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJsb2NrUmVhc29uEjQKCWRldmljZV9pZBgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjkKB2JpbmRpbmcYBSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEANKBAgEEAVSCXJlY29yZF9pZFIFZmllbGQi8QEKDUZlYXR1cmVTdGF0dXMSNgoHZmVhdHVyZRgBIAEoDjIlLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZRI5CgVzdGF0ZRgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZVN0YXRlEjEKBW5lZWRzGAMgAygLMiIua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5OZWVkEjoKBmJsb2NrcxgEIAMoCzIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuRmVhdHVyZUJsb2NrIqYFChFDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjQKBGtpbmQYAiABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYDSABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWYSNAoJZGV2aWNlX2lkGAUgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSNgoFc3RhdGUYBiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZRI6CgdmYWlsdXJlGAcgASgOMikua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0RmFpbHVyZRIuCgpzdGFydGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtmaW5pc2hlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPAoKcHJvdmVuYW5jZRgLIAEoCzIoLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuUHJvdmVuYW5jZRISCgpzdXBlcnNlZGVkGAwgASgIEi8KC2NvbmNsdWRlX2J5GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI8CghldmlkZW5jZRgPIAMoCzIqLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuVGVzdEV2aWRlbmNlSgQIAxAFUglyZWNvcmRfaWRSBWZpZWxkIl8KDFRlc3RFdmlkZW5jZRIPCgdyZWFkaW5nGAEgASgJEg0KBXZhbHVlGAIgASgSEi8KC29ic2VydmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKvAwoUQ29tbWlzc2lvbmluZ1Byb2ZpbGUSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj4KBWZhY3RzGAIgAygLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nRmFjdBI+CgV0ZXN0cxgDIAMoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3QSPQoIZmVhdHVyZXMYBCADKAsyKy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkZlYXR1cmVTdGF0dXMSPQoIdGVtcGxhdGUYBiABKAsyKy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkhvdXNlVGVtcGxhdGUSFgoObmVlZHNfd2l0aGhlbGQYByABKAgSOgoKbW9kZWxfZml0cxgIIAMoCzImLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuTW9kZWxGaXRKBAgFEAZSC3RlbXBsYXRlX2lkItUBCghNb2RlbEZpdBIzCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZEgAEhcKDWZsb29yX3pvbmVfaWQYAiABKAlIABI4CgRiYW5kGAMgASgOMioua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Nb2RlbEZpdEJhbmQSNgoDZ2FwGAQgASgOMikua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Nb2RlbEZpdEdhcEIJCgdzdWJqZWN0Ik4KCUhvbWVTZXR1cBIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIOCgZzZXRfdXAYAiABKAgiRAoKSG9tZVNldHVwcxI2CgVob21lcxgBIAMoCzInLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG9tZVNldHVwIuIBChNDb21taXNzaW9uaW5nUmVjb3JkEj8KBGZhY3QYASABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0SAASPwoEdGVzdBgCIAEoCzIvLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Rlc3RIABI/Cgh0ZW1wbGF0ZRgDIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZUgAQggKBnJlY29yZCKPBAoSQ29tbWlzc2lvbmluZ0dyYW50EhAKCGdyYW50X2lkGAEgASgJEjIKCHNwYWNlX2lkGAIgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIyCglpbnN0YWxsZXIYAyABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSFgoOaW5zdGFsbGVyX25hbWUYBCABKAkSRAoFc3RhdGUYBSABKA4yNS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudFN0YXRlEjAKDHJlcXVlc3RlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLQoJc3RhcnRzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpncmFudGVkX2J5GAogASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEi4KCmdyYW50ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIosBChNDb21taXNzaW9uaW5nR3JhbnRzEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBJACgZncmFudHMYAiADKAsyMC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudCK/AQoYQ29tbWlzc2lvbmluZ0dyYW50UmVjb3JkEhYKDmluc3RhbGxlcl9uYW1lGAEgASgJEi4KCmdyYW50ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCXN0YXJ0c19hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKnsKBVBhcnR5EhUKEVBBUlRZX1VOU1BFQ0lGSUVEEAASHAoYUEFSVFlfT1dORVJfT1JHQU5JU0FUSU9OEAESEwoPUEFSVFlfSE9VU0VIT0xEEAISEwoPUEFSVFlfSU5TVEFMTEVSEAMSEwoPUEFSVFlfQVVUT01BVElDEAQqcQoJTmVjZXNzaXR5EhkKFU5FQ0VTU0lUWV9VTlNQRUNJRklFRBAAEhYKEk5FQ0VTU0lUWV9SRVFVSVJFRBABEhkKFU5FQ0VTU0lUWV9GT1JfRkVBVFVSRRACEhYKEk5FQ0VTU0lUWV9PUFRJT05BTBADKqgBCghFdmlkZW5jZRIYChRFVklERU5DRV9VTlNQRUNJRklFRBAAEhMKD0VWSURFTkNFX1NUQVRFRBABEhIKDkVWSURFTkNFX1BIT1RPEAISFAoQRVZJREVOQ0VfRFJBV0lORxADEhYKEkVWSURFTkNFX0lOU1BFQ1RFRBAEEhUKEUVWSURFTkNFX01FQVNVUkVEEAUSFAoQRVZJREVOQ0VfREVSSVZFRBAGKqACCglGYWN0VG9waWMSGgoWRkFDVF9UT1BJQ19VTlNQRUNJRklFRBAAEhcKE0ZBQ1RfVE9QSUNfQlVJTERJTkcQARIUChBGQUNUX1RPUElDX1JPT01TEAISGgoWRkFDVF9UT1BJQ19IRUFUX1NPVVJDRRADEhwKGEZBQ1RfVE9QSUNfRkxPT1JfSEVBVElORxAEEhwKGEZBQ1RfVE9QSUNfQ09NRk9SVF9MT0FEUxAFEhoKFkZBQ1RfVE9QSUNfRUxFQ1RSSUNJVFkQBhIfChtGQUNUX1RPUElDX0RJU1RSSUNUX0hFQVRJTkcQBxIbChdGQUNUX1RPUElDX0NPTk5FQ1RJVklUWRAIEhYKEkZBQ1RfVE9QSUNfQ09NRk9SVBAJKqkBCgdGZWF0dXJlEhcKE0ZFQVRVUkVfVU5TUEVDSUZJRUQQABIXChNGRUFUVVJFX0ZMT09SX1pPTkVTEAESEQoNRkVBVFVSRV9QTEFOVBACEhkKFUZFQVRVUkVfQ09NRk9SVF9MT0FEUxADEhAKDEZFQVRVUkVfQ09TVBAEEhYKEkZFQVRVUkVfUEVBS19HVUFSRBAFEhQKEEZFQVRVUkVfUExBTk5JTkcQBiqFAQoMRmVhdHVyZVN0YXRlEh0KGUZFQVRVUkVfU1RBVEVfVU5TUEVDSUZJRUQQABIXChNGRUFUVVJFX1NUQVRFX1dPUktTEAESFwoTRkVBVFVSRV9TVEFURV9ORUVEUxACEiQKIEZFQVRVUkVfU1RBVEVfQkxPQ0tFRF9GT1JfU0FGRVRZEAMqnAIKC0Jsb2NrUmVhc29uEhwKGEJMT0NLX1JFQVNPTl9VTlNQRUNJRklFRBAAEhwKGEJMT0NLX1JFQVNPTl9URVNUX0ZBSUxFRBABEiIKHkJMT0NLX1JFQVNPTl9PVVRQVVRfTk9UX0xFQVNFRBACEiUKIUJMT0NLX1JFQVNPTl9QT1dFUl9PTl9OT1RfQVRfUkVTVBADEhwKGEJMT0NLX1JFQVNPTl9ERVZJQ0VfR09ORRAEEiIKHkJMT0NLX1JFQVNPTl9DT05UUk9MX1JPT01fR09ORRAFEh8KG0JMT0NLX1JFQVNPTl9MRUFTRV9UT09fTE9ORxAGEiMKH0JMT0NLX1JFQVNPTl9ERVZJQ0VfQUNST1NTX0hPTUUQByp+CghUZXN0S2luZBIZChVURVNUX0tJTkRfVU5TUEVDSUZJRUQQABIaChZURVNUX0tJTkRfT1VUUFVUX0xFQVNFEAESGQoVVEVTVF9LSU5EX1pPTkVfRUZGRUNUEAISIAocVEVTVF9LSU5EX1BVTVBfQUxMX1pPTkVTX09GRhADKoUBCglUZXN0U3RhdGUSGgoWVEVTVF9TVEFURV9VTlNQRUNJRklFRBAAEhYKElRFU1RfU1RBVEVfUlVOTklORxABEhUKEVRFU1RfU1RBVEVfUEFTU0VEEAISFQoRVEVTVF9TVEFURV9GQUlMRUQQAxIWChJURVNUX1NUQVRFX0FCT1JURUQQBCqdAgoLVGVzdEZhaWx1cmUSHAoYVEVTVF9GQUlMVVJFX1VOU1BFQ0lGSUVEEAASJQohVEVTVF9GQUlMVVJFX1BPV0VSX09OX05PVF9BVF9SRVNUEAESIAocVEVTVF9GQUlMVVJFX05PX1NUQVRFX0NIQU5HRRACEiIKHlRFU1RfRkFJTFVSRV9MRUFTRV9OT1RfUkVORVdFRBADEicKI1RFU1RfRkFJTFVSRV9ESURfTk9UX1JFVFVSTl9UT19SRVNUEAQSIwofVEVTVF9GQUlMVVJFX0RFVklDRV9VTlJFQUNIQUJMRRAFEhoKFlRFU1RfRkFJTFVSRV9OT19FRkZFQ1QQBhIZChVURVNUX0ZBSUxVUkVfT0JTRVJWRUQQByqdAQoMTW9kZWxGaXRCYW5kEh4KGk1PREVMX0ZJVF9CQU5EX1VOU1BFQ0lGSUVEEAASIgoeTU9ERUxfRklUX0JBTkRfTk9UX0VOT1VHSF9EQVRBEAESFwoTTU9ERUxfRklUX0JBTkRfUE9PUhACEhcKE01PREVMX0ZJVF9CQU5EX0ZBSVIQAxIXChNNT0RFTF9GSVRfQkFORF9HT09EEAQqkQIKC01vZGVsRml0R2FwEh0KGU1PREVMX0ZJVF9HQVBfVU5TUEVDSUZJRUQQABIfChtNT0RFTF9GSVRfR0FQX05PX0VYQ0lUQVRJT04QARIaChZNT0RFTF9GSVRfR0FQX05PX1BMQU5UEAISHAoYTU9ERUxfRklUX0dBUF9OT19SRVRVUk5TEAMSJAogTU9ERUxfRklUX0dBUF9OT1RfR0FURVdBWV9EUklWRU4QBBIeChpNT0RFTF9GSVRfR0FQX05PVF9QSFlTSUNBTBAFEiAKHE1PREVMX0ZJVF9HQVBfUkVUVVJOU19TSEFSRUQQBhIgChxNT0RFTF9GSVRfR0FQX1RPT19GRVdfTklHSFRTEAcqlAEKF0NvbW1pc3Npb25pbmdHcmFudFN0YXRlEikKJUNPTU1JU1NJT05JTkdfR1JBTlRfU1RBVEVfVU5TUEVDSUZJRUQQABInCiNDT01NSVNTSU9OSU5HX0dSQU5UX1NUQVRFX1JFUVVFU1RFRBABEiUKIUNPTU1JU1NJT05JTkdfR1JBTlRfU1RBVEVfR1JBTlRFRBACQgJIAWIGcHJvdG8z", [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.
@@ -97,47 +97,54 @@ export const TestEvidenceSchema = /*@__PURE__*/
97
97
  export const CommissioningProfileSchema = /*@__PURE__*/
98
98
  messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 11);
99
99
 
100
+ /**
101
+ * Describes the message kusinta.iot.commissioning.v1.ModelFit.
102
+ * Use `create(ModelFitSchema)` to create a new message.
103
+ */
104
+ export const ModelFitSchema = /*@__PURE__*/
105
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 12);
106
+
100
107
  /**
101
108
  * Describes the message kusinta.iot.commissioning.v1.HomeSetup.
102
109
  * Use `create(HomeSetupSchema)` to create a new message.
103
110
  */
104
111
  export const HomeSetupSchema = /*@__PURE__*/
105
- messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 12);
112
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 13);
106
113
 
107
114
  /**
108
115
  * Describes the message kusinta.iot.commissioning.v1.HomeSetups.
109
116
  * Use `create(HomeSetupsSchema)` to create a new message.
110
117
  */
111
118
  export const HomeSetupsSchema = /*@__PURE__*/
112
- messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 13);
119
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 14);
113
120
 
114
121
  /**
115
122
  * Describes the message kusinta.iot.commissioning.v1.CommissioningRecord.
116
123
  * Use `create(CommissioningRecordSchema)` to create a new message.
117
124
  */
118
125
  export const CommissioningRecordSchema = /*@__PURE__*/
119
- messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 14);
126
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 15);
120
127
 
121
128
  /**
122
129
  * Describes the message kusinta.iot.commissioning.v1.CommissioningGrant.
123
130
  * Use `create(CommissioningGrantSchema)` to create a new message.
124
131
  */
125
132
  export const CommissioningGrantSchema = /*@__PURE__*/
126
- messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 15);
133
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 16);
127
134
 
128
135
  /**
129
136
  * Describes the message kusinta.iot.commissioning.v1.CommissioningGrants.
130
137
  * Use `create(CommissioningGrantsSchema)` to create a new message.
131
138
  */
132
139
  export const CommissioningGrantsSchema = /*@__PURE__*/
133
- messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 16);
140
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 17);
134
141
 
135
142
  /**
136
143
  * Describes the message kusinta.iot.commissioning.v1.CommissioningGrantRecord.
137
144
  * Use `create(CommissioningGrantRecordSchema)` to create a new message.
138
145
  */
139
146
  export const CommissioningGrantRecordSchema = /*@__PURE__*/
140
- messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 17);
147
+ messageDesc(file_kusinta_iot_commissioning_v1_commissioning, 18);
141
148
 
142
149
  /**
143
150
  * Describes the enum kusinta.iot.commissioning.v1.Party.
@@ -272,11 +279,40 @@ export const TestFailureSchema = /*@__PURE__*/
272
279
  export const TestFailure = /*@__PURE__*/
273
280
  tsEnum(TestFailureSchema);
274
281
 
282
+ /**
283
+ * Describes the enum kusinta.iot.commissioning.v1.ModelFitBand.
284
+ */
285
+ export const ModelFitBandSchema = /*@__PURE__*/
286
+ enumDesc(file_kusinta_iot_commissioning_v1_commissioning, 10);
287
+
288
+ /**
289
+ * How well a model predicts its room or zone.
290
+ *
291
+ * @generated from enum kusinta.iot.commissioning.v1.ModelFitBand
292
+ */
293
+ export const ModelFitBand = /*@__PURE__*/
294
+ tsEnum(ModelFitBandSchema);
295
+
296
+ /**
297
+ * Describes the enum kusinta.iot.commissioning.v1.ModelFitGap.
298
+ */
299
+ export const ModelFitGapSchema = /*@__PURE__*/
300
+ enumDesc(file_kusinta_iot_commissioning_v1_commissioning, 11);
301
+
302
+ /**
303
+ * What keeps a model from being judged, or from fitting at all: a client says what to do
304
+ * about it. Read by a client that does not know a value as UNSPECIFIED.
305
+ *
306
+ * @generated from enum kusinta.iot.commissioning.v1.ModelFitGap
307
+ */
308
+ export const ModelFitGap = /*@__PURE__*/
309
+ tsEnum(ModelFitGapSchema);
310
+
275
311
  /**
276
312
  * Describes the enum kusinta.iot.commissioning.v1.CommissioningGrantState.
277
313
  */
278
314
  export const CommissioningGrantStateSchema = /*@__PURE__*/
279
- enumDesc(file_kusinta_iot_commissioning_v1_commissioning, 10);
315
+ enumDesc(file_kusinta_iot_commissioning_v1_commissioning, 12);
280
316
 
281
317
  /**
282
318
  * Where a commissioning grant stands (see the file comment, GRANTS). An ended grant has no
@@ -150,3 +150,50 @@ export declare type ForecastIssue = Message<"kusinta.iot.planning.v1.ForecastIss
150
150
  */
151
151
  export declare const ForecastIssueSchema: GenMessage<ForecastIssue>;
152
152
 
153
+ /**
154
+ * An official reference rate from euros to another currency, published once a working day.
155
+ * Day-ahead prices are always in euros; a client that shows them in the currency a household
156
+ * pays in converts each price at the latest rate published on or before the price's day, in
157
+ * the bidding zone's own time. For display only: a planner compares prices with each other
158
+ * and never needs a rate.
159
+ *
160
+ * @generated from message kusinta.iot.planning.v1.ExchangeRate
161
+ */
162
+ export declare type ExchangeRate = Message<"kusinta.iot.planning.v1.ExchangeRate"> & {
163
+ /**
164
+ * The currency converted to, as ISO 4217 names it: "SEK".
165
+ *
166
+ * @generated from field: string currency = 1;
167
+ */
168
+ currency: string;
169
+
170
+ /**
171
+ * The day the rate was published for, in the publisher's own calendar, as an ISO 8601
172
+ * calendar date (YYYY-MM-DD): "2026-11-10". No rate is published on a weekend or a holiday;
173
+ * the last one published before it applies.
174
+ *
175
+ * @generated from field: string published_on = 2;
176
+ */
177
+ publishedOn: string;
178
+
179
+ /**
180
+ * Units of the currency per euro, times 10 000: 113725 for 11.3725 SEK per EUR.
181
+ *
182
+ * @generated from field: uint32 per_eur_e4 = 3;
183
+ */
184
+ perEurE4: number;
185
+
186
+ /**
187
+ * Who published it, to name wherever a converted price is shown: "Sveriges Riksbank".
188
+ *
189
+ * @generated from field: string source = 4;
190
+ */
191
+ source: string;
192
+ };
193
+
194
+ /**
195
+ * Describes the message kusinta.iot.planning.v1.ExchangeRate.
196
+ * Use `create(ExchangeRateSchema)` to create a new message.
197
+ */
198
+ export declare const ExchangeRateSchema: GenMessage<ExchangeRate>;
199
+
@@ -9,7 +9,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
9
9
  * Describes the file kusinta/iot/planning/v1/planning.proto.
10
10
  */
11
11
  export const file_kusinta_iot_planning_v1_planning = /*@__PURE__*/
12
- fileDesc("CiZrdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZy5wcm90bxIXa3VzaW50YS5pb3QucGxhbm5pbmcudjEiTQoMRm9yZWNhc3RDZWxsEh0KFWxhdGl0dWRlX2NlbnRpZGVncmVlcxgBIAEoERIeChZsb25naXR1ZGVfY2VudGlkZWdyZWVzGAIgASgRIn4KDVByaWNlSW50ZXJ2YWwSKQoFc3RhcnQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEicKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRZXVyX2NlbnRzX3Blcl9td2gYAyABKBEitwIKDUZvcmVjYXN0UG9pbnQSLAoIdmFsaWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKGHRlbXBlcmF0dXJlX2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBEiAKE3dpbmRfc3BlZWRfY21fcGVyX3MYAyABKA1IAYgBARIeChF3aW5kX2Zyb21fZGVncmVlcxgEIAEoDUgCiAEBEiYKGWdsb2JhbF9yYWRpYXRpb25fd19wZXJfbTIYBSABKA1IA4gBAUIbChlfdGVtcGVyYXR1cmVfY2VudGlkZWdyZWVzQhYKFF93aW5kX3NwZWVkX2NtX3Blcl9zQhQKEl93aW5kX2Zyb21fZGVncmVlc0IcChpfZ2xvYmFsX3JhZGlhdGlvbl93X3Blcl9tMiKLAQoNRm9yZWNhc3RJc3N1ZRItCglpc3N1ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2F0dHJpYnV0aW9uGAIgASgJEjYKBnBvaW50cxgDIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0UG9pbnRCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp]);
12
+ fileDesc("CiZrdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZy5wcm90bxIXa3VzaW50YS5pb3QucGxhbm5pbmcudjEiTQoMRm9yZWNhc3RDZWxsEh0KFWxhdGl0dWRlX2NlbnRpZGVncmVlcxgBIAEoERIeChZsb25naXR1ZGVfY2VudGlkZWdyZWVzGAIgASgRIn4KDVByaWNlSW50ZXJ2YWwSKQoFc3RhcnQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEicKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRZXVyX2NlbnRzX3Blcl9td2gYAyABKBEitwIKDUZvcmVjYXN0UG9pbnQSLAoIdmFsaWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKGHRlbXBlcmF0dXJlX2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBEiAKE3dpbmRfc3BlZWRfY21fcGVyX3MYAyABKA1IAYgBARIeChF3aW5kX2Zyb21fZGVncmVlcxgEIAEoDUgCiAEBEiYKGWdsb2JhbF9yYWRpYXRpb25fd19wZXJfbTIYBSABKA1IA4gBAUIbChlfdGVtcGVyYXR1cmVfY2VudGlkZWdyZWVzQhYKFF93aW5kX3NwZWVkX2NtX3Blcl9zQhQKEl93aW5kX2Zyb21fZGVncmVlc0IcChpfZ2xvYmFsX3JhZGlhdGlvbl93X3Blcl9tMiKLAQoNRm9yZWNhc3RJc3N1ZRItCglpc3N1ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2F0dHJpYnV0aW9uGAIgASgJEjYKBnBvaW50cxgDIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0UG9pbnQiWgoMRXhjaGFuZ2VSYXRlEhAKCGN1cnJlbmN5GAEgASgJEhQKDHB1Ymxpc2hlZF9vbhgCIAEoCRISCgpwZXJfZXVyX2U0GAMgASgNEg4KBnNvdXJjZRgEIAEoCUICSAFiBnByb3RvMw", [file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message kusinta.iot.planning.v1.ForecastCell.
@@ -39,3 +39,10 @@ export const ForecastPointSchema = /*@__PURE__*/
39
39
  export const ForecastIssueSchema = /*@__PURE__*/
40
40
  messageDesc(file_kusinta_iot_planning_v1_planning, 3);
41
41
 
42
+ /**
43
+ * Describes the message kusinta.iot.planning.v1.ExchangeRate.
44
+ * Use `create(ExchangeRateSchema)` to create a new message.
45
+ */
46
+ export const ExchangeRateSchema = /*@__PURE__*/
47
+ messageDesc(file_kusinta_iot_planning_v1_planning, 4);
48
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
6
  import type { Message } from "@bufbuild/protobuf";
7
- import type { ForecastCell, ForecastIssue, PriceInterval } from "./planning_pb.js";
7
+ import type { ExchangeRate, ForecastCell, ForecastIssue, PriceInterval } from "./planning_pb.js";
8
8
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
9
 
10
10
  /**
@@ -81,6 +81,18 @@ export declare type GetPlanningInputsResponse = Message<"kusinta.iot.planning.v1
81
81
  * @generated from field: google.protobuf.Timestamp latest_forecast_issued_at = 3;
82
82
  */
83
83
  latestForecastIssuedAt?: Timestamp | undefined;
84
+
85
+ /**
86
+ * The reference rates to the currency households in the zone pay in (SEK for SE1–SE4):
87
+ * every rate published from the day of prices_from on (its default where unset, in the
88
+ * zone's own time), and the last one published before that day, oldest first — whether or
89
+ * not any price is answered. A gateway that asks from the prices it already holds so learns
90
+ * each new rate as it is published, after the prices it converts have arrived. Empty where
91
+ * no rate is known for the zone's currency.
92
+ *
93
+ * @generated from field: repeated kusinta.iot.planning.v1.ExchangeRate exchange_rates = 4;
94
+ */
95
+ exchangeRates: ExchangeRate[];
84
96
  };
85
97
 
86
98
  /**
@@ -10,7 +10,7 @@ import { file_kusinta_iot_planning_v1_planning } from "./planning_pb.js";
10
10
  * Describes the file kusinta/iot/planning/v1/planning_service.proto.
11
11
  */
12
12
  export const file_kusinta_iot_planning_v1_planning_service = /*@__PURE__*/
13
- fileDesc("Ci5rdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZ19zZXJ2aWNlLnByb3RvEhdrdXNpbnRhLmlvdC5wbGFubmluZy52MSLaAQoYR2V0UGxhbm5pbmdJbnB1dHNSZXF1ZXN0EhQKDGJpZGRpbmdfem9uZRgBIAEoCRI8Cg1mb3JlY2FzdF9jZWxsGAIgASgLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRm9yZWNhc3RDZWxsEi8KC3ByaWNlc19mcm9tGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVmb3JlY2FzdF9pc3N1ZWRfYWZ0ZXIYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIswBChlHZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlEjYKBnByaWNlcxgBIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSOAoIZm9yZWNhc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5Gb3JlY2FzdElzc3VlEj0KGWxhdGVzdF9mb3JlY2FzdF9pc3N1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wMpMBChVQbGFubmluZ0lucHV0c1NlcnZpY2USegoRR2V0UGxhbm5pbmdJbnB1dHMSMS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1JlcXVlc3QaMi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_planning_v1_planning]);
13
+ fileDesc("Ci5rdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZ19zZXJ2aWNlLnByb3RvEhdrdXNpbnRhLmlvdC5wbGFubmluZy52MSLaAQoYR2V0UGxhbm5pbmdJbnB1dHNSZXF1ZXN0EhQKDGJpZGRpbmdfem9uZRgBIAEoCRI8Cg1mb3JlY2FzdF9jZWxsGAIgASgLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRm9yZWNhc3RDZWxsEi8KC3ByaWNlc19mcm9tGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVmb3JlY2FzdF9pc3N1ZWRfYWZ0ZXIYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIosCChlHZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlEjYKBnByaWNlcxgBIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSOAoIZm9yZWNhc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5Gb3JlY2FzdElzc3VlEj0KGWxhdGVzdF9mb3JlY2FzdF9pc3N1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj0KDmV4Y2hhbmdlX3JhdGVzGAQgAygLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRXhjaGFuZ2VSYXRlMpMBChVQbGFubmluZ0lucHV0c1NlcnZpY2USegoRR2V0UGxhbm5pbmdJbnB1dHMSMS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1JlcXVlc3QaMi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_planning_v1_planning]);
14
14
 
15
15
  /**
16
16
  * Describes the message kusinta.iot.planning.v1.GetPlanningInputsRequest.
@@ -7,7 +7,7 @@ import type { Message } from "@bufbuild/protobuf";
7
7
  import type { ConnectorId, DeviceId, SpaceId } from "../../identity/v1/identity_pb.js";
8
8
  import type { AttributeRef } from "../../access/v1/acl_pb.js";
9
9
  import type { Space } from "../../space/v1/space_pb.js";
10
- import type { BuildingPlanning, DayAheadPrices, ManagementAck, ManagementRequest, PrivacyDisclosure, SpaceTree } from "./management_pb.js";
10
+ import type { BuildingPlanning, DayAheadPrices, ManagementAck, ManagementRequest, PrivacyDisclosure, SpaceAddress, SpaceTree } from "./management_pb.js";
11
11
  import type { DeviceLink, DeviceLinkList } from "../../link/v1/link_pb.js";
12
12
  import type { ApartmentClimateSummary, ClimateMode, PlantHistory, RoomClimate, RoomClimateList, RoomHistory } from "../../climate/v1/climate_pb.js";
13
13
  import type { IssuedInvite, SpaceInvites } from "./invite_pb.js";
@@ -533,6 +533,14 @@ export declare type ManagementResult = Message<"kusinta.iot.webrtc.v1.Management
533
533
  */
534
534
  value: DayAheadPrices;
535
535
  case: "dayAheadPrices";
536
+ } | {
537
+ /**
538
+ * get_space_address, put_space_address
539
+ *
540
+ * @generated from field: kusinta.iot.webrtc.v1.SpaceAddress space_address = 30;
541
+ */
542
+ value: SpaceAddress;
543
+ case: "spaceAddress";
536
544
  } | { case: undefined; value?: undefined };
537
545
  };
538
546
 
@@ -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("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciXwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJEjoKBGNvZGUYAiABKA4yLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSGFuZHNoYWtlUmVqZWN0UmVhc29uIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpcPChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIABJKChJhY2NvdW50X2xpbmtfbm9uY2UYESABKAsyLC5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua05vbmNlSAASQQoNYWNjb3VudF9saW5rcxgSIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rc0gAElMKFWNvbW1pc3Npb25pbmdfcHJvZmlsZRgTIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABJRChRjb21taXNzaW9uaW5nX3JlY29yZBgUIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1JlY29yZEgAEj8KC2hvbWVfc2V0dXBzGBUgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXBzSAASTwoTY29tbWlzc2lvbmluZ19ncmFudBgWIAEoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYFyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYGCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJIChNob3VzZWhvbGRfaGFuZG92ZXJzGBkgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyc0gAEkIKEGhvdXNlaG9sZF9leHBvcnQYGiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkRXhwb3J0SAASPQoNcGxhbnRfaGlzdG9yeRgbIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUGxhbnRIaXN0b3J5SAASRAoRYnVpbGRpbmdfcGxhbm5pbmcYHCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQnVpbGRpbmdQbGFubmluZ0gAEkEKEGRheV9haGVhZF9wcmljZXMYHSABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGF5QWhlYWRQcmljZXNIAEIICgZyZXN1bHQi+wEKDFN0YXJ0UGFpcmluZxI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZBI0CgZ3aW5kb3cYAiABKAsyJC5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ1dpbmRvdxI6ChBpbml0aWFsX3NwYWNlX2lkGAMgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI9Cglvd25lcnNoaXAYBCABKA4yKi5rdXNpbnRhLmlvdC5jb21tb24udjEuRGV2aWNlT3duZXJzaGlwVHlwZSKPAQoOUGFpcmluZ1N0YXJ0ZWQSEwoLaW5fcmVwbHlfdG8YASABKAkSLgoKZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsIpcBCg9QYWlyaW5nRmluaXNoZWQSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKZGV2aWNlX2lkcxgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjgKBWVycm9yGAMgASgLMikua3VzaW50YS5pb3QuY29tbW9uLnYxLlBhaXJpbmdFcnJvckRldGFpbCJNCgtMaW5rQ2hhbmdlZBItCgRsaW5rGAEgASgLMh8ua3VzaW50YS5pb3QubGluay52MS5EZXZpY2VMaW5rEg8KB3JlbW92ZWQYAiABKAgiiAMKE0Nvbm5lY3RvckRlc2NyaXB0b3ISOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSFAoMZGlzcGxheV9uYW1lGAIgASgJEiEKGXN1cHBvcnRlZF9kZXZpY2VfdHlwZV9pZHMYAyADKA0SGAoQc3VwcG9ydHNfcGFpcmluZxgEIAEoCBIdChVzdXBwb3J0c19wcm92aXNpb25pbmcYBSABKAgSFQoNYnJva2Vyc19saW5rcxgGIAEoCBIyCgRraW5kGAcgASgOMiQua3VzaW50YS5pb3QuY29tbW9uLnYxLkNvbm5lY3RvcktpbmQSEwoLZGVzY3JpcHRpb24YCCABKAkSPAoOYmFja2VuZF9oZWFsdGgYCSABKAsyJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQmFja2VuZEhlYWx0aBIlCh1zdXBwb3J0c19iYWNrZW5kX3JlaW5pdGlhbGl6ZRgKIAEoCCJVChNDb25uZWN0b3JzQW5ub3VuY2VkEj4KCmNvbm5lY3RvcnMYASADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29ubmVjdG9yRGVzY3JpcHRvciJHChJSb29tQ2xpbWF0ZUNoYW5nZWQSMQoEcm9vbRgBIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGUiVgoSQ2xpbWF0ZU1vZGVDaGFuZ2VkEjEKBG1vZGUYASABKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVNb2RlEg0KBWVuZGVkGAIgASgIIskOCg5HYXRld2F5TWVzc2FnZRISCgptZXNzYWdlX2lkGAEgASgJEisKB3NlbnRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkQKDnN0YXRlX3NuYXBzaG90GAMgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZVN0YXRlU25hcHNob3RIABJACg9wcm9wZXJ0eV9yZXBvcnQYBCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvcGVydHlSZXBvcnRIABJIChFwZXJtaXNzaW9uX3VwZGF0ZRgFIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXZlUGVybWlzc2lvblVwZGF0ZUgAEj4KDmNvbW1hbmRfcmVzdWx0GAYgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbW1hbmRSZXN1bHRIABIrCgRwb25nGAggASgLMhsua3VzaW50YS5pb3Qud2VicnRjLnYxLlBvbmdIABJGChJoYW5kc2hha2VfcmVqZWN0ZWQYCSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSGFuZHNoYWtlUmVqZWN0ZWRIABI0CgVlcnJvchgKIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JIABJCChBzdWJzY3JpcHRpb25fYWNrGAsgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlN1YnNjcmlwdGlvbkFja0gAEjoKDGRldmljZV9hZGRlZBgMIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VBZGRlZEgAEj4KDmRldmljZV9yZW1vdmVkGA0gASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZVJlbW92ZWRIABJEChFtYW5hZ2VtZW50X3Jlc3VsdBgOIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50UmVzdWx0SAASQAoNZGV2aWNlX2V2ZW50cxgQIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VFdmVudEJhdGNoSAASQAoPcGFpcmluZ19zdGFydGVkGBEgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdTdGFydGVkSAASQgoQcGFpcmluZ19maW5pc2hlZBgSIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QYWlyaW5nRmluaXNoZWRIABI6CgxsaW5rX2NoYW5nZWQYEyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlua0NoYW5nZWRIABJKChRjb25uZWN0b3JzX2Fubm91bmNlZBgUIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25uZWN0b3JzQW5ub3VuY2VkSAASSQoUcm9vbV9jbGltYXRlX2NoYW5nZWQYFSABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUm9vbUNsaW1hdGVDaGFuZ2VkSAASSQoUY2xpbWF0ZV9tb2RlX2NoYW5nZWQYFiABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xpbWF0ZU1vZGVDaGFuZ2VkSAASTQoWc2VydmljZV9zdGF0dXNfY2hhbmdlZBgXIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXJ2aWNlU3RhdHVzQ2hhbmdlZEgAEjwKDXNwYWNlX2ludml0ZXMYGCABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3BhY2VJbnZpdGVzSAASRgoScHJvbW90aW9uX3JlcXVlc3RzGBkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb21vdGlvblJlcXVlc3RzSAASTQoSY29tbWlzc2lvbmluZ190ZXN0GBogASgLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nVGVzdEgAElEKFGNvbW1pc3Npb25pbmdfZ3JhbnRzGBsgASgLMjEua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nR3JhbnRzSAASRgoSaG91c2Vob2xkX2hhbmRvdmVyGBwgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVySAASTwoXY2xpbWF0ZV9oaXN0b3J5X2NsZWFyZWQYHSABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xpbWF0ZUhpc3RvcnlDbGVhcmVkSABCCQoHcGF5bG9hZEoECA8QEEoECAcQCFIWYXR0cmlidXRlX3dyaXRlX3Jlc3VsdFIOcHJvcGVydHlfZXZlbnQigwUKCkFwcE1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoCRIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4CgloYW5kc2hha2UYAyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXBwSGFuZHNoYWtlSAASNwoHY29tbWFuZBgEIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZXZpY2VDb21tYW5kSAASQgoMcmVhZF9yZXF1ZXN0GAUgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3BlcnR5UmVhZFJlcXVlc3RIABIrCgRwaW5nGAYgASgLMhsua3VzaW50YS5pb3Qud2VicnRjLnYxLlBpbmdIABI8CglzdWJzY3JpYmUYByABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaWJlRGV2aWNlc0gAEkAKC3Vuc3Vic2NyaWJlGAggASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlVuc3Vic2NyaWJlRGV2aWNlc0gAEj4KCm1hbmFnZW1lbnQYCSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFuYWdlbWVudFJlcXVlc3RIABJHCg9hdHRyaWJ1dGVfd3JpdGUYCiABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXR0cmlidXRlV3JpdGVSZXF1ZXN0SAASPAoNc3RhcnRfcGFpcmluZxgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdGFydFBhaXJpbmdIAEIJCgdwYXlsb2FkKtEBChVIYW5kc2hha2VSZWplY3RSZWFzb24SJwojSEFORFNIQUtFX1JFSkVDVF9SRUFTT05fVU5TUEVDSUZJRUQQABIsCihIQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9JTlZBTElEX0VOQ09ESU5HEAESLgoqSEFORFNIQUtFX1JFSkVDVF9SRUFTT05fSEFORFNIQUtFX1JFUVVJUkVEEAISMQotSEFORFNIQUtFX1JFSkVDVF9SRUFTT05fQVVUSEVOVElDQVRJT05fRkFJTEVEEAMqogIKEEdhdGV3YXlFcnJvckNvZGUSIgoeR0FURVdBWV9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASIwofR0FURVdBWV9FUlJPUl9DT0RFX05PVF9FTlRJVExFRBABEiYKIkdBVEVXQVlfRVJST1JfQ09ERV9JTlZBTElEX1JFUVVFU1QQAhIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5BVkFJTEFCTEUQAxIfChtHQVRFV0FZX0VSUk9SX0NPREVfSU5URVJOQUwQBBIsCihHQVRFV0FZX0VSUk9SX0NPREVfU0VTU0lPTl9MSU1JVF9SRUFDSEVEEAUSKgomR0FURVdBWV9FUlJPUl9DT0RFX0ZBSUxFRF9QUkVDT05ESVRJT04QBkICSAFiBnByb3RvMw", [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("CiRrdXNpbnRhL2lvdC93ZWJydGMvdjEvZW52ZWxvcGUucHJvdG8SFWt1c2ludGEuaW90LndlYnJ0Yy52MSIGCgRQaW5nIgYKBFBvbmciXwoRSGFuZHNoYWtlUmVqZWN0ZWQSDgoGcmVhc29uGAEgASgJEjoKBGNvZGUYAiABKA4yLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSGFuZHNoYWtlUmVqZWN0UmVhc29uIlwKDEFwcEhhbmRzaGFrZRILCgNqd3QYASABKAkSPwoUc3Vic2NyaWJlX2RldmljZV9pZHMYAiADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJJChBTdWJzY3JpYmVEZXZpY2VzEjUKCmRldmljZV9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJLChJVbnN1YnNjcmliZURldmljZXMSNQoKZGV2aWNlX2lkcxgBIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkIpMBChNSZWZ1c2VkU3Vic2NyaXB0aW9uEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjUKBGNvZGUYAiABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yQ29kZRIPCgdtZXNzYWdlGAMgASgJIpoBCg9TdWJzY3JpcHRpb25BY2sSEwoLaW5fcmVwbHlfdG8YASABKAkSNQoKc3Vic2NyaWJlZBgCIAMoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjsKB3JlZnVzZWQYAyADKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVmdXNlZFN1YnNjcmlwdGlvbiLRAQoTUHJvcGVydHlSZWFkUmVxdWVzdBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCgZ0YXJnZXQYByABKAsyIy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuQXR0cmlidXRlUmVmSgQIAhAHUg5hdHRyaWJ1dGVfbmFtZVIOY2x1c3Rlcl9pZF9oZXhSCmNsdXN0ZXJfaWRSC2VuZHBvaW50X2lkUhB2ZW5kb3JfZXh0ZW5zaW9uIswBCgxHYXRld2F5RXJyb3ISNQoEY29kZRgBIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5RXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkSQwoIbWV0YWRhdGEYAyADKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2F0ZXdheUVycm9yLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBItUPChBNYW5hZ2VtZW50UmVzdWx0EhMKC2luX3JlcGx5X3RvGAEgASgJEjQKBWVycm9yGAIgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEiwKBXNwYWNlGAMgASgLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2VIABI2CgpzcGFjZV90cmVlGAQgASgLMiAua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlVHJlZUgAEjMKA2FjaxgFIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50QWNrSAASNAoFbGlua3MYBiABKAsyIy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmtMaXN0SAASQAoNcm9vbV9jbGltYXRlcxgHIAEoCzInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGVMaXN0SAASOwoMcm9vbV9oaXN0b3J5GAggASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tSGlzdG9yeUgAEkYKEnByaXZhY3lfZGlzY2xvc3VyZRgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcml2YWN5RGlzY2xvc3VyZUgAElQKGWFwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYCiABKAsyLy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5SAASPAoNaXNzdWVkX2ludml0ZRgLIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Jc3N1ZWRJbnZpdGVIABI8Cg1zcGFjZV9pbnZpdGVzGAwgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlSW52aXRlc0gAEkAKD2dhdGV3YXlfbWVtYmVycxgNIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HYXRld2F5TWVtYmVyc0gAEkYKEnByb21vdGlvbl9yZXF1ZXN0cxgOIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9tb3Rpb25SZXF1ZXN0c0gAEj8KDmhlYXRpbmdfbGF5b3V0GA8gASgLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nTGF5b3V0SAASPwoOaGVhdGluZ19yZWNvcmQYECABKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdSZWNvcmRIABJKChJhY2NvdW50X2xpbmtfbm9uY2UYESABKAsyLC5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5BY2NvdW50TGlua05vbmNlSAASQQoNYWNjb3VudF9saW5rcxgSIAEoCzIoLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkFjY291bnRMaW5rc0gAElMKFWNvbW1pc3Npb25pbmdfcHJvZmlsZRgTIAEoCzIyLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1Byb2ZpbGVIABJRChRjb21taXNzaW9uaW5nX3JlY29yZBgUIAEoCzIxLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ1JlY29yZEgAEj8KC2hvbWVfc2V0dXBzGBUgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Ib21lU2V0dXBzSAASTwoTY29tbWlzc2lvbmluZ19ncmFudBgWIAEoCzIwLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuQ29tbWlzc2lvbmluZ0dyYW50SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYFyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYGCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJIChNob3VzZWhvbGRfaGFuZG92ZXJzGBkgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkhvdXNlaG9sZEhhbmRvdmVyc0gAEkIKEGhvdXNlaG9sZF9leHBvcnQYGiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkRXhwb3J0SAASPQoNcGxhbnRfaGlzdG9yeRgbIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUGxhbnRIaXN0b3J5SAASRAoRYnVpbGRpbmdfcGxhbm5pbmcYHCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQnVpbGRpbmdQbGFubmluZ0gAEkEKEGRheV9haGVhZF9wcmljZXMYHSABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGF5QWhlYWRQcmljZXNIABI8Cg1zcGFjZV9hZGRyZXNzGB4gASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlNwYWNlQWRkcmVzc0gAQggKBnJlc3VsdCL7AQoMU3RhcnRQYWlyaW5nEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEjQKBndpbmRvdxgCIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nV2luZG93EjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgEIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlIo8BCg5QYWlyaW5nU3RhcnRlZBITCgtpbl9yZXBseV90bxgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4CgVlcnJvchgDIAEoCzIpLmt1c2ludGEuaW90LmNvbW1vbi52MS5QYWlyaW5nRXJyb3JEZXRhaWwilwEKD1BhaXJpbmdGaW5pc2hlZBITCgtpbl9yZXBseV90bxgBIAEoCRI1CgpkZXZpY2VfaWRzGAIgAygLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSOAoFZXJyb3IYAyABKAsyKS5rdXNpbnRhLmlvdC5jb21tb24udjEuUGFpcmluZ0Vycm9yRGV0YWlsIk0KC0xpbmtDaGFuZ2VkEi0KBGxpbmsYASABKAsyHy5rdXNpbnRhLmlvdC5saW5rLnYxLkRldmljZUxpbmsSDwoHcmVtb3ZlZBgCIAEoCCKIAwoTQ29ubmVjdG9yRGVzY3JpcHRvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZBIUCgxkaXNwbGF5X25hbWUYAiABKAkSIQoZc3VwcG9ydGVkX2RldmljZV90eXBlX2lkcxgDIAMoDRIYChBzdXBwb3J0c19wYWlyaW5nGAQgASgIEh0KFXN1cHBvcnRzX3Byb3Zpc2lvbmluZxgFIAEoCBIVCg1icm9rZXJzX2xpbmtzGAYgASgIEjIKBGtpbmQYByABKA4yJC5rdXNpbnRhLmlvdC5jb21tb24udjEuQ29ubmVjdG9yS2luZBITCgtkZXNjcmlwdGlvbhgIIAEoCRI8Cg5iYWNrZW5kX2hlYWx0aBgJIAEoCzIkLmt1c2ludGEuaW90LmNvbW1vbi52MS5CYWNrZW5kSGVhbHRoEiUKHXN1cHBvcnRzX2JhY2tlbmRfcmVpbml0aWFsaXplGAogASgIIlUKE0Nvbm5lY3RvcnNBbm5vdW5jZWQSPgoKY29ubmVjdG9ycxgBIAMoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25uZWN0b3JEZXNjcmlwdG9yIkcKElJvb21DbGltYXRlQ2hhbmdlZBIxCgRyb29tGAEgASgLMiMua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZSJWChJDbGltYXRlTW9kZUNoYW5nZWQSMQoEbW9kZRgBIAEoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGUSDQoFZW5kZWQYAiABKAgiyQ4KDkdhdGV3YXlNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRAoOc3RhdGVfc25hcHNob3QYAyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlU3RhdGVTbmFwc2hvdEgAEkAKD3Byb3BlcnR5X3JlcG9ydBgEIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Qcm9wZXJ0eVJlcG9ydEgAEkgKEXBlcm1pc3Npb25fdXBkYXRlGAUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpdmVQZXJtaXNzaW9uVXBkYXRlSAASPgoOY29tbWFuZF9yZXN1bHQYBiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZFJlc3VsdEgAEisKBHBvbmcYCCABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9uZ0gAEkYKEmhhbmRzaGFrZV9yZWplY3RlZBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5IYW5kc2hha2VSZWplY3RlZEgAEjQKBWVycm9yGAogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLkdhdGV3YXlFcnJvckgAEkIKEHN1YnNjcmlwdGlvbl9hY2sYCyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3Vic2NyaXB0aW9uQWNrSAASOgoMZGV2aWNlX2FkZGVkGAwgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUFkZGVkSAASPgoOZGV2aWNlX3JlbW92ZWQYDSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGV2aWNlUmVtb3ZlZEgAEkQKEW1hbmFnZW1lbnRfcmVzdWx0GA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLk1hbmFnZW1lbnRSZXN1bHRIABJACg1kZXZpY2VfZXZlbnRzGBAgASgLMicua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50QmF0Y2hIABJACg9wYWlyaW5nX3N0YXJ0ZWQYESABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGFpcmluZ1N0YXJ0ZWRIABJCChBwYWlyaW5nX2ZpbmlzaGVkGBIgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlBhaXJpbmdGaW5pc2hlZEgAEjoKDGxpbmtfY2hhbmdlZBgTIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaW5rQ2hhbmdlZEgAEkoKFGNvbm5lY3RvcnNfYW5ub3VuY2VkGBQgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbm5lY3RvcnNBbm5vdW5jZWRIABJJChRyb29tX2NsaW1hdGVfY2hhbmdlZBgVIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tQ2xpbWF0ZUNoYW5nZWRIABJJChRjbGltYXRlX21vZGVfY2hhbmdlZBgWIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGltYXRlTW9kZUNoYW5nZWRIABJNChZzZXJ2aWNlX3N0YXR1c19jaGFuZ2VkGBcgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlNlcnZpY2VTdGF0dXNDaGFuZ2VkSAASPAoNc3BhY2VfaW52aXRlcxgYIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TcGFjZUludml0ZXNIABJGChJwcm9tb3Rpb25fcmVxdWVzdHMYGSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvbW90aW9uUmVxdWVzdHNIABJNChJjb21taXNzaW9uaW5nX3Rlc3QYGiABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdUZXN0SAASUQoUY29tbWlzc2lvbmluZ19ncmFudHMYGyABKAsyMS5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudHNIABJGChJob3VzZWhvbGRfaGFuZG92ZXIYHCABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuSG91c2Vob2xkSGFuZG92ZXJIABJPChdjbGltYXRlX2hpc3RvcnlfY2xlYXJlZBgdIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGltYXRlSGlzdG9yeUNsZWFyZWRIAEIJCgdwYXlsb2FkSgQIDxAQSgQIBxAIUhZhdHRyaWJ1dGVfd3JpdGVfcmVzdWx0Ug5wcm9wZXJ0eV9ldmVudCKDBQoKQXBwTWVzc2FnZRISCgptZXNzYWdlX2lkGAEgASgJEisKB3NlbnRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKCWhhbmRzaGFrZRgDIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BcHBIYW5kc2hha2VIABI3Cgdjb21tYW5kGAQgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLkRldmljZUNvbW1hbmRIABJCCgxyZWFkX3JlcXVlc3QYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvcGVydHlSZWFkUmVxdWVzdEgAEisKBHBpbmcYBiABKAsyGy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUGluZ0gAEjwKCXN1YnNjcmliZRgHIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdWJzY3JpYmVEZXZpY2VzSAASQAoLdW5zdWJzY3JpYmUYCCABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuVW5zdWJzY3JpYmVEZXZpY2VzSAASPgoKbWFuYWdlbWVudBgJIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYW5hZ2VtZW50UmVxdWVzdEgAEkcKD2F0dHJpYnV0ZV93cml0ZRgKIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BdHRyaWJ1dGVXcml0ZVJlcXVlc3RIABI8Cg1zdGFydF9wYWlyaW5nGAsgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YXJ0UGFpcmluZ0gAQgkKB3BheWxvYWQq0QEKFUhhbmRzaGFrZVJlamVjdFJlYXNvbhInCiNIQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9VTlNQRUNJRklFRBAAEiwKKEhBTkRTSEFLRV9SRUpFQ1RfUkVBU09OX0lOVkFMSURfRU5DT0RJTkcQARIuCipIQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9IQU5EU0hBS0VfUkVRVUlSRUQQAhIxCi1IQU5EU0hBS0VfUkVKRUNUX1JFQVNPTl9BVVRIRU5USUNBVElPTl9GQUlMRUQQAyqiAgoQR2F0ZXdheUVycm9yQ29kZRIiCh5HQVRFV0FZX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIjCh9HQVRFV0FZX0VSUk9SX0NPREVfTk9UX0VOVElUTEVEEAESJgoiR0FURVdBWV9FUlJPUl9DT0RFX0lOVkFMSURfUkVRVUVTVBACEiIKHkdBVEVXQVlfRVJST1JfQ09ERV9VTkFWQUlMQUJMRRADEh8KG0dBVEVXQVlfRVJST1JfQ09ERV9JTlRFUk5BTBAEEiwKKEdBVEVXQVlfRVJST1JfQ09ERV9TRVNTSU9OX0xJTUlUX1JFQUNIRUQQBRIqCiZHQVRFV0FZX0VSUk9SX0NPREVfRkFJTEVEX1BSRUNPTkRJVElPThAGQgJIAWIGcHJvdG8z", [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.
@@ -12,7 +12,7 @@ import type { Space } from "../../space/v1/space_pb.js";
12
12
  import type { LinkFunction, LinkMode, LinkSettings } from "../../link/v1/link_pb.js";
13
13
  import type { ClimateModeKind, ClimateSummaryPeriod, InnerRoomLimits, RoomHistoryResolution } from "../../climate/v1/climate_pb.js";
14
14
  import type { Timestamp } from "@bufbuild/protobuf/wkt";
15
- import type { ForecastCell, PriceInterval } from "../../planning/v1/planning_pb.js";
15
+ import type { ExchangeRate, ForecastCell, PriceInterval } from "../../planning/v1/planning_pb.js";
16
16
  import type { CancelHouseholdHandover, ClearClimateHistory, ConfirmHouseholdHandover, DemoteHouseholdAdmin, ExportHouseholdData, ListHouseholdHandovers, SetHomeName, StaffAppointment, StartHouseholdHandover } from "./household_pb.js";
17
17
  import type { BindingRef, CommissioningFact, CommissioningGrantRecord, HouseTemplate, TestKind, TestState } from "../../commissioning/v1/commissioning_pb.js";
18
18
  import type { ServiceSignal } from "../../access/v1/acl_pb.js";
@@ -1317,8 +1317,9 @@ export declare type GetDayAheadPrices = Message<"kusinta.iot.webrtc.v1.GetDayAhe
1317
1317
  /**
1318
1318
  * [from_time, to_time). Intervals overlapping it are answered. Unset from_time: the start of
1319
1319
  * the current day in the bidding zone's own time. Unset to_time: from_time plus 31 days,
1320
- * and no further than the last interval held. A span longer than 31 days, or a from_time
1321
- * not before to_time, is refused as INVALID_REQUEST with metadata {"reason": "span"}.
1320
+ * and no further than the last interval held; where none is held after from_time, the
1321
+ * answer is empty. A to_time the caller sets more than 31 days after from_time, or not
1322
+ * after it, is refused as INVALID_REQUEST with metadata {"reason": "span"}.
1322
1323
  *
1323
1324
  * @generated from field: google.protobuf.Timestamp from_time = 2;
1324
1325
  */
@@ -1357,6 +1358,15 @@ export declare type DayAheadPrices = Message<"kusinta.iot.webrtc.v1.DayAheadPric
1357
1358
  * @generated from field: repeated kusinta.iot.planning.v1.PriceInterval prices = 2;
1358
1359
  */
1359
1360
  prices: PriceInterval[];
1361
+
1362
+ /**
1363
+ * The reference rates a client converts the prices at, as planning.v1.ExchangeRate says:
1364
+ * every rate the gateway holds from the day of the first price on, and the last one before
1365
+ * it, oldest first. Empty where it holds none; a client then shows the prices in euros.
1366
+ *
1367
+ * @generated from field: repeated kusinta.iot.planning.v1.ExchangeRate exchange_rates = 3;
1368
+ */
1369
+ exchangeRates: ExchangeRate[];
1360
1370
  };
1361
1371
 
1362
1372
  /**
@@ -1365,6 +1375,118 @@ export declare type DayAheadPrices = Message<"kusinta.iot.webrtc.v1.DayAheadPric
1365
1375
  */
1366
1376
  export declare const DayAheadPricesSchema: GenMessage<DayAheadPrices>;
1367
1377
 
1378
+ /**
1379
+ * Reads a space's address. Answered as SpaceAddress.
1380
+ *
1381
+ * @generated from message kusinta.iot.webrtc.v1.GetSpaceAddress
1382
+ */
1383
+ export declare type GetSpaceAddress = Message<"kusinta.iot.webrtc.v1.GetSpaceAddress"> & {
1384
+ /**
1385
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1386
+ */
1387
+ spaceId?: SpaceId | undefined;
1388
+ };
1389
+
1390
+ /**
1391
+ * Describes the message kusinta.iot.webrtc.v1.GetSpaceAddress.
1392
+ * Use `create(GetSpaceAddressSchema)` to create a new message.
1393
+ */
1394
+ export declare const GetSpaceAddressSchema: GenMessage<GetSpaceAddress>;
1395
+
1396
+ /**
1397
+ * Replaces a space's address whole. Answered as SpaceAddress, as it now stands.
1398
+ *
1399
+ * @generated from message kusinta.iot.webrtc.v1.PutSpaceAddress
1400
+ */
1401
+ export declare type PutSpaceAddress = Message<"kusinta.iot.webrtc.v1.PutSpaceAddress"> & {
1402
+ /**
1403
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1404
+ */
1405
+ spaceId?: SpaceId | undefined;
1406
+
1407
+ /**
1408
+ * Unset: the address is removed, and nothing of it is kept.
1409
+ *
1410
+ * @generated from field: kusinta.iot.webrtc.v1.PostalAddress address = 2;
1411
+ */
1412
+ address?: PostalAddress | undefined;
1413
+ };
1414
+
1415
+ /**
1416
+ * Describes the message kusinta.iot.webrtc.v1.PutSpaceAddress.
1417
+ * Use `create(PutSpaceAddressSchema)` to create a new message.
1418
+ */
1419
+ export declare const PutSpaceAddressSchema: GenMessage<PutSpaceAddress>;
1420
+
1421
+ /**
1422
+ * A postal address, as a person writes it. Free text in each field; a field's bound counts
1423
+ * Unicode code points, not bytes or UTF-16 code units. A set address without a street, a
1424
+ * field longer than its bound, or a country that is not two capital letters is refused as
1425
+ * INVALID_REQUEST with metadata {"reason": "address"}.
1426
+ *
1427
+ * @generated from message kusinta.iot.webrtc.v1.PostalAddress
1428
+ */
1429
+ export declare type PostalAddress = Message<"kusinta.iot.webrtc.v1.PostalAddress"> & {
1430
+ /**
1431
+ * The street and number, with any entrance or flat: "Exempelgatan 1". Up to 200 characters.
1432
+ *
1433
+ * @generated from field: string street = 1;
1434
+ */
1435
+ street: string;
1436
+
1437
+ /**
1438
+ * As written locally: "123 45". Up to 16 characters. Empty: none.
1439
+ *
1440
+ * @generated from field: string postal_code = 2;
1441
+ */
1442
+ postalCode: string;
1443
+
1444
+ /**
1445
+ * Up to 100 characters. Empty: none.
1446
+ *
1447
+ * @generated from field: string town = 3;
1448
+ */
1449
+ town: string;
1450
+
1451
+ /**
1452
+ * ISO 3166-1 alpha-2: "SE". Empty: none.
1453
+ *
1454
+ * @generated from field: string country = 4;
1455
+ */
1456
+ country: string;
1457
+ };
1458
+
1459
+ /**
1460
+ * Describes the message kusinta.iot.webrtc.v1.PostalAddress.
1461
+ * Use `create(PostalAddressSchema)` to create a new message.
1462
+ */
1463
+ export declare const PostalAddressSchema: GenMessage<PostalAddress>;
1464
+
1465
+ /**
1466
+ * A space's address.
1467
+ *
1468
+ * @generated from message kusinta.iot.webrtc.v1.SpaceAddress
1469
+ */
1470
+ export declare type SpaceAddress = Message<"kusinta.iot.webrtc.v1.SpaceAddress"> & {
1471
+ /**
1472
+ * @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
1473
+ */
1474
+ spaceId?: SpaceId | undefined;
1475
+
1476
+ /**
1477
+ * Unset: the space has none.
1478
+ *
1479
+ * @generated from field: kusinta.iot.webrtc.v1.PostalAddress address = 2;
1480
+ */
1481
+ address?: PostalAddress | undefined;
1482
+ };
1483
+
1484
+ /**
1485
+ * Describes the message kusinta.iot.webrtc.v1.SpaceAddress.
1486
+ * Use `create(SpaceAddressSchema)` to create a new message.
1487
+ */
1488
+ export declare const SpaceAddressSchema: GenMessage<SpaceAddress>;
1489
+
1368
1490
  /**
1369
1491
  * What the parties who do not live in a private space learn of it — the answer to a
1370
1492
  * resident asking who can see what in their home, in reply to GetPrivacyDisclosure.
@@ -2820,6 +2942,20 @@ export declare type ManagementRequest = Message<"kusinta.iot.webrtc.v1.Managemen
2820
2942
  */
2821
2943
  value: GetDayAheadPrices;
2822
2944
  case: "getDayAheadPrices";
2945
+ } | {
2946
+ /**
2947
+ * A building's or a home's street address; see SPACE ADDRESS.
2948
+ *
2949
+ * @generated from field: kusinta.iot.webrtc.v1.GetSpaceAddress get_space_address = 75;
2950
+ */
2951
+ value: GetSpaceAddress;
2952
+ case: "getSpaceAddress";
2953
+ } | {
2954
+ /**
2955
+ * @generated from field: kusinta.iot.webrtc.v1.PutSpaceAddress put_space_address = 76;
2956
+ */
2957
+ value: PutSpaceAddress;
2958
+ case: "putSpaceAddress";
2823
2959
  } | { case: undefined; value?: undefined };
2824
2960
  };
2825
2961
 
@@ -24,7 +24,7 @@ import { file_kusinta_iot_webrtc_v1_members } from "./members_pb.js";
24
24
  * Describes the file kusinta/iot/webrtc/v1/management.proto.
25
25
  */
26
26
  export const file_kusinta_iot_webrtc_v1_management = /*@__PURE__*/
27
- fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMiPAoOUm9vbUxpbWl0VmFsdWUSGQoMY2VudGlkZWdyZWVzGAEgASgRSACIAQFCDwoNX2NlbnRpZGVncmVlcyKFAwoUQ29uZmlndXJlUm9vbUNsaW1hdGUSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMQoGbGltaXRzGAIgASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdHMSMwoHc2Vuc29ycxgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tU2Vuc29ycxIhChRsb2NrX2RldmljZV9jb250cm9scxgEIAEoCEgAiAEBEjcKCGF3YXlfbWluGAUgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEj0KDm1vdmVfaW5fdGFyZ2V0GAYgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEh4KFmFjY2VwdF9iZWxvd190aHJlc2hvbGQYByABKAhCFwoVX2xvY2tfZGV2aWNlX2NvbnRyb2xzIoABChJTZXRJbm5lclJvb21MaW1pdHMSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoGbGltaXRzGAIgASgLMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Jbm5lclJvb21MaW1pdHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIuIBCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKCnJlc29sdXRpb24YBCABKA4yLS5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21IaXN0b3J5UmVzb2x1dGlvbiLCAQoPR2V0UGxhbnRIaXN0b3J5EhAKCHBsYW50X2lkGAEgASgJEi0KCWZyb21fdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdG9fdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoKcmVzb2x1dGlvbhgEIAEoDjItLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlSZXNvbHV0aW9uIkkKE0dldEJ1aWxkaW5nUGxhbm5pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIrEBChNQdXRCdWlsZGluZ1BsYW5uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIUCgxiaWRkaW5nX3pvbmUYAiABKAkSPAoNZm9yZWNhc3RfY2VsbBgDIAEoCzIlLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0Q2VsbBISCgppbnB1dHNfb2ZmGAQgASgIIqkCChBCdWlsZGluZ1BsYW5uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIUCgxiaWRkaW5nX3pvbmUYAiABKAkSPAoNZm9yZWNhc3RfY2VsbBgDIAEoCzIlLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0Q2VsbBISCgppbnB1dHNfb2ZmGAQgASgIEjIKDnByaWNlc190aHJvdWdoGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJmb3JlY2FzdF9pc3N1ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXN0YWxlGAcgASgIIqMBChFHZXREYXlBaGVhZFByaWNlcxIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLQoJZnJvbV90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgd0b190aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJeCg5EYXlBaGVhZFByaWNlcxIUCgxiaWRkaW5nX3pvbmUYASABKAkSNgoGcHJpY2VzGAIgAygLMiYua3VzaW50YS5pb3QucGxhbm5pbmcudjEuUHJpY2VJbnRlcnZhbCKtAwoRUHJpdmFjeURpc2Nsb3N1cmUSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKD3NlcnZpY2VfcGFydGllcxgFIAMoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXJ2aWNlUGFydHkSTAoWY2xpbWF0ZV9zdW1tYXJ5X3BlcmlvZBgEIAEoDjIsLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVN1bW1hcnlQZXJpb2QSHwoXb3duZXJfb3JnYW5pc2F0aW9uX25hbWUYBiABKAkSFgoObmFtZXNfd2l0aGhlbGQYByABKAgSQwoSc3RhZmZfYXBwb2ludG1lbnRzGAggAygLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YWZmQXBwb2ludG1lbnQSVAoUY29tbWlzc2lvbmluZ19ncmFudHMYCSADKAsyNi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdHcmFudFJlY29yZEoECAIQBCJ/CgxTZXJ2aWNlUGFydHkSKQoEcm9sZRgBIAEoDjIbLmt1c2ludGEuaW90LmFjY2Vzcy52MS5Sb2xlEjUKB3NpZ25hbHMYAiADKA4yJC5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuU2VydmljZVNpZ25hbBINCgVuYW1lcxgDIAMoCSJKChRHZXRQcml2YWN5RGlzY2xvc3VyZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi7gEKGkdldEFwYXJ0bWVudENsaW1hdGVTdW1tYXJ5EjYKDGFwYXJ0bWVudF9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSPAoGcGVyaW9kGAIgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVBlcmlvZBItCglmcm9tX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKElJlY29ubmVjdENvbm5lY3RvchI6Cgxjb25uZWN0b3JfaWQYASABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZCJGCgtMaXN0SGVhdGluZxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJGCg9QdXRIZWF0aW5nUGxhbnQSMwoFcGxhbnQYASABKAsyJC5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkhlYXRpbmdQbGFudCJMChFQdXRIZWF0aW5nQ2lyY3VpdBI3CgdjaXJjdWl0GAEgASgLMiYua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nQ2lyY3VpdCI/CgxQdXRGbG9vclpvbmUSLwoEem9uZRgBIAEoCzIhLmt1c2ludGEuaW90LmhlYXRpbmcudjEuRmxvb3Jab25lIksKDlB1dENvbWZvcnRMb2FkEjkKDGNvbWZvcnRfbG9hZBgBIAEoCzIjLmt1c2ludGEuaW90LmhlYXRpbmcudjEuQ29tZm9ydExvYWQiMwoTUmVtb3ZlSGVhdGluZ1JlY29yZBIKCgJpZBgBIAEoCRIQCghyZXZpc2lvbhgCIAEoBCKYAQoRU2V0Q29tZm9ydFdpbmRvd3MSFwoPY29tZm9ydF9sb2FkX2lkGAEgASgJEjYKB3dpbmRvd3MYAiADKAsyJS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRXaW5kb3cSHQoQd2luZG93c19yZXZpc2lvbhgDIAEoBEgAiAEBQhMKEV93aW5kb3dzX3JldmlzaW9uIogBChdSZXF1ZXN0QWNjb3VudExpbmtOb25jZRIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI6CgdzZXJ2aWNlGAIgASgOMikua3VzaW50YS5pb3QuYWNjb3VudGxpbmsudjEuTGlua2VkU2VydmljZSJFChBMaXN0QWNjb3VudExpbmtzEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIn4KDVVubGlua0FjY291bnQSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOgoHc2VydmljZRgCIAEoDjIpLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkxpbmtlZFNlcnZpY2UiRwoRTGlzdENvbW1pc3Npb25pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIlUKFFB1dENvbW1pc3Npb25pbmdGYWN0Ej0KBGZhY3QYASABKAsyLy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkNvbW1pc3Npb25pbmdGYWN0IjwKF1JlbW92ZUNvbW1pc3Npb25pbmdGYWN0Eg8KB2ZhY3RfaWQYASABKAkSEAoIcmV2aXNpb24YAiABKAQiUQoQUHV0SG91c2VUZW1wbGF0ZRI9Cgh0ZW1wbGF0ZRgBIAEoCzIrLmt1c2ludGEuaW90LmNvbW1pc3Npb25pbmcudjEuSG91c2VUZW1wbGF0ZSJZCg9TZXRIb21lVGVtcGxhdGUSMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSEwoLdGVtcGxhdGVfaWQYAiABKAkinwEKFFJ1bkNvbW1pc3Npb25pbmdUZXN0EjQKBGtpbmQYASABKA4yJi5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RLaW5kEjkKB2JpbmRpbmcYBCABKAsyKC5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkJpbmRpbmdSZWZKBAgCEARSCXJlY29yZF9pZFIFZmllbGQiZgoZQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdBIPCgd0ZXN0X2lkGAEgASgJEjgKB3ZlcmRpY3QYAiABKA4yJy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLlRlc3RTdGF0ZSJJCg5MaXN0SG9tZVNldHVwcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJPChlSZXF1ZXN0Q29tbWlzc2lvbmluZ0dyYW50EjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCKYAQoYQW5zd2VyQ29tbWlzc2lvbmluZ0dyYW50EhAKCGdyYW50X2lkGAEgASgJEg4KBmFjY2VwdBgCIAEoCBItCglzdGFydHNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIikKFUVuZENvbW1pc3Npb25pbmdHcmFudBIQCghncmFudF9pZBgBIAEoCSJSChdMaXN0Q29tbWlzc2lvbmluZ0dyYW50cxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ9Cg1TZXRBc3NldE93bmVyEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjYKC2Fzc2V0X293bmVyGAIgASgLMiEua3VzaW50YS5pb3QuY29tbW9uLnYxLkFzc2V0T3duZXIiuSoKEU1hbmFnZW1lbnRSZXF1ZXN0EjoKDGNyZWF0ZV9zcGFjZRgBIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVTcGFjZUgAEjoKDHVwZGF0ZV9zcGFjZRgCIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VcGRhdGVTcGFjZUgAEjoKDGRlbGV0ZV9zcGFjZRgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZWxldGVTcGFjZUgAEkgKFGFzc2lnbl91c2VyX3RvX3NwYWNlGAQgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkFzc2lnblVzZXJUb1NwYWNlSAASTAoWcmVtb3ZlX3VzZXJfZnJvbV9zcGFjZRgFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVVc2VyRnJvbVNwYWNlSAASSgoVcGxhY2VfZGV2aWNlX2luX3NwYWNlGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlBsYWNlRGV2aWNlSW5TcGFjZUgAElAKGHJlbW92ZV9kZXZpY2VfZnJvbV9zcGFjZRgHIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VGcm9tU3BhY2VIABI6CgxjbGFpbV9kZXZpY2UYCCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xhaW1EZXZpY2VIABI+Cg5yZWxlYXNlX2RldmljZRgJIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZWxlYXNlRGV2aWNlSAASOAoLbGlzdF9zcGFjZXMYCiABKAsyIS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFNwYWNlc0gAEkUKEmNyZWF0ZV9kZXZpY2VfbGluaxgLIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVEZXZpY2VMaW5rSAASRQoScmVtb3ZlX2RldmljZV9saW5rGAwgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZURldmljZUxpbmtIABJDChFsaXN0X2RldmljZV9saW5rcxgNIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0RGV2aWNlTGlua3NIABJFChJ1cGRhdGVfZGV2aWNlX2xpbmsYDiABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlRGV2aWNlTGlua0gAEkIKEHByb3Zpc2lvbl9kZXZpY2UYDyABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHJvdmlzaW9uRGV2aWNlSAASPwoPc2V0X3Jvb21fdGFyZ2V0GBAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldFJvb21UYXJnZXRIABJNChZjb25maWd1cmVfcm9vbV9jbGltYXRlGBEgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmZpZ3VyZVJvb21DbGltYXRlSAASQQoQc2V0X2NsaW1hdGVfbW9kZRgSIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRDbGltYXRlTW9kZUgAEkUKEmxpc3Rfcm9vbV9jbGltYXRlcxgTIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0Um9vbUNsaW1hdGVzSAASQQoQZ2V0X3Jvb21faGlzdG9yeRgUIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRSb29tSGlzdG9yeUgAEk0KFmdldF9wcml2YWN5X2Rpc2Nsb3N1cmUYFSABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0UHJpdmFjeURpc2Nsb3N1cmVIABJaCh1nZXRfYXBhcnRtZW50X2NsaW1hdGVfc3VtbWFyeRgWIAEoCzIxLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRBcGFydG1lbnRDbGltYXRlU3VtbWFyeUgAEkgKE3JlY29ubmVjdF9jb25uZWN0b3IYFyABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVjb25uZWN0Q29ubmVjdG9ySAASPAoNY3JlYXRlX2ludml0ZRgYIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DcmVhdGVJbnZpdGVIABI8Cg1yZXNlbmRfaW52aXRlGBkgASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlc2VuZEludml0ZUgAEjwKDXJldm9rZV9pbnZpdGUYGiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmV2b2tlSW52aXRlSAASTAoWbWFya19pbnZpdGVfZW1haWxfc2VudBgbIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5NYXJrSW52aXRlRW1haWxTZW50SAASRQoSbGlzdF9zcGFjZV9pbnZpdGVzGBwgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZUludml0ZXNIABJJChRhcHByb3ZlX2pvaW5fcmVxdWVzdBgdIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BcHByb3ZlSm9pblJlcXVlc3RIABJDChFkZW55X2pvaW5fcmVxdWVzdBgeIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5EZW55Sm9pblJlcXVlc3RIABJJChRsaXN0X2dhdGV3YXlfbWVtYmVycxgfIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0R2F0ZXdheU1lbWJlcnNIABI/Cg9zZXRfbWVtYmVyX3JvbGUYICABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0TWVtYmVyUm9sZUgAEkcKE3JlbW92ZV9mcm9tX2dhdGV3YXkYISABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRnJvbUdhdGV3YXlIABJBChBzZXRfYWNjZXNzX3VudGlsGCIgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEFjY2Vzc1VudGlsSAASUQoWc2V0X293bmVyX29yZ2FuaXNhdGlvbhgjIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRPd25lck9yZ2FuaXNhdGlvbkICGAFIABJEChFyZXF1ZXN0X3Byb21vdGlvbhgkIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXF1ZXN0UHJvbW90aW9uSAASQgoQYW5zd2VyX3Byb21vdGlvbhglIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BbnN3ZXJQcm9tb3Rpb25IABJPChdsaXN0X3Byb21vdGlvbl9yZXF1ZXN0cxgmIAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0UHJvbW90aW9uUmVxdWVzdHNIABI6CgxsaXN0X2hlYXRpbmcYJyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhlYXRpbmdIABJDChFwdXRfaGVhdGluZ19wbGFudBgoIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIZWF0aW5nUGxhbnRIABJHChNwdXRfaGVhdGluZ19jaXJjdWl0GCkgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhlYXRpbmdDaXJjdWl0SAASPQoOcHV0X2Zsb29yX3pvbmUYKiABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Rmxvb3Jab25lSAASQQoQcHV0X2NvbWZvcnRfbG9hZBgrIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRDb21mb3J0TG9hZEgAEksKFXJlbW92ZV9oZWF0aW5nX3JlY29yZBgsIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVIZWF0aW5nUmVjb3JkSAASRwoTc2V0X2NvbWZvcnRfd2luZG93cxgtIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRDb21mb3J0V2luZG93c0gAElQKGnJlcXVlc3RfYWNjb3VudF9saW5rX25vbmNlGC4gASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RBY2NvdW50TGlua05vbmNlSAASRQoSbGlzdF9hY2NvdW50X2xpbmtzGC8gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RBY2NvdW50TGlua3NIABI+Cg51bmxpbmtfYWNjb3VudBgwIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5VbmxpbmtBY2NvdW50SAASRgoSbGlzdF9jb21taXNzaW9uaW5nGDEgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RDb21taXNzaW9uaW5nSAASTQoWcHV0X2NvbW1pc3Npb25pbmdfZmFjdBgyIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRDb21taXNzaW9uaW5nRmFjdEgAElMKGXJlbW92ZV9jb21taXNzaW9uaW5nX2ZhY3QYMyABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlQ29tbWlzc2lvbmluZ0ZhY3RIABJFChJwdXRfaG91c2VfdGVtcGxhdGUYNCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SG91c2VUZW1wbGF0ZUgAEkMKEXNldF9ob21lX3RlbXBsYXRlGDUgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEhvbWVUZW1wbGF0ZUgAEk0KFnJ1bl9jb21taXNzaW9uaW5nX3Rlc3QYNiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUnVuQ29tbWlzc2lvbmluZ1Rlc3RIABJXChtjb25jbHVkZV9jb21taXNzaW9uaW5nX3Rlc3QYNyABKAsyMC5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29uY2x1ZGVDb21taXNzaW9uaW5nVGVzdEgAEkEKEGxpc3RfaG9tZV9zZXR1cHMYOCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhvbWVTZXR1cHNIABJXChtyZXF1ZXN0X2NvbW1pc3Npb25pbmdfZ3JhbnQYOSABKAsyMC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdENvbW1pc3Npb25pbmdHcmFudEgAElUKGmFuc3dlcl9jb21taXNzaW9uaW5nX2dyYW50GDogASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLkFuc3dlckNvbW1pc3Npb25pbmdHcmFudEgAEk8KF2VuZF9jb21taXNzaW9uaW5nX2dyYW50GDsgASgLMiwua3VzaW50YS5pb3Qud2VicnRjLnYxLkVuZENvbW1pc3Npb25pbmdHcmFudEgAElMKGWxpc3RfY29tbWlzc2lvbmluZ19ncmFudHMYPCABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdENvbW1pc3Npb25pbmdHcmFudHNIABI/Cg9zZXRfYXNzZXRfb3duZXIYPSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0QXNzZXRPd25lckgAEk0KFmRlbW90ZV9ob3VzZWhvbGRfYWRtaW4YPiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVtb3RlSG91c2Vob2xkQWRtaW5IABJRChhzdGFydF9ob3VzZWhvbGRfaGFuZG92ZXIYPyABKAsyLS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU3RhcnRIb3VzZWhvbGRIYW5kb3ZlckgAElUKGmNvbmZpcm1faG91c2Vob2xkX2hhbmRvdmVyGEAgASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmZpcm1Ib3VzZWhvbGRIYW5kb3ZlckgAElMKGWNhbmNlbF9ob3VzZWhvbGRfaGFuZG92ZXIYQSABKAsyLi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2FuY2VsSG91c2Vob2xkSGFuZG92ZXJIABJRChhsaXN0X2hvdXNlaG9sZF9oYW5kb3ZlcnMYQiABKAsyLS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEhvdXNlaG9sZEhhbmRvdmVyc0gAEksKFWV4cG9ydF9ob3VzZWhvbGRfZGF0YRhDIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5FeHBvcnRIb3VzZWhvbGREYXRhSAASOwoNc2V0X2hvbWVfbmFtZRhEIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRIb21lTmFtZUgAEksKFWNsZWFyX2NsaW1hdGVfaGlzdG9yeRhFIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5DbGVhckNsaW1hdGVIaXN0b3J5SAASSgoVc2V0X2lubmVyX3Jvb21fbGltaXRzGEYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldElubmVyUm9vbUxpbWl0c0gAEkMKEWdldF9wbGFudF9oaXN0b3J5GEcgASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldFBsYW50SGlzdG9yeUgAEksKFWdldF9idWlsZGluZ19wbGFubmluZxhIIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRCdWlsZGluZ1BsYW5uaW5nSAASSwoVcHV0X2J1aWxkaW5nX3BsYW5uaW5nGEkgASgLMioua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEJ1aWxkaW5nUGxhbm5pbmdIABJIChRnZXRfZGF5X2FoZWFkX3ByaWNlcxhKIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXREYXlBaGVhZFByaWNlc0gAQgkKB3JlcXVlc3RCAkgBYgZwcm90bzM", [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_planning_v1_planning, 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
+ fileDesc("CiZrdXNpbnRhL2lvdC93ZWJydGMvdjEvbWFuYWdlbWVudC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxItYBCgtDcmVhdGVTcGFjZRI0CgpzcGFjZV90eXBlGAEgASgOMiAua3VzaW50YS5pb3QuY29tbW9uLnYxLlNwYWNlVHlwZRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg0KBWZsb29yGAQgASgFEjkKD3BhcmVudF9zcGFjZV9pZBgFIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSFgoJdGltZV96b25lGAYgASgJSACIAQFCDAoKX3RpbWVfem9uZSL1AgoLVXBkYXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjkKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlSAGIAQESEQoEbmFtZRgDIAEoCUgCiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAOIAQESEgoFZmxvb3IYBSABKAVIBIgBARI7Cg9wYXJlbnRfc3BhY2VfaWQYBiABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEAoGZGV0YWNoGAcgASgISAASFgoJdGltZV96b25lGAggASgJSAWIAQFCDwoNcGFyZW50X2NoYW5nZUINCgtfc3BhY2VfdHlwZUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCAoGX2Zsb29yQgwKCl90aW1lX3pvbmUiUgoLRGVsZXRlU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEg8KB2Nhc2NhZGUYAiABKAgivAEKEUFzc2lnblVzZXJUb1NwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEjsKCHJlbGF0aW9uGAQgASgOMikua3VzaW50YS5pb3QuYWNjZXNzLnYxLk1lbWJlcnNoaXBSZWxhdGlvbkoECAMQBCJ7ChNSZW1vdmVVc2VyRnJvbVNwYWNlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIwCgd1c2VyX2lkGAIgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkIn4KElBsYWNlRGV2aWNlSW5TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQigQEKFVJlbW92ZURldmljZUZyb21TcGFjZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIyCghzcGFjZV9pZBgCIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQi2AEKC0NsYWltRGV2aWNlEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEj0KCW93bmVyc2hpcBgCIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEjoKEGluaXRpYWxfc3BhY2VfaWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhgKEHBvc3Nlc3Npb25fcHJvb2YYBCABKAkiRQoNUmVsZWFzZURldmljZRI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCKjAQoPUHJvdmlzaW9uRGV2aWNlEjoKDGNvbm5lY3Rvcl9pZBgBIAEoCzIkLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkNvbm5lY3RvcklkEkUKB2xvcmF3YW4YAiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IubG9yYXdhbi52MS5Mb3Jhd2FuUHJvdmlzaW9uaW5nSABCDQoLY3JlZGVudGlhbHMiRQoKTGlzdFNwYWNlcxI3Cg1yb290X3NwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCI4CglTcGFjZVRyZWUSKwoGc3BhY2VzGAEgAygLMhsua3VzaW50YS5pb3Quc3BhY2UudjEuU3BhY2UiDwoNTWFuYWdlbWVudEFjayKRAgoQQ3JlYXRlRGV2aWNlTGluaxIxCgZzZW5kZXIYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIzCghyZWNlaXZlchgCIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEjMKCGZ1bmN0aW9uGAMgASgOMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rRnVuY3Rpb24SKwoEbW9kZRgEIAEoDjIdLmt1c2ludGEuaW90LmxpbmsudjEuTGlua01vZGUSMwoIc2V0dGluZ3MYBSABKAsyIS5rdXNpbnRhLmlvdC5saW5rLnYxLkxpbmtTZXR0aW5ncyIjChBSZW1vdmVEZXZpY2VMaW5rEg8KB2xpbmtfaWQYASABKAkiWAoQVXBkYXRlRGV2aWNlTGluaxIPCgdsaW5rX2lkGAEgASgJEjMKCHNldHRpbmdzGAIgASgLMiEua3VzaW50YS5pb3QubGluay52MS5MaW5rU2V0dGluZ3MiRwoPTGlzdERldmljZUxpbmtzEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkInwKDVNldFJvb21UYXJnZXQSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIkQKC1Jvb21TZW5zb3JzEjUKCnNlbnNvcl9pZHMYASADKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZCJ0CgpSb29tTGltaXRzEh0KEG1pbl9jZW50aWRlZ3JlZXMYASABKBFIAIgBARIdChBtYXhfY2VudGlkZWdyZWVzGAIgASgRSAGIAQFCEwoRX21pbl9jZW50aWRlZ3JlZXNCEwoRX21heF9jZW50aWRlZ3JlZXMiPAoOUm9vbUxpbWl0VmFsdWUSGQoMY2VudGlkZWdyZWVzGAEgASgRSACIAQFCDwoNX2NlbnRpZGVncmVlcyKFAwoUQ29uZmlndXJlUm9vbUNsaW1hdGUSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSMQoGbGltaXRzGAIgASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdHMSMwoHc2Vuc29ycxgDIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Sb29tU2Vuc29ycxIhChRsb2NrX2RldmljZV9jb250cm9scxgEIAEoCEgAiAEBEjcKCGF3YXlfbWluGAUgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEj0KDm1vdmVfaW5fdGFyZ2V0GAYgASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLlJvb21MaW1pdFZhbHVlEh4KFmFjY2VwdF9iZWxvd190aHJlc2hvbGQYByABKAhCFwoVX2xvY2tfZGV2aWNlX2NvbnRyb2xzIoABChJTZXRJbm5lclJvb21MaW1pdHMSMQoHcm9vbV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNwoGbGltaXRzGAIgASgLMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Jbm5lclJvb21MaW1pdHMikwIKDlNldENsaW1hdGVNb2RlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgRraW5kGAIgASgOMicua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlTW9kZUtpbmQSIQoUc2V0YmFja19jZW50aWRlZ3JlZXMYAyABKBFIAIgBARItCglzdGFydHNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlcyJLChBMaXN0Um9vbUNsaW1hdGVzEjcKDXJvb3Rfc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIuIBCg5HZXRSb29tSGlzdG9yeRIxCgdyb29tX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglmcm9tX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB3RvX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkEKCnJlc29sdXRpb24YBCABKA4yLS5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21IaXN0b3J5UmVzb2x1dGlvbiLCAQoPR2V0UGxhbnRIaXN0b3J5EhAKCHBsYW50X2lkGAEgASgJEi0KCWZyb21fdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHdG9fdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoKcmVzb2x1dGlvbhgEIAEoDjItLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlSZXNvbHV0aW9uIkkKE0dldEJ1aWxkaW5nUGxhbm5pbmcSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIrEBChNQdXRCdWlsZGluZ1BsYW5uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIUCgxiaWRkaW5nX3pvbmUYAiABKAkSPAoNZm9yZWNhc3RfY2VsbBgDIAEoCzIlLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0Q2VsbBISCgppbnB1dHNfb2ZmGAQgASgIIqkCChBCdWlsZGluZ1BsYW5uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIUCgxiaWRkaW5nX3pvbmUYAiABKAkSPAoNZm9yZWNhc3RfY2VsbBgDIAEoCzIlLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0Q2VsbBISCgppbnB1dHNfb2ZmGAQgASgIEjIKDnByaWNlc190aHJvdWdoGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChJmb3JlY2FzdF9pc3N1ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXN0YWxlGAcgASgIIqMBChFHZXREYXlBaGVhZFByaWNlcxIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSLQoJZnJvbV90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgd0b190aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKdAQoORGF5QWhlYWRQcmljZXMSFAoMYmlkZGluZ196b25lGAEgASgJEjYKBnByaWNlcxgCIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSPQoOZXhjaGFuZ2VfcmF0ZXMYAyADKAsyJS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5FeGNoYW5nZVJhdGUiRQoPR2V0U3BhY2VBZGRyZXNzEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ8Cg9QdXRTcGFjZUFkZHJlc3MSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjUKB2FkZHJlc3MYAiABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUG9zdGFsQWRkcmVzcyJTCg1Qb3N0YWxBZGRyZXNzEg4KBnN0cmVldBgBIAEoCRITCgtwb3N0YWxfY29kZRgCIAEoCRIMCgR0b3duGAMgASgJEg8KB2NvdW50cnkYBCABKAkieQoMU3BhY2VBZGRyZXNzEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI1CgdhZGRyZXNzGAIgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlBvc3RhbEFkZHJlc3MirQMKEVByaXZhY3lEaXNjbG9zdXJlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBI8Cg9zZXJ2aWNlX3BhcnRpZXMYBSADKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2VydmljZVBhcnR5EkwKFmNsaW1hdGVfc3VtbWFyeV9wZXJpb2QYBCABKA4yLC5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVTdW1tYXJ5UGVyaW9kEh8KF293bmVyX29yZ2FuaXNhdGlvbl9uYW1lGAYgASgJEhYKDm5hbWVzX3dpdGhoZWxkGAcgASgIEkMKEnN0YWZmX2FwcG9pbnRtZW50cxgIIAMoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TdGFmZkFwcG9pbnRtZW50ElQKFGNvbW1pc3Npb25pbmdfZ3JhbnRzGAkgAygLMjYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nR3JhbnRSZWNvcmRKBAgCEAQifwoMU2VydmljZVBhcnR5EikKBHJvbGUYASABKA4yGy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuUm9sZRI1CgdzaWduYWxzGAIgAygOMiQua3VzaW50YS5pb3QuYWNjZXNzLnYxLlNlcnZpY2VTaWduYWwSDQoFbmFtZXMYAyADKAkiSgoUR2V0UHJpdmFjeURpc2Nsb3N1cmUSMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkIu4BChpHZXRBcGFydG1lbnRDbGltYXRlU3VtbWFyeRI2CgxhcGFydG1lbnRfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBnBlcmlvZBgCIAEoDjIsLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVN1bW1hcnlQZXJpb2QSLQoJZnJvbV90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgd0b190aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJQChJSZWNvbm5lY3RDb25uZWN0b3ISOgoMY29ubmVjdG9yX2lkGAEgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQiRgoLTGlzdEhlYXRpbmcSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiRgoPUHV0SGVhdGluZ1BsYW50EjMKBXBsYW50GAEgASgLMiQua3VzaW50YS5pb3QuaGVhdGluZy52MS5IZWF0aW5nUGxhbnQiTAoRUHV0SGVhdGluZ0NpcmN1aXQSNwoHY2lyY3VpdBgBIAEoCzImLmt1c2ludGEuaW90LmhlYXRpbmcudjEuSGVhdGluZ0NpcmN1aXQiPwoMUHV0Rmxvb3Jab25lEi8KBHpvbmUYASABKAsyIS5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkZsb29yWm9uZSJLCg5QdXRDb21mb3J0TG9hZBI5Cgxjb21mb3J0X2xvYWQYASABKAsyIy5rdXNpbnRhLmlvdC5oZWF0aW5nLnYxLkNvbWZvcnRMb2FkIjMKE1JlbW92ZUhlYXRpbmdSZWNvcmQSCgoCaWQYASABKAkSEAoIcmV2aXNpb24YAiABKAQimAEKEVNldENvbWZvcnRXaW5kb3dzEhcKD2NvbWZvcnRfbG9hZF9pZBgBIAEoCRI2Cgd3aW5kb3dzGAIgAygLMiUua3VzaW50YS5pb3QuaGVhdGluZy52MS5Db21mb3J0V2luZG93Eh0KEHdpbmRvd3NfcmV2aXNpb24YAyABKARIAIgBAUITChFfd2luZG93c19yZXZpc2lvbiKIAQoXUmVxdWVzdEFjY291bnRMaW5rTm9uY2USMQoHaG9tZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOgoHc2VydmljZRgCIAEoDjIpLmt1c2ludGEuaW90LmFjY291bnRsaW5rLnYxLkxpbmtlZFNlcnZpY2UiRQoQTGlzdEFjY291bnRMaW5rcxIxCgdob21lX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJ+Cg1VbmxpbmtBY2NvdW50EjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjoKB3NlcnZpY2UYAiABKA4yKS5rdXNpbnRhLmlvdC5hY2NvdW50bGluay52MS5MaW5rZWRTZXJ2aWNlIkcKEUxpc3RDb21taXNzaW9uaW5nEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZCJVChRQdXRDb21taXNzaW9uaW5nRmFjdBI9CgRmYWN0GAEgASgLMi8ua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5Db21taXNzaW9uaW5nRmFjdCI8ChdSZW1vdmVDb21taXNzaW9uaW5nRmFjdBIPCgdmYWN0X2lkGAEgASgJEhAKCHJldmlzaW9uGAIgASgEIlEKEFB1dEhvdXNlVGVtcGxhdGUSPQoIdGVtcGxhdGUYASABKAsyKy5rdXNpbnRhLmlvdC5jb21taXNzaW9uaW5nLnYxLkhvdXNlVGVtcGxhdGUiWQoPU2V0SG9tZVRlbXBsYXRlEjEKB2hvbWVfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEhMKC3RlbXBsYXRlX2lkGAIgASgJIp8BChRSdW5Db21taXNzaW9uaW5nVGVzdBI0CgRraW5kGAEgASgOMiYua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0S2luZBI5CgdiaW5kaW5nGAQgASgLMigua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5CaW5kaW5nUmVmSgQIAhAEUglyZWNvcmRfaWRSBWZpZWxkImYKGUNvbmNsdWRlQ29tbWlzc2lvbmluZ1Rlc3QSDwoHdGVzdF9pZBgBIAEoCRI4Cgd2ZXJkaWN0GAIgASgOMicua3VzaW50YS5pb3QuY29tbWlzc2lvbmluZy52MS5UZXN0U3RhdGUiSQoOTGlzdEhvbWVTZXR1cHMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQiTwoZUmVxdWVzdENvbW1pc3Npb25pbmdHcmFudBIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQimAEKGEFuc3dlckNvbW1pc3Npb25pbmdHcmFudBIQCghncmFudF9pZBgBIAEoCRIOCgZhY2NlcHQYAiABKAgSLQoJc3RhcnRzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIpChVFbmRDb21taXNzaW9uaW5nR3JhbnQSEAoIZ3JhbnRfaWQYASABKAkiUgoXTGlzdENvbW1pc3Npb25pbmdHcmFudHMSNwoNcm9vdF9zcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQifQoNU2V0QXNzZXRPd25lchI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBI2Cgthc3NldF9vd25lchgCIAEoCzIhLmt1c2ludGEuaW90LmNvbW1vbi52MS5Bc3NldE93bmVyIsMrChFNYW5hZ2VtZW50UmVxdWVzdBI6CgxjcmVhdGVfc3BhY2UYASABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlU3BhY2VIABI6Cgx1cGRhdGVfc3BhY2UYAiABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuVXBkYXRlU3BhY2VIABI6CgxkZWxldGVfc3BhY2UYAyABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVsZXRlU3BhY2VIABJIChRhc3NpZ25fdXNlcl90b19zcGFjZRgEIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Bc3NpZ25Vc2VyVG9TcGFjZUgAEkwKFnJlbW92ZV91c2VyX2Zyb21fc3BhY2UYBSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlVXNlckZyb21TcGFjZUgAEkoKFXBsYWNlX2RldmljZV9pbl9zcGFjZRgGIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QbGFjZURldmljZUluU3BhY2VIABJQChhyZW1vdmVfZGV2aWNlX2Zyb21fc3BhY2UYByABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlRGV2aWNlRnJvbVNwYWNlSAASOgoMY2xhaW1fZGV2aWNlGAggASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkNsYWltRGV2aWNlSAASPgoOcmVsZWFzZV9kZXZpY2UYCSABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVsZWFzZURldmljZUgAEjgKC2xpc3Rfc3BhY2VzGAogASgLMiEua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RTcGFjZXNIABJFChJjcmVhdGVfZGV2aWNlX2xpbmsYCyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlRGV2aWNlTGlua0gAEkUKEnJlbW92ZV9kZXZpY2VfbGluaxgMIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZW1vdmVEZXZpY2VMaW5rSAASQwoRbGlzdF9kZXZpY2VfbGlua3MYDSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdERldmljZUxpbmtzSAASRQoSdXBkYXRlX2RldmljZV9saW5rGA4gASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlVwZGF0ZURldmljZUxpbmtIABJCChBwcm92aXNpb25fZGV2aWNlGA8gASgLMiYua3VzaW50YS5pb3Qud2VicnRjLnYxLlByb3Zpc2lvbkRldmljZUgAEj8KD3NldF9yb29tX3RhcmdldBgQIAEoCzIkLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRSb29tVGFyZ2V0SAASTQoWY29uZmlndXJlX3Jvb21fY2xpbWF0ZRgRIAEoCzIrLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25maWd1cmVSb29tQ2xpbWF0ZUgAEkEKEHNldF9jbGltYXRlX21vZGUYEiABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Q2xpbWF0ZU1vZGVIABJFChJsaXN0X3Jvb21fY2xpbWF0ZXMYEyABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFJvb21DbGltYXRlc0gAEkEKEGdldF9yb29tX2hpc3RvcnkYFCABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0Um9vbUhpc3RvcnlIABJNChZnZXRfcHJpdmFjeV9kaXNjbG9zdXJlGBUgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkdldFByaXZhY3lEaXNjbG9zdXJlSAASWgodZ2V0X2FwYXJ0bWVudF9jbGltYXRlX3N1bW1hcnkYFiABKAsyMS5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0QXBhcnRtZW50Q2xpbWF0ZVN1bW1hcnlIABJIChNyZWNvbm5lY3RfY29ubmVjdG9yGBcgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlY29ubmVjdENvbm5lY3RvckgAEjwKDWNyZWF0ZV9pbnZpdGUYGCABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ3JlYXRlSW52aXRlSAASPAoNcmVzZW5kX2ludml0ZRgZIAEoCzIjLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXNlbmRJbnZpdGVIABI8Cg1yZXZva2VfaW52aXRlGBogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlJldm9rZUludml0ZUgAEkwKFm1hcmtfaW52aXRlX2VtYWlsX3NlbnQYGyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuTWFya0ludml0ZUVtYWlsU2VudEgAEkUKEmxpc3Rfc3BhY2VfaW52aXRlcxgcIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0U3BhY2VJbnZpdGVzSAASSQoUYXBwcm92ZV9qb2luX3JlcXVlc3QYHSABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuQXBwcm92ZUpvaW5SZXF1ZXN0SAASQwoRZGVueV9qb2luX3JlcXVlc3QYHiABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRGVueUpvaW5SZXF1ZXN0SAASSQoUbGlzdF9nYXRld2F5X21lbWJlcnMYHyABKAsyKS5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdEdhdGV3YXlNZW1iZXJzSAASPwoPc2V0X21lbWJlcl9yb2xlGCAgASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldE1lbWJlclJvbGVIABJHChNyZW1vdmVfZnJvbV9nYXRld2F5GCEgASgLMigua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUZyb21HYXRld2F5SAASQQoQc2V0X2FjY2Vzc191bnRpbBgiIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRBY2Nlc3NVbnRpbEgAElEKFnNldF9vd25lcl9vcmdhbmlzYXRpb24YIyABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0T3duZXJPcmdhbmlzYXRpb25CAhgBSAASRAoRcmVxdWVzdF9wcm9tb3Rpb24YJCABKAsyJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVxdWVzdFByb21vdGlvbkgAEkIKEGFuc3dlcl9wcm9tb3Rpb24YJSABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQW5zd2VyUHJvbW90aW9uSAASTwoXbGlzdF9wcm9tb3Rpb25fcmVxdWVzdHMYJiABKAsyLC5rdXNpbnRhLmlvdC53ZWJydGMudjEuTGlzdFByb21vdGlvblJlcXVlc3RzSAASOgoMbGlzdF9oZWF0aW5nGCcgASgLMiIua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIZWF0aW5nSAASQwoRcHV0X2hlYXRpbmdfcGxhbnQYKCABKAsyJi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0SGVhdGluZ1BsYW50SAASRwoTcHV0X2hlYXRpbmdfY2lyY3VpdBgpIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRIZWF0aW5nQ2lyY3VpdEgAEj0KDnB1dF9mbG9vcl96b25lGCogASgLMiMua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEZsb29yWm9uZUgAEkEKEHB1dF9jb21mb3J0X2xvYWQYKyABKAsyJS5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Q29tZm9ydExvYWRIABJLChVyZW1vdmVfaGVhdGluZ19yZWNvcmQYLCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuUmVtb3ZlSGVhdGluZ1JlY29yZEgAEkcKE3NldF9jb21mb3J0X3dpbmRvd3MYLSABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0Q29tZm9ydFdpbmRvd3NIABJUChpyZXF1ZXN0X2FjY291bnRfbGlua19ub25jZRguIAEoCzIuLmt1c2ludGEuaW90LndlYnJ0Yy52MS5SZXF1ZXN0QWNjb3VudExpbmtOb25jZUgAEkUKEmxpc3RfYWNjb3VudF9saW5rcxgvIAEoCzInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0QWNjb3VudExpbmtzSAASPgoOdW5saW5rX2FjY291bnQYMCABKAsyJC5rdXNpbnRhLmlvdC53ZWJydGMudjEuVW5saW5rQWNjb3VudEgAEkYKEmxpc3RfY29tbWlzc2lvbmluZxgxIAEoCzIoLmt1c2ludGEuaW90LndlYnJ0Yy52MS5MaXN0Q29tbWlzc2lvbmluZ0gAEk0KFnB1dF9jb21taXNzaW9uaW5nX2ZhY3QYMiABKAsyKy5rdXNpbnRhLmlvdC53ZWJydGMudjEuUHV0Q29tbWlzc2lvbmluZ0ZhY3RIABJTChlyZW1vdmVfY29tbWlzc2lvbmluZ19mYWN0GDMgASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlbW92ZUNvbW1pc3Npb25pbmdGYWN0SAASRQoScHV0X2hvdXNlX3RlbXBsYXRlGDQgASgLMicua3VzaW50YS5pb3Qud2VicnRjLnYxLlB1dEhvdXNlVGVtcGxhdGVIABJDChFzZXRfaG9tZV90ZW1wbGF0ZRg1IAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRIb21lVGVtcGxhdGVIABJNChZydW5fY29tbWlzc2lvbmluZ190ZXN0GDYgASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLlJ1bkNvbW1pc3Npb25pbmdUZXN0SAASVwobY29uY2x1ZGVfY29tbWlzc2lvbmluZ190ZXN0GDcgASgLMjAua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbmNsdWRlQ29tbWlzc2lvbmluZ1Rlc3RIABJBChBsaXN0X2hvbWVfc2V0dXBzGDggASgLMiUua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIb21lU2V0dXBzSAASVwobcmVxdWVzdF9jb21taXNzaW9uaW5nX2dyYW50GDkgASgLMjAua3VzaW50YS5pb3Qud2VicnRjLnYxLlJlcXVlc3RDb21taXNzaW9uaW5nR3JhbnRIABJVChphbnN3ZXJfY29tbWlzc2lvbmluZ19ncmFudBg6IAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5BbnN3ZXJDb21taXNzaW9uaW5nR3JhbnRIABJPChdlbmRfY29tbWlzc2lvbmluZ19ncmFudBg7IAEoCzIsLmt1c2ludGEuaW90LndlYnJ0Yy52MS5FbmRDb21taXNzaW9uaW5nR3JhbnRIABJTChlsaXN0X2NvbW1pc3Npb25pbmdfZ3JhbnRzGDwgASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RDb21taXNzaW9uaW5nR3JhbnRzSAASPwoPc2V0X2Fzc2V0X293bmVyGD0gASgLMiQua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldEFzc2V0T3duZXJIABJNChZkZW1vdGVfaG91c2Vob2xkX2FkbWluGD4gASgLMisua3VzaW50YS5pb3Qud2VicnRjLnYxLkRlbW90ZUhvdXNlaG9sZEFkbWluSAASUQoYc3RhcnRfaG91c2Vob2xkX2hhbmRvdmVyGD8gASgLMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLlN0YXJ0SG91c2Vob2xkSGFuZG92ZXJIABJVChpjb25maXJtX2hvdXNlaG9sZF9oYW5kb3ZlchhAIAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db25maXJtSG91c2Vob2xkSGFuZG92ZXJIABJTChljYW5jZWxfaG91c2Vob2xkX2hhbmRvdmVyGEEgASgLMi4ua3VzaW50YS5pb3Qud2VicnRjLnYxLkNhbmNlbEhvdXNlaG9sZEhhbmRvdmVySAASUQoYbGlzdF9ob3VzZWhvbGRfaGFuZG92ZXJzGEIgASgLMi0ua3VzaW50YS5pb3Qud2VicnRjLnYxLkxpc3RIb3VzZWhvbGRIYW5kb3ZlcnNIABJLChVleHBvcnRfaG91c2Vob2xkX2RhdGEYQyABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuRXhwb3J0SG91c2Vob2xkRGF0YUgAEjsKDXNldF9ob21lX25hbWUYRCABKAsyIi5rdXNpbnRhLmlvdC53ZWJydGMudjEuU2V0SG9tZU5hbWVIABJLChVjbGVhcl9jbGltYXRlX2hpc3RvcnkYRSABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ2xlYXJDbGltYXRlSGlzdG9yeUgAEkoKFXNldF9pbm5lcl9yb29tX2xpbWl0cxhGIAEoCzIpLmt1c2ludGEuaW90LndlYnJ0Yy52MS5TZXRJbm5lclJvb21MaW1pdHNIABJDChFnZXRfcGxhbnRfaGlzdG9yeRhHIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRQbGFudEhpc3RvcnlIABJLChVnZXRfYnVpbGRpbmdfcGxhbm5pbmcYSCABKAsyKi5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0QnVpbGRpbmdQbGFubmluZ0gAEksKFXB1dF9idWlsZGluZ19wbGFubmluZxhJIAEoCzIqLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRCdWlsZGluZ1BsYW5uaW5nSAASSAoUZ2V0X2RheV9haGVhZF9wcmljZXMYSiABKAsyKC5rdXNpbnRhLmlvdC53ZWJydGMudjEuR2V0RGF5QWhlYWRQcmljZXNIABJDChFnZXRfc3BhY2VfYWRkcmVzcxhLIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5HZXRTcGFjZUFkZHJlc3NIABJDChFwdXRfc3BhY2VfYWRkcmVzcxhMIAEoCzImLmt1c2ludGEuaW90LndlYnJ0Yy52MS5QdXRTcGFjZUFkZHJlc3NIAEIJCgdyZXF1ZXN0QgJIAWIGcHJvdG8z", [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_planning_v1_planning, 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]);
28
28
 
29
29
  /**
30
30
  * Describes the message kusinta.iot.webrtc.v1.CreateSpace.
@@ -250,206 +250,234 @@ export const GetDayAheadPricesSchema = /*@__PURE__*/
250
250
  export const DayAheadPricesSchema = /*@__PURE__*/
251
251
  messageDesc(file_kusinta_iot_webrtc_v1_management, 31);
252
252
 
253
+ /**
254
+ * Describes the message kusinta.iot.webrtc.v1.GetSpaceAddress.
255
+ * Use `create(GetSpaceAddressSchema)` to create a new message.
256
+ */
257
+ export const GetSpaceAddressSchema = /*@__PURE__*/
258
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 32);
259
+
260
+ /**
261
+ * Describes the message kusinta.iot.webrtc.v1.PutSpaceAddress.
262
+ * Use `create(PutSpaceAddressSchema)` to create a new message.
263
+ */
264
+ export const PutSpaceAddressSchema = /*@__PURE__*/
265
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 33);
266
+
267
+ /**
268
+ * Describes the message kusinta.iot.webrtc.v1.PostalAddress.
269
+ * Use `create(PostalAddressSchema)` to create a new message.
270
+ */
271
+ export const PostalAddressSchema = /*@__PURE__*/
272
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 34);
273
+
274
+ /**
275
+ * Describes the message kusinta.iot.webrtc.v1.SpaceAddress.
276
+ * Use `create(SpaceAddressSchema)` to create a new message.
277
+ */
278
+ export const SpaceAddressSchema = /*@__PURE__*/
279
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 35);
280
+
253
281
  /**
254
282
  * Describes the message kusinta.iot.webrtc.v1.PrivacyDisclosure.
255
283
  * Use `create(PrivacyDisclosureSchema)` to create a new message.
256
284
  */
257
285
  export const PrivacyDisclosureSchema = /*@__PURE__*/
258
- messageDesc(file_kusinta_iot_webrtc_v1_management, 32);
286
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 36);
259
287
 
260
288
  /**
261
289
  * Describes the message kusinta.iot.webrtc.v1.ServiceParty.
262
290
  * Use `create(ServicePartySchema)` to create a new message.
263
291
  */
264
292
  export const ServicePartySchema = /*@__PURE__*/
265
- messageDesc(file_kusinta_iot_webrtc_v1_management, 33);
293
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 37);
266
294
 
267
295
  /**
268
296
  * Describes the message kusinta.iot.webrtc.v1.GetPrivacyDisclosure.
269
297
  * Use `create(GetPrivacyDisclosureSchema)` to create a new message.
270
298
  */
271
299
  export const GetPrivacyDisclosureSchema = /*@__PURE__*/
272
- messageDesc(file_kusinta_iot_webrtc_v1_management, 34);
300
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 38);
273
301
 
274
302
  /**
275
303
  * Describes the message kusinta.iot.webrtc.v1.GetApartmentClimateSummary.
276
304
  * Use `create(GetApartmentClimateSummarySchema)` to create a new message.
277
305
  */
278
306
  export const GetApartmentClimateSummarySchema = /*@__PURE__*/
279
- messageDesc(file_kusinta_iot_webrtc_v1_management, 35);
307
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 39);
280
308
 
281
309
  /**
282
310
  * Describes the message kusinta.iot.webrtc.v1.ReconnectConnector.
283
311
  * Use `create(ReconnectConnectorSchema)` to create a new message.
284
312
  */
285
313
  export const ReconnectConnectorSchema = /*@__PURE__*/
286
- messageDesc(file_kusinta_iot_webrtc_v1_management, 36);
314
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 40);
287
315
 
288
316
  /**
289
317
  * Describes the message kusinta.iot.webrtc.v1.ListHeating.
290
318
  * Use `create(ListHeatingSchema)` to create a new message.
291
319
  */
292
320
  export const ListHeatingSchema = /*@__PURE__*/
293
- messageDesc(file_kusinta_iot_webrtc_v1_management, 37);
321
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 41);
294
322
 
295
323
  /**
296
324
  * Describes the message kusinta.iot.webrtc.v1.PutHeatingPlant.
297
325
  * Use `create(PutHeatingPlantSchema)` to create a new message.
298
326
  */
299
327
  export const PutHeatingPlantSchema = /*@__PURE__*/
300
- messageDesc(file_kusinta_iot_webrtc_v1_management, 38);
328
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 42);
301
329
 
302
330
  /**
303
331
  * Describes the message kusinta.iot.webrtc.v1.PutHeatingCircuit.
304
332
  * Use `create(PutHeatingCircuitSchema)` to create a new message.
305
333
  */
306
334
  export const PutHeatingCircuitSchema = /*@__PURE__*/
307
- messageDesc(file_kusinta_iot_webrtc_v1_management, 39);
335
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 43);
308
336
 
309
337
  /**
310
338
  * Describes the message kusinta.iot.webrtc.v1.PutFloorZone.
311
339
  * Use `create(PutFloorZoneSchema)` to create a new message.
312
340
  */
313
341
  export const PutFloorZoneSchema = /*@__PURE__*/
314
- messageDesc(file_kusinta_iot_webrtc_v1_management, 40);
342
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 44);
315
343
 
316
344
  /**
317
345
  * Describes the message kusinta.iot.webrtc.v1.PutComfortLoad.
318
346
  * Use `create(PutComfortLoadSchema)` to create a new message.
319
347
  */
320
348
  export const PutComfortLoadSchema = /*@__PURE__*/
321
- messageDesc(file_kusinta_iot_webrtc_v1_management, 41);
349
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 45);
322
350
 
323
351
  /**
324
352
  * Describes the message kusinta.iot.webrtc.v1.RemoveHeatingRecord.
325
353
  * Use `create(RemoveHeatingRecordSchema)` to create a new message.
326
354
  */
327
355
  export const RemoveHeatingRecordSchema = /*@__PURE__*/
328
- messageDesc(file_kusinta_iot_webrtc_v1_management, 42);
356
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 46);
329
357
 
330
358
  /**
331
359
  * Describes the message kusinta.iot.webrtc.v1.SetComfortWindows.
332
360
  * Use `create(SetComfortWindowsSchema)` to create a new message.
333
361
  */
334
362
  export const SetComfortWindowsSchema = /*@__PURE__*/
335
- messageDesc(file_kusinta_iot_webrtc_v1_management, 43);
363
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 47);
336
364
 
337
365
  /**
338
366
  * Describes the message kusinta.iot.webrtc.v1.RequestAccountLinkNonce.
339
367
  * Use `create(RequestAccountLinkNonceSchema)` to create a new message.
340
368
  */
341
369
  export const RequestAccountLinkNonceSchema = /*@__PURE__*/
342
- messageDesc(file_kusinta_iot_webrtc_v1_management, 44);
370
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 48);
343
371
 
344
372
  /**
345
373
  * Describes the message kusinta.iot.webrtc.v1.ListAccountLinks.
346
374
  * Use `create(ListAccountLinksSchema)` to create a new message.
347
375
  */
348
376
  export const ListAccountLinksSchema = /*@__PURE__*/
349
- messageDesc(file_kusinta_iot_webrtc_v1_management, 45);
377
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 49);
350
378
 
351
379
  /**
352
380
  * Describes the message kusinta.iot.webrtc.v1.UnlinkAccount.
353
381
  * Use `create(UnlinkAccountSchema)` to create a new message.
354
382
  */
355
383
  export const UnlinkAccountSchema = /*@__PURE__*/
356
- messageDesc(file_kusinta_iot_webrtc_v1_management, 46);
384
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 50);
357
385
 
358
386
  /**
359
387
  * Describes the message kusinta.iot.webrtc.v1.ListCommissioning.
360
388
  * Use `create(ListCommissioningSchema)` to create a new message.
361
389
  */
362
390
  export const ListCommissioningSchema = /*@__PURE__*/
363
- messageDesc(file_kusinta_iot_webrtc_v1_management, 47);
391
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 51);
364
392
 
365
393
  /**
366
394
  * Describes the message kusinta.iot.webrtc.v1.PutCommissioningFact.
367
395
  * Use `create(PutCommissioningFactSchema)` to create a new message.
368
396
  */
369
397
  export const PutCommissioningFactSchema = /*@__PURE__*/
370
- messageDesc(file_kusinta_iot_webrtc_v1_management, 48);
398
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 52);
371
399
 
372
400
  /**
373
401
  * Describes the message kusinta.iot.webrtc.v1.RemoveCommissioningFact.
374
402
  * Use `create(RemoveCommissioningFactSchema)` to create a new message.
375
403
  */
376
404
  export const RemoveCommissioningFactSchema = /*@__PURE__*/
377
- messageDesc(file_kusinta_iot_webrtc_v1_management, 49);
405
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 53);
378
406
 
379
407
  /**
380
408
  * Describes the message kusinta.iot.webrtc.v1.PutHouseTemplate.
381
409
  * Use `create(PutHouseTemplateSchema)` to create a new message.
382
410
  */
383
411
  export const PutHouseTemplateSchema = /*@__PURE__*/
384
- messageDesc(file_kusinta_iot_webrtc_v1_management, 50);
412
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 54);
385
413
 
386
414
  /**
387
415
  * Describes the message kusinta.iot.webrtc.v1.SetHomeTemplate.
388
416
  * Use `create(SetHomeTemplateSchema)` to create a new message.
389
417
  */
390
418
  export const SetHomeTemplateSchema = /*@__PURE__*/
391
- messageDesc(file_kusinta_iot_webrtc_v1_management, 51);
419
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 55);
392
420
 
393
421
  /**
394
422
  * Describes the message kusinta.iot.webrtc.v1.RunCommissioningTest.
395
423
  * Use `create(RunCommissioningTestSchema)` to create a new message.
396
424
  */
397
425
  export const RunCommissioningTestSchema = /*@__PURE__*/
398
- messageDesc(file_kusinta_iot_webrtc_v1_management, 52);
426
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 56);
399
427
 
400
428
  /**
401
429
  * Describes the message kusinta.iot.webrtc.v1.ConcludeCommissioningTest.
402
430
  * Use `create(ConcludeCommissioningTestSchema)` to create a new message.
403
431
  */
404
432
  export const ConcludeCommissioningTestSchema = /*@__PURE__*/
405
- messageDesc(file_kusinta_iot_webrtc_v1_management, 53);
433
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 57);
406
434
 
407
435
  /**
408
436
  * Describes the message kusinta.iot.webrtc.v1.ListHomeSetups.
409
437
  * Use `create(ListHomeSetupsSchema)` to create a new message.
410
438
  */
411
439
  export const ListHomeSetupsSchema = /*@__PURE__*/
412
- messageDesc(file_kusinta_iot_webrtc_v1_management, 54);
440
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 58);
413
441
 
414
442
  /**
415
443
  * Describes the message kusinta.iot.webrtc.v1.RequestCommissioningGrant.
416
444
  * Use `create(RequestCommissioningGrantSchema)` to create a new message.
417
445
  */
418
446
  export const RequestCommissioningGrantSchema = /*@__PURE__*/
419
- messageDesc(file_kusinta_iot_webrtc_v1_management, 55);
447
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 59);
420
448
 
421
449
  /**
422
450
  * Describes the message kusinta.iot.webrtc.v1.AnswerCommissioningGrant.
423
451
  * Use `create(AnswerCommissioningGrantSchema)` to create a new message.
424
452
  */
425
453
  export const AnswerCommissioningGrantSchema = /*@__PURE__*/
426
- messageDesc(file_kusinta_iot_webrtc_v1_management, 56);
454
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 60);
427
455
 
428
456
  /**
429
457
  * Describes the message kusinta.iot.webrtc.v1.EndCommissioningGrant.
430
458
  * Use `create(EndCommissioningGrantSchema)` to create a new message.
431
459
  */
432
460
  export const EndCommissioningGrantSchema = /*@__PURE__*/
433
- messageDesc(file_kusinta_iot_webrtc_v1_management, 57);
461
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 61);
434
462
 
435
463
  /**
436
464
  * Describes the message kusinta.iot.webrtc.v1.ListCommissioningGrants.
437
465
  * Use `create(ListCommissioningGrantsSchema)` to create a new message.
438
466
  */
439
467
  export const ListCommissioningGrantsSchema = /*@__PURE__*/
440
- messageDesc(file_kusinta_iot_webrtc_v1_management, 58);
468
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 62);
441
469
 
442
470
  /**
443
471
  * Describes the message kusinta.iot.webrtc.v1.SetAssetOwner.
444
472
  * Use `create(SetAssetOwnerSchema)` to create a new message.
445
473
  */
446
474
  export const SetAssetOwnerSchema = /*@__PURE__*/
447
- messageDesc(file_kusinta_iot_webrtc_v1_management, 59);
475
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 63);
448
476
 
449
477
  /**
450
478
  * Describes the message kusinta.iot.webrtc.v1.ManagementRequest.
451
479
  * Use `create(ManagementRequestSchema)` to create a new message.
452
480
  */
453
481
  export const ManagementRequestSchema = /*@__PURE__*/
454
- messageDesc(file_kusinta_iot_webrtc_v1_management, 60);
482
+ messageDesc(file_kusinta_iot_webrtc_v1_management, 64);
455
483