This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

๐Ÿ’š Use seeded RNG in dna-analysis-machine example for stable test snapshots (#25)

Co-authored-by: gwennlbh <39094199+gwennlbh@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

author
Copilot
co-author
gwennlbh
co-author
copilot-swe-agent[bot]
committer
GitHub
date (Oct 22, 2025, 4:58 PM +0200) commit 182692fc parent fa6cada6
+368 -360
+1
Cargo.lock
··· 993 993 version = "0.1.0" 994 994 dependencies = [ 995 995 "insta", 996 + "itertools 0.12.1", 996 997 "rand 0.9.0", 997 998 "shapemaker", 998 999 ]
+1
examples/dna-analysis-machine/Cargo.toml
··· 4 4 edition = "2024" 5 5 6 6 [dependencies] 7 + itertools = "0.12.1" 7 8 rand = "0.9.0" 8 9 shapemaker = { path = "../../" } 9 10
+7 -5
examples/dna-analysis-machine/src/main.rs
··· 1 - use rand; 1 + use itertools::Itertools; 2 + use rand::{SeedableRng, Rng}; 2 3 use shapemaker::*; 3 4 4 5 fn artwork() -> Canvas { 6 + let mut rng = rand::rngs::StdRng::seed_from_u64(42); 5 7 let mut canvas = Canvas::with_colors(ColorMapping { 6 8 black: "#000000".into(), 7 9 white: "#ffffff".into(), ··· 27 29 Region::from_bottomleft(draw_in.bottomleft().translated(2, -1), (3, 3)) 28 30 .unwrap(); 29 31 30 - canvas.n_random_curves_within(&mut rand::rng(), &strands_in, 30, "strands"); 32 + canvas.n_random_curves_within(&mut rng, &strands_in, 30, "strands"); 31 33 32 - for (i, obj) in canvas.layer("strands").objects.values_mut().enumerate() { 34 + for (i, (_key, obj)) in canvas.layer("strands").objects.iter_mut().sorted_by_key(|(k, _)| *k).enumerate() { 33 35 obj.recolor(if i % 2 == 0 { Cyan } else { Pink }); 34 36 obj.filter(Filter::glow(4.0)); 35 37 } ··· 39 41 let red_dot = Object::BigCircle( 40 42 Region::from_topright(draw_in.topright().translated(-3, 1), (4, 3)) 41 43 .unwrap() 42 - .random_point(&mut rand::rng()), 44 + .random_point(&mut rng), 43 45 ) 44 46 .colored(Red) 45 47 .filtered(Filter::glow(5.0)); ··· 54 56 if red_dot.region().contains(&point) { 55 57 continue; 56 58 } 57 - if rand::random() { 59 + if rng.random() { 58 60 Object::BigCircle(point) 59 61 } else { 60 62 Object::Rectangle(point, point)
+351 -351
examples/dna-analysis-machine/src/snapshots/dna_analysis_machine__artwork.snap
··· 7 7 <g class="layer" data-layer="hatches"> 8 8 <rect data-object="hatches--anon-0" height="50" style="fill: url(#pattern-hatched-45deg-white-0.5-0.25);" width="50" x="50" y="50"/> 9 9 <rect data-object="hatches--anon-1" height="50" style="fill: url(#pattern-hatched-45deg-white-0.6-0.25);" width="50" x="100" y="50"/> 10 - <rect data-object="hatches--anon-10" height="50" style="fill: url(#pattern-hatched-45deg-white-1.5-0.25);" width="50" x="550" y="50"/> 10 + <circle cx="575" cy="75" data-object="hatches--anon-10" r="25" style="fill: url(#pattern-hatched-45deg-white-1.5-0.25);"/> 11 11 <circle cx="625" cy="75" data-object="hatches--anon-11" r="25" style="fill: url(#pattern-hatched-45deg-white-1.6-0.25);"/> 12 - <circle cx="675" cy="75" data-object="hatches--anon-12" r="25" style="fill: url(#pattern-hatched-45deg-white-1.7-0.25);"/> 12 + <rect data-object="hatches--anon-12" height="50" style="fill: url(#pattern-hatched-45deg-white-1.7-0.25);" width="50" x="650" y="50"/> 13 13 <rect data-object="hatches--anon-13" height="50" style="fill: url(#pattern-hatched-45deg-white-1.8-0.25);" width="50" x="700" y="50"/> 14 14 <rect data-object="hatches--anon-14" height="50" style="fill: url(#pattern-hatched-45deg-white-1.9-0.25);" width="50" x="50" y="100"/> 15 15 <rect data-object="hatches--anon-15" height="50" style="fill: url(#pattern-hatched-45deg-white-2-0.25);" width="50" x="100" y="100"/> 16 16 <rect data-object="hatches--anon-16" height="50" style="fill: url(#pattern-hatched-45deg-white-2.1-0.25);" width="50" x="150" y="100"/> 17 17 <rect data-object="hatches--anon-17" height="50" style="fill: url(#pattern-hatched-45deg-white-2.2-0.25);" width="50" x="200" y="100"/> 18 - <circle cx="275" cy="125" data-object="hatches--anon-18" r="25" style="fill: url(#pattern-hatched-45deg-white-2.3-0.25);"/> 19 - <rect data-object="hatches--anon-19" height="50" style="fill: url(#pattern-hatched-45deg-white-2.4-0.25);" width="50" x="300" y="100"/> 20 - <rect data-object="hatches--anon-2" height="50" style="fill: url(#pattern-hatched-45deg-white-0.7-0.25);" width="50" x="150" y="50"/> 21 - <circle cx="375" cy="125" data-object="hatches--anon-20" r="25" style="fill: url(#pattern-hatched-45deg-white-2.5-0.25);"/> 18 + <rect data-object="hatches--anon-18" height="50" style="fill: url(#pattern-hatched-45deg-white-2.3-0.25);" width="50" x="250" y="100"/> 19 + <circle cx="325" cy="125" data-object="hatches--anon-19" r="25" style="fill: url(#pattern-hatched-45deg-white-2.4-0.25);"/> 20 + <circle cx="175" cy="75" data-object="hatches--anon-2" r="25" style="fill: url(#pattern-hatched-45deg-white-0.7-0.25);"/> 21 + <rect data-object="hatches--anon-20" height="50" style="fill: url(#pattern-hatched-45deg-white-2.5-0.25);" width="50" x="350" y="100"/> 22 22 <circle cx="425" cy="125" data-object="hatches--anon-21" r="25" style="fill: url(#pattern-hatched-45deg-white-2.6-0.25);"/> 23 - <circle cx="475" cy="125" data-object="hatches--anon-22" r="25" style="fill: url(#pattern-hatched-45deg-white-2.7-0.25);"/> 24 - <circle cx="525" cy="125" data-object="hatches--anon-23" r="25" style="fill: url(#pattern-hatched-45deg-white-2.8-0.25);"/> 23 + <rect data-object="hatches--anon-22" height="50" style="fill: url(#pattern-hatched-45deg-white-2.7-0.25);" width="50" x="450" y="100"/> 24 + <rect data-object="hatches--anon-23" height="50" style="fill: url(#pattern-hatched-45deg-white-2.8-0.25);" width="50" x="500" y="100"/> 25 25 <circle cx="575" cy="125" data-object="hatches--anon-24" r="25" style="fill: url(#pattern-hatched-45deg-white-2.9-0.25);"/> 26 - <circle cx="625" cy="125" data-object="hatches--anon-25" r="25" style="fill: url(#pattern-hatched-45deg-white-3-0.25);"/> 26 + <rect data-object="hatches--anon-25" height="50" style="fill: url(#pattern-hatched-45deg-white-3-0.25);" width="50" x="600" y="100"/> 27 27 <rect data-object="hatches--anon-26" height="50" style="fill: url(#pattern-hatched-45deg-white-3.1-0.25);" width="50" x="650" y="100"/> 28 - <circle cx="725" cy="125" data-object="hatches--anon-27" r="25" style="fill: url(#pattern-hatched-45deg-white-3.2-0.25);"/> 29 - <rect data-object="hatches--anon-28" height="50" style="fill: url(#pattern-hatched-45deg-white-3.3-0.25);" width="50" x="50" y="150"/> 28 + <rect data-object="hatches--anon-27" height="50" style="fill: url(#pattern-hatched-45deg-white-3.2-0.25);" width="50" x="700" y="100"/> 29 + <circle cx="75" cy="175" data-object="hatches--anon-28" r="25" style="fill: url(#pattern-hatched-45deg-white-3.3-0.25);"/> 30 30 <circle cx="125" cy="175" data-object="hatches--anon-29" r="25" style="fill: url(#pattern-hatched-45deg-white-3.4-0.25);"/> 31 31 <circle cx="225" cy="75" data-object="hatches--anon-3" r="25" style="fill: url(#pattern-hatched-45deg-white-0.8-0.25);"/> 32 32 <rect data-object="hatches--anon-30" height="50" style="fill: url(#pattern-hatched-45deg-white-3.5-0.25);" width="50" x="150" y="150"/> 33 33 <rect data-object="hatches--anon-31" height="50" style="fill: url(#pattern-hatched-45deg-white-3.6-0.25);" width="50" x="200" y="150"/> 34 34 <circle cx="275" cy="175" data-object="hatches--anon-32" r="25" style="fill: url(#pattern-hatched-45deg-white-3.7-0.25);"/> 35 - <circle cx="325" cy="175" data-object="hatches--anon-33" r="25" style="fill: url(#pattern-hatched-45deg-white-3.8-0.25);"/> 35 + <rect data-object="hatches--anon-33" height="50" style="fill: url(#pattern-hatched-45deg-white-3.8-0.25);" width="50" x="300" y="150"/> 36 36 <rect data-object="hatches--anon-34" height="50" style="fill: url(#pattern-hatched-45deg-white-3.9-0.25);" width="50" x="350" y="150"/> 37 37 <rect data-object="hatches--anon-35" height="50" style="fill: url(#pattern-hatched-45deg-white-4-0.25);" width="50" x="400" y="150"/> 38 - <rect data-object="hatches--anon-36" height="50" style="fill: url(#pattern-hatched-45deg-white-4.1-0.25);" width="50" x="450" y="150"/> 38 + <circle cx="475" cy="175" data-object="hatches--anon-36" r="25" style="fill: url(#pattern-hatched-45deg-white-4.1-0.25);"/> 39 39 <circle cx="525" cy="175" data-object="hatches--anon-37" r="25" style="fill: url(#pattern-hatched-45deg-white-4.2-0.25);"/> 40 - <circle cx="625" cy="175" data-object="hatches--anon-38" r="25" style="fill: url(#pattern-hatched-45deg-white-4.4-0.25);"/> 41 - <rect data-object="hatches--anon-39" height="50" style="fill: url(#pattern-hatched-45deg-white-4.5-0.25);" width="50" x="650" y="150"/> 42 - <rect data-object="hatches--anon-4" height="50" style="fill: url(#pattern-hatched-45deg-white-0.9-0.25);" width="50" x="250" y="50"/> 43 - <rect data-object="hatches--anon-40" height="50" style="fill: url(#pattern-hatched-45deg-white-4.6-0.25);" width="50" x="700" y="150"/> 44 - <rect data-object="hatches--anon-41" height="50" style="fill: url(#pattern-hatched-45deg-white-4.7-0.25);" width="50" x="50" y="200"/> 45 - <circle cx="125" cy="225" data-object="hatches--anon-42" r="25" style="fill: url(#pattern-hatched-45deg-white-4.8-0.25);"/> 46 - <rect data-object="hatches--anon-43" height="50" style="fill: url(#pattern-hatched-45deg-white-4.9-0.25);" width="50" x="300" y="200"/> 47 - <circle cx="375" cy="225" data-object="hatches--anon-44" r="25" style="fill: url(#pattern-hatched-45deg-white-5-0.25);"/> 48 - <circle cx="425" cy="225" data-object="hatches--anon-45" r="25" style="fill: url(#pattern-hatched-45deg-white-5.1-0.25);"/> 49 - <rect data-object="hatches--anon-46" height="50" style="fill: url(#pattern-hatched-45deg-white-5.2-0.25);" width="50" x="450" y="200"/> 50 - <rect data-object="hatches--anon-47" height="50" style="fill: url(#pattern-hatched-45deg-white-5.3-0.25);" width="50" x="500" y="200"/> 51 - <rect data-object="hatches--anon-48" height="50" style="fill: url(#pattern-hatched-45deg-white-5.4-0.25);" width="50" x="550" y="200"/> 52 - <circle cx="625" cy="225" data-object="hatches--anon-49" r="25" style="fill: url(#pattern-hatched-45deg-white-5.5-0.25);"/> 53 - <rect data-object="hatches--anon-5" height="50" style="fill: url(#pattern-hatched-45deg-white-1-0.25);" width="50" x="300" y="50"/> 54 - <circle cx="675" cy="225" data-object="hatches--anon-50" r="25" style="fill: url(#pattern-hatched-45deg-white-5.6-0.25);"/> 55 - <rect data-object="hatches--anon-51" height="50" style="fill: url(#pattern-hatched-45deg-white-5.7-0.25);" width="50" x="700" y="200"/> 56 - <rect data-object="hatches--anon-52" height="50" style="fill: url(#pattern-hatched-45deg-white-5.8-0.25);" width="50" x="50" y="250"/> 40 + <circle cx="575" cy="175" data-object="hatches--anon-38" r="25" style="fill: url(#pattern-hatched-45deg-white-4.3-0.25);"/> 41 + <rect data-object="hatches--anon-39" height="50" style="fill: url(#pattern-hatched-45deg-white-4.4-0.25);" width="50" x="600" y="150"/> 42 + <circle cx="275" cy="75" data-object="hatches--anon-4" r="25" style="fill: url(#pattern-hatched-45deg-white-0.9-0.25);"/> 43 + <circle cx="675" cy="175" data-object="hatches--anon-40" r="25" style="fill: url(#pattern-hatched-45deg-white-4.5-0.25);"/> 44 + <rect data-object="hatches--anon-41" height="50" style="fill: url(#pattern-hatched-45deg-white-4.6-0.25);" width="50" x="700" y="150"/> 45 + <circle cx="75" cy="225" data-object="hatches--anon-42" r="25" style="fill: url(#pattern-hatched-45deg-white-4.7-0.25);"/> 46 + <circle cx="125" cy="225" data-object="hatches--anon-43" r="25" style="fill: url(#pattern-hatched-45deg-white-4.8-0.25);"/> 47 + <circle cx="325" cy="225" data-object="hatches--anon-44" r="25" style="fill: url(#pattern-hatched-45deg-white-4.9-0.25);"/> 48 + <rect data-object="hatches--anon-45" height="50" style="fill: url(#pattern-hatched-45deg-white-5-0.25);" width="50" x="350" y="200"/> 49 + <rect data-object="hatches--anon-46" height="50" style="fill: url(#pattern-hatched-45deg-white-5.1-0.25);" width="50" x="400" y="200"/> 50 + <rect data-object="hatches--anon-47" height="50" style="fill: url(#pattern-hatched-45deg-white-5.2-0.25);" width="50" x="450" y="200"/> 51 + <rect data-object="hatches--anon-48" height="50" style="fill: url(#pattern-hatched-45deg-white-5.3-0.25);" width="50" x="500" y="200"/> 52 + <rect data-object="hatches--anon-49" height="50" style="fill: url(#pattern-hatched-45deg-white-5.5-0.25);" width="50" x="600" y="200"/> 53 + <circle cx="325" cy="75" data-object="hatches--anon-5" r="25" style="fill: url(#pattern-hatched-45deg-white-1-0.25);"/> 54 + <rect data-object="hatches--anon-50" height="50" style="fill: url(#pattern-hatched-45deg-white-5.6-0.25);" width="50" x="650" y="200"/> 55 + <circle cx="725" cy="225" data-object="hatches--anon-51" r="25" style="fill: url(#pattern-hatched-45deg-white-5.7-0.25);"/> 56 + <circle cx="75" cy="275" data-object="hatches--anon-52" r="25" style="fill: url(#pattern-hatched-45deg-white-5.8-0.25);"/> 57 57 <rect data-object="hatches--anon-53" height="50" style="fill: url(#pattern-hatched-45deg-white-5.9-0.25);" width="50" x="100" y="250"/> 58 - <circle cx="325" cy="275" data-object="hatches--anon-54" r="25" style="fill: url(#pattern-hatched-45deg-white-6-0.25);"/> 59 - <circle cx="375" cy="275" data-object="hatches--anon-55" r="25" style="fill: url(#pattern-hatched-45deg-white-6.1-0.25);"/> 58 + <rect data-object="hatches--anon-54" height="50" style="fill: url(#pattern-hatched-45deg-white-6-0.25);" width="50" x="300" y="250"/> 59 + <rect data-object="hatches--anon-55" height="50" style="fill: url(#pattern-hatched-45deg-white-6.1-0.25);" width="50" x="350" y="250"/> 60 60 <rect data-object="hatches--anon-56" height="50" style="fill: url(#pattern-hatched-45deg-white-6.2-0.25);" width="50" x="400" y="250"/> 61 61 <circle cx="475" cy="275" data-object="hatches--anon-57" r="25" style="fill: url(#pattern-hatched-45deg-white-6.3-0.25);"/> 62 62 <circle cx="525" cy="275" data-object="hatches--anon-58" r="25" style="fill: url(#pattern-hatched-45deg-white-6.4-0.25);"/> 63 63 <circle cx="575" cy="275" data-object="hatches--anon-59" r="25" style="fill: url(#pattern-hatched-45deg-white-6.5-0.25);"/> 64 64 <circle cx="375" cy="75" data-object="hatches--anon-6" r="25" style="fill: url(#pattern-hatched-45deg-white-1.1-0.25);"/> 65 - <circle cx="625" cy="275" data-object="hatches--anon-60" r="25" style="fill: url(#pattern-hatched-45deg-white-6.6-0.25);"/> 65 + <rect data-object="hatches--anon-60" height="50" style="fill: url(#pattern-hatched-45deg-white-6.6-0.25);" width="50" x="600" y="250"/> 66 66 <rect data-object="hatches--anon-61" height="50" style="fill: url(#pattern-hatched-45deg-white-6.7-0.25);" width="50" x="650" y="250"/> 67 67 <rect data-object="hatches--anon-62" height="50" style="fill: url(#pattern-hatched-45deg-white-6.8-0.25);" width="50" x="700" y="250"/> 68 68 <circle cx="75" cy="325" data-object="hatches--anon-63" r="25" style="fill: url(#pattern-hatched-45deg-white-6.9-0.25);"/> 69 - <circle cx="125" cy="325" data-object="hatches--anon-64" r="25" style="fill: url(#pattern-hatched-45deg-white-7-0.25);"/> 69 + <rect data-object="hatches--anon-64" height="50" style="fill: url(#pattern-hatched-45deg-white-7-0.25);" width="50" x="100" y="300"/> 70 70 <rect data-object="hatches--anon-65" height="50" style="fill: url(#pattern-hatched-45deg-white-7.1-0.25);" width="50" x="300" y="300"/> 71 - <circle cx="375" cy="325" data-object="hatches--anon-66" r="25" style="fill: url(#pattern-hatched-45deg-white-7.2-0.25);"/> 71 + <rect data-object="hatches--anon-66" height="50" style="fill: url(#pattern-hatched-45deg-white-7.2-0.25);" width="50" x="350" y="300"/> 72 72 <rect data-object="hatches--anon-67" height="50" style="fill: url(#pattern-hatched-45deg-white-7.3-0.25);" width="50" x="400" y="300"/> 73 73 <circle cx="475" cy="325" data-object="hatches--anon-68" r="25" style="fill: url(#pattern-hatched-45deg-white-7.4-0.25);"/> 74 74 <circle cx="525" cy="325" data-object="hatches--anon-69" r="25" style="fill: url(#pattern-hatched-45deg-white-7.5-0.25);"/> 75 75 <rect data-object="hatches--anon-7" height="50" style="fill: url(#pattern-hatched-45deg-white-1.2-0.25);" width="50" x="400" y="50"/> 76 - <circle cx="575" cy="325" data-object="hatches--anon-70" r="25" style="fill: url(#pattern-hatched-45deg-white-7.6-0.25);"/> 77 - <circle cx="625" cy="325" data-object="hatches--anon-71" r="25" style="fill: url(#pattern-hatched-45deg-white-7.7-0.25);"/> 78 - <rect data-object="hatches--anon-72" height="50" style="fill: url(#pattern-hatched-45deg-white-7.8-0.25);" width="50" x="650" y="300"/> 79 - <rect data-object="hatches--anon-73" height="50" style="fill: url(#pattern-hatched-45deg-white-7.9-0.25);" width="50" x="700" y="300"/> 76 + <rect data-object="hatches--anon-70" height="50" style="fill: url(#pattern-hatched-45deg-white-7.6-0.25);" width="50" x="550" y="300"/> 77 + <rect data-object="hatches--anon-71" height="50" style="fill: url(#pattern-hatched-45deg-white-7.7-0.25);" width="50" x="600" y="300"/> 78 + <circle cx="675" cy="325" data-object="hatches--anon-72" r="25" style="fill: url(#pattern-hatched-45deg-white-7.8-0.25);"/> 79 + <circle cx="725" cy="325" data-object="hatches--anon-73" r="25" style="fill: url(#pattern-hatched-45deg-white-7.9-0.25);"/> 80 80 <rect data-object="hatches--anon-74" height="50" style="fill: url(#pattern-hatched-45deg-white-8-0.25);" width="50" x="50" y="350"/> 81 81 <rect data-object="hatches--anon-75" height="50" style="fill: url(#pattern-hatched-45deg-white-8.1-0.25);" width="50" x="100" y="350"/> 82 82 <circle cx="175" cy="375" data-object="hatches--anon-76" r="25" style="fill: url(#pattern-hatched-45deg-white-8.2-0.25);"/> 83 83 <circle cx="225" cy="375" data-object="hatches--anon-77" r="25" style="fill: url(#pattern-hatched-45deg-white-8.3-0.25);"/> 84 - <rect data-object="hatches--anon-78" height="50" style="fill: url(#pattern-hatched-45deg-white-8.4-0.25);" width="50" x="250" y="350"/> 85 - <circle cx="325" cy="375" data-object="hatches--anon-79" r="25" style="fill: url(#pattern-hatched-45deg-white-8.5-0.25);"/> 86 - <rect data-object="hatches--anon-8" height="50" style="fill: url(#pattern-hatched-45deg-white-1.3-0.25);" width="50" x="450" y="50"/> 84 + <circle cx="275" cy="375" data-object="hatches--anon-78" r="25" style="fill: url(#pattern-hatched-45deg-white-8.4-0.25);"/> 85 + <rect data-object="hatches--anon-79" height="50" style="fill: url(#pattern-hatched-45deg-white-8.5-0.25);" width="50" x="300" y="350"/> 86 + <circle cx="475" cy="75" data-object="hatches--anon-8" r="25" style="fill: url(#pattern-hatched-45deg-white-1.3-0.25);"/> 87 87 <circle cx="375" cy="375" data-object="hatches--anon-80" r="25" style="fill: url(#pattern-hatched-45deg-white-8.6-0.25);"/> 88 88 <rect data-object="hatches--anon-81" height="50" style="fill: url(#pattern-hatched-45deg-white-8.7-0.25);" width="50" x="400" y="350"/> 89 89 <rect data-object="hatches--anon-82" height="50" style="fill: url(#pattern-hatched-45deg-white-8.8-0.25);" width="50" x="450" y="350"/> 90 90 <circle cx="525" cy="375" data-object="hatches--anon-83" r="25" style="fill: url(#pattern-hatched-45deg-white-8.9-0.25);"/> 91 - <rect data-object="hatches--anon-84" height="50" style="fill: url(#pattern-hatched-45deg-white-9-0.25);" width="50" x="550" y="350"/> 92 - <rect data-object="hatches--anon-85" height="50" style="fill: url(#pattern-hatched-45deg-white-9.1-0.25);" width="50" x="600" y="350"/> 91 + <circle cx="575" cy="375" data-object="hatches--anon-84" r="25" style="fill: url(#pattern-hatched-45deg-white-9-0.25);"/> 92 + <circle cx="625" cy="375" data-object="hatches--anon-85" r="25" style="fill: url(#pattern-hatched-45deg-white-9.1-0.25);"/> 93 93 <rect data-object="hatches--anon-86" height="50" style="fill: url(#pattern-hatched-45deg-white-9.2-0.25);" width="50" x="650" y="350"/> 94 - <circle cx="725" cy="375" data-object="hatches--anon-87" r="25" style="fill: url(#pattern-hatched-45deg-white-9.3-0.25);"/> 95 - <rect data-object="hatches--anon-9" height="50" style="fill: url(#pattern-hatched-45deg-white-1.4-0.25);" width="50" x="500" y="50"/> 94 + <rect data-object="hatches--anon-87" height="50" style="fill: url(#pattern-hatched-45deg-white-9.3-0.25);" width="50" x="700" y="350"/> 95 + <circle cx="525" cy="75" data-object="hatches--anon-9" r="25" style="fill: url(#pattern-hatched-45deg-white-1.4-0.25);"/> 96 96 </g> 97 97 <g class="layer" data-layer="red dot"> 98 - <g data-object="red dot--anon-0" style="fill: #cf0a2b;transform-box: fill-box;filter: url(#filter-glow-5); overflow: visible;" transform-origin="575 175"> 99 - <circle cx="575" cy="175" data-object="red dot--anon-0" r="25"/> 98 + <g data-object="red dot--anon-0" style="fill: #cf0a2b;transform-box: fill-box;filter: url(#filter-glow-5); overflow: visible;" transform-origin="575 225"> 99 + <circle cx="575" cy="225" data-object="red dot--anon-0" r="25"/> 100 100 </g> 101 101 </g> 102 102 <g class="layer" data-layer="strands"> 103 - <g data-object="strands--strands#0" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 104 - <path d="M250,300 Q200,300,200,250" data-object="strands--strands#0" stroke-width="2"/> 103 + <g data-object="strands--strands#0" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 104 + <path d="M150,250 Q200,250,200,300" data-object="strands--strands#0" stroke-width="2"/> 105 105 </g> 106 - <g data-object="strands--strands#1" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 107 - <path d="M200,300 Q250,300,250,250" data-object="strands--strands#1" stroke-width="2"/> 106 + <g data-object="strands--strands#1" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 275"> 107 + <line data-object="strands--strands#1" stroke-width="2" x1="150" x2="200" y1="250" y2="250"/> 108 108 </g> 109 - <g data-object="strands--strands#10" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 110 - <line data-object="strands--strands#10" stroke-width="2" x1="250" x2="150" y1="250" y2="200"/> 109 + <g data-object="strands--strands#10" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 250"> 110 + <path d="M200,250 Q150,250,150,200" data-object="strands--strands#10" stroke-width="2"/> 111 111 </g> 112 - <g data-object="strands--strands#11" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 113 - <path d="M200,300 Q200,250,250,250" data-object="strands--strands#11" stroke-width="2"/> 112 + <g data-object="strands--strands#11" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="300 350"> 113 + <path d="M250,300 Q250,350,300,350" data-object="strands--strands#11" stroke-width="2"/> 114 114 </g> 115 - <g data-object="strands--strands#12" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 325"> 116 - <path d="M250,250 Q150,250,150,350" data-object="strands--strands#12" stroke-width="2"/> 115 + <g data-object="strands--strands#12" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 116 + <path d="M250,200 Q200,200,200,250" data-object="strands--strands#12" stroke-width="2"/> 117 117 </g> 118 - <g data-object="strands--strands#13" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 119 - <path d="M200,200 Q200,250,250,250" data-object="strands--strands#13" stroke-width="2"/> 118 + <g data-object="strands--strands#13" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="275 300"> 119 + <line data-object="strands--strands#13" stroke-width="2" x1="250" x2="250" y1="250" y2="300"/> 120 120 </g> 121 - <g data-object="strands--strands#14" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 122 - <path d="M150,300 Q150,250,200,250" data-object="strands--strands#14" stroke-width="2"/> 121 + <g data-object="strands--strands#14" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 325"> 122 + <line data-object="strands--strands#14" stroke-width="2" x1="150" x2="200" y1="300" y2="300"/> 123 123 </g> 124 - <g data-object="strands--strands#15" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 325"> 125 - <path d="M150,250 Q250,250,250,350" data-object="strands--strands#15" stroke-width="2"/> 124 + <g data-object="strands--strands#15" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 300"> 125 + <path d="M150,300 Q150,200,250,200" data-object="strands--strands#15" stroke-width="2"/> 126 126 </g> 127 - <g data-object="strands--strands#16" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 128 - <path d="M150,300 Q200,300,200,250" data-object="strands--strands#16" stroke-width="2"/> 127 + <g data-object="strands--strands#16" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 128 + <line data-object="strands--strands#16" stroke-width="2" x1="150" x2="200" y1="300" y2="200"/> 129 129 </g> 130 - <g data-object="strands--strands#17" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 250"> 131 - <line data-object="strands--strands#17" stroke-width="2" x1="200" x2="200" y1="200" y2="250"/> 130 + <g data-object="strands--strands#17" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 325"> 131 + <path d="M150,250 Q250,250,250,350" data-object="strands--strands#17" stroke-width="2"/> 132 132 </g> 133 133 <g data-object="strands--strands#18" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 134 - <path d="M200,300 Q250,300,250,250" data-object="strands--strands#18" stroke-width="2"/> 134 + <path d="M250,300 Q250,200,150,200" data-object="strands--strands#18" stroke-width="2"/> 135 135 </g> 136 - <g data-object="strands--strands#19" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 137 - <path d="M250,200 Q200,200,200,250" data-object="strands--strands#19" stroke-width="2"/> 136 + <g data-object="strands--strands#19" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="175 275"> 137 + <line data-object="strands--strands#19" stroke-width="2" x1="150" x2="150" y1="250" y2="250"/> 138 138 </g> 139 - <g data-object="strands--strands#2" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="300 300"> 140 - <path d="M250,300 Q250,250,300,250" data-object="strands--strands#2" stroke-width="2"/> 139 + <g data-object="strands--strands#2" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 250"> 140 + <path d="M200,200 Q200,250,150,250" data-object="strands--strands#2" stroke-width="2"/> 141 141 </g> 142 - <g data-object="strands--strands#20" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 143 - <path d="M150,250 Q200,250,200,300" data-object="strands--strands#20" stroke-width="2"/> 142 + <g data-object="strands--strands#20" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 143 + <path d="M250,300 Q250,250,200,250" data-object="strands--strands#20" stroke-width="2"/> 144 144 </g> 145 - <g data-object="strands--strands#21" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="275 300"> 146 - <line data-object="strands--strands#21" stroke-width="2" x1="250" x2="250" y1="300" y2="250"/> 145 + <g data-object="strands--strands#21" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 146 + <path d="M250,250 Q200,250,200,300" data-object="strands--strands#21" stroke-width="2"/> 147 147 </g> 148 - <g data-object="strands--strands#22" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 350"> 149 - <path d="M150,300 Q150,350,200,350" data-object="strands--strands#22" stroke-width="2"/> 148 + <g data-object="strands--strands#22" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 275"> 149 + <line data-object="strands--strands#22" stroke-width="2" x1="250" x2="200" y1="250" y2="250"/> 150 150 </g> 151 - <g data-object="strands--strands#23" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 152 - <path d="M250,200 Q200,200,200,250" data-object="strands--strands#23" stroke-width="2"/> 151 + <g data-object="strands--strands#23" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 225"> 152 + <line data-object="strands--strands#23" stroke-width="2" x1="250" x2="150" y1="200" y2="200"/> 153 153 </g> 154 - <g data-object="strands--strands#24" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 155 - <path d="M250,200 Q250,250,200,250" data-object="strands--strands#24" stroke-width="2"/> 154 + <g data-object="strands--strands#24" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 155 + <line data-object="strands--strands#24" stroke-width="2" x1="250" x2="150" y1="200" y2="250"/> 156 156 </g> 157 - <g data-object="strands--strands#25" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 300"> 158 - <path d="M150,300 Q250,300,250,200" data-object="strands--strands#25" stroke-width="2"/> 157 + <g data-object="strands--strands#25" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="175 325"> 158 + <line data-object="strands--strands#25" stroke-width="2" x1="150" x2="150" y1="300" y2="300"/> 159 159 </g> 160 - <g data-object="strands--strands#26" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 350"> 161 - <path d="M200,300 Q150,300,150,350" data-object="strands--strands#26" stroke-width="2"/> 160 + <g data-object="strands--strands#26" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 225"> 161 + <line data-object="strands--strands#26" stroke-width="2" x1="200" x2="200" y1="200" y2="200"/> 162 162 </g> 163 - <g data-object="strands--strands#27" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 225"> 164 - <line data-object="strands--strands#27" stroke-width="2" x1="250" x2="200" y1="200" y2="200"/> 163 + <g data-object="strands--strands#27" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 250"> 164 + <line data-object="strands--strands#27" stroke-width="2" x1="200" x2="200" y1="200" y2="250"/> 165 165 </g> 166 - <g data-object="strands--strands#28" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="300 300"> 167 - <path d="M250,300 Q300,300,300,250" data-object="strands--strands#28" stroke-width="2"/> 166 + <g data-object="strands--strands#28" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 275"> 167 + <path d="M150,200 Q150,300,250,300" data-object="strands--strands#28" stroke-width="2"/> 168 168 </g> 169 - <g data-object="strands--strands#29" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 170 - <path d="M150,300 Q200,300,200,250" data-object="strands--strands#29" stroke-width="2"/> 169 + <g data-object="strands--strands#29" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 170 + <path d="M250,300 Q150,300,150,200" data-object="strands--strands#29" stroke-width="2"/> 171 171 </g> 172 - <g data-object="strands--strands#3" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 250"> 173 - <line data-object="strands--strands#3" stroke-width="2" x1="150" x2="200" y1="250" y2="200"/> 172 + <g data-object="strands--strands#3" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 325"> 173 + <line data-object="strands--strands#3" stroke-width="2" x1="200" x2="150" y1="300" y2="300"/> 174 174 </g> 175 - <g data-object="strands--strands#4" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="300 300"> 176 - <path d="M250,250 Q250,300,300,300" data-object="strands--strands#4" stroke-width="2"/> 175 + <g data-object="strands--strands#4" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 250"> 176 + <path d="M150,250 Q150,200,200,200" data-object="strands--strands#4" stroke-width="2"/> 177 177 </g> 178 - <g data-object="strands--strands#5" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 275"> 179 - <line data-object="strands--strands#5" stroke-width="2" x1="150" x2="250" y1="200" y2="300"/> 178 + <g data-object="strands--strands#5" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="275 325"> 179 + <path d="M200,250 Q300,250,300,350" data-object="strands--strands#5" stroke-width="2"/> 180 180 </g> 181 - <g data-object="strands--strands#6" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 182 - <path d="M200,250 Q250,250,250,300" data-object="strands--strands#6" stroke-width="2"/> 181 + <g data-object="strands--strands#6" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 250"> 182 + <path d="M200,250 Q200,200,150,200" data-object="strands--strands#6" stroke-width="2"/> 183 183 </g> 184 - <g data-object="strands--strands#7" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 300"> 185 - <line data-object="strands--strands#7" stroke-width="2" x1="250" x2="150" y1="300" y2="250"/> 184 + <g data-object="strands--strands#7" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 185 + <path d="M150,300 Q200,300,200,250" data-object="strands--strands#7" stroke-width="2"/> 186 186 </g> 187 - <g data-object="strands--strands#8" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="225 250"> 188 - <line data-object="strands--strands#8" stroke-width="2" x1="200" x2="200" y1="200" y2="250"/> 187 + <g data-object="strands--strands#8" style="stroke: #4fecec; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="200 300"> 188 + <path d="M200,300 Q150,300,150,250" data-object="strands--strands#8" stroke-width="2"/> 189 189 </g> 190 - <g data-object="strands--strands#9" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="275 275"> 191 - <path d="M200,200 Q300,200,300,300" data-object="strands--strands#9" stroke-width="2"/> 190 + <g data-object="strands--strands#9" style="stroke: #e92e76; fill: transparent;transform-box: fill-box;filter: url(#filter-glow-4); overflow: visible;" transform-origin="250 250"> 191 + <line data-object="strands--strands#9" stroke-width="2" x1="200" x2="250" y1="250" y2="200"/> 192 192 </g> 193 193 </g> 194 194 <g class="layer" data-layer="root"/> ··· 207 207 <feMergeNode in="SourceGraphic"/> 208 208 </feMerge> 209 209 </filter> 210 - <pattern height="2.6" id="pattern-hatched-45deg-white-1.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.3,1.3" width="2.6"> 211 - <polygon fill="#ffffff" points="0,0 0.325,0 0,0.325"/> 212 - <polygon fill="#ffffff" points="0,1.3 1.3,0 1.3,0.325 0.325,1.3"/> 210 + <pattern height="1" id="pattern-hatched-45deg-white-0.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.5,0.5" width="1"> 211 + <polygon fill="#ffffff" points="0,0 0.125,0 0,0.125"/> 212 + <polygon fill="#ffffff" points="0,0.5 0.5,0 0.5,0.125 0.125,0.5"/> 213 213 </pattern> 214 - <pattern height="5" id="pattern-hatched-45deg-white-2.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.5,2.5" width="5"> 215 - <polygon fill="#ffffff" points="0,0 0.625,0 0,0.625"/> 216 - <polygon fill="#ffffff" points="0,2.5 2.5,0 2.5,0.625 0.625,2.5"/> 214 + <pattern height="1.2" id="pattern-hatched-45deg-white-0.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.6,0.6" width="1.2"> 215 + <polygon fill="#ffffff" points="0,0 0.15,0 0,0.15"/> 216 + <polygon fill="#ffffff" points="0,0.6 0.6,0 0.6,0.15 0.15,0.6"/> 217 217 </pattern> 218 - <pattern height="10.2" id="pattern-hatched-45deg-white-5.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.1,5.1" width="10.2"> 219 - <polygon fill="#ffffff" points="0,0 1.275,0 0,1.275"/> 220 - <polygon fill="#ffffff" points="0,5.1 5.1,0 5.1,1.275 1.275,5.1"/> 218 + <pattern height="1.4" id="pattern-hatched-45deg-white-0.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.7,0.7" width="1.4"> 219 + <polygon fill="#ffffff" points="0,0 0.175,0 0,0.175"/> 220 + <polygon fill="#ffffff" points="0,0.7 0.7,0 0.7,0.175 0.175,0.7"/> 221 221 </pattern> 222 - <pattern height="14.6" id="pattern-hatched-45deg-white-7.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.3,7.3" width="14.6"> 223 - <polygon fill="#ffffff" points="0,0 1.825,0 0,1.825"/> 224 - <polygon fill="#ffffff" points="0,7.3 7.3,0 7.3,1.825 1.825,7.3"/> 222 + <pattern height="1.6" id="pattern-hatched-45deg-white-0.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.8,0.8" width="1.6"> 223 + <polygon fill="#ffffff" points="0,0 0.2,0 0,0.2"/> 224 + <polygon fill="#ffffff" points="0,0.8 0.8,0 0.8,0.2 0.2,0.8"/> 225 225 </pattern> 226 - <pattern height="6.6" id="pattern-hatched-45deg-white-3.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.3,3.3" width="6.6"> 227 - <polygon fill="#ffffff" points="0,0 0.825,0 0,0.825"/> 228 - <polygon fill="#ffffff" points="0,3.3 3.3,0 3.3,0.825 0.825,3.3"/> 226 + <pattern height="1.8" id="pattern-hatched-45deg-white-0.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.9,0.9" width="1.8"> 227 + <polygon fill="#ffffff" points="0,0 0.225,0 0,0.225"/> 228 + <polygon fill="#ffffff" points="0,0.9 0.9,0 0.9,0.225 0.225,0.9"/> 229 + </pattern> 230 + <pattern height="2" id="pattern-hatched-45deg-white-1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1,1" width="2"> 231 + <polygon fill="#ffffff" points="0,0 0.25,0 0,0.25"/> 232 + <polygon fill="#ffffff" points="0,1 1,0 1,0.25 0.25,1"/> 229 233 </pattern> 230 234 <pattern height="2.2" id="pattern-hatched-45deg-white-1.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.1,1.1" width="2.2"> 231 235 <polygon fill="#ffffff" points="0,0 0.275,0 0,0.275"/> 232 236 <polygon fill="#ffffff" points="0,1.1 1.1,0 1.1,0.275 0.275,1.1"/> 233 237 </pattern> 234 - <pattern height="17" id="pattern-hatched-45deg-white-8.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.5,8.5" width="17"> 235 - <polygon fill="#ffffff" points="0,0 2.125,0 0,2.125"/> 236 - <polygon fill="#ffffff" points="0,8.5 8.5,0 8.5,2.125 2.125,8.5"/> 237 - </pattern> 238 - <pattern height="18.4" id="pattern-hatched-45deg-white-9.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9.2,9.2" width="18.4"> 239 - <polygon fill="#ffffff" points="0,0 2.3,0 0,2.3"/> 240 - <polygon fill="#ffffff" points="0,9.2 9.2,0 9.2,2.3 2.3,9.2"/> 238 + <pattern height="2.4" id="pattern-hatched-45deg-white-1.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.2,1.2" width="2.4"> 239 + <polygon fill="#ffffff" points="0,0 0.3,0 0,0.3"/> 240 + <polygon fill="#ffffff" points="0,1.2 1.2,0 1.2,0.3 0.3,1.2"/> 241 241 </pattern> 242 - <pattern height="16.4" id="pattern-hatched-45deg-white-8.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.2,8.2" width="16.4"> 243 - <polygon fill="#ffffff" points="0,0 2.05,0 0,2.05"/> 244 - <polygon fill="#ffffff" points="0,8.2 8.2,0 8.2,2.05 2.05,8.2"/> 245 - </pattern> 246 - <pattern height="15.8" id="pattern-hatched-45deg-white-7.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.9,7.9" width="15.8"> 247 - <polygon fill="#ffffff" points="0,0 1.975,0 0,1.975"/> 248 - <polygon fill="#ffffff" points="0,7.9 7.9,0 7.9,1.975 1.975,7.9"/> 249 - </pattern> 250 - <pattern height="16" id="pattern-hatched-45deg-white-8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8,8" width="16"> 251 - <polygon fill="#ffffff" points="0,0 2,0 0,2"/> 252 - <polygon fill="#ffffff" points="0,8 8,0 8,2 2,8"/> 253 - </pattern> 254 - <pattern height="17.4" id="pattern-hatched-45deg-white-8.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.7,8.7" width="17.4"> 255 - <polygon fill="#ffffff" points="0,0 2.175,0 0,2.175"/> 256 - <polygon fill="#ffffff" points="0,8.7 8.7,0 8.7,2.175 2.175,8.7"/> 257 - </pattern> 258 - <pattern height="13" id="pattern-hatched-45deg-white-6.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.5,6.5" width="13"> 259 - <polygon fill="#ffffff" points="0,0 1.625,0 0,1.625"/> 260 - <polygon fill="#ffffff" points="0,6.5 6.5,0 6.5,1.625 1.625,6.5"/> 261 - </pattern> 262 - <pattern height="18" id="pattern-hatched-45deg-white-9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9,9" width="18"> 263 - <polygon fill="#ffffff" points="0,0 2.25,0 0,2.25"/> 264 - <polygon fill="#ffffff" points="0,9 9,0 9,2.25 2.25,9"/> 242 + <pattern height="2.6" id="pattern-hatched-45deg-white-1.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.3,1.3" width="2.6"> 243 + <polygon fill="#ffffff" points="0,0 0.325,0 0,0.325"/> 244 + <polygon fill="#ffffff" points="0,1.3 1.3,0 1.3,0.325 0.325,1.3"/> 265 245 </pattern> 266 246 <pattern height="2.8" id="pattern-hatched-45deg-white-1.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.4,1.4" width="2.8"> 267 247 <polygon fill="#ffffff" points="0,0 0.35,0 0,0.35"/> 268 248 <polygon fill="#ffffff" points="0,1.4 1.4,0 1.4,0.35 0.35,1.4"/> 269 249 </pattern> 270 - <pattern height="5.6" id="pattern-hatched-45deg-white-2.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.8,2.8" width="5.6"> 271 - <polygon fill="#ffffff" points="0,0 0.7,0 0,0.7"/> 272 - <polygon fill="#ffffff" points="0,2.8 2.8,0 2.8,0.7 0.7,2.8"/> 273 - </pattern> 274 - <pattern height="2" id="pattern-hatched-45deg-white-1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1,1" width="2"> 275 - <polygon fill="#ffffff" points="0,0 0.25,0 0,0.25"/> 276 - <polygon fill="#ffffff" points="0,1 1,0 1,0.25 0.25,1"/> 250 + <pattern height="3" id="pattern-hatched-45deg-white-1.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.5,1.5" width="3"> 251 + <polygon fill="#ffffff" points="0,0 0.375,0 0,0.375"/> 252 + <polygon fill="#ffffff" points="0,1.5 1.5,0 1.5,0.375 0.375,1.5"/> 277 253 </pattern> 278 254 <pattern height="3.2" id="pattern-hatched-45deg-white-1.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.6,1.6" width="3.2"> 279 255 <polygon fill="#ffffff" points="0,0 0.4,0 0,0.4"/> 280 256 <polygon fill="#ffffff" points="0,1.6 1.6,0 1.6,0.4 0.4,1.6"/> 281 257 </pattern> 282 - <pattern height="8.2" id="pattern-hatched-45deg-white-4.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.1,4.1" width="8.2"> 283 - <polygon fill="#ffffff" points="0,0 1.025,0 0,1.025"/> 284 - <polygon fill="#ffffff" points="0,4.1 4.1,0 4.1,1.025 1.025,4.1"/> 258 + <pattern height="3.4" id="pattern-hatched-45deg-white-1.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.7,1.7" width="3.4"> 259 + <polygon fill="#ffffff" points="0,0 0.425,0 0,0.425"/> 260 + <polygon fill="#ffffff" points="0,1.7 1.7,0 1.7,0.425 0.425,1.7"/> 285 261 </pattern> 286 - <pattern height="10.4" id="pattern-hatched-45deg-white-5.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.2,5.2" width="10.4"> 287 - <polygon fill="#ffffff" points="0,0 1.3,0 0,1.3"/> 288 - <polygon fill="#ffffff" points="0,5.2 5.2,0 5.2,1.3 1.3,5.2"/> 262 + <pattern height="3.6" id="pattern-hatched-45deg-white-1.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.8,1.8" width="3.6"> 263 + <polygon fill="#ffffff" points="0,0 0.45,0 0,0.45"/> 264 + <polygon fill="#ffffff" points="0,1.8 1.8,0 1.8,0.45 0.45,1.8"/> 289 265 </pattern> 290 - <pattern height="7.2" id="pattern-hatched-45deg-white-3.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.6,3.6" width="7.2"> 291 - <polygon fill="#ffffff" points="0,0 0.9,0 0,0.9"/> 292 - <polygon fill="#ffffff" points="0,3.6 3.6,0 3.6,0.9 0.9,3.6"/> 266 + <pattern height="3.8" id="pattern-hatched-45deg-white-1.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.9,1.9" width="3.8"> 267 + <polygon fill="#ffffff" points="0,0 0.475,0 0,0.475"/> 268 + <polygon fill="#ffffff" points="0,1.9 1.9,0 1.9,0.475 0.475,1.9"/> 293 269 </pattern> 294 - <pattern height="11" id="pattern-hatched-45deg-white-5.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.5,5.5" width="11"> 295 - <polygon fill="#ffffff" points="0,0 1.375,0 0,1.375"/> 296 - <polygon fill="#ffffff" points="0,5.5 5.5,0 5.5,1.375 1.375,5.5"/> 270 + <pattern height="4" id="pattern-hatched-45deg-white-2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2,2" width="4"> 271 + <polygon fill="#ffffff" points="0,0 0.5,0 0,0.5"/> 272 + <polygon fill="#ffffff" points="0,2 2,0 2,0.5 0.5,2"/> 297 273 </pattern> 298 - <pattern height="12" id="pattern-hatched-45deg-white-6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6,6" width="12"> 299 - <polygon fill="#ffffff" points="0,0 1.5,0 0,1.5"/> 300 - <polygon fill="#ffffff" points="0,6 6,0 6,1.5 1.5,6"/> 274 + <pattern height="4.2" id="pattern-hatched-45deg-white-2.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.1,2.1" width="4.2"> 275 + <polygon fill="#ffffff" points="0,0 0.525,0 0,0.525"/> 276 + <polygon fill="#ffffff" points="0,2.1 2.1,0 2.1,0.525 0.525,2.1"/> 301 277 </pattern> 302 - <pattern height="12.8" id="pattern-hatched-45deg-white-6.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.4,6.4" width="12.8"> 303 - <polygon fill="#ffffff" points="0,0 1.6,0 0,1.6"/> 304 - <polygon fill="#ffffff" points="0,6.4 6.4,0 6.4,1.6 1.6,6.4"/> 278 + <pattern height="4.4" id="pattern-hatched-45deg-white-2.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.2,2.2" width="4.4"> 279 + <polygon fill="#ffffff" points="0,0 0.55,0 0,0.55"/> 280 + <polygon fill="#ffffff" points="0,2.2 2.2,0 2.2,0.55 0.55,2.2"/> 305 281 </pattern> 306 - <pattern height="6" id="pattern-hatched-45deg-white-3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3,3" width="6"> 307 - <polygon fill="#ffffff" points="0,0 0.75,0 0,0.75"/> 308 - <polygon fill="#ffffff" points="0,3 3,0 3,0.75 0.75,3"/> 309 - </pattern> 310 - <pattern height="14.2" id="pattern-hatched-45deg-white-7.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.1,7.1" width="14.2"> 311 - <polygon fill="#ffffff" points="0,0 1.775,0 0,1.775"/> 312 - <polygon fill="#ffffff" points="0,7.1 7.1,0 7.1,1.775 1.775,7.1"/> 313 - </pattern> 314 - <pattern height="16.6" id="pattern-hatched-45deg-white-8.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.3,8.3" width="16.6"> 315 - <polygon fill="#ffffff" points="0,0 2.075,0 0,2.075"/> 316 - <polygon fill="#ffffff" points="0,8.3 8.3,0 8.3,2.075 2.075,8.3"/> 317 - </pattern> 318 - <pattern height="14" id="pattern-hatched-45deg-white-7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7,7" width="14"> 319 - <polygon fill="#ffffff" points="0,0 1.75,0 0,1.75"/> 320 - <polygon fill="#ffffff" points="0,7 7,0 7,1.75 1.75,7"/> 321 - </pattern> 322 - <pattern height="16.8" id="pattern-hatched-45deg-white-8.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.4,8.4" width="16.8"> 323 - <polygon fill="#ffffff" points="0,0 2.1,0 0,2.1"/> 324 - <polygon fill="#ffffff" points="0,8.4 8.4,0 8.4,2.1 2.1,8.4"/> 282 + <pattern height="4.6" id="pattern-hatched-45deg-white-2.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.3,2.3" width="4.6"> 283 + <polygon fill="#ffffff" points="0,0 0.575,0 0,0.575"/> 284 + <polygon fill="#ffffff" points="0,2.3 2.3,0 2.3,0.575 0.575,2.3"/> 325 285 </pattern> 326 - <pattern height="10.6" id="pattern-hatched-45deg-white-5.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.3,5.3" width="10.6"> 327 - <polygon fill="#ffffff" points="0,0 1.325,0 0,1.325"/> 328 - <polygon fill="#ffffff" points="0,5.3 5.3,0 5.3,1.325 1.325,5.3"/> 286 + <pattern height="4.8" id="pattern-hatched-45deg-white-2.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.4,2.4" width="4.8"> 287 + <polygon fill="#ffffff" points="0,0 0.6,0 0,0.6"/> 288 + <polygon fill="#ffffff" points="0,2.4 2.4,0 2.4,0.6 0.6,2.4"/> 329 289 </pattern> 330 - <pattern height="11.2" id="pattern-hatched-45deg-white-5.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.6,5.6" width="11.2"> 331 - <polygon fill="#ffffff" points="0,0 1.4,0 0,1.4"/> 332 - <polygon fill="#ffffff" points="0,5.6 5.6,0 5.6,1.4 1.4,5.6"/> 290 + <pattern height="5" id="pattern-hatched-45deg-white-2.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.5,2.5" width="5"> 291 + <polygon fill="#ffffff" points="0,0 0.625,0 0,0.625"/> 292 + <polygon fill="#ffffff" points="0,2.5 2.5,0 2.5,0.625 0.625,2.5"/> 333 293 </pattern> 334 - <pattern height="11.4" id="pattern-hatched-45deg-white-5.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.7,5.7" width="11.4"> 335 - <polygon fill="#ffffff" points="0,0 1.425,0 0,1.425"/> 336 - <polygon fill="#ffffff" points="0,5.7 5.7,0 5.7,1.425 1.425,5.7"/> 294 + <pattern height="5.2" id="pattern-hatched-45deg-white-2.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.6,2.6" width="5.2"> 295 + <polygon fill="#ffffff" points="0,0 0.65,0 0,0.65"/> 296 + <polygon fill="#ffffff" points="0,2.6 2.6,0 2.6,0.65 0.65,2.6"/> 337 297 </pattern> 338 298 <pattern height="5.4" id="pattern-hatched-45deg-white-2.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.7,2.7" width="5.4"> 339 299 <polygon fill="#ffffff" points="0,0 0.675,0 0,0.675"/> 340 300 <polygon fill="#ffffff" points="0,2.7 2.7,0 2.7,0.675 0.675,2.7"/> 341 301 </pattern> 342 - <pattern height="3" id="pattern-hatched-45deg-white-1.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.5,1.5" width="3"> 343 - <polygon fill="#ffffff" points="0,0 0.375,0 0,0.375"/> 344 - <polygon fill="#ffffff" points="0,1.5 1.5,0 1.5,0.375 0.375,1.5"/> 302 + <pattern height="5.6" id="pattern-hatched-45deg-white-2.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.8,2.8" width="5.6"> 303 + <polygon fill="#ffffff" points="0,0 0.7,0 0,0.7"/> 304 + <polygon fill="#ffffff" points="0,2.8 2.8,0 2.8,0.7 0.7,2.8"/> 345 305 </pattern> 346 - <pattern height="13.6" id="pattern-hatched-45deg-white-6.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.8,6.8" width="13.6"> 347 - <polygon fill="#ffffff" points="0,0 1.7,0 0,1.7"/> 348 - <polygon fill="#ffffff" points="0,6.8 6.8,0 6.8,1.7 1.7,6.8"/> 306 + <pattern height="5.8" id="pattern-hatched-45deg-white-2.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.9,2.9" width="5.8"> 307 + <polygon fill="#ffffff" points="0,0 0.725,0 0,0.725"/> 308 + <polygon fill="#ffffff" points="0,2.9 2.9,0 2.9,0.725 0.725,2.9"/> 349 309 </pattern> 350 - <pattern height="3.4" id="pattern-hatched-45deg-white-1.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.7,1.7" width="3.4"> 351 - <polygon fill="#ffffff" points="0,0 0.425,0 0,0.425"/> 352 - <polygon fill="#ffffff" points="0,1.7 1.7,0 1.7,0.425 0.425,1.7"/> 310 + <pattern height="6" id="pattern-hatched-45deg-white-3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3,3" width="6"> 311 + <polygon fill="#ffffff" points="0,0 0.75,0 0,0.75"/> 312 + <polygon fill="#ffffff" points="0,3 3,0 3,0.75 0.75,3"/> 313 + </pattern> 314 + <pattern height="6.2" id="pattern-hatched-45deg-white-3.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.1,3.1" width="6.2"> 315 + <polygon fill="#ffffff" points="0,0 0.775,0 0,0.775"/> 316 + <polygon fill="#ffffff" points="0,3.1 3.1,0 3.1,0.775 0.775,3.1"/> 353 317 </pattern> 354 318 <pattern height="6.4" id="pattern-hatched-45deg-white-3.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.2,3.2" width="6.4"> 355 319 <polygon fill="#ffffff" points="0,0 0.8,0 0,0.8"/> 356 320 <polygon fill="#ffffff" points="0,3.2 3.2,0 3.2,0.8 0.8,3.2"/> 357 321 </pattern> 322 + <pattern height="6.6" id="pattern-hatched-45deg-white-3.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.3,3.3" width="6.6"> 323 + <polygon fill="#ffffff" points="0,0 0.825,0 0,0.825"/> 324 + <polygon fill="#ffffff" points="0,3.3 3.3,0 3.3,0.825 0.825,3.3"/> 325 + </pattern> 358 326 <pattern height="6.8" id="pattern-hatched-45deg-white-3.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.4,3.4" width="6.8"> 359 327 <polygon fill="#ffffff" points="0,0 0.85,0 0,0.85"/> 360 328 <polygon fill="#ffffff" points="0,3.4 3.4,0 3.4,0.85 0.85,3.4"/> 361 329 </pattern> 362 - <pattern height="12.4" id="pattern-hatched-45deg-white-6.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.2,6.2" width="12.4"> 363 - <polygon fill="#ffffff" points="0,0 1.55,0 0,1.55"/> 364 - <polygon fill="#ffffff" points="0,6.2 6.2,0 6.2,1.55 1.55,6.2"/> 330 + <pattern height="7" id="pattern-hatched-45deg-white-3.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.5,3.5" width="7"> 331 + <polygon fill="#ffffff" points="0,0 0.875,0 0,0.875"/> 332 + <polygon fill="#ffffff" points="0,3.5 3.5,0 3.5,0.875 0.875,3.5"/> 365 333 </pattern> 366 - <pattern height="4.6" id="pattern-hatched-45deg-white-2.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.3,2.3" width="4.6"> 367 - <polygon fill="#ffffff" points="0,0 0.575,0 0,0.575"/> 368 - <polygon fill="#ffffff" points="0,2.3 2.3,0 2.3,0.575 0.575,2.3"/> 334 + <pattern height="7.2" id="pattern-hatched-45deg-white-3.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.6,3.6" width="7.2"> 335 + <polygon fill="#ffffff" points="0,0 0.9,0 0,0.9"/> 336 + <polygon fill="#ffffff" points="0,3.6 3.6,0 3.6,0.9 0.9,3.6"/> 337 + </pattern> 338 + <pattern height="7.4" id="pattern-hatched-45deg-white-3.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.7,3.7" width="7.4"> 339 + <polygon fill="#ffffff" points="0,0 0.925,0 0,0.925"/> 340 + <polygon fill="#ffffff" points="0,3.7 3.7,0 3.7,0.925 0.925,3.7"/> 341 + </pattern> 342 + <pattern height="7.6" id="pattern-hatched-45deg-white-3.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.8,3.8" width="7.6"> 343 + <polygon fill="#ffffff" points="0,0 0.95,0 0,0.95"/> 344 + <polygon fill="#ffffff" points="0,3.8 3.8,0 3.8,0.95 0.95,3.8"/> 345 + </pattern> 346 + <pattern height="7.8" id="pattern-hatched-45deg-white-3.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.9,3.9" width="7.8"> 347 + <polygon fill="#ffffff" points="0,0 0.975,0 0,0.975"/> 348 + <polygon fill="#ffffff" points="0,3.9 3.9,0 3.9,0.975 0.975,3.9"/> 349 + </pattern> 350 + <pattern height="8" id="pattern-hatched-45deg-white-4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4,4" width="8"> 351 + <polygon fill="#ffffff" points="0,0 1,0 0,1"/> 352 + <polygon fill="#ffffff" points="0,4 4,0 4,1 1,4"/> 353 + </pattern> 354 + <pattern height="8.2" id="pattern-hatched-45deg-white-4.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.1,4.1" width="8.2"> 355 + <polygon fill="#ffffff" points="0,0 1.025,0 0,1.025"/> 356 + <polygon fill="#ffffff" points="0,4.1 4.1,0 4.1,1.025 1.025,4.1"/> 357 + </pattern> 358 + <pattern height="8.4" id="pattern-hatched-45deg-white-4.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.2,4.2" width="8.4"> 359 + <polygon fill="#ffffff" points="0,0 1.05,0 0,1.05"/> 360 + <polygon fill="#ffffff" points="0,4.2 4.2,0 4.2,1.05 1.05,4.2"/> 361 + </pattern> 362 + <pattern height="8.6" id="pattern-hatched-45deg-white-4.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.3,4.3" width="8.6"> 363 + <polygon fill="#ffffff" points="0,0 1.075,0 0,1.075"/> 364 + <polygon fill="#ffffff" points="0,4.3 4.3,0 4.3,1.075 1.075,4.3"/> 365 + </pattern> 366 + <pattern height="8.8" id="pattern-hatched-45deg-white-4.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.4,4.4" width="8.8"> 367 + <polygon fill="#ffffff" points="0,0 1.1,0 0,1.1"/> 368 + <polygon fill="#ffffff" points="0,4.4 4.4,0 4.4,1.1 1.1,4.4"/> 369 + </pattern> 370 + <pattern height="9" id="pattern-hatched-45deg-white-4.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.5,4.5" width="9"> 371 + <polygon fill="#ffffff" points="0,0 1.125,0 0,1.125"/> 372 + <polygon fill="#ffffff" points="0,4.5 4.5,0 4.5,1.125 1.125,4.5"/> 369 373 </pattern> 370 374 <pattern height="9.2" id="pattern-hatched-45deg-white-4.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.6,4.6" width="9.2"> 371 375 <polygon fill="#ffffff" points="0,0 1.15,0 0,1.15"/> 372 376 <polygon fill="#ffffff" points="0,4.6 4.6,0 4.6,1.15 1.15,4.6"/> 373 377 </pattern> 374 - <pattern height="15.6" id="pattern-hatched-45deg-white-7.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.8,7.8" width="15.6"> 375 - <polygon fill="#ffffff" points="0,0 1.95,0 0,1.95"/> 376 - <polygon fill="#ffffff" points="0,7.8 7.8,0 7.8,1.95 1.95,7.8"/> 378 + <pattern height="9.4" id="pattern-hatched-45deg-white-4.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.7,4.7" width="9.4"> 379 + <polygon fill="#ffffff" points="0,0 1.175,0 0,1.175"/> 380 + <polygon fill="#ffffff" points="0,4.7 4.7,0 4.7,1.175 1.175,4.7"/> 377 381 </pattern> 378 - <pattern height="5.8" id="pattern-hatched-45deg-white-2.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.9,2.9" width="5.8"> 379 - <polygon fill="#ffffff" points="0,0 0.725,0 0,0.725"/> 380 - <polygon fill="#ffffff" points="0,2.9 2.9,0 2.9,0.725 0.725,2.9"/> 382 + <pattern height="9.6" id="pattern-hatched-45deg-white-4.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.8,4.8" width="9.6"> 383 + <polygon fill="#ffffff" points="0,0 1.2,0 0,1.2"/> 384 + <polygon fill="#ffffff" points="0,4.8 4.8,0 4.8,1.2 1.2,4.8"/> 381 385 </pattern> 382 386 <pattern height="9.8" id="pattern-hatched-45deg-white-4.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.9,4.9" width="9.8"> 383 387 <polygon fill="#ffffff" points="0,0 1.225,0 0,1.225"/> 384 388 <polygon fill="#ffffff" points="0,4.9 4.9,0 4.9,1.225 1.225,4.9"/> 385 389 </pattern> 386 - <pattern height="9" id="pattern-hatched-45deg-white-4.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.5,4.5" width="9"> 387 - <polygon fill="#ffffff" points="0,0 1.125,0 0,1.125"/> 388 - <polygon fill="#ffffff" points="0,4.5 4.5,0 4.5,1.125 1.125,4.5"/> 390 + <pattern height="10" id="pattern-hatched-45deg-white-5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5,5" width="10"> 391 + <polygon fill="#ffffff" points="0,0 1.25,0 0,1.25"/> 392 + <polygon fill="#ffffff" points="0,5 5,0 5,1.25 1.25,5"/> 389 393 </pattern> 390 - <pattern height="10.8" id="pattern-hatched-45deg-white-5.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.4,5.4" width="10.8"> 391 - <polygon fill="#ffffff" points="0,0 1.35,0 0,1.35"/> 392 - <polygon fill="#ffffff" points="0,5.4 5.4,0 5.4,1.35 1.35,5.4"/> 394 + <pattern height="10.2" id="pattern-hatched-45deg-white-5.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.1,5.1" width="10.2"> 395 + <polygon fill="#ffffff" points="0,0 1.275,0 0,1.275"/> 396 + <polygon fill="#ffffff" points="0,5.1 5.1,0 5.1,1.275 1.275,5.1"/> 393 397 </pattern> 394 - <pattern height="3.8" id="pattern-hatched-45deg-white-1.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.9,1.9" width="3.8"> 395 - <polygon fill="#ffffff" points="0,0 0.475,0 0,0.475"/> 396 - <polygon fill="#ffffff" points="0,1.9 1.9,0 1.9,0.475 0.475,1.9"/> 398 + <pattern height="10.4" id="pattern-hatched-45deg-white-5.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.2,5.2" width="10.4"> 399 + <polygon fill="#ffffff" points="0,0 1.3,0 0,1.3"/> 400 + <polygon fill="#ffffff" points="0,5.2 5.2,0 5.2,1.3 1.3,5.2"/> 397 401 </pattern> 398 - <pattern height="15" id="pattern-hatched-45deg-white-7.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.5,7.5" width="15"> 399 - <polygon fill="#ffffff" points="0,0 1.875,0 0,1.875"/> 400 - <polygon fill="#ffffff" points="0,7.5 7.5,0 7.5,1.875 1.875,7.5"/> 402 + <pattern height="10.6" id="pattern-hatched-45deg-white-5.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.3,5.3" width="10.6"> 403 + <polygon fill="#ffffff" points="0,0 1.325,0 0,1.325"/> 404 + <polygon fill="#ffffff" points="0,5.3 5.3,0 5.3,1.325 1.325,5.3"/> 401 405 </pattern> 402 - <pattern height="7.4" id="pattern-hatched-45deg-white-3.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.7,3.7" width="7.4"> 403 - <polygon fill="#ffffff" points="0,0 0.925,0 0,0.925"/> 404 - <polygon fill="#ffffff" points="0,3.7 3.7,0 3.7,0.925 0.925,3.7"/> 406 + <pattern height="11" id="pattern-hatched-45deg-white-5.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.5,5.5" width="11"> 407 + <polygon fill="#ffffff" points="0,0 1.375,0 0,1.375"/> 408 + <polygon fill="#ffffff" points="0,5.5 5.5,0 5.5,1.375 1.375,5.5"/> 405 409 </pattern> 406 - <pattern height="1" id="pattern-hatched-45deg-white-0.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.5,0.5" width="1"> 407 - <polygon fill="#ffffff" points="0,0 0.125,0 0,0.125"/> 408 - <polygon fill="#ffffff" points="0,0.5 0.5,0 0.5,0.125 0.125,0.5"/> 410 + <pattern height="11.2" id="pattern-hatched-45deg-white-5.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.6,5.6" width="11.2"> 411 + <polygon fill="#ffffff" points="0,0 1.4,0 0,1.4"/> 412 + <polygon fill="#ffffff" points="0,5.6 5.6,0 5.6,1.4 1.4,5.6"/> 409 413 </pattern> 410 - <pattern height="14.4" id="pattern-hatched-45deg-white-7.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.2,7.2" width="14.4"> 411 - <polygon fill="#ffffff" points="0,0 1.8,0 0,1.8"/> 412 - <polygon fill="#ffffff" points="0,7.2 7.2,0 7.2,1.8 1.8,7.2"/> 414 + <pattern height="11.4" id="pattern-hatched-45deg-white-5.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.7,5.7" width="11.4"> 415 + <polygon fill="#ffffff" points="0,0 1.425,0 0,1.425"/> 416 + <polygon fill="#ffffff" points="0,5.7 5.7,0 5.7,1.425 1.425,5.7"/> 413 417 </pattern> 414 - <pattern height="7.8" id="pattern-hatched-45deg-white-3.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.9,3.9" width="7.8"> 415 - <polygon fill="#ffffff" points="0,0 0.975,0 0,0.975"/> 416 - <polygon fill="#ffffff" points="0,3.9 3.9,0 3.9,0.975 0.975,3.9"/> 418 + <pattern height="11.6" id="pattern-hatched-45deg-white-5.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.8,5.8" width="11.6"> 419 + <polygon fill="#ffffff" points="0,0 1.45,0 0,1.45"/> 420 + <polygon fill="#ffffff" points="0,5.8 5.8,0 5.8,1.45 1.45,5.8"/> 417 421 </pattern> 418 - <pattern height="6.2" id="pattern-hatched-45deg-white-3.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.1,3.1" width="6.2"> 419 - <polygon fill="#ffffff" points="0,0 0.775,0 0,0.775"/> 420 - <polygon fill="#ffffff" points="0,3.1 3.1,0 3.1,0.775 0.775,3.1"/> 422 + <pattern height="11.8" id="pattern-hatched-45deg-white-5.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.9,5.9" width="11.8"> 423 + <polygon fill="#ffffff" points="0,0 1.475,0 0,1.475"/> 424 + <polygon fill="#ffffff" points="0,5.9 5.9,0 5.9,1.475 1.475,5.9"/> 421 425 </pattern> 422 - <pattern height="17.8" id="pattern-hatched-45deg-white-8.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.9,8.9" width="17.8"> 423 - <polygon fill="#ffffff" points="0,0 2.225,0 0,2.225"/> 424 - <polygon fill="#ffffff" points="0,8.9 8.9,0 8.9,2.225 2.225,8.9"/> 426 + <pattern height="12" id="pattern-hatched-45deg-white-6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6,6" width="12"> 427 + <polygon fill="#ffffff" points="0,0 1.5,0 0,1.5"/> 428 + <polygon fill="#ffffff" points="0,6 6,0 6,1.5 1.5,6"/> 425 429 </pattern> 426 - <pattern height="17.2" id="pattern-hatched-45deg-white-8.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.6,8.6" width="17.2"> 427 - <polygon fill="#ffffff" points="0,0 2.15,0 0,2.15"/> 428 - <polygon fill="#ffffff" points="0,8.6 8.6,0 8.6,2.15 2.15,8.6"/> 430 + <pattern height="12.2" id="pattern-hatched-45deg-white-6.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.1,6.1" width="12.2"> 431 + <polygon fill="#ffffff" points="0,0 1.525,0 0,1.525"/> 432 + <polygon fill="#ffffff" points="0,6.1 6.1,0 6.1,1.525 1.525,6.1"/> 433 + </pattern> 434 + <pattern height="12.4" id="pattern-hatched-45deg-white-6.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.2,6.2" width="12.4"> 435 + <polygon fill="#ffffff" points="0,0 1.55,0 0,1.55"/> 436 + <polygon fill="#ffffff" points="0,6.2 6.2,0 6.2,1.55 1.55,6.2"/> 429 437 </pattern> 430 - <pattern height="15.2" id="pattern-hatched-45deg-white-7.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.6,7.6" width="15.2"> 431 - <polygon fill="#ffffff" points="0,0 1.9,0 0,1.9"/> 432 - <polygon fill="#ffffff" points="0,7.6 7.6,0 7.6,1.9 1.9,7.6"/> 438 + <pattern height="12.6" id="pattern-hatched-45deg-white-6.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.3,6.3" width="12.6"> 439 + <polygon fill="#ffffff" points="0,0 1.575,0 0,1.575"/> 440 + <polygon fill="#ffffff" points="0,6.3 6.3,0 6.3,1.575 1.575,6.3"/> 433 441 </pattern> 434 - <pattern height="18.2" id="pattern-hatched-45deg-white-9.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9.1,9.1" width="18.2"> 435 - <polygon fill="#ffffff" points="0,0 2.275,0 0,2.275"/> 436 - <polygon fill="#ffffff" points="0,9.1 9.1,0 9.1,2.275 2.275,9.1"/> 442 + <pattern height="12.8" id="pattern-hatched-45deg-white-6.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.4,6.4" width="12.8"> 443 + <polygon fill="#ffffff" points="0,0 1.6,0 0,1.6"/> 444 + <polygon fill="#ffffff" points="0,6.4 6.4,0 6.4,1.6 1.6,6.4"/> 437 445 </pattern> 438 - <pattern height="3.6" id="pattern-hatched-45deg-white-1.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.8,1.8" width="3.6"> 439 - <polygon fill="#ffffff" points="0,0 0.45,0 0,0.45"/> 440 - <polygon fill="#ffffff" points="0,1.8 1.8,0 1.8,0.45 0.45,1.8"/> 446 + <pattern height="13" id="pattern-hatched-45deg-white-6.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.5,6.5" width="13"> 447 + <polygon fill="#ffffff" points="0,0 1.625,0 0,1.625"/> 448 + <polygon fill="#ffffff" points="0,6.5 6.5,0 6.5,1.625 1.625,6.5"/> 441 449 </pattern> 442 - <pattern height="9.6" id="pattern-hatched-45deg-white-4.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.8,4.8" width="9.6"> 443 - <polygon fill="#ffffff" points="0,0 1.2,0 0,1.2"/> 444 - <polygon fill="#ffffff" points="0,4.8 4.8,0 4.8,1.2 1.2,4.8"/> 450 + <pattern height="13.2" id="pattern-hatched-45deg-white-6.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.6,6.6" width="13.2"> 451 + <polygon fill="#ffffff" points="0,0 1.65,0 0,1.65"/> 452 + <polygon fill="#ffffff" points="0,6.6 6.6,0 6.6,1.65 1.65,6.6"/> 445 453 </pattern> 446 - <pattern height="8.8" id="pattern-hatched-45deg-white-4.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.4,4.4" width="8.8"> 447 - <polygon fill="#ffffff" points="0,0 1.1,0 0,1.1"/> 448 - <polygon fill="#ffffff" points="0,4.4 4.4,0 4.4,1.1 1.1,4.4"/> 454 + <pattern height="13.4" id="pattern-hatched-45deg-white-6.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.7,6.7" width="13.4"> 455 + <polygon fill="#ffffff" points="0,0 1.675,0 0,1.675"/> 456 + <polygon fill="#ffffff" points="0,6.7 6.7,0 6.7,1.675 1.675,6.7"/> 449 457 </pattern> 450 - <pattern height="4.2" id="pattern-hatched-45deg-white-2.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.1,2.1" width="4.2"> 451 - <polygon fill="#ffffff" points="0,0 0.525,0 0,0.525"/> 452 - <polygon fill="#ffffff" points="0,2.1 2.1,0 2.1,0.525 0.525,2.1"/> 458 + <pattern height="13.6" id="pattern-hatched-45deg-white-6.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.8,6.8" width="13.6"> 459 + <polygon fill="#ffffff" points="0,0 1.7,0 0,1.7"/> 460 + <polygon fill="#ffffff" points="0,6.8 6.8,0 6.8,1.7 1.7,6.8"/> 453 461 </pattern> 454 462 <pattern height="13.8" id="pattern-hatched-45deg-white-6.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.9,6.9" width="13.8"> 455 463 <polygon fill="#ffffff" points="0,0 1.725,0 0,1.725"/> 456 464 <polygon fill="#ffffff" points="0,6.9 6.9,0 6.9,1.725 1.725,6.9"/> 457 465 </pattern> 458 - <pattern height="5.2" id="pattern-hatched-45deg-white-2.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.6,2.6" width="5.2"> 459 - <polygon fill="#ffffff" points="0,0 0.65,0 0,0.65"/> 460 - <polygon fill="#ffffff" points="0,2.6 2.6,0 2.6,0.65 0.65,2.6"/> 466 + <pattern height="14" id="pattern-hatched-45deg-white-7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7,7" width="14"> 467 + <polygon fill="#ffffff" points="0,0 1.75,0 0,1.75"/> 468 + <polygon fill="#ffffff" points="0,7 7,0 7,1.75 1.75,7"/> 461 469 </pattern> 462 - <pattern height="15.4" id="pattern-hatched-45deg-white-7.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.7,7.7" width="15.4"> 463 - <polygon fill="#ffffff" points="0,0 1.925,0 0,1.925"/> 464 - <polygon fill="#ffffff" points="0,7.7 7.7,0 7.7,1.925 1.925,7.7"/> 470 + <pattern height="14.2" id="pattern-hatched-45deg-white-7.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.1,7.1" width="14.2"> 471 + <polygon fill="#ffffff" points="0,0 1.775,0 0,1.775"/> 472 + <polygon fill="#ffffff" points="0,7.1 7.1,0 7.1,1.775 1.775,7.1"/> 465 473 </pattern> 466 - <pattern height="1.6" id="pattern-hatched-45deg-white-0.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.8,0.8" width="1.6"> 467 - <polygon fill="#ffffff" points="0,0 0.2,0 0,0.2"/> 468 - <polygon fill="#ffffff" points="0,0.8 0.8,0 0.8,0.2 0.2,0.8"/> 474 + <pattern height="14.4" id="pattern-hatched-45deg-white-7.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.2,7.2" width="14.4"> 475 + <polygon fill="#ffffff" points="0,0 1.8,0 0,1.8"/> 476 + <polygon fill="#ffffff" points="0,7.2 7.2,0 7.2,1.8 1.8,7.2"/> 469 477 </pattern> 470 - <pattern height="9.4" id="pattern-hatched-45deg-white-4.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.7,4.7" width="9.4"> 471 - <polygon fill="#ffffff" points="0,0 1.175,0 0,1.175"/> 472 - <polygon fill="#ffffff" points="0,4.7 4.7,0 4.7,1.175 1.175,4.7"/> 478 + <pattern height="14.6" id="pattern-hatched-45deg-white-7.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.3,7.3" width="14.6"> 479 + <polygon fill="#ffffff" points="0,0 1.825,0 0,1.825"/> 480 + <polygon fill="#ffffff" points="0,7.3 7.3,0 7.3,1.825 1.825,7.3"/> 473 481 </pattern> 474 - <pattern height="10" id="pattern-hatched-45deg-white-5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5,5" width="10"> 475 - <polygon fill="#ffffff" points="0,0 1.25,0 0,1.25"/> 476 - <polygon fill="#ffffff" points="0,5 5,0 5,1.25 1.25,5"/> 482 + <pattern height="14.8" id="pattern-hatched-45deg-white-7.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.4,7.4" width="14.8"> 483 + <polygon fill="#ffffff" points="0,0 1.85,0 0,1.85"/> 484 + <polygon fill="#ffffff" points="0,7.4 7.4,0 7.4,1.85 1.85,7.4"/> 477 485 </pattern> 478 - <pattern height="12.2" id="pattern-hatched-45deg-white-6.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.1,6.1" width="12.2"> 479 - <polygon fill="#ffffff" points="0,0 1.525,0 0,1.525"/> 480 - <polygon fill="#ffffff" points="0,6.1 6.1,0 6.1,1.525 1.525,6.1"/> 486 + <pattern height="15" id="pattern-hatched-45deg-white-7.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.5,7.5" width="15"> 487 + <polygon fill="#ffffff" points="0,0 1.875,0 0,1.875"/> 488 + <polygon fill="#ffffff" points="0,7.5 7.5,0 7.5,1.875 1.875,7.5"/> 481 489 </pattern> 482 - <pattern height="1.2" id="pattern-hatched-45deg-white-0.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.6,0.6" width="1.2"> 483 - <polygon fill="#ffffff" points="0,0 0.15,0 0,0.15"/> 484 - <polygon fill="#ffffff" points="0,0.6 0.6,0 0.6,0.15 0.15,0.6"/> 490 + <pattern height="15.2" id="pattern-hatched-45deg-white-7.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.6,7.6" width="15.2"> 491 + <polygon fill="#ffffff" points="0,0 1.9,0 0,1.9"/> 492 + <polygon fill="#ffffff" points="0,7.6 7.6,0 7.6,1.9 1.9,7.6"/> 485 493 </pattern> 486 - <pattern height="2.4" id="pattern-hatched-45deg-white-1.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,1.2,1.2" width="2.4"> 487 - <polygon fill="#ffffff" points="0,0 0.3,0 0,0.3"/> 488 - <polygon fill="#ffffff" points="0,1.2 1.2,0 1.2,0.3 0.3,1.2"/> 494 + <pattern height="15.4" id="pattern-hatched-45deg-white-7.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.7,7.7" width="15.4"> 495 + <polygon fill="#ffffff" points="0,0 1.925,0 0,1.925"/> 496 + <polygon fill="#ffffff" points="0,7.7 7.7,0 7.7,1.925 1.925,7.7"/> 489 497 </pattern> 490 - <pattern height="12.6" id="pattern-hatched-45deg-white-6.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.3,6.3" width="12.6"> 491 - <polygon fill="#ffffff" points="0,0 1.575,0 0,1.575"/> 492 - <polygon fill="#ffffff" points="0,6.3 6.3,0 6.3,1.575 1.575,6.3"/> 498 + <pattern height="15.6" id="pattern-hatched-45deg-white-7.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.8,7.8" width="15.6"> 499 + <polygon fill="#ffffff" points="0,0 1.95,0 0,1.95"/> 500 + <polygon fill="#ffffff" points="0,7.8 7.8,0 7.8,1.95 1.95,7.8"/> 493 501 </pattern> 494 - <pattern height="14.8" id="pattern-hatched-45deg-white-7.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.4,7.4" width="14.8"> 495 - <polygon fill="#ffffff" points="0,0 1.85,0 0,1.85"/> 496 - <polygon fill="#ffffff" points="0,7.4 7.4,0 7.4,1.85 1.85,7.4"/> 502 + <pattern height="15.8" id="pattern-hatched-45deg-white-7.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,7.9,7.9" width="15.8"> 503 + <polygon fill="#ffffff" points="0,0 1.975,0 0,1.975"/> 504 + <polygon fill="#ffffff" points="0,7.9 7.9,0 7.9,1.975 1.975,7.9"/> 497 505 </pattern> 498 - <pattern height="13.4" id="pattern-hatched-45deg-white-6.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.7,6.7" width="13.4"> 499 - <polygon fill="#ffffff" points="0,0 1.675,0 0,1.675"/> 500 - <polygon fill="#ffffff" points="0,6.7 6.7,0 6.7,1.675 1.675,6.7"/> 506 + <pattern height="16" id="pattern-hatched-45deg-white-8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8,8" width="16"> 507 + <polygon fill="#ffffff" points="0,0 2,0 0,2"/> 508 + <polygon fill="#ffffff" points="0,8 8,0 8,2 2,8"/> 501 509 </pattern> 502 510 <pattern height="16.2" id="pattern-hatched-45deg-white-8.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.1,8.1" width="16.2"> 503 511 <polygon fill="#ffffff" points="0,0 2.025,0 0,2.025"/> 504 512 <polygon fill="#ffffff" points="0,8.1 8.1,0 8.1,2.025 2.025,8.1"/> 505 513 </pattern> 506 - <pattern height="4" id="pattern-hatched-45deg-white-2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2,2" width="4"> 507 - <polygon fill="#ffffff" points="0,0 0.5,0 0,0.5"/> 508 - <polygon fill="#ffffff" points="0,2 2,0 2,0.5 0.5,2"/> 514 + <pattern height="16.4" id="pattern-hatched-45deg-white-8.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.2,8.2" width="16.4"> 515 + <polygon fill="#ffffff" points="0,0 2.05,0 0,2.05"/> 516 + <polygon fill="#ffffff" points="0,8.2 8.2,0 8.2,2.05 2.05,8.2"/> 509 517 </pattern> 510 - <pattern height="4.8" id="pattern-hatched-45deg-white-2.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.4,2.4" width="4.8"> 511 - <polygon fill="#ffffff" points="0,0 0.6,0 0,0.6"/> 512 - <polygon fill="#ffffff" points="0,2.4 2.4,0 2.4,0.6 0.6,2.4"/> 518 + <pattern height="16.6" id="pattern-hatched-45deg-white-8.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.3,8.3" width="16.6"> 519 + <polygon fill="#ffffff" points="0,0 2.075,0 0,2.075"/> 520 + <polygon fill="#ffffff" points="0,8.3 8.3,0 8.3,2.075 2.075,8.3"/> 513 521 </pattern> 514 - <pattern height="7.6" id="pattern-hatched-45deg-white-3.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.8,3.8" width="7.6"> 515 - <polygon fill="#ffffff" points="0,0 0.95,0 0,0.95"/> 516 - <polygon fill="#ffffff" points="0,3.8 3.8,0 3.8,0.95 0.95,3.8"/> 522 + <pattern height="16.8" id="pattern-hatched-45deg-white-8.4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.4,8.4" width="16.8"> 523 + <polygon fill="#ffffff" points="0,0 2.1,0 0,2.1"/> 524 + <polygon fill="#ffffff" points="0,8.4 8.4,0 8.4,2.1 2.1,8.4"/> 517 525 </pattern> 518 - <pattern height="13.2" id="pattern-hatched-45deg-white-6.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,6.6,6.6" width="13.2"> 519 - <polygon fill="#ffffff" points="0,0 1.65,0 0,1.65"/> 520 - <polygon fill="#ffffff" points="0,6.6 6.6,0 6.6,1.65 1.65,6.6"/> 526 + <pattern height="17" id="pattern-hatched-45deg-white-8.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.5,8.5" width="17"> 527 + <polygon fill="#ffffff" points="0,0 2.125,0 0,2.125"/> 528 + <polygon fill="#ffffff" points="0,8.5 8.5,0 8.5,2.125 2.125,8.5"/> 521 529 </pattern> 522 - <pattern height="7" id="pattern-hatched-45deg-white-3.5-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,3.5,3.5" width="7"> 523 - <polygon fill="#ffffff" points="0,0 0.875,0 0,0.875"/> 524 - <polygon fill="#ffffff" points="0,3.5 3.5,0 3.5,0.875 0.875,3.5"/> 530 + <pattern height="17.2" id="pattern-hatched-45deg-white-8.6-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.6,8.6" width="17.2"> 531 + <polygon fill="#ffffff" points="0,0 2.15,0 0,2.15"/> 532 + <polygon fill="#ffffff" points="0,8.6 8.6,0 8.6,2.15 2.15,8.6"/> 525 533 </pattern> 526 - <pattern height="8.4" id="pattern-hatched-45deg-white-4.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4.2,4.2" width="8.4"> 527 - <polygon fill="#ffffff" points="0,0 1.05,0 0,1.05"/> 528 - <polygon fill="#ffffff" points="0,4.2 4.2,0 4.2,1.05 1.05,4.2"/> 534 + <pattern height="17.4" id="pattern-hatched-45deg-white-8.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.7,8.7" width="17.4"> 535 + <polygon fill="#ffffff" points="0,0 2.175,0 0,2.175"/> 536 + <polygon fill="#ffffff" points="0,8.7 8.7,0 8.7,2.175 2.175,8.7"/> 529 537 </pattern> 530 538 <pattern height="17.6" id="pattern-hatched-45deg-white-8.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.8,8.8" width="17.6"> 531 539 <polygon fill="#ffffff" points="0,0 2.2,0 0,2.2"/> 532 540 <polygon fill="#ffffff" points="0,8.8 8.8,0 8.8,2.2 2.2,8.8"/> 533 541 </pattern> 534 - <pattern height="11.6" id="pattern-hatched-45deg-white-5.8-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.8,5.8" width="11.6"> 535 - <polygon fill="#ffffff" points="0,0 1.45,0 0,1.45"/> 536 - <polygon fill="#ffffff" points="0,5.8 5.8,0 5.8,1.45 1.45,5.8"/> 542 + <pattern height="17.8" id="pattern-hatched-45deg-white-8.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,8.9,8.9" width="17.8"> 543 + <polygon fill="#ffffff" points="0,0 2.225,0 0,2.225"/> 544 + <polygon fill="#ffffff" points="0,8.9 8.9,0 8.9,2.225 2.225,8.9"/> 545 + </pattern> 546 + <pattern height="18" id="pattern-hatched-45deg-white-9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9,9" width="18"> 547 + <polygon fill="#ffffff" points="0,0 2.25,0 0,2.25"/> 548 + <polygon fill="#ffffff" points="0,9 9,0 9,2.25 2.25,9"/> 549 + </pattern> 550 + <pattern height="18.2" id="pattern-hatched-45deg-white-9.1-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9.1,9.1" width="18.2"> 551 + <polygon fill="#ffffff" points="0,0 2.275,0 0,2.275"/> 552 + <polygon fill="#ffffff" points="0,9.1 9.1,0 9.1,2.275 2.275,9.1"/> 553 + </pattern> 554 + <pattern height="18.4" id="pattern-hatched-45deg-white-9.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9.2,9.2" width="18.4"> 555 + <polygon fill="#ffffff" points="0,0 2.3,0 0,2.3"/> 556 + <polygon fill="#ffffff" points="0,9.2 9.2,0 9.2,2.3 2.3,9.2"/> 537 557 </pattern> 538 558 <pattern height="18.6" id="pattern-hatched-45deg-white-9.3-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,9.3,9.3" width="18.6"> 539 559 <polygon fill="#ffffff" points="0,0 2.325,0 0,2.325"/> 540 560 <polygon fill="#ffffff" points="0,9.3 9.3,0 9.3,2.325 2.325,9.3"/> 541 - </pattern> 542 - <pattern height="1.4" id="pattern-hatched-45deg-white-0.7-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.7,0.7" width="1.4"> 543 - <polygon fill="#ffffff" points="0,0 0.175,0 0,0.175"/> 544 - <polygon fill="#ffffff" points="0,0.7 0.7,0 0.7,0.175 0.175,0.7"/> 545 - </pattern> 546 - <pattern height="8" id="pattern-hatched-45deg-white-4-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,4,4" width="8"> 547 - <polygon fill="#ffffff" points="0,0 1,0 0,1"/> 548 - <polygon fill="#ffffff" points="0,4 4,0 4,1 1,4"/> 549 - </pattern> 550 - <pattern height="4.4" id="pattern-hatched-45deg-white-2.2-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,2.2,2.2" width="4.4"> 551 - <polygon fill="#ffffff" points="0,0 0.55,0 0,0.55"/> 552 - <polygon fill="#ffffff" points="0,2.2 2.2,0 2.2,0.55 0.55,2.2"/> 553 - </pattern> 554 - <pattern height="1.8" id="pattern-hatched-45deg-white-0.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,0.9,0.9" width="1.8"> 555 - <polygon fill="#ffffff" points="0,0 0.225,0 0,0.225"/> 556 - <polygon fill="#ffffff" points="0,0.9 0.9,0 0.9,0.225 0.225,0.9"/> 557 - </pattern> 558 - <pattern height="11.8" id="pattern-hatched-45deg-white-5.9-0.25" patternTransform="rotate(0)" patternUnits="userSpaceOnUse" viewBox="0,0,5.9,5.9" width="11.8"> 559 - <polygon fill="#ffffff" points="0,0 1.475,0 0,1.475"/> 560 - <polygon fill="#ffffff" points="0,5.9 5.9,0 5.9,1.475 1.475,5.9"/> 561 561 </pattern> 562 562 </defs> 563 563 </svg>
+8 -4
src/graphics/canvas.rs
··· 292 292 /// used to only generate one definition per filter 293 293 /// 294 294 pub fn unique_filters(&self) -> Vec<Filter> { 295 - self.layers 295 + let mut filters: Vec<Filter> = self.layers 296 296 .iter() 297 297 .flat_map(|layer| { 298 298 layer.objects.iter().flat_map(|(_, o)| o.filters.clone()) 299 299 }) 300 300 .unique() 301 - .collect() 301 + .collect(); 302 + filters.sort_by_key(|f| format!("{:?}", f)); 303 + filters 302 304 } 303 305 304 306 pub fn unique_pattern_fills(&self) -> Vec<Fill> { 305 - self.layers 307 + let mut fills: Vec<Fill> = self.layers 306 308 .iter() 307 309 .flat_map(|layer| layer.objects.iter().flat_map(|(_, o)| o.fill)) 308 310 .filter(|fill| matches!(fill, Fill::Hatches(..) | Fill::Dotted(..))) 309 311 .unique_by(|fill| fill.pattern_id()) 310 - .collect() 312 + .collect(); 313 + fills.sort_by_key(|f| f.pattern_id()); 314 + fills 311 315 } 312 316 313 317 pub fn debug_region(&mut self, region: &Region, color: Color) {