boppers 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,116 +1,10 @@
1
- AllCops:
2
- TargetRubyVersion: 2.4
3
-
4
- Style/Alias:
5
- EnforcedStyle: prefer_alias_method
6
-
7
- Style/FrozenStringLiteralComment:
8
- EnforcedStyle: always
9
-
10
- Style/ClassCheck:
11
- EnforcedStyle: kind_of?
12
-
13
- Metrics/LineLength:
14
- Max: 80
15
-
16
- Style/BlockDelimiters:
17
- Enabled: false
18
-
19
- Style/RegexpLiteral:
20
- Enabled: false
21
-
22
- Metrics/AbcSize:
23
- Enabled: false
24
-
25
- Style/PerlBackrefs:
26
- Enabled: false
27
-
28
- ClassLength:
29
- Enabled: false
30
-
31
- CyclomaticComplexity:
32
- Enabled: false
33
-
34
- Documentation:
35
- Enabled: false
36
-
37
- Encoding:
38
- Enabled: false
39
-
40
- FileName:
41
- Enabled: false
42
-
43
- IfUnlessModifier:
44
- Enabled: false
45
-
46
- MethodLength:
47
- Enabled: false
48
-
49
- ModuleFunction:
50
- Enabled: false
1
+ ---
2
+ inherit_gem:
3
+ rubocop-fnando: .rubocop.yml
51
4
 
52
- OneLineConditional:
53
- Enabled: false
54
-
55
- ParameterLists:
56
- Enabled: false
57
-
58
- Proc:
59
- Enabled: false
60
-
61
- SingleLineBlockParams:
62
- Enabled: false
63
-
64
- VariableInterpolation:
65
- Enabled: false
66
-
67
- Style/TrailingCommaInLiteral:
68
- Enabled: false
69
-
70
- WhileUntilModifier:
71
- Enabled: false
72
-
73
- PredicateName:
74
- NamePrefixBlacklist:
75
- - is_
76
-
77
- StringLiterals:
78
- EnforcedStyle: double_quotes
79
-
80
- DotPosition:
81
- EnforcedStyle: leading
82
-
83
- SpaceBeforeBlockBraces:
84
- EnforcedStyle: space
85
-
86
- SpaceInsideBlockBraces:
87
- EnforcedStyle: no_space
88
-
89
- DoubleNegation:
90
- Enabled: false
91
-
92
- SpaceInsideBlockBraces:
93
- SpaceBeforeBlockParameters: false
94
-
95
- SpaceInsideHashLiteralBraces:
96
- Enabled: false
97
-
98
- PercentLiteralDelimiters:
99
- PreferredDelimiters:
100
- '%': '{}'
101
- '%i': '{}'
102
- '%q': '{}'
103
- '%Q': '{}'
104
- '%r': '{}'
105
- '%s': '{}'
106
- '%w': '{}'
107
- '%W': '{}'
108
- '%x': '{}'
109
-
110
- Style/CollectionMethods:
111
- PreferredMethods:
112
- collect: 'map'
113
- collect!: 'map!'
114
- inject: 'reduce'
115
- detect: 'find'
116
- find_all: 'select'
5
+ AllCops:
6
+ TargetRubyVersion: 3.0
7
+ NewCops: enable
8
+ Exclude:
9
+ - vendor/**/*
10
+ - gemfiles/**/*
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
  gemspec
@@ -2,11 +2,10 @@
2
2
 
