canql 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5d930c202647a6b479bc8a7bea504b377155b2df
4
- data.tar.gz: ca21ec21e84cecfab26ed4f687caa307d46d848b
2
+ SHA256:
3
+ metadata.gz: f8206dd11cfeb5875812b82062933650e2c97e56df252025633093705d73386a
4
+ data.tar.gz: 14bfaa9148d2f3f5028f717ca48f7b4043254f194175fcaa3f4e7707f0fb69b0
5
5
  SHA512:
6
- metadata.gz: 3bdfc6f29b5fcf385d936fdf14d6f7b6efcf192bbbdd7c98bc77f9448e02feac0acc3668bf7f76f33d64c3b8678fbd799c41fcadc38927949656a2d107bddbf8
7
- data.tar.gz: 3d237636b1e26aa131ee3192ca7e00f2e6fd0ed83b3548d7a796236293d674eabf9a36de6a1382c17f05f938be7628c85441ad6dd43b65828f4cf33ae39918d2
6
+ metadata.gz: 94b07f6c37e22ff798f4966b29f2b3116720aaf2af1500e699fde1ddba1232e4f0370ca370366ce82dcbc9468caec19839e6e320a30ae8dbd2adab85be9f5677
7
+ data.tar.gz: a79d86c334fb46c637a0fda89cb9b08996fab0923a942f2db91e913f865d745cc45755cce4af8669e671737fb5ff75805ad52d9ce57f6654bbad21111c240af8
data/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ ## [Unreleased]
2
+ *no unreleased changes*
3
+
4
+ ## 2.5.0 / 2019-01-25
5
+ ### Added
6
+ * Added the abiltity to filter actions by trust as well as hospital (#18)
7
+ * Added the abiltity to filter cases by booking and delivery hospital & trust (#18)
8
+ ### Fixed
9
+ * Support Ruby 2.6 - minimum is now 2.4
10
+
11
+ ## 2.4.0 / 2018-07-19
12
+ ### Added
13
+ * add ability to filter by genetic tests (#17)
14
+
15
+ ## 2.3.0 / 2018-06-08
16
+ ### Added
17
+ * Added action and ebr clauses for mother patients (#16)
18
+
19
+ ## 2.2.0 / 2018-06-05
20
+ ### Added
21
+ * Added EDD and booking hospital to missing and populated field clause (#15)
data/README.md CHANGED
@@ -47,10 +47,10 @@ would output:
47
47
  ```json
48
48
  {"patient.sex":{"equals":"1"},"patient.registry":{"equals":"84"}}
49
49
  ```
50
-
50
+ and booking at hospital RGT01 and delivery at addenbrookes trust
51
51
  The parser is case insensitive. An example of an almost fully involved CANQL query is:
52
52
 
53
- > First 27 Male Liveborn Thames Cases Due between 20/06/2015 and 25/06/2015 and Born on 22/06/2015 and that Died on 07/07/2015 with Suspected Prenatal Q20 Anomalies and Postnatal Tests and Missing Postcode and Date of Birth and QA Action and Unprocessed paediatric records and Mother Born between 01/10/1990 and 10/01/1999 and who Died on 01/08/2015 with Populated Postcode and NHS Number
53
+ > First 27 Male Liveborn Thames Cases Due between 20/06/2015 and 25/06/2015 and Born on 22/06/2015 and that Died on 07/07/2015 with Suspected Prenatal Q20 Anomalies and Booking at hospital RGT01 and Delivery at addenbrookes trust and Postnatal Tests and Missing Postcode and Date of Birth and QA Action and Unprocessed paediatric records and Mother Born between 01/10/1990 and 10/01/1999 and who Died on 01/08/2015 with Populated Postcode and NHS Number
54
54
 
55
55
  Please see the tests for many more examples.
56
56
 
data/canql.gemspec CHANGED
@@ -16,10 +16,12 @@ Gem::Specification.new do |spec|
16
16
  spec.homepage = 'https://github.com/PublicHealthEngland/canql'
17
17
  spec.license = 'MIT'
18
18
 
19
- spec.required_ruby_version = '>= 2.2'
19
+ spec.required_ruby_version = '>= 2.4'
20
20
 
21
21
  spec.files = `git ls-files -z`.split("\x0").
22
22
  reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ # SECURE BNS 2018-08-06: Minimise sharing of (public-key encrypted) slack secrets in .travis.yml
24
+ spec.files -= %w[.travis.yml] # Not needed in the gem
23
25
  spec.bindir = 'exe'
24
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
27
  spec.require_paths = ['lib']
@@ -34,7 +36,7 @@ Gem::Specification.new do |spec|
34
36
  spec.add_development_dependency 'guard-minitest'
35
37
  spec.add_development_dependency 'guard-rubocop'
36
38
  spec.add_development_dependency 'minitest'
37
- spec.add_development_dependency 'ndr_dev_support', '>= 3.0', '<6'
39
+ spec.add_development_dependency 'ndr_dev_support', '~> 3.1', '>= 3.1.3'
38
40
  spec.add_development_dependency 'pry'
39
41
  spec.add_development_dependency 'rake'
40
42
  spec.add_development_dependency 'terminal-notifier-guard' if RUBY_PLATFORM =~ /darwin/
data/code_safety.yml CHANGED
@@ -15,7 +15,11 @@ file safety:
15
15
  ".travis.yml":
16
16
  comments:
17
17
  reviewed_by: josh.pencheon
18
- safe_revision: ce5d961ef757500c8d12d7ca72a900ff7040378a
18
+ safe_revision: 16abb8206a3d36c7532427cd7137df79d2733d1d
19
+ CHANGELOG.md:
20
+ comments:
21
+ reviewed_by: josh.pencheon
22
+ safe_revision: 6bbb80cd4d98411f7e263705074c3d55dcdaab5f
19
23
  CODE_OF_CONDUCT.md:
20
24
  comments:
21
25
  reviewed_by: drewthorp
@@ -30,8 +34,8 @@ file safety:
30
34
  safe_revision: ee80c4bbd5e990d38b5fc954f4fd037177672db2
31
35
  README.md:
32
36
  comments:
33
- reviewed_by: timgentry
34
- safe_revision: 695cec7ee61f36a9ef054a4079f290421d814666
37
+ reviewed_by: josh.pencheon
38
+ safe_revision: 5241b851650e52fd094dad505a9bc0294b27204a
35
39
  Rakefile:
36
40
  comments:
37
41
  reviewed_by: timgentry
@@ -46,8 +50,8 @@ file safety:
46
50
  safe_revision: 6a666fcabe027056b1c774b2eabb3fdf686911d2
47
51
  canql.gemspec:
48
52
  comments:
49
- reviewed_by: timgentry
50
- safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
53
+ reviewed_by: josh.pencheon
54
+ safe_revision: 16abb8206a3d36c7532427cd7137df79d2733d1d
51
55
  lib/canql.rb:
52
56
  comments:
53
57
  reviewed_by: timgentry
@@ -59,7 +63,7 @@ file safety:
59
63
  lib/canql/grammars.rb:
60
64
  comments:
61
65
  reviewed_by: josh.pencheon
62
- safe_revision: 526dbe8a3dc3334b4174928e6f51d07e48ed9247
66
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
63
67
  lib/canql/grammars/age.treetop:
64
68
  comments: It is a known issue that this is potentially susceptible to certain
65
69
  kinds of DoS attack
@@ -81,8 +85,8 @@ file safety:
81
85
  safe_revision: 2346abb4435bf95cbe9b4d8c124123b9fefe60d6
82
86
  lib/canql/grammars/e_base_records.treetop:
83
87
  comments:
84
- reviewed_by: timgentry
85
- safe_revision: 03f7a8fbee06a947e60bc554dcc1d1311c5632ac
88
+ reviewed_by: josh.pencheon
89
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
86
90
  lib/canql/grammars/genetic_test.treetop:
87
91
  comments:
88
92
  reviewed_by: josh.pencheon
@@ -91,12 +95,20 @@ file safety:
91
95
  comments: It is a known issue that this is potentially susceptible to certain
92
96
  kinds of DoS attack
93
97
  reviewed_by: josh.pencheon
94
- safe_revision: 526dbe8a3dc3334b4174928e6f51d07e48ed9247
98
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
95
99
  lib/canql/grammars/patient.treetop:
96
100
  comments: It is a known issue that this is potentially susceptible to certain
97
101
  kinds of DoS attack
98
102
  reviewed_by: timgentry
99
103
  safe_revision: 1b73bdcf483c6e44979e183c5873a1f0612a49a1
104
+ lib/canql/grammars/perinatal_hospital.treetop:
105
+ comments:
106
+ reviewed_by: josh.pencheon
107
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
108
+ lib/canql/grammars/provider.treetop:
109
+ comments:
110
+ reviewed_by: josh.pencheon
111
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
100
112
  lib/canql/grammars/registry.treetop:
101
113
  comments: It is a known issue that this is potentially susceptible to certain
102
114
  kinds of DoS attack
@@ -110,7 +122,7 @@ file safety:
110
122
  lib/canql/nodes.rb:
111
123
  comments:
112
124
  reviewed_by: josh.pencheon
113
- safe_revision: 526dbe8a3dc3334b4174928e6f51d07e48ed9247
125
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
114
126
  lib/canql/nodes/age.rb:
115
127
  comments:
116
128
  reviewed_by: timgentry
@@ -129,8 +141,8 @@ file safety:
129
141
  safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
130
142
  lib/canql/nodes/e_base_records.rb:
131
143
  comments:
132
- reviewed_by: timgentry
133
- safe_revision: 1b73bdcf483c6e44979e183c5873a1f0612a49a1
144
+ reviewed_by: josh.pencheon
145
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
134
146
  lib/canql/nodes/genetic_test.rb:
135
147
  comments:
136
148
  reviewed_by: josh.pencheon
@@ -143,6 +155,10 @@ file safety:
143
155
  comments:
144
156
  reviewed_by: josh.pencheon
145
157
  safe_revision: a1686a3905ee6d7ebc8c5b1786efba4f8df42a2d
158
+ lib/canql/nodes/perinatal_hospital.rb:
159
+ comments:
160
+ reviewed_by: josh.pencheon
161
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
146
162
  lib/canql/nodes/registry.rb:
147
163
  comments:
148
164
  reviewed_by: timgentry
@@ -162,7 +178,7 @@ file safety:
162
178
  lib/canql/version.rb:
163
179
  comments:
164
180
  reviewed_by: josh.pencheon
165
- safe_revision: 60f7281fd6ef911b932992b2c965c6f8ace182c5
181
+ safe_revision: 6bbb80cd4d98411f7e263705074c3d55dcdaab5f
166
182
  test/anomaly_test_helper.rb:
167
183
  comments:
168
184
  reviewed_by: timgentry
@@ -189,8 +205,8 @@ file safety:
189
205
  safe_revision: 695cec7ee61f36a9ef054a4079f290421d814666
190
206
  test/nodes/e_base_records_test.rb:
191
207
  comments:
192
- reviewed_by: timgentry
193
- safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
208
+ reviewed_by: josh.pencheon
209
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
194
210
  test/nodes/genetic_tests_test.rb:
195
211
  comments:
196
212
  reviewed_by: josh.pencheon
@@ -201,12 +217,16 @@ file safety:
201
217
  safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
202
218
  test/nodes/mother_e_base_records_test.rb:
203
219
  comments:
204
- reviewed_by: timgentry
205
- safe_revision: 1b73bdcf483c6e44979e183c5873a1f0612a49a1
220
+ reviewed_by: josh.pencheon
221
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
206
222
  test/nodes/patient_test.rb:
207
223
  comments:
208
224
  reviewed_by: josh.pencheon
209
225
  safe_revision: a1686a3905ee6d7ebc8c5b1786efba4f8df42a2d
226
+ test/nodes/perinatal_hospital_test.rb:
227
+ comments:
228
+ reviewed_by: josh.pencheon
229
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
210
230
  test/nodes/registry_test.rb:
211
231
  comments:
212
232
  reviewed_by: timgentry
@@ -217,8 +237,8 @@ file safety:
217
237
  safe_revision: c39d24bb500719971969762e94545e82866bf92f
218
238
  test/parser_test.rb:
219
239
  comments:
220
- reviewed_by: timgentry
221
- safe_revision: c39d24bb500719971969762e94545e82866bf92f
240
+ reviewed_by: josh.pencheon
241
+ safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
222
242
  test/test_helper.rb:
223
243
  comments:
224
244
  reviewed_by: josh.pencheon
@@ -61,21 +61,12 @@ module Canql
61
61
  space 'action' 's'? word_break
62
62
  end
63
63
 
64
- rule at_keyword
65
- space 'at' word_break
66
- end
67
-
68
64
  rule action_provider_code
69
- provider_type space code:(!' ' .)+ <Nodes::ActionProviderCodeNode>
65
+ provider_code <Nodes::ActionProviderCodeNode>
70
66
  end
71
67
 
72
68
  rule action_provider_name
73
- short_desc:(!(space provider_type) .)+ space provider_type <Nodes::ActionProviderNameNode>
74
- end
75
-
76
- # TODO: support cancer network?
77
- rule provider_type
78
- 'hospital'
69
+ provider_name <Nodes::ActionProviderNameNode>
79
70
  end
80
71
 
81
72
  rule unprocessed_keyword
@@ -1,12 +1,14 @@
1
1
  grammar Canql
2
2
  include Registry
3
3
  include Patient
4
+ include Provider
4
5
  include Anomaly
5
6
  include GeneticTest
6
7
  include TestResult
7
8
  include Dates
8
9
  include EBaseRecords
9
10
  include BatchTypes
11
+ include PerinatalHospital
10
12
  include Age
11
13
 
12
14
  # The root grammar
@@ -97,7 +99,11 @@ grammar Canql
97
99
  space 'diagnosed' word_break
98
100
  end
99
101
 
102
+ rule at_keyword
103
+ space 'at' word_break
104
+ end
105
+
100
106
  rule with_conditions
101
- anomalies / genetic_tests / test_results / patient_field_existance / mother_conditions / action_or_ebr
107
+ anomalies / genetic_tests / test_results / perinatal_hospital / patient_field_existance / mother_conditions / action_or_ebr
102
108
  end
103
109
  end
@@ -0,0 +1,31 @@
1
+ module Canql
2
+ grammar PerinatalHospital
3
+ rule perinatal_hospital
4
+ and_keyword? space hospital_event:perinatal_hospital_type space perinatal_provider word_break
5
+ end
6
+
7
+ rule perinatal_provider
8
+ 'at' space provider:(perinatal_provider_code / perinatal_provider_name)
9
+ end
10
+
11
+ rule perinatal_provider_code
12
+ provider_code <Nodes::PerinatalProviderCodeNode>
13
+ end
14
+
15
+ rule perinatal_provider_name
16
+ provider_name <Nodes::PerinatalProviderNameNode>
17
+ end
18
+
19
+ rule perinatal_hospital_type
20
+ booking_hospital_keyword / delivery_hospital_keyword
21
+ end
22
+
23
+ rule booking_hospital_keyword
24
+ 'booking'
25
+ end
26
+
27
+ rule delivery_hospital_keyword
28
+ 'delivery'
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ module Canql
2
+ grammar Provider
3
+ rule provider_type
4
+ 'hospital' / 'trust'
5
+ end
6
+
7
+ rule provider_code
8
+ provider_type space code:(!' ' .)+
9
+ end
10
+
11
+ rule provider_name
12
+ short_desc:(!(space provider_type) .)+ space provider_type
13
+ end
14
+ end
15
+ end
@@ -11,4 +11,6 @@ Treetop.load File.expand_path('grammars/genetic_test', File.dirname(__FILE__))
11
11
  Treetop.load File.expand_path('grammars/test_result', File.dirname(__FILE__))
12
12
  Treetop.load File.expand_path('grammars/patient', File.dirname(__FILE__))
13
13
  Treetop.load File.expand_path('grammars/registry', File.dirname(__FILE__))
14
+ Treetop.load File.expand_path('grammars/provider', File.dirname(__FILE__))
15
+ Treetop.load File.expand_path('grammars/perinatal_hospital', File.dirname(__FILE__))
14
16
  Treetop.load File.expand_path('grammars/main', File.dirname(__FILE__))
@@ -54,7 +54,8 @@ module Canql #:nodoc: all
54
54
  # default to provider
55
55
  subject = reverse_scan_for_marker(:subject) == 'mother' ? '.mother' : ''
56
56
  key = 'providercode'
57
- { "action#{subject}.#{key}" => { Canql::EQUALS => code.text_value.upcase } }
57
+ condition = provider_type.text_value == 'trust' ? Canql::BEGINS : Canql::EQUALS
58
+ { "action#{subject}.#{key}" => { condition => code.text_value.upcase } }
58
59
  end
59
60
  end
60
61
 
@@ -62,7 +63,7 @@ module Canql #:nodoc: all
62
63
  def meta_data_item
63
64
  # default to provider
64
65
  subject = reverse_scan_for_marker(:subject) == 'mother' ? '.mother' : ''
65
- key = provider_type.text_value == 'cancer network' ? 'cn_ukacrname' : 'providername'
66
+ key = 'providername'
66
67
  {
67
68
  "action#{subject}.#{key}" => {
68
69
  Canql::BEGINS => short_desc.text_value.upcase,
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Canql #:nodoc: all
4
+ module Nodes
5
+ module PerinatalProviderCodeNode
6
+ def meta_data_item
7
+ hospital_event = reverse_scan_for_marker(:hospital_event)
8
+ key = 'providercode'
9
+ condition = provider_type.text_value == 'trust' ? Canql::BEGINS : Canql::EQUALS
10
+ { "#{hospital_event}.#{key}" => { condition => code.text_value.upcase } }
11
+ end
12
+ end
13
+
14
+ module PerinatalProviderNameNode
15
+ def meta_data_item
16
+ hospital_event = reverse_scan_for_marker(:hospital_event)
17
+ key = 'providername'
18
+ {
19
+ "#{hospital_event}.#{key}" => {
20
+ Canql::BEGINS => short_desc.text_value.upcase,
21
+ :interval => interval
22
+ }
23
+ }
24
+ end
25
+ end
26
+ end
27
+ end
data/lib/canql/nodes.rb CHANGED
@@ -20,3 +20,4 @@ require 'canql/nodes/test_result'
20
20
  require 'canql/nodes/patient'
21
21
  require 'canql/nodes/main'
22
22
  require 'canql/nodes/registry'
23
+ require 'canql/nodes/perinatal_hospital'
data/lib/canql/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  # This stores the current version of the Canql gem
4
4
  module Canql
5
- VERSION = '2.4.0'
5
+ VERSION = '2.5.0'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PHE NDR Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-19 00:00:00.000000000 Z
11
+ date: 2019-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic
@@ -152,22 +152,22 @@ dependencies:
152
152
  name: ndr_dev_support
153
153
  requirement: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - ">="
155
+ - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: '3.0'
158
- - - "<"
157
+ version: '3.1'
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
- version: '6'
160
+ version: 3.1.3
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ">="
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
- version: '3.0'
168
- - - "<"
167
+ version: '3.1'
168
+ - - ">="
169
169
  - !ruby/object:Gem::Version
170
- version: '6'
170
+ version: 3.1.3
171
171
  - !ruby/object:Gem::Dependency
172
172
  name: pry
173
173
  requirement: !ruby/object:Gem::Requirement
@@ -219,7 +219,7 @@ files:
219
219
  - ".gitignore"
220
220
  - ".hound.yml"
221
221
  - ".rubocop.yml"
222
- - ".travis.yml"
222
+ - CHANGELOG.md
223
223
  - CODE_OF_CONDUCT.md
224
224
  - Gemfile
225
225
  - LICENSE.txt
@@ -240,6 +240,8 @@ files:
240
240
  - lib/canql/grammars/genetic_test.treetop
241
241
  - lib/canql/grammars/main.treetop
242
242
  - lib/canql/grammars/patient.treetop
243
+ - lib/canql/grammars/perinatal_hospital.treetop
244
+ - lib/canql/grammars/provider.treetop
243
245
  - lib/canql/grammars/registry.treetop
244
246
  - lib/canql/grammars/test_result.treetop
245
247
  - lib/canql/nodes.rb
@@ -251,6 +253,7 @@ files:
251
253
  - lib/canql/nodes/genetic_test.rb
252
254
  - lib/canql/nodes/main.rb
253
255
  - lib/canql/nodes/patient.rb
256
+ - lib/canql/nodes/perinatal_hospital.rb
254
257
  - lib/canql/nodes/registry.rb
255
258
  - lib/canql/nodes/test_result.rb
256
259
  - lib/canql/parser.rb
@@ -268,15 +271,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
268
271
  requirements:
269
272
  - - ">="
270
273
  - !ruby/object:Gem::Version
271
- version: '2.2'
274
+ version: '2.4'
272
275
  required_rubygems_version: !ruby/object:Gem::Requirement
273
276
  requirements:
274
277
  - - ">="
275
278
  - !ruby/object:Gem::Version
276
279
  version: '0'
277
280
  requirements: []
278
- rubyforge_project:
279
- rubygems_version: 2.5.2.3
281
+ rubygems_version: 3.0.2
280
282
  signing_key:
281
283
  specification_version: 4
282
284
  summary: Congenital Anomaly Natural Query Language
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.3
4
- - 2.4
5
- - 2.5
6
- sudo: false
7
- cache: bundler
8
- before_install:
9
- - gem update --system
10
- - gem install bundler
11
- before_script: bundle update
12
- notifications:
13
- slack:
14
- on_pull_requests: false
15
- on_success: always
16
- on_failure: always
17
- rooms:
18
- secure: ixok7nqnRMtP4IqhLhSetpK8AI70aUhqUYiijoCkQ65I/TwRz0cbkl4PChTBLMbUiN1lhXtujg8CcVf++6QMj+vzrpfTIPkw3W/TG4zTJa0FaSg9h1zHX/9hXXw4QOIUvwstH51ay2ONZDVvm2Z1dIMkOFkcw2ndl4VnvtX5Xnekf3jUUvAmCNboLaKiUx5mqKo6KvMq3w7yakik5kQ3462QXoaI7PCEYiPK+CoskqX6aEyDREhCjV6nnzbEaZPBfpJjDp5KLRoFN6BT+Px8tD/lrAHMrW5gkzOtN5zGw9jjgjxp8cOsPoaYsCApQWjnSnRjcXy+g2Pw+SyxIshPE07cazB9fjTVDEiz2P+tb7hh/YEjM3uSJQFs37mIqir2NaUlFQSLwLP2HAX3DvYZeVKQMj8X+pH7Ad6iYGs8soGxrjznL7e1hfUoB89SkNHYTzBbsFy7pMVmTEfPG/MvjFmUgTai40lEvWyRJ4CbDsJ6W/KaLKUOMZpFZ+x/Sc10r9O1FZCKVpfnuRHLQXUj8cqcDags9evB5x6/ECn8zEGs7aX6ZTebPx+2D9sywmvy2LFL9Sjx+L8FYtzTXGBwip3rZOTNZhByzPDVwb0gJqamqRF0cET5RwNqb0Pohs9ScMMQwJnZGznvUbmjMQcemq/s51A6n+5g/Z31j+T482g=