node-opcua-address-space 2.81.0 → 2.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/source/loader/ensure_datatype_extracted.js +1 -1
  2. package/dist/source/loader/ensure_datatype_extracted.js.map +1 -1
  3. package/dist/source/loader/load_nodeset2.js +9 -22
  4. package/dist/source/loader/load_nodeset2.js.map +1 -1
  5. package/dist/source/xml_writer.d.ts +5 -1
  6. package/dist/src/address_space.js +1 -1
  7. package/dist/src/address_space.js.map +1 -1
  8. package/dist/src/apply_condition_refresh.d.ts +1 -1
  9. package/dist/src/apply_condition_refresh.js +5 -5
  10. package/dist/src/apply_condition_refresh.js.map +1 -1
  11. package/dist/src/base_node_impl.d.ts +1 -0
  12. package/dist/src/base_node_impl.js +83 -54
  13. package/dist/src/base_node_impl.js.map +1 -1
  14. package/dist/src/base_node_private.d.ts +23 -3
  15. package/dist/src/base_node_private.js +3 -2
  16. package/dist/src/base_node_private.js.map +1 -1
  17. package/dist/src/index_current.d.ts +1 -1
  18. package/dist/src/index_current.js +2 -3
  19. package/dist/src/index_current.js.map +1 -1
  20. package/dist/src/namespace_impl.d.ts +4 -1
  21. package/dist/src/namespace_impl.js +10 -2
  22. package/dist/src/namespace_impl.js.map +1 -1
  23. package/dist/src/namespace_private.d.ts +2 -1
  24. package/dist/src/namespace_private.js.map +1 -1
  25. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +3 -1
  26. package/dist/src/nodeset_tools/construct_namespace_dependency.js +35 -5
  27. package/dist/src/nodeset_tools/construct_namespace_dependency.js.map +1 -1
  28. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +4 -2
  29. package/dist/src/nodeset_tools/nodeset_to_xml.js +44 -59
  30. package/dist/src/nodeset_tools/nodeset_to_xml.js.map +1 -1
  31. package/dist/src/ua_data_type_impl.d.ts +2 -0
  32. package/dist/src/ua_data_type_impl.js +10 -15
  33. package/dist/src/ua_data_type_impl.js.map +1 -1
  34. package/dist/src/ua_reference_type_impl.d.ts +1 -1
  35. package/dist/src/ua_reference_type_impl.js +1 -1
  36. package/dist/src/ua_reference_type_impl.js.map +1 -1
  37. package/dist/src/ua_variable_impl.d.ts +2 -0
  38. package/dist/src/ua_variable_impl.js +49 -11
  39. package/dist/src/ua_variable_impl.js.map +1 -1
  40. package/package.json +40 -40
  41. package/source/loader/ensure_datatype_extracted.ts +1 -1
  42. package/source/loader/load_nodeset2.ts +22 -36
  43. package/source/xml_writer.ts +5 -1
  44. package/src/address_space.ts +1 -2
  45. package/src/apply_condition_refresh.ts +5 -5
  46. package/src/base_node_impl.ts +86 -59
  47. package/src/base_node_private.ts +26 -10
  48. package/src/index_current.ts +1 -1
  49. package/src/namespace_impl.ts +13 -3
  50. package/src/namespace_private.ts +7 -1
  51. package/src/nodeset_tools/construct_namespace_dependency.ts +42 -5
  52. package/src/nodeset_tools/nodeset_to_xml.ts +57 -84
  53. package/src/ua_data_type_impl.ts +12 -15
  54. package/src/ua_reference_type_impl.ts +2 -2
  55. package/src/ua_variable_impl.ts +74 -31
  56. package/test_helpers/test_fixtures/dataType_with_union.xml +90 -1
  57. package/test_helpers/test_fixtures/datatype_as_per_1.04.xml +38 -10
@@ -348,23 +348,39 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
348
348
 
349
349
  this.semantic_version = 0;
