studio-engine 0.56.4 → 0.57.1
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 +4 -4
- data/CHANGELOG.md +56 -1
- data/README.md +24 -9
- data/app/assets/images/state-flags/ak.svg +22 -0
- data/app/assets/images/state-flags/al.svg +6 -0
- data/app/assets/images/state-flags/ar.svg +244 -0
- data/app/assets/images/state-flags/az.svg +8 -0
- data/app/assets/images/state-flags/ca.svg +1 -0
- data/app/assets/images/state-flags/co.svg +9 -0
- data/app/assets/images/state-flags/ct.svg +2472 -0
- data/app/assets/images/state-flags/dc.svg +18 -0
- data/app/assets/images/state-flags/de.svg +1549 -0
- data/app/assets/images/state-flags/fl.svg +6784 -0
- data/app/assets/images/state-flags/ga.svg +71 -0
- data/app/assets/images/state-flags/hi.svg +11 -0
- data/app/assets/images/state-flags/ia.svg +1 -0
- data/app/assets/images/state-flags/id.svg +105 -0
- data/app/assets/images/state-flags/il.svg +538 -0
- data/app/assets/images/state-flags/in.svg +57 -0
- data/app/assets/images/state-flags/ks.svg +2575 -0
- data/app/assets/images/state-flags/ky.svg +2918 -0
- data/app/assets/images/state-flags/la.svg +1904 -0
- data/app/assets/images/state-flags/ma.svg +142 -0
- data/app/assets/images/state-flags/md.svg +23 -0
- data/app/assets/images/state-flags/me.svg +3277 -0
- data/app/assets/images/state-flags/mi.svg +792 -0
- data/app/assets/images/state-flags/mn.svg +2486 -0
- data/app/assets/images/state-flags/mo.svg +2726 -0
- data/app/assets/images/state-flags/ms.svg +9 -0
- data/app/assets/images/state-flags/mt.svg +1288 -0
- data/app/assets/images/state-flags/nc.svg +268 -0
- data/app/assets/images/state-flags/nd.svg +2365 -0
- data/app/assets/images/state-flags/ne.svg +1960 -0
- data/app/assets/images/state-flags/nh.svg +2 -0
- data/app/assets/images/state-flags/nj.svg +2265 -0
- data/app/assets/images/state-flags/nm.svg +6 -0
- data/app/assets/images/state-flags/nv.svg +468 -0
- data/app/assets/images/state-flags/ny.svg +995 -0
- data/app/assets/images/state-flags/oh.svg +49 -0
- data/app/assets/images/state-flags/ok.svg +1036 -0
- data/app/assets/images/state-flags/or.svg +1 -0
- data/app/assets/images/state-flags/pa.svg +304 -0
- data/app/assets/images/state-flags/pr.svg +7 -0
- data/app/assets/images/state-flags/ri.svg +29 -0
- data/app/assets/images/state-flags/sc.svg +84 -0
- data/app/assets/images/state-flags/sd.svg +446 -0
- data/app/assets/images/state-flags/thumb/ak.png +0 -0
- data/app/assets/images/state-flags/thumb/al.png +0 -0
- data/app/assets/images/state-flags/thumb/ar.png +0 -0
- data/app/assets/images/state-flags/thumb/az.png +0 -0
- data/app/assets/images/state-flags/thumb/ca.png +0 -0
- data/app/assets/images/state-flags/thumb/co.png +0 -0
- data/app/assets/images/state-flags/thumb/ct.png +0 -0
- data/app/assets/images/state-flags/thumb/dc.png +0 -0
- data/app/assets/images/state-flags/thumb/de.png +0 -0
- data/app/assets/images/state-flags/thumb/fl.png +0 -0
- data/app/assets/images/state-flags/thumb/ga.png +0 -0
- data/app/assets/images/state-flags/thumb/hi.png +0 -0
- data/app/assets/images/state-flags/thumb/ia.png +0 -0
- data/app/assets/images/state-flags/thumb/id.png +0 -0
- data/app/assets/images/state-flags/thumb/il.png +0 -0
- data/app/assets/images/state-flags/thumb/in.png +0 -0
- data/app/assets/images/state-flags/thumb/ks.png +0 -0
- data/app/assets/images/state-flags/thumb/ky.png +0 -0
- data/app/assets/images/state-flags/thumb/la.png +0 -0
- data/app/assets/images/state-flags/thumb/ma.png +0 -0
- data/app/assets/images/state-flags/thumb/md.png +0 -0
- data/app/assets/images/state-flags/thumb/me.png +0 -0
- data/app/assets/images/state-flags/thumb/mi.png +0 -0
- data/app/assets/images/state-flags/thumb/mn.png +0 -0
- data/app/assets/images/state-flags/thumb/mo.png +0 -0
- data/app/assets/images/state-flags/thumb/ms.png +0 -0
- data/app/assets/images/state-flags/thumb/mt.png +0 -0
- data/app/assets/images/state-flags/thumb/nc.png +0 -0
- data/app/assets/images/state-flags/thumb/nd.png +0 -0
- data/app/assets/images/state-flags/thumb/ne.png +0 -0
- data/app/assets/images/state-flags/thumb/nh.png +0 -0
- data/app/assets/images/state-flags/thumb/nj.png +0 -0
- data/app/assets/images/state-flags/thumb/nm.png +0 -0
- data/app/assets/images/state-flags/thumb/nv.png +0 -0
- data/app/assets/images/state-flags/thumb/ny.png +0 -0
- data/app/assets/images/state-flags/thumb/oh.png +0 -0
- data/app/assets/images/state-flags/thumb/ok.png +0 -0
- data/app/assets/images/state-flags/thumb/or.png +0 -0
- data/app/assets/images/state-flags/thumb/pa.png +0 -0
- data/app/assets/images/state-flags/thumb/pr.png +0 -0
- data/app/assets/images/state-flags/thumb/ri.png +0 -0
- data/app/assets/images/state-flags/thumb/sc.png +0 -0
- data/app/assets/images/state-flags/thumb/sd.png +0 -0
- data/app/assets/images/state-flags/thumb/tn.png +0 -0
- data/app/assets/images/state-flags/thumb/tx.png +0 -0
- data/app/assets/images/state-flags/thumb/ut.png +0 -0
- data/app/assets/images/state-flags/thumb/va.png +0 -0
- data/app/assets/images/state-flags/thumb/vt.png +0 -0
- data/app/assets/images/state-flags/thumb/wa.png +0 -0
- data/app/assets/images/state-flags/thumb/wi.png +0 -0
- data/app/assets/images/state-flags/thumb/wv.png +0 -0
- data/app/assets/images/state-flags/thumb/wy.png +0 -0
- data/app/assets/images/state-flags/tn.svg +23 -0
- data/app/assets/images/state-flags/tx.svg +16 -0
- data/app/assets/images/state-flags/ut.svg +3225 -0
- data/app/assets/images/state-flags/va.svg +1 -0
- data/app/assets/images/state-flags/vt.svg +397 -0
- data/app/assets/images/state-flags/wa.svg +2620 -0
- data/app/assets/images/state-flags/wi.svg +3611 -0
- data/app/assets/images/state-flags/wv.svg +1 -0
- data/app/assets/images/state-flags/wy.svg +210 -0
- data/app/controllers/concerns/studio/geo_detection.rb +198 -0
- data/app/controllers/studio/geo_settings_controller.rb +155 -0
- data/app/helpers/studio/geo_helper.rb +73 -0
- data/app/models/studio/geo_setting.rb +137 -0
- data/app/views/components/_geo_badge.html.erb +63 -0
- data/app/views/studio/geo_settings/edit.html.erb +368 -0
- data/db/migrate/20260818120000_create_studio_geo_settings.rb +46 -0
- data/lib/studio/engine.rb +30 -0
- data/lib/studio/geo/countries.rb +269 -0
- data/lib/studio/geo/lookup.rb +114 -0
- data/lib/studio/geo.rb +244 -0
- data/lib/studio/version.rb +1 -1
- data/lib/studio.rb +89 -0
- data/studio-engine.gemspec +4 -0
- metadata +135 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<!-- Creator: CorelDRAW -->
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1000px" height="700px" style="shape-rendering: geometricprecision; text-rendering: geometricprecision; fill-rule: evenodd; clip-rule: evenodd;" viewBox="0 0 3000 2100">
|
|
5
|
+
<defs>
|
|
6
|
+
<style type="text/css">
|
|
7
|
+
<![CDATA[
|
|
8
|
+
.str0 {stroke:#002868;stroke-width:4}
|
|
9
|
+
.str1 {stroke:#002868;stroke-width:4;stroke-linejoin:bevel}
|
|
10
|
+
.fil4 {fill:none}
|
|
11
|
+
.fil3 {fill:#002868}
|
|
12
|
+
.fil2 {fill:#002868}
|
|
13
|
+
.fil0 {fill:#BF0A30}
|
|
14
|
+
.fil1 {fill:white}
|
|
15
|
+
]]>
|
|
16
|
+
</style>
|
|
17
|
+
</defs>
|
|
18
|
+
<rect id="rect2289" class="fil0" width="3000" height="2100"/>
|
|
19
|
+
<rect id="rect2290" class="fil1" x="150" y="150" width="2700" height="1800"/>
|
|
20
|
+
<rect id="rect2291" class="fil2" x="225" y="225" width="2550" height="1650"/>
|
|
21
|
+
<path id="path2288" class="fil1" d="M1006.58 1200.68c-9.93543,-49.6736 -41.3953,-91.0689 -51.3307,-94.3807 -9.93425,-3.31063 -28.1492,-8.27835 -28.1492,-8.27835 0,0 13.2472,-9.93543 6.6248,-28.1492 -6.6248,-18.2138 -36.4287,-67.8886 -38.0846,-96.0366 -1.65472,-28.1492 6.62362,-64.5768 0,-87.7583 -6.62244,-23.1803 -31.4598,-43.05 -33.1157,-86.1024 -1.65591,-43.05 69.5433,-102.659 110.94,-104.315 41.3953,-1.65591 79.4776,13.2461 102.659,11.5913 23.1815,-1.65709 51.3295,-31.461 69.5445,-38.0846 18.2138,-6.62244 26.4921,3.31181 38.0823,-1.65472 11.5913,-4.96772 105.973,-82.7917 200.353,-82.7917 94.3819,0 165.581,34.7728 187.108,34.7728 21.5244,0 61.2638,-9.93543 91.0689,0 29.8051,9.93425 66.2315,54.6413 109.284,66.2315 43.05,11.5913 291.422,56.2984 319.57,101.004 28.1492,44.7071 46.363,109.283 46.363,140.745 0,31.4598 -8.27835,115.906 -8.27835,132.464 0,16.5567 8.27835,38.0835 4.96654,59.6091 -3.31181,21.5244 -13.2461,29.8039 -13.2461,29.8039 0,0 -6.62362,-36.4276 -8.27835,-57.9531 -1.65709,-21.5256 13.2449,-81.1346 11.5902,-115.906 -1.65591,-34.7728 -16.5579,-77.8228 -16.5579,-77.8228 0,0 -9.93543,49.6736 -18.215,81.1346 -8.27835,31.4598 -33.1157,120.874 -33.1157,172.204 0,51.3295 14.902,125.841 14.902,125.841 0,0 -41.3953,71.2004 -44.7071,99.3484 -3.31063,28.1492 -9.93307,94.3819 -8.27835,102.661 1.65591,8.27835 -9.93425,-3.31181 -13.2461,6.62244 -3.31181,9.93543 -1.65591,23.1803 -1.65591,23.1803l-38.0846 -3.31063c0,0 1.65709,-16.5591 8.27953,-28.1492 6.62362,-11.5902 16.5579,-19.8697 14.9031,-34.7717 -1.65591,-14.902 1.65472,-79.4787 1.65472,-79.4787 0,0 -28.148,48.0189 -36.4276,66.2327 -8.27953,18.2138 -8.27953,41.3953 -11.5902,49.6748 -3.31181,8.27835 -9.93425,8.27835 -13.2461,18.2126 -3.31299,9.93543 -8.27953,9.93543 -8.27953,9.93543l-29.8051 1.65472c0,0 57.9543,-142.398 61.2661,-178.826 3.31063,-36.4287 -36.4287,-110.939 -44.7071,-135.776 -8.27953,-24.8374 -8.27953,-44.7071 -16.5591,-54.6413 -8.27835,-9.93543 -36.4276,-21.5256 -46.3618,-16.5591 -9.93543,4.96772 -64.5768,56.2984 -76.1669,71.2004 -11.5913,14.902 -41.3953,43.05 -41.3953,43.05 0,0 -66.2327,-36.4276 -101.004,-44.7071 -34.7717,-8.27835 -120.874,-14.902 -120.874,-14.902 0,0 6.62362,127.498 3.31063,147.367 -3.31063,19.8697 -19.8697,26.4933 -19.8697,39.7394 0,13.2461 0,31.461 0,41.3953 0,9.93543 -26.4921,13.2472 -33.1146,21.5256 -6.6248,8.27953 0,14.902 -8.27953,26.4933 -8.27953,11.5902 -19.8697,8.27835 -24.8374,14.9008 -4.96772,6.6248 -1.65591,46.3642 -1.65591,46.3642l-66.2327 -1.65709c0,0 26.4933,-54.6402 24.8374,-86.1012 -1.65591,-31.4598 -28.148,-77.8228 -33.1157,-102.66 -4.96772,-24.8362 -19.8697,-62.9209 -39.7394,-62.9209 -19.8697,0 -36.4276,9.93543 -36.4276,9.93543 0,0 4.96772,-82.7906 -23.1815,-117.562 -28.1492,-34.7717 -96.0366,-31.461 -117.562,-26.4933 -21.5268,4.96654 -44.7071,36.4276 -52.9866,39.7394 -8.27953,3.31181 -14.902,0 -28.1492,4.96654 -13.2449,4.96772 -29.8039,18.215 -41.3941,28.1492z"/>
|
|
22
|
+
<g id="g3286">
|
|
23
|
+
<g id="g1883">
|
|
24
|
+
<path id="path1825" class="fil1 str0" d="M1307.59 689.937c0,-13.6394 11.7591,-9.87638 23.048,-15.052 11.289,-5.17323 21.1665,-12.7004 21.1665,-12.7004l0.47126 35.2795 -43.2756 0 -1.41024 -7.52717z"/>
|
|
25
|
+
<path id="path1826" class="fil1 str0" d="M1494.32 723.806c-11.7591,7.05591 -14.5807,0.470079 -22.1067,-6.58583 -7.52598,-7.05472 -30.1051,-23.5181 -30.1051,-23.5181l60.2091 9.87756 -7.99724 20.2264z"/>
|
|
26
|
+
<path id="path1824" class="fil1 str1" d="M1307.66 687.855c-1.44567,13.5248 -0.522047,23.3303 6.50906,29.8346 7.05472,6.58583 12.6992,4.23425 17.8736,3.29291 5.17441,-0.941339 68.2039,-26.3409 87.4902,-26.3409 19.285,0 45.6319,0.934252 60.2079,14.5819 6.55984,6.14173 13.1705,10.8177 12.2291,14.5819 -0.941339,3.76299 23.5193,-13.1717 23.048,-23.9894 -0.468898,-10.8189 -34.337,-32.4555 -70.5555,-37.6311 -36.2185,-5.17323 -84.5693,23.9929 -119.476,26.8122 -12.5268,1.19291 -17.3433,3.02953 -17.3268,-1.14213z"/>
|
|
27
|
+
<path id="text1827" class="fil3" d="M1493.26 703.22c-1.22835,1.70787 -0.753543,3.36142 0.869291,4.67126 1.10197,0.88937 2.9315,1.75276 4.04409,0.374409 1.02402,-1.27087 0.124016,-2.4437 -0.721654,-3.51732 -0.859843,-1.08661 -2.0563,-2.29488 -2.48268,-3.6189 -0.669685,-2.08701 1.33346,-4.01457 3.31535,-4.14803 2.3563,-0.161811 4.82244,2.06693 5.45433,4.23307 0.333071,1.10787 0.046063,2.22638 -0.862205,3.35079l-1.28858 -1.03937c0.368504,-0.596457 0.556299,-1.1315 0.565748,-1.60276 0.0141732,-1.54724 -2.07402,-3.54094 -3.64252,-3.40512 -1.14449,0.0980315 -2.23465,1.1374 -1.74567,2.34449 0.514961,1.24134 1.7126,2.4378 2.55236,3.50433 1.16811,1.4811 1.68543,3.1252 0.368504,4.7563 -1.85197,2.29606 -4.58858,1.46102 -6.58701,-0.152362 -2.19921,-1.7752 -3.06496,-4.45039 -1.12795,-6.79134l1.28858 1.04055z"/>
|
|
28
|
+
<polygon id="path1848" class="fil3" points="1494.72,693.281 1493.82,694.546 1490.25,692.013 1483.62,701.356 1482.16,700.322 1488.79,690.979 1485.21,688.444 1486.11,687.182"/>
|
|
29
|
+
<polygon id="path1847" class="fil3" points="1470.53,680.407 1472.14,681.146 1469.91,686.031 1476.06,688.847 1478.29,683.961 1479.91,684.702 1474.5,696.524 1472.88,695.784 1475.41,690.255 1469.26,687.439 1466.73,692.968 1465.11,692.229"/>
|
|
30
|
+
<path id="path1846" class="fil3" d="M1457.32 677.092c1.18346,0.301181 2.14843,0.790157 2.89488,1.46811 1.08543,0.975591 1.55906,2.32323 1.41969,4.04055l-1.68898 -0.429921c0.0271654,-0.972047 -0.227953,-1.75039 -0.767717,-2.3315 -0.538583,-0.588189 -1.30039,-1.00748 -2.28307,-1.25669 -1.16693,-0.297638 -2.26181,-0.109843 -3.28465,0.561024 -1.01811,0.673228 -1.74685,1.87559 -2.1874,3.60827 -0.381496,1.49882 -0.36378,2.80276 0.0543307,3.91417 0.419291,1.10551 1.37126,1.84724 2.85945,2.22402 1.1374,0.290551 2.1626,0.200787 3.07205,-0.26811 0.917717,-0.473622 1.57323,-1.44449 1.96535,-2.91496l-3.94606 -1.00394 0.361417 -1.41496 5.5311 1.40669 -1.71378 6.74173 -1.09724 -0.279921 0 -1.72559c-0.73937,0.488976 -1.36299,0.798425 -1.87087,0.930709 -0.85748,0.232677 -1.86378,0.201969 -3.0189,-0.0909449 -1.49173,-0.380315 -2.65276,-1.18937 -3.48189,-2.43071 -0.864567,-1.50945 -1.02756,-3.32244 -0.488976,-5.43898 0.53622,-2.10945 1.53543,-3.64252 2.99646,-4.59921 1.38898,-0.911811 2.94685,-1.14921 4.6748,-0.709843z"/>
|
|
31
|
+
<polygon id="path1844" class="fil3" points="1443.05,674.852 1444.82,675.034 1443.49,687.969 1441.72,687.787"/>
|
|
32
|
+
<path id="path1842" class="fil3" d="M1433.04 680.066c0.825591,0.0448819 1.48583,-0.0850394 1.98071,-0.389764 0.500787,-0.303543 0.774803,-0.884646 0.820866,-1.74567 0.0507874,-0.924803 -0.251575,-1.57441 -0.904724,-1.94528 -0.349606,-0.197244 -0.824409,-0.31063 -1.42559,-0.343701l-4.29567 -0.232677 -0.239764 4.43622 4.06417 0.220866m-5.50157 -6.26339l6.00945 0.324803c0.989764,0.0543307 1.79882,0.243307 2.42598,0.565748 1.18937,0.620079 1.74331,1.67598 1.66181,3.16535 -0.0413386,0.778346 -0.237402,1.40669 -0.588189,1.88386 -0.346063,0.477165 -0.814961,0.850394 -1.40787,1.11969 0.494882,0.233858 0.859843,0.525591 1.09488,0.875197 0.240945,0.349606 0.355512,0.903543 0.344882,1.65827l-0.0318898 1.74567c-0.00944882,0.494882 0.011811,0.865748 0.0637795,1.11024 0.0838583,0.419291 0.25748,0.693307 0.522047,0.825591l-0.0153543 0.292913 -2.15669 -0.11811c-0.0531496,-0.114567 -0.092126,-0.262205 -0.11811,-0.43937 -0.0259843,-0.179528 -0.0366142,-0.523228 -0.0330709,-1.0311l0.011811 -2.16969c0.00472441,-0.851575 -0.279921,-1.4374 -0.852756,-1.75748 -0.328346,-0.177165 -0.850394,-0.285827 -1.56969,-0.324803l-4.00276 -0.216142 -0.302362 5.56654 -1.75866 -0.0944882 0.702756 -12.9827z"/>
|
|
33
|
+
<polygon id="path1840" class="fil3" points="1377.29,682.589 1379.02,682.222 1381.4,693.424 1387.84,692.055 1388.16,693.57 1380,695.306"/>
|
|
34
|
+
<path id="path1839" class="fil3" d="M1369.57 693.318l-3.40512 -5.02913 -0.524409 6.09331 3.92953 -1.06417m-4.79764 -6.65197l1.92283 -0.519685 7.94764 11.3197 -1.86142 0.50315 -2.29016 -3.41575 -4.96417 1.34291 -0.341339 4.12795 -1.74331 0.47126 1.32992 -13.8295z"/>
|
|
35
|
+
<path id="path1836" class="fil3" d="M1348.55 692.766l1.63465 7.86732c0.191339,0.923622 0.524409,1.65709 0.999213,2.19685 0.706299,0.818504 1.6689,1.10079 2.8878,0.84685 1.46102,-0.304724 2.35157,-1.01102 2.66929,-2.1189 0.170079,-0.601181 0.159449,-1.36299 -0.0307087,-2.28071l-1.63583 -7.8685 1.75039 -0.36378 1.48583 7.14921c0.325984,1.56614 0.36378,2.81457 0.11811,3.74528 -0.454724,1.69724 -1.7563,2.76969 -3.90591,3.21614 -2.14843,0.446457 -3.76654,-0.0188976 -4.85551,-1.39488 -0.596457,-0.757087 -1.05709,-1.91811 -1.38307,-3.48189l-1.48583 -7.15039 1.75157 -0.362598z"/>
|
|
36
|
+
<polygon id="path1832" class="fil3" points="1317.14,702.914 1326.16,699.996 1326.65,701.51 1319.27,703.9 1320.48,707.656 1327.31,705.445 1327.77,706.878 1320.94,709.088 1322.3,713.282 1329.81,710.851 1330.29,712.324 1321.15,715.283"/>
|
|
37
|
+
<path id="path1849" class="fil3" d="M1345.81 707.363l-0.585827 1.25906 -2.3315 -0.972047c-0.871654,0.825591 -1.92165,1.41142 -3.08268,1.71496 -1.95236,0.511417 -3.64843,0.272835 -5.09173,-0.715748 -1.30157,-0.988583 -2.19803,-2.41772 -2.68819,-4.29094 -0.446457,-1.70079 -0.405118,-3.26693 0.121654,-4.69843 0.677953,-1.83661 2.07874,-3.03425 4.20236,-3.58937 2.22047,-0.582283 4.05,-0.298819 5.49213,0.84685 1.12559,0.895276 1.91457,2.20984 2.36929,3.94488 0.479528,1.82717 0.490157,3.93661 -0.487795,5.60906l2.08228 0.891732m-5.21811 0.0944882c0.294094,-0.131102 0.537402,-0.298819 0.72874,-0.501969l-1.66063 -0.71811 0.57874 -1.27677 1.97835 0.845669c0.687402,-1.37953 0.64252,-2.99882 0.258661,-4.45984 -0.387402,-1.47874 -1.08661,-2.56772 -2.1,-3.26575 -1.0063,-0.699213 -2.1815,-0.874016 -3.52205,-0.523228 -1.35945,0.356693 -2.32087,1.07362 -2.8878,2.14843 -0.566929,1.07008 -0.615354,2.50276 -0.144094,4.30157 0.39685,1.51299 1.09252,2.61732 2.08583,3.31417 1.43976,1.00276 3.15945,0.719291 4.68425,0.135827z"/>
|
|
38
|
+
</g>
|
|
39
|
+
<g id="use1823">
|
|
40
|
+
<path id="path2293" class="fil1 str0" d="M1476.77 1013.57c0,0 -11.1094,-9.02835 -13.8874,-13.1941 -2.77795,-4.16693 -10.415,-17.3587 -10.415,-17.3587l19.4421 -20.1378c0,0 14.5819,18.0543 14.5819,21.5268 0,3.47126 -9.72165,29.1638 -9.72165,29.1638z"/>
|
|
41
|
+
<path id="path2294" class="fil1 str0" d="M1479.55 915.667c0,0 -24.3024,-20.1378 -26.387,-24.998 -2.08228,-4.86142 -2.77677,-22.2201 -2.77677,-22.2201l11.8051 -2.77677c0,0 4.85906,4.16575 11.1094,7.63701 6.24921,3.47244 15.2764,4.16693 15.2764,4.16693l-9.02717 38.1909z"/>
|
|
42
|
+
<path id="path2295" class="fil1 str0" d="M1496.38 741.431c0,0 -0.318898,-7.96654 -0.478346,-11.6315 -0.159449,-3.66496 -5.25709,-8.28543 -5.25709,-8.28543 0,0 -6.05433,5.89488 -6.37441,8.12717 -0.318898,2.22992 -0.477165,13.2236 -0.477165,13.2236l12.587 -1.43386z"/>
|
|
43
|
+
<polygon id="path2296" class="fil1 str0" points="1505.78,1022.14 1501.45,788.313 1476.34,789.177 1472.87,1023.88"/>
|
|
44
|
+
<path id="path2297" class="fil4 str0" d="M1481.3 1024.39l2.21811 -243.656m-2.21811 243.656l0 0 0 0z"/>
|
|
45
|
+
<path id="path2298" class="fil4 str0" d="M1476.86 1024.39l0.444094 -243.656m-0.444094 243.656l0 0 0 0z"/>
|
|
46
|
+
<path id="path2299" class="fil4 str0" d="M1494.61 1025.72l1.77402 -245.875m-1.77402 245.875l0 0 0 0z"/>
|
|
47
|
+
<path id="path2300" class="fil4 str0" d="M1487.96 1025.28c-0.442913,-2.21929 1.7752,-245.876 1.7752,-245.876m-1.7752 245.876l0 0 0 0z"/>
|
|
48
|
+
<path id="path2301" class="fil4 str0" d="M1502.16 1026.16l0.442913 -246.763m-0.442913 246.763l0 0 0 0z"/>
|
|
49
|
+
<polygon id="path2302" class="fil1 str0" points="1510.98,1039.46 1510.98,1024.74 1506.65,1021.28 1475.47,1021.28 1467.68,1025.61 1469.41,1041.2"/>
|
|
50
|
+
<polygon id="path2303" class="fil1 str0" points="1504.83,753.86 1500.21,746.53 1509.45,738.405 1472,737.766 1480.13,746.53 1476.47,753.7"/>
|
|
51
|
+
<path id="path2304" class="fil1 str0" d="M1501.72 776.963l-6.93071 -7.17047c0,0 15.137,-14.3398 17.2087,-14.3398 2.07165,0 3.34606,3.34606 5.57598,3.18661 2.2311,-0.159449 3.50551,-1.11496 3.50551,-3.50551 0,-2.38937 -2.22992,-3.50551 -5.57598,-3.34606l-49.076 -0.636614c-3.50551,0.158268 -4.62165,2.22992 -4.46102,3.98268 0.158268,1.75276 2.54882,3.50551 4.62047,3.34606 2.07165,-0.159449 2.70827,-3.50551 4.93937,-3.34606 2.2311,0.159449 11.7909,13.3843 11.7909,14.3398l-7.96654 7.64882 26.3693 -0.159449z"/>
|
|
52
|
+
<path id="path2305" class="fil1 str0" d="M1507.44 784.468c6.81024,7.60394 11.3445,12.3803 10.9984,24.2646 0,12.4996 -17.0634,31.4823 -29.7839,42.926 -12.861,11.5736 -35.5382,19.8283 -35.5382,30.0083 0,9.89291 1.96535,11.1543 4.41024,14.3197 -2.01496,-2.30197 -12.6921,-9.48307 -12.6921,-26.1484 0,-16.6642 13.8874,-34.7185 29.8583,-44.4402 15.9697,-9.72165 35.413,-22.9146 35.413,-29.8583 0.426378,-6.18661 -2.66575,-11.0717 -2.66575,-11.0717z"/>
|
|
53
|
+
<path id="path2306" class="fil1 str0" d="M1504.07 889.256c0.237402,6.82559 0,12.5244 0.48189,18.0791 0.605906,6.56102 -20.1378,20.1378 -28.4693,28.4693 -8.33268,8.33268 -29.1638,17.3598 -30.5528,29.8583 -1.38898,12.4984 10.9406,24.1346 13.8177,28.8815 -3.16417,-6.61772 4.01693,-14.2996 12.2551,-20.9799 7.25669,-5.88543 22.9169,-14.5547 30.8657,-23.178 7.8815,-8.55118 16.6654,-22.2201 16.6654,-35.413 0,-13.1929 -8.81457,-23.6339 -15.0638,-25.7173z"/>
|
|
54
|
+
<polygon id="path2307" class="fil1 str0" points="1510.16,782.46 1501.4,788.914 1475.99,789.711 1467.54,782.7 1475.99,776.963 1501.72,776.963"/>
|
|
55
|
+
</g>
|
|
56
|
+
<g id="g1930">
|
|
57
|
+
<path id="path1927" class="fil1 str0" d="M1387.51 720.102c-17.9445,2.87126 -22.2508,25.8402 -22.2508,25.8402 0,0 7.89449,1.43504 7.89449,8.6126 0,7.17756 0.71811,15.7902 0.71811,15.7902l15.7913 -17.2264 -2.15315 -33.0165z"/>
|
|
58
|
+
<path id="path1928" class="fil1 str0" d="M1366.69 745.224c-6.45945,6.45945 -9.33071,14.3551 -9.33071,14.3551 0,0 -8.6126,-19.3795 -6.45945,-23.687 2.15315,-4.3063 7.89449,-9.33071 7.17756,-13.637 -0.71811,-4.3063 -4.3063,-5.02441 -8.6126,-4.3063 -4.30748,0.71811 -4.30748,25.122 -4.30748,31.5815 0,6.45945 1.43622,17.9433 5.02441,22.2496 3.58937,4.3063 6.45945,10.7657 10.0488,11.4839 3.58819,0.71811 13.637,-14.3551 13.637,-14.3551 0,0 1.43504,-14.3539 -0.71811,-17.9433 -2.15315,-3.58819 -6.45945,-5.74134 -6.45945,-5.74134z"/>
|
|
59
|
+
<path id="path1926" class="fil1 str0" d="M1433.44 726.561c23.6858,13.6382 20.8157,32.2996 20.0976,38.7591 -0.71811,6.45945 0,10.7657 0,10.7657 0,0 10.0488,10.0488 14.3551,16.5083 4.3063,6.46063 16.5071,25.122 16.5071,25.122l-4.3063 4.3063c0,0 -17.9433,-12.9201 -25.1209,-21.5327 -7.17638,-8.61378 -38.7579,-60.2906 -38.7579,-60.2906l17.2252 -13.6382z"/>
|
|
60
|
+
<path id="path1929" class="fil4 str0" d="M1373.87 964.854l-17.9433 -252.819m17.9433 252.819l0 0 0 0z"/>
|
|
61
|
+
<path id="path1905" class="fil1 str0" d="M1436.1 960.737l-62.1378 -0.0555118c0,-1.7126 8.44724,-210.04 8.44724,-221.532 0,-11.4921 -1.71024,-20.2949 0.733465,-22.9843 2.44606,-2.68937 24.2079,-1.95591 29.0976,0 4.88976,1.95591 19.8047,6.60236 21.0272,9.29173 1.22362,2.68937 -2.93268,18.8268 -2.93268,24.4512 0,5.62323 6.35551,20.7827 5.86772,28.6063 -0.488976,7.8248 6.37323,88.3949 6.37323,93.7736 0,6.6378 -5.44488,-3.4063 -7.90276,-0.231496 -2.95157,3.81142 8.60433,85.4516 1.42677,88.6807z"/>
|
|
62
|
+
<g id="g1911">
|
|
63
|
+
<path id="path1904" class="fil1 str0" d="M1400.26 697.583c0,0 -0.733465,15.4039 -0.733465,19.5614 0,4.1563 6.84567,11.2465 11.2476,11.9799 4.40079,0.733465 9.04724,-4.1563 8.55827,-11.0031 -0.490157,-6.84567 -2.69055,-5.86772 -2.69055,-13.9358 0,-8.07047 -1.46693,-13.9382 -1.46693,-13.9382l-14.915 7.33583z"/>
|
|
64
|
+
<path id="path1899" class="fil1 str0" d="M1397.08 679.245c-1.22244,6.84567 -0.979134,18.0933 -0.245669,20.7827 0.734646,2.68937 0.734646,10.0252 5.13543,10.7587 4.40079,0.733465 11.7366,-8.80276 13.9382,-12.9591 2.19921,-4.1563 3.17717,-9.29173 3.17717,-9.29173l-11.7354 -17.1154 -10.2697 7.8248z"/>
|
|
65
|
+
<path id="path1902" class="fil1 str0" d="M1397.57 703.695l6.60236 -0.488976m-6.60236 0.488976l0 0 0 0z"/>
|
|
66
|
+
<path id="path1903" class="fil1 str0" d="M1404.41 688.78c1.7126,0 5.13543,0 5.13543,0m-5.13543 0l0 0 0 0z"/>
|
|
67
|
+
<path id="path1898" class="fil1 str0" d="M1395.86 679.489c-2.20039,-4.64646 0.733465,-13.6937 9.04724,-13.4492 8.3126,0.245669 17.3587,12.2256 17.3587,18.3378 0,6.11457 -1.71024,11.7366 -3.17835,11.7366 -1.46693,0 -8.3126,-19.3157 -13.937,-19.5602 -5.62323,-0.244488 -5.13425,3.17835 -9.29055,2.93504z"/>
|
|
68
|
+
</g>
|
|
69
|
+
<path id="path1906" class="fil1 str0" d="M1411.75 751.375c-12.4701,24.45 -22.0051,33.0083 -26.4071,33.2539 -4.40197,0.243307 -10.0252,-0.490157 -10.0252,-0.490157l2.48386 50.739 35.6787 0.944882m-1.73031 -84.4476l0 0 0 0z"/>
|
|
70
|
+
<path id="path1907" class="fil1 str0" d="M1422.51 752.108c-12.2256,48.4122 -49.8803,73.8413 -49.8803,73.8413l4.66299 75.378 37.0358 -36.7417m8.1815 -112.478l0 0 0 0z"/>
|
|
71
|
+
<path id="path1908" class="fil1 str0" d="M1416.4 788.541c-10.0252,78.2433 -44.5004,65.772 -44.5004,65.772l1.90394 69.3531c28.7787,-6.90118 30.9319,-29.8689 30.9319,-29.8689 0,0 10.0476,2.87008 17.2252,-4.30748 7.17756,-7.17638 0.71811,-30.8622 2.87126,-41.6291 2.15315,-10.7657 2.87126,-22.2496 2.87126,-22.2496m-11.3031 -37.0701l0 0 0 0z"/>
|
|
72
|
+
<path id="path1919" class="fil4 str0" d="M1424.83 794.029c-2.87126,12.2031 -5.74252,38.0409 -5.74252,38.0409m5.74252 -38.0409l0 0 0 0z"/>
|
|
73
|
+
<path id="path1920" class="fil4 str0" d="M1384.63 833.506c12.2008,-5.74252 27.274,-44.5016 27.274,-44.5016m-27.274 44.5016l0 0 0 0z"/>
|
|
74
|
+
<path id="path1921" class="fil4 str0" d="M1415.5 862.217c-1.43504,7.89449 0.71811,18.6602 0.71811,18.6602m-0.71811 -18.6602l0 0 0 0z"/>
|
|
75
|
+
<path id="path1922" class="fil4 str0" d="M1416.21 913.894c0.716929,-17.9445 -1.43622,-20.0976 -1.43622,-20.0976m1.43622 20.0976l0 0 0 0z"/>
|
|
76
|
+
<path id="path1923" class="fil4 str0" d="M1421.24 743.07c4.3063,-7.17874 5.02323,-20.0976 5.02323,-20.0976m-5.02323 20.0976l0 0 0 0z"/>
|
|
77
|
+
<path id="path1925" class="fil4 str0" d="M1437.03 871.546c-7.89567,-3.58819 -12.202,-6.45945 -12.202,-6.45945m12.202 6.45945l0 0 0 0z"/>
|
|
78
|
+
</g>
|
|
79
|
+
<g id="g1775">
|
|
80
|
+
<path id="path1773" class="fil1 str0" d="M1336.12 1015.2c0,0 11.1106,-9.02717 13.8874,-13.1941 2.77795,-4.16575 10.4161,-17.3598 10.4161,-17.3598l-19.4421 -20.1354c0,0 -14.5831,18.0531 -14.5831,21.5244 0,3.47244 9.72165,29.165 9.72165,29.165z"/>
|
|
81
|
+
<path id="path1774" class="fil1 str0" d="M1333.34 917.295c0,0 24.3047,-20.1366 26.387,-24.998 2.08346,-4.86024 2.77677,-22.2201 2.77677,-22.2201l-11.8028 -2.77795c0,0 -4.86142,4.16693 -11.1106,7.63937 -6.25039,3.47126 -15.2764,4.16575 -15.2764,4.16575l9.02598 38.1909z"/>
|
|
82
|
+
<path id="path1764" class="fil1 str0" d="M1316.51 743.059c0,0 0.318898,-7.96654 0.477165,-11.6303 0.159449,-3.66496 5.25945,-8.28661 5.25945,-8.28661 0,0 6.05433,5.89606 6.37323,8.12598 0.318898,2.23228 0.477165,13.226 0.477165,13.226l-12.587 -1.43504z"/>
|
|
83
|
+
<polygon id="path1760" class="fil1 str0" points="1307.11,1023.77 1311.44,789.939 1336.56,790.806 1340.02,1025.5"/>
|
|
84
|
+
<path id="path1765" class="fil4 str0" d="M1331.6 1026.02l-2.21929 -243.656m2.21929 243.656l0 0 0 0z"/>
|
|
85
|
+
<path id="path1769" class="fil4 str0" d="M1336.04 1026.02l-0.442913 -243.656m0.442913 243.656l0 0 0 0z"/>
|
|
86
|
+
<path id="path1767" class="fil4 str0" d="M1318.28 1027.35l-1.7752 -245.876m1.7752 245.876l0 0 0 0z"/>
|
|
87
|
+
<path id="path1766" class="fil4 str0" d="M1324.94 1026.9c0.442913,-2.21929 -1.77638,-245.875 -1.77638,-245.875m1.77638 245.875l0 0 0 0z"/>
|
|
88
|
+
<path id="path1768" class="fil4 str0" d="M1310.74 1027.79l-0.444094 -246.762m0.444094 246.762l0 0 0 0z"/>
|
|
89
|
+
<polygon id="path1759" class="fil1 str0" points="1301.92,1041.09 1301.92,1026.37 1306.25,1022.91 1337.42,1022.91 1345.22,1027.24 1343.49,1042.82"/>
|
|
90
|
+
<polygon id="path1763" class="fil1 str0" points="1308.07,755.487 1312.69,748.157 1303.45,740.031 1340.89,739.395 1332.77,748.157 1336.43,755.328"/>
|
|
91
|
+
<path id="path1762" class="fil1 str0" d="M1311.26 778.114l6.85276 -6.69213c0,0 -15.137,-14.3409 -17.2087,-14.3409 -2.07165,0 -3.34606,3.34724 -5.57598,3.18661 -2.23228,-0.159449 -3.50669,-1.11496 -3.50669,-3.50551 0,-2.38937 2.2311,-3.50433 5.57717,-3.34606l49.076 -0.637795c3.50551,0.16063 4.62047,2.23228 4.46102,3.98386 -0.159449,1.75276 -2.54882,3.50551 -4.62047,3.34606 -2.07165,-0.159449 -2.70945,-3.50551 -4.93937,-3.34606 -2.2311,0.159449 -11.7909,13.3854 -11.7909,14.3409l7.96654 7.64764 -26.2913 -0.636614z"/>
|
|
92
|
+
<path id="path1770" class="fil1 str0" d="M1305.92 786.441c-6.81024,8.3315 -11.6114,12.1831 -11.465,23.9197 0,12.4996 17.0634,31.4811 29.7827,42.9272 12.8622,11.5724 35.5394,19.8272 35.5394,30.0083 0,9.89291 -1.96417,11.1543 -4.41142,14.3197 2.01496,-2.30315 12.6933,-9.48425 12.6933,-26.1496 0,-16.6654 -13.8874,-34.7185 -29.8583,-44.4402 -15.9709,-9.72047 -35.413,-22.9146 -35.413,-29.8583 -0.179528,-6.00591 3.13228,-10.7268 3.13228,-10.7268z"/>
|
|
93
|
+
<path id="path1772" class="fil1 str0" d="M1308.83 890.883c-0.238583,6.82559 0,12.5244 -0.48189,18.0803 -0.607087,6.56102 20.1378,20.1354 28.4693,28.4681 8.33268,8.33268 29.1638,17.3598 30.5528,29.8583 1.38898,12.4996 -10.9406,24.1346 -13.8189,28.8827 3.16535,-6.6189 -4.01575,-14.3008 -12.2539,-20.9811 -7.25669,-5.88425 -22.9181,-14.5535 -30.8657,-23.1768 -7.8815,-8.55236 -16.6654,-22.2201 -16.6654,-35.4142 0,-13.1929 8.81457,-23.6339 15.0638,-25.7173z"/>
|
|
94
|
+
<polygon id="path1761" class="fil1 str0" points="1302.73,784.089 1311.49,790.541 1336.91,791.339 1345.35,784.326 1336.91,778.591 1311.18,778.591"/>
|
|
95
|
+
</g>
|
|
96
|
+
<path id="text1791" class="fil3" d="M1360.05 859.923l0.976772 0.863386 -3.19134 3.60354 6.79488 -0.412205 1.38307 1.22362 -5.71299 0.25748 -0.746457 7.21181 -1.30276 -1.15394 0.695669 -5.99882 -2.18504 0.0850394 -2.28071 2.57598 -0.976772 -0.863386 6.54567 -7.39252m-4.07362 -3.96614c0.935433,0.827953 1.44331,1.71732 1.52362,2.66811 0.0791339,0.950787 -0.12874,1.76457 -0.628346,2.44252l-0.975591 -0.863386c0.311811,-0.575197 0.424016,-1.14803 0.337795,-1.72087 -0.0814961,-0.570472 -0.421654,-1.1185 -1.01811,-1.64764 -0.72874,-0.644882 -1.54488,-0.908268 -2.44843,-0.793701 -0.897638,0.114567 -1.81535,0.700394 -2.75079,1.75748 -0.766535,0.865748 -1.18701,1.74685 -1.2626,2.64331 -0.069685,0.896457 0.296457,1.69843 1.09843,2.40945 0.738189,0.65315 1.55079,0.86811 2.43898,0.64252 0.468898,-0.11811 0.969685,-0.375591 1.50118,-0.772441l0.976772 0.863386c-0.777165,0.702756 -1.64409,1.09961 -2.59961,1.19173 -1.14803,0.114567 -2.22047,-0.269291 -3.21732,-1.15157 -0.858661,-0.76063 -1.35,-1.65945 -1.47283,-2.69646 -0.16063,-1.36772 0.39685,-2.76969 1.66772,-4.20591 0.964961,-1.09016 2.04567,-1.72913 3.24094,-1.91575 1.29449,-0.205512 2.49094,0.177165 3.58819,1.14921m-0.201969 -0.178346l0 0m-7.73504 -6.84921c1.30512,1.1563 1.90039,2.43189 1.78465,3.82441 -0.0885827,1.08898 -0.584646,2.14252 -1.48819,3.16299 -0.976772,1.10315 -2.07047,1.77283 -3.27756,2.00787 -1.4185,0.276378 -2.73543,-0.124016 -3.95315,-1.20236 -1.1374,-1.0063 -1.69961,-2.17441 -1.68543,-3.50197 0.0614173,-1.2378 0.582283,-2.41181 1.5626,-3.5185 0.885827,-1.00039 1.89094,-1.63583 3.01654,-1.90748 1.44567,-0.347244 2.79331,0.0307087 4.04055,1.13504m-6.02126 7.00394c0.882283,0.78189 1.79882,1.0311 2.74961,0.747638 0.957874,-0.283465 1.8,-0.837402 2.52756,-1.65945 0.770079,-0.86811 1.16102,-1.76929 1.17402,-2.70354 0.0165354,-0.930709 -0.369685,-1.74685 -1.15748,-2.4437 -0.765354,-0.676772 -1.62283,-0.966142 -2.57244,-0.866929 -0.946063,0.0944882 -1.87323,0.655512 -2.77913,1.67717 -0.724016,0.819685 -1.13031,1.6937 -1.21654,2.62205 -0.0791339,0.928346 0.344882,1.80354 1.27441,2.62677m6.05197 -6.97677l0 0m-4.32047 -3.46535l-0.779528 0.881102 -2.49094 -2.2063 -5.76614 6.5126 -1.01575 -0.901181 5.76496 -6.51142 -2.49094 -2.20512 0.779528 -0.881102 5.99882 5.31142m-15.8811 -5.12835c-0.348425,0.43937 -0.551575,0.866929 -0.608268,1.28268 -0.101575,0.785433 0.26811,1.54843 1.10551,2.29134 0.376772,0.33189 0.765354,0.581102 1.16929,0.746457 0.78189,0.32126 1.41024,0.21378 1.88504,-0.322441 0.356693,-0.402756 0.484252,-0.801969 0.385039,-1.19528 -0.10748,-0.393307 -0.376772,-0.894094 -0.811417,-1.49764l-0.800787 -1.11378c-0.523228,-0.726378 -0.842126,-1.29921 -0.956693,-1.7185 -0.196063,-0.724016 -0.0224409,-1.39252 0.520866,-2.00787 0.588189,-0.66378 1.30157,-1.00512 2.1378,-1.0252 0.837402,-0.0188976 1.67598,0.343701 2.51929,1.09016 0.773622,0.68622 1.26496,1.4563 1.47283,2.31024 0.21378,0.852756 -0.0437008,1.69134 -0.770079,2.51339l-0.941339 -0.833858c0.298819,-0.43937 0.461811,-0.838583 0.484252,-1.19646 0.0366142,-0.654331 -0.311811,-1.3063 -1.04291,-1.95472 -0.590551,-0.522047 -1.12559,-0.773622 -1.60276,-0.754724 -0.478346,0.0188976 -0.862205,0.193701 -1.15394,0.523228 -0.32126,0.361417 -0.405118,0.76063 -0.251575,1.19528 0.102756,0.282283 0.432283,0.81378 0.987402,1.59213l0.827953 1.15512c0.399213,0.556299 0.646063,1.05354 0.742913,1.49291 0.164173,0.76063 -0.046063,1.47047 -0.627165,2.12835 -0.726378,0.818504 -1.54252,1.13976 -2.45197,0.962598 -0.905906,-0.173622 -1.75276,-0.609449 -2.54055,-1.3063 -0.920079,-0.81378 -1.4315,-1.68661 -1.53543,-2.61732 -0.106299,-0.925984 0.197244,-1.78465 0.915354,-2.57362l0.941339 0.833858m6.63307 -3.41811l0 0m-9.62362 -8.1626l5.39055 4.77283 -0.80315 0.905906 -4.4126 -3.90709 -1.9878 2.24409 4.08189 3.61299 -0.757087 0.856299 -4.08189 -3.61417 -2.21929 2.5063 4.48937 3.97441 -0.779528 0.881102 -5.46496 -4.84016 6.54449 -7.39252m2.73307 2.42008l0 0m-9.15 -8.1l-3.45 8.17559 7.67244 -4.4374 1.12323 0.993307 -9.24331 5.00433 -1.06181 -0.940157 3.85276 -9.77598 1.10669 0.980315m-3.21496 -2.84764l1.01102 0.895276 -6.54449 7.3937 -1.01102 -0.896457 6.54449 -7.39252m0.507874 0.45l0 0m-6.4311 -5.69409l1.00039 0.887008 -5.76378 6.51142 3.74409 3.31535 -0.780709 0.881102 -4.74449 -4.20236 6.54449 -7.39252z"/>
|
|
97
|
+
<path id="text1794" class="fil3" d="M1340.62 951.483l1.18228 1.04764 -1.5685 9.29409 5.30197 -5.98819 0.951969 0.842126 -6.54567 7.39134 -1.12323 -0.993307 1.50945 -9.3378 -5.29843 5.98346 -0.955512 -0.845669 6.54567 -7.3937m2.86772 2.54055l0 0m-5.50039 -4.86969l1.01102 0.894094 -6.54449 7.39252 -1.0122 -0.895276 6.54567 -7.39134m0.509055 0.448819l0 0m-7.72913 0.94252l1.77047 -4.26024 -4.08543 2.20984 2.31496 2.05039m2.21811 -5.82047l1.1315 1.00276 -3.86339 9.76654 -1.09606 -0.972047 1.20945 -2.87717 -2.92205 -2.58898 -2.76142 1.50591 -1.02638 -0.909449 9.32835 -4.92756m0.518504 0.458268l0 0m-9.57638 -2.43661c0.468898,0.415748 0.923622,0.650787 1.36181,0.702756 0.440551,0.0555118 0.87874,-0.16063 1.3122,-0.650787 0.466535,-0.527953 0.592913,-1.05591 0.380315,-1.58504 -0.115748,-0.281102 -0.344882,-0.574016 -0.687402,-0.876378l-2.44606 -2.16614 -2.23583 2.52638 2.31496 2.04921m-0.317717 -6.32244l3.42165 3.02953c0.563386,0.498425 0.955512,0.992126 1.17638,1.4811 0.414567,0.929528 0.24685,1.8189 -0.505512,2.66811 -0.392126,0.442913 -0.804331,0.722835 -1.23898,0.842126 -0.431102,0.121654 -0.885827,0.121654 -1.36654,0.0023622 0.185433,0.373228 0.264567,0.71811 0.239764,1.03701 -0.0212598,0.322441 -0.214961,0.705118 -0.577559,1.15039l-0.842126 1.02165c-0.240945,0.290551 -0.402756,0.520866 -0.487795,0.690945 -0.147638,0.28937 -0.173622,0.535039 -0.0779528,0.738189l-0.147638 0.166535 -1.22835 -1.08661c0.023622,-0.0933071 0.069685,-0.199606 0.13937,-0.317717 0.0685039,-0.119291 0.224409,-0.329528 0.465354,-0.629528l1.03228 -1.28622c0.402756,-0.50315 0.511417,-0.98622 0.320079,-1.44803 -0.111024,-0.258661 -0.370866,-0.570472 -0.779528,-0.933071l-2.28071 -2.01732 -2.8063 3.17008 -1.00157 -0.887008 6.54567 -7.39252m-4.6878 -4.49173c0.695669,0.615354 1.17756,1.2815 1.44567,1.99843 0.392126,1.03583 0.244488,2.10945 -0.446457,3.22205l-0.992126 -0.877559c0.357874,-0.647244 0.455906,-1.26142 0.292913,-1.84134 -0.159449,-0.583465 -0.527953,-1.1315 -1.10433,-1.64291 -0.683858,-0.605906 -1.48937,-0.859843 -2.41299,-0.762992 -0.92126,0.100394 -1.83189,0.660236 -2.73071,1.67598 -0.779528,0.87874 -1.22008,1.76575 -1.32402,2.66102 -0.101575,0.891732 0.284646,1.72441 1.1563,2.49685 0.667323,0.590551 1.39016,0.885827 2.16732,0.885827 0.785433,0 1.56496,-0.427559 2.34213,-1.28386l-2.31496 -2.05039 0.734646 -0.830315 3.24567 2.87362 -3.50197 3.95551 -0.644882 -0.569291 0.601181 -1.16575c-0.668504,0.0720472 -1.19764,0.0649606 -1.5874,-0.0224409 -0.659055,-0.141732 -1.32756,-0.510236 -2.00551,-1.11024 -0.875197,-0.775984 -1.37717,-1.72559 -1.50591,-2.85236 -0.057874,-1.31929 0.462992,-2.60079 1.56142,-3.84213 1.09606,-1.2378 2.30315,-1.9252 3.62126,-2.0622 1.25551,-0.134646 2.39055,0.248031 3.40276,1.14449m-0.155906 -0.155906l0 0z"/>
|
|
98
|
+
<path id="text1797" class="fil3" d="M1490.2 832.63c0.392126,0.458268 0.800787,0.761811 1.22835,0.907087 0.806693,0.271654 1.68898,0.0401575 2.64567,-0.689764 0.429921,-0.328346 0.773622,-0.687402 1.03228,-1.07835 0.500787,-0.757087 0.516142,-1.44331 0.0496063,-2.0563 -0.351969,-0.459449 -0.745276,-0.677953 -1.1811,-0.654331 -0.437008,0.0307087 -1.02047,0.212598 -1.74921,0.543307l-1.34055 0.615354c-0.876378,0.400394 -1.54606,0.618898 -2.01142,0.65315 -0.804331,0.0566929 -1.4752,-0.265748 -2.01024,-0.967323 -0.577559,-0.759449 -0.791339,-1.5815 -0.636614,-2.46732 0.152362,-0.887008 0.711024,-1.69724 1.67244,-2.43189 0.884646,-0.675591 1.79882,-1.03346 2.74252,-1.0748 0.946063,-0.0484252 1.7752,0.39685 2.49213,1.33465l-1.0748 0.819685c-0.402756,-0.40748 -0.788976,-0.660236 -1.16102,-0.758268 -0.685039,-0.174803 -1.44449,0.0566929 -2.28071,0.694488 -0.673228,0.51378 -1.04882,1.02402 -1.12913,1.53425 -0.0779528,0.507874 0.0259843,0.949606 0.311811,1.3252 0.316535,0.413386 0.719291,0.584646 1.21063,0.51378 0.318898,-0.0507874 0.947244,-0.287008 1.88504,-0.711024l1.38898 -0.633071c0.669685,-0.305906 1.24724,-0.464173 1.73031,-0.474803 0.837402,-0.0153543 1.54252,0.35315 2.11417,1.10433 0.713386,0.935433 0.882283,1.86378 0.509055,2.78622 -0.372047,0.918898 -1.00748,1.72323 -1.90748,2.40945 -1.05,0.800787 -2.07638,1.15984 -3.08031,1.07717 -0.998031,-0.080315 -1.84134,-0.579921 -2.5252,-1.50118l1.0748 -0.819685m-2.22874 -7.70906l0 0m-10.6087 8.45906l6.15236 -4.69488 0.790157 1.03346 -5.03976 3.84449 1.95591 2.56299 4.66063 -3.55512 0.745276 0.976772 -4.66063 3.5563 2.18386 2.86063 5.1248 -3.91063 0.767717 1.00512 -6.24094 4.76102 -6.43937 -8.44016m3.11929 -2.37992l0 0m-11.6634 8.89961l1.35 -1.0311 9.48071 3.58583 -5.21693 -6.83858 1.08543 -0.827953 6.44055 8.44134 -1.28031 0.976772 -9.54094 -3.53031 5.21339 6.83268 -1.09134 0.831496 -6.44055 -8.44016m3.27402 -2.49921l0 0m-6.27992 4.79173l1.15512 -0.881102 6.44055 8.44016 -1.15394 0.882283 -6.44173 -8.44134m0.581102 -0.441732l0 0m-10.728 8.18504l1.63701 -1.24961 7.87087 5.28661 -3.0378 -8.97402 1.62047 -1.23543 6.44055 8.44016 -1.08543 0.829134 -3.80197 -4.98307c-0.132283,-0.17126 -0.344882,-0.459449 -0.64252,-0.864567 -0.295276,-0.403937 -0.617717,-0.833858 -0.966142,-1.28976l3.02598 8.9563 -1.13268 0.863386 -7.85669 -5.2689 0.197244 0.258661c0.157087,0.206693 0.402756,0.519685 0.734646,0.940157 0.333071,0.412205 0.576378,0.71811 0.727559,0.916535l3.80079 4.98307 -1.09134 0.831496 -6.44055 -8.44016z"/>
|
|
99
|
+
<path id="text1800" class="fil3" d="M1467.74 951.25l1.14331 -0.872835 5.67402 7.43504 4.27441 -3.2622 0.767717 1.0063 -5.4189 4.13386 -6.44055 -8.44016m-3.00591 2.29252l1.15512 -0.881102 6.44055 8.44016 -1.15394 0.882283 -6.44173 -8.44134m0.581102 -0.442913l0 0m-6.5185 4.61102c1.48937,-1.1374 2.95748,-1.5 4.40551,-1.08898 1.12795,0.320079 2.1378,1.06299 3.02598,2.22756 0.962598,1.25906 1.44213,2.55236 1.43976,3.8752 -0.00354331,1.55315 -0.700394,2.86063 -2.09055,3.92126 -1.29803,0.990945 -2.64567,1.34055 -4.04409,1.05 -1.29449,-0.32126 -2.42244,-1.11496 -3.3874,-2.37992 -0.871654,-1.13976 -1.33346,-2.33386 -1.38661,-3.57756 -0.0673228,-1.59803 0.611811,-2.94094 2.0374,-4.02756m6.13819 7.80709c1.00866,-0.768898 1.46102,-1.68425 1.35945,-2.74606 -0.100394,-1.0689 -0.509055,-2.07283 -1.2248,-3.01181 -0.757087,-0.992126 -1.62638,-1.59094 -2.61024,-1.79882 -0.977953,-0.211417 -1.91811,0.0271654 -2.81811,0.714567 -0.872835,0.664961 -1.35591,1.50945 -1.44921,2.53228 -0.0956693,1.01811 0.302362,2.11181 1.19409,3.2811 0.713386,0.934252 1.55079,1.54252 2.5122,1.82717 0.96378,0.276378 1.97598,0.011811 3.03661,-0.798425m-6.10512 -7.83307l0 0z"/>
|
|
100
|
+
<g id="g1723">
|
|
101
|
+
<path id="path1627" class="fil1 str0" d="M1212.19 1036.01l397.043 0.58937 -42.3508 62.3492c0,0 -160.581,58.8213 -167.64,57.6437 -7.05827,-1.1752 -168.817,-58.8201 -168.817,-58.8201l-18.235 -61.7622z"/>
|
|
102
|
+
<polygon id="path1634" class="fil1 str0" points="1362.18,971.311 1362.18,1060.13 1371.01,1057.78 1371.01,970.135"/>
|
|
103
|
+
<polygon id="path1635" class="fil1 str0" points="1442.18,970.135 1443.94,1060.13 1452.77,1060.13 1451.59,970.135"/>
|
|
104
|
+
<polygon id="path1630" class="fil1 str0" points="1353.95,1058.37 1354.54,1073.66 1458.65,1073.66 1458.06,1058.37"/>
|
|
105
|
+
<polygon id="path1629" class="fil1 str0" points="1348.65,1067.19 1348.65,1081.31 1462.77,1081.9 1462.18,1067.19"/>
|
|
106
|
+
<g id="g1700">
|
|
107
|
+
<polygon id="path1653" class="fil1 str0" points="1490.27,1105.81 1490.27,1131.19 1471.05,1129.47 1471.3,1099.16"/>
|
|
108
|
+
<polygon id="path1652" class="fil1 str0" points="1339.49,1101.13 1338.75,1127.99 1321.75,1119.12 1323.72,1102.61"/>
|
|
109
|
+
<path id="path1651" class="fil1 str0" d="M1322.49 1112.47c-0.985039,-13.0583 3.94252,-19.7091 7.88386,-19.7091 3.94252,0 142.159,-0.493701 150.043,0 7.88386,0.491339 9.85394,8.12953 9.85394,12.3177 0,4.18819 0,14.0433 0,14.0433 0,0 -0.797244,-7.59921 -17.0587,-8.58543 -16.2602,-0.985039 -6.34606,3.41102 -68.185,2.91969 -61.8413,-0.493701 -60.3626,-2.91142 -69.7252,-3.65079 -9.36142,-0.73937 -11.8252,0.200787 -12.8114,2.66457z"/>
|
|
110
|
+
<path id="text1660" class="fil3" d="M1471.68 1095.75c1.55551,0 2.67992,0.640157 3.37441,1.92047 0.53622,0.990945 0.805512,2.34803 0.805512,4.07126 0,1.63346 -0.244488,2.98346 -0.731102,4.05236 -0.703937,1.53307 -1.85669,2.29961 -3.45709,2.29961 -1.44331,0 -2.51693,-0.625984 -3.22205,-1.87913 -0.587008,-1.04646 -0.881102,-2.45197 -0.881102,-4.21299 0,-1.36535 0.175984,-2.53701 0.527953,-3.51614 0.660236,-1.82362 1.85551,-2.73543 3.58346,-2.73543m-0.0153543 10.9677c0.78189,0 1.40669,-0.347244 1.87087,-1.04055 0.464173,-0.694488 0.695669,-1.98661 0.695669,-3.87638 0,-1.36535 -0.167717,-2.4874 -0.50315,-3.36614 -0.335433,-0.883465 -0.987402,-1.3252 -1.95472,-1.3252 -0.890551,0 -1.54134,0.419291 -1.95591,1.25906 -0.408661,0.832677 -0.612992,2.06339 -0.612992,3.69094 0,1.22598 0.132283,2.21102 0.394488,2.95394 0.402756,1.13622 1.09134,1.70433 2.06575,1.70433z"/>
|
|
111
|
+
<path id="path1677" class="fil3" d="M1459.75 1104.86c0.0448819,0.832677 0.367323,1.40906 0.966142,1.72913 0.307087,0.167717 0.654331,0.251575 1.03937,0.251575 0.722835,0 1.33701,-0.3 1.84606,-0.898819 0.509055,-0.603543 0.870472,-1.82598 1.08307,-3.66614 -0.335433,0.530315 -0.752362,0.905906 -1.25079,1.12323 -0.49252,0.21378 -1.02402,0.318898 -1.59449,0.318898 -1.15748,0 -2.0752,-0.360236 -2.75197,-1.08189 -0.670866,-0.721654 -1.0063,-1.65118 -1.0063,-2.78622 0,-1.09016 0.33189,-2.05039 0.998031,-2.87835 0.664961,-0.827953 1.64764,-1.24134 2.94567,-1.24134 1.75039,0 2.95866,0.788976 3.6248,2.36575 0.369685,0.86811 0.553937,1.95236 0.553937,3.25512 0,1.47165 -0.220866,2.77559 -0.662598,3.91063 -0.732283,1.89213 -1.97598,2.83701 -3.72638,2.83701 -1.17402,0 -2.06693,-0.308268 -2.67638,-0.922441 -0.61063,-0.615354 -0.915354,-1.3878 -0.915354,-2.31614l1.52717 0m2.29134 -2.46732c0.598819,0 1.14449,-0.196063 1.63583,-0.588189 0.498425,-0.39685 0.747638,-1.0878 0.747638,-2.07283 0,-0.883465 -0.224409,-1.54016 -0.670866,-1.97126 -0.442913,-0.437008 -1.00748,-0.654331 -1.69488,-0.654331 -0.73937,0 -1.32756,0.248031 -1.76339,0.746457 -0.429921,0.491339 -0.646063,1.15276 -0.646063,1.98071 0,0.783071 0.190157,1.40669 0.570472,1.87087 0.380315,0.459449 0.988583,0.688583 1.82126,0.688583z"/>
|
|
112
|
+
<path id="path1675" class="fil3" d="M1452.58 1100.78c0.666142,0 1.18583,-0.184252 1.56024,-0.552756 0.375591,-0.375591 0.562205,-0.819685 0.562205,-1.33465 0,-0.447638 -0.179528,-0.858661 -0.537402,-1.23307 -0.356693,-0.375591 -0.902362,-0.563386 -1.63583,-0.563386 -0.727559,0 -1.25315,0.187795 -1.57795,0.563386 -0.323622,0.374409 -0.485433,0.81378 -0.485433,1.31693 0,0.564567 0.209055,1.00748 0.628346,1.3252 0.420472,0.320079 0.914173,0.478346 1.48583,0.478346m0.092126 5.95039c0.699213,0 1.27795,-0.187795 1.7374,-0.562205 0.464173,-0.380315 0.695669,-0.944882 0.695669,-1.69488 0,-0.777165 -0.237402,-1.3689 -0.713386,-1.77047 -0.474803,-0.402756 -1.08543,-0.604724 -1.82835,-0.604724 -0.722835,0 -1.3122,0.207874 -1.77165,0.62126 -0.452362,0.408661 -0.679134,0.976772 -0.679134,1.70315 0,0.627165 0.206693,1.16929 0.62126,1.62874 0.419291,0.453543 1.06535,0.679134 1.93819,0.679134m-2.14843 -5.37047c-0.420472,-0.179528 -0.746457,-0.388583 -0.981496,-0.629528 -0.441732,-0.447638 -0.662598,-1.02874 -0.662598,-1.74567 0,-0.895276 0.323622,-1.66299 0.972047,-2.30787 0.649606,-0.64252 1.56969,-0.964961 2.76142,-0.964961 1.15276,0 2.0563,0.305906 2.71063,0.915354 0.654331,0.604724 0.982677,1.3122 0.982677,2.12244 0,0.75 -0.191339,1.35709 -0.571654,1.82126 -0.212598,0.263386 -0.542126,0.520866 -0.989764,0.772441 0.497244,0.229134 0.88937,0.491339 1.17402,0.788976 0.531496,0.558661 0.797244,1.28622 0.797244,2.1815 0,1.05709 -0.354331,1.95472 -1.06535,2.69409 -0.709843,0.732283 -1.71496,1.09843 -3.01181,1.09843 -1.17047,0 -2.16024,-0.316535 -2.97047,-0.948425 -0.806693,-0.637795 -1.20945,-1.56024 -1.20945,-2.7685 0,-0.711024 0.173622,-1.32283 0.520866,-1.8378 0.347244,-0.520866 0.862205,-0.917717 1.5437,-1.19173z"/>
|
|
113
|
+
<path id="path1672" class="fil3" d="M1439.98 1099.26l0 -1.15748c1.09134,-0.106299 1.85197,-0.282283 2.28307,-0.527953 0.431102,-0.251575 0.752362,-0.842126 0.964961,-1.77165l1.19173 0 0 11.9669 -1.61102 0 0 -8.50984 -2.82874 0z"/>
|
|
114
|
+
<path id="path1671" class="fil3" d="M1368.41 1104.56c0.0448819,0.833858 0.367323,1.41024 0.964961,1.72795 0.308268,0.168898 0.655512,0.253937 1.04055,0.253937 0.722835,0 1.33701,-0.3 1.84606,-0.898819 0.509055,-0.603543 0.870472,-1.82598 1.08307,-3.66732 -0.335433,0.531496 -0.752362,0.907087 -1.25079,1.12441 -0.49252,0.212598 -1.02402,0.318898 -1.59449,0.318898 -1.15748,0 -2.07402,-0.361417 -2.75197,-1.08189 -0.670866,-0.722835 -1.0063,-1.65118 -1.0063,-2.78622 0,-1.09016 0.33189,-2.05157 0.998031,-2.87835 0.664961,-0.827953 1.64764,-1.24252 2.94567,-1.24252 1.75039,0 2.95866,0.788976 3.6248,2.36693 0.369685,0.866929 0.553937,1.95236 0.553937,3.25512 0,1.47165 -0.220866,2.77559 -0.662598,3.91063 -0.732283,1.89094 -1.97598,2.83701 -3.72638,2.83701 -1.17402,0 -2.06693,-0.308268 -2.67638,-0.922441 -0.61063,-0.616535 -0.915354,-1.3878 -0.915354,-2.31732l1.52717 0m2.29134 -2.46732c0.598819,0 1.14449,-0.196063 1.63701,-0.587008 0.497244,-0.39685 0.746457,-1.0878 0.746457,-2.07283 0,-0.884646 -0.224409,-1.54016 -0.670866,-1.97126 -0.442913,-0.437008 -1.00866,-0.654331 -1.69488,-0.654331 -0.73937,0 -1.32756,0.248031 -1.76339,0.746457 -0.429921,0.491339 -0.644882,1.15276 -0.644882,1.98071 0,0.783071 0.188976,1.40669 0.569291,1.87087 0.380315,0.459449 0.988583,0.687402 1.82126,0.687402z"/>
|
|
115
|
+
<path id="path1669" class="fil3" d="M1361.59 1095.39c1.34291,0 2.27717,0.349606 2.80276,1.04882 0.531496,0.693307 0.797244,1.41024 0.797244,2.14843l-1.49409 0c-0.0885827,-0.474803 -0.231496,-0.848031 -0.426378,-1.11614 -0.364961,-0.50315 -0.915354,-0.754724 -1.65354,-0.754724 -0.844488,0 -1.51654,0.390945 -2.01496,1.17402 -0.498425,0.777165 -0.774803,1.89449 -0.830315,3.34843 0.347244,-0.509055 0.784252,-0.88937 1.30866,-1.14094 0.48189,-0.224409 1.01811,-0.336614 1.61102,-0.336614 1.00748,0 1.88622,0.322441 2.63504,0.964961 0.75,0.644882 1.12559,1.60394 1.12559,2.87953 0,1.09016 -0.355512,2.05748 -1.06654,2.90197 -0.711024,0.839764 -1.72323,1.25906 -3.0378,1.25906 -1.12441,0 -2.09528,-0.425197 -2.91142,-1.27441 -0.817323,-0.856299 -1.22598,-2.2937 -1.22598,-4.31457 0,-1.49291 0.183071,-2.75906 0.545669,-3.80079 0.699213,-1.99134 1.97717,-2.98701 3.83504,-2.98701m-0.108661 11.0339c0.794882,0 1.3878,-0.264567 1.77874,-0.796063 0.398031,-0.537402 0.596457,-1.16929 0.596457,-1.89685 0,-0.615354 -0.177165,-1.2 -0.530315,-1.75394 -0.350787,-0.559843 -0.992126,-0.838583 -1.92047,-0.838583 -0.649606,0 -1.22008,0.214961 -1.71142,0.646063 -0.486614,0.431102 -0.731102,1.07953 -0.731102,1.94646 0,0.761811 0.222047,1.40197 0.66378,1.92165 0.446457,0.51378 1.06535,0.77126 1.85433,0.77126z"/>
|
|
116
|
+
<path id="path1667" class="fil3" d="M1351.67 1100.48c0.664961,0 1.18583,-0.184252 1.56024,-0.552756 0.374409,-0.375591 0.562205,-0.819685 0.562205,-1.33465 0,-0.447638 -0.179528,-0.858661 -0.537402,-1.23425 -0.357874,-0.374409 -0.902362,-0.562205 -1.63701,-0.562205 -0.726378,0 -1.25197,0.187795 -1.57677,0.562205 -0.323622,0.375591 -0.486614,0.814961 -0.486614,1.31811 0,0.564567 0.210236,1.0063 0.629528,1.3252 0.419291,0.318898 0.914173,0.478346 1.48583,0.478346m0.0909449 5.94921c0.700394,0 1.27795,-0.186614 1.7374,-0.562205 0.465354,-0.379134 0.69685,-0.943701 0.69685,-1.6937 0,-0.778346 -0.237402,-1.3689 -0.713386,-1.77165 -0.475984,-0.401575 -1.08543,-0.603543 -1.82953,-0.603543 -0.721654,0 -1.31102,0.206693 -1.77047,0.62126 -0.452362,0.40748 -0.679134,0.975591 -0.679134,1.70315 0,0.627165 0.205512,1.16929 0.620079,1.62756 0.420472,0.452362 1.06535,0.679134 1.93819,0.679134m-2.14843 -5.36929c-0.419291,-0.179528 -0.745276,-0.388583 -0.980315,-0.629528 -0.442913,-0.447638 -0.66378,-1.02992 -0.66378,-1.74567 0,-0.895276 0.324803,-1.66417 0.973228,-2.30787 0.649606,-0.64252 1.56969,-0.964961 2.76024,-0.964961 1.15394,0 2.0563,0.304724 2.71181,0.915354 0.654331,0.603543 0.981496,1.3122 0.981496,2.12244 0,0.748819 -0.190157,1.35709 -0.571654,1.82126 -0.211417,0.262205 -0.542126,0.519685 -0.989764,0.77126 0.498425,0.229134 0.890551,0.49252 1.1752,0.790157 0.531496,0.558661 0.797244,1.28504 0.797244,2.1815 0,1.05591 -0.355512,1.95472 -1.06654,2.69409 -0.709843,0.732283 -1.71378,1.09843 -3.01181,1.09843 -1.16929,0 -2.15906,-0.316535 -2.97047,-0.948425 -0.805512,-0.637795 -1.20827,-1.56142 -1.20827,-2.76969 0,-0.709843 0.173622,-1.32165 0.520866,-1.83661 0.346063,-0.520866 0.861024,-0.917717 1.54252,-1.19173z"/>
|
|
117
|
+
<path id="path1664" class="fil3" d="M1339.08 1098.95l0 -1.15748c1.09134,-0.106299 1.85197,-0.282283 2.28189,-0.527953 0.431102,-0.251575 0.753543,-0.843307 0.964961,-1.77165l1.19173 0 0 11.9669 -1.61102 0 0 -8.50984 -2.82756 0z"/>
|
|
118
|
+
</g>
|
|
119
|
+
<polygon id="path1628" class="fil1 str0" points="1243.95,1076.6 1569.23,1078.37 1563.94,1090.72 1258.66,1091.31"/>
|
|
120
|
+
<polygon id="path1631" class="fil1 str0" points="1356.3,967.782 1356.89,974.252 1377.47,974.252 1378.06,967.194"/>
|
|
121
|
+
<polygon id="path1632" class="fil1 str0" points="1437.47,967.194 1438.06,974.252 1455.71,974.252 1456.3,967.194"/>
|
|
122
|
+
<polygon id="path1633" class="fil1 str0" points="1362.18,957.783 1361.59,967.194 1449.83,967.194 1449.83,958.371"/>
|
|
123
|
+
<path id="path1638" class="fil1 str0" d="M1416.89 1006.02c-1.17638,-6.47126 -4.1185,-35.2925 -14.1177,-35.8819 -9.99921,-0.588189 -12.939,7.64764 -12.939,7.64764 0,0 14.1165,1.76339 12.939,7.64646 -1.1752,5.88071 -7.05827,20.5878 -9.99921,22.3512 -2.93976,1.76457 18.8232,-1.17638 24.1169,-1.76339z"/>
|
|
124
|
+
<polygon id="path1639" class="fil1 str0" points="1396.89,1003.07 1394.53,1043.07 1422.77,1043.66 1421.59,1004.84"/>
|
|
125
|
+
<path id="path1637" class="fil1 str0" d="M1371.01 1033.48c0,0 -0.519685,-24.6969 1.1752,-31.5862 1.17756,-7.05827 5.2937,-11.7638 12.3531,-11.1756 7.05827,0.587008 19.4114,13.5283 19.4114,13.5283 0,0 18.8232,-17.0575 25.8815,-16.4693 8.0811,2.32559 12.2197,8.06339 12.9862,14.6575 0.196063,5.12598 0.614173,31.3417 0.614173,31.3417 0,0 -14.6717,-16.5874 -19.4835,-18.3531 -4.11732,-1.17756 -12.352,-2.35276 -12.352,-2.35276l-1.12323 31.9996 -6.52323 -0.237402c0,0 -0.58937,-15.2929 -1.17756,-21.1748 -0.587008,-5.88189 -2.93976,-11.1768 -2.93976,-11.1768 0,0 -10.5886,5.29488 -14.1177,9.41102 -4.25787,3.8811 -14.7047,11.5878 -14.7047,11.5878z"/>
|
|
126
|
+
<g id="g1712">
|
|
127
|
+
<path id="path1640" class="fil1 str0" d="M1371.58 1035.78l70.6039 0.230315c0,0 0,8.23583 0,29.4106 -0.553937,25.8898 -35.6634,62.3728 -35.6646,62.374 0,0 -35.5382,-33.5421 -35.5087,-63.5504 -0.58937,-29.9988 0.569291,-28.4646 0.569291,-28.4646z"/>
|
|
128
|
+
<polygon id="path1641" class="fil3" points="1381.5,1069.86 1381.51,1096.34 1386.52,1104.15 1386.5,1069.86"/>
|
|
129
|
+
<polygon id="path1642" class="fil3" points="1392.5,1069.86 1392.59,1112.31 1397.5,1118.22 1397.49,1069.86"/>
|
|
130
|
+
<polygon id="path1643" class="fil3" points="1403.49,1069.86 1403.51,1124.84 1406.51,1127.8 1409.48,1124.52 1409.48,1069.86"/>
|
|
131
|
+
<polygon id="path1644" class="fil3" points="1415.48,1069.86 1415.53,1117.51 1420.49,1111.25 1420.47,1069.86"/>
|
|
132
|
+
<polygon id="path1645" class="fil3" points="1426.47,1069.86 1426.54,1102.89 1431.46,1095.21 1431.47,1069.86"/>
|
|
133
|
+
<polygon id="path1646" class="fil3" points="1371.51,1069.86 1376.51,1069.86 1376.51,1085.67"/>
|
|
134
|
+
<polygon id="path1647" class="fil3" points="1436.51,1069.86 1436.53,1085.77 1441.88,1069.86"/>
|
|
135
|
+
<polygon id="path1649" class="fil1 str0" points="1371.01,1035.25 1442.18,1036.01 1442.18,1064.01 1371.01,1064.25"/>
|
|
136
|
+
</g>
|
|
137
|
+
<path id="_132303184" class="fil3" d="M1406.63 1038.49l2.95157 9.0815 9.54803 0 -7.72559 5.6126 2.95157 9.0815 -7.72559 -5.6126 -7.72559 5.6126 2.95157 -9.0815 -7.72559 -5.6126 9.54803 0 2.95157 -9.0815zm1.4752 4.54016m6.25039 4.54134m0.911811 2.8063m-2.38701 7.34646m-2.38701 1.73504m-7.72677 0m-2.38701 -1.73504m-2.38701 -7.34646m0.911811 -2.8063m6.25039 -4.54134"/>
|
|
138
|
+
</g>
|
|
139
|
+
<g id="g1566">
|
|
140
|
+
<polygon id="path1547" class="fil1 str0" points="1584.98,1020.62 1587.46,924.79 1594.07,924.79 1593.24,1021.45"/>
|
|
141
|
+
<path id="path1548" class="fil1 str0" d="M1594.89 876.874c0,0 0,19.0004 0,26.4366 0,7.43504 -11.5665,18.1748 -10.7398,23.9587 0.826772,5.78268 8.26181,4.95591 10.7398,3.30354 2.47913,-1.65236 15.698,-23.9587 15.698,-37.1764 0,-13.2189 1.65118,-33.0461 -1.65236,-33.8717 -3.30591,-0.826772 -14.8713,12.3909 -14.8713,12.3909l0.825591 4.95827z"/>
|
|
142
|
+
<path id="path1543" class="fil1 str0" d="M1541.19 1004.1c0,0 -1.65354,31.3937 -1.65354,39.6555 0,8.26181 -0.825591,17.3492 -6.60945,22.3051 -5.78268,4.95709 -10.7398,3.30591 -12.3921,6.60945 -1.65118,3.30591 0.826772,5.78386 0.826772,5.78386l37.1776 -0.826772c0,0 -1.65354,-29.7402 -0.826772,-40.4811 0.826772,-10.7409 8.26063,-27.2634 4.13031,-30.5669 -4.13031,-3.30591 -17.3492,-3.30591 -20.6528,-2.47913z"/>
|
|
143
|
+
<path id="path1544" class="fil1 str0" d="M1502.36 995.014c0,0 19.8272,15.6969 19.0016,21.4795 -0.826772,5.78268 -9.91417,12.3921 -6.60945,15.6969 3.30472,3.30472 5.78268,2.47913 5.78268,2.47913l27.2646 -24.7854 -31.3949 -25.6098 -14.0445 10.7398z"/>
|
|
144
|
+
<path id="path1546" class="fil1 str0" d="M1566.8 1007.41c0,0 8.26181,11.5665 19.0016,11.5665 10.7398,0 24.7854,-29.7425 24.7854,-29.7425 0,0 -4.95827,40.4823 -23.9587,39.6555 -19.0016,-0.825591 -19.8283,-13.2189 -19.8283,-21.4795z"/>
|
|
145
|
+
<path id="path1545" class="fil1 str0" d="M1563.5 907.441c4.95709,-4.13031 6.60945,-28.089 6.60945,-28.089l7.43504 -14.0445c0,0 12.3921,14.0445 18.176,13.2177 5.78268,-0.826772 14.0445,-0.826772 14.0445,-5.78268 0,-4.95709 2.47795,-12.3921 -1.65236,-16.5236 -4.13031,-4.13031 -25.6098,-21.4795 -29.7413,-23.9587 -4.13031,-2.47795 -47.0906,-7.43504 -50.3953,-7.43504 -3.30472,0 -16.5236,8.26181 -18.176,15.6969 -1.65118,7.43622 -4.95709,32.2205 -4.95709,38.8299 0,6.60945 0.70748,16.6594 0.70748,16.6594l12.5114 -8.39764 4.13031 11.5665 41.3079 8.26063z"/>
|
|
146
|
+
<path id="path1549" class="fil1 str0" d="M1519.71 828.13c9.0874,9.91299 11.5665,35.5252 11.5665,35.5252 0,0 2.47795,-14.0457 9.0874,-19.0028 6.60945,-4.95591 22.3063,-5.78268 22.3063,-13.2177 0,-7.43504 -17.3492,-9.91417 -22.3063,-9.91417 -4.95709,0 -13.2189,0.826772 -20.6539,6.60945z"/>
|
|
147
|
+
<path id="path1550" class="fil1 str0" d="M1531.28 824c0,8.26063 3.30472,11.5665 7.43504,12.3921 4.13031,0.826772 14.0445,-4.1315 13.2189,-8.26181 -0.826772,-4.13031 -20.6539,-4.13031 -20.6539,-4.13031z"/>
|
|
148
|
+
<path id="path1551" class="fil1 str0" d="M1534.59 823.173c0,0 0,9.91417 4.95591,9.0874 4.95709,-0.825591 9.0874,-10.7398 9.0874,-10.7398l-14.0433 1.65236z"/>
|
|
149
|
+
<path id="path1554" class="fil1 str0" d="M1531.67 783.926c-0.305906,5.8252 -0.920079,12.5728 -1.84016,13.7988 -0.920079,1.22717 -3.9874,6.13346 -4.29331,8.58661 -0.305906,2.45315 2.76024,2.14724 2.76024,2.14724 0,0 -0.612992,11.3469 -0.920079,13.4929 -0.307087,2.14606 4.9063,0.305906 7.05354,3.98622 2.14724,3.68031 2.14724,8.8937 3.37323,7.97362 1.22598,-0.920079 5.82638,-5.52047 8.27953,-8.28071 2.45315,-2.75906 6.13346,-0.612992 7.05354,-4.29213 0.920079,-3.68031 1.84016,-31.2803 1.84016,-31.2803l-23.3067 -6.13228z"/>
|
|
150
|
+
<path id="path1542" class="fil1 str0" d="M1551.11 1004.93c-9.0874,0.826772 -12.3921,-0.825591 -13.2189,-4.95591 -0.825591,-4.1315 -0.825591,-30.5693 -2.47795,-39.6555 -1.65236,-9.0874 -4.13031,-13.2189 -4.13031,-13.2189 0,0 -21.4807,15.6969 -21.4807,23.1319 0,7.43622 6.60945,13.2189 6.60945,13.2189l-13.2189 11.5665c0,0 -27.2634,-15.6969 -27.2634,-24.7854 0,-9.0874 28.0902,-39.6555 33.0461,-46.265 4.95827,-6.60945 6.60945,-25.6098 11.5665,-26.4366 4.95827,-0.825591 35.5252,1.65354 40.4823,5.78386 4.95591,4.13031 15.6969,22.3051 14.8713,33.8717 -0.826772,11.5665 -4.95709,9.91417 -5.78386,14.0457 -0.825591,4.13031 0,7.43386 -0.825591,13.2177 -0.826772,5.78268 -4.95709,1.65236 -4.95709,6.60945 0,4.95591 1.65118,26.4366 -0.826772,30.5681 -2.47795,4.13031 -4.13031,3.30354 -12.3921,3.30354z"/>
|
|
151
|
+
<path id="path1552" class="fil1 str0" d="M1535.41 775.256c-5.78268,4.95827 -9.08858,6.60945 -7.43504,9.91535 1.65236,3.30354 14.8701,4.13031 16.5224,8.26063 1.65236,4.1315 0,10.7398 0,10.7398l6.60945 -1.65118 0 19.0004c0,0 16.5236,-13.2177 14.8701,-26.4366 -1.65118,-13.2189 -18.1736,-14.8701 -23.1319,-15.6969 -4.95709,-0.825591 -4.95709,-1.65236 -7.43504,-4.1315z"/>
|
|
152
|
+
<path id="path1553" class="fil1 str0" d="M1504.68 897.391c0.305906,4.29213 1.22717,26.9858 -0.307087,30.3591 -1.53307,3.37323 -4.29331,8.8937 -0.614173,13.187 3.6815,4.29331 7.97362,6.13228 9.81378,2.75906 1.84016,-3.37323 -0.612992,-19.0122 1.53307,-27.9059 2.14724,-8.8937 2.45433,-24.8398 0.92126,-26.9858 -1.53425,-2.14724 -10.7339,-1.22717 -11.3469,8.58661z"/>
|
|
153
|
+
<path id="path1555" class="fil4 str0" d="M1531.36 947.069c-4.90748,-9.8126 -4.29449,-19.6252 -4.29449,-19.6252m4.29449 19.6252l0 0 0 0z"/>
|
|
154
|
+
<path id="path1556" class="fil4 str0" d="M1518.48 889.11l0.307087 -32.8134m-0.307087 32.8134l0 0 0 0z"/>
|
|
155
|
+
<path id="path1557" class="fil4 str0" d="M1570.31 879.604c0,0 -4.9063,-3.67913 -6.44055,-5.51929 -1.53307,-1.84016 -3.37323,-4.60039 -3.37323,-4.60039m9.81378 10.1197l0 0 0 0z"/>
|
|
156
|
+
<path id="path1558" class="fil4 str0" d="M1589.32 876.23c-0.307087,-15.639 19.6264,-18.7063 19.6264,-18.7063m-19.6264 18.7063l0 0 0 0z"/>
|
|
157
|
+
<path id="path1559" class="fil4 str0" d="M1527.68 813.978l4.9063 0.307087m-4.9063 -0.307087l0 0 0 0z"/>
|
|
158
|
+
<path id="path1560" class="fil4 str0" d="M1530.44 794.965l7.05354 6.13465m-7.05354 -6.13465l0 0 0 0z"/>
|
|
159
|
+
</g>
|
|
160
|
+
<g id="g1607">
|
|
161
|
+
<path id="path1603" class="fil1 str0" d="M1251.25 800.79c0,0 -2.5878,-9.70512 -0.323622,-11.6457 2.26535,-1.94173 16.8224,-12.2953 21.0283,-11.9705 4.20709,0.322441 12.2941,12.2929 12.2941,12.2929l-32.9988 11.3232z"/>
|
|
162
|
+
<path id="path1588" class="fil1 str0" d="M1259.51 831.295c0,0 -53.5087,39.2386 -54.1039,49.3465 -0.594094,10.1067 23.7827,39.2386 23.7827,39.2386l10.1067 -9.5126c0,0 -1.18819,-7.13386 -3.56693,-13.6748 -2.37756,-6.53858 -7.72913,-13.6736 -7.72913,-13.6736 0,0 1.18937,0.595276 7.13504,-1.78346 5.94567,-2.37756 10.1067,-5.35157 10.1067,-5.35157 0,0 -1.78346,11.8913 1.18937,18.4311 2.97165,6.54094 12.4854,22.5921 12.4854,22.5921l35.0776 -2.37756c0,0 1.18937,-46.3736 0.594094,-57.0756 -0.594094,-10.702 -13.6736,-30.9165 -13.6736,-30.9165l-21.4039 4.75748z"/>
|
|
163
|
+
<path id="path1595" class="fil1 str0" d="M1267.84 1008.47c0,0 14.2701,10.1079 19.6205,14.8642 5.35039,4.7563 7.13386,7.17874 7.13386,7.17874l0.576378 5.39528 -14.8394 -0.0507874 -15.463 -17.8736 2.97165 -9.51378z"/>
|
|
164
|
+
<path id="path1592" class="fil1 str0" d="M1260.97 830.324c-0.646063,2.58661 14.5925,11.6717 18.7547,16.428 4.1622,4.7563 13.0795,11.2972 13.0795,11.2972 0,0 0.594094,-7.73031 -4.7563,-17.837 -5.35039,-10.1079 -3.08622,-11.7248 -5.46378,-12.3189 -2.37756,-0.595276 -23.9138,-0.909449 -21.6142,2.43071z"/>
|
|
165
|
+
<path id="path1590" class="fil1 str0" d="M1255.95 923.448c0,0 -9.5126,39.2386 -10.702,70.7504 -1.18937,31.5106 6.53976,63.0201 6.53976,63.0201l22.5921 -2.97283 0 -37.4551c0,0 42.2126,-43.4008 42.2126,-49.9417 0,-6.53976 -23.1874,-38.0504 -21.998,-42.2114 1.18937,-4.16339 -0.594094,-10.1079 -0.594094,-10.1079l-38.0504 8.9185z"/>
|
|
166
|
+
<path id="path1591" class="fil1 str0" d="M1274.97 990.631c0,0 6.10276,-18.972 7.88622,-24.3224 1.78346,-5.35157 2.32559,-9.51378 2.32559,-9.51378 0,0 7.02992,5.89252 6.43465,9.45945 -0.594094,3.56929 -8.91732,-1.18819 -16.6465,24.3768z"/>
|
|
167
|
+
<path id="path1605" class="fil3 str0" d="M1241.22 1004.6c0,0 -0.647244,-17.7933 -1.94055,-22.9689 -1.29567,-5.17795 -6.14646,-20.0587 -6.14646,-31.3819 0,-11.3232 2.26417,-19.0878 9.3815,-28.1457 7.11732,-9.05906 14.5583,-11.9705 14.5583,-11.9705 0,0 7.11732,0 17.7921,-0.323622 10.6772,-0.322441 20.3823,-0.969685 20.3823,-0.969685l-0.323622 11.322c0,0 -13.5874,3.88228 -22.3228,3.88228 -8.73543,0 -18.1169,-1.94055 -18.1169,-1.94055 0,0 -14.8819,14.2346 -14.2346,27.822 0.647244,13.5886 4.52953,33.3224 4.20591,38.8228 -0.322441,5.49921 -3.23504,15.8516 -3.23504,15.8516z"/>
|
|
168
|
+
<path id="path1593" class="fil1 str0" d="M1258.65 831.67c0,0 -0.917717,-14.0492 0.271654,-19.9949 1.18937,-5.94567 6.53976,-20.2146 6.53976,-20.2146l20.8087 -0.594094 -0.594094 27.9425 -4.1622 -0.594094 1.78346 9.5126c0,0 -7.13386,3.56811 -13.6748,4.1622 -6.53858,0.594094 -10.9724,-0.219685 -10.9724,-0.219685z"/>
|
|
169
|
+
<path id="path1586" class="fil1 str0" d="M1262.71 810.058c-13.0795,2.97165 -19.8461,8.75079 -24.0083,4.58976 -4.16102,-4.16102 4.7563,-16.6476 23.7815,-24.3756 19.0252,-7.73031 36.8622,-3.56811 38.0516,0 1.18819,3.56693 -8.32441,10.1067 -13.0807,10.7008 -4.7563,0.594094 -13.6748,0 -17.2417,2.37756 -3.56693,2.37874 -7.50236,6.70748 -7.50236,6.70748z"/>
|
|
170
|
+
<path id="path1587" class="fil1 str0" d="M1258.39 824.864c-7.35,0.360236 -8.81339,-6.90118 -5.41299,-12 3.56811,-5.35157 10.1079,-14.8642 17.8358,-17.2417 7.73031,-2.37874 14.2701,0 14.8642,4.16102 1.41496,4.37008 0.245669,7.49764 0.245669,7.49764 0,0 -10.9748,-8.54409 -15.7039,-3.93071 -4.1622,4.75748 -4.7563,13.6748 -8.32323,17.837 -1.16457,1.74567 -1.47992,3.58228 -3.50551,3.67677z"/>
|
|
171
|
+
<path id="path1594" class="fil1 str0" d="M1251.19 911.557c0.594094,-10.1067 9.30236,-12.4854 11.8913,-12.4854 2.26417,0 5.94449,11.2961 5.94449,19.0252 0,7.73031 -4.7563,23.1874 -8.91732,23.7815 -4.1622,0.594094 -2.97283,-20.2146 -2.97283,-20.2146l-4.75748 0 -1.18819 -10.1067z"/>
|
|
172
|
+
<path id="path1596" class="fil1 str0" d="M1252.38 1056.62l-0.594094 21.4039 46.3736 -1.18937c0,0 1.19055,-3.56693 -1.78346,-6.53976 -2.97283,-2.97283 -16.0512,-4.1622 -18.4299,-8.32323 -2.37874,-4.1622 -2.97283,-6.54094 -2.97283,-6.54094l-22.5933 1.18937z"/>
|
|
173
|
+
<path id="path1598" class="fil4 str0" d="M1272.6 831.201c8.73543,5.17559 19.0878,20.7035 19.735,23.2925 0.646063,2.5878 0.646063,3.55866 0.646063,3.55866m-20.3811 -26.8512l0 0 0 0z"/>
|
|
174
|
+
<path id="path1599" class="fil1 str0" d="M1226.01 916.284c4.20472,-9.05787 12.2929,-8.73425 12.2929,-8.73425 0,0 11.3232,5.82402 10.9996,8.73425 -0.324803,2.9126 -9.05906,-0.322441 -9.7063,1.61811 -0.647244,1.94173 4.85315,8.08819 1.94173,10.9996 -2.91142,2.91142 -12.6177,-5.82283 -15.528,-12.6177z"/>
|
|
175
|
+
<path id="path1601" class="fil4 str0" d="M1282.4 822.954l-3.65669 -0.488976m4.85315 0.647244l0 0 0 0z"/>
|
|
176
|
+
<path id="path1602" class="fil4 str0" d="M1274.54 1016.9c0.214961,-9.27402 -1.18583,-19.1953 0.647244,-27.8232m-0.647244 27.8232l0 0 0 0z"/>
|
|
177
|
+
<path id="path1604" class="fil3" d="M1281.66 809.687c0,-1.69724 -1.44803,-3.07441 -3.23504,-3.07441 -1.78701,0 -3.23504,1.37717 -3.23504,3.07441 0,1.69724 1.44803,3.07205 3.23504,3.07205 1.78701,0 3.23504,-1.3748 3.23504,-3.07205z"/>
|
|
178
|
+
<path id="path1606" class="fil4 str0" d="M1285.22 956.725c1.94173,-11.9705 0.646063,-24.2634 0.646063,-24.2634m-0.646063 24.2634l0 0 0 0z"/>
|
|
179
|
+
</g>
|
|
180
|
+
<path id="path919" class="fil1 str0" d="M1704.59 891.039c0,164.388 -133.604,297.804 -298.224,297.804 -164.617,0 -298.221,-133.416 -298.221,-297.804 0,-164.389 133.604,-297.806 298.221,-297.806 164.62,0 298.224,133.416 298.224,297.806zm-59.2913 -0.941339c0,132.379 -107.041,239.818 -238.931,239.818 -131.89,0 -238.932,-107.439 -238.932,-239.818 0,-132.379 107.042,-239.817 238.932,-239.817 131.89,0 238.931,107.438 238.931,239.817z"/>
|
|
181
|
+
<path id="text1951" class="fil3" d="M1482.86 612.633c3.12402,1.14567 5.60315,2.74134 7.4374,4.78583 2.66811,2.94803 3.57402,6.7311 2.71654,11.348l-4.45748 -1.63701c0.347244,-2.62795 -0.12874,-4.80591 -1.42913,-6.53386 -1.29449,-1.74331 -3.24094,-3.09094 -5.83583,-4.04528 -3.07795,-1.12913 -6.09803,-0.928346 -9.05787,0.604724 -2.94567,1.53898 -5.25709,4.59449 -6.93661,9.16772 -1.45157,3.95315 -1.76575,7.49291 -0.944882,10.6205 0.825591,3.1122 3.20197,5.38819 7.12441,6.82913 3.00354,1.10197 5.80512,1.14567 8.40354,0.129921 2.6185,-1.02402 4.66654,-3.4748 6.14055,-7.35118l-10.4114 -3.82205 1.37126 -3.73583 14.5996 5.36102 -6.5315 17.7921 -2.89843 -1.06535 0.485433 -4.67598c-2.14016,1.11496 -3.91654,1.7811 -5.33268,1.99843 -2.38701,0.389764 -5.10354,0.0259843 -8.15315,-1.0937 -3.9378,-1.44567 -6.85748,-3.96496 -8.75906,-7.55669 -1.91811,-4.33465 -1.85197,-9.29409 0.197244,-14.8772 2.04449,-5.5689 5.18031,-9.44291 9.4063,-11.6244 4.01929,-2.08701 8.30787,-2.29252 12.8657,-0.618898z"/>
|
|
182
|
+
<polygon id="path2004" class="fil3" points="1248.95,652.119 1253.92,649.413 1283.35,666.079 1269.64,640.867 1273.65,638.692 1290.56,669.814 1285.84,672.381 1256.2,655.863 1269.89,681.053 1265.86,683.242"/>
|
|
183
|
+
<polygon id="path2002" class="fil3" points="1222.46,672.728 1226.05,669.47 1249.86,695.7 1246.27,698.957"/>
|
|
184
|
+
<path id="path2000" class="fil3" d="M1174.2 721.372l4.22126 -5.42244 29.8831 10.3701 -17.4236 -26.3717 4.17756 -5.36575 27.9496 21.763 -2.80039 3.59528 -16.4953 -12.8433c-0.571654,-0.444094 -1.50709,-1.19291 -2.8063,-2.24646 -1.29921,-1.05236 -2.70236,-2.16496 -4.21181,-3.34134l17.3657 26.3268 -2.9185 3.74764 -29.8252 -10.3252 0.856299 0.667323c0.68622,0.532677 1.74213,1.33583 3.1689,2.40591 1.42559,1.04882 2.46732,1.82835 3.12756,2.34213l16.4953 12.8433 -2.81457 3.61654 -27.9496 -21.7618z"/>
|
|
185
|
+
<path id="path1999" class="fil3" d="M1151.4 757.874c2.53228,-5.7189 6.24449,-9.13819 11.1354,-10.2591 3.81614,-0.876378 7.95945,-0.325984 12.4276,1.65354 4.83543,2.14252 8.31142,5.14961 10.4291,9.02362 2.4874,4.54606 2.54882,9.4878 0.185433,14.824 -2.2063,4.98189 -5.5878,8.17087 -10.1421,9.56457 -4.30157,1.13504 -8.87717,0.629528 -13.728,-1.51772 -4.37953,-1.94055 -7.64646,-4.6878 -9.79843,-8.24291 -2.76142,-4.56378 -2.9315,-9.57874 -0.509055,-15.0461m30.4878 12.9744c1.7126,-3.86575 1.56732,-7.27087 -0.433465,-10.2142 -2.01024,-2.96457 -4.81654,-5.24409 -8.41654,-6.83858 -3.80787,-1.68661 -7.31457,-2.04331 -10.5224,-1.07362 -3.20079,0.956693 -5.56654,3.16063 -7.09606,6.61417 -1.48465,3.35197 -1.54252,6.59646 -0.17126,9.73583 1.35472,3.1311 4.27441,5.69055 8.75787,7.67598 3.58701,1.58858 7.01457,2.02441 10.2839,1.31102 3.2622,-0.735827 5.79567,-3.13937 7.59803,-7.21063z"/>
|
|
186
|
+
<polygon id="path1996" class="fil3" points="1130.93,822.231 1132.22,816.789 1151.13,810.817 1136.91,796.988 1138.21,791.52 1155.7,809.422 1169.59,812.718 1168.48,817.387 1154.59,814.091"/>
|
|
187
|
+
<polygon id="path1994" class="fil3" points="1120.85,881.05 1149.96,875.77 1121.56,866.383 1121.81,861.181 1150.98,854.576 1122.52,846.514 1122.78,841.263 1157.71,852.27 1157.46,857.303 1127.73,864.05 1156.67,873.681 1156.43,878.715 1120.6,886.253"/>
|
|
188
|
+
<polygon id="path1993" class="fil3" points="1134.11,975.872 1127.12,952.315 1131.29,951.081 1136.91,970.038 1147.22,966.98 1142.28,950.313 1146.32,949.113 1151.26,965.78 1166.71,961.201 1168.07,965.802"/>
|
|
189
|
+
<path id="path1992" class="fil3" d="M1149.96 1016.94c-3.80433,-4.96299 -5.02677,-9.85866 -3.66614,-14.6906 1.05945,-3.77008 3.52913,-7.14094 7.40669,-10.1138 4.19764,-3.21732 8.50394,-4.82717 12.9177,-4.82835 5.18268,-0.00354331 9.54921,2.31024 13.0996,6.94134 3.31654,4.32402 4.49291,8.82047 3.53268,13.4858 -1.06299,4.32047 -3.69921,8.09291 -7.90984,11.3209 -3.80197,2.91496 -7.77874,4.46457 -11.9315,4.65 -5.32795,0.23622 -9.81142,-2.0185 -13.4492,-6.76535m25.9996 -20.5394c-2.57244,-3.35551 -5.62913,-4.86024 -9.17244,-4.51417 -3.56457,0.343701 -6.91063,1.71378 -10.0358,4.10906 -3.30472,2.53346 -5.29961,5.44016 -5.98583,8.72008 -0.694488,3.26693 0.106299,6.40039 2.40472,9.39921 2.2311,2.90787 5.05039,4.51417 8.4626,4.81535 3.39803,0.31063 7.04291,-1.0252 10.9346,-4.00866 3.1122,-2.38465 5.13898,-5.18504 6.08031,-8.39646 0.916535,-3.21614 0.0212598,-6.59055 -2.68819,-10.1244z"/>
|
|
190
|
+
<polygon id="path1989" class="fil3" points="1206.98,1094.86 1190.03,1075.38 1193.3,1072.53 1207.18,1088.48 1215.3,1081.42 1202.46,1066.67 1205.55,1063.98 1218.39,1078.73 1227.45,1070.85 1213.33,1054.62 1216.52,1051.85 1233.7,1071.61"/>
|
|
191
|
+
<polygon id="path1987" class="fil3" points="1222,1109.91 1224.37,1106.42 1234.24,1113.13 1251.79,1087.33 1255.81,1090.07 1238.27,1115.87 1248.14,1122.58 1245.76,1126.07"/>
|
|
192
|
+
<path id="path1986" class="fil3" d="M1273.5 1119.64l-2.7874 16.3122 12.5197 -10.9902 -9.73228 -5.32205m-3.10866 22.1268l-4.76102 -2.60315 5.71299 -37.2461 4.61339 2.52283 -1.93701 11.0327 12.2917 6.71929 8.45433 -7.46929 4.31575 2.35866 -28.6902 24.685z"/>
|
|
193
|
+
<polygon id="path1983" class="fil3" points="1297.74,1156.16 1299.1,1152.17 1310.4,1156.01 1320.45,1126.47 1325.06,1128.04 1315.01,1157.58 1326.31,1161.42 1324.96,1165.42"/>
|
|
194
|
+
<path id="path1982" class="fil3" d="M1362 1149.34c0.206693,-2.00315 -0.00354331,-3.6874 -0.630709,-5.05866 -1.20118,-2.56772 -3.78661,-4.17047 -7.75512,-4.80472 -1.77756,-0.283465 -3.43819,-0.28937 -4.97835,-0.0153543 -2.98346,0.532677 -4.67717,2.06929 -5.08465,4.60866 -0.303543,1.90512 0.0744094,3.35787 1.13504,4.35709 1.07953,0.987402 2.85827,1.97953 5.33622,2.97874l4.56732 1.82835c2.98346,1.19291 5.05157,2.31378 6.20197,3.36024 1.98898,1.81654 2.75079,4.1752 2.28661,7.08071 -0.501969,3.14291 -2.00197,5.54882 -4.49882,7.21654 -2.49803,1.66772 -5.73898,2.18386 -9.72283,1.54724 -3.66732,-0.587008 -6.63543,-1.97244 -8.90669,-4.15984 -2.29016,-2.17205 -3.1252,-5.20394 -2.50157,-9.09331l4.45157 0.712205c-0.0602362,1.9122 0.217323,3.42874 0.835039,4.55315 1.15276,2.05748 3.45945,3.3626 6.92008,3.91535 2.79331,0.447638 4.89449,0.180709 6.30472,-0.798425 1.41142,-0.980315 2.23937,-2.24646 2.48976,-3.80197 0.272835,-1.71496 -0.240945,-3.08386 -1.54252,-4.10551 -0.855118,-0.657874 -2.87362,-1.6311 -6.05197,-2.92087l-4.72677 -1.90394c-2.27835,-0.917717 -3.98622,-1.94764 -5.12244,-3.08976 -1.96063,-1.99016 -2.69291,-4.54134 -2.19567,-7.65236 0.620079,-3.87402 2.47559,-6.41693 5.56772,-7.63228 3.07677,-1.21772 6.47835,-1.52835 10.2094,-0.93189 4.34882,0.695669 7.57677,2.35157 9.6815,4.96772 2.10827,2.59961 2.83583,5.78386 2.18386,9.55394l-4.45276 -0.711024z"/>
|
|
195
|
+
<polygon id="path1980" class="fil3" points="1463.33,1171.03 1437.91,1175.58 1437.14,1171.31 1457.96,1167.58 1456.06,1156.99 1436.81,1160.44 1436.09,1156.41 1455.34,1152.96 1453.22,1141.14 1432.05,1144.93 1431.3,1140.78 1457.08,1136.16"/>
|
|
196
|
+
<polygon id="path1978" class="fil3" points="1520.1,1153.92 1515.5,1155.44 1510.91,1141.54 1493.42,1147.32 1498.01,1161.22 1493.41,1162.74 1482.29,1129.11 1486.89,1127.59 1492.09,1143.32 1509.58,1137.54 1504.38,1121.81 1508.98,1120.29"/>
|
|
197
|
+
<polygon id="path1977" class="fil3" points="1545.09,1141.13 1542.84,1137.56 1552.95,1131.21 1536.34,1104.79 1540.46,1102.2 1557.07,1128.62 1567.18,1122.26 1569.42,1125.84"/>
|
|
198
|
+
<polygon id="path1976" class="fil3" points="1629.88,1071.08 1613.59,1089.47 1610.34,1086.6 1623.45,1071.79 1615.4,1064.67 1603.88,1077.68 1600.72,1074.88 1612.24,1061.87 1600.19,1051.19 1603.37,1047.6"/>
|
|
199
|
+
<path id="path1975" class="fil3" d="M1653.18 1043.66c-4.14685,4.68071 -8.72008,6.81378 -13.722,6.40039 -3.90236,-0.322441 -7.68307,-2.10236 -11.3421,-5.34331 -3.95906,-3.50669 -6.35906,-7.42677 -7.20236,-11.7591 -0.992126,-5.08701 0.446457,-9.81378 4.31457,-14.1827 3.61417,-4.07953 7.80118,-6.09331 12.5646,-6.04016 4.44331,0.219685 8.65157,2.08819 12.6224,5.60551 3.58583,3.17598 5.86654,6.78543 6.83858,10.8248 1.24843,5.18622 -0.109843,10.0169 -4.07362,14.4945m-25.1232 -21.6059c-2.80276,3.16417 -3.69567,6.45236 -2.6811,9.86457 1.01693,3.43465 3,6.45709 5.94803,9.0685 3.11693,2.76142 6.35079,4.16457 9.70157,4.21181 3.34016,0.0590551 6.26339,-1.3252 8.7685,-4.15276 2.42953,-2.7437 3.46654,-5.81929 3.1122,-9.22559 -0.34252,-3.39567 -2.34803,-6.71929 -6.0189,-9.9685 -2.93622,-2.60079 -6.07205,-4.05709 -9.40394,-4.36772 -3.33189,-0.287008 -6.47362,1.23661 -9.42638,4.56969z"/>
|
|
200
|
+
<polygon id="path1972" class="fil3" points="1687.31,949.566 1686.03,954.191 1655.96,945.855 1651.17,963.143 1647.1,962.016 1653.17,940.104"/>
|
|
201
|
+
<path id="path1971" class="fil3" d="M1671.5 917.131l16.1846 -3.44291 -14.8417 -7.56732 -1.34291 11.0102m21.7063 -5.29606l-0.656693 5.38465 -36.7169 8.47087 0.636614 -5.21811 10.9654 -2.28189 1.69606 -13.9063 -10.0665 -5.09055 0.595276 -4.88386 33.5469 17.5252z"/>
|
|
202
|
+
<polygon id="path1968" class="fil3" points="1689.92,853.339 1691.84,879.092 1687.51,879.416 1685.94,858.328 1675.22,859.129 1676.67,878.63 1672.58,878.936 1671.13,859.434 1659.15,860.328 1660.75,881.778 1656.55,882.092 1654.6,855.978"/>
|
|
203
|
+
<path id="path1966" class="fil3" d="M1656.23 810.501c-1.84961,0.788976 -3.22323,1.79055 -4.11732,3.00236 -1.66654,2.29488 -1.81535,5.33268 -0.447638,9.1122 0.611811,1.69252 1.41142,3.14646 2.39764,4.36299 1.91102,2.35157 4.0748,3.08976 6.49488,2.21457 1.81299,-0.655512 2.90079,-1.69134 3.2622,-3.10394 0.340157,-1.42205 0.347244,-3.45827 0.0200787,-6.10984l-0.611811 -4.8815c-0.401575,-3.18898 -0.422835,-5.53937 -0.0649606,-7.05354 0.624803,-2.61969 2.32087,-4.42913 5.08701,-5.43071 2.99409,-1.08189 5.82402,-0.935433 8.49331,0.441732 2.66929,1.3748 4.68898,3.96142 6.0626,7.75512 1.2626,3.49252 1.48819,6.76181 0.675591,9.80669 -0.79252,3.05669 -3.04016,5.25472 -6.74291,6.59528l-1.53425 -4.24134c1.70197,-0.871654 2.89488,-1.85079 3.57992,-2.93504 1.24016,-2.00551 1.26378,-4.65472 0.0720472,-7.95118 -0.962598,-2.65984 -2.21339,-4.37008 -3.75236,-5.12953 -1.54016,-0.759449 -3.05079,-0.870472 -4.53189,-0.334252 -1.63346,0.58937 -2.58071,1.70197 -2.84528,3.33543 -0.16063,1.06772 -0.0354331,3.30472 0.376772,6.7122l0.624803 5.05512c0.3,2.43898 0.225591,4.4315 -0.223228,5.97874 -0.791339,2.67992 -2.66811,4.55551 -5.6315,5.62677 -3.68858,1.33465 -6.81378,0.94252 -9.37323,-1.17283 -2.55591,-2.10236 -4.4752,-4.92874 -5.76024,-8.4815 -1.49882,-4.14213 -1.61339,-7.76693 -0.344882,-10.8756 1.25315,-3.10394 3.6874,-5.28307 7.30157,-6.53858l1.53307 4.24016z"/>
|
|
204
|
+
<polygon id="path1964" class="fil3" points="1653.99,748.341 1650.38,750.526 1644.2,740.314 1617.51,756.47 1614.99,752.302 1641.68,736.147 1635.5,725.935 1639.11,723.75"/>
|
|
205
|
+
<path id="path1963" class="fil3" d="M1604.23 717.069l8.74961 -14.0445 -15.7465 5.43898 6.99685 8.60551m11.2465 -19.3075l3.42165 4.20945 -19.3736 32.3197 -3.31654 -4.07835 5.96457 -9.48189 -8.83819 -10.8697 -10.65 3.71929 -3.10394 -3.81614 35.8961 -12.0024z"/>
|
|
206
|
+
<polygon id="path1960" class="fil3" points="1566.92,654.469 1587.43,670.172 1584.79,673.617 1568,660.759 1561.46,669.296 1576.99,681.188 1574.49,684.442 1558.97,672.552 1551.67,682.084 1568.74,695.163 1566.18,698.513 1545.39,682.591"/>
|
|
207
|
+
<path id="path1956" class="fil3" d="M1315.39 618.45c3.22795,-0.810236 6.17598,-0.885827 8.84291,-0.231496 3.86457,0.936614 6.74291,3.55394 8.63386,7.85197l-4.60866 1.15748c-1.19055,-2.36929 -2.80984,-3.90236 -4.85787,-4.59803 -2.05157,-0.711024 -4.41732,-0.729921 -7.09961,-0.057874 -3.18071,0.798425 -5.56299,2.66457 -7.14803,5.59724 -1.56732,2.93031 -1.75866,6.75709 -0.572835,11.4803 1.0252,4.08543 2.75669,7.18937 5.19567,9.31181 2.43543,2.10827 5.67874,2.65157 9.73228,1.63465 3.10394,-0.778346 5.4437,-2.3185 7.01929,-4.62047 1.58858,-2.32205 1.90157,-5.49921 0.938976,-9.53268l-10.7575 2.69882 -0.968504 -3.85866 15.085 -3.78661 4.61339 18.3827 -2.99291 0.752362 -2.23346 -4.13858c-1.13976,2.12598 -2.23465,3.67559 -3.28228,4.65236 -1.75276,1.66535 -4.20354,2.89488 -7.35236,3.68504 -4.07008,1.02165 -7.90157,0.582283 -11.4945,-1.31693 -4.0252,-2.50276 -6.76181,-6.63898 -8.20984,-12.4087 -1.44449,-5.75315 -1.03346,-10.7209 1.23071,-14.902 2.14961,-3.9874 5.57835,-6.57047 10.2862,-7.75276z"/>
|
|
208
|
+
<path id="path2005" class="fil3" d="M1526.76 650.304c1.9937,1.04409 3.77598,1.46929 5.34685,1.27559 1.58504,-0.187795 2.92205,-1.32047 4.01102,-3.40039 1.16929,-2.23583 1.15512,-4.18465 -0.0448819,-5.84646 -0.644882,-0.881102 -1.6937,-1.70197 -3.14764,-2.4626l-10.3831 -5.43307 -5.61024 10.7256 9.82795 5.14134m-6.55866 -21.7441l14.5299 7.60039c2.39173,1.25197 4.18228,2.63386 5.36929,4.14331 2.24882,2.88189 2.43071,6.12402 0.544488,9.72756 -0.982677,1.88031 -2.18031,3.21378 -3.58937,4.00039 -1.39488,0.793701 -2.97992,1.18937 -4.7563,1.18465 0.96378,1.13976 1.54016,2.27598 1.72795,3.40866 0.200787,1.13976 -0.13937,2.63976 -1.02047,4.5l-2.05276 4.2874c-0.583465,1.2189 -0.950787,2.16142 -1.09843,2.82638 -0.265748,1.1315 -0.145276,2.01142 0.361417,2.63858l-0.368504 0.705118 -5.21339 -2.72717c-0.0011811,-0.344882 0.0673228,-0.753543 0.205512,-1.2248 0.138189,-0.473622 0.498425,-1.33583 1.08189,-2.59134l2.48386 -5.36811c0.973228,-2.10354 0.929528,-3.87756 -0.129921,-5.31969 -0.61063,-0.809055 -1.78465,-1.6689 -3.52205,-2.57835l-9.67913 -5.06339 -7.04173 13.461 -4.25079 -2.2252 16.4185 -31.3854z"/>
|
|
209
|
+
</g>
|
|
210
|
+
</svg>
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Studio
|
|
4
|
+
# Where the visitor appears to be, resolved once per session and available to
|
|
5
|
+
# every controller and view that includes this concern.
|
|
6
|
+
#
|
|
7
|
+
# include Studio::GeoDetection
|
|
8
|
+
#
|
|
9
|
+
# That one line gives an app: IP -> region detection with a session cache and a
|
|
10
|
+
# self-healing retry window, the `geo_state` / `geo_country` / `geo_blocked?`
|
|
11
|
+
# helpers the shared badge renders from, an admin simulation override, and
|
|
12
|
+
# `require_geo_allowed` — a before_action an app can hang on whichever surfaces
|
|
13
|
+
# it wants LOCKED.
|
|
14
|
+
#
|
|
15
|
+
# LOCKING IS DELIBERATELY LOOSE. The engine ships the gate and the policy; each
|
|
16
|
+
# app decides what it protects, because "which actions are geo-restricted" is a
|
|
17
|
+
# product and legal question, not a framework one:
|
|
18
|
+
#
|
|
19
|
+
# before_action :require_geo_allowed, only: %i[create withdraw]
|
|
20
|
+
#
|
|
21
|
+
# Detection itself is registered here as a before_action, because a badge that
|
|
22
|
+
# renders on every page needs a location on every page. A controller that must
|
|
23
|
+
# not pay for it (webhooks, health checks) skips it the ordinary way:
|
|
24
|
+
#
|
|
25
|
+
# skip_before_action :detect_geo_state
|
|
26
|
+
#
|
|
27
|
+
# SESSION KEYS are the plain names an app already has in production
|
|
28
|
+
# (:geo_state, :geo_country, :geo_ip, :geo_detected_at, :geo_override) so an
|
|
29
|
+
# app adopting this concern keeps every live visitor's resolved location
|
|
30
|
+
# instead of re-geocoding the whole internet on deploy day.
|
|
31
|
+
module GeoDetection
|
|
32
|
+
extend ActiveSupport::Concern
|
|
33
|
+
|
|
34
|
+
included do
|
|
35
|
+
before_action :detect_geo_state
|
|
36
|
+
|
|
37
|
+
if respond_to?(:helper_method)
|
|
38
|
+
helper_method :geo_state, :geo_subdivision, :geo_country, :geo_region_token,
|
|
39
|
+
:geo_blocked?, :geo_override_active?
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Resolve the visitor's region, at most once per freshness window.
|
|
44
|
+
#
|
|
45
|
+
# Failure is SWALLOWED by design: a geocoding provider being down must not
|
|
46
|
+
# 500 the page. It is logged, and the attempt is stamped so a provider that
|
|
47
|
+
# is timing out on every request is retried on the retry window rather than
|
|
48
|
+
# on every single request.
|
|
49
|
+
def detect_geo_state
|
|
50
|
+
return if session[:geo_override].present?
|
|
51
|
+
|
|
52
|
+
ip_changed = session[:geo_ip] != request.remote_ip
|
|
53
|
+
# `now: Time.current`, NOT the module's Rails-free Time.now default. The
|
|
54
|
+
# stamp written below is `Time.current.to_s` — "2026-08-19 05:00:00 UTC" —
|
|
55
|
+
# and the comparison is textual, so a local-zone Time.now would produce
|
|
56
|
+
# "2026-08-18 23:00:00 -0600" and compare as a DIFFERENT DAY. Measured in
|
|
57
|
+
# turf-monster's suite: the self-heal retry never fired.
|
|
58
|
+
stale = Studio::Geo.stale?(
|
|
59
|
+
detected_at: session[:geo_detected_at],
|
|
60
|
+
resolved: session[:geo_state].present?,
|
|
61
|
+
now: Time.current,
|
|
62
|
+
ttl: Studio.geo_ttl,
|
|
63
|
+
retry_ttl: Studio.geo_retry_ttl
|
|
64
|
+
)
|
|
65
|
+
return unless ip_changed || stale
|
|
66
|
+
|
|
67
|
+
result = geo_lookup(request.remote_ip)
|
|
68
|
+
|
|
69
|
+
# state_code / region_code / region, in that order: providers disagree about
|
|
70
|
+
# which field carries a subdivision, and outside the US the only answer is
|
|
71
|
+
# often the region NAME ("Alberta"). Taking the first present one keeps a
|
|
72
|
+
# foreign visitor placed rather than blank.
|
|
73
|
+
raw = result&.try(:state_code).presence || result&.try(:region_code).presence || result&.try(:region)
|
|
74
|
+
session[:geo_state] = Studio::Geo.normalize_subdivision(raw)
|
|
75
|
+
session[:geo_country] = Studio::Geo.normalize_country(result&.try(:country_code))
|
|
76
|
+
|
|
77
|
+
apply_development_region if session[:geo_state].blank?
|
|
78
|
+
|
|
79
|
+
session[:geo_ip] = request.remote_ip
|
|
80
|
+
session[:geo_detected_at] = Time.current.to_s
|
|
81
|
+
rescue StandardError => e
|
|
82
|
+
Rails.logger.warn "Geo detection failed: #{e.message}"
|
|
83
|
+
session[:geo_detected_at] = Time.current.to_s
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Force a fresh lookup on the next detect — what the /geo/check endpoint uses
|
|
87
|
+
# so an operator can re-test their own location without waiting out the TTL.
|
|
88
|
+
def reset_geo_detection!
|
|
89
|
+
session.delete(:geo_detected_at)
|
|
90
|
+
session.delete(:geo_ip)
|
|
91
|
+
session.delete(:geo_state)
|
|
92
|
+
session.delete(:geo_country)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# The visitor's subdivision code — "WA", or a region name where that is all
|
|
96
|
+
# the provider knows. `geo_state` is the name every existing app calls this;
|
|
97
|
+
# `geo_subdivision` is the same value under the vocabulary the engine uses
|
|
98
|
+
# everywhere else.
|
|
99
|
+
def geo_state
|
|
100
|
+
if session[:geo_override].present?
|
|
101
|
+
_country, subdivision = Studio::Geo.parse_region(session[:geo_override], home_country: Studio.geo_home_country)
|
|
102
|
+
return subdivision
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
Studio::Geo.normalize_subdivision(session[:geo_state])
|
|
106
|
+
end
|
|
107
|
+
alias_method :geo_subdivision, :geo_state
|
|
108
|
+
|
|
109
|
+
# ISO country code from the same lookup.
|
|
110
|
+
#
|
|
111
|
+
# Defaults to the app's HOME country when undetected, and that default is
|
|
112
|
+
# load-bearing rather than cosmetic: it is what makes an unplaceable visitor
|
|
113
|
+
# fall into the fail-closed branch of the policy instead of sliding through as
|
|
114
|
+
# "somewhere else, therefore fine".
|
|
115
|
+
def geo_country
|
|
116
|
+
if session[:geo_override].present?
|
|
117
|
+
country, _subdivision = Studio::Geo.parse_region(session[:geo_override], home_country: Studio.geo_home_country)
|
|
118
|
+
return country || Studio.geo_home_country
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
Studio::Geo.normalize_country(session[:geo_country]) || Studio.geo_home_country
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# "US-WA" — the two halves as one token, for logging and for the admin page.
|
|
125
|
+
def geo_region_token
|
|
126
|
+
Studio::Geo.region_token(geo_country, geo_state)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# The gate's verdict for this visitor. Delegates the whole policy to
|
|
130
|
+
# Studio::GeoSetting, so an app never re-derives the fail-closed rule — the
|
|
131
|
+
# subtle part — from its own controller.
|
|
132
|
+
def geo_blocked?
|
|
133
|
+
Studio::GeoSetting.blocked?(country: geo_country, subdivision: geo_state)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def geo_override_active?
|
|
137
|
+
session[:geo_override].present?
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# THE LOCK. Hang it on whatever an app must not serve from a blocked region:
|
|
141
|
+
#
|
|
142
|
+
# before_action :require_geo_allowed, only: %i[create withdraw]
|
|
143
|
+
#
|
|
144
|
+
# HTML redirects with an explanation, JSON answers 403 with the same words —
|
|
145
|
+
# the copy comes from Studio.geo_blocked_message so each app speaks in its own
|
|
146
|
+
# voice about its own rules.
|
|
147
|
+
def require_geo_allowed
|
|
148
|
+
return unless geo_blocked?
|
|
149
|
+
|
|
150
|
+
message = Studio.geo_blocked_message.call(geo_state, geo_country)
|
|
151
|
+
respond_to do |format|
|
|
152
|
+
format.html { redirect_to geo_blocked_redirect_path, alert: message }
|
|
153
|
+
format.json { render json: { error: message }, status: :forbidden }
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
private
|
|
158
|
+
|
|
159
|
+
def geo_lookup(ip)
|
|
160
|
+
return nil unless defined?(::Geocoder)
|
|
161
|
+
|
|
162
|
+
::Geocoder.search(ip).first
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Loopback IPs never geocode, so a development session has no region at all
|
|
166
|
+
# and every geo-gated feature fails closed on the developer's own machine.
|
|
167
|
+
# An app sets Studio.geo_development_region ("US-CO") to stand somewhere real
|
|
168
|
+
# while it works. Development only — a test or production environment that
|
|
169
|
+
# cannot place a visitor must SAY so, because that is the case the fail-closed
|
|
170
|
+
# rule exists for.
|
|
171
|
+
def apply_development_region
|
|
172
|
+
return unless Rails.env.development?
|
|
173
|
+
return unless request.local?
|
|
174
|
+
|
|
175
|
+
region = Studio.geo_development_region.presence
|
|
176
|
+
return if region.nil?
|
|
177
|
+
|
|
178
|
+
country, subdivision = Studio::Geo.parse_region(region, home_country: Studio.geo_home_country)
|
|
179
|
+
session[:geo_state] = subdivision
|
|
180
|
+
session[:geo_country] = country
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def geo_blocked_redirect_path
|
|
184
|
+
target = Studio.geo_blocked_redirect
|
|
185
|
+
target = instance_exec(&target) if target.respond_to?(:call)
|
|
186
|
+
target.presence || main_app_root_path
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# `main_app` is not defined in a non-isolated engine's controllers, and an app
|
|
190
|
+
# can rename its root helper. Resolve defensively so a blocked visitor lands
|
|
191
|
+
# somewhere real rather than on a NoMethodError.
|
|
192
|
+
def main_app_root_path
|
|
193
|
+
return root_path if respond_to?(:root_path)
|
|
194
|
+
|
|
195
|
+
"/"
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|