geo_pattern 1.3.2 → 1.5.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.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +1 -0
- data/.simplecov +26 -0
- data/Gemfile +17 -17
- data/README.md +154 -29
- data/Rakefile +72 -13
- data/fixtures/generated_patterns/chevrons.svg +1 -0
- data/fixtures/generated_patterns/concentric_circles.svg +1 -0
- data/fixtures/generated_patterns/diamonds.svg +1 -0
- data/fixtures/generated_patterns/diamonds_with_base_color.svg +1 -0
- data/fixtures/generated_patterns/diamonds_with_color.svg +1 -0
- data/fixtures/generated_patterns/hexagons.svg +1 -0
- data/fixtures/generated_patterns/mosaic_squares.svg +1 -0
- data/fixtures/generated_patterns/nested_squares.svg +1 -0
- data/fixtures/generated_patterns/octagons.svg +1 -0
- data/fixtures/generated_patterns/overlapping_circles.svg +1 -0
- data/fixtures/generated_patterns/overlapping_rings.svg +1 -0
- data/fixtures/generated_patterns/plaid.svg +1 -0
- data/fixtures/generated_patterns/plus_signs.svg +1 -0
- data/fixtures/generated_patterns/sine_waves.svg +1 -0
- data/fixtures/generated_patterns/squares.svg +1 -0
- data/fixtures/generated_patterns/tessellation.svg +1 -0
- data/fixtures/generated_patterns/triangles.svg +1 -0
- data/fixtures/generated_patterns/xes.svg +1 -0
- data/geo_pattern.gemspec +19 -17
- data/lib/geo_pattern/background.rb +27 -0
- data/lib/geo_pattern/background_generators/solid_generator.rb +54 -0
- data/lib/geo_pattern/color.rb +27 -0
- data/lib/geo_pattern/color_generators/base_color_generator.rb +57 -0
- data/lib/geo_pattern/color_generators/simple_generator.rb +29 -0
- data/lib/geo_pattern/color_preset.rb +32 -0
- data/lib/geo_pattern/errors.rb +9 -0
- data/lib/geo_pattern/geo_pattern_task.rb +61 -0
- data/lib/geo_pattern/helpers.rb +50 -1
- data/lib/geo_pattern/pattern.rb +86 -0
- data/lib/geo_pattern/pattern_generator.rb +34 -81
- data/lib/geo_pattern/pattern_helpers.rb +34 -2
- data/lib/geo_pattern/pattern_preset.rb +25 -0
- data/lib/geo_pattern/pattern_sieve.rb +38 -0
- data/lib/geo_pattern/pattern_store.rb +65 -0
- data/lib/geo_pattern/pattern_validator.rb +29 -0
- data/lib/geo_pattern/rake_task.rb +112 -0
- data/lib/geo_pattern/roles/comparable_metadata.rb +37 -0
- data/lib/geo_pattern/roles/named_generator.rb +15 -0
- data/lib/geo_pattern/seed.rb +23 -0
- data/lib/geo_pattern/structure.rb +27 -0
- data/lib/geo_pattern/structure_generators/base_generator.rb +88 -0
- data/lib/geo_pattern/structure_generators/chevrons_generator.rb +57 -0
- data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +58 -0
- data/lib/geo_pattern/structure_generators/diamonds_generator.rb +72 -0
- data/lib/geo_pattern/structure_generators/hexagons_generator.rb +69 -0
- data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +85 -0
- data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +62 -0
- data/lib/geo_pattern/structure_generators/octagons_generator.rb +45 -0
- data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +57 -0
- data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +57 -0
- data/lib/geo_pattern/structure_generators/plaid_generator.rb +55 -0
- data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +68 -0
- data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +45 -0
- data/lib/geo_pattern/structure_generators/squares_generator.rb +37 -0
- data/lib/geo_pattern/structure_generators/tessellation_generator.rb +105 -0
- data/lib/geo_pattern/structure_generators/triangles_generator.rb +64 -0
- data/lib/geo_pattern/structure_generators/xes_generator.rb +74 -0
- data/lib/geo_pattern/svg_image.rb +103 -0
- data/lib/geo_pattern/version.rb +3 -1
- data/lib/geo_pattern.rb +54 -30
- data/script/bootstrap +30 -0
- data/script/console +9 -0
- data/script/test +21 -0
- data/spec/background_generators/solid_generator_spec.rb +52 -0
- data/spec/background_spec.rb +27 -0
- data/spec/color_generators/base_color_generator_spec.rb +33 -0
- data/spec/color_generators/simple_generator_spec.rb +14 -0
- data/spec/color_preset_spec.rb +55 -0
- data/spec/color_spec.rb +17 -0
- data/spec/geo_pattern_spec.rb +98 -26
- data/spec/helpers_spec.rb +67 -0
- data/spec/pattern_preset_spec.rb +43 -0
- data/spec/pattern_sieve_spec.rb +68 -0
- data/spec/pattern_spec.rb +74 -0
- data/spec/pattern_store_spec.rb +49 -0
- data/spec/pattern_validator_spec.rb +30 -0
- data/spec/seed_spec.rb +16 -0
- data/spec/spec_helper.rb +9 -13
- data/spec/structure_generators/chevrons_generator_spec.rb +7 -0
- data/spec/structure_generators/concentric_circles_generator_spec.rb +7 -0
- data/spec/structure_generators/diamonds_generator_spec.rb +7 -0
- data/spec/structure_generators/hexagons_generator_spec.rb +7 -0
- data/spec/structure_generators/mosaic_squares_generator_spec.rb +7 -0
- data/spec/structure_generators/nested_squares_generator_spec.rb +7 -0
- data/spec/structure_generators/octagons_generator_spec.rb +7 -0
- data/spec/structure_generators/overlapping_circles_generator_spec.rb +7 -0
- data/spec/structure_generators/overlapping_rings_generator_spec.rb +7 -0
- data/spec/structure_generators/plaid_generator_spec.rb +7 -0
- data/spec/structure_generators/plus_signs_generator_spec.rb +7 -0
- data/spec/structure_generators/sine_waves_generator_spec.rb +7 -0
- data/spec/structure_generators/squares_generator_spec.rb +7 -0
- data/spec/structure_generators/tessellation_generator_spec.rb +7 -0
- data/spec/structure_generators/triangles_generator_spec.rb +7 -0
- data/spec/structure_generators/xes_generator_spec.rb +7 -0
- data/spec/structure_spec.rb +40 -0
- data/spec/support/aruba.rb +6 -6
- data/spec/support/helpers/fixtures.rb +14 -0
- data/spec/support/kernel.rb +46 -0
- data/spec/support/matchers/image.rb +19 -0
- data/spec/support/matchers/name.rb +17 -0
- data/spec/support/rspec.rb +4 -2
- data/spec/support/shared_examples/generator.rb +48 -0
- data/spec/support/shared_examples/pattern.rb +33 -0
- data/spec/support/shared_examples/pattern_name.rb +9 -0
- data/spec/support/shared_examples/structure.rb +50 -0
- data/spec/support/string.rb +3 -2
- data/spec/svg_spec.rb +8 -6
- metadata +105 -37
- data/.rubocop.yml +0 -13
- data/lib/geo_pattern/pattern/base_pattern.rb +0 -47
- data/lib/geo_pattern/pattern/chevron_pattern.rb +0 -45
- data/lib/geo_pattern/pattern/concentric_circles_pattern.rb +0 -47
- data/lib/geo_pattern/pattern/diamond_pattern.rb +0 -56
- data/lib/geo_pattern/pattern/hexagon_pattern.rb +0 -57
- data/lib/geo_pattern/pattern/mosaic_squares_pattern.rb +0 -76
- data/lib/geo_pattern/pattern/nested_squares_pattern.rb +0 -51
- data/lib/geo_pattern/pattern/octagon_pattern.rb +0 -35
- data/lib/geo_pattern/pattern/overlapping_circles_pattern.rb +0 -46
- data/lib/geo_pattern/pattern/overlapping_rings_pattern.rb +0 -46
- data/lib/geo_pattern/pattern/plaid_pattern.rb +0 -49
- data/lib/geo_pattern/pattern/plus_sign_pattern.rb +0 -53
- data/lib/geo_pattern/pattern/sine_wave_pattern.rb +0 -36
- data/lib/geo_pattern/pattern/square_pattern.rb +0 -27
- data/lib/geo_pattern/pattern/tessellation_pattern.rb +0 -93
- data/lib/geo_pattern/pattern/triangle_pattern.rb +0 -51
- data/lib/geo_pattern/pattern/xes_pattern.rb +0 -58
- data/lib/geo_pattern/svg.rb +0 -77
- data/spec/support/helpers.rb +0 -34
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 673c02d78cab6a2a0d4739661a9a4e93845fd6c3dafff82f36f36e15e759e032
|
|
4
|
+
data.tar.gz: da40879b6a7e41a039e00741d5b48e4be51a584f339bc84572bf5d47cb1b44cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 87e2bac49b72b2dbb068ab84abdbdbf6a2240fe13f6898de4be9fc72c40d1239654cee649718d8620598257bdaa1cc24366054ed4f320346ddf68b9b11c8a66b
|
|
7
|
+
data.tar.gz: f69912aeb10d51c3110edd472b8a02dee9653e2b3cb0b8127d817a45a9d878e7ade1b85922a3aaf0a8ef8568912e57661f84b050220171632665fe784b3420a5
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Ruby
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
|
|
15
|
+
ruby: [2.6, 2.7, '3.0', 3.1, 3.2, head]
|
|
16
|
+
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v2
|
|
21
|
+
|
|
22
|
+
- name: Set up Ruby
|
|
23
|
+
uses: ruby/setup-ruby@v1
|
|
24
|
+
with:
|
|
25
|
+
ruby-version: ${{ matrix.ruby }}
|
|
26
|
+
rubygems: latest
|
|
27
|
+
bundler-cache: true
|
|
28
|
+
|
|
29
|
+
- name: Run tests
|
|
30
|
+
run: bundle exec rake
|
data/.gitignore
CHANGED
data/.simplecov
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
class ExcludeRegexFilter < SimpleCov::Filter
|
|
5
|
+
def matches?(source_file)
|
|
6
|
+
source_file.filename !~ filter_argument
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class IncludeRegexFilter < SimpleCov::Filter
|
|
11
|
+
def matches?(source_file)
|
|
12
|
+
source_file.filename =~ filter_argument
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
SimpleCov.start do
|
|
17
|
+
add_filter "/features/"
|
|
18
|
+
add_filter "/fixtures/"
|
|
19
|
+
add_filter "/spec/"
|
|
20
|
+
add_filter "/tmp"
|
|
21
|
+
add_filter "/vendor"
|
|
22
|
+
|
|
23
|
+
generator_filter = %r{/background_generators/|/structure_generators/}
|
|
24
|
+
add_group "lib", ExcludeRegexFilter.new(generator_filter)
|
|
25
|
+
add_group "generators", IncludeRegexFilter.new(generator_filter)
|
|
26
|
+
end
|
data/Gemfile
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
2
4
|
|
|
3
5
|
# Specify your gem's dependencies in geopatterns.gemspec
|
|
4
6
|
gemspec
|
|
5
7
|
|
|
6
8
|
group :development, :test do
|
|
7
|
-
gem
|
|
8
|
-
gem
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
11
|
-
gem
|
|
12
|
-
gem
|
|
13
|
-
gem
|
|
14
|
-
gem
|
|
15
|
-
gem
|
|
9
|
+
gem "activesupport", "~> 6"
|
|
10
|
+
gem "aruba"
|
|
11
|
+
gem "fuubar"
|
|
12
|
+
gem "inch"
|
|
13
|
+
gem "pry"
|
|
14
|
+
gem "pry-rescue"
|
|
15
|
+
gem "pry-stack_explorer"
|
|
16
|
+
gem "rake"
|
|
17
|
+
gem "rspec"
|
|
18
|
+
gem "standard"
|
|
19
|
+
gem "simplecov"
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
else
|
|
21
|
-
gem 'debugger'
|
|
22
|
-
gem 'pry-debugger'
|
|
23
|
-
end
|
|
21
|
+
gem "byebug"
|
|
22
|
+
gem "irb"
|
|
23
|
+
gem "pry-byebug"
|
|
24
24
|
end
|
data/README.md
CHANGED
|
@@ -1,16 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
### This project is largely unmaintained now.
|
|
2
|
+
|
|
3
|
+
#### I'll happily accept PRs to keep things in working order, but I no longer plan to make updates.
|
|
4
|
+
|
|
5
|
+
----
|
|
6
|
+
|
|
7
|
+
[](http://rubygems.org/gems/geo_pattern)
|
|
8
|
+

|
|
9
|
+
[](http://rubygems.org/gems/geo_pattern)
|
|
10
|
+
[](https://github.com/testdouble/standard)
|
|
3
11
|
|
|
4
12
|
# GeoPattern
|
|
5
13
|
|
|
6
|
-
Generate beautiful tiling SVG patterns from a string. The string is converted
|
|
14
|
+
Generate beautiful tiling SVG patterns from a string. The string is converted
|
|
15
|
+
into a SHA and a color and pattern are determined based on the values in the
|
|
16
|
+
hash. The color is determined by shifting the hue and saturation from a default
|
|
17
|
+
(or passed in) base color. One of 16 patterns is used (or you can specify one)
|
|
18
|
+
and the sizing of the pattern elements is also determined by the hash values.
|
|
7
19
|
|
|
8
|
-
You can use the generated pattern as the `background-image` for a container.
|
|
20
|
+
You can use the generated pattern as the `background-image` for a container.
|
|
21
|
+
Using the `base64` representation of the pattern still results in SVG
|
|
22
|
+
rendering, so it looks great on retina displays.
|
|
9
23
|
|
|
10
|
-
See the [GitHub Guides](
|
|
24
|
+
See the [GitHub Guides](https://guides.github.com/) site and the [Explore section
|
|
25
|
+
of GitHub](https://github.com/explore) are examples of this library in action.
|
|
26
|
+
Brandon Mills has put together an awesome [live preview
|
|
27
|
+
page](http://btmills.github.io/geopattern/geopattern.html) that's built on his
|
|
28
|
+
Javascript port.
|
|
11
29
|
|
|
12
30
|
## Installation
|
|
13
31
|
|
|
32
|
+
**Note:** as of version `1.4.0`, Ruby version 2 or greater is required.
|
|
33
|
+
|
|
14
34
|
Add this line to your application's Gemfile:
|
|
15
35
|
|
|
16
36
|
gem 'geo_pattern'
|
|
@@ -46,115 +66,220 @@ pattern = GeoPattern.generate('Mastering Markdown', color: '#fc0')
|
|
|
46
66
|
To use a specific [pattern generator](#available-patterns):
|
|
47
67
|
|
|
48
68
|
```ruby
|
|
49
|
-
pattern = GeoPattern.generate('Mastering Markdown',
|
|
69
|
+
pattern = GeoPattern.generate('Mastering Markdown', patterns: :sine_waves)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
To use a subset of the [available patterns](#available-patterns):
|
|
73
|
+
|
|
74
|
+
```ruby
|
|
75
|
+
pattern = GeoPattern.generate('Mastering Markdown', patterns: [:sine_waves, :xes])
|
|
50
76
|
```
|
|
51
77
|
|
|
52
78
|
Get the SVG string:
|
|
53
79
|
|
|
54
80
|
```ruby
|
|
55
|
-
puts pattern.
|
|
81
|
+
puts pattern.to_svg
|
|
56
82
|
# => <svg xmlns="http://www.w3.org/2000/svg" ...
|
|
57
83
|
```
|
|
58
84
|
|
|
59
85
|
Get the Base64 encoded string:
|
|
60
86
|
|
|
61
87
|
```ruby
|
|
62
|
-
puts pattern.
|
|
88
|
+
puts pattern.to_base64
|
|
63
89
|
# => PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC...
|
|
64
90
|
```
|
|
65
91
|
|
|
66
92
|
You can then use this string to set the background:
|
|
67
93
|
|
|
68
94
|
```html
|
|
69
|
-
<div style="background-image: <%= pattern.
|
|
95
|
+
<div style="background-image: <%= pattern.to_data_uri %>"></div>
|
|
70
96
|
```
|
|
71
97
|
|
|
72
98
|
## Available patterns
|
|
73
99
|
|
|
74
|
-
*Note: As of version `1.3.0`, string references (e.g. `overlapping_circles`)
|
|
100
|
+
*Note: As of version `1.3.0`, string references (e.g. `overlapping_circles`)
|
|
101
|
+
are deprecated in favor of symbol references (e.g. `:overlapping_circles`).*
|
|
102
|
+
|
|
103
|
+
### :chevrons
|
|
104
|
+
|
|
105
|
+

|
|
75
106
|
|
|
76
|
-
|
|
107
|
+
|
|
108
|
+
### :octagons
|
|
77
109
|
|
|
78
110
|

|
|
79
111
|
|
|
80
|
-
###
|
|
112
|
+
### :overlapping_circles
|
|
81
113
|
|
|
82
114
|

|
|
83
115
|
|
|
84
|
-
###
|
|
116
|
+
### :plus_signs
|
|
85
117
|
|
|
86
118
|

|
|
87
119
|
|
|
88
|
-
###
|
|
120
|
+
### :xes
|
|
89
121
|
|
|
90
122
|

|
|
91
123
|
|
|
92
|
-
###
|
|
124
|
+
### :sine_waves
|
|
93
125
|
|
|
94
126
|

|
|
95
127
|
|
|
96
|
-
###
|
|
128
|
+
### :hexagons
|
|
97
129
|
|
|
98
130
|

|
|
99
131
|
|
|
100
|
-
###
|
|
132
|
+
### :overlapping_rings
|
|
101
133
|
|
|
102
134
|

|
|
103
135
|
|
|
104
|
-
###
|
|
136
|
+
### :plaid
|
|
105
137
|
|
|
106
138
|

|
|
107
139
|
|
|
108
|
-
###
|
|
140
|
+
### :triangles
|
|
109
141
|
|
|
110
142
|

|
|
111
143
|
|
|
112
|
-
###
|
|
144
|
+
### :squares
|
|
113
145
|
|
|
114
146
|

|
|
115
147
|
|
|
116
|
-
###
|
|
148
|
+
### :nested_squares
|
|
117
149
|
|
|
118
150
|

|
|
119
151
|
|
|
120
|
-
###
|
|
152
|
+
### :mosaic_squares
|
|
121
153
|
|
|
122
154
|

|
|
123
155
|
|
|
124
|
-
###
|
|
156
|
+
### :concentric_circles
|
|
125
157
|
|
|
126
158
|

|
|
127
159
|
|
|
128
|
-
###
|
|
160
|
+
### :diamonds
|
|
129
161
|
|
|
130
162
|

|
|
131
163
|
|
|
132
|
-
###
|
|
164
|
+
### :tessellation
|
|
133
165
|
|
|
134
166
|

|
|
135
167
|
|
|
136
168
|
|
|
169
|
+
## Inspection of pattern
|
|
170
|
+
|
|
171
|
+
If you want to get some more information about a pattern, please use the
|
|
172
|
+
following methods.
|
|
173
|
+
|
|
174
|
+
```ruby
|
|
175
|
+
pattern = GeoPattern.generate('Mastering Markdown', patterns: [:sine_waves, :xes])
|
|
176
|
+
|
|
177
|
+
# The color of the background in html notation
|
|
178
|
+
pattern.background.color.to_html
|
|
179
|
+
|
|
180
|
+
# The color of the background in svg notation
|
|
181
|
+
pattern.background.color.to_svg
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
# The input colors
|
|
185
|
+
pattern.background.preset.color
|
|
186
|
+
pattern.background.preset.base_color
|
|
187
|
+
|
|
188
|
+
# The generator
|
|
189
|
+
pattern.background.generator
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
To get more information about the structure of the pattern, please use the following methods:
|
|
193
|
+
|
|
194
|
+
```ruby
|
|
195
|
+
pattern = GeoPattern.generate('Mastering Markdown', patterns: [:sine_waves, :xes])
|
|
196
|
+
|
|
197
|
+
# The name of the structure
|
|
198
|
+
pattern.structure.name
|
|
199
|
+
|
|
200
|
+
# The generator of the structure
|
|
201
|
+
pattern.structure.generator
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Rake Support
|
|
205
|
+
|
|
206
|
+
```ruby
|
|
207
|
+
string = 'Mastering markdown'
|
|
208
|
+
|
|
209
|
+
require 'geo_pattern/geo_pattern_task'
|
|
210
|
+
|
|
211
|
+
GeoPattern::GeoPatternTask.new(
|
|
212
|
+
name: 'generate',
|
|
213
|
+
description: 'Generate patterns to make them available as fixtures',
|
|
214
|
+
data: {
|
|
215
|
+
'fixtures/generated_patterns/diamonds_with_color.svg' => { input: string, patterns: [:diamonds], color: '#00ff00' },
|
|
216
|
+
'fixtures/generated_patterns/diamonds_with_base_color.svg' => { input: string, patterns: [:diamonds], base_color: '#00ff00' }
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Developing
|
|
222
|
+
|
|
223
|
+
### Generate Fixtures
|
|
224
|
+
|
|
225
|
+
```ruby
|
|
226
|
+
rake fixtures:generate
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Run tests
|
|
230
|
+
|
|
231
|
+
```ruby
|
|
232
|
+
rake test
|
|
233
|
+
```
|
|
234
|
+
|
|
137
235
|
## Contributing
|
|
138
236
|
|
|
139
|
-
1. Fork it (
|
|
237
|
+
1. Fork it ( https://github.com/jasonlong/geo_pattern/fork )
|
|
140
238
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
141
239
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
142
240
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
143
241
|
5. Create new Pull Request
|
|
144
242
|
|
|
145
|
-
##
|
|
243
|
+
## Development
|
|
244
|
+
|
|
245
|
+
Prefix rspec-commandline with `RSPEC_PROFILE=1` to output the ten slowest
|
|
246
|
+
examples of the test suite.
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
RSPEC_PROFILE=1 bundle exec rspec
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Ports & related projects
|
|
146
253
|
|
|
147
254
|
JavaScript port by Brandon Mills:
|
|
148
|
-
https://github.com/btmills/
|
|
255
|
+
https://github.com/btmills/geopattern
|
|
256
|
+
|
|
257
|
+
TypeScript port by MooYeol Lee:
|
|
258
|
+
https://github.com/mooyoul/geo-pattern
|
|
149
259
|
|
|
150
260
|
Python port by Bryan Veloso:
|
|
151
261
|
https://github.com/bryanveloso/geopatterns
|
|
152
262
|
|
|
263
|
+
Elixir port by Anne Johnson:
|
|
264
|
+
https://github.com/annejohnson/geo_pattern
|
|
265
|
+
|
|
153
266
|
PHP port by Anand Capur:
|
|
154
267
|
https://github.com/redeyeventures/geopattern-php
|
|
155
268
|
|
|
156
269
|
Go port by Pravendra Singh:
|
|
157
|
-
https://github.com/pravj/
|
|
270
|
+
https://github.com/pravj/geopattern
|
|
158
271
|
|
|
159
272
|
CoffeeScript port by Aleks (muchweb):
|
|
160
273
|
https://github.com/muchweb/geo-pattern-coffee
|
|
274
|
+
|
|
275
|
+
Cocoa port by Matt Faluotico:
|
|
276
|
+
https://github.com/mattfxyz/GeoPattern-Cocoa
|
|
277
|
+
|
|
278
|
+
Middleman extension by @maxmeyer:
|
|
279
|
+
https://github.com/fedux-org/middleman-geo_pattern
|
|
280
|
+
|
|
281
|
+
Dart(Flutter) port by @suyash:
|
|
282
|
+
https://github.com/suyash/geopattern
|
|
283
|
+
|
|
284
|
+
Lua port by Ivan Azoyan:
|
|
285
|
+
https://github.com/azoyan/geopattern
|
data/Rakefile
CHANGED
|
@@ -1,23 +1,82 @@
|
|
|
1
|
-
|
|
2
|
-
require 'inch/rake'
|
|
3
|
-
require 'rspec/core/rake_task'
|
|
1
|
+
# frozen_string_literal: true
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
task default: :test
|
|
3
|
+
$LOAD_PATH.unshift File.expand_path("lib", __dir__)
|
|
7
4
|
|
|
8
|
-
desc
|
|
9
|
-
task
|
|
10
|
-
# task test: %w(test:rspec test:rubocop)
|
|
5
|
+
desc "Default task running Tests"
|
|
6
|
+
task default: :test
|
|
11
7
|
|
|
8
|
+
desc "Run test suite"
|
|
9
|
+
task test: ["test:standard", "test:rspec"]
|
|
10
|
+
task "test:ci" => ["bootstrap:gem_requirements", :test]
|
|
12
11
|
namespace :test do
|
|
12
|
+
task :rspec do
|
|
13
|
+
sh "rspec"
|
|
14
|
+
end
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
task "inch" do
|
|
17
|
+
sh "inch"
|
|
18
|
+
end
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Inch::Rake::Suggest.new
|
|
20
|
+
require "standard/rake"
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
namespace :gem do
|
|
22
|
-
require
|
|
24
|
+
require "bundler/gem_tasks"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
unless ENV.key?("CI")
|
|
28
|
+
require "geo_pattern/geo_pattern_task"
|
|
29
|
+
|
|
30
|
+
namespace :fixtures do
|
|
31
|
+
string = "Mastering Markdown"
|
|
32
|
+
|
|
33
|
+
GeoPattern::GeoPatternTask.new(
|
|
34
|
+
name: "generate",
|
|
35
|
+
description: "Generate patterns to make them available as fixtures",
|
|
36
|
+
data: {
|
|
37
|
+
"fixtures/generated_patterns/chevrons.svg" => {input: string, patterns: [:chevrons]},
|
|
38
|
+
"fixtures/generated_patterns/concentric_circles.svg" => {input: string, patterns: [:concentric_circles]},
|
|
39
|
+
"fixtures/generated_patterns/diamonds.svg" => {input: string, patterns: [:diamonds]},
|
|
40
|
+
"fixtures/generated_patterns/hexagons.svg" => {input: string, patterns: [:hexagons]},
|
|
41
|
+
"fixtures/generated_patterns/mosaic_squares.svg" => {input: string, patterns: [:mosaic_squares]},
|
|
42
|
+
"fixtures/generated_patterns/nested_squares.svg" => {input: string, patterns: [:nested_squares]},
|
|
43
|
+
"fixtures/generated_patterns/octagons.svg" => {input: string, patterns: [:octagons]},
|
|
44
|
+
"fixtures/generated_patterns/overlapping_circles.svg" => {input: string, patterns: [:overlapping_circles]},
|
|
45
|
+
"fixtures/generated_patterns/overlapping_rings.svg" => {input: string, patterns: [:overlapping_rings]},
|
|
46
|
+
"fixtures/generated_patterns/plaid.svg" => {input: string, patterns: [:plaid]},
|
|
47
|
+
"fixtures/generated_patterns/plus_signs.svg" => {input: string, patterns: [:plus_signs]},
|
|
48
|
+
"fixtures/generated_patterns/sine_waves.svg" => {input: string, patterns: [:sine_waves]},
|
|
49
|
+
"fixtures/generated_patterns/squares.svg" => {input: string, patterns: [:squares]},
|
|
50
|
+
"fixtures/generated_patterns/tessellation.svg" => {input: string, patterns: [:tessellation]},
|
|
51
|
+
"fixtures/generated_patterns/triangles.svg" => {input: string, patterns: [:triangles]},
|
|
52
|
+
"fixtures/generated_patterns/xes.svg" => {input: string, patterns: [:xes]},
|
|
53
|
+
"fixtures/generated_patterns/diamonds_with_color.svg" => {input: string, patterns: [:diamonds], color: "#00ff00"},
|
|
54
|
+
"fixtures/generated_patterns/diamonds_with_base_color.svg" => {input: string, patterns: [:diamonds], base_color: "#00ff00"}
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
desc "Bootstrap project"
|
|
61
|
+
task bootstrap: %w[bootstrap:bundler]
|
|
62
|
+
|
|
63
|
+
desc "Bootstrap project for ci"
|
|
64
|
+
task "bootstrap:ci" do
|
|
65
|
+
Rake::Task["bootstrap"].invoke
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
namespace :bootstrap do
|
|
69
|
+
desc "Bootstrap bundler"
|
|
70
|
+
task :bundler do |t|
|
|
71
|
+
puts t.comment
|
|
72
|
+
sh "gem install bundler"
|
|
73
|
+
sh "bundle install"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
desc "Require gems"
|
|
77
|
+
task :gem_requirements do |t|
|
|
78
|
+
puts t.comment
|
|
79
|
+
require "bundler"
|
|
80
|
+
Bundler.require
|
|
81
|
+
end
|
|
23
82
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="459" height="303"><rect x="0" y="0" width="100%" height="100%" fill="rgb(63, 144, 77)" /><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.14133333333333334" stroke-width="1" transform="translate(0.0,-38.33333333333333)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.14133333333333334" stroke-width="1" transform="translate(0.0,265.26666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.08933333333333333" stroke-width="1" transform="translate(76.66666666666666,-38.33333333333333)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.08933333333333333" stroke-width="1" transform="translate(76.66666666666666,265.26666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.13266666666666665" stroke-width="1" transform="translate(153.33333333333331,-38.33333333333333)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.13266666666666665" stroke-width="1" transform="translate(153.33333333333331,265.26666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.15" stroke-width="1" transform="translate(229.99999999999997,-38.33333333333333)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.15" stroke-width="1" transform="translate(229.99999999999997,265.26666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.098" stroke-width="1" transform="translate(306.66666666666663,-38.33333333333333)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.098" stroke-width="1" transform="translate(306.66666666666663,265.26666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.07200000000000001" stroke-width="1" transform="translate(383.33333333333326,-38.33333333333333)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.07200000000000001" stroke-width="1" transform="translate(383.33333333333326,265.26666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.07200000000000001" stroke-width="1" transform="translate(0.0,12.266666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.08066666666666666" stroke-width="1" transform="translate(76.66666666666666,12.266666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.07200000000000001" stroke-width="1" transform="translate(153.33333333333331,12.266666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.08066666666666666" stroke-width="1" transform="translate(229.99999999999997,12.266666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.15" stroke-width="1" transform="translate(306.66666666666663,12.266666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.11533333333333334" stroke-width="1" transform="translate(383.33333333333326,12.266666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.13266666666666665" stroke-width="1" transform="translate(0.0,62.86666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.046" stroke-width="1" transform="translate(76.66666666666666,62.86666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.10666666666666667" stroke-width="1" transform="translate(153.33333333333331,62.86666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.046" stroke-width="1" transform="translate(229.99999999999997,62.86666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.08933333333333333" stroke-width="1" transform="translate(306.66666666666663,62.86666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.046" stroke-width="1" transform="translate(383.33333333333326,62.86666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.12400000000000001" stroke-width="1" transform="translate(0.0,113.46666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.06333333333333334" stroke-width="1" transform="translate(76.66666666666666,113.46666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.046" stroke-width="1" transform="translate(153.33333333333331,113.46666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.03733333333333333" stroke-width="1" transform="translate(229.99999999999997,113.46666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.028666666666666667" stroke-width="1" transform="translate(306.66666666666663,113.46666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.07200000000000001" stroke-width="1" transform="translate(383.33333333333326,113.46666666666665)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.08066666666666666" stroke-width="1" transform="translate(0.0,164.06666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.098" stroke-width="1" transform="translate(76.66666666666666,164.06666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.098" stroke-width="1" transform="translate(153.33333333333331,164.06666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.11533333333333334" stroke-width="1" transform="translate(229.99999999999997,164.06666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.14133333333333334" stroke-width="1" transform="translate(306.66666666666663,164.06666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.11533333333333334" stroke-width="1" transform="translate(383.33333333333326,164.06666666666666)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.05466666666666667" stroke-width="1" transform="translate(0.0,214.66666666666663)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.11533333333333334" stroke-width="1" transform="translate(76.66666666666666,214.66666666666663)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.05466666666666667" stroke-width="1" transform="translate(153.33333333333331,214.66666666666663)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#222" fill-opacity="0.06333333333333334" stroke-width="1" transform="translate(229.99999999999997,214.66666666666663)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.07200000000000001" stroke-width="1" transform="translate(306.66666666666663,214.66666666666663)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g><g stroke="#000" stroke-opacity="0.02" fill="#ddd" fill-opacity="0.05466666666666667" stroke-width="1" transform="translate(383.33333333333326,214.66666666666663)" ><polyline points="0,0,38.33333333333333,26.066666666666663,38.33333333333333,76.66666666666666,0,50.599999999999994,0,0" /><polyline points="38.33333333333333,26.066666666666663,76.66666666666666,0,76.66666666666666,50.599999999999994,38.33333333333333,76.66666666666666,38.33333333333333,26.066666666666663" /></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="408" height="408"><rect x="0" y="0" width="100%" height="100%" fill="rgb(63, 144, 77)" /><circle cx="34.0" cy="34.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.14133333333333334;stroke-width:11.333333333333332px;" /><circle cx="34.0" cy="34.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.05466666666666667" /><circle cx="102.0" cy="34.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.08933333333333333;stroke-width:11.333333333333332px;" /><circle cx="102.0" cy="34.0" r="14.166666666666666" fill="#222" fill-opacity="0.08066666666666666" /><circle cx="170.0" cy="34.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.13266666666666665;stroke-width:11.333333333333332px;" /><circle cx="170.0" cy="34.0" r="14.166666666666666" fill="#222" fill-opacity="0.11533333333333334" /><circle cx="238.0" cy="34.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.15;stroke-width:11.333333333333332px;" /><circle cx="238.0" cy="34.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.12400000000000001" /><circle cx="306.0" cy="34.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.098;stroke-width:11.333333333333332px;" /><circle cx="306.0" cy="34.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.05466666666666667" /><circle cx="374.0" cy="34.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.07200000000000001;stroke-width:11.333333333333332px;" /><circle cx="374.0" cy="34.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.07200000000000001" /><circle cx="34.0" cy="102.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.07200000000000001;stroke-width:11.333333333333332px;" /><circle cx="34.0" cy="102.0" r="14.166666666666666" fill="#222" fill-opacity="0.06333333333333334" /><circle cx="102.0" cy="102.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.08066666666666666;stroke-width:11.333333333333332px;" /><circle cx="102.0" cy="102.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.05466666666666667" /><circle cx="170.0" cy="102.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.07200000000000001;stroke-width:11.333333333333332px;" /><circle cx="170.0" cy="102.0" r="14.166666666666666" fill="#222" fill-opacity="0.11533333333333334" /><circle cx="238.0" cy="102.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.08066666666666666;stroke-width:11.333333333333332px;" /><circle cx="238.0" cy="102.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.05466666666666667" /><circle cx="306.0" cy="102.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.15;stroke-width:11.333333333333332px;" /><circle cx="306.0" cy="102.0" r="14.166666666666666" fill="#222" fill-opacity="0.11533333333333334" /><circle cx="374.0" cy="102.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.11533333333333334;stroke-width:11.333333333333332px;" /><circle cx="374.0" cy="102.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.14133333333333334" /><circle cx="34.0" cy="170.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.13266666666666665;stroke-width:11.333333333333332px;" /><circle cx="34.0" cy="170.0" r="14.166666666666666" fill="#222" fill-opacity="0.11533333333333334" /><circle cx="102.0" cy="170.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.046;stroke-width:11.333333333333332px;" /><circle cx="102.0" cy="170.0" r="14.166666666666666" fill="#222" fill-opacity="0.098" /><circle cx="170.0" cy="170.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.10666666666666667;stroke-width:11.333333333333332px;" /><circle cx="170.0" cy="170.0" r="14.166666666666666" fill="#222" fill-opacity="0.098" /><circle cx="238.0" cy="170.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.046;stroke-width:11.333333333333332px;" /><circle cx="238.0" cy="170.0" r="14.166666666666666" fill="#222" fill-opacity="0.08066666666666666" /><circle cx="306.0" cy="170.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.08933333333333333;stroke-width:11.333333333333332px;" /><circle cx="306.0" cy="170.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.07200000000000001" /><circle cx="374.0" cy="170.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.046;stroke-width:11.333333333333332px;" /><circle cx="374.0" cy="170.0" r="14.166666666666666" fill="#222" fill-opacity="0.028666666666666667" /><circle cx="34.0" cy="238.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.12400000000000001;stroke-width:11.333333333333332px;" /><circle cx="34.0" cy="238.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.03733333333333333" /><circle cx="102.0" cy="238.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.06333333333333334;stroke-width:11.333333333333332px;" /><circle cx="102.0" cy="238.0" r="14.166666666666666" fill="#222" fill-opacity="0.046" /><circle cx="170.0" cy="238.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.046;stroke-width:11.333333333333332px;" /><circle cx="170.0" cy="238.0" r="14.166666666666666" fill="#222" fill-opacity="0.06333333333333334" /><circle cx="238.0" cy="238.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.03733333333333333;stroke-width:11.333333333333332px;" /><circle cx="238.0" cy="238.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.12400000000000001" /><circle cx="306.0" cy="238.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.028666666666666667;stroke-width:11.333333333333332px;" /><circle cx="306.0" cy="238.0" r="14.166666666666666" fill="#222" fill-opacity="0.046" /><circle cx="374.0" cy="238.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.07200000000000001;stroke-width:11.333333333333332px;" /><circle cx="374.0" cy="238.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.08933333333333333" /><circle cx="34.0" cy="306.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.08066666666666666;stroke-width:11.333333333333332px;" /><circle cx="34.0" cy="306.0" r="14.166666666666666" fill="#222" fill-opacity="0.046" /><circle cx="102.0" cy="306.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.098;stroke-width:11.333333333333332px;" /><circle cx="102.0" cy="306.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.10666666666666667" /><circle cx="170.0" cy="306.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.098;stroke-width:11.333333333333332px;" /><circle cx="170.0" cy="306.0" r="14.166666666666666" fill="#222" fill-opacity="0.046" /><circle cx="238.0" cy="306.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.11533333333333334;stroke-width:11.333333333333332px;" /><circle cx="238.0" cy="306.0" r="14.166666666666666" fill="#222" fill-opacity="0.13266666666666665" /><circle cx="306.0" cy="306.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.14133333333333334;stroke-width:11.333333333333332px;" /><circle cx="306.0" cy="306.0" r="14.166666666666666" fill="#222" fill-opacity="0.11533333333333334" /><circle cx="374.0" cy="306.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.11533333333333334;stroke-width:11.333333333333332px;" /><circle cx="374.0" cy="306.0" r="14.166666666666666" fill="#222" fill-opacity="0.15" /><circle cx="34.0" cy="374.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.05466666666666667;stroke-width:11.333333333333332px;" /><circle cx="34.0" cy="374.0" r="14.166666666666666" fill="#222" fill-opacity="0.08066666666666666" /><circle cx="102.0" cy="374.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.11533333333333334;stroke-width:11.333333333333332px;" /><circle cx="102.0" cy="374.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.07200000000000001" /><circle cx="170.0" cy="374.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.05466666666666667;stroke-width:11.333333333333332px;" /><circle cx="170.0" cy="374.0" r="14.166666666666666" fill="#222" fill-opacity="0.08066666666666666" /><circle cx="238.0" cy="374.0" r="28.333333333333332" fill="none" stroke="#222" style="opacity:0.06333333333333334;stroke-width:11.333333333333332px;" /><circle cx="238.0" cy="374.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.07200000000000001" /><circle cx="306.0" cy="374.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.07200000000000001;stroke-width:11.333333333333332px;" /><circle cx="306.0" cy="374.0" r="14.166666666666666" fill="#ddd" fill-opacity="0.07200000000000001" /><circle cx="374.0" cy="374.0" r="28.333333333333332" fill="none" stroke="#ddd" style="opacity:0.05466666666666667;stroke-width:11.333333333333332px;" /><circle cx="374.0" cy="374.0" r="14.166666666666666" fill="#222" fill-opacity="0.098" /></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="284" height="94"><rect x="0" y="0" width="100%" height="100%" fill="rgb(63, 144, 77)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.14133333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(-23.666666666666668, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.14133333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(260.3333333333333, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.14133333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(-23.666666666666668, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.14133333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(260.3333333333333, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.08933333333333333" stroke="#000" stroke-opacity="0.02" transform="translate(23.666666666666668, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.08933333333333333" stroke="#000" stroke-opacity="0.02" transform="translate(23.666666666666668, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.13266666666666665" stroke="#000" stroke-opacity="0.02" transform="translate(71.0, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.13266666666666665" stroke="#000" stroke-opacity="0.02" transform="translate(71.0, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.15" stroke="#000" stroke-opacity="0.02" transform="translate(118.33333333333333, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.15" stroke="#000" stroke-opacity="0.02" transform="translate(118.33333333333333, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.098" stroke="#000" stroke-opacity="0.02" transform="translate(165.66666666666669, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.098" stroke="#000" stroke-opacity="0.02" transform="translate(165.66666666666669, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(213.00000000000003, -15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(213.00000000000003, 78.33333333333333)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(0.0, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(284.0, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.08066666666666666" stroke="#000" stroke-opacity="0.02" transform="translate(47.333333333333336, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(94.66666666666667, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.08066666666666666" stroke="#000" stroke-opacity="0.02" transform="translate(142.0, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.15" stroke="#000" stroke-opacity="0.02" transform="translate(189.33333333333334, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.11533333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(236.66666666666669, 0.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.13266666666666665" stroke="#000" stroke-opacity="0.02" transform="translate(-23.666666666666668, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.13266666666666665" stroke="#000" stroke-opacity="0.02" transform="translate(260.3333333333333, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.046" stroke="#000" stroke-opacity="0.02" transform="translate(23.666666666666668, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.10666666666666667" stroke="#000" stroke-opacity="0.02" transform="translate(71.0, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.046" stroke="#000" stroke-opacity="0.02" transform="translate(118.33333333333333, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.08933333333333333" stroke="#000" stroke-opacity="0.02" transform="translate(165.66666666666669, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.046" stroke="#000" stroke-opacity="0.02" transform="translate(213.00000000000003, 15.666666666666666)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.12400000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(0.0, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.12400000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(284.0, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.06333333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(47.333333333333336, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.046" stroke="#000" stroke-opacity="0.02" transform="translate(94.66666666666667, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.03733333333333333" stroke="#000" stroke-opacity="0.02" transform="translate(142.0, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.028666666666666667" stroke="#000" stroke-opacity="0.02" transform="translate(189.33333333333334, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(236.66666666666669, 31.333333333333336)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.08066666666666666" stroke="#000" stroke-opacity="0.02" transform="translate(-23.666666666666668, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.08066666666666666" stroke="#000" stroke-opacity="0.02" transform="translate(260.3333333333333, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.098" stroke="#000" stroke-opacity="0.02" transform="translate(23.666666666666668, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.098" stroke="#000" stroke-opacity="0.02" transform="translate(71.0, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.11533333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(118.33333333333333, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.14133333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(165.66666666666669, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.11533333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(213.00000000000003, 47.0)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.05466666666666667" stroke="#000" stroke-opacity="0.02" transform="translate(0.0, 62.666666666666664)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.05466666666666667" stroke="#000" stroke-opacity="0.02" transform="translate(284.0, 62.666666666666664)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.11533333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(47.333333333333336, 62.666666666666664)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.05466666666666667" stroke="#000" stroke-opacity="0.02" transform="translate(94.66666666666667, 62.666666666666664)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#222" fill-opacity="0.06333333333333334" stroke="#000" stroke-opacity="0.02" transform="translate(142.0, 62.666666666666664)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.07200000000000001" stroke="#000" stroke-opacity="0.02" transform="translate(189.33333333333334, 62.666666666666664)" /><polyline points="23.666666666666668, 0, 47.333333333333336, 15.666666666666666, 23.666666666666668, 31.333333333333332, 0, 15.666666666666666" fill="#ddd" fill-opacity="0.05466666666666667" stroke="#000" stroke-opacity="0.02" transform="translate(236.66666666666669, 62.666666666666664)" /></svg>
|