350
350
  }
351
-
352
- private checkPermissionAndAccessLevelPrivate(
351
+ private checkAccessLevelPrivate(
352
+ _context: ISessionContext,
353
+ accessLevel: AccessLevelFlag): boolean {
354
+ if (this.userAccessLevel === undefined) {
355
+ return true;
356
+ }
357
+ return (this.userAccessLevel & accessLevel) === accessLevel;
358
+ }
359
+ private checkPermissionPrivate(
353
360
  context: ISessionContext,
354
361
  permission: PermissionType,
355
- accessLevel: AccessLevelFlag
356
- ) {
362
+ ): boolean {
363
+ if (!context) return true;
357
364
  assert(context instanceof SessionContext);
358
365
  if (context.checkPermission) {
359
- assert(context.checkPermission instanceof Function);
366
+ if (!(context.checkPermission instanceof Function)) {
367
+ errorLog("context checkPermission is not a function");
368
+ return false;
369
+ }
360
370
  if (!context.checkPermission(this, permission)) {
361
371
  return false;
362
372
  }
363
373
  }
364
- if (this.userAccessLevel === undefined) {
365
- return true;
374
+ return true;
375
+ }
376
+ private checkPermissionAndAccessLevelPrivate(
377
+ context: ISessionContext,
378
+ permission: PermissionType,
379
+ accessLevel: AccessLevelFlag): boolean {
380
+ if (!this.checkPermissionPrivate(context, permission)) {
381
+ return false;
366
382
  }
367
- return (this.userAccessLevel & accessLevel) === accessLevel;
383
+ return this.checkAccessLevelPrivate(context, accessLevel);
368
384
  }
369
385
 
370
386
  public isReadable(context: ISessionContext): boolean {
@@ -375,7 +391,10 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
375
391
  if (!this.isReadable(context)) {
376
392
  return false;
377
393
  }
378
- return this.checkPermissionAndAccessLevelPrivate(context, PermissionType.Read, AccessLevelFlag.CurrentRead);
394
+ if (!this.checkPermissionPrivate(context, PermissionType.Read)) {
395
+ return false;
396
+ }
397
+ return this.checkAccessLevelPrivate(context, AccessLevelFlag.CurrentRead);
379
398
  }
380
399
 
381
400
  public isWritable(context: ISessionContext): boolean {
@@ -451,9 +470,12 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
451
470
  if (!this.isReadable(context)) {
452
471
  return new DataValue({ statusCode: StatusCodes.BadNotReadable });
453
472
  }
454
- if (!this.isUserReadable(context)) {
473
+ if (!this.checkPermissionPrivate(context, PermissionType.Read)) {
455
474
  return new DataValue({ statusCode: StatusCodes.BadUserAccessDenied });
456
475
  }
476
+ if (!this.isUserReadable(context)) {
477
+ return new DataValue({ statusCode: StatusCodes.BadNotReadable });
478
+ }
457
479
  if (!isValidDataEncoding(dataEncoding)) {
458
480
  return new DataValue({ statusCode: StatusCodes.BadDataEncodingInvalid });
459
481
  }
@@ -484,10 +506,10 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
484
506
  ) {
485
507
  debugLog(
486
508
  chalk.red(" Warning: UAVariable#readValue ") +
487
- chalk.cyan(this.browseName.toString()) +
488
- " (" +
489
- chalk.yellow(this.nodeId.toString()) +
490
- ") exists but dataValue has not been defined"
509
+ chalk.cyan(this.browseName.toString()) +
510
+ " (" +
511
+ chalk.yellow(this.nodeId.toString()) +
512
+ ") exists but dataValue has not been defined"
491
513
  );
492
514
  }
493
515
  return dataValue;
@@ -689,9 +711,9 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
689
711
  if (variant.dataType === null || variant.dataType === undefined) {
690
712
  throw new Error(
691
713
  "Variant must provide a valid dataType : variant = " +
692
- variant.toString() +
693
- " this.dataType= " +
694
- this.dataType.toString()
714
+ variant.toString() +
715
+ " this.dataType= " +
716
+ this.dataType.toString()
695
717
  );
696
718
  }
697
719
  if (
@@ -700,9 +722,9 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
700
722
  ) {
701
723
  throw new Error(
702
724
  "Variant must provide a valid Boolean : variant = " +
703
- variant.toString() +
704
- " this.dataType= " +
705
- this.dataType.toString()
725
+ variant.toString() +
726
+ " this.dataType= " +
727
+ this.dataType.toString()
706
728
  );
707
729
  }
708
730
  if (
@@ -713,9 +735,9 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
713
735
  ) {
714
736
  throw new Error(
715
737
  "Variant must provide a valid LocalizedText : variant = " +
716
- variant.toString() +
717
- " this.dataType= " +
718
- this.dataType.toString()
738
+ variant.toString() +
739
+ " this.dataType= " +
740
+ this.dataType.toString()
719
741
  );
720
742
  }
721
743
  }
@@ -870,8 +892,13 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
870
892
  if (!this.isWritable(context)) {
871
893
  return callback!(null, StatusCodes.BadNotWritable);
872
894
  }
895
+ if (!this.checkPermissionPrivate(context, PermissionType.Write)) {
896
+ return new DataValue({ statusCode: StatusCodes.BadUserAccessDenied });
897
+ }
898
+
899
+
873
900
  if (!this.isUserWritable(context)) {
874
- return callback!(null, StatusCodes.BadUserAccessDenied);
901
+ return callback!(null, StatusCodes.BadWriteNotSupported);
875
902
  }
876
903
 
877
904
  // adjust special case
@@ -997,9 +1024,14 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
997
1024
  if (writeValue.value!.value.dataType !== DataType.Boolean) {
998
1025
  return callback(null, StatusCodes.BadTypeMismatch);
999
1026
  }
1000
- if (!this.canUserWriteHistorizingAttribute(context)) {
1027
+ if (!this.checkPermissionPrivate(context, PermissionType.WriteHistorizing)) {
1001
1028
  return callback(null, StatusCodes.BadUserAccessDenied);
1002
1029
  }
1030
+
1031
+ if (!this.canUserWriteHistorizingAttribute(context)) {
1032
+ return callback(null, StatusCodes.BadHistoryOperationUnsupported);
1033
+ }
1034
+
1003
1035
  // if the variable has no historizing in place reject
1004
1036
  if (!this.getChildByName("HA Configuration")) {
1005
1037
  return callback(null, StatusCodes.BadNotSupported);
@@ -1227,11 +1259,16 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
1227
1259
  const dataValue = new DataValue({ statusCode: StatusCodes.BadNotReadable });
1228
1260
  innerCallback(null, dataValue);
1229
1261
  };
1230
- } else if (!this.isUserReadable(context)) {
1262
+ } else if (!this.checkPermissionPrivate(context, PermissionType.Read)) {
1231
1263
  func = (innerCallback: (err: Error | null, dataValue: DataValue) => void) => {
1232
1264
  const dataValue = new DataValue({ statusCode: StatusCodes.BadUserAccessDenied });
1233
1265
  innerCallback(null, dataValue);
1234
1266
  };
1267
+ } else if (!this.isUserReadable(context)) {
1268
+ func = (innerCallback: (err: Error | null, dataValue: DataValue) => void) => {
1269
+ const dataValue = new DataValue({ statusCode: StatusCodes.BadNotReadable });
1270
+ innerCallback(null, dataValue);
1271
+ };
1235
1272
  } else {
1236
1273
  func = typeof this.refreshFunc === "function" ? this.asyncRefresh.bind(this, new Date()) : readImmediate;
1237
1274
  }
@@ -1560,12 +1597,19 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
1560
1597
  continuationData: ContinuationData,
1561
1598
  callback: CallbackT<HistoryReadResult>
1562
1599
  ): void {
1563
- if (!this.canUserReadHistory(context)) {
1600
+
1601
+ if (!this.checkPermissionPrivate(context, PermissionType.ReadHistory)) {
1564
1602
  const result = new HistoryReadResult({
1565
1603
  statusCode: StatusCodes.BadUserAccessDenied
1566
1604
  });
1567
1605
  callback(null, result);
1568
1606
  }
1607
+ if (!this.canUserReadHistory(context)) {
1608
+ const result = new HistoryReadResult({
1609
+ statusCode: StatusCodes.BadHistoryOperationUnsupported
1610
+ });
1611
+ callback(null, result);
1612
+ }
1569
1613
  const result = new HistoryReadResult({
1570
1614
  statusCode: StatusCodes.BadHistoryOperationUnsupported
1571
1615
  });
@@ -1634,8 +1678,7 @@ export class UAVariableImpl extends BaseNodeImpl implements UAVariable {
1634
1678
  const nbElements = dataValue.value.dimensions.reduce((acc, x) => acc * x, 1);
1635
1679
  if (dataValue.value.value.length !== 0 && dataValue.value.value.length !== nbElements) {
1636
1680
  throw new Error(
1637
- `Internal Error: matrix dimension doesn't match the number of element in the array : ${dataValue.toString()} "\n expecting ${nbElements} elements but got ${
1638
- dataValue.value.value.length
1681
+ `Internal Error: matrix dimension doesn't match the number of element in the array : ${dataValue.toString()} "\n expecting ${nbElements} elements but got ${dataValue.value.value.length
1639
1682
  }`
1640
1683
  );
1641
1684
  }
@@ -1984,7 +2027,7 @@ function _Variable_bind_with_timestamped_get(
1984
2027
  errorLog(
1985
2028
  chalk.red(" Bind variable error: "),
1986
2029
  " the timestamped_get function must return a DataValue or a Promise<DataValue>" +
1987
- "\n value_check.constructor.name ",
2030
+ "\n value_check.constructor.name ",
1988
2031
  dataValue_verify ? dataValue_verify.constructor.name : "null"
1989
2032
  );
1990
2033
 
@@ -2179,7 +2222,7 @@ export interface UAVariableImplT<T, DT extends DataType> extends UAVariableImpl,
2179
2222
  writeValue(context: ISessionContext, dataValue: DataValueT<T, DT>, callback: StatusCodeCallback): void;
2180
2223
  writeValue(context: ISessionContext, dataValue: DataValueT<T, DT>, indexRange?: NumericRange | null): Promise<StatusCode>;
2181
2224
  }
2182
- export class UAVariableImplT<T, DT extends DataType> extends UAVariableImpl {}
2225
+ export class UAVariableImplT<T, DT extends DataType> extends UAVariableImpl { }
2183
2226
  // x TO DO
2184
2227
  // require("./data_access/ua_variable_data_access");
2185
2228
  // require("./historical_access/ua_variable_history");
@@ -1 +1,90 @@
1
- // TO DO
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <UANodeSet xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" LastModified="2020-01-08T00:00:00Z"
4
+ xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd">
5
+ <Models>
6
+ <Model ModelUri="http://mynodeset/" Version="1.01" PublicationDate="2020-06-18T13:52:03Z">
7
+ <RequiredModel ModelUri="http://opcfoundation.org/UA/" Version="1.03" PublicationDate="2019-09-09T00:00:00Z" />
8
+ </Model>
9
+ </Models>
10
+ <NamespaceUris>
11
+ <Uri>http://mynodeset/</Uri>
12
+ </NamespaceUris>
13
+
14
+ <Aliases>
15
+ <Alias Alias="Boolean">i=1</Alias>
16
+ <Alias Alias="SByte">i=2</Alias>
17
+ <Alias Alias="Byte">i=3</Alias>
18
+ <Alias Alias="Int16">i=4</Alias>
19
+ <Alias Alias="UInt16">i=5</Alias>
20
+ <Alias Alias="Int32">i=6</Alias>
21
+ <Alias Alias="UInt32">i=7</Alias>
22
+ <Alias Alias="Int64">i=8</Alias>
23
+ <Alias Alias="UInt64">i=9</Alias>
24
+ <Alias Alias="Float">i=10</Alias>
25
+ <Alias Alias="Double">i=11</Alias>
26
+ <Alias Alias="DateTime">i=13</Alias>
27
+ <Alias Alias="String">i=12</Alias>
28
+ <Alias Alias="ByteString">i=15</Alias>
29
+ <Alias Alias="Guid">i=14</Alias>
30
+ <Alias Alias="XmlElement">i=16</Alias>
31
+ <Alias Alias="NodeId">i=17</Alias>
32
+ <Alias Alias="ExpandedNodeId">i=18</Alias>
33
+ <Alias Alias="QualifiedName">i=20</Alias>
34
+ <Alias Alias="LocalizedText">i=21</Alias>
35
+ <Alias Alias="StatusCode">i=19</Alias>
36
+ <Alias Alias="Structure">i=22</Alias>
37
+ <Alias Alias="Number">i=26</Alias>
38
+ <Alias Alias="Integer">i=27</Alias>
39
+ <Alias Alias="UInteger">i=28</Alias>
40
+ <Alias Alias="HasComponent">i=47</Alias>
41
+ <Alias Alias="HasProperty">i=46</Alias>
42
+ <Alias Alias="Organizes">i=35</Alias>
43
+ <Alias Alias="HasEventSource">i=36</Alias>
44
+ <Alias Alias="HasNotifier">i=48</Alias>
45
+ <Alias Alias="HasSubtype">i=45</Alias>
46
+ <Alias Alias="HasTypeDefinition">i=40</Alias>
47
+ <Alias Alias="HasModellingRule">i=37</Alias>
48
+ <Alias Alias="HasEncoding">i=38</Alias>
49
+ <Alias Alias="HasDescription">i=39</Alias>
50
+ </Aliases>
51
+
52
+ <UADataType NodeId="ns=1;i=1000" BrowseName="1:CustomUnion">
53
+ <References>
54
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=12756</Reference>
55
+ <Reference ReferenceType="HasEncoding">ns=1;i=1001</Reference>
56
+ </References>
57
+ <Definition Name="1:CustomUnion" IsUnion="true">
58
+ <Field Name="ByteString" DataType="ByteString" />
59
+ <Field Name="String" DataType="String" />
60
+ <Field Name="Custom" />
61
+ </Definition>
62
+ </UADataType>
63
+ <UAObject NodeId="ns=1;i=1001" BrowseName="Default Binary" SymbolicName="DefaultBinary">
64
+ <DisplayName>Default Binary</DisplayName>
65
+ <References>
66
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
67
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=1000</Reference>
68
+ </References>
69
+ </UAObject>
70
+
71
+ <UADataType NodeId="ns=1;i=2000" BrowseName="1:CustomStruct">
72
+ <References>
73
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
74
+ <Reference ReferenceType="HasEncoding">ns=1;i=2001</Reference>
75
+ </References>
76
+ <Definition Name="1:CustomStruct">
77
+ <Field Name="ByteString" DataType="ByteString" />
78
+ <Field Name="String" DataType="String" />
79
+ <Field Name="Custom" />
80
+ </Definition>
81
+ </UADataType>
82
+ <UAObject NodeId="ns=1;i=2001" BrowseName="Default Binary" SymbolicName="DefaultBinary">
83
+ <DisplayName>Default Binary</DisplayName>
84
+ <References>
85
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
86
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=2x²000</Reference>
87
+ </References>
88
+ </UAObject>
89
+
90
+ </UANodeSet>
@@ -7,15 +7,15 @@
7
7
  </NamespaceUris>
8
8
  <Models>
9
9
  <Model ModelUri="http://A" PublicationDate="2021-01-01T00:00:00Z" Version="1.00">
10
- <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2020-07-15T00:00:00Z" Version="1.04.7"/>
10
+ <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2020-07-15T00:00:00Z" Version="1.04.7" />
11
11
  </Model>
12
12
  <Model ModelUri="http://B" PublicationDate="2021-01-01T00:00:00Z" Version="1.00">
13
- <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2020-07-15T00:00:00Z" Version="1.04.7"/>
13
+ <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2020-07-15T00:00:00Z" Version="1.04.7" />
14
14
  </Model>
15
15
  <Model ModelUri="http://C" PublicationDate="2021-01-01T00:00:00Z" Version="1.00">
16
- <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2020-07-15T00:00:00Z" Version="1.04.7"/>
17
- <RequiredModel ModelUri="http://A" PublicationDate="2021-01-01T00:00:00Z" Version="1.00"/>
18
- <RequiredModel ModelUri="http://B" PublicationDate="2021-01-01T00:00:00Z" Version="1.00"/>
16
+ <RequiredModel ModelUri="http://opcfoundation.org/UA/" PublicationDate="2020-07-15T00:00:00Z" Version="1.04.7" />
17
+ <RequiredModel ModelUri="http://A" PublicationDate="2021-01-01T00:00:00Z" Version="1.00" />
18
+ <RequiredModel ModelUri="http://B" PublicationDate="2021-01-01T00:00:00Z" Version="1.00" />
19
19
  </Model>
20
20
  </Models>
21
21
  <Aliases>
@@ -69,10 +69,10 @@
69
69
  <Reference ReferenceType="HasEncoding">ns=1;i=5004</Reference>
70
70
  </References>
71
71
  <Definition Name="1:MixingToFilling">
72
- <Field DataType="Boolean" Name="Start"/>
73
- <Field DataType="Boolean" Name="Stop"/>
74
- <Field DataType="Boolean" Name="Hold"/>
75
- <Field DataType="Double" Name="Amount"/>
72
+ <Field DataType="Boolean" Name="Start" />
73
+ <Field DataType="Boolean" Name="Stop" />
74
+ <Field DataType="Boolean" Name="Hold" />
75
+ <Field DataType="Double" Name="Amount" />
76
76
  </Definition>
77
77
  </UADataType>
78
78
  <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5003" BrowseName="Default Binary">
@@ -87,4 +87,32 @@
87
87
  <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
88
88
  </References>
89
89
  </UAObject>
90
- </UANodeSet>
90
+
91
+
92
+ <UADataType NodeId="ns=1;i=10001" BrowseName="1:MyStructureWithMatrix">
93
+ <DisplayName>MyStructureWithMatrix</DisplayName>
94
+ <References>
95
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
96
+ <Reference ReferenceType="HasEncoding">ns=1;i=10002</Reference>
97
+ <Reference ReferenceType="HasEncoding">ns=1;i=10003</Reference>
98
+ </References>
99
+ <Definition Name="1:MyStructureWithMatrix">
100
+ <Field DataType="Double" Name="MyArray" ValueRank="1" ArrayDimensions="2" />
101
+ <Field DataType="Double" Name="MyMatrix" ValueRank="2" ArrayDimensions="2,3" />
102
+ <Field DataType="Double" Name="MyCube" ValueRank="3" ArrayDimensions="2,2,2" />
103
+ </Definition>
104
+ </UADataType>
105
+
106
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=10002" BrowseName="Default Binary">
107
+ <DisplayName>Default Binary</DisplayName>
108
+ <References>
109
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
110
+ </References>
111
+ </UAObject>
112
+ <UAObject SymbolicName="DefaultXML" NodeId="ns=1;i=10003" BrowseName="Default XML">
113
+ <DisplayName>Default XML</DisplayName>
114
+ <References>
115
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
116
+ </References>
117
+ </UAObject>
118
+ </UANodeSet>