diff --git a/asciidoc/images/ivy-lierre.svg b/asciidoc/images/ivy-lierre.svg new file mode 100644 index 000000000..24c88a35f --- /dev/null +++ b/asciidoc/images/ivy-lierre.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + diff --git a/asciidoc/images/logo.png b/asciidoc/images/logo.png deleted file mode 100644 index 5c01f3d94..000000000 Binary files a/asciidoc/images/logo.png and /dev/null differ diff --git a/doc/images/ivy-lierre.svg b/doc/images/ivy-lierre.svg new file mode 100644 index 000000000..24c88a35f --- /dev/null +++ b/doc/images/ivy-lierre.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + diff --git a/src/java/org/apache/ivy/logo.png b/src/java/org/apache/ivy/logo.png deleted file mode 100644 index 4baf17047..000000000 Binary files a/src/java/org/apache/ivy/logo.png and /dev/null differ diff --git a/src/java/org/apache/ivy/plugins/report/ivy-report.css b/src/java/org/apache/ivy/plugins/report/ivy-report.css index fbf279082..02ba2f3aa 100644 --- a/src/java/org/apache/ivy/plugins/report/ivy-report.css +++ b/src/java/org/apache/ivy/plugins/report/ivy-report.css @@ -27,10 +27,7 @@ div#logo { padding-bottom: 10px; background: white; text-align: center; -} - -#logo img { - border: 0; + width: 142px; } div#date { @@ -39,10 +36,8 @@ div#date { padding-bottom: 40px; } - h1 { margin-bottom: 2px; - border-color: #7A9437; border-style: solid; border-width: 0 0 3px 0; @@ -82,11 +77,6 @@ span#organisation { text-decoration: none; } -/* -background: #ABAD85 #CED4BD -background: #DEE4CD - */ - #confmenu a.active { color: #7A9437; background: #DEE4CD; @@ -125,7 +115,7 @@ background: #DEE4CD } #content a:hover { - background: #898B5E; + background: #898B5E; } h2 { @@ -167,16 +157,18 @@ span.resolved { font-size: small; } -#content table { +#content table { border-collapse: collapse; width: 90%; margin: auto; margin-top: 5px; } + #content thead { background-color: #CED4BD; border: 1px solid #7A9437; } + #content tbody { border-collapse: collapse; background-color: #FFFFFF; @@ -268,3 +260,10 @@ td.title:first-letter { color: #7A9437; background-color: transparent; } + +/* Firefox seems to need this */ + +svg.icon { + heigth: 1rem; + width: 1rem; +} diff --git a/src/java/org/apache/ivy/plugins/report/ivy-report.xsl b/src/java/org/apache/ivy/plugins/report/ivy-report.xsl index 15e8562e3..c3806f833 100644 --- a/src/java/org/apache/ivy/plugins/report/ivy-report.xsl +++ b/src/java/org/apache/ivy/plugins/report/ivy-report.xsl @@ -160,24 +160,16 @@ - searched + searchedrequired a search in repository - downloaded + downloadeddownloaded from repository - - https://ant.apache.org/ivy/images/evicted.gif - evicted - evicted by - + evicted by evicted by other revisions - - https://ant.apache.org/ivy/images/error.gif - error - error: - + error: caused an error during resolution @@ -259,7 +251,8 @@ - +

- @@ -289,10 +282,10 @@ + ( searched searchedmodule revisions which required a search with a dependency resolver to be resolved, + downloaded downloadedmodule revisions for which ivy file was downloaded by dependency resolver, + evicted evictedmodule revisions which were evicted by others, + errors errormodule revisions on which error occurred) @@ -300,7 +293,6 @@ ( kB downloaded, kB in cache)
Modules
Revisions - ( searched searched, - downloaded downloaded, - evicted evicted, - errors error)
Artifacts ( downloaded, failed)
-

Errors