3
3
  A [bopper](https://github.com/fnando/boppers) to [SOME DESCRIPTION].
4
4
 
5
- [![Travis-CI](https://travis-ci.org/[USERNAME]/<%= plugin_name %>.png)](https://travis-ci.org/[USERNAME]/<%= plugin_name %>)
6
- [![GPA](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/gpa.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
7
- [![Test Coverage](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/coverage.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
8
- [![Gem](https://img.shields.io/gem/v/<%= plugin_name %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
9
- [![Gem](https://img.shields.io/gem/dt/<%= plugin_name %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
5
+ [![Gem](https://img.shields.io/gem/v/<%= plugin_name
6
+ %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
7
+ [![Gem](https://img.shields.io/gem/dt/<%= plugin_name
8
+ %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
10
9
 
11
10
  ## Installation
12
11
 
@@ -30,18 +29,32 @@ TODO: Write usage instructions here
30
29
 
31
30
  ## Development
32
31
 
33
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
33
+ `rake test` to run the tests. You can also run `bin/console` for an interactive
34
+ prompt that will allow you to experiment.
34
35
 
35
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
36
+ To install this gem onto your local machine, run `bundle exec rake install`. To
37
+ release a new version, update the version number in `version.rb`, and then run
38
+ `bundle exec rake release`, which will create a git tag for the version, push
39
+ git commits and tags, and push the `.gem` file to
40
+ [rubygems.org](https://rubygems.org).
36
41
 
37
42
  ## Contributing
38
43
 
39
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/<%= plugin_name %>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
44
+ Bug reports and pull requests are welcome on GitHub at
45
+ https://github.com/[USERNAME]/<%= plugin_name %>. This project is intended to be
46
+ a safe, welcoming space for collaboration, and contributors are expected to
47
+ adhere to the [Contributor Covenant](http://contributor-covenant.org) code of
48
+ conduct.
40
49
 
41
50
  ## License
42
51
 
43
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
52
+ The gem is available as open source under the terms of the
53
+ [MIT License](https://opensource.org/licenses/MIT).
44
54
 
45
55
  ## Code of Conduct
46
56
 
47
- Everyone interacting in the Boppers project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/<%= plugin_name %>/blob/master/CODE_OF_CONDUCT.md).
57
+ Everyone interacting in the Boppers project’s codebases, issue trackers, chat
58
+ rooms and mailing lists is expected to follow the [code of
59
+ conduct](https://github.com/[USERNAME]/<%= plugin_name
60
+ %>/blob/main/CODE_OF_CONDUCT.md).
@@ -2,11 +2,10 @@
2
2
 
3
3
  A [bopper](https://github.com/fnando/boppers) notifier to [SOME DESCRIPTION].
4
4
 
5
- [![Travis-CI](https://travis-ci.org/[USERNAME]/<%= plugin_name %>.png)](https://travis-ci.org/[USERNAME]/<%= plugin_name %>)
6
- [![GPA](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/gpa.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
7
- [![Test Coverage](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>/badges/coverage.svg)](https://codeclimate.com/github/[USERNAME]/<%= plugin_name %>)
8
- [![Gem](https://img.shields.io/gem/v/<%= plugin_name %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
9
- [![Gem](https://img.shields.io/gem/dt/<%= plugin_name %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
5
+ [![Gem](https://img.shields.io/gem/v/<%= plugin_name
6
+ %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
7
+ [![Gem](https://img.shields.io/gem/dt/<%= plugin_name
8
+ %>.svg)](https://rubygems.org/gems/<%= plugin_name %>)
10
9
 
11
10
  ## Installation
12
11
 
@@ -30,18 +29,32 @@ TODO: Write usage instructions here
30
29
 
31
30
  ## Development
32
31
 
33
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
33
+ `rake test` to run the tests. You can also run `bin/console` for an interactive
34
+ prompt that will allow you to experiment.
34
35
 
35
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
36
+ To install this gem onto your local machine, run `bundle exec rake install`. To
37
+ release a new version, update the version number in `version.rb`, and then run
38
+ `bundle exec rake release`, which will create a git tag for the version, push
39
+ git commits and tags, and push the `.gem` file to
40
+ [rubygems.org](https://rubygems.org).
36
41
 
37
42
  ## Contributing
38
43
 
39
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/<%= plugin_name %>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
44
+ Bug reports and pull requests are welcome on GitHub at
45
+ https://github.com/[USERNAME]/<%= plugin_name %>. This project is intended to be
46
+ a safe, welcoming space for collaboration, and contributors are expected to
47
+ adhere to the [Contributor Covenant](http://contributor-covenant.org) code of
48
+ conduct.
40
49
 
41
50
  ## License
42
51
 
43
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
52
+ The gem is available as open source under the terms of the
53
+ [MIT License](https://opensource.org/licenses/MIT).
44
54
 
45
55
  ## Code of Conduct
46
56
 
47
- Everyone interacting in the Boppers project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/<%= plugin_name %>/blob/master/CODE_OF_CONDUCT.md).
57
+ Everyone interacting in the Boppers project’s codebases, issue trackers, chat
58
+ rooms and mailing lists is expected to follow the [code of
59
+ conduct](https://github.com/[USERNAME]/<%= plugin_name
60
+ %>/blob/main/CODE_OF_CONDUCT.md).
@@ -15,10 +15,9 @@ module Boppers
15
15
 
16
16
  def copy_files
17
17
  template "#{plugin_type}/gemspec.erb", "#{plugin_name}.gemspec"
18
- copy_file "gems.rb"
18
+ copy_file "Gemfile"
19
19
  copy_file ".gitignore"
20
20
  copy_file ".rubocop.yml"
21
- copy_file ".travis.yml"
22
21
  copy_file "CODE_OF_CONDUCT.md"
23
22
  copy_file "LICENSE.txt"
24
23
  copy_file "Rakefile"
@@ -51,30 +50,28 @@ module Boppers
51
50
  end
52
51
  end
53
52
 
54
- private
55
-
56
- def bopper?
53
+ private def bopper?
57
54
  plugin_type == "bopper"
58
55
  end
59
56
 
60
- def plugin_name
57
+ private def plugin_name
61
58
  File.basename(destination_root)
62
59
  end
63
60
 
64
- def name
61
+ private def name
65
62
  plugin_name
66
63
  .gsub(/^boppers-/, "")
67
64
  .gsub(/-notifier$/, "")
68
65
  end
69
66
 
70
- def plugin_namespace
67
+ private def plugin_namespace
71
68
  name
72
69
  .tr("-", "_")
73
- .gsub(/_(.)/) { $1.upcase }
74
- .gsub(/^(.)/) { $1.upcase }
70
+ .gsub(/_(.)/) { ::Regexp.last_match(1).upcase }
71
+ .gsub(/^(.)/) { ::Regexp.last_match(1).upcase }
75
72
  end
76
73
 
77
- def plugin_dir
74
+ private def plugin_dir
78
75
  "notifier/" unless bopper?
79
76
  end
80
77
  end
@@ -3,10 +3,21 @@
3
3
  module Boppers
4
4
  module Notifier
5
5
  class Twitter
6
- attr_reader :consumer_key, :consumer_secret,
7
- :access_token, :access_secret, :user, :subscribe
6
+ attr_reader :consumer_key,
7
+ :consumer_secret,
8
+ :access_token,
9
+ :access_secret,
10
+ :user,
11
+ :subscribe
8
12
 
9
- def initialize(consumer_key:, consumer_secret:, access_token:, access_secret:, user:, subscribe: nil)
13
+ def initialize(
14
+ consumer_key:,
15
+ consumer_secret:,
16
+ access_token:,
17
+ access_secret:,
18
+ user:,
19
+ subscribe: nil
20
+ )
10
21
  require "twitter"
11
22
 
12
23
  @consumer_key = consumer_key
@@ -2,31 +2,60 @@
2
2
 
3
3
  module Boppers
4
4
  class Runner
5
+ def initialize
6
+ @stop = false
7
+ end
8
+
9
+ def stop?
10
+ @stop
11
+ end
12
+
13
+ def stop!
14
+ @stop = true
15
+ end
16
+
5
17
  def boppers
6
18
  Boppers.configuration.boppers
7
19
  end
8
20
 
21
+ def default_interval
22
+ 60
23
+ end
24
+
9
25
  def run_bopper(bopper)
10
26
  interval = if bopper.respond_to?(:interval)
11
27
  bopper.interval
12
28
  else
13
- 60
29
+ default_interval
14
30
  end
15
31
 
32
+ interval = interval.to_i
33
+ interval = default_interval if interval.zero?
34
+
16
35
  Thread.new do
36
+ elapsed_time = 0
37
+
17
38
  loop do
39
+ break if stop?
40
+
18
41
  begin
19
- bopper.call
42
+ bopper.call if elapsed_time.zero?
20
43
  rescue StandardError => error
21
44
  Boppers.configuration.handle_exception&.call(error)
22
45
  end
23
46
 
24
- sleep interval
47
+ elapsed_time += 1
48
+
49
+ sleep 1
50
+
51
+ elapsed_time = 0 if elapsed_time == interval
25
52
  end
26
53
  end
27
54
  end
28
55
 
29
56
  def call
57
+ trap("SIGINT") { stop! }
58
+
30
59
  threads = boppers.each_with_object([]) do |bopper, buffer|
31
60
  buffer << run_bopper(bopper)
32
61
  end
@@ -18,13 +18,16 @@ module Boppers
18
18
  end
19
19
 
20
20
  def self.assert_initialize_method(notifier)
21
- message = "Notifier must implement #{notifier.class}.new(subscribe: nil)"
21
+ message =
22
+ "Notifier must implement #{notifier.class}.new(subscribe: nil)"
22
23
  initialize_method = notifier.method(:initialize)
23
- assert_includes initialize_method.parameters, %i{key subscribe}, message
24
+ assert_includes initialize_method.parameters, %i[key subscribe], message
24
25
  end
25
26
 
26
27
  def self.assert_call_method(notifier)
27
- message = "Notifier must implement #{notifier.class}#call(title, message, options)"
28
+ message =
29
+ "Notifier must implement #{notifier.class}#call" \
30
+ "(title, message, options)"
28
31
  call_method = notifier.method(:call)
29
32
  assert_equal 3, call_method.parameters.size, message
30
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Boppers
4
- VERSION = "0.0.10"
4
+ VERSION = "0.0.11"
5
5
  end
data/lib/boppers.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Boppers
4
- require "thor"
5
- require "aitch"
3
+ require "thor"
4
+ require "aitch"
6
5
 
7
- require "boppers/version"
8
- require "boppers/cli"
9
- require "boppers/configuration"
10
- require "boppers/http_client"
11
- require "boppers/runner"
6
+ module Boppers
7
+ require_relative "boppers/version"
8
+ require_relative "boppers/cli"
9
+ require_relative "boppers/configuration"
10
+ require_relative "boppers/http_client"
11
+ require_relative "boppers/runner"
12
12
 
13
13
  def self.configure
14
14
  yield configuration
data/setup/telegram.rb CHANGED
@@ -26,8 +26,7 @@ module Setup
26
26
 
27
27
  payload = response
28
28
  .data["result"]
29
- .sort_by {|result| result["update_id"] }
30
- .last
29
+ .max_by {|result| result["update_id"] }
31
30
 
32
31
  unless payload
33
32
  message = "ERROR: No messages found."
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boppers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-03 00:00:00.000000000 Z
11
+ date: 2022-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: aitch
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: aitch
28
+ name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: mail
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: simplecov
84
+ name: pry-meta
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry-meta
98
+ name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: mail
112
+ name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -152,7 +152,7 @@ dependencies:
152
152
  version: '0'
153
153
  description: A simple bot framework for individuals.
154
154
  email:
155
- - fnando.vieira@gmail.com
155
+ - me@fnando.com
156
156
  executables:
157
157
  - boppers
158
158
  extensions: []
@@ -160,8 +160,9 @@ extra_rdoc_files: []
160
160
  files:
161
161
  - ".gitignore"
162
162
  - ".rubocop.yml"
163
- - ".travis.yml"
164
163
  - CODE_OF_CONDUCT.md
164
+ - Gemfile
165
+ - Gemfile.lock
165
166
  - LICENSE.txt
166
167
  - README.md
167
168
  - Rakefile
@@ -169,8 +170,6 @@ files:
169
170
  - bin/setup
170
171
  - boppers.gemspec
171
172
  - exe/boppers
172
- - gems.locked
173
- - gems.rb
174
173
  - images/boppers.png
175
174
  - images/boppers@2x.png
176
175
  - images/logo.png
@@ -188,8 +187,8 @@ files:
188
187
  - lib/boppers/generator/plugin.rb
189
188
  - lib/boppers/generator/plugin/.gitignore
190
189
  - lib/boppers/generator/plugin/.rubocop.yml
191
- - lib/boppers/generator/plugin/.travis.yml
192
190
  - lib/boppers/generator/plugin/CODE_OF_CONDUCT.md
191
+ - lib/boppers/generator/plugin/Gemfile
193
192
  - lib/boppers/generator/plugin/LICENSE.txt
194
193
  - lib/boppers/generator/plugin/Rakefile
195
194
  - lib/boppers/generator/plugin/bopper/README.erb
@@ -198,7 +197,6 @@ files:
198
197
  - lib/boppers/generator/plugin/bopper/main.erb
199
198
  - lib/boppers/generator/plugin/bopper/test_file.erb
200
199
  - lib/boppers/generator/plugin/bopper/version.erb
201
- - lib/boppers/generator/plugin/gems.rb
202
200
  - lib/boppers/generator/plugin/notifier/README.erb
203
201
  - lib/boppers/generator/plugin/notifier/entry.erb
204
202
  - lib/boppers/generator/plugin/notifier/gemspec.erb
@@ -224,8 +222,9 @@ files:
224
222
  homepage: https://rubygems.org/gems/boppers
225
223
  licenses:
226
224
  - MIT
227
- metadata: {}
228
- post_install_message:
225
+ metadata:
226
+ rubygems_mfa_required: 'true'
227
+ post_install_message:
229
228
  rdoc_options: []
230
229
  require_paths:
231
230
  - lib
@@ -233,16 +232,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
233
232
  requirements:
234
233
  - - ">="
235
234
  - !ruby/object:Gem::Version
236
- version: '0'
235
+ version: 3.0.0
237
236
  required_rubygems_version: !ruby/object:Gem::Requirement
238
237
  requirements:
239
238
  - - ">="
240
239
  - !ruby/object:Gem::Version
241
240
  version: '0'
242
241
  requirements: []
243
- rubyforge_project:
244
- rubygems_version: 2.7.3
245
- signing_key:
242
+ rubygems_version: 3.3.26
243
+ signing_key:
246
244
  specification_version: 4
247
245
  summary: A simple bot framework for individuals.
248
246
  test_files: []
data/.travis.yml DELETED
@@ -1,19 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.4.2
6
- before_install:
7
- - gem install bundler
8
- - bundle install
9
- before_script:
10
- - "curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter"
11
- - chmod +x ./cc-test-reporter
12
- - "./cc-test-reporter before-build"
13
- after_script:
14
- - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
15
- notifications:
16
- email: false
17
- env:
18
- global:
19
- secure: eoCW4QzjfgDFpD8ygDYJVpm2gmq4eLvZxsgKarOeGOeh6TYGOuAZrz23TGiXy7XwRPlEd8IJf9DufqegitY8QHmrP09C9mUwlk3LbjwNFvsS0aaMKgxIkaBKzgqtaJSySXaKWzoV8wjCUk3/Ip9CNBLq/vLulOcKF4B1HuxtHUKHGHT/Uj/IJWORukFfhaaTi48d9VcizPWH15yj0w3D507sz/HEm0MaeihYHwLYpScgLlNgzFp8+TlTB1TRjf70rUW2Y480zqdxeDvHaKiQt21wyEHcSOwwNVRLXM8jUHAyAN5bEMGJ4PhVE1ehbYarK28Sm3qdUABZngXP5XVsJPJOmf0QXg/oP0RC/zh7xwYFe3rBGdKBp9Vwc3PopjcVzmxSo0mg0IzObq6Kz0lEuHqbqo3kQBdCmSscLpGjCQA9FGf7ylViaeleLd59YN98jw3Z3/dMwN97VD3IFnqDb/ZSPW8KpQmjOzEXm84NglQfodxCqEejaghKi9dHJToWJrxauyJmO6T1s3ykGowfy/PtfVwbXJaGD9OPjxlnqH8GAHGXFg+6vOsxFBRdtuJ3iX7w9ED80mOxaDFgG9o1dtnL43fudSxywrzGQXpMS97sUBUwHiAsCDcE6D8kxRCp5ki9tzKGnc18xQRlnWpUyuP13b6QzhOVZbuX23IArQc=