opcua 0.20 → 0.25

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b563025f5af4ab20c27a4f6ff05e5e442dab0d44462c346bd7d32ac3ff58ad49
4
- data.tar.gz: '059f6ae8d6a8ed02d7577e8c7fc55154f5574549cdb47628bb4e1ace0675a3eb'
3
+ metadata.gz: f86b954296eb2837114b76e0a32dc36cabfa922dfa30bdfc9b79e188fff0777e
4
+ data.tar.gz: c504ae5111b2422237dd7890f68739555338b46363b3158dc84b6e91f6052d2e
5
5
  SHA512:
6
- metadata.gz: b4bcf7661e9be89ac2a6be22404e07274ee829b23ee1afde5647d7f7bd0cd6987d396542e802ae5e2303895888abcc8b6a68244f97b2010b677375a01e04835b
7
- data.tar.gz: 1fe326883189de7b5395009677b0241f23bd539a7c31e2001e63ff6bcb4c1b1c8f8d4371eb3e8e48578dcc6e9fdac215145659673da335a2b173aa02a83a3bc2
6
+ metadata.gz: a559fc42fa3809c643eb0d62ac5a345418118da336d38a6867fd3dbe7550eea5d33d32a1ded00cc2c08bee62fe17ccaca8ad1c500c800930f18bc208b0e94229
7
+ data.tar.gz: a23f8d80d7075ddbdca95f6f8fbd93e0f51e0a26136720a295073cf45e02cbf1adef2d205fcb131cd1de4ba02ea2db7446762c4c2ca1a66463354b87df7cfbdd
data/README.md CHANGED
@@ -122,11 +122,24 @@ Multible variables can be defined at once with the ```.add_variables``` command.
122
122
  t.add_variables :TestVar1, :TestVar2
123
123
  ```
124
124
  By default variables are read-only.
125
- If you want to add a variable with read/write support you must use the ```.add_Varable_rw``` method.
125
+ If you want to add a variable with read/write support you must use the ```.add_variable_rw``` method.
126
126
  ```ruby
127
127
  t.add_variable_rw :TestVar1
128
128
  ```
129
129
 
130
+ It is also possible to add a block to the variable. The block is called
131
+ whenever the variable is changed. Each block gets three parameters passed:
132
+ nodeid, new value, and if the value has been changed through a client (true) or
133
+ internally in the server (false).
134
+
135
+ ```ruby
136
+ t.add_variable_rw :Value do |node,value,external|
137
+ p node.id # ObjectVarNode object, which has properties such as #id, #value
138
+ p value # new content of the variable
139
+ p external # true || false
140
+ end
141
+ ```
142
+
130
143
  ##### Add Object
131
144
 
132
145
  With ```.add_object(:TestObject)``` a new object named _TestObject_ is added. The second parameter is optional and definies of which type the new object is. Default the object is from _BaseObjectType_. In this example the created object is from _FolderType_. All child nodes of the object can be definded in the ```tap{}``` area.
@@ -1,70 +1,70 @@
1
1
  unsigned char cert_der[] = {
2
2
  0x30, 0x82, 0x03, 0x18, 0x30, 0x82, 0x02, 0x00, 0xa0, 0x03, 0x02, 0x01,
3
- 0x02, 0x02, 0x14, 0x7e, 0x53, 0x21, 0xef, 0xe9, 0x0b, 0x90, 0x45, 0x91,
4
- 0x50, 0x71, 0x15, 0x0a, 0xcb, 0x99, 0x5a, 0xe3, 0x98, 0xc0, 0xdd, 0x30,
3
+ 0x02, 0x02, 0x14, 0x11, 0x2f, 0x7b, 0xb4, 0x32, 0x5f, 0x6d, 0xe3, 0x4f,
4
+ 0x2c, 0x3a, 0x98, 0xb9, 0x10, 0xb5, 0x3a, 0x2b, 0xfa, 0xc1, 0x30, 0x30,
5
5
  0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
6
6
  0x05, 0x00, 0x30, 0x15, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
7
7
  0x03, 0x0c, 0x0a, 0x72, 0x75, 0x62, 0x79, 0x2d, 0x6f, 0x70, 0x63, 0x75,
8
- 0x61, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x37, 0x31, 0x30, 0x31,
9
- 0x34, 0x30, 0x36, 0x30, 0x32, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x30, 0x36,
10
- 0x33, 0x30, 0x31, 0x34, 0x30, 0x36, 0x30, 0x32, 0x5a, 0x30, 0x15, 0x31,
8
+ 0x61, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x31, 0x30, 0x31, 0x32, 0x37, 0x31,
9
+ 0x36, 0x30, 0x30, 0x32, 0x39, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x31,
10
+ 0x31, 0x37, 0x31, 0x36, 0x30, 0x30, 0x32, 0x39, 0x5a, 0x30, 0x15, 0x31,
11
11
  0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0a, 0x72, 0x75,
12
12
  0x62, 0x79, 0x2d, 0x6f, 0x70, 0x63, 0x75, 0x61, 0x30, 0x82, 0x01, 0x22,
13
13
  0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
14
14
  0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
15
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0xcd, 0xca, 0x15, 0x60, 0x85, 0x47,
16
- 0xb7, 0x3d, 0x38, 0x00, 0xe2, 0x1f, 0xcc, 0xc9, 0x15, 0x7f, 0xb1, 0x58,
17
- 0xc8, 0x33, 0x8e, 0x74, 0x52, 0x1e, 0xcc, 0x5f, 0xe0, 0xa4, 0x11, 0x92,
18
- 0x47, 0x66, 0xb6, 0x33, 0x0c, 0xd0, 0xde, 0x39, 0xf6, 0xd0, 0x7b, 0x78,
19
- 0x6c, 0x13, 0xf8, 0xfd, 0x2b, 0xf0, 0x67, 0xbf, 0xd4, 0x54, 0xb9, 0x10,
20
- 0xf3, 0x1c, 0xa5, 0xe5, 0x10, 0x4f, 0x14, 0x63, 0x5e, 0x62, 0x19, 0x4b,
21
- 0xf8, 0x6e, 0x38, 0xfd, 0x31, 0xb9, 0x64, 0xb3, 0xb1, 0xe1, 0xe5, 0x80,
22
- 0x59, 0xef, 0x85, 0x21, 0x02, 0x73, 0x95, 0x3a, 0xe0, 0xc5, 0x4c, 0xbb,
23
- 0xc8, 0x72, 0x96, 0x0d, 0x17, 0xae, 0x89, 0xa8, 0x6a, 0xf9, 0xb0, 0xf0,
24
- 0xaf, 0xf7, 0xda, 0xbe, 0x13, 0x43, 0xb2, 0xce, 0xa5, 0x52, 0x3d, 0x16,
25
- 0xf1, 0x1a, 0x19, 0xad, 0xb1, 0x9f, 0xfb, 0x06, 0x00, 0x91, 0xff, 0xf5,
26
- 0x06, 0x38, 0x63, 0x6f, 0x09, 0x52, 0x97, 0x98, 0x86, 0xfe, 0xab, 0xb8,
27
- 0xe4, 0x27, 0x03, 0xdb, 0x8b, 0x5a, 0x2d, 0xcd, 0x65, 0x5f, 0x48, 0x09,
28
- 0xb8, 0xa7, 0xba, 0xf3, 0xf3, 0xa2, 0xe9, 0xbc, 0x35, 0x6f, 0x34, 0xf0,
29
- 0x38, 0xc8, 0x14, 0x28, 0x8c, 0x98, 0x28, 0x9f, 0xb4, 0x50, 0xfd, 0xb4,
30
- 0x9c, 0xf0, 0xb6, 0x5f, 0x4e, 0x4c, 0xdb, 0x84, 0x98, 0xce, 0xb1, 0x54,
31
- 0xb3, 0x57, 0xbd, 0x12, 0x0c, 0x09, 0x21, 0x7f, 0x44, 0x37, 0xbf, 0xb3,
32
- 0x44, 0xc2, 0x30, 0x61, 0x99, 0x2f, 0x67, 0x1a, 0x19, 0xc0, 0x67, 0xa5,
33
- 0x82, 0xe7, 0xd6, 0x08, 0x6f, 0x26, 0x64, 0x8f, 0x56, 0x66, 0xd5, 0x8a,
34
- 0x08, 0x54, 0x6c, 0xad, 0xf8, 0x7c, 0x1a, 0x18, 0xdb, 0xc0, 0xf1, 0x5d,
35
- 0x4f, 0x68, 0xe5, 0x93, 0x52, 0x4a, 0x58, 0x67, 0x7d, 0x7c, 0x2c, 0xb7,
36
- 0x59, 0x16, 0x6e, 0x67, 0xab, 0x10, 0xe2, 0xab, 0x11, 0x02, 0x03, 0x01,
15
+ 0x02, 0x82, 0x01, 0x01, 0x00, 0xb0, 0xb5, 0x71, 0x62, 0xfe, 0x5b, 0xb7,
16
+ 0xc2, 0xbc, 0x0e, 0x37, 0xf4, 0xa3, 0x73, 0x29, 0x2e, 0x6e, 0x19, 0x53,
17
+ 0x60, 0xeb, 0xfe, 0x18, 0x78, 0xda, 0xf6, 0xbd, 0xc2, 0x2c, 0xdf, 0x1e,
18
+ 0x45, 0x08, 0xef, 0x98, 0xe8, 0x14, 0x43, 0xb2, 0x82, 0x48, 0xa8, 0x85,
19
+ 0xc1, 0x96, 0x19, 0x6c, 0x15, 0xee, 0x76, 0x4f, 0x7b, 0xe7, 0xcd, 0x49,
20
+ 0x57, 0x8d, 0xb8, 0xde, 0x3b, 0xe6, 0xb2, 0x4b, 0xea, 0x88, 0xd8, 0x5d,
21
+ 0x4f, 0x55, 0x97, 0x00, 0x22, 0x4f, 0xcf, 0x05, 0x84, 0xfe, 0x00, 0x25,
22
+ 0x3c, 0xeb, 0x74, 0x99, 0x7a, 0xc9, 0xd4, 0x5b, 0x56, 0x02, 0xc1, 0x08,
23
+ 0x54, 0x7b, 0xc6, 0xec, 0x9a, 0x0e, 0x60, 0x75, 0xe6, 0xbc, 0xde, 0x51,
24
+ 0x17, 0xfe, 0x5d, 0x5e, 0xef, 0x68, 0x83, 0x80, 0x83, 0xa2, 0xcb, 0x3a,
25
+ 0x30, 0x0d, 0xdd, 0x90, 0xb9, 0x1d, 0xca, 0x04, 0x71, 0x61, 0xb6, 0x1a,
26
+ 0x9f, 0xad, 0x66, 0x91, 0x8c, 0x30, 0xc1, 0x52, 0x00, 0xc5, 0x7e, 0xda,
27
+ 0x8a, 0xef, 0xb7, 0x68, 0x74, 0x99, 0x38, 0x89, 0x93, 0xba, 0x85, 0x71,
28
+ 0x31, 0x24, 0xa8, 0x1a, 0x04, 0xdd, 0x41, 0x0b, 0x51, 0xb5, 0x24, 0x51,
29
+ 0x79, 0x8a, 0x34, 0x7b, 0x82, 0xa9, 0xfa, 0xd9, 0x01, 0x62, 0x8a, 0x92,
30
+ 0x67, 0x40, 0x37, 0xc2, 0x0d, 0xee, 0xbe, 0xc2, 0xa4, 0x3d, 0x63, 0x7f,
31
+ 0xe5, 0x3f, 0x23, 0xd5, 0x08, 0x1c, 0x0b, 0x67, 0x14, 0x2a, 0xc4, 0x5f,
32
+ 0xd2, 0xdf, 0x53, 0x72, 0x24, 0xc9, 0x55, 0xe4, 0xd4, 0x4b, 0x92, 0x78,
33
+ 0x68, 0x17, 0x51, 0xa5, 0x0d, 0x3a, 0xe9, 0xde, 0x59, 0xfa, 0x92, 0x30,
34
+ 0x12, 0xc7, 0x72, 0x4b, 0xf3, 0x3b, 0xbf, 0x7d, 0x95, 0x55, 0x48, 0x8e,
35
+ 0x68, 0x8a, 0xf7, 0x49, 0x66, 0x77, 0x77, 0xb2, 0xd5, 0x1b, 0x09, 0xa1,
36
+ 0xa6, 0xf4, 0x2c, 0xec, 0x4f, 0xdf, 0xf1, 0xf4, 0x83, 0x02, 0x03, 0x01,
37
37
  0x00, 0x01, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
38
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x23, 0x5a, 0xee, 0xbe, 0x0a, 0x8d, 0x60,
39
- 0xac, 0x7e, 0x6b, 0xaa, 0xc2, 0xd7, 0x15, 0x4d, 0x8d, 0xac, 0x48, 0x2a,
40
- 0x59, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
38
+ 0x0e, 0x04, 0x16, 0x04, 0x14, 0x94, 0x96, 0x95, 0x63, 0xe7, 0xf5, 0x26,
39
+ 0x38, 0x3e, 0xdf, 0x99, 0xec, 0x11, 0x08, 0xaf, 0x91, 0xde, 0xc6, 0x01,
40
+ 0x44, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
41
41
  0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x1d,
42
42
  0x11, 0x04, 0x15, 0x30, 0x13, 0x86, 0x11, 0x72, 0x75, 0x62, 0x79, 0x2d,
43
43
  0x6f, 0x70, 0x63, 0x75, 0x61, 0x3a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
44
44
  0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
45
45
  0x03, 0x02, 0x05, 0xa0, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
46
46
  0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
47
- 0x9e, 0x76, 0xfa, 0x53, 0xcd, 0x42, 0xf6, 0x59, 0x5f, 0xab, 0x4a, 0x68,
48
- 0x8c, 0xad, 0x60, 0xc1, 0x70, 0xeb, 0xf0, 0x64, 0x79, 0x2e, 0x12, 0x5c,
49
- 0xf4, 0x62, 0x7c, 0x8d, 0x88, 0x2b, 0xe2, 0x8f, 0x4c, 0xca, 0x46, 0xfb,
50
- 0xc0, 0x4b, 0xad, 0x8c, 0xbb, 0x6f, 0xf8, 0x43, 0x4c, 0x07, 0x99, 0xe0,
51
- 0xdd, 0x91, 0x07, 0x46, 0x21, 0x3f, 0xe0, 0xc1, 0x3c, 0xa5, 0x59, 0x3c,
52
- 0x61, 0xde, 0xea, 0xf4, 0x37, 0x1c, 0xe6, 0x11, 0x64, 0x83, 0x1b, 0x53,
53
- 0x5e, 0xb5, 0xc0, 0x4c, 0x78, 0x5c, 0xbc, 0xaa, 0xb1, 0xe6, 0x23, 0x75,
54
- 0xe1, 0x1d, 0x80, 0x4f, 0xe3, 0x6b, 0x37, 0xb2, 0x08, 0xf9, 0x86, 0xf8,
55
- 0x95, 0xa2, 0x71, 0x08, 0xe7, 0x3d, 0xe1, 0x5b, 0x7b, 0x46, 0x6c, 0x05,
56
- 0x71, 0xa1, 0xf6, 0x5e, 0x24, 0x3b, 0x30, 0x59, 0x53, 0x25, 0x5c, 0xf0,
57
- 0xe7, 0x6f, 0xb1, 0x2e, 0xdf, 0x29, 0x60, 0xb5, 0xe9, 0x9e, 0xda, 0x26,
58
- 0xa2, 0x35, 0xff, 0x05, 0x6b, 0x12, 0xec, 0x45, 0xd2, 0x65, 0x12, 0x72,
59
- 0xf2, 0x27, 0xeb, 0x19, 0xcf, 0x1e, 0xa4, 0x5b, 0xdb, 0x48, 0x5d, 0x73,
60
- 0xc9, 0xd1, 0x38, 0x98, 0xc2, 0xb4, 0x57, 0x12, 0xb8, 0xc4, 0x9c, 0x8d,
61
- 0xad, 0xd9, 0x03, 0x01, 0x39, 0xa3, 0x90, 0x3c, 0xce, 0xcc, 0xc8, 0x38,
62
- 0x82, 0x20, 0x6a, 0x74, 0x25, 0xe5, 0x38, 0x8c, 0x70, 0xf0, 0xe4, 0x03,
63
- 0x54, 0x42, 0x12, 0xee, 0xc4, 0x9b, 0xc2, 0x7c, 0xd1, 0x70, 0xf0, 0x7f,
64
- 0xda, 0xb5, 0xa9, 0x1d, 0x4d, 0xc9, 0x7b, 0x0f, 0x94, 0xf6, 0x8a, 0xbe,
65
- 0xe1, 0xe8, 0x1b, 0xaa, 0x46, 0x84, 0x65, 0xfa, 0xd4, 0xef, 0x66, 0x4b,
66
- 0xdd, 0xb6, 0xa1, 0x17, 0xe0, 0x33, 0xd9, 0x87, 0xa1, 0xe3, 0xd0, 0x7a,
67
- 0x15, 0x44, 0xee, 0xb8, 0xab, 0x15, 0x1a, 0xd3, 0x84, 0x79, 0xaf, 0x15,
68
- 0xdd, 0x64, 0x13, 0x17
47
+ 0x7a, 0xf8, 0xe9, 0xa9, 0x0d, 0x31, 0xc9, 0x68, 0x6e, 0x18, 0xa6, 0xb4,
48
+ 0x25, 0xf2, 0x46, 0x5c, 0xbe, 0x13, 0x31, 0x53, 0xa6, 0x64, 0x79, 0x47,
49
+ 0x1d, 0xdf, 0x01, 0xf1, 0xf7, 0x50, 0x22, 0x70, 0x1d, 0xe7, 0x85, 0x44,
50
+ 0xc6, 0x3b, 0x1c, 0x90, 0xca, 0x2a, 0x83, 0xc7, 0x54, 0x2f, 0xaa, 0xf5,
51
+ 0x6b, 0x17, 0x38, 0x0f, 0x2a, 0xb1, 0x83, 0x94, 0x79, 0x13, 0xcc, 0x95,
52
+ 0x40, 0xc0, 0xfa, 0x58, 0xfb, 0xe5, 0xc0, 0xb5, 0x8f, 0xdf, 0x18, 0x07,
53
+ 0x03, 0x7d, 0x2d, 0xb7, 0x78, 0x18, 0x80, 0x12, 0x55, 0x8c, 0x56, 0x0b,
54
+ 0x2e, 0x75, 0xce, 0x7a, 0xcf, 0xa0, 0xf9, 0x98, 0x4f, 0x68, 0xdb, 0x81,
55
+ 0x27, 0x2d, 0x17, 0x2c, 0x0b, 0x0f, 0xb9, 0xd9, 0x37, 0x85, 0x21, 0x92,
56
+ 0xd1, 0x1a, 0xb6, 0x72, 0x00, 0x74, 0x8e, 0x28, 0xcf, 0x88, 0xfe, 0x18,
57
+ 0x88, 0x02, 0x2c, 0xff, 0xc8, 0xef, 0xf9, 0xf1, 0xf1, 0xab, 0x02, 0xad,
58
+ 0xa9, 0x66, 0x97, 0x25, 0xb9, 0x9d, 0xce, 0xab, 0xa6, 0x5d, 0xbb, 0xf0,
59
+ 0x1d, 0x0e, 0x1b, 0x2a, 0x80, 0x67, 0xa8, 0x7d, 0x03, 0xab, 0x07, 0x5a,
60
+ 0x48, 0xf5, 0x6e, 0x67, 0x9d, 0x9c, 0xdb, 0xce, 0x79, 0x4e, 0x35, 0x22,
61
+ 0x64, 0x97, 0x75, 0xe6, 0x32, 0x70, 0xf0, 0x32, 0xc3, 0x7c, 0x02, 0x5b,
62
+ 0x6e, 0x82, 0x89, 0xa3, 0xd1, 0x33, 0x69, 0x0f, 0xf8, 0x1a, 0x3e, 0x35,
63
+ 0x35, 0x0e, 0xe0, 0x54, 0x0f, 0x49, 0x00, 0xdc, 0x57, 0x89, 0x7b, 0x8b,
64
+ 0x1c, 0x3b, 0xcc, 0x18, 0x81, 0x39, 0xfc, 0x80, 0x61, 0xc9, 0xc7, 0xd6,
65
+ 0x9e, 0x5b, 0xfe, 0x54, 0x3b, 0x15, 0x9e, 0x9c, 0x8e, 0xe4, 0xb1, 0x77,
66
+ 0x7a, 0x81, 0xfd, 0xc0, 0x75, 0x3b, 0xd9, 0xb3, 0x98, 0x4c, 0xa4, 0x53,
67
+ 0xd0, 0xc3, 0xa8, 0x70, 0x95, 0x86, 0x1e, 0xc4, 0x77, 0xa4, 0x2f, 0x13,
68
+ 0xe6, 0x36, 0x51, 0x1a
69
69
  };
70
70
  unsigned int cert_der_len = 796;
@@ -1,103 +1,103 @@
1
1
  unsigned char cert_key_der[] = {
2
2
  0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00,
3
- 0xbf, 0xcd, 0xca, 0x15, 0x60, 0x85, 0x47, 0xb7, 0x3d, 0x38, 0x00, 0xe2,
4
- 0x1f, 0xcc, 0xc9, 0x15, 0x7f, 0xb1, 0x58, 0xc8, 0x33, 0x8e, 0x74, 0x52,
5
- 0x1e, 0xcc, 0x5f, 0xe0, 0xa4, 0x11, 0x92, 0x47, 0x66, 0xb6, 0x33, 0x0c,
6
- 0xd0, 0xde, 0x39, 0xf6, 0xd0, 0x7b, 0x78, 0x6c, 0x13, 0xf8, 0xfd, 0x2b,
7
- 0xf0, 0x67, 0xbf, 0xd4, 0x54, 0xb9, 0x10, 0xf3, 0x1c, 0xa5, 0xe5, 0x10,
8
- 0x4f, 0x14, 0x63, 0x5e, 0x62, 0x19, 0x4b, 0xf8, 0x6e, 0x38, 0xfd, 0x31,
9
- 0xb9, 0x64, 0xb3, 0xb1, 0xe1, 0xe5, 0x80, 0x59, 0xef, 0x85, 0x21, 0x02,
10
- 0x73, 0x95, 0x3a, 0xe0, 0xc5, 0x4c, 0xbb, 0xc8, 0x72, 0x96, 0x0d, 0x17,
11
- 0xae, 0x89, 0xa8, 0x6a, 0xf9, 0xb0, 0xf0, 0xaf, 0xf7, 0xda, 0xbe, 0x13,
12
- 0x43, 0xb2, 0xce, 0xa5, 0x52, 0x3d, 0x16, 0xf1, 0x1a, 0x19, 0xad, 0xb1,
13
- 0x9f, 0xfb, 0x06, 0x00, 0x91, 0xff, 0xf5, 0x06, 0x38, 0x63, 0x6f, 0x09,
14
- 0x52, 0x97, 0x98, 0x86, 0xfe, 0xab, 0xb8, 0xe4, 0x27, 0x03, 0xdb, 0x8b,
15
- 0x5a, 0x2d, 0xcd, 0x65, 0x5f, 0x48, 0x09, 0xb8, 0xa7, 0xba, 0xf3, 0xf3,
16
- 0xa2, 0xe9, 0xbc, 0x35, 0x6f, 0x34, 0xf0, 0x38, 0xc8, 0x14, 0x28, 0x8c,
17
- 0x98, 0x28, 0x9f, 0xb4, 0x50, 0xfd, 0xb4, 0x9c, 0xf0, 0xb6, 0x5f, 0x4e,
18
- 0x4c, 0xdb, 0x84, 0x98, 0xce, 0xb1, 0x54, 0xb3, 0x57, 0xbd, 0x12, 0x0c,
19
- 0x09, 0x21, 0x7f, 0x44, 0x37, 0xbf, 0xb3, 0x44, 0xc2, 0x30, 0x61, 0x99,
20
- 0x2f, 0x67, 0x1a, 0x19, 0xc0, 0x67, 0xa5, 0x82, 0xe7, 0xd6, 0x08, 0x6f,
21
- 0x26, 0x64, 0x8f, 0x56, 0x66, 0xd5, 0x8a, 0x08, 0x54, 0x6c, 0xad, 0xf8,
22
- 0x7c, 0x1a, 0x18, 0xdb, 0xc0, 0xf1, 0x5d, 0x4f, 0x68, 0xe5, 0x93, 0x52,
23
- 0x4a, 0x58, 0x67, 0x7d, 0x7c, 0x2c, 0xb7, 0x59, 0x16, 0x6e, 0x67, 0xab,
24
- 0x10, 0xe2, 0xab, 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01,
25
- 0x00, 0x15, 0x12, 0x66, 0xc1, 0x32, 0x79, 0x72, 0x07, 0x8f, 0x92, 0x37,
26
- 0x86, 0xa0, 0x37, 0xbf, 0x5f, 0xbd, 0x47, 0x9e, 0x99, 0x60, 0x10, 0xa6,
27
- 0x76, 0xdf, 0x2b, 0x54, 0xdd, 0x39, 0x29, 0x35, 0x08, 0xe3, 0x1f, 0xe1,
28
- 0x3b, 0xe7, 0x36, 0x82, 0xe7, 0xba, 0xbf, 0xd5, 0xdb, 0x09, 0xd6, 0xb0,
29
- 0xf9, 0xc2, 0xcf, 0xa3, 0x23, 0x90, 0xab, 0x44, 0x51, 0x71, 0x34, 0x48,
30
- 0x96, 0x22, 0x19, 0xfb, 0x50, 0xc3, 0x36, 0x44, 0x42, 0x66, 0xd9, 0x9b,
31
- 0xf7, 0x7a, 0x86, 0xb5, 0xb7, 0x35, 0x3a, 0x21, 0x7f, 0xbf, 0xf0, 0xc0,
32
- 0x4f, 0xa4, 0xa3, 0x20, 0x74, 0xd1, 0x38, 0x3c, 0xe9, 0x28, 0xad, 0x93,
33
- 0x82, 0xa6, 0x8a, 0x39, 0x16, 0x87, 0x98, 0x08, 0xd9, 0x4c, 0x41, 0x9b,
34
- 0xe0, 0x41, 0xef, 0xc3, 0x04, 0x26, 0xa4, 0xcf, 0x80, 0x6d, 0x7d, 0xa4,
35
- 0xb7, 0x7e, 0xfb, 0xf5, 0x0c, 0xda, 0xfd, 0x63, 0xcd, 0xba, 0x67, 0x0e,
36
- 0xaa, 0xf7, 0x80, 0x6d, 0x99, 0x28, 0x7d, 0xca, 0x64, 0x34, 0x87, 0xbc,
37
- 0x8f, 0x90, 0xed, 0x26, 0x38, 0x20, 0x29, 0x65, 0xfa, 0xa7, 0x36, 0x18,
38
- 0xf8, 0xf3, 0x32, 0xd9, 0xcc, 0x04, 0x71, 0xc1, 0x60, 0xdf, 0xdc, 0xb7,
39
- 0xf7, 0x40, 0xed, 0xac, 0x4b, 0x3a, 0x3a, 0x06, 0xb0, 0xde, 0xbd, 0x77,
40
- 0xb5, 0xde, 0x3d, 0x7c, 0x6b, 0x04, 0x81, 0x3b, 0xe1, 0x62, 0xeb, 0x64,
41
- 0x4b, 0x90, 0xe7, 0x79, 0x4c, 0xb2, 0x3f, 0x55, 0x31, 0x3d, 0xff, 0xf4,
42
- 0x68, 0x44, 0xf0, 0xff, 0xe1, 0x46, 0x31, 0x8e, 0x08, 0x6f, 0x3c, 0x2b,
43
- 0x05, 0xb4, 0x6d, 0x06, 0x44, 0x23, 0x32, 0x08, 0x43, 0xb8, 0x57, 0x49,
44
- 0x55, 0xfd, 0x34, 0xe2, 0x5a, 0x53, 0x54, 0x5d, 0xe4, 0x5b, 0xae, 0x48,
45
- 0xfd, 0xeb, 0x6a, 0x31, 0xdb, 0xe0, 0x7b, 0x81, 0x7a, 0xd7, 0x06, 0x16,
46
- 0x33, 0x81, 0xda, 0x46, 0x81, 0x02, 0x81, 0x81, 0x00, 0xe7, 0xd6, 0xb7,
47
- 0x46, 0x5f, 0x23, 0x66, 0x18, 0xc7, 0xd9, 0x4b, 0x39, 0xe8, 0x0b, 0x61,
48
- 0xdb, 0x4c, 0xa5, 0x7f, 0x19, 0xe9, 0xd1, 0xbd, 0x8b, 0x14, 0xde, 0x42,
49
- 0xee, 0x66, 0x08, 0x4e, 0x25, 0x5d, 0x7c, 0x9c, 0x0c, 0x3f, 0x00, 0xcf,
50
- 0x98, 0x36, 0x70, 0x82, 0x45, 0x8d, 0x6e, 0x7a, 0xdd, 0xf4, 0x40, 0xa0,
51
- 0x7f, 0x80, 0x5e, 0xc7, 0x07, 0x87, 0x17, 0xa5, 0xa9, 0xc1, 0x54, 0x7a,
52
- 0xfb, 0xfc, 0xe2, 0x53, 0xb6, 0x8d, 0xd1, 0xe9, 0x4b, 0x2e, 0xc8, 0x14,
53
- 0xe0, 0xb8, 0xa9, 0x7c, 0x2c, 0x70, 0xf9, 0x18, 0x6a, 0xaf, 0x9e, 0x76,
54
- 0xd5, 0x3d, 0x55, 0x11, 0x5f, 0xb5, 0x13, 0x6f, 0x66, 0x20, 0x9a, 0x76,
55
- 0x58, 0x6a, 0x14, 0xb4, 0x00, 0x2f, 0xe3, 0x41, 0x9b, 0x8b, 0xf9, 0xdf,
56
- 0x64, 0xec, 0x53, 0xc5, 0x95, 0xc3, 0x82, 0x9d, 0x11, 0x82, 0xb5, 0xc9,
57
- 0xfd, 0x7c, 0x62, 0xfa, 0x5b, 0x02, 0x81, 0x81, 0x00, 0xd3, 0xca, 0xf9,
58
- 0x1c, 0x9d, 0xb7, 0x25, 0x01, 0x57, 0x00, 0x67, 0xe7, 0xb9, 0x6d, 0x0f,
59
- 0x0b, 0xbb, 0xba, 0xae, 0xd1, 0x7d, 0x5f, 0x52, 0xdc, 0x52, 0x8d, 0x0a,
60
- 0x5e, 0xb0, 0x83, 0xab, 0x8b, 0x03, 0x02, 0x13, 0xcb, 0xc7, 0xbd, 0x2a,
61
- 0xbb, 0xbe, 0xd7, 0x80, 0xab, 0xf8, 0xd9, 0x26, 0x04, 0x32, 0x90, 0x40,
62
- 0xf6, 0xfa, 0x72, 0xb0, 0xbf, 0xe5, 0x50, 0xda, 0x2e, 0x0a, 0x01, 0xee,
63
- 0xfe, 0x3a, 0x37, 0xfb, 0x0c, 0xaf, 0x30, 0xa7, 0x40, 0x92, 0xcb, 0xc5,
64
- 0x08, 0x58, 0x42, 0x90, 0xc2, 0xff, 0x1e, 0x30, 0x02, 0xb2, 0xee, 0xf4,
65
- 0x85, 0x73, 0x34, 0x16, 0xf4, 0x15, 0x18, 0x2a, 0xed, 0x46, 0x34, 0x01,
66
- 0xad, 0x7d, 0xb9, 0x2d, 0xb4, 0x1c, 0x7a, 0xb8, 0xf9, 0x7e, 0xf5, 0xc6,
67
- 0xd5, 0xe2, 0xd9, 0x7e, 0x6b, 0x0d, 0x2a, 0x9a, 0x0d, 0xd1, 0x20, 0xd2,
68
- 0x3e, 0x5c, 0x41, 0xf4, 0x03, 0x02, 0x81, 0x81, 0x00, 0x99, 0x35, 0xce,
69
- 0x5c, 0x95, 0x16, 0xe1, 0xab, 0xd2, 0xb6, 0x88, 0xfe, 0x35, 0x99, 0x00,
70
- 0x0c, 0x5a, 0xf4, 0xab, 0xb0, 0x46, 0x53, 0x33, 0x7d, 0xac, 0x46, 0xcd,
71
- 0xd8, 0x9a, 0x59, 0x36, 0xbb, 0x7e, 0xb2, 0x90, 0xb5, 0x8f, 0x15, 0x4c,
72
- 0x1b, 0x7d, 0x2e, 0x91, 0x08, 0xc1, 0xd4, 0x97, 0x22, 0x02, 0xfe, 0x8a,
73
- 0x92, 0x78, 0x15, 0x2a, 0x56, 0x91, 0x32, 0x51, 0x6a, 0x83, 0xb6, 0xfe,
74
- 0xa7, 0x74, 0x91, 0x65, 0x5d, 0x29, 0x0f, 0xe5, 0xaa, 0xa7, 0xb9, 0xd6,
75
- 0x02, 0x44, 0x46, 0xcd, 0x26, 0xd9, 0x69, 0xe4, 0x76, 0xec, 0xa4, 0x3e,
76
- 0x47, 0xe1, 0x86, 0x4c, 0x3b, 0x01, 0x81, 0x5c, 0x87, 0x13, 0x58, 0xc0,
77
- 0x88, 0xe1, 0x61, 0xd9, 0x2a, 0x9e, 0x7b, 0x02, 0xaa, 0x76, 0xb0, 0xa4,
78
- 0xaf, 0x1f, 0x76, 0xa5, 0x06, 0xb9, 0xf3, 0xa1, 0x35, 0x27, 0x3a, 0x57,
79
- 0xc8, 0x4a, 0xe1, 0x66, 0x2d, 0x02, 0x81, 0x80, 0x28, 0x0c, 0xc4, 0xe8,
80
- 0xc5, 0x66, 0x41, 0xa8, 0x2c, 0x34, 0x96, 0x71, 0x7a, 0x5e, 0x06, 0x2f,
81
- 0x58, 0xd3, 0xa7, 0x85, 0x53, 0xe8, 0xf7, 0xb9, 0x54, 0x1e, 0xf9, 0xac,
82
- 0x08, 0x43, 0x0d, 0xe8, 0x5e, 0xac, 0x40, 0xe4, 0x13, 0x24, 0x51, 0x75,
83
- 0x69, 0x54, 0x45, 0x2f, 0xc0, 0x02, 0x08, 0x2f, 0x59, 0x04, 0x70, 0x54,
84
- 0x83, 0xed, 0xb6, 0x40, 0xc3, 0x73, 0x73, 0x9e, 0xab, 0x23, 0xcc, 0x76,
85
- 0xe4, 0xb9, 0x7b, 0x4e, 0xdd, 0xbe, 0x1c, 0x92, 0x98, 0x6f, 0xd2, 0x15,
86
- 0x8e, 0xe3, 0x1f, 0x8e, 0xd0, 0x41, 0x7c, 0x20, 0xb6, 0x87, 0x7b, 0x53,
87
- 0xd5, 0x02, 0x2f, 0xa8, 0xfe, 0x68, 0x30, 0x8d, 0xe7, 0xed, 0xa3, 0xb7,
88
- 0x94, 0x03, 0xb5, 0x81, 0xce, 0xb4, 0xe2, 0x4f, 0xc3, 0xd3, 0x64, 0x43,
89
- 0x43, 0xff, 0x8e, 0xe9, 0x5d, 0x77, 0x05, 0xe4, 0xc0, 0xfc, 0x2c, 0xe5,
90
- 0xbf, 0xfa, 0x74, 0xd3, 0x02, 0x81, 0x80, 0x7b, 0xb4, 0xa2, 0x42, 0x72,
91
- 0xec, 0x25, 0x6a, 0x80, 0xdc, 0xbd, 0x45, 0x57, 0x6c, 0x28, 0xb9, 0x7b,
92
- 0x22, 0x70, 0x17, 0x04, 0x2d, 0x50, 0xf4, 0x74, 0x52, 0xd7, 0xc6, 0x90,
93
- 0x8a, 0x04, 0x5b, 0x0a, 0xf0, 0x21, 0x8d, 0x14, 0xe6, 0x06, 0x65, 0x1d,
94
- 0x65, 0xab, 0xee, 0xd2, 0x5a, 0x85, 0x2b, 0xde, 0xc7, 0x4a, 0x79, 0x77,
95
- 0x18, 0x1b, 0xd6, 0xe7, 0x64, 0xdb, 0xea, 0xfc, 0xc1, 0x34, 0xcc, 0xdc,
96
- 0xfa, 0xf1, 0x79, 0x95, 0xc3, 0x53, 0x40, 0x1f, 0xfe, 0x48, 0xf8, 0x13,
97
- 0x81, 0x41, 0xf2, 0x77, 0xcb, 0x0c, 0x88, 0xb4, 0xc1, 0xa8, 0xcf, 0x59,
98
- 0x1b, 0xba, 0xf3, 0x1a, 0x1d, 0xa2, 0xfc, 0x02, 0x00, 0xa2, 0xf7, 0x2a,
99
- 0x90, 0x3a, 0x02, 0xf0, 0x23, 0x13, 0xb8, 0xe7, 0xde, 0x58, 0x5d, 0xe1,
100
- 0x74, 0xbf, 0xdc, 0x62, 0xcf, 0xf4, 0x18, 0x78, 0x15, 0xbd, 0xd5, 0x4d,
101
- 0x6e, 0xfd, 0xbb
3
+ 0xb0, 0xb5, 0x71, 0x62, 0xfe, 0x5b, 0xb7, 0xc2, 0xbc, 0x0e, 0x37, 0xf4,
4
+ 0xa3, 0x73, 0x29, 0x2e, 0x6e, 0x19, 0x53, 0x60, 0xeb, 0xfe, 0x18, 0x78,
5
+ 0xda, 0xf6, 0xbd, 0xc2, 0x2c, 0xdf, 0x1e, 0x45, 0x08, 0xef, 0x98, 0xe8,
6
+ 0x14, 0x43, 0xb2, 0x82, 0x48, 0xa8, 0x85, 0xc1, 0x96, 0x19, 0x6c, 0x15,
7
+ 0xee, 0x76, 0x4f, 0x7b, 0xe7, 0xcd, 0x49, 0x57, 0x8d, 0xb8, 0xde, 0x3b,
8
+ 0xe6, 0xb2, 0x4b, 0xea, 0x88, 0xd8, 0x5d, 0x4f, 0x55, 0x97, 0x00, 0x22,
9
+ 0x4f, 0xcf, 0x05, 0x84, 0xfe, 0x00, 0x25, 0x3c, 0xeb, 0x74, 0x99, 0x7a,
10
+ 0xc9, 0xd4, 0x5b, 0x56, 0x02, 0xc1, 0x08, 0x54, 0x7b, 0xc6, 0xec, 0x9a,
11
+ 0x0e, 0x60, 0x75, 0xe6, 0xbc, 0xde, 0x51, 0x17, 0xfe, 0x5d, 0x5e, 0xef,
12
+ 0x68, 0x83, 0x80, 0x83, 0xa2, 0xcb, 0x3a, 0x30, 0x0d, 0xdd, 0x90, 0xb9,
13
+ 0x1d, 0xca, 0x04, 0x71, 0x61, 0xb6, 0x1a, 0x9f, 0xad, 0x66, 0x91, 0x8c,
14
+ 0x30, 0xc1, 0x52, 0x00, 0xc5, 0x7e, 0xda, 0x8a, 0xef, 0xb7, 0x68, 0x74,
15
+ 0x99, 0x38, 0x89, 0x93, 0xba, 0x85, 0x71, 0x31, 0x24, 0xa8, 0x1a, 0x04,
16
+ 0xdd, 0x41, 0x0b, 0x51, 0xb5, 0x24, 0x51, 0x79, 0x8a, 0x34, 0x7b, 0x82,
17
+ 0xa9, 0xfa, 0xd9, 0x01, 0x62, 0x8a, 0x92, 0x67, 0x40, 0x37, 0xc2, 0x0d,
18
+ 0xee, 0xbe, 0xc2, 0xa4, 0x3d, 0x63, 0x7f, 0xe5, 0x3f, 0x23, 0xd5, 0x08,
19
+ 0x1c, 0x0b, 0x67, 0x14, 0x2a, 0xc4, 0x5f, 0xd2, 0xdf, 0x53, 0x72, 0x24,
20
+ 0xc9, 0x55, 0xe4, 0xd4, 0x4b, 0x92, 0x78, 0x68, 0x17, 0x51, 0xa5, 0x0d,
21
+ 0x3a, 0xe9, 0xde, 0x59, 0xfa, 0x92, 0x30, 0x12, 0xc7, 0x72, 0x4b, 0xf3,
22
+ 0x3b, 0xbf, 0x7d, 0x95, 0x55, 0x48, 0x8e, 0x68, 0x8a, 0xf7, 0x49, 0x66,
23
+ 0x77, 0x77, 0xb2, 0xd5, 0x1b, 0x09, 0xa1, 0xa6, 0xf4, 0x2c, 0xec, 0x4f,
24
+ 0xdf, 0xf1, 0xf4, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01,
25
+ 0x00, 0x61, 0x09, 0x01, 0xde, 0xae, 0x76, 0x87, 0x0e, 0x34, 0x5e, 0x4a,
26
+ 0x73, 0xd8, 0x5d, 0xa0, 0xbb, 0x92, 0x51, 0xed, 0xeb, 0x47, 0x2c, 0x1d,
27
+ 0x1c, 0x20, 0x81, 0x65, 0xea, 0x7e, 0xe1, 0x76, 0xa9, 0xca, 0x22, 0x68,
28
+ 0x00, 0xe9, 0x3f, 0xd3, 0x82, 0x9f, 0x8b, 0x8b, 0x07, 0xa6, 0xf9, 0x06,
29
+ 0xd5, 0x74, 0x41, 0x1b, 0x9c, 0x9a, 0xc9, 0xac, 0x00, 0x9c, 0x1e, 0x6c,
30
+ 0x4a, 0xd0, 0x80, 0x10, 0x18, 0x16, 0x55, 0x59, 0xc7, 0xfa, 0xe4, 0x14,
31
+ 0x7a, 0xc3, 0x00, 0x97, 0xb3, 0x54, 0x17, 0x98, 0x5b, 0x3f, 0xa0, 0xa3,
32
+ 0xb7, 0x3d, 0xa5, 0x93, 0x12, 0x44, 0x28, 0xe3, 0xfe, 0x20, 0x8a, 0x37,
33
+ 0xda, 0xd1, 0x12, 0x3f, 0x2c, 0x19, 0x82, 0xab, 0x5d, 0x55, 0x9c, 0xc8,
34
+ 0x49, 0x07, 0x47, 0x4f, 0x06, 0xfa, 0x1a, 0x47, 0x35, 0xa4, 0x27, 0x8b,
35
+ 0x15, 0x5c, 0x3a, 0x56, 0xfe, 0x3b, 0xfd, 0xd7, 0xd7, 0xf4, 0xe1, 0xe0,
36
+ 0x79, 0xb0, 0x31, 0xc9, 0xa3, 0x85, 0x18, 0x34, 0x31, 0x57, 0x70, 0xd0,
37
+ 0x90, 0xc6, 0xf0, 0x23, 0x66, 0x69, 0x2b, 0x25, 0x88, 0x98, 0x8d, 0x33,
38
+ 0xe8, 0xdf, 0x4d, 0x65, 0xa1, 0x3b, 0xe0, 0xc9, 0x17, 0x08, 0x0a, 0x91,
39
+ 0x69, 0x66, 0x42, 0x72, 0xd4, 0x0e, 0x21, 0xac, 0xb3, 0x7b, 0x15, 0x0c,
40
+ 0xcb, 0x12, 0x4f, 0xfb, 0x17, 0x3b, 0x30, 0x2f, 0xc3, 0x29, 0xfb, 0x6f,
41
+ 0xa6, 0x6c, 0xd9, 0xcb, 0x95, 0xb2, 0xbd, 0x8a, 0x4e, 0x95, 0xc0, 0xc4,
42
+ 0xe5, 0xa0, 0x34, 0xef, 0x02, 0x27, 0x3a, 0x5e, 0x14, 0x7d, 0xeb, 0x85,
43
+ 0x10, 0xc8, 0x0f, 0xa3, 0x04, 0x18, 0xdb, 0x8f, 0x7f, 0x18, 0x54, 0x69,
44
+ 0x5a, 0x17, 0x0b, 0x25, 0x91, 0x9d, 0xf8, 0x52, 0x42, 0x83, 0x1e, 0x33,
45
+ 0xef, 0xaa, 0x74, 0x0f, 0x11, 0x30, 0xa4, 0x2a, 0x89, 0x18, 0x59, 0xca,
46
+ 0x66, 0xd3, 0xfe, 0x28, 0x01, 0x02, 0x81, 0x81, 0x00, 0xe7, 0x54, 0x64,
47
+ 0x56, 0x50, 0x22, 0x66, 0xa8, 0x85, 0x9d, 0xef, 0x48, 0x82, 0x50, 0x74,
48
+ 0xbd, 0xc3, 0x52, 0x70, 0x1e, 0x74, 0xc0, 0x2d, 0xbf, 0x80, 0x55, 0x74,
49
+ 0x8e, 0x71, 0xf8, 0xa0, 0xec, 0xea, 0x23, 0x4c, 0x71, 0x0c, 0x3f, 0xdb,
50
+ 0x93, 0x63, 0xd8, 0x03, 0xfa, 0xd8, 0x09, 0xd0, 0x46, 0xe4, 0x00, 0xbd,
51
+ 0x95, 0xbc, 0xe2, 0xca, 0xfd, 0x24, 0xa8, 0x6d, 0xf3, 0x35, 0x0e, 0xe0,
52
+ 0xf0, 0x85, 0xf8, 0x3f, 0x3a, 0xf0, 0x7e, 0xb7, 0x8f, 0x98, 0x37, 0x12,
53
+ 0xf0, 0x03, 0xbc, 0x57, 0xd5, 0xf6, 0xf9, 0xbd, 0x81, 0x40, 0x91, 0x57,
54
+ 0xd4, 0x66, 0x4e, 0x64, 0x74, 0x14, 0xb3, 0xf9, 0x65, 0x99, 0x70, 0x85,
55
+ 0xac, 0xce, 0xc5, 0x49, 0x5b, 0x31, 0x24, 0xc4, 0xa0, 0xd6, 0x5e, 0xda,
56
+ 0x2c, 0x9c, 0xdf, 0xdd, 0xc5, 0x49, 0xb1, 0x7f, 0x8a, 0x7b, 0x63, 0x57,
57
+ 0xb0, 0x71, 0x35, 0x01, 0x01, 0x02, 0x81, 0x81, 0x00, 0xc3, 0x8d, 0xd3,
58
+ 0xe5, 0x8c, 0x16, 0x7f, 0x86, 0x03, 0x30, 0x35, 0xff, 0x38, 0xc6, 0x87,
59
+ 0x59, 0xae, 0x50, 0x1a, 0x26, 0xbc, 0x53, 0xb6, 0x8a, 0xb9, 0x31, 0xfa,
60
+ 0x5a, 0xb5, 0xe6, 0xc1, 0x4d, 0x40, 0x38, 0x45, 0x32, 0xb5, 0xa8, 0x2f,
61
+ 0xe9, 0x6a, 0x30, 0x32, 0x9f, 0x04, 0xd0, 0x68, 0xbe, 0x90, 0xcb, 0x43,
62
+ 0x68, 0xa3, 0x06, 0xfa, 0xd1, 0x14, 0x11, 0x85, 0x46, 0x1b, 0xbb, 0xb5,
63
+ 0xd9, 0xa3, 0x72, 0x54, 0xb9, 0x57, 0xba, 0x32, 0x76, 0x70, 0x00, 0xf3,
64
+ 0xb0, 0xae, 0x4e, 0x68, 0xd5, 0xc4, 0x87, 0xd8, 0xfc, 0x52, 0x53, 0x96,
65
+ 0x1e, 0x6a, 0xd0, 0x09, 0x81, 0xc4, 0xfa, 0x4b, 0x8a, 0xf3, 0x6c, 0x7e,
66
+ 0x44, 0xd4, 0x57, 0x78, 0xbd, 0x1e, 0x2d, 0xdb, 0xf8, 0x6f, 0xee, 0x57,
67
+ 0xf7, 0x41, 0x33, 0x2e, 0x0e, 0x8a, 0x16, 0x03, 0x1d, 0xac, 0xc0, 0x91,
68
+ 0xcd, 0x2b, 0x61, 0x71, 0x83, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x0f, 0x24,
69
+ 0xda, 0xac, 0x5e, 0x02, 0xd2, 0x99, 0xa6, 0x05, 0x4a, 0xeb, 0x2c, 0xfb,
70
+ 0x06, 0x36, 0x10, 0x34, 0xd7, 0x76, 0xcb, 0xa6, 0x5a, 0xd5, 0xd0, 0xa8,
71
+ 0xb1, 0xe2, 0x2b, 0x12, 0x58, 0x0f, 0x1f, 0xd0, 0xe5, 0xad, 0xfa, 0x6d,
72
+ 0x4a, 0x43, 0xca, 0x0f, 0xb8, 0x9a, 0x06, 0x8c, 0xea, 0xaa, 0xe5, 0x8f,
73
+ 0xf3, 0x41, 0x5c, 0x2e, 0x68, 0xe6, 0xaf, 0x00, 0xf4, 0xdf, 0x45, 0x9c,
74
+ 0x62, 0xa4, 0x25, 0xd6, 0xa1, 0x9d, 0xd3, 0x25, 0x58, 0xa2, 0xa3, 0x47,
75
+ 0x75, 0x23, 0x73, 0xcb, 0x6b, 0x9a, 0x5c, 0x31, 0x95, 0x52, 0xfb, 0x92,
76
+ 0x27, 0x94, 0xd3, 0x51, 0x08, 0x2f, 0xa4, 0xd7, 0x8e, 0x28, 0x5d, 0x28,
77
+ 0x6f, 0x4c, 0x02, 0x1b, 0x90, 0xec, 0x74, 0x35, 0xe3, 0x47, 0x4e, 0x27,
78
+ 0x48, 0x11, 0xf5, 0xe9, 0xad, 0xdd, 0x29, 0xd6, 0xb2, 0x27, 0xe4, 0xee,
79
+ 0x53, 0x9c, 0x6f, 0xb1, 0x01, 0x02, 0x81, 0x80, 0x18, 0x03, 0xa2, 0xb1,
80
+ 0xdd, 0xb2, 0x25, 0x96, 0xdf, 0x6d, 0x5c, 0x34, 0x2b, 0x54, 0xb5, 0xea,
81
+ 0x5d, 0x6d, 0x98, 0xc8, 0x88, 0xf7, 0xfe, 0xc2, 0xaa, 0x5b, 0x68, 0xd3,
82
+ 0x1a, 0xe3, 0x6b, 0x79, 0x81, 0x19, 0x67, 0xe6, 0x02, 0x48, 0xd5, 0x19,
83
+ 0x64, 0xe0, 0xe6, 0x56, 0x80, 0xd0, 0xd7, 0x0c, 0x0f, 0xdb, 0xe6, 0x3b,
84
+ 0x43, 0x49, 0xe8, 0x23, 0x24, 0xc3, 0xc2, 0x0a, 0x09, 0xfd, 0xd3, 0x27,
85
+ 0x16, 0xdb, 0x43, 0x6c, 0x3f, 0x49, 0xae, 0x48, 0xbd, 0x18, 0x60, 0xd4,
86
+ 0xa1, 0x93, 0x1f, 0x6c, 0xa0, 0xe5, 0xcd, 0xcf, 0xae, 0x8c, 0x75, 0x32,
87
+ 0xe7, 0x0b, 0x05, 0x1f, 0xda, 0x80, 0xa2, 0x26, 0x3e, 0x1e, 0x64, 0xa3,
88
+ 0x2f, 0x30, 0x4e, 0xb3, 0x6a, 0xb1, 0x57, 0x01, 0xfb, 0x3c, 0xd9, 0xb0,
89
+ 0x93, 0x61, 0x25, 0x96, 0xc3, 0x7e, 0x50, 0x83, 0xa4, 0x63, 0x41, 0x84,
90
+ 0x60, 0x7f, 0x66, 0xe1, 0x02, 0x81, 0x80, 0x65, 0x47, 0x60, 0x82, 0x1e,
91
+ 0x4c, 0x1a, 0x29, 0x18, 0xca, 0x78, 0xf8, 0x8d, 0x22, 0xad, 0x4d, 0xcf,
92
+ 0x36, 0xa7, 0x82, 0x79, 0xda, 0x37, 0x0c, 0x0c, 0x2d, 0x8c, 0x15, 0xd2,
93
+ 0xd9, 0x45, 0x37, 0xbb, 0xf3, 0x2c, 0xa3, 0xce, 0xad, 0x88, 0xdc, 0x5d,
94
+ 0xae, 0x08, 0x00, 0xf3, 0x3a, 0xdd, 0xa7, 0x8f, 0xe6, 0xd8, 0x7e, 0xf8,
95
+ 0x73, 0xe1, 0x2e, 0x92, 0x40, 0xdd, 0xdc, 0x6d, 0xdd, 0xe3, 0x1c, 0x31,
96
+ 0xbf, 0x7e, 0x9e, 0x8d, 0xb2, 0xf5, 0xb4, 0x85, 0x45, 0xf5, 0x9f, 0xd1,
97
+ 0x7b, 0x16, 0x7e, 0x15, 0x5b, 0x31, 0xbf, 0x4b, 0x62, 0xda, 0x33, 0x4d,
98
+ 0xc7, 0x9d, 0x07, 0xd5, 0x48, 0xdf, 0x22, 0x91, 0xc1, 0xdc, 0xfb, 0x1f,
99
+ 0x4a, 0x03, 0x10, 0x5f, 0x80, 0x2e, 0x2c, 0x91, 0x75, 0x52, 0x84, 0xd8,
100
+ 0x3c, 0x10, 0x21, 0xf7, 0x13, 0x62, 0xfa, 0x87, 0x9e, 0x9c, 0x9d, 0xa5,
101
+ 0xfd, 0xf2, 0xc2
102
102
  };
103
103
  unsigned int cert_key_der_len = 1191;
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/ruby
2
+ require_relative '../lib/opcua/server'
3
+ #require 'opcua/server'
4
+
5
+ Daemonite.new do
6
+ on startup do |opts|
7
+ opts['server'] = OPCUA::Server.new
8
+ opts['server'].add_namespace "https://centurio.work/kelch"
9
+
10
+ t = opts['server'].types.add_object_type(:Test).tap{ |u|
11
+ u.add_object(:Measurements, opts['server'].types.folder).tap{ |v|
12
+ v.add_object(:BitRegister, opts['server'].types.folder).tap{ |w|
13
+ w.add_variable_rw :Wert do |node,value,external|
14
+ if external
15
+ p node.id
16
+ p value
17
+ end
18
+ end
19
+ }
20
+ }
21
+ }
22
+
23
+ v = opts['server'].objects.manifest(:Tester, t)
24
+
25
+ opts['mm'] = v.find :Measurements
26
+ opts['br'] = opts['mm'].find :BitRegister
27
+ opts['value'] = opts['br'].find :Wert
28
+ rescue => e
29
+ puts e.message
30
+ end
31
+
32
+ run do |opts|
33
+ opts['server'].run
34
+ opts['value'].value = rand
35
+ rescue => e
36
+ puts e.message
37
+ end
38
+
39
+ on exit do
40
+ # we could disconnect here, but OPCUA::Server does not have an explicit disconnect
41
+ puts 'bye.'
42
+ end
43
+ end.loop!
@@ -154,15 +154,15 @@ bool value_to_variant(VALUE value, UA_Variant *variant, UA_UInt32 proposal) { //
154
154
  case T_SYMBOL:
155
155
  {
156
156
  VALUE str = rb_obj_as_string(value);
157
- if (proposal == UA_TYPES_STRING) {
158
- UA_String tmp = UA_STRING(StringValuePtr(str));
159
- UA_Variant_setScalarCopy(variant, &tmp, &UA_TYPES[UA_TYPES_STRING]);
157
+ if (proposal == UA_TYPES_BYTESTRING) {
158
+ UA_ByteString tmp = UA_BYTESTRING(StringValuePtr(str));
159
+ UA_Variant_setScalarCopy(variant, &tmp, &UA_TYPES[UA_TYPES_BYTESTRING]);
160
160
  } else if (proposal == UA_TYPES_NODEID) {
161
161
  UA_NodeId tmp = UA_NODEID(StringValuePtr(str));
162
162
  UA_Variant_setScalarCopy(variant, &tmp, &UA_TYPES[UA_TYPES_NODEID]);
163
- } else if (proposal == UA_TYPES_BYTESTRING) {
164
- UA_ByteString tmp = UA_BYTESTRING(StringValuePtr(str));
165
- UA_Variant_setScalarCopy(variant, &tmp, &UA_TYPES[UA_TYPES_BYTESTRING]);
163
+ } else {
164
+ UA_String tmp = UA_STRING(StringValuePtr(str));
165
+ UA_Variant_setScalarCopy(variant, &tmp, &UA_TYPES[UA_TYPES_STRING]);
166
166
  }
167
167
  done = true;
168
168
  break;
@@ -190,6 +190,8 @@ void Init_types(VALUE mOPCUA) {/*{{{*/
190
190
  rb_define_const(mTYPES, "UINT32", INT2NUM(UA_TYPES_UINT32 ));
191
191
  rb_define_const(mTYPES, "UINT16", INT2NUM(UA_TYPES_UINT16 ));
192
192
  rb_define_const(mTYPES, "STRING", INT2NUM(UA_TYPES_STRING ));
193
+ rb_define_const(mTYPES, "BYTESTRING", INT2NUM(UA_TYPES_BYTESTRING ));
194
+ rb_define_const(mTYPES, "NODEID", INT2NUM(UA_TYPES_NODEID ));
193
195
  }/*}}}*/
194
196
 
195
197
  static VALUE UA_TYPES_DATETIME_to_value(UA_DateTime data) { //{{{
@@ -335,11 +335,56 @@ static VALUE node_add_method(int argc, VALUE* argv, VALUE self) { //{{{
335
335
  return node_wrap(CLASS_OF(self),node_alloc(parent->master,node_add_method_ua_simple(nstr,parent,opts,blk)));
336
336
  } //}}}
337
337
 
338
- static UA_NodeId node_add_variable_ua(UA_Int32 type, UA_NodeId n, UA_LocalizedText dn, UA_QualifiedName qn, node_struct *parent, UA_Byte accesslevelmask) { //{{{
338
+ static void node_add_variable_callback( //{{{
339
+ UA_Server *server,
340
+ const UA_NodeId *sessionId, void *sessionContext,
341
+ const UA_NodeId *nodeId, void *nodeContext,
342
+ const UA_NumericRange *range, const UA_DataValue *data
343
+ ) {
344
+ node_struct *me = (node_struct *)nodeContext;
345
+ UA_Guid internal = UA_GUID("00000001-0000-0000-0000-000000000000");
346
+
347
+ // if (sessionId->identifierType == UA_NODEIDTYPE_NUMERIC) {
348
+ // printf("sessionId ns=%d;i=%d\n", sessionId->namespaceIndex, sessionId->identifier.numeric);
349
+ // } else if(sessionId->identifierType == UA_NODEIDTYPE_STRING) {
350
+ // printf("sessionId ns=%d;s=%.*s\n", sessionId->namespaceIndex, (int)sessionId->identifier.string.length, sessionId->identifier.string.data);
351
+ // } else if(sessionId->identifierType == UA_NODEIDTYPE_GUID) {
352
+ // if (UA_Guid_equal(&(sessionId->identifier.guid),&internal)) {
353
+ // printf("sessionId internal session\n");
354
+ // } else {
355
+ // printf("sessionId ns=%d;g=%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",sessionId->namespaceIndex,UA_PRINTF_GUID_DATA(sessionId->identifier.guid));
356
+ // }
357
+ // } else if(sessionId->identifierType == UA_NODEIDTYPE_BYTESTRING) {
358
+ // printf("sessionId ns=%d;b=%.*s\n", sessionId->namespaceIndex, (int)sessionId->identifier.string.length, sessionId->identifier.string.data);
359
+ // } else if(UA_NodeId_isNull(sessionId)) {
360
+ // printf("sessionId is null");
361
+ // } else {
362
+ // printf("sessionId ns=%d;unsupported\n",sessionId->namespaceIndex);
363
+ // }
364
+
365
+ VALUE args = rb_ary_new();
366
+ rb_ary_push(args, Data_Wrap_Struct(cVarNode,NULL,NULL,me));
367
+ VALUE para = extract_value(data->value);
368
+ rb_ary_push(args,rb_ary_entry(para,0));
369
+ if (UA_Guid_equal(&(sessionId->identifier.guid),&internal)) {
370
+ rb_ary_push(args,Qfalse);
371
+ } else {
372
+ rb_ary_push(args,Qtrue);
373
+ }
374
+ if (me->method != Qnil) {
375
+ rb_proc_call(me->method,args);
376
+ }
377
+ } //}}}
378
+ static UA_NodeId node_add_variable_ua(UA_Int32 type, UA_NodeId n, UA_LocalizedText dn, UA_QualifiedName qn, node_struct *parent, UA_Byte accesslevelmask, VALUE blk) { //{{{
339
379
  UA_VariableAttributes vAttr = UA_VariableAttributes_default;
340
380
  vAttr.displayName = dn;
341
381
  vAttr.accessLevel = accesslevelmask;
342
382
 
383
+ node_struct *me = node_alloc(parent->master,n);
384
+ me->method = blk;
385
+ rb_gc_register_address(&blk);
386
+ rb_gc_register_address(&me->method);
387
+
343
388
  UA_Server_addVariableNode(parent->master->master,
344
389
  n,
345
390
  parent->id,
@@ -347,9 +392,13 @@ static UA_NodeId node_add_variable_ua(UA_Int32 type, UA_NodeId n, UA_LocalizedTe
347
392
  qn,
348
393
  UA_NODEID_NUMERIC(0, type),
349
394
  vAttr,
350
- NULL,
395
+ (void *)me,
351
396
  NULL);
352
397
 
398
+ UA_ValueCallback callback ;
399
+ callback.onWrite = node_add_variable_callback;
400
+ UA_Server_setVariableNode_valueCallback(parent->master->master, n, callback);
401
+
353
402
  UA_Server_addReference(parent->master->master,
354
403
  n,
355
404
  UA_NODEID_NUMERIC(0, UA_NS0ID_HASMODELLINGRULE),
@@ -357,15 +406,28 @@ static UA_NodeId node_add_variable_ua(UA_Int32 type, UA_NodeId n, UA_LocalizedTe
357
406
  true);
358
407
 
359
408
  return n;
360
- } //}}}
361
- static UA_NodeId node_add_variable_ua_simple(UA_Int32 type, char* nstr, node_struct *parent, UA_Byte accesslevelmask, bool numeric) { //{{{
409
+ } //}}}
410
+ static UA_NodeId node_add_variable_ua_simple(UA_Int32 type, VALUE str, node_struct *parent, UA_Byte accesslevelmask, bool numeric, VALUE blk) { //{{{
411
+ int nodeid = nodecounter++;
412
+ char *nstr = (char *)StringValuePtr(str);
413
+
414
+ UA_NodeId n;
415
+ if (numeric) {
416
+ n = UA_NODEID_NUMERIC(parent->master->default_ns,nodeid);
417
+ rb_hash_aset(parent->master->methods,INT2NUM(nodeid),blk);
418
+ } else {
419
+ n = UA_NODEID_STRING(parent->master->default_ns,nstr);
420
+ rb_hash_aset(parent->master->methods,str,blk);
421
+ }
422
+ rb_gc_register_address(&blk);
362
423
  return node_add_variable_ua(
363
424
  type,
364
- numeric ? UA_NODEID_NUMERIC(parent->master->default_ns,nodecounter++) : UA_NODEID_STRING(parent->master->default_ns,nstr),
425
+ n,
365
426
  UA_LOCALIZEDTEXT("en-US", nstr),
366
427
  UA_QUALIFIEDNAME(parent->master->default_ns, nstr),
367
428
  parent,
368
- accesslevelmask
429
+ accesslevelmask,
430
+ blk
369
431
  );
370
432
  } //}}}
371
433
  static VALUE node_add_variable_wrap(int argc, VALUE* argv, VALUE self, UA_Byte accesslevelmask, bool numeric) { //{{{
@@ -375,22 +437,28 @@ static VALUE node_add_variable_wrap(int argc, VALUE* argv, VALUE self, UA_Byte a
375
437
  rb_raise(rb_eArgError, "wrong number of arguments");
376
438
  }
377
439
 
440
+ Data_Get_Struct(self, node_struct, parent);
441
+ if (!parent->exists) rb_raise(rb_eRuntimeError, "Node does not exist anymore.");
442
+
443
+ VALUE name;
444
+ VALUE ttype;
445
+ VALUE blk;
446
+ rb_gc_register_address(&blk);
447
+
448
+ rb_scan_args(argc, argv, "11&", &name, &ttype, &blk);
449
+
378
450
  UA_UInt32 type;
379
- if (argc == 2 && argv[1] != Qnil) {
380
- type = NUM2INT(argv[1]);
381
- } else {
451
+ if (NIL_P(ttype)) {
382
452
  type = UA_NS0ID_BASEDATAVARIABLETYPE;
453
+ } else {
454
+ type = NUM2INT(ttype);
383
455
  }
384
456
 
385
- Data_Get_Struct(self, node_struct, parent);
386
- if (!parent->exists) rb_raise(rb_eRuntimeError, "Node does not exist anymore.");
387
-
388
- VALUE str = rb_obj_as_string(argv[0]);
457
+ VALUE str = rb_obj_as_string(name);
389
458
  if (NIL_P(str) || TYPE(str) != T_STRING)
390
459
  rb_raise(rb_eTypeError, "cannot convert obj to string");
391
- char *nstr = (char *)StringValuePtr(str);
392
460
 
393
- return node_wrap(cVarNode,node_alloc(parent->master,node_add_variable_ua_simple(type,nstr,parent,accesslevelmask,numeric)));
461
+ return node_wrap(cVarNode,node_alloc(parent->master,node_add_variable_ua_simple(type,str,parent,accesslevelmask,numeric,blk)));
394
462
  } //}}}
395
463
  static VALUE node_add_variable(int argc, VALUE* argv, VALUE self) { //{{{
396
464
  return node_add_variable_wrap(argc,argv,self,UA_ACCESSLEVELMASK_READ,true);
@@ -449,10 +517,18 @@ static UA_NodeId node_add_object_ua(UA_Int32 type, UA_NodeId n, UA_LocalizedText
449
517
 
450
518
  return n;
451
519
  } //}}}
452
- static UA_NodeId node_add_object_ua_simple(UA_Int32 type, char* nstr, node_struct *parent, node_struct *datatype, VALUE ref) { //{{{
520
+ static UA_NodeId node_add_object_ua_simple(UA_Int32 type, char* nstr, node_struct *parent, node_struct *datatype, VALUE ref, bool numeric) { //{{{
521
+ int nodeid = nodecounter++;
522
+ UA_NodeId n;
523
+ if (numeric) {
524
+ n = UA_NODEID_NUMERIC(parent->master->default_ns,nodeid);
525
+ } else {
526
+ n = UA_NODEID_STRING(parent->master->default_ns,nstr);
527
+ }
528
+
453
529
  return node_add_object_ua(
454
530
  type,
455
- UA_NODEID_STRING(parent->master->default_ns,nstr),
531
+ n,
456
532
  UA_LOCALIZEDTEXT("en-US", nstr),
457
533
  UA_QUALIFIEDNAME(parent->master->default_ns, nstr),
458
534
  parent,
@@ -489,7 +565,7 @@ static VALUE node_add_object(int argc, VALUE* argv, VALUE self) { //{{{
489
565
  rb_raise(rb_eTypeError, "cannot convert obj to string");
490
566
  char *nstr = (char *)StringValuePtr(str);
491
567
 
492
- return node_wrap(CLASS_OF(self),node_alloc(parent->master,node_add_object_ua_simple(type,nstr,parent,datatype,argv[2])));
568
+ return node_wrap(CLASS_OF(self),node_alloc(parent->master,node_add_object_ua_simple(type,nstr,parent,datatype,argv[2],true)));
493
569
  } //}}}
494
570
 
495
571
  static UA_StatusCode node_manifest_iter(UA_NodeId child_id, UA_Boolean is_inverse, UA_NodeId reference_type_id, void *handle) { //{{{
@@ -564,10 +640,22 @@ static UA_StatusCode node_manifest_iter(UA_NodeId child_id, UA_Boolean is_invers
564
640
  UA_BrowsePathResult property = node_browse_path(parent->master->master, child_id, UA_NODEID_NUMERIC(0, UA_NS0ID_HASTYPEDEFINITION), pqn, false);
565
641
  UA_QualifiedName_clear(&pqn);
566
642
 
643
+ VALUE blk;
644
+ if (child_id.identifierType == UA_NODEIDTYPE_NUMERIC) {
645
+ blk = rb_hash_aref(parent->master->methods,INT2NUM(child_id.identifier.numeric));
646
+ } else if (child_id.identifierType == UA_NODEIDTYPE_STRING) {
647
+ blk = rb_hash_aref(parent->master->methods,rb_str_new((const char *)child_id.identifier.string.data,child_id.identifier.string.length));
648
+ } else if (child_id.identifierType == UA_NODEIDTYPE_BYTESTRING) {
649
+ blk = rb_hash_aref(parent->master->methods,rb_str_new((const char *)child_id.identifier.byteString.data,child_id.identifier.byteString.length));
650
+ } else {
651
+ blk = Qnil;
652
+ }
653
+
654
+
567
655
  if (property.statusCode == UA_STATUSCODE_GOOD) {
568
- node_add_variable_ua(UA_NS0ID_PROPERTYTYPE,UA_NODEID_STRING(parent->master->default_ns,buffer),dn,qn,newnode,al);
656
+ node_add_variable_ua(UA_NS0ID_PROPERTYTYPE,UA_NODEID_STRING(parent->master->default_ns,buffer),dn,qn,newnode,al,blk);
569
657
  } else {
570
- node_add_variable_ua(UA_NS0ID_BASEDATAVARIABLETYPE,UA_NODEID_STRING(parent->master->default_ns,buffer),dn,qn,newnode,al);
658
+ node_add_variable_ua(UA_NS0ID_BASEDATAVARIABLETYPE,UA_NODEID_STRING(parent->master->default_ns,buffer),dn,qn,newnode,al,blk);
571
659
  }
572
660
 
573
661
  UA_BrowsePathResult_clear(&property);
@@ -46,11 +46,23 @@ module OPCUA
46
46
  def add_property_rw(*item)
47
47
  item.each { |e| add_property_rw e }
48
48
  end
49
- def add_variables(*item)
50
- item.each { |e| add_variable e }
49
+ def add_variables(*item,&blk)
50
+ item.each do |e|
51
+ if blk.nil?
52
+ add_variable e
53
+ else
54
+ add_variable e, &blk
55
+ end
56
+ end
51
57
  end
52
- def add_variables_rw(*item)
53
- item.each { |e| add_variable_rw e }
58
+ def add_variables_rw(*item,&blk)
59
+ item.each do |e|
60
+ if blk.nil?
61
+ add_variable_rw e
62
+ else
63
+ add_variable_rw e, &blk
64
+ end
65
+ end
54
66
  end
55
67
  end
56
68
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "opcua"
3
- s.version = "0.20"
3
+ s.version = "0.25"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "Preliminary release of opcua (open62541) ruby bindings. C performance, Ruby elegance, simplicity, and productivity."
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.required_ruby_version = '>=2.5.0'
17
17
 
18
- s.authors = ['Juergen eTM Mangler','Florian Pauker']
18
+ s.authors = ['Juergen eTM Mangler','Florian Pauker','Matthias Ehrendorfer']
19
19
 
20
20
  s.email = 'juergen.mangler@gmail.com'
21
21
  s.homepage = 'https://github.com/etm/opcua-smart'
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opcua
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.20'
4
+ version: '0.25'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
8
8
  - Florian Pauker
9
- autorequire:
9
+ - Matthias Ehrendorfer
10
+ autorequire:
10
11
  bindir: tools
11
12
  cert_chain: []
12
- date: 2020-07-10 00:00:00.000000000 Z
13
+ date: 2021-01-27 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: daemonite
@@ -84,6 +85,7 @@ files:
84
85
  - example/server.rb
85
86
  - example/server_deep.rb
86
87
  - example/server_values.rb
88
+ - example/server_values_callback.rb
87
89
  - example/server_xml.rb
88
90
  - example/test.rb
89
91
  - ext/opcua/client/client.c
@@ -123,7 +125,7 @@ homepage: https://github.com/etm/opcua-smart
123
125
  licenses:
124
126
  - LGPL-3.0
125
127
  metadata: {}
126
- post_install_message:
128
+ post_install_message:
127
129
  rdoc_options: []
128
130
  require_paths:
129
131
  - lib
@@ -138,8 +140,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
140
  - !ruby/object:Gem::Version
139
141
  version: '0'
140
142
  requirements: []
141
- rubygems_version: 3.1.2
142
- signing_key:
143
+ rubygems_version: 3.1.4
144
+ signing_key:
143
145
  specification_version: 4
144
146
  summary: Preliminary release of opcua (open62541) ruby bindings. C performance, Ruby
145
147
  elegance, simplicity, and productivity.