diff --git a/src/java/org/apache/ivy/util/CredentialsUtil.java b/src/java/org/apache/ivy/util/CredentialsUtil.java index 410ed5683..e93aa4521 100644 --- a/src/java/org/apache/ivy/util/CredentialsUtil.java +++ b/src/java/org/apache/ivy/util/CredentialsUtil.java @@ -17,6 +17,12 @@ */ package org.apache.ivy.util; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -26,16 +32,6 @@ import java.io.IOException; import java.util.Properties; -import javax.swing.ImageIcon; -import javax.swing.JCheckBox; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPasswordField; -import javax.swing.JTextField; - -import org.apache.ivy.Ivy; - public final class CredentialsUtil { @SuppressWarnings("serial") @@ -103,7 +99,7 @@ public static Credentials promptCredentials(Credentials c, File passfile) { } CredentialPanel credentialPanel = new CredentialPanel(c, passfile); if (JOptionPane.showOptionDialog(null, credentialPanel, c.getHost() + " credentials", - JOptionPane.OK_CANCEL_OPTION, 0, new ImageIcon(Ivy.class.getResource("logo.png")), + JOptionPane.OK_CANCEL_OPTION, 0, new IvyLogo(), null, JOptionPane.OK_OPTION) == JOptionPane.OK_OPTION) { String username = credentialPanel.userNameField.getText(); String passwd = credentialPanel.passwordField.getText(); diff --git a/src/java/org/apache/ivy/util/IvyLogo.java b/src/java/org/apache/ivy/util/IvyLogo.java new file mode 100644 index 000000000..d2bcec477 --- /dev/null +++ b/src/java/org/apache/ivy/util/IvyLogo.java @@ -0,0 +1,363 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.ivy.util; + +import javax.swing.Icon; +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.awt.geom.GeneralPath; +import java.awt.image.BufferedImage; +import java.util.LinkedList; + +import static java.awt.Color.WHITE; +import static java.lang.Math.min; + +/** + * This class has been automatically generated using + * Flamingo SVG transcoder. + */ +public class IvyLogo implements Icon { + + /** Maximum dimension of an icon in JInfoPane */ + private static final int MAX_INFO_ICON_SIZE = 128; + + /** The colour of this icon. */ + private static final Color COLOUR = new Color(0x6E9244); + + /** The width of this icon. */ + private int width; + + /** The height of this icon. */ + private int height; + + /** The rendered image. */ + private BufferedImage image; + + /** + * Creates a new Ivy logo transcoded from SVG image. + */ + public IvyLogo() { + this(MAX_INFO_ICON_SIZE, MAX_INFO_ICON_SIZE); + } + + /** + * Creates a new Ivy logo transcoded from SVG image. + * + * @param width image dimension + * @param height image dimension + */ + public IvyLogo(int width, int height) { + this.width = width; + this.height = height; + } + + @Override + public int getIconHeight() { + return height; + } + + @Override + public int getIconWidth() { + return width; + } + + @Override + public void paintIcon(Component c, Graphics g, int x, int y) { + if (image == null) { + image = new BufferedImage(getIconWidth(), getIconHeight(), BufferedImage.TYPE_INT_ARGB); + double coef = min((double) width, (double) height); + + Graphics2D g2d = image.createGraphics(); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.scale(coef, coef); + paint(g2d); + g2d.dispose(); + } + + g.drawImage(image, x, y, null); + } + + /** + * Paints the Ivy logo transcoded from SVG image on the specified graphics context. + * + * @param g Graphics context. + */ + private static void paint(Graphics2D g) { + LinkedList transformations = new LinkedList<>(); + + transformations.offer(g.getTransform()); + g.transform(new AffineTransform(0.002013243f, 0, 0, 0.002013243f, 0, 0.1471439f)); + + GeneralPath shape = new GeneralPath(); + shape.moveTo(35.696, 151.511); + shape.lineTo(62.092, 151.511); + shape.curveTo(57.965, 148.382, 52.366997, 144.04001, 52.321, 140.41); + shape.curveTo(52.299, 139.578, 52.273, 138.417, 52.203, 137.017); + shape.curveTo(49.002, 138.843, 36.882, 141.357, 29.575998, 134.83499); + shape.curveTo(22.129997, 128.16899, 20.846998, 119.81799, 23.196999, 115.88399); + shape.curveTo(25.544998, 111.969986, 32.066998, 111.875984, 32.066998, 111.875984); + shape.lineTo(32.377, 108.74499); + shape.curveTo(32.377, 108.74499, 22.484999, 103.57199, 16.532999, 91.16899); + shape.curveTo(10.58, 78.766, 6.453, 63.87, 6.453, 63.87); + shape.curveTo(6.453, 63.87, 13.353001, 59.507, 23.126999, 61.048); + shape.curveTo(32.898, 62.568, 37.476997, 66.552, 39.822998, 65.745); + shape.curveTo(42.955, 54.288, 70.421, 3.413, 75.046, -0.003); + shape.curveTo(89.633, 6.281, 89.941, 43.307, 90.107, 46.13); + shape.curveTo(90.273, 48.953003, 90.107, 69.825, 90.107, 72.648); + shape.curveTo(90.107, 75.471, 91.98, 76.798004, 95.919, 77.203); + shape.curveTo(99.833, 77.605, 126.703995, 60.888, 133.465, 58.681004); + shape.curveTo(133.465, 82.448006, 118.66499, 103.937004, 111.146996, 112.189); + shape.curveTo(106.521996, 120.587006, 109.98499, 122.200005, 111.050995, 126.136); + shape.curveTo(112.117, 130.074, 112.16499, 138.683, 111.548996, 140.321); + shape.curveTo(107.422, 141.483, 90.297, 141.96, 84.01199, 139.8); + shape.curveTo(77.728, 137.642, 77.465996, 134.179, 75.57099, 132.779); + shape.curveTo(75.40499, 132.66301, 64.06699, 131.238, 56.715992, 134.10701); + shape.lineTo(56.57299, 140.488); + shape.curveTo(60.79499, 144.38, 63.94999, 145.94301, 67.24599, 151.49501); + shape.lineTo(154.74199, 151.49501); + shape.lineTo(185.887, 241.76501); + shape.lineTo(218.808, 151.49503); + shape.lineTo(317.356, 151.49503); + shape.lineTo(352.249, 244.82703); + shape.lineTo(383.227, 151.49503); + shape.lineTo(433.93597, 151.49503); + shape.curveTo(434.22098, 139.23003, 443.80298, 140.75102, 446.649, 140.68103); + shape.curveTo(446.033, 139.73303, 443.352, 137.78603, 444.253, 134.86903); + shape.curveTo(445.155, 131.97304, 452.06, 132.87903, 452.06, 132.87903); + shape.curveTo(452.06, 132.87903, 454.312, 127.51803, 455.378, 125.00403); + shape.curveTo(456.443, 122.48803, 460.524, 121.897026, 460.524, 121.897026); + shape.curveTo(460.524, 121.897026, 458.05698, 131.79103, 462.421, 131.79103); + shape.lineTo(483.07898, 131.79103); + shape.curveTo(483.07898, 131.79103, 475.51398, 139.07004, 472.309, 139.64403); + shape.curveTo(469.106, 140.23602, 462.98798, 143.43703, 464.88498, 144.60103); + shape.curveTo(466.78098, 145.76303, 471.87997, 149.20303, 470.99997, 151.50203); + shape.curveTo(470.12497, 153.80403, 457.74396, 149.19904, 457.74396, 151.50203); + shape.curveTo(457.74396, 153.80403, 450.22296, 157.35902, 450.60196, 154.06403); + shape.curveTo(450.98297, 150.76703, 451.45596, 144.41202, 449.95895, 143.17703); + shape.curveTo(448.44095, 141.94504, 444.24194, 142.27704, 440.85394, 142.70103); + shape.curveTo(437.45895, 143.12903, 437.65094, 151.50203, 437.65094, 151.50203); + shape.lineTo(444.24594, 151.50203); + shape.lineTo(442.15994, 156.48103); + shape.curveTo(459.73395, 157.16904, 462.31995, 174.76804, 463.05594, 173.08504); + shape.curveTo(463.88495, 171.16304, 466.80093, 164.92604, 467.39594, 164.21404); + shape.curveTo(469.60092, 161.53203, 475.33994, 161.86603, 476.71494, 162.88704); + shape.curveTo(479.06595, 164.61604, 477.11795, 168.31905, 481.76892, 171.04404); + shape.curveTo(489.52493, 174.38904, 495.21494, 173.39503, 496.70993, 175.66904); + shape.curveTo(495.37994, 179.18204, 489.31192, 187.00703, 485.72992, 188.52304); + shape.curveTo(483.09592, 189.63805, 482.83392, 193.81204, 483.30893, 194.78705); + shape.curveTo(488.33792, 205.36505, 487.03693, 212.55106, 485.58594, 222.20505); + shape.curveTo(473.32294, 212.78905, 464.71295, 202.09204, 460.77594, 203.51405); + shape.curveTo(456.83795, 204.93906, 442.20395, 206.03105, 442.20395, 206.03105); + shape.curveTo(442.20395, 206.03105, 446.02194, 219.29105, 444.29196, 225.69305); + shape.curveTo(443.19995, 229.72406, 448.13495, 228.82605, 448.13495, 228.82605); + shape.curveTo(448.13495, 228.82605, 452.42795, 223.75105, 455.20193, 222.27705); + shape.curveTo(457.97592, 220.83205, 461.32092, 219.88106, 465.80493, 220.99805); + shape.curveTo(470.36093, 222.56204, 471.14392, 230.06004, 475.48392, 232.57005); + shape.curveTo(478.6849, 234.44505, 492.75192, 249.69505, 492.75192, 249.69505); + shape.curveTo(492.75192, 249.69505, 485.94293, 253.09105, 480.18494, 253.34906); + shape.curveTo(474.41794, 253.60905, 466.14194, 253.29906, 463.53693, 254.03706); + shape.curveTo(459.80994, 255.08206, 455.87494, 283.26108, 449.47092, 289.30807); + shape.curveTo(441.6459, 280.05606, 440.24393, 267.5081, 437.4689, 255.93507); + shape.curveTo(436.5919, 252.30608, 433.88892, 251.38107, 432.5839, 251.38107); + shape.curveTo(431.27887, 251.38107, 427.9589, 253.39807, 421.90988, 255.55608); + shape.curveTo(415.8599, 257.74008, 407.25488, 254.65608, 407.25488, 254.65608); + shape.lineTo(423.7349, 233.40608); + shape.curveTo(423.7349, 233.40608, 422.17288, 224.32208, 423.3079, 221.33308); + shape.curveTo(428.7429, 216.14009, 436.1629, 220.10109, 436.1629, 220.10109); + shape.lineTo(442.8269, 226.26709); + shape.curveTo(443.0619, 218.82208, 440.4069, 210.02109, 435.1179, 205.37209); + shape.curveTo(431.6319, 202.31009, 426.55588, 201.31209, 423.4969, 201.00708); + shape.lineTo(377.29388, 310.82007); + shape.curveTo(356.13788, 361.10107, 301.13388, 351.40405, 266.33887, 346.13608); + shape.lineTo(262.18988, 310.91406); + shape.curveTo(275.40088, 312.59906, 313.8469, 319.78506, 320.67688, 293.72006); + shape.lineTo(267.14688, 183.90607); + shape.lineTo(210.86488, 293.72006); + shape.lineTo(159.08987, 293.72006); + shape.lineTo(97.61087, 171.64006); + shape.lineTo(97.61087, 207.41006); + shape.curveTo(98.58387, 207.47806, 99.33987, 207.83707, 99.98387, 208.40607); + shape.curveTo(101.54587, 209.83107, 108.616875, 214.90607, 110.01587, 216.94707); + shape.curveTo(113.76187, 222.35107, 119.16887, 221.66707, 118.33887, 226.46007); + shape.curveTo(116.22887, 229.51907, 113.00287, 227.55006, 111.60387, 226.93307); + shape.curveTo(110.18087, 226.31607, 105.48486, 217.92108, 103.91887, 216.66208); + shape.curveTo(102.63787, 215.64108, 99.88587, 212.58208, 97.633865, 212.34708); + shape.lineTo(97.633865, 231.10907); + shape.curveTo(107.16887, 240.73807, 120.07187, 253.42706, 121.635864, 254.68507); + shape.curveTo(124.15086, 256.72406, 127.58887, 258.76306, 130.10387, 259.38007); + shape.curveTo(132.61887, 259.99606, 135.91586, 260.16006, 136.83786, 261.10907); + shape.curveTo(140.13486, 264.40607, 138.97285, 267.08807, 135.41486, 267.39407); + shape.curveTo(133.54086, 267.56207, 123.01086, 265.59106, 121.303856, 263.38608); + shape.curveTo(119.57486, 261.1811, 108.59086, 248.86708, 108.59086, 248.86708); + shape.curveTo(108.59086, 248.86708, 101.52386, 240.87508, 99.03086, 239.45108); + shape.curveTo(98.579865, 239.19109, 98.08186, 238.76308, 97.60686, 238.22208); + shape.lineTo(97.60686, 293.70108); + shape.lineTo(49.293, 293.70108); + shape.curveTo(50.076, 295.31207, 51.878998, 299.3921, 50.385, 299.5351); + shape.curveTo(48.51, 299.70108, 47.398, 299.4391, 46.305, 297.2601); + shape.curveTo(45.973, 296.5961, 45.760002, 295.2401, 45.641, 293.7261); + shape.lineTo(35.796997, 293.7261); + shape.lineTo(35.796997, 236.2561); + shape.lineTo(35.774998, 236.2561); + shape.curveTo(35.373997, 236.37311, 34.992996, 236.4901, 34.635, 236.6101); + shape.curveTo(31.696, 236.70811, 28.822998, 236.30011, 27.258, 236.4441); + shape.curveTo(23.772999, 236.79811, 11.865, 249.10811, 9.92, 252.5961); + shape.curveTo(9.137, 254.0201, 6.149, 256.8391, 4.584, 257.2901); + shape.curveTo(3.0210001, 257.7661, -0.91799974, 254.7741, 0.1960001, 252.7351); + shape.curveTo(1.2870001, 250.6941, 6.149, 248.0401, 7.261, 247.70811); + shape.curveTo(8.354, 247.39711, 9.778, 243.31711, 11.507, 241.75612); + shape.curveTo(13.239, 240.19212, 22.654, 233.90312, 24.220001, 232.02812); + shape.curveTo(25.785002, 230.15512, 34.419003, 230.29912, 34.419003, 230.29912); + shape.lineTo(35.843002, 230.44212); + shape.lineTo(35.843002, 204.68213); + shape.curveTo(35.276, 204.04112, 34.869003, 203.59213, 34.751003, 203.40112); + shape.curveTo(33.495003, 201.43213, 31.999002, 204.58913, 32.476, 208.73912); + shape.curveTo(32.953003, 212.88712, 31.384003, 220.45612, 31.384003, 222.16312); + shape.curveTo(31.384003, 224.37012, 37.124, 227.57112, 33.735004, 229.58812); + shape.curveTo(33.047005, 229.99112, 30.341003, 229.37512, 28.162004, 225.29512); + shape.curveTo(25.955004, 221.21712, 28.162004, 205.98912, 28.162004, 205.98912); + shape.curveTo(28.162004, 205.98912, 28.588005, 197.26012, 32.218006, 196.95212); + shape.curveTo(33.904007, 196.80711, 35.088005, 196.80711, 35.869007, 196.88112); + shape.lineTo(35.869007, 151.43811); + shape.lineTo(35.696, 151.511); + shape.closePath(); + shape.moveTo(440.661, 160.026); + shape.lineTo(426.073, 194.653); + shape.curveTo(434.757, 197.786, 441.589, 204.946, 441.635, 204.924); + shape.curveTo(443.43802, 204.094, 444.21902, 203.621, 444.21902, 201.43799); + shape.curveTo(444.21902, 199.23299, 445.31104, 195.53398, 445.97504, 191.97499); + shape.curveTo(447.06903, 186.18799, 443.50803, 187.20499, 442.82303, 182.512); + shape.curveTo(441.82703, 175.633, 451.97504, 172.502, 455.88904, 175.01599); + shape.curveTo(456.91003, 175.657, 456.45804, 177.221, 457.57504, 177.86198); + shape.curveTo(458.66705, 178.47899, 460.44403, 178.19398, 460.80203, 177.62599); + shape.curveTo(462.62802, 174.54199, 460.89703, 174.258, 458.90604, 170.581); + shape.curveTo(455.34503, 159.34, 444.01004, 160.50099, 440.63803, 160.026); + shape.lineTo(440.661, 160.026); + shape.lineTo(440.661, 160.026); + shape.closePath(); + + g.setPaint(COLOUR); + g.fill(shape); + + shape = new GeneralPath(); + shape.moveTo(35.72, 196.954); + shape.curveTo(36.574, 197.024, 36.93, 197.12, 36.93, 197.12); + shape.curveTo(36.93, 197.12, 38.187, 197.288, 41.010002, 201.034); + shape.curveTo(43.833, 204.805, 45.090004, 208.176, 47.605003, 210.928); + shape.curveTo(50.121002, 213.68, 52.541004, 211.94899, 52.541004, 211.94899); + shape.curveTo(52.541004, 211.94899, 50.430004, 200.34999, 51.995003, 195.93799); + shape.curveTo(53.558002, 191.551, 55.099003, 190.60199, 56.667004, 189.344); + shape.curveTo(58.232002, 188.086, 60.557003, 186.07199, 58.354004, 184.032); + shape.curveTo(56.147003, 181.991, 54.487003, 172.644, 57.477005, 166.053); + shape.curveTo(60.463005, 159.459, 66.490005, 157.633, 66.490005, 157.633); + shape.curveTo(66.490005, 157.633, 68.62401, 156.897, 65.28001, 154.004); + shape.curveTo(64.49701, 153.316, 63.335007, 152.463, 62.051006, 151.465); + shape.lineTo(67.19701, 151.465); + shape.lineTo(69.90101, 154.668); + shape.curveTo(78.65301, 150.444, 87.78401, 154.286, 87.78401, 162.922); + shape.curveTo(89.041016, 163.868, 95.42201, 165.93399, 98.388016, 165.93399); + shape.lineTo(113.75501, 165.93399); + shape.curveTo(115.321014, 165.93399, 129.126, 157.963, 131.16501, 157.82098); + shape.curveTo(133.20401, 157.65498, 133.27501, 154.33798, 140.81702, 155.35599); + shape.curveTo(148.35902, 156.374, 148.26402, 155.094, 149.35602, 157.18199); + shape.curveTo(150.44702, 159.29, 147.55302, 161.405, 145.82202, 162.04199); + shape.curveTo(144.09302, 162.659, 134.43703, 161.68799, 132.87202, 161.68799); + shape.curveTo(131.31003, 161.68799, 119.68402, 167.452, 116.011024, 169.25299); + shape.curveTo(112.33302, 171.05699, 104.484024, 171.69398, 101.65803, 170.2); + shape.curveTo(98.83703, 168.706, 93.16703, 167.594, 93.16703, 167.594); + shape.lineTo(88.25903, 166.194); + shape.curveTo(88.25903, 166.194, 88.02303, 176.798, 86.15003, 181.213); + shape.curveTo(84.25303, 185.59999, 76.02303, 191.481, 73.53103, 191.481); + shape.curveTo(71.01703, 191.481, 72.17903, 193.475, 72.17903, 193.475); + shape.curveTo(74.716034, 198.502, 73.270035, 205.26201, 67.10303, 210.362); + shape.curveTo(69.68803, 217.524, 81.26303, 197.602, 84.205025, 197.602); + shape.curveTo(86.86102, 197.602, 87.40602, 198.811, 86.97903, 201.63301); + shape.lineTo(77.065025, 212.49402); + shape.curveTo(77.065025, 212.49402, 73.649025, 214.76802, 70.94602, 214.60402); + shape.curveTo(70.163025, 214.55702, 69.45202, 215.76602, 69.689026, 217.49802); + shape.curveTo(69.998024, 219.70302, 69.287025, 221.51001, 70.54302, 222.60002); + shape.curveTo(71.803024, 223.69202, 76.71102, 220.98701, 78.301025, 219.11401); + shape.curveTo(79.86403, 217.24101, 87.40602, 211.07301, 91.678024, 208.98701); + shape.curveTo(94.19302, 207.77802, 96.01802, 207.30301, 97.41602, 207.39902); + shape.lineTo(97.440025, 212.33401); + shape.curveTo(96.91902, 212.28502, 96.39603, 212.38301, 95.94602, 212.71501); + shape.curveTo(93.59702, 214.445, 87.09902, 219.23601, 87.09902, 220.16002); + shape.curveTo(87.09902, 220.51402, 90.06202, 222.51102, 97.413025, 231.07002); + shape.lineTo(97.413025, 238.21303); + shape.curveTo(95.27802, 235.84203, 93.024025, 231.38103, 91.246025, 230.35902); + shape.curveTo(89.06303, 229.10002, 86.93102, 225.02303, 86.31103, 223.62302); + shape.curveTo(85.69603, 222.20102, 83.32403, 223.00801, 82.84803, 224.71701); + shape.curveTo(82.37103, 226.447, 81.68603, 228.18001, 80.24003, 230.48201); + shape.curveTo(76.77703, 236.033, 70.25703, 236.529, 69.28203, 237.503); + shape.curveTo(68.191025, 238.595, 71.86703, 241.179, 72.816025, 242.294); + shape.curveTo(73.76502, 243.386, 81.189026, 245.356, 83.72603, 254.772); + shape.curveTo(86.24103, 264.188, 83.74803, 271.327, 82.35103, 275.09702); + shape.curveTo(79.28903, 283.282, 73.74303, 283.993, 64.064026, 279.15503); + shape.curveTo(62.949024, 278.58502, 54.932026, 269.68903, 53.225025, 265.75302); + shape.curveTo(51.495026, 261.84103, 53.391026, 249.05602, 53.391026, 249.05602); + shape.curveTo(53.391026, 249.05602, 56.377026, 244.98001, 54.953026, 244.81401); + shape.curveTo(54.361027, 244.742, 54.810024, 242.988, 53.246025, 243.699); + shape.curveTo(51.086025, 244.695, 46.891026, 248.253, 46.891026, 248.253); + shape.lineTo(46.655025, 280.726); + shape.curveTo(46.655025, 280.726, 48.528027, 280.62802, 48.860023, 283.122); + shape.curveTo(49.16902, 285.59, 48.860023, 293.083, 48.860023, 293.083); + shape.lineTo(49.192024, 293.747); + shape.lineTo(45.54, 293.747); + shape.curveTo(45.255, 290.237, 45.421, 285.706, 45.421, 285.706); + shape.curveTo(45.421, 285.706, 43.525, 282.50598, 42.409, 281.102); + shape.curveTo(41.317, 279.68, 41.343002, 250.81499, 42.907, 246.56898); + shape.curveTo(44.471, 242.32498, 45.563, 240.68799, 47.768, 240.99498); + shape.curveTo(49.974003, 241.30698, 53.27, 240.82898, 53.27, 240.82898); + shape.curveTo(53.27, 240.82898, 54.053, 230.08798, 52.793, 229.44598); + shape.curveTo(51.537, 228.82898, 46.364998, 232.26799, 45.584, 233.52399); + shape.curveTo(44.873, 234.663, 39.514, 235.18399, 35.668, 236.29898); + shape.lineTo(35.739998, 230.53198); + shape.lineTo(39.155, 230.86398); + shape.curveTo(39.155, 230.86398, 42.830997, 228.34998, 44.729, 227.23499); + shape.curveTo(46.603, 226.14499, 51.939, 226.33798, 52.414, 224.67299); + shape.curveTo(52.891003, 223.01099, 52.959, 217.67499, 52.58, 216.846); + shape.curveTo(52.18, 216.01599, 50.018, 218.15099, 48.5, 216.72699); + shape.lineTo(35.716, 204.77399); + shape.lineTo(35.716, 196.96498); + shape.lineTo(35.739, 196.96498); + shape.lineTo(35.718, 196.96498); + shape.lineTo(35.72, 196.954); + shape.lineTo(35.72, 196.954); + shape.closePath(); + shape.moveTo(52.18, 136.687); + shape.curveTo(51.87, 130.023, 51.159, 118.948, 51.041, 118.044); + shape.curveTo(50.875, 116.952995, 44.448, 109.103, 44.448, 106.921); + shape.curveTo(44.448, 104.714, 42.739002, 100.492, 46.985, 101.751); + shape.curveTo(51.231, 103.009, 53.58, 107.253, 53.58, 107.253); + shape.curveTo(53.58, 107.253, 57.114002, 113.205, 57.114002, 114.772995); + shape.curveTo(57.114002, 115.815994, 56.878002, 126.657, 56.711002, 133.937); + shape.lineTo(52.182003, 136.71199); + shape.lineTo(52.182003, 136.687); + shape.lineTo(52.18, 136.687); + shape.closePath(); + + g.setPaint(WHITE); + g.fill(shape); + + g.setTransform(transformations.poll()); + } +}