Compare commits

...

669 Commits

Author SHA1 Message Date
Stefan Bodewig 0711513826
POM lacks description 2026-08-02 19:42:15 +02:00
Stefan Bodewig 6546134471
building SBOMs requires Java 9+ 2026-07-26 18:16:49 +02:00
Stefan Bodewig eb29656412
typo 2026-07-26 18:11:41 +02:00
Stefan Bodewig 8f2556cb9f
pack200 now requires asm which is marked optional in commons-compress 2026-07-19 11:32:30 +02:00
Stefan Bodewig 03e4ac2dcb
remove build-system external references 2026-07-19 10:48:37 +02:00
Stefan Bodewig c362906efe
post release stuff to do 2026-07-15 17:38:01 +02:00
Stefan Bodewig b73fc55a25 Tagging version 2.6.0 of Ivy
-----BEGIN PGP SIGNATURE-----
 
 iIkEABYKADEWIQRqkxYesZkOg0bnuisjc439fEDeQwUCalembRMcYm9kZXdpZ0Bh
 cGFjaGUub3JnAAoJECNzjf18QN5DEZMA/jvWXUr1JjjazdAC84Vls/ASCncIzK6e
 ACOpc/0RITPmAP49B9HwvdCzRb1zGLxPfjfAFQ8iBsfciVb3pCvOd3aPAg==
 =sJGc
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iIkEABYKADEWIQRqkxYesZkOg0bnuisjc439fEDeQwUCalen3BMcYm9kZXdpZ0Bh
 cGFjaGUub3JnAAoJECNzjf18QN5DH6gA/2Fjhv5GwqioeQEz6HbdZ+QUB13ibV7O
 fSE/psMi4G3XAP4rrrdD932ZImA6lHlBGvh7WtyINU2Z/6+Q5yxM878RAQ==
 =HXlk
 -----END PGP SIGNATURE-----

Merge tag 'rel/2.6.0'

Tagging version 2.6.0 of Ivy

# -----BEGIN PGP SIGNATURE-----
#
# iIkEABYKADEWIQRqkxYesZkOg0bnuisjc439fEDeQwUCalembRMcYm9kZXdpZ0Bh
# cGFjaGUub3JnAAoJECNzjf18QN5DEZMA/jvWXUr1JjjazdAC84Vls/ASCncIzK6e
# ACOpc/0RITPmAP49B9HwvdCzRb1zGLxPfjfAFQ8iBsfciVb3pCvOd3aPAg==
# =sJGc
# -----END PGP SIGNATURE-----
# gpg: Signatur vom Mi 15 Jul 2026 17:25:33 CEST
# gpg:                mittels EDDSA-Schlüssel 6A93161EB1990E8346E7BA2B23738DFD7C40DE43
# gpg:                Aussteller "bodewig@apache.org"
# gpg: Korrekte Signatur von "Stefan Bodewig <bodewig@apache.org>" [ultimativ]
2026-07-15 17:31:40 +02:00
Stefan Bodewig bead264cc5
add License for jQuery Treeview 2026-07-14 17:43:05 +02:00
Stefan Bodewig 63849b29ba
tweak release instructions 2026-07-12 09:10:00 +02:00
Stefan Bodewig 2927c79ff1
prepare RC1 of Ivy 2.6.0 2026-07-12 07:56:24 +02:00
Maarten Coene 8644f1b12e
Use pattern 2026-07-10 12:53:26 +02:00
Stefan Bodewig 9747ab62d0
record github PR #127 , add @raboof 2026-07-10 11:29:58 +02:00
Stefan Bodewig 9bba2ae9ee
Merge pull request #127 from raboof/fix-deterministic-extra-dependency-attributes
fix: make module attribute string encoding deterministic
2026-07-10 05:52:44 +00:00
Arnout Engelen a888e862eb
fix: make module attribute string encoding deterministic
This value makes it into the `pom.xml`'s `extraDependencyAttributes`
property at least for SBT, and it'd be good to have this be
deterministic: aside from general hygiene, generating them bit-by-bit
reproducibly helps validating no malware was sneaked into the artifacts.
This is also called 'Reproducible Builds' (https://reproducible-builds.org/)
2026-07-09 17:59:13 +02:00
Stefan Bodewig bcc04c828f
set all manifest versions to 2.6.0 2026-07-08 21:22:08 +02:00
Maarten Coene fe36d4522a
Update release-notes.adoc
Updated release notes
2026-07-06 18:34:56 +02:00
Maarten Coene 14dc81daa2
Merge pull request #108 from eric-milles/IVY-1662
IVY-1662: collect updates by conf and check transitive on old dependency
2026-07-06 18:32:16 +02:00
Eric Milles 6edbe1907f
IVY-1662: collect updates by conf and check transitive on old dependency 2026-07-01 09:16:49 -05:00
Maarten Coene 489da1e2fc
Update ibiblio.adoc
IVY-1666: try to be a bit more precise in mentionning Maven Central Repository
2026-06-27 00:06:10 +02:00
Maarten Coene 2470ea152c
Update ibiblio.adoc
Replaced 'ibiblio' with 'Maven Central repository' in the documentation. The type 'ibiblio' is kept as is for backwards compatibility reasons.
2026-06-26 23:59:00 +02:00
Maarten Coene dc35d510d2
fixed build 2026-06-26 14:17:03 +02:00
Maarten Coene 788c011d37
Updated release notes with recent merges 2026-06-25 23:45:04 +02:00
Maarten Coene 05981d1a56
Merge pull request #124 from eric-milles/IVY-1656
IVY-1656: write inherited dependencies first to preserve resolve order
2026-06-25 23:40:15 +02:00
Stefan Bodewig 67df79d90a
cyclonedx -> cdx 2026-06-20 08:31:27 +02:00
Eric Milles c30e37cf8f
check info line 2026-06-18 16:04:10 -05:00
Eric Milles 2f085c9b59
extra blank line 2026-06-18 15:22:36 -05:00
Eric Milles 1cac02ef6f
IVY-1656: write inherited dependencies first to preserve resolve order 2026-06-18 11:39:15 -05:00
Maarten Coene 749dca3c09
Merge pull request #123 from eric-milles/IVY-1410-test
rewrite test case to specify files inline
2026-06-17 21:51:23 +02:00
Eric Milles 4db7f57828
rewrite test case to specify files inline 2026-06-17 14:02:11 -05:00
Maarten Coene ee1a61a0a0
Updated release notes with recent merges 2026-06-17 20:33:52 +02:00
Maarten Coene 648768b130
Merge pull request #111 from eric-milles/IVY-1658
IVY-1658: merge `ivy-module` namespaces
2026-06-17 20:19:22 +02:00
Maarten Coene c33191f88d
Merge pull request #114 from eric-milles/IVY-1653
IVY-1653: `makepom`: write overrides to Maven `dependencyManagement` section
2026-06-17 20:12:07 +02:00
Eric Milles 37ad05cf60
PomModuleDescriptorWriter has indents between 2 and 5 2026-06-16 14:40:34 -05:00
Eric Milles 87319046c2
do not write empty dependencyManagement block 2026-06-16 14:32:52 -05:00
Eric Milles 866fddeb18
dependencyManagement before dependencies when missing form template 2026-06-16 14:14:19 -05:00
Eric Milles c9058c78ae
next line continue 2026-06-16 13:38:16 -05:00
Eric Milles 1bc11cd09c
next line continue 2026-06-16 12:52:59 -05:00
Eric Milles 0ccdad9b8c
IVY-1653: makepom: write overrides to Maven dependencyManagement section 2026-06-16 08:59:18 -05:00
Maarten Coene 3b67d9adc7
Updated release notes 2026-06-16 00:14:58 +02:00
Maarten Coene f72d589709
Merge pull request #120 from eric-milles/IVY-1667
IVY-1667: `makepom`: check output lines for `dependencyManagement` element
2026-06-16 00:06:25 +02:00
Maarten Coene a569ad67b8
Merge pull request #119 from eric-milles/IVY-1665
IVY-1665: `checkdepsupdate`: verify version is greater before reporting on available update
2026-06-16 00:05:08 +02:00
Eric Milles 27b4431886
add test case 2026-06-12 13:52:24 -05:00
Eric Milles 0dc2b2d237
IVY-1667: makepom: check output lines for dependencyManagement element 2026-06-12 13:23:36 -05:00
Eric Milles aebe2c1f0f
IVY-1665: use configured LatestStrategy to compare revisions 2026-06-12 13:06:56 -05:00
Eric Milles fd67cacf14
IVY-1665: use default LatestStrategy to compare revisions 2026-06-12 10:19:54 -05:00
Eric Milles 426102ff4d
IVY-1658: merge `ivy-module` namespaces 2026-06-12 09:43:30 -05:00
Stefan Bodewig 8d34dd1ae4
some things require Java9+ 2026-06-12 09:58:35 +02:00
Stefan Bodewig 2a4e550f93
Ant 1.10 is required to build, now. At least I have used Java11 so far. 2026-06-12 09:11:19 +02:00
Stefan Bodewig 0a9234e2de
didn't I say I'd remove the example SBOMs? 2026-06-12 08:21:34 +02:00
Stefan Bodewig b2cd04d116
Merge pull request #118 from apache/cyclonedx
Cyclonedx
2026-06-12 06:13:49 +00:00
Eric Milles e6a9db4456
IVY-1665: verify version is greater before reporting on available update 2026-06-11 15:45:08 -05:00
Maarten Coene 8ca1d8895e
css styling 2026-06-10 00:34:23 +02:00
Maarten Coene 2506b26c2a
IVY-450: highlight active page in tree 2026-06-10 00:34:01 +02:00
Stefan Bodewig c0601d9258
extract files to build dir instead of /tmp 2026-06-07 15:28:17 +02:00
Stefan Bodewig 0e6d805318
temporary folder containing example SBOMs 2026-06-07 07:28:02 +02:00
Stefan Bodewig c8a49f5cf8
target dependency is not required 2026-06-06 18:36:42 +02:00
Stefan Bodewig 6968b1b39f
create SBOMs for tarballs 2026-06-06 18:32:57 +02:00
Stefan Bodewig edb5269d63
add SBOMs to binary distribution 2026-06-06 17:29:45 +02:00
Stefan Bodewig 4b4576e48a
Merge branch 'master' into cyclonedx 2026-06-06 16:54:58 +02:00
Stefan Bodewig df64393433
skip tests if test server is not reachable 2026-06-06 16:54:04 +02:00
Stefan Bodewig f711904dd2
reminder of what to change for a release 2026-06-06 09:19:32 +02:00
Stefan Bodewig ea9bc07131
bump copyright year 2026-06-06 08:31:15 +02:00
Stefan Bodewig fb454b6788
also sign SBOMs, actuylly the openpgp antlib doesn't semm to work for GnuPG 2.x 2026-06-04 20:49:15 +02:00
Stefan Bodewig 16932bebcf
publish SBOM for ivy.jar 2026-06-04 20:44:13 +02:00
Stefan Bodewig d269dbcb87
RAT doesn't like .asf.yaml 2026-06-04 20:40:31 +02:00
Stefan Bodewig a39071ad7f
looks as if the template hasn't been touched for a while 2026-06-04 14:04:59 +02:00
Stefan Bodewig 13423b96a4
new Ant logo 2026-06-04 13:00:15 +02:00
Maarten Coene e86e69443e
Added missing test files 2026-05-20 15:57:36 +02:00
Maarten Coene a4c22ca869
FIX: the 'ivy:install' task didn't take the 'from' resolver into account when resolving Maven parent modules or source/javadoc artifacts. 2026-05-20 09:09:40 +02:00
Stefan Bodewig 8d21b6d0c4
Merge pull request #117 from apache/infrastructure-ruleset-bot/default-branch-protection
[INFRA] Set up default rulesets for default and release branches
2026-05-16 16:10:27 +00:00
The Apache Software Foundation c2fd0d47f2 Set up default protection ruleset for default and release branches 2026-05-15 13:51:47 -05:00
Stefan Bodewig dcd36eac92
document what I've learned about Ivy files. 2026-02-16 18:20:22 +01:00
Stefan Bodewig 0284d83704
Merge pull request #107 from jbeckers/less-wide-osgi-tables
Less wide osgi tables
2026-02-16 17:18:26 +00:00
Maarten Coene 057528e0f4
Merge pull request #115 from eric-milles/assert-throws
Java 8: use `assertThrows` instead of `ExpectedException` rule
2025-09-11 23:10:38 +02:00
Eric Milles d7036d97be
use `assertThrows` instead of `ExpectedException` rule 2025-09-11 11:32:08 -05:00
Eric Milles 3a865956d8
refactor `IvyDependencyUpdateChecker` 2025-09-08 15:01:00 -05:00
Eric Milles af6502084f
project refresh 2025-09-03 22:45:40 +02:00
Maarten Coene 8fe5d37d6c
IVY-1410: FIX: the 'ivy:deliver' task didn't replace dynamic revision from inherited dependencies. 2025-08-31 23:39:45 +02:00
Maarten Coene aa3c169322
IVY-1664: added support for the override child element 2025-08-31 14:41:54 +02:00
Maarten Coene 934bf19233
IVY-1485, IVY-1661 : reverted old change causing issues with replacing dynamic revisions on deliver when there were multiple configurations. 2025-08-31 12:32:47 +02:00
Maarten Coene 58232c0ef0
Merge pull request #110 from eric-milles/IVY-813
IVY-813: add typedef for nearest conflict manager
2025-08-04 22:59:37 +02:00
Eric Milles 9817b7c03f
IVY-813: add typedef for nearest conflict manager 2025-08-04 10:47:12 -05:00
Maarten Coene 75b554334e
IVY-1660: the ivy:retrieve task failed when the retrieve pattern contained some text in parentheses before the first token 2025-08-01 22:41:32 +02:00
Maarten Coene 889bedb4ef
Mention Java 8 or higher is required now 2025-07-08 22:10:02 +02:00
Joachim Beckers c22c9e3627
Merge branch 'apache:master' into less-wide-osgi-tables 2025-07-06 16:56:26 +02:00
Maarten Coene 7b3ebeb083
Added missing '2.5' version and prepare for '2.6' as well 2025-07-04 00:02:08 +02:00
Joachim Beckers 114d6d819e
Make OSGi tables less wide 2025-07-02 11:17:12 +02:00
Joachim Beckers 9f8a1ecbab
Merge branch 'apache:master' into master 2025-07-02 11:15:00 +02:00
Maarten Coene 318c5c64e8
Merge pull request #105 from jbeckers/inline-mode-no-literal-block
Remove spurious indent for 'Inline mode'
2025-06-28 19:40:30 +02:00
Joachim Beckers b6c823bc8f
Merge pull request #1 from jbeckers/inline-mode-no-literal-block
Remove spurious indent for 'Inline mode'
2025-06-27 21:04:56 +02:00
Joachim Beckers 79e2599a0a
Remove spurious indent for 'Inline mode'
The "Inline mode" paragraph starts with a space, which is an asciidoc construct: https://docs.asciidoctor.org/asciidoc/latest/verbatim/literal-blocks/

Remove the spurious space
2025-06-27 21:03:44 +02:00
Maarten Coene ea70bbe7e3
IVY-813: added a 'nearest' conflict manager 2025-06-08 12:57:50 +02:00
Maarten Coene 60a1ff1b11
Updated OSGI bundle headers for new pack200 code 2025-04-29 23:44:05 +02:00
Maarten Coene ec7b728251
Reorganized code a bit in an attempt to avoid class loading issues while loading ivy settings. 2025-04-29 23:21:51 +02:00
Maarten Coene 05fdc916fb
Also catch errors when trying to instantiate optional classes. 2025-04-24 00:39:32 +02:00
Maarten Coene 5f9e01d7a0
Added the default constructor in an attempt to fix a NoClassDefFoundError 2025-04-23 23:46:50 +02:00
Maarten Coene d77284167b
IMPROVEMENT: use Apache Commons Compress for pack200 handling to avoid issues on Java 14 and later. (IVY-1652) 2025-04-23 23:04:43 +02:00
Maarten Coene 3a8510df01
Use latest Apache Rat Ant Task Library 2025-04-21 23:23:35 +02:00
Maarten Coene 646b1d2fea
Mention to delete your Ivy cache after upgrading. 2025-04-21 23:15:34 +02:00
Maarten Coene 6a8cfd4004
FIX: improved Maven dependencyManagement matching for dependencies with a non-default type or classifier (IVY-1654) 2025-03-25 00:00:19 +01:00
Maarten Coene a9eb9f1680
Prepare for next development iteration 2025-01-29 23:22:06 +01:00
Maarten Coene a26e706dbd
Prepare for next development iteration 2025-01-07 16:42:06 +01:00
Maarten Coene 2b8bff07ee
Fixed doap_Ivy.rdf 2024-12-26 11:54:50 +01:00
Maarten Coene f3215e06e6
Prepare 2.5.3 release 2024-12-23 12:47:34 +01:00
Maarten Coene f82387a131
Prepare 2.5.3 release 2024-12-23 12:47:10 +01:00
Maarten Coene ea446adbb4
Prepare 2.5.3. release 2024-12-23 11:07:48 +01:00
Maarten Coene e1753e8b4b
Prepare 2.5.3. release 2024-12-23 11:07:20 +01:00
Maarten Coene 4c7f310077
Fixed a spacing issue in the documentation footer. 2024-12-22 19:12:12 +01:00
Maarten Coene 466b299fc9
Fixed a spacing issue in the documentation footer. 2024-12-22 19:11:49 +01:00
COENE Maarten b5246c559e Fix sign task 2024-12-22 16:28:18 +01:00
Maarten Coene 79cd9b6552
bump year 2024-12-20 12:53:11 +01:00
Maarten Coene 879ef9e92b
Merge pull request #104 from maartenc/release_2.5.3
Prepare 2.5.3 release
2024-12-20 12:46:19 +01:00
Maarten Coene 54bf314780 Prepare 2.5.3 release 2024-12-20 12:45:13 +01:00
Maarten Coene 5196470c0d Fix junit tests on Windows 2024-12-20 12:44:12 +01:00
Maarten Coene 098c73410e Exclude IntelliJ IDEA artifacts 2024-12-19 10:25:42 +01:00
Maarten Coene 7c364592f0 Prepare 2.5.3 release 2024-12-19 10:09:53 +01:00
Maarten Coene 9828c8f99a
Fix indentation 2024-12-18 17:46:10 +01:00
Maarten Coene 95a8cbe57a
Fixed junit test: IvyDE has been archived 2024-11-18 09:47:25 +01:00
Maarten Coene a7ddb5b80b
Merge pull request #103 from maartenc/IVY-1651
IVY-1651: improved documentation regarding patterns and retrieve task
2024-11-17 12:32:08 +01:00
Maarten Coene 0e83732542 IVY-1651: improved documentation regarding patterns and retrieve task 2024-11-17 12:28:43 +01:00
Maarten Coene 6d0e0aa57a
Merge pull request #102 from maartenc/IVY-1649
Fix for IVY-1649 and IVY-1650
2024-11-13 00:06:53 +01:00
Maarten Coene d30c90bf86 Added default implementation for the new interface method to improve backwards compatibility + some javadoc 2024-11-13 00:01:03 +01:00
Maarten Coene e786dbb2d5 IVY-1649, IVY-1650: Fixed invalid cached Ivy file in combination with qualified extra attributes. 2024-11-12 23:51:01 +01:00
Stefan Bodewig 503aafc594 IVY-1648 some tests are failing on Java8 2023-09-15 18:09:50 +02:00
Stefan Bodewig 5d69c9a544 IVY-1647 better check whether properties/features can be set 2023-09-15 17:26:32 +02:00
Stefan Bodewig e00e9e0ee0 prepare for next development iteration 2023-08-20 16:32:58 +02:00
Stefan Bodewig 6c0560f93c update release notes with CVE-2022-46751 2023-08-20 11:59:44 +02:00
Stefan Bodewig 2be17bc18b CVE-2022-46751 don't parse doctypes and access external entities by default 2023-08-17 16:53:14 +02:00
Stefan Bodewig 6ac4f36c9e bump copyright line 2023-08-17 16:52:06 +02:00
Stefan Bodewig 6fc8657b81 prepare Ivy 2.5.2 2023-08-16 20:58:47 +02:00
Stefan Bodewig aa011feaef record HttpClient upgrade 2023-06-21 13:26:53 +02:00
Stefan Bodewig 5f11f05fe3 IVY-1642 fix POM translation for multiple artifacts in one module 2023-04-25 21:19:13 +02:00
Stefan Bodewig c63ce79f52 IVY-1641: fix NullPointerException if content type has no charset 2023-03-17 12:59:02 +01:00
Stefan Bodewig 8a5ef6825b upgrade dependencies with known vulnerabilities 2022-12-05 19:58:18 +01:00
Stefan Bodewig fe57d58632 add last two Ivy releases 2022-11-05 13:07:29 +01:00
Stefan Bodewig 4ffed6329f back to normal development 2022-11-04 12:32:53 +01:00
Stefan Bodewig 9c4802b70c update release notes with CVE information 2022-11-02 18:28:21 +01:00
Stefan Bodewig 3f374602d4 CVE-2022-37866 prevent path-traversal with bogus module coordinates 2022-11-01 10:26:24 +01:00
Stefan Bodewig 03b6b8c3ae CVE-2022-37865 ZipPacking allows overwriting arbitrary files 2022-11-01 10:14:19 +01:00
Stefan Bodewig 9d7b5e133f ignore failing test 2022-11-01 10:13:33 +01:00
Stefan Bodewig 55179bb0b6 need newer version of RAT for https license URIs 2022-11-01 10:13:15 +01:00
Stefan Bodewig ff6adbeb00 prepare Ivy 2.5.1 2022-11-01 09:56:06 +01:00
Stefan Bodewig 259d054396 switch to https 2022-08-07 19:41:57 +02:00
Jaikiran Pai cd9296a409 add contributor of IVY-1632 to contributors list 2022-01-15 09:57:01 +05:30
Jaikiran a2701d733a
Merge pull request #96 from bernolanger/master
IVY-1632: Use valid value for HTTP header "Accept".
2022-01-15 04:21:07 +00:00
Jaikiran Pai 1fe3c3cff6 repo.jfrog.org is no longer available 2021-12-23 10:42:52 +05:30
Berno Langer 17a0d80da3 IVY-1632: Use valid value for HTTP header "Accept".
The default accept header of Java isn't valid as described at
https://bugs.openjdk.java.net/browse/JDK-8163921

Therefore set an accept header that accepts simply anything in the
ivy:retrieve Ant task.
2021-12-20 09:39:25 +01:00
Maarten Coene c14e2ba5a7
Merge pull request #95 from maartenc/IvyRetrieveEmptySet
IVY-1631: ivy:retrieve Ant task and empty FileSet bug
2021-11-24 16:18:41 +01:00
Maarten Coene 0170436231 Extra test to check that the created path is also empty 2021-11-24 13:10:59 +01:00
Maarten Coene 17f2727826 Extra test to check that the created path is also empty 2021-11-24 13:06:08 +01:00
Maarten Coene 0864db0364 set the project a bit sooner so it can be used within the other methods 2021-11-23 17:47:28 +01:00
Maarten Coene f760b390e5 IVY-1631: when the ivy:retrieve Ant task retrieves the jars to a non-empty directory, but the retrieve task itself didn't retrieve any files, the created fileset was not empty but contained the existing files in that directory. 2021-11-23 17:37:04 +01:00
Jaikiran Pai 8e2bdfb302 IVY-1616 Properly parse the artifact origin location, if the location is a file: URI 2021-03-29 13:06:52 +05:30
Jason Guild 424fa89419 IVY-1615 implement retrieval of ivysettings from url in standalone.
Closes #91 pull request at github.com/apache/ant-ivy repo
2021-03-29 10:12:45 +05:30
Jaikiran Pai ac9af265f9 Update release notes 2021-03-29 09:39:22 +05:30
Jaikiran Pai 370e52b74a IVY-1618 Don't change the dependency resolver configure on Ivy settings when setting the one on ResolveEngine 2021-03-29 09:33:15 +05:30
Jaikiran Pai a4ab62a717 IVY-1626 Add a note to bintray resolver documentation, that bintray and JCenter are being decommissioned 2021-03-29 08:44:32 +05:30
Jaikiran Pai f1093f67d4 IVY-1628 Add a testcase to reproduce the issue and verify the fix 2021-03-25 09:51:06 +05:30
Jaikiran Pai 083e3f685c IVY-1628 Fix potential ConcurrentModificationException 2021-03-23 07:30:30 +05:30
Maarten Coene 79bd0ce1f4 Documentation fix: the [originalname] token does NOT contains the extension! 2021-02-17 09:55:36 +01:00
Jaikiran Pai 2cf83cc35a IVY-1614 Add a test to show that Maven version range exclusion syntax is correctly honoured 2021-02-13 10:24:00 +05:30
Jaikiran Pai 70dfaf2467 Allow jacoco coverage to be disabled when running tests
This allows us to run the Ivy testsuite against latest Java
early access versions without having to wait for the instrumentation
libraries (that jacoco coverage needs) to start supporting the
class version of the new Java version being tested.
2021-01-16 19:47:22 +05:30
Jaikiran Pai 824e8eebfe Skip Pack200 tests from JDK >=14 (since Pack200 tools and API have now been removed from that JDK version) 2021-01-16 09:54:16 +05:30
Jaikiran Pai 27491e3688 Use https for IvyDE updatesite test 2021-01-15 20:59:19 +05:30
Jaikiran Pai 66547a20a0 jfrog repo now redirects http to https - use https in the test 2021-01-15 20:20:43 +05:30
Jaikiran Pai ad87c251aa Upgrade to 0.8.6 of jacoco 2021-01-15 18:21:07 +05:30
Simon Legner bb8cfa726c
RetrieveEngine: remove superfluous space in error 2020-04-05 12:26:10 +02:00
Jaikiran Pai 87de654504 Use newer version of jacoco 2019-11-02 18:53:44 +05:30
Jaikiran Pai 4c1347531e Add Java 8 runtime requirement to release notes 2019-11-02 18:39:56 +05:30
Jaikiran Pai 6364399673 Remove property which seems to be unused 2019-11-02 18:36:00 +05:30
Jaikiran Pai 6edcf2631d No longer required in Java 8 2019-11-02 18:32:22 +05:30
Jaikiran Pai 28eb66db03 Upgrade ivy.api.reference version to 2.5.0
Contributed-by: Gintautas Grigelionis
Pull request: https://github.com/apache/ant-ivy/pull/90/
2019-11-02 18:24:17 +05:30
Jaikiran Pai 5a5e3eb084 Use newer version of Ivy in example
Contributed-by: Gintautas Grigelionis
Pull request: https://github.com/apache/ant-ivy/pull/90
2019-11-02 18:23:15 +05:30
Jaikiran Pai b5f8c9d7e5 Fix link in release notes.
Contributed-by: Gintautas Grigelionis
Pull request: https://github.com/apache/ant-ivy/pull/90/
2019-11-02 18:19:09 +05:30
Jaikiran Pai 8e29e307d6 Upgrade to latest versions of bouncycastle and httpclient
Contributed-by: Gintautas Grigelionis
Pull request: https://github.com/apache/ant-ivy/pull/90/
2019-11-02 18:18:34 +05:30
Jaikiran Pai c0c8df492d Remove the workaround introduced in commit 5918182e0d, now that we require minimum Java 8 runtime 2019-11-02 18:11:07 +05:30
Jaikiran Pai bf82dbedbe Minimum Java version is now 1.8 2019-11-02 18:07:14 +05:30
Jaikiran Pai a9c0602304 next version is 2.6.0 2019-11-02 09:12:35 +05:30
Jan Matrne ecf6c2e009 BREAKING: Removed old fr\jayasoft\ivy\ant\antlib.xml AntLib definition file (jira:IVY-1612) 2019-10-25 08:41:22 +02:00
Jaikiran Pai be85129fce next dev version 2019-10-24 16:24:17 +05:30
Jaikiran Pai 48234fc5ed Update status to "release" for 2.5.0 2019-10-20 10:40:52 +05:30
Jaikiran Pai 8b94e475cc prep 2.5.0 release 2019-10-20 10:15:09 +05:30
Jaikiran Pai 7eb3908f70 release ivy.xsd for 2.5.0 2019-10-20 10:06:46 +05:30
Jaikiran Pai 6b3a483f9a 2.5.0 release prep 2019-10-20 10:05:37 +05:30
Jaikiran Pai 400cb51d07 IVY-1586 IVY-1610 Make sure that empty value of "classifier" in pom.xml is considered the same as classifier not being specified 2019-10-11 10:20:46 +05:30
Stefan Bodewig 1294368143 bump year 2019-09-29 13:05:08 +02:00
Stefan Bodewig dda26804d8 add license for file copied from ganymed ssh library 2019-09-29 13:04:43 +02:00
Jaikiran Pai 3fc534020f IVY-1586 Set the correct "conf" on the "artifact" of the dependency when parsing a pom.xml 2019-09-21 17:45:35 +05:30
Jaikiran Pai 46752f7475 Upgrade to 0.1.55 of jsch 2019-09-08 17:50:47 +05:30
Jaikiran Pai dfc27e28ff Upgrade to 4.5.9 of http client 2019-09-08 11:51:27 +05:30
Jaikiran Pai 6205bf5cb2 Upgrade to 1.62 of bouncycastle 2019-09-08 11:49:06 +05:30
Jaikiran Pai 9ea28819c2 Upgrade to 1.9.14 of Ant 2019-09-08 11:46:55 +05:30
Jaikiran Pai d714d9dffb IVY-1580 Resolve any implicit artifacts when one among multiple dependencies of the same module has an explicit artifact/includes declaration 2019-09-07 18:25:36 +05:30
Jaikiran Pai 3cdf4752ec Use the correct XML namespace URI in the Ivy module descriptor generated out of a pom.xml 2019-05-31 18:06:45 +05:30
Jaikiran Pai 0114c604b6 Use https instead of http 2019-05-31 17:33:42 +05:30
Jaikiran Pai 309dba82b5 Include the content length header value and the downloaded file size, in the exception that gets thrown if they don't match 2019-05-28 12:09:04 +05:30
Jaikiran Pai f7e69d4b49 Fix checksums of .pom files used in tests 2019-05-28 11:22:09 +05:30
Jaikiran Pai 63fd929eb2 Fix checksum files of the ivy.xml(s), that changed in previous commit, used in tests 2019-05-28 11:01:21 +05:30
jkf 0d07c9985c updated reference to license from http to https using find . -type f -exec sed -i s/http://www.apache.org/licenses/LICENSE-2.0/https://www.apache.org/licenses/LICENSE-2.0/ {} \; 2019-05-26 22:48:00 +02:00
Jaikiran Pai 4ffcf8f06f Upgrade to 0.8.3 of jacoco 2019-02-19 09:02:49 +05:30
Jaikiran Pai 75d8d79806 IVY-1602 Prevent cache corruption when attempting to copy a file to a destination which resolves back to the same source file 2019-02-01 12:55:04 +05:30
Stefan Bodewig 70248634fc moved to gitbox 2018-12-17 09:35:16 +01:00
Jaikiran Pai d1d956fc2f IVY-1594 Make sure we unlink an existing link, when retrieve task is enabled with symlink = true 2018-12-06 06:22:31 +05:30
Jaikiran Pai a7318cdb6e Update FileSystemResolverTest#testListing to expect a new module that was introduced in the testcase for IVY-1594 2018-10-23 12:09:46 +05:30
Jaikiran Pai 61ceab3588 IVY-1594 Use a separate moduleid for the testcase to prevent other tests, reliant on the org1:mod1.1 module, from being impacted 2018-10-23 11:52:28 +05:30
Jaikiran Pai f367ed8bd7 Add IVY-1594 to release notes 2018-10-23 11:38:42 +05:30
Jaikiran Pai 2eede730ca IVY-1594 Make sure FileUtil#symlink handles symlinking of directories correctly 2018-10-23 11:33:47 +05:30
Maarten Coene b3f7c85969 NEW: The buildlist task can now have `root` and `leaf` subelements to specify the organisation (and other attributes) of the root and leaf modules 2018-09-16 23:43:30 +02:00
Jaikiran Pai 0712acabd5 Revert commit 7131e1c028. 2018-09-10 19:04:42 +05:30
Jaikiran Pai ab8112ea24 Revert commit ecc271c492. 2018-09-10 19:03:42 +05:30
Gintas Grigelionis 969ba77e95 Fix merge 2018-08-29 08:52:03 +02:00
Gintas Grigelionis cbb0714f2f Reduce the amount of downloads and add a clarification 2018-08-29 08:45:59 +02:00
Gintas Grigelionis 5e71e21d8a Add japicmp checks 2018-08-29 08:36:15 +02:00
Gintas Grigelionis 7c33b3c079 Update tools 2018-08-29 08:22:48 +02:00
Gintas Grigelionis fd81f44619 Update the release notes 2018-08-29 08:05:12 +02:00
Maarten Coene d976a4a27f Fixed ModuleDescriptorMemoryCacheTest 2018-08-24 09:25:25 +02:00
Maarten Coene 06af67c4e8 FIX: ModuleDescriptorMemoryCache didn't detect outdated entries when Ivy file was updated in the cache by another process 2018-08-24 08:38:31 +02:00
Jaikiran Pai ecc271c492 In continuation of commit 7131e1c028, make sure the ArtifactOrigin's location is treated as a URL consistently in relevant places 2018-08-19 20:04:01 +05:30
Jaikiran Pai 7131e1c028 Treat the ArtifactOrigin's location as a URL (as already stated in its javadoc).
Should solve issues, especially on Windows OS, like the one reported in https://www.mail-archive.com/ivy-user@ant.apache.org/msg06324.html
2018-08-19 19:21:18 +05:30
Jaikiran Pai 556022e02a IVY-1589 Prevent UnsupportedOperationException on list.remove() while doing a FileUtil.deepCopy 2018-08-15 11:01:59 +05:30
Gintas Grigelionis 535eee4626 IVY-1486 Respect exclude regardless of resolution order 2018-08-14 19:33:31 +02:00
Maarten Coene f8d3121e4f Added short comment in the release notes for the thread-safety fixes made some time ago 2018-08-14 15:21:13 +02:00
Jaikiran Pai 26b2de7296 IVY-1588 Don't throw a CircularDependencyException when parsing the pom of a import scoped dependency in dependencyManagement section 2018-08-13 15:49:05 +05:30
Gintas Grigelionis c274756ebe Revise the documentation 2018-08-10 14:50:12 +02:00
Gintas Grigelionis bc4f6b9307 Update the release notes 2018-08-07 14:35:36 +02:00
aprelev 18a830dbcf Fix IVY-982 by subtracting negated entries from wildcard bin 2018-08-07 14:27:07 +02:00
Gintas Grigelionis 8958344404 Update the release notes 2018-08-04 14:41:34 +02:00
aprelev 9a9b720db7 Fix IVY-1104 by including extra attribute in XML report 2018-08-04 14:34:49 +02:00
Gintas Grigelionis c21193ae13 Redundant string length calculation 2018-08-03 14:00:59 +02:00
Gintas Grigelionis 27a3549ae7 Useless casts 2018-08-03 13:57:33 +02:00
Gintas Grigelionis 93f11da846 Use try with resources 2018-08-03 13:54:24 +02:00
Gintas Grigelionis b5b177b84d Use StandardCharsets 2018-08-03 12:20:40 +02:00
Gintas Grigelionis d67de45293 Unused imports 2018-08-03 12:17:50 +02:00
Jaikiran Pai 5918182e0d Set the https.protocol system property even for regular builds when running on Java 7 2018-07-25 10:50:59 +05:30
Jaikiran Pai 43ddccb859 Fix build failures of tutorials when running against Java 7 2018-07-25 10:16:10 +05:30
Gintas Grigelionis 55d9cb6595 Correct credits 2018-06-21 07:37:47 +02:00
Gintas Grigelionis 41146279fe Prefer HTTPS 2018-06-16 11:48:03 +02:00
Gintas Grigelionis ebbc240212 Use try with resources 2018-06-09 22:03:09 +02:00
Gintas Grigelionis bf3e9dcbea URL-based resolvers should accept query parameters in publish patterns 2018-06-09 20:48:53 +02:00
Gintas Grigelionis 95c076bf47 Further sync of Checkstyle setup 2018-06-09 18:07:01 +02:00
Gintas Grigelionis 92c2791522 Update RAT 2018-06-08 10:45:17 +02:00
Gintas Grigelionis 9f0fdedbd5 Sync Checkstyle setup with IvyDE 2018-06-08 10:41:11 +02:00
Gintas Grigelionis cbe4dfac42 Update JaCoCo 2018-06-07 22:15:21 +02:00
Maarten Coene 62724c69ea FIX: Removed fetchedSet field from ResolveEngine because this was causing issues when the same ResolveEngine instance was used by multiple threads. The fetchedSet is now passed around as parameter between the 'fetch' methods of this class. 2018-06-07 15:14:32 +02:00
Maarten Coene 30696f6e16 FIX: ModuleDescriptorMemoryCache isn't thread safe resulting in corruption of the LinkedHashMap internal structure when multiple threads simultaneously read/write to this cache. 2018-04-23 14:03:56 +02:00
Nicolas Lalevée ad90d4b7e8 Suggest a mail template to announce a release 2018-04-22 20:29:11 +02:00
Nicolas Lalevée 71e0d6486a Update the release instruction for asciidoc documentation 2018-04-22 20:21:16 +02:00
Nicolas Lalevée a76a8c4bb0 Prepare the version for the next release 2018-04-19 20:45:59 +02:00
Nicolas Lalevée f2b98e5321 Document how to properly declare the qualifier of the OSGi version 2018-04-15 19:12:27 +02:00
Nicolas Lalevée 55fb3f8930 when packaging the sources, do not default-exclude, but still exclude .git folder 2018-04-15 15:31:45 +02:00
Nicolas Lalevée c0e9d2be0b Update release instructions: we use git now 2018-04-12 18:17:30 +02:00
Gintas Grigelionis 9a31defc9a Use the latest asciidoctorj 2018-04-12 18:05:13 +02:00
Nicolas Lalevée 00d3a534b4 For the unit tests, do not depend on the version of Ant running the tests, but depend on the version declared in the ivy.xml 2018-04-12 00:50:29 +02:00
Nicolas Lalevée 23cf1fb45e Reduce the chance to have a conflict of port binding by being able to bind to one, even briefly. 2018-04-12 00:27:20 +02:00
Nicolas Lalevée 910fe14820 fix asciidoctor task classpath 2018-04-11 21:12:07 +02:00
Nicolas Lalevée 004a67fccc building 2.5.0-rc1 2018-04-11 19:32:21 +02:00
Nicolas Lalevée 4470ae5ee8 Asciidoc needs to be run unnested from their jar.
cf https://github.com/spring-projects/spring-boot/issues/7399#issuecomment-260908153
2018-04-11 19:29:38 +02:00
Nicolas Lalevée 0de17b7d22 Add missing License 2018-04-11 14:57:28 +02:00
Nicolas Lalevée 0164b8d4d9 exclude md5 files from License check 2018-04-11 14:42:11 +02:00
Nicolas Lalevée 8d01a8d9d6 add ASL headers, so also chnage the associated checksums 2018-04-11 14:41:46 +02:00
Nicolas Lalevée 451b32a1a6 fix style in the release doc 2018-04-11 14:34:31 +02:00
Nicolas Lalevée bc4c8049ca add missing License headers 2018-04-11 14:33:44 +02:00
Nicolas Lalevée 8dedf388aa remove the reference to the old documentation folder 2018-04-11 14:32:50 +02:00
Nicolas Lalevée 8933719ad9 Let's make the release instruction a simple text file 2018-04-11 14:32:12 +02:00
Nicolas Lalevée c017db18b0 Add missing License 2018-04-11 14:26:31 +02:00
Nicolas Lalevée 6238cdc723 output the path to the rat report in case of error 2018-04-11 14:25:02 +02:00
Nicolas Lalevée 8e3a104829 The NOTICE file is supposed to be a simple text file 2018-04-11 14:24:33 +02:00
Gintas Grigelionis de130ad15e Checkstyle 2018-04-09 01:02:32 +02:00
Gintas Grigelionis a94425906d Update HttpClient to 4.5.5 2018-04-09 00:52:05 +02:00
Gintas Grigelionis 1fd5dd9b51 Update release notes 2018-04-09 00:46:41 +02:00
Gintas Grigelionis 582e6e6cbb Update documentation 2018-04-07 13:44:21 +02:00
Gintas Grigelionis f0f37acbef Fix the credits 2018-04-06 19:50:19 +02:00
Thomas Pasch 73f7cf413d Added makepom option to main/standalone
This close PR #71 at github.com/apache/ant-ivy
2018-04-04 21:25:55 +05:30
Jaikiran Pai 198af5cdf1 Upgrade to 1.9.11 of Ant 2018-03-31 10:58:18 +05:30
Gintas Grigelionis 62216968e8 Update BouncyCastle to 1.59 2018-03-29 14:55:56 +02:00
Gintas Grigelionis 1132a0e342 Tidy up the code 2018-03-29 06:53:16 +02:00
Gintas Grigelionis e4131dc592 Simplify assertions 2018-03-28 21:58:04 +02:00
Gintas Grigelionis 8c4cd482a0 Extraneous exceptions 2018-03-28 20:58:32 +02:00
Gintas Grigelionis 2597f8579d extraneous check: parseBoolean takes null 2018-03-28 20:46:03 +02:00
Gintas Grigelionis b10d76b03a Simplify append substring 2018-03-28 20:20:10 +02:00
Gintas Grigelionis c4091fa1c7 Simplify try with resources 2018-03-28 19:55:27 +02:00
Gintas Grigelionis 6c6b441612 IVY-1321 Make Main.run() public 2018-03-21 16:36:01 +01:00
Gintas Grigelionis 39edf7ea3a Use Java 5+ features 2018-03-19 23:06:17 +01:00
Gintas Grigelionis 70d8de7ba4 Bad merge… 2018-03-17 22:03:01 +01:00
Gintas Grigelionis bc290628cf Suppress “deprecation” and “unused” warnings 2018-03-17 12:51:46 +01:00
Gintas Grigelionis e14481ce44 More updates to the release notes 2018-03-16 13:41:53 +01:00
Gintas Grigelionis fa2ddf8eac Update the release notes 2018-03-15 22:59:03 +01:00
Gintas Grigelionis 4a2608ac10 Make logic more concise 2018-03-15 19:35:15 +01:00
Gintas Grigelionis 5a2af8daac Tidy up the code 2018-03-15 19:33:36 +01:00
Gintas Grigelionis 2510c7bbd1 IVY-1483 use correct parent classloader when launching resolved artifacts from CLI 2018-03-15 17:46:20 +01:00
Gintas Grigelionis 4cf4461333 IVY-1569 refactor the tests 2018-03-15 12:48:03 +01:00
Gintas Grigelionis 2c633410b3 Use HTML entities 2018-03-15 12:34:07 +01:00
Gintas Grigelionis 05c3af9803 Spell check… 2018-03-14 18:27:30 +01:00
Gintas Grigelionis d90c3910ec Update Commons VFS to 2.2 2018-03-14 15:32:33 +01:00
Gintas Grigelionis 1a93bbe200 Prefer HTTPS… 2018-03-14 15:12:14 +01:00
Gintas Grigelionis 6d1082c74f Complete the conversion 2018-03-14 15:08:55 +01:00
Gintas Grigelionis 6e0c466446 Let’s go asciidoc… 2018-03-14 15:07:51 +01:00
Gintas Grigelionis b27ae95078 Use HTML entities 2018-03-14 07:43:55 +01:00
Gintas Grigelionis 9191f35796 Use ASCII (TM) 2018-03-14 07:43:37 +01:00
Gintas Grigelionis 84234234e2 Revise coding style 2018-03-14 06:59:00 +01:00
Gintas Grigelionis d278094ead Revise grammar and/or Java versions 2018-03-14 06:57:59 +01:00
Gintas Grigelionis b77d46456b Correct CLI help text 2018-03-14 00:59:56 +01:00
Gintas Grigelionis 6c93cba313 Trim whitespace 2018-03-14 00:56:55 +01:00
Gintas Grigelionis f7b3cb92f9 Fix formatting 2018-03-14 00:51:30 +01:00
Gintas Grigelionis 13a8d2fee9 Fix a missing link 2018-03-14 00:46:33 +01:00
Gintas Grigelionis 8736a161fb More navigation fixes 2018-03-13 23:31:21 +01:00
Gintas Grigelionis d7ddccdc6c Fix asciidoc navigation on GitHub 2018-03-13 22:49:17 +01:00
Gintas Grigelionis 44d800e1cc Spelling check… 2018-03-13 21:11:22 +01:00
Gintas Grigelionis e536c35a9a Refine asciidoc styling 2018-03-13 11:12:21 +01:00
Gintas Grigelionis a11454b5f2 Complete asciidoc conversion 2018-03-13 10:57:06 +01:00
Gintas Grigelionis 4450542a0b Salvage documents outside of xooki2asciidoc migration scope 2018-03-13 10:48:30 +01:00
Jaikiran Pai 2d109dece8 Point to the asciidoc for release instructions 2018-03-07 16:22:10 +05:30
Jaikiran Pai 0c769150cc We now use asciidoc for documentation 2018-03-07 15:52:25 +05:30
Gintas Grigelionis 1dc8749f6e No more MD5 2018-03-06 18:33:54 +01:00
Jan Matrne 8ed4a9bea7 Add "link" to release notes so we could find it better. 2018-03-06 11:35:16 +01:00
Gintas Grigelionis afd3f11cd1 Ditto for some tests 2018-03-04 12:35:19 +01:00
Gintas Grigelionis b0ded8594f More tabs and trailing spaces… 2018-03-03 12:08:23 +01:00
Gintas Grigelionis 08e1d1cca8 Checkstyle: trim trailing whitespace, replace tabs 2018-03-03 11:30:06 +01:00
Jaikiran Pai 075134d7d0 IVY-1576 make the test a bit more robust to make sure the artifact content is the right one for the dependency 2018-03-02 18:01:49 +05:30
Jaikiran Pai 9e88105637 IVY-1576 Update release notes 2018-03-02 17:22:22 +05:30
Jaikiran Pai 3b17df0ab6 IVY-1576 Fix parsing of (maven) dependency with multiple classifiers 2018-03-02 16:58:36 +05:30
Jaikiran Pai 313d28f676 Minor updates to the release instructions to reflect the correct branch to use for the release 2018-02-28 15:22:46 +05:30
Jaikiran Pai c656549296 This isn't needed, since the release process is already documented in asciidoc/dev/makerelease.adoc 2018-02-28 15:17:46 +05:30
Jaikiran Pai 1a19f2f836 initial WIP version of release instructions to follow for releasing Ivy 2018-02-27 18:28:16 +05:30
Jaikiran Pai 86eacb6b57 Support parsing multiple ranges for Maven versions 2018-02-26 16:35:42 +05:30
Jaikiran Pai 0466237558 IVY-1577 - Add support for Maven profile activations by OS, file and JDK and also parse any properties configured within such activated profiles, so that they can then be referenced in the pom 2018-02-26 15:56:52 +05:30
Maarten Coene 4aea43a178 Added getter for the ResolveOptions. 2018-02-23 11:10:17 +01:00
Maarten Coene 600215bddc FIX: The method hasIvyListener in org.apache.ivy.core.event.EventManager always returned false 2018-02-23 11:07:31 +01:00
Brett Randall 537e13241a IVY-1545: Added tracking for a cycle in parent-POM ancestry, throw a CircularDependencyException if found.
Added tests for cycles in parent ancestry and references-self as parent.

This closes #66 pull request at github/apache/ant-ivy repo
2018-02-09 09:17:56 +05:30
Jaikiran Pai 55e6b039ac Upgrade to 1.9.10 of Ant 2018-02-08 18:45:34 +05:30
Jaikiran Pai 783276d948 IVY-735 Missed out changes in previous commit 2018-02-08 11:47:36 +05:30
Jaikiran Pai ae27582d1b IVY-735 Don't force existing implementations of URLHandler to understand timeout constraints feature which was recently introduced 2018-02-08 10:44:49 +05:30
Jaikiran Pai 82ad5b0416 IVY-1575 Fix javadoc on URLHandlerDispatcher 2018-02-07 08:27:39 +05:30
Gintas Grigelionis 9003b5b5aa Use java.specification.version rather than java.version 2018-02-05 13:25:54 +01:00
Gintas Grigelionis 994fff7f62 Bump up version of Checkstyle (use the latest of 7 series) 2018-02-03 07:11:57 +01:00
Gintas Grigelionis c470b75897 Avoid “empty XML tag” warnings 2018-02-03 07:08:08 +01:00
Gintas Grigelionis f01d7a5b45 Sort contributors by surname, remove duplicate 2018-02-03 07:00:25 +01:00
Gintas Grigelionis 6f89144e4b Update release notes 2018-02-02 23:50:29 +01:00
Gintas Grigelionis 7ebc8107a2 IVY-1569 Avoid reflection warnings (or worse) in Java 9+ 2018-02-02 19:18:57 +01:00
Gintas Grigelionis 1d3567f305 IVY-1282 Add missing trim() 2018-02-02 19:08:53 +01:00
Gintas Grigelionis 68e0a9c714 IVY-1573 do not skip versions with URL encoded characters 2018-01-30 15:06:58 +01:00
Jaikiran Pai 18b4d24029 Consider .pom files as binary, so that line endings aren't converted, during checkouts resulting in checksum failures 2018-01-16 13:28:29 +05:30
Gintas Grigelionis 156706e42e refactor tagsdoc generator 2018-01-12 17:02:45 +01:00
Gintas Grigelionis 2ff8e51881 document the new option 2018-01-11 21:34:51 +01:00
Gintas Grigelionis c6c1971ca1 resolve current ivy.xml from CLI
(by specifying “-properties version.properties”)
2018-01-11 20:40:37 +01:00
Gintas Grigelionis a2fcc3b5c3 Happy New Year 2018-01-10 10:58:33 +01:00
Gintas Grigelionis 4b5ef21ed6 tidy up code more 2018-01-08 23:15:17 +01:00
Gintas Grigelionis 12aeeec70f tidy up the code 2017-12-08 07:52:37 +01:00
Gintas Grigelionis 1b84f2ee7a another fail() that should be an expected exception;
import assertions statically, too
2017-12-07 12:25:55 +01:00
Gintas Grigelionis e43138b0b5 rediscovered a couple of tests :-) 2017-12-05 16:57:17 +01:00
Gintas Grigelionis 47061a88ce tidy up the code 2017-12-05 16:44:53 +01:00
Gintas Grigelionis da461de2db use switch rather than a chain of if’s 2017-12-05 16:38:51 +01:00
Gintas Grigelionis 14bdf34a9b tersify logic ;-> 2017-12-05 12:36:37 +01:00
Gintas Grigelionis a123650842 simplify set construction 2017-12-05 12:24:50 +01:00
Gintas Grigelionis 2f4bf4db63 refactor tests with hardcoded Maven Central URL 2017-12-05 12:15:20 +01:00
Gintas Grigelionis d80acb29c0 showcase of parameterised tests with introspection :-)
(requires hamcrest-library where Matchers dwell)
2017-12-05 12:08:28 +01:00
Gintas Grigelionis 30c217ec40 do not fail, assert 2017-12-05 11:57:36 +01:00
Gintas Grigelionis 4a8068579e use expected exception and try-finally for post-mortem
(until JUnit 5 ;-)
2017-12-05 11:47:56 +01:00
Gintas Grigelionis 5d78961118 keep test parts as private as possible 2017-12-05 11:26:24 +01:00
Gintas Grigelionis 4e2846d5f4 chop extraneous throws, fix imports and javadoc 2017-12-05 11:12:21 +01:00
Gintas Grigelionis d86ae886e0 Do not use try-catch-fail to re-throw exceptions in tests 2017-12-05 10:17:36 +01:00
Gintas Grigelionis 579410e7f8 Revert previous change, see http://central.sonatype.org/pages/consumers.html 2017-11-14 07:18:06 +01:00
Gintas Grigelionis 709c7f71e5 New URL for Maven Central 2017-11-13 20:14:01 +01:00
Gintas Grigelionis 9a686e7388 IVY-511 coding conventions 2017-11-13 16:00:31 +01:00
Gintas Grigelionis 46c7cba7d0 Checkstyle, continued 2017-11-13 15:56:43 +01:00
Gintas Grigelionis 5c4da82785 Checkstyle 2017-11-12 21:44:56 +01:00
Gintas Grigelionis 1029078559 More uses of isNullOrEmpty/isEmpty 2017-11-11 10:36:31 +01:00
Gintas Grigelionis 4272bf28b2 Entry -> Map.Entry 2017-11-10 21:52:04 +01:00
Gintas Grigelionis 3ac2567bca StringBuffer -> StringBuilder 2017-11-10 21:46:47 +01:00
Gintas Grigelionis 896daf14e8 Check spelling 2017-11-10 19:04:13 +01:00
Gintas Grigelionis 0c0845e95c Refactor append() 2017-11-10 19:03:13 +01:00
Gintas Grigelionis 0600561026 FindBugs: deprecate static DateFormat 2017-11-10 19:02:19 +01:00
Gintas Grigelionis ca7f64f016 FindBugs: use native line breaks 2017-11-10 19:01:05 +01:00
Gintas Grigelionis 1f3dd9ff8a FindBugs: make currentLockHolders final 2017-11-10 19:00:17 +01:00
Gintas Grigelionis c947676916 FindBugs: iterate entry sets 2017-11-10 18:59:01 +01:00
Gintas Grigelionis f362940480 IVY-309 refactor all those split-trim-join and unwrap some logic 2017-11-10 18:39:27 +01:00
Gintas Grigelionis cc6ace1890 Revert previous change 2017-11-02 08:18:52 +01:00
Gintas Grigelionis bac6475434 No need to synchronise a concurrent map 2017-11-01 22:19:31 +01:00
Gintas Grigelionis fa21d6f7e7 Check spelling 2017-11-01 22:18:36 +01:00
Gintas Grigelionis e292769f29 Checkstyle: modifiers in interfaces 2017-10-31 21:52:58 +01:00
Gintas Grigelionis ada0a22acf More stringent cleanup of non-ASCII 2017-10-30 23:26:45 +01:00
Gintas Grigelionis ce3596e642 Improvements to/adjustments for tagsdoc 2017-10-30 22:43:56 +01:00
Gintas Grigelionis dbea06feba Add dependency 2017-10-30 21:10:05 +01:00
Gintas Grigelionis 2f3e3d849c Salvaged tagsdoc target from ivy-site 2017-10-30 20:20:28 +01:00
Gintas Grigelionis 8766623295 More adjustments to Eclipse classpath (whitespace, version.properties) 2017-10-25 22:54:24 +02:00
Gintas Grigelionis b76113fbc5 Adjust Eclipse classpath 2017-10-23 06:35:06 +02:00
Gintas Grigelionis 08de1083f0 Correct imports, add automatic module name for JPMS 2017-10-22 23:52:49 +02:00
Gintas Grigelionis 2074889ec4 IVY-1420 document current implementation 2017-10-21 18:53:20 +02:00
Gintas Grigelionis 6b610aa411 IVY-1420, take two: defaultconf is a mapping, too;
add test cases for related issues IVY-1315 and IVY-1419
2017-10-08 22:29:54 +02:00
Gintas Grigelionis 8054f746bb Changed contents of repo.jfrog.org broke a test;
correct obsolete URL to Ivy file schema
2017-10-05 19:53:53 +02:00
Gintas Grigelionis ade1bb4843 IVY-1420 attributes on configurations/dependencies not inherited by extend/include 2017-09-27 06:49:16 +02:00
Jaikiran Pai 24e1d71446 Update the release notes to mention that Ivy now uses 1.58 of bouncycastle 2017-09-27 09:57:51 +05:30
Jan Matrne a00e85f93c externalize versions (ivy.xml-->versions.properties) 2017-09-25 11:43:40 +02:00
Jan Matrne 889ed9e413 update BouncyCastle 2017-09-25 10:27:45 +02:00
Gintas Grigelionis b126634a28 Documentation revision: refreshing/fixing links 2017-09-17 10:26:18 +02:00
Gintas Grigelionis d2e4494b47 Upgrade to Apache Commons VFS version 2
(and watch VFS-360)
2017-09-16 20:56:56 +02:00
Gintas Grigelionis 45046b5fde Documentation review: uniform style of “since”
(inline) and [block]; working links for derelict projects
2017-09-14 23:03:44 +02:00
Jaikiran Pai fc8ef4d22c Make HttpClientHandler public again to prevent backward compatible problems for upcoming release (see https://issues.apache.org/jira/browse/CAMEL-11727) 2017-09-14 10:56:44 +05:30
Jaikiran Pai ab8b608744 IVY-1476 Better support for Maven timestamped snapshot dependencies in Ivy 2017-09-11 19:35:34 +05:30
Gintas Grigelionis 59220b485c Documentation review, second reading 2017-09-08 15:54:02 +02:00
Gintas Grigelionis b693aa0a24 Documentation review (partly inspired by IVY-1089) 2017-09-06 05:15:52 +02:00
Gintas Grigelionis 9e1b0896cf remove extraneous imports 2017-09-03 12:14:44 +02:00
twogee cc7509b757 follow up on deprecations
This closes #53 PR at github/apache/ant-ivy
2017-08-31 18:11:31 +05:30
twogee 08fc7320de refactoring and suppressed warnings fixes 2017-08-31 18:09:18 +05:30
Jaikiran Pai 37f70ab67f IVY-1546 Maven 1 repo is no longer available. Remove the tests, which anyway weren't running 2017-08-31 17:20:24 +05:30
Aurélien Pupier 0cdcb1fd8d IVY-1566 - Store External form of URL in cached files
This closes #59 pull request at github/apache/ant-ivy repo
2017-08-28 17:17:22 +05:30
Gintas Grigelionis b691f81b48 refactor and fix test 2017-08-25 19:26:46 +02:00
Gintas Grigelionis 90c42ec03e use collections instead of arrays; optimise their use 2017-08-24 13:02:31 +02:00
Gintas Grigelionis 14313cffeb use static import rather than import of nested class 2017-08-24 10:46:24 +02:00
Gintas Grigelionis cf15c51722 refactor iterators 2017-08-23 14:32:49 +02:00
Gintas Grigelionis 9c14146a98 more asList() refactoring and code cleanup 2017-08-21 23:44:30 +02:00
Gintas Grigelionis fe85e77f2d revert erroneous removal of pathelement, document it 2017-08-19 23:19:54 +02:00
Gintas Grigelionis 3c047a1e70 refactor asList() in test cases 2017-08-19 17:05:36 +02:00
Gintas Grigelionis 463a2c89c3 add a target to generate javadoc for test cases; fix javadoc for doclint 2017-08-19 06:56:56 +02:00
Gintas Grigelionis 186fd10776 inline variables; adjust exceptions, annotations, and formatting 2017-08-17 14:10:42 +02:00
Maarten Coene a9dd1573eb Revert 'Optimize imports' done by IntelliJ 2017-08-07 13:11:34 +02:00
Maarten Coene f4237388ea Fix stackoverflow 2017-08-07 13:03:58 +02:00
Jaikiran Pai 9b2165894e IVY-804 "cache" resolver as a typedef hasn't been functional, remove the duplicate property in the typedef.properties 2017-08-05 21:13:56 +05:30
Jaikiran Pai df5930892d IVY-1447 Add "overwriteMode" option to Ivy command line for retrieve task 2017-07-28 18:56:32 +05:30
twogee 66da0319a0 use “Maven 2” consistently
This closes #56 PR at github/apache/ant-ivy
2017-07-28 08:41:42 +05:30
Jaikiran Pai f0e8d41fc8 IVY-735 Fix accidental recursion calls 2017-07-28 08:39:36 +05:30
twogee 1a283ab1be refactor System.getProperty() and loops 2017-07-27 21:10:47 +05:30
Jaikiran Pai 366fb741f0 Use Java standard API for symlink handling and deprecate symlinkinmass option on retrieve task 2017-07-27 19:31:57 +05:30
twogee 080e96a6cd follow through on deprecation 2017-07-26 20:29:42 +05:30
Jaikiran Pai 84ad767a87 IVY-1498 Make the newly added test method robust by setting overwrite=always as a retrieve option 2017-07-26 19:31:51 +05:30
Jaikiran Pai fff6d0f2fc Add IVY-1498 fix to release notes 2017-07-26 18:39:39 +05:30
Jaikiran Pai 40708bdf04 IVY-1498 Fix potential Ivy cache corruption during retrieve task when symlink options come into play 2017-07-26 18:26:51 +05:30
Jaikiran Pai 87c4e0656a [doc fixes] Updates to the tutorials asciidoc documentation 2017-07-25 16:30:56 +05:30
twogee d4c3cbccaf Code cleanup/refactoring - checkstyle + not using deprecated methods + fix unchecked casts 2017-07-25 14:43:00 +05:30
Jaikiran Pai 497147e3e6 IVY-1355 Update the help text of Ivy command line for the "types" argument 2017-07-25 12:18:15 +05:30
Jaikiran Pai 41fefde644 IVY-1336 Use our own implementation of AuthFilter in the test case 2017-07-25 11:28:01 +05:30
Jaikiran Pai dd7a34143c Update release notes for IVY-1336 2017-07-25 11:13:14 +05:30
Jaikiran Pai c0ccd54005 IVY-1336 Add a testcase to make sure that the HTTP handler (backed by the httpclient library) doesn't end in a loop while dealing with 401 errors from the server 2017-07-25 11:07:06 +05:30
Jaikiran Pai 41a936d13a Remove the accidental renamed copy of a test class which is now causing case sensitive file name issues in git 2017-07-24 19:24:25 +05:30
Jaikiran Pai 5904f79294 IVY-1563 Remove TODO which is no longer applicable given how proxy settings are dealt by the ProxySelector that's configured on the HttpClient 2017-07-24 18:52:30 +05:30
Jaikiran Pai a3440606a6 Update release notes 2017-07-24 18:46:47 +05:30
Jaikiran Pai cdc548b80e IVY-1563 Move to 4.x version of HttpComponents HttpClient library 2017-07-24 18:15:53 +05:30
Jaikiran Pai 6607bdcb3b IVY-735 Support timeouts on resolvers
This closes #54 pull request at github/apache/ant-ivy
2017-07-24 11:07:38 +05:30
twogee 6920717979 Add generics and Java 7 syntax to core
This closes #52 pull request at github/apache/ant-ivy
2017-07-17 11:07:59 +05:30
Nicolas Lalevée 844100aed6 fix the build of the asciidoc extension by using a wider Ivy configuration 2017-07-12 23:26:08 +02:00
Nicolas Lalevée 6f22f4b49c An asciidoctor macro to create links to Jira 2017-07-12 22:54:25 +02:00
Maarten Coene 1a36ae09d2 Merge remote-tracking branch 'origin/master' 2017-07-12 10:05:54 +02:00
Maarten Coene 585a702138 FIX: Local conflict manager didn't handle deeper conflicts in transitive dependencies (IVY-1404) 2017-07-12 10:05:15 +02:00
Jaikiran Pai dcaacf4cae IVY-1562 Add a test case to verify the parsing of the location attribute when the value contains an absolute path 2017-07-12 12:14:56 +05:30
Trung Do d0f7f364ff Fix some string comparisons with ==
Also fix ModuleDescriptorMemoryCacheTest to have it use a settings variable, while resolving a module descriptor in cache, before changing that variable

This closes #51 PR at github/apache/ant-ivy
2017-07-10 11:07:02 +05:30
Nicolas Lalevée 0ce17f931e Use a copyright range 2017-07-06 13:59:24 +02:00
Nicolas Lalevée a12daf3088 Generate automatically the copyright year in the doc 2017-07-05 22:13:46 +02:00
Nicolas Lalevée fc6305aa96 Jaikiran is now a committer 2017-07-05 22:02:13 +02:00
Nicolas Lalevée eeb79e1003 avoid generating the reports in the folder where the html of the documentation is generated 2017-07-04 23:17:40 +02:00
Nicolas Lalevée cd8f81d0a0 review the doc about the "Introduction" and the part for the dev 2017-07-04 22:53:03 +02:00
Jaikiran Pai c871265452 Revert 4b6e0bd179 since it introduces failures on Windows (needs investigation)
This reverts commit 4b6e0bd179.
2017-07-03 15:13:18 +05:30
Jaikiran Pai 4b6e0bd179 IVY-1562 Fix potential double encoding of "location" value of "extends" element in the ivy descriptor 2017-07-03 14:53:03 +05:30
Nicolas Lalevée c4828bfd09 properly release the file descriptors and avoid duplicate code 2017-07-02 19:23:21 +02:00
Nicolas Lalevée ff49f0dd3b This closes #50 2017-07-02 16:56:04 +02:00
twogee 87cd5df6f3 Sort entries in .gitignore; adjust indentation in build.xml 2017-07-02 12:35:44 +02:00
twogee b02336b76a Check spelling; fix whitespace and links; sort entries in .gitignore 2017-07-02 08:05:37 +02:00
Nicolas Lalevée fcf4109d82 fix the OSGi Java 7 requirement 2017-07-01 19:59:01 +02:00
twogee d9665bfc18 Generics and Java 7 syntax in plugins package
This closes github.com/apache/ant-ivy PR #48
2017-07-01 20:15:29 +05:30
twogee 0c0ee35518 Generics and Java 7 syntax in osgi package 2017-07-01 20:14:59 +05:30
Nicolas Lalevée 7e764a320c Make the generation the book.html file, the doc in one page 2017-06-30 23:29:29 +02:00
Nicolas Lalevée e45dd5dc6f cleanup the css files and remove the uncessary ones 2017-06-30 23:28:06 +02:00
Nicolas Lalevée 2a87519caf use highlightjs to render shell output 2017-06-30 18:48:34 +02:00
Nicolas Lalevée 0851fa7761 review the ivy file part of the doc about the use of code formatting 2017-06-30 17:53:14 +02:00
Nicolas Lalevée 5bc940ca65 use highlightjs to put colors on the xml snipsets 2017-06-30 16:39:39 +02:00
Nicolas Lalevée 25a67d80c6 Review and cleanup of the "Ant tasks" part of the documentation 2017-06-30 16:14:45 +02:00
Nicolas Lalevée cda1bd37c3 fix aphabetic order in the toc 2017-06-30 14:16:44 +02:00
Jaikiran Pai 00d63febbf [doc changes] Updates to "using standalone" section 2017-06-30 16:16:18 +05:30
Jaikiran Pai fcc9037752 [doc changes] Fix the documentation of the "OSGi" section 2017-06-30 15:58:50 +05:30
Jaikiran Pai 2c435e5de0 [doc changes] fix the rendering of the settings file structure, on Ivy settings doc page 2017-06-29 18:26:43 +05:30
twogee 9235380f05 Generics + foreach loops and Java 7 syntax in ant and tools packages 2017-06-29 11:58:45 +05:30
Jaikiran Pai 041e9565ab IVY-1522 Don't randomly strip off the path's starting character 2017-06-26 21:19:57 +05:30
Nicolas Lalevée 5d22644c74 better link for the Apache Licence 2017-06-26 10:57:15 +02:00
Nicolas Lalevée 27c6f9a315 fix the path to the Ant logo, and use the SVG version 2017-06-25 18:26:46 +02:00
Nicolas Lalevée c1c99616f3 display the version of the doc in the toc 2017-06-25 17:32:20 +02:00
Nicolas Lalevée 80d9b0c380 add license header to asciidoc files 2017-06-25 13:24:41 +02:00
Nicolas Lalevée b1ec369a21 use http url, since the ssl handshake fails 2017-06-25 13:06:54 +02:00
Nicolas Lalevée 79bcc8c3ad improve the style of the toc: no pointer for entries without link 2017-06-25 01:08:37 +02:00
Nicolas Lalevée 409854d8fd fix the generation of the toc entries without content 2017-06-25 01:05:47 +02:00
Nicolas Lalevée 7428f5fd1e fix the asciidoc files for the "Ivy File" section 2017-06-25 00:59:46 +02:00
Nicolas Lalevée bddf82b14e doc: improve style of lists 2017-06-25 00:58:55 +02:00
Nicolas Lalevée 97c24fdd02 set copyright to 2017 2017-06-25 00:58:27 +02:00
Jaikiran Pai 0009c7bfa9 [doc changes] Use svg image in the OSGi doc 2017-06-20 15:27:54 +05:30
Jaikiran Pai e35f06c0aa [doc changes] Fix the "Reference -> Settings File" section and children docs 2017-06-20 14:27:43 +05:30
Jaikiran Pai 39431e2026 Apply "shell" role to the source listing blocks which represent the tutorial logs 2017-06-20 10:47:15 +05:30
Nicolas Lalevée fe93e829ec doc: improve styling of notes 2017-06-19 23:37:47 +02:00
Nicolas Lalevée 341ea670ba fix remaining &lt; and &gt; coming from not translated xooki markup 2017-06-19 23:37:26 +02:00
Jaikiran Pai 77f7a62702 [doc changes] fix links in docs 2017-06-19 13:46:08 +05:30
Jaikiran Pai bbc66785aa [doc changes] fix image corruption of docs + fix title of generated HTML docs 2017-06-19 11:50:27 +05:30
Jaikiran Pai eaf7ba6d1e [doc changes] - Fix source blocks 2017-06-19 08:23:06 +05:30
Jaikiran Pai 7ac1170c80 Merge PR-47.
This closes #47
2017-06-19 07:14:27 +05:30
Jaikiran Pai aed63ae84f IVY-1557 Pass along the requesting URL and type to the underlying authenticator, when IvyAuthenticator can't handle the authentication request 2017-06-18 19:38:15 +05:30
twogee 1c23268d77 Generics + foreach loops and Java 7 in util (except Filter) 2017-06-18 19:16:05 +05:30
Jaikiran Pai feb3c17f1c Fix the build of tutorials 2017-06-18 10:01:42 +05:30
Jaikiran Pai 96dc851eac release notes for IVY-1475 2017-06-17 17:34:43 +05:30
Jaikiran Pai c50f4b4cb1 Don't commit tutorial logs generated during build 2017-06-16 09:57:07 +05:30
Jaikiran Pai 88d2e93800 Fix incorrect "lists" in documentation 2017-06-16 09:57:07 +05:30
Jaikiran Pai c73d10e072 Fix heading levels to take care of the asciidoc warnings 2017-06-16 09:57:06 +05:30
Jaikiran Pai 22bdffb96d Initial auto-converted .adoc files from xooki2asciidoc convertor 2017-06-16 09:57:06 +05:30
Jaikiran Pai 32296ea391 Merge latest master changes 2017-06-15 13:10:12 +05:30
Jan Matrne 225afb8bad diamont operator 2017-06-14 11:06:18 +02:00
Jan Matrne c7d4b539bd Merge branch 'PR-43' 2017-06-14 10:53:58 +02:00
twogee 3b28fffbba More Java 7 diamonds 2017-06-13 22:07:19 +02:00
twogee 973704dc1c More Java 7 syntax in tests and other optimisations 2017-06-13 21:55:52 +02:00
twogee 3cf36b8cac Java 7 diamonds in tests 2017-06-13 21:23:23 +02:00
twogee d7651dce40 Untabify 2017-06-13 19:49:25 +02:00
twogee fb3ccf60e9 Complete generification of examples; update example dependencies; use Java 7 syntax in test; fix regression in ModuleIdTest 2017-06-13 19:35:37 +02:00
Jan Matrne 545536e34f - rename some derived variables according to their sources
- javadoc improvement
- more tests
2017-06-13 15:11:01 +02:00
Jaikiran Pai 7f293a06a0 IVY-1475 Throw an error if a common base directory cannot be determined for cachefileset task 2017-06-13 15:17:51 +05:30
Jaikiran Pai c07d659cf8 IVY-1561 Take into account environment variable and system properties while evaluating property references in Maven pom.xml 2017-06-13 11:03:14 +05:30
twogee 314dfa80d4 More generics… 2017-06-11 04:38:47 +02:00
twogee 8f35a1d28e More foreach loops 2017-06-11 00:26:54 +02:00
twogee 8b9f2d5177 Generics and other fixes in tests and tutorials 2017-06-10 21:47:21 +02:00
twogee 4c6450f458 Upgrade Checkstyle to 7.8.1 2017-06-05 23:18:12 +02:00
twogee a9880a18fe Remove main() in tests, optimise target dependencies in build.xml and address diverse Checkstyle warnings 2017-06-05 23:05:35 +02:00
twogee 7d4528639c Adjust Eclipse settings for Java 7 2017-06-05 22:37:39 +02:00
twogee a2fdfe6737 Whitespace cleanup 2017-06-05 22:37:14 +02:00
twogee 147fe0eb27 Merge GitHub master 2017-06-03 18:21:52 +02:00
twogee 4c9a31c79f Correct file permissions 2017-06-03 18:21:06 +02:00
Jan Matrne a267723e62 remove my test target (accidently commited) 2017-06-03 18:15:24 +02:00
Jan Matrne 59a7dfa3d6 Merge branch 'PR-41' 2017-06-03 18:14:19 +02:00
Jan Matrne 7dc1b93654 svg: remove generator comments, format xml code 2017-06-03 18:13:46 +02:00
twogee ee08c00b4d Merge GitHub master 2017-06-03 17:25:02 +02:00
twogee 4a361b89d9 Correct file permissions 2017-06-03 17:17:21 +02:00
twogee 5e590e57dc Inline warning icon 2017-06-03 17:09:12 +02:00
twogee cc35c2b114 first batch of SVG replacements 2017-06-03 17:09:12 +02:00
twogee ef719acab9 Checkstyle-driven cleanup (whitespace, javadoc, JLS) 2017-06-03 11:47:51 +02:00
twogee 57ee0f2d15 Inline warning icon 2017-06-03 09:58:10 +02:00
Jaikiran Pai 95a524ea06 Fix regression in tutorials 2017-06-03 07:34:44 +05:30
twogee 838aa1bd37 first batch of SVG replacements 2017-06-02 18:27:23 +02:00
Jan Matrne 990eb75005 multiple runs of 'generation-bundle' without knowing what is done is annoying ... 2017-06-02 14:28:35 +02:00
Jan Matrne bf23be1285 delete jacoco.data before run so later report generation will work 2017-06-02 14:26:56 +02:00
twogee f8962c6aa4 Replace emma with jacoco; upgrade checkstyle and sync its config with Apache Ant; run all documentation targets 2017-06-01 18:14:53 +02:00
Nicolas Lalevée 1493fda3dd This closes #37 2017-06-01 14:18:09 +02:00
Nicolas Lalevée 4d1551a5d6 release notes for IVY-1540 2017-06-01 14:11:14 +02:00
Nicolas Lalevée fdeb6b8621 This closes #27 2017-06-01 14:09:44 +02:00
Nicolas Lalevée 0dbae4197d release notes for IVY-1528 2017-06-01 13:52:29 +02:00
Nicolas Lalevée b6284ae1d6 Add in the release notes that Ivy is now requiring Java 7 2017-06-01 13:41:13 +02:00
Nicolas Lalevée 7304fb9c4d release notes for IVY-1555 2017-06-01 13:37:50 +02:00
Nicolas Lalevée 5f6ebd69ba This closes #24 2017-06-01 13:35:51 +02:00
Nicolas Lalevée 368f1da7f9 release notes for IVY-1495 2017-06-01 13:11:23 +02:00
Nicolas Lalevée f2a899979a This closes #21 2017-06-01 13:07:42 +02:00
Jaikiran Pai cb91a10627 Don't pollute the source lib folder during ivy retrieval in test 2017-05-31 13:13:28 +05:30
Jaikiran Pai 3d30c8ca71 IVY-1495 Delay the processing of configured cache ttls, until the IvySettings object is usable 2017-05-30 09:50:03 +05:30
Jaikiran Pai 2f757454dc IVY-1540 Fix infinite loop in dependencytree, caused to due circular dependencies (coming in via Maven module descriptors) 2017-05-30 09:48:48 +05:30
Jaikiran Pai efa756288e IVY-1555 Don't error out if an "optional" file included in ivy settings xml isn't available 2017-05-30 09:46:46 +05:30
Jaikiran Pai 1f0c99d0e0 IVY-1528 Don't ignore the "classifier" when creating pom module descriptor from ivy module descriptor, in makepom task 2017-05-30 09:43:45 +05:30
Jan Matrne 5601c44f6e Merge branch 'PR-35' 2017-05-29 14:56:52 +02:00
Jaikiran Pai d8de43a6a3 Emma code coverage bytecode manipulation leads to errors in "Strict mode" Java 7. Make it lenient for now. 2017-05-29 17:59:12 +05:30
Jan Matrne 6e906cc8ea s/iff/if and only if/ 2017-05-29 14:24:59 +02:00
Jaikiran Pai 04d7c6991d Use Java 7 as the minimum required Java version 2017-05-29 16:59:42 +05:30
Jan Matrne 24b5e00be7 extract method 2017-05-29 13:17:19 +02:00
Jan Matrne 007939d9fe BC-Bridge: supply 'old' classes/fields/methods for BC reason while correcting spelling 2017-05-29 12:28:28 +02:00
twogee 096c5bd0c1 More loose bits… 2017-05-29 00:01:34 +02:00
twogee 4498bdaf5b Do not download findbugs every time 2017-05-28 15:50:19 +02:00
twogee af06da94f9 Get findbugs working 2017-05-28 15:04:33 +02:00
twogee 3cfc7bfe70 Merge branch 'master' into master 2017-05-28 14:14:25 +02:00
twogee baf03a919c Make Java 8 doclint happy; adjust javadoc Ant target; remove connection to svn from build.xml 2017-05-28 11:40:55 +02:00
twogee 6c92f32eda More code cleanup 2017-05-27 19:37:44 +02:00
Nicolas Lalevée 90274e109c This closes #32 2017-05-26 18:42:26 +02:00
Nicolas Lalevée c2abba8f1a Gintautas Grigelionis aka twogee contributed the migration to Junit 4 2017-05-26 17:23:31 +02:00
twogee fbbf092e49 A few loose bits in JUnit 4 migration 2017-05-26 14:00:16 +02:00
Nicolas Lalevée a7a3489100 release notes for IVY-1522
This closes #20
2017-05-26 12:30:36 +02:00
Jaikiran Pai 9ea5c69bda IVY-1522 Fix FileUtil.normalize to not base its normalization logic on ":" character 2017-05-26 13:25:01 +05:30
twogee 36e99429c2 fail() means an expected exception or an assertion 2017-05-26 08:17:10 +02:00
twogee b8eef03783 Merge branch 'master' into master 2017-05-25 17:30:24 +02:00
twogee 1543f52896 Convert tests to JUnit 4, clean up code 2017-05-25 17:25:59 +02:00
Nicolas Lalevée 5d6131a301 Merge branch 'master' into xooki2asciidoc 2017-05-25 15:04:39 +02:00
Nicolas Lalevée 1760b262c2 - update asciidoctor
- improve transforming xooki source into asciidoc source
2017-05-25 14:55:24 +02:00
Jaikiran Pai da69323b29 Fix transient test failures - Don't share/update the MockMessageLogger between test methods 2017-05-24 22:10:14 +05:30
Nicolas Lalevée 239bc0b04a merged so closes apache/ant-ivy#4 2017-05-21 20:01:07 +02:00
Nicolas Lalevée e124901cbd document and fix the release notes for IVY-1529
This closes #6
2017-05-21 19:59:24 +02:00
Nicolas Lalevée d5281ad38a merged so closes apache/ant-ivy#2 2017-05-21 19:45:22 +02:00
Nicolas Lalevée b897b42f9d merged so closes apache/ant-ivy#3 2017-05-21 19:41:41 +02:00
Nicolas Lalevée 0a645384fd merged so closes apache/ant-ivy#5 2017-05-21 19:40:28 +02:00
Nicolas Lalevée 7a4bad0561 This closes #23 2017-05-21 19:34:52 +02:00
Nicolas Lalevée 7fc5eee60b releases notes for IVY-1554 2017-05-21 19:30:19 +02:00
Nicolas Lalevée c3c4df6245 This closes #19 2017-05-21 19:28:41 +02:00
Nicolas Lalevée ad638fdf9f This closes #25 2017-05-21 19:22:50 +02:00
Nicolas Lalevée 815349cff2 document the xml element order, as specified by the ivy.xsd 2017-05-21 19:09:42 +02:00
Jaikiran Pai 4cd96fd67c Upgrade to latest Ant release (non-Java 8 one) 2017-05-21 19:17:15 +05:30
Jaikiran Pai f31c00d8e7 Upgrade to latest JSCH versions 2017-05-21 16:07:03 +05:30
Jaikiran Pai c1ad21bf96 Use the specified timeout for connections in BasicURLHandler 2017-05-21 10:59:58 +05:30
Nicolas Lalevée 658a8d80ba release notes for IVY-1448 2017-05-18 21:07:06 +02:00
Nicolas Lalevée 0c0d92d84b This closes #18 2017-05-18 21:02:47 +02:00
Nicolas Lalevée 4ab65afd90 release note for IVY-1478
This closes #17
2017-05-18 17:21:19 +02:00
Jaikiran Pai d8c3ef1363 IVY-1554 Add support for SHA-256 SHA-512 and SHA-384 checksum algorithms if the underlying Java runtime supports it 2017-05-18 16:09:06 +05:30
Jaikiran Pai b308d598b6 IVY-1448 Use the descriptor URL to construct an URI, in OSGiManifestParser, instead of using the descriptor resource's name 2017-05-18 12:57:01 +05:30
Jaikiran Pai 850a888c54 IVY-1478 Fix RetrieveEngine to take into account the correct extension while dealing with unpacked artifacts 2017-05-18 11:25:24 +05:30
Nicolas Lalevée 7a8d27f5b8 This closes #16 2017-05-17 20:23:56 +02:00
Jaikiran Pai 6390a33f40 Fix download URL for findbugs task 2017-05-17 21:09:31 +05:30
Nicolas Lalevée 10e19b91f2 add release notes for IVY-1520 2017-05-17 15:32:50 +02:00
Nicolas Lalevée a3a401027a 2016 -> 2017 2017-05-16 22:27:16 +02:00
Nicolas Lalevée 2681600eca release notes for IVY-1531 2017-05-16 22:27:05 +02:00
Nicolas Lalevée 6b5b674cdc IVY-1531: Translation of POM to Ivy XML with * exclusion is removing main artifact
This closes #10
2017-05-16 22:26:29 +02:00
Jan Matrne 6973dcbfce add past releases (according to announcement mails) 2017-05-16 21:44:12 +02:00
Jan Matrne 9edca73048 consistent indent (4-spaces) 2017-05-16 21:43:41 +02:00
Matt Benson f637753364 small cleanups 2017-04-21 09:15:34 -05:00
Matt Benson 8ff6e5a90f [IVY-1558] support dependencies in active profiles 2017-04-21 09:15:07 -05:00
Matt Benson 539e1ee1d6 address failing tests 2017-04-19 14:45:08 -05:00
Maarten Coene c4bb60046d Throw an IllegalStateException when retrieving the resolutionCacheRoot on the DefaultResolutionCacheManager if the basedir (or IvySettings) is not set (IVY-1482) 2016-12-13 00:48:36 +01:00
Jaikiran Pai d19212c03e IVY-1531 Fix translation of * for groupid and artifactid, in pom.xml exclusion, for implying transitive=false in ivy 2016-12-07 22:50:33 +05:30
Maarten Coene 9967600bdf Reverted import optimization by IntelliJ 2016-12-01 00:17:09 +01:00
Maarten Coene ac266c0e40 Made the maven 'test' configuration public so we can use the test-jar as dependency (IVY-1444) 2016-12-01 00:13:23 +01:00
Maarten Coene 7217b9d270 Fix NullPointerException in dependencytree with no dependencies (IVY-1539) 2016-11-09 01:48:48 +01:00
Maarten Coene f463013f34 Revert optimize imports by IntelliJ 2016-11-09 01:03:22 +01:00
Maarten Coene 72a59d1d70 escape special characters 2016-11-09 01:00:45 +01:00
Maarten Coene 7b7b37726f FIX: checkIfChanged is not settable attribute for checkdepsupdate ant task (IVY-1549) 2016-11-09 00:56:36 +01:00
Maarten Coene 47283254c2 We are 2016 now ... 2016-11-09 00:34:45 +01:00
Nicolas Lalevée 09b1a632c1 Seems there is one last Maven 1 repo available 2015-09-07 01:28:55 +02:00
Nicolas Lalevée 8cba88fa1a revert part of the patch for IVY-1141, some unit tests are expecting the reverse 2015-09-06 20:21:21 +02:00
Nicolas Lalevée 2d7c6f5ff4 setup proper loggers in unit tests and factorize the creation and the cleaning of the cache folder 2015-09-06 20:01:25 +02:00
Nicolas Lalevée bb3ddfe426 IVY-1521: Update bouncycastle to 1.52
Thanks to Michal Srb
2015-09-06 17:50:14 +02:00
Nicolas Lalevée 12e1aaf5f6 IVY-1515 : useCacheOnly should allow lookup of changing dependencies in cache
Thanks to Ilya
2015-09-06 17:28:23 +02:00
Nicolas Lalevée 3fd058c02a java 5 typing 2015-09-06 17:11:11 +02:00
Nicolas Lalevée 8e0e1c32ff IVY-1141 : dependencies failed using branch attribute (and extra attributes)
Thanks to Stephen Haberman
2015-09-06 17:10:56 +02:00
Nicolas Lalevée 5240c88258 IVY-1430 : dynamic revisions are not cached per resolver
Thanks to Stephen Haberman
2015-09-06 14:14:58 +02:00
qxo 12d3f28181 IVY-1529
Add ivy.maven.sources.lookup and ivy.maven.javadoc.lookup variables to control the lookup of the additional artifacts. Defaults to true, for backward compatibility
2015-08-30 17:12:32 +02:00
Jaikiran Pai da7d5df6de IVY-1526 Use parent pom's license (if any) if the child pom doesn't explicitly have licenses of its own 2015-08-30 15:51:44 +02:00
Maarten Coene a5f67ad88d another attempt to fix failing test on windows 2015-06-02 00:33:32 +02:00
Maarten Coene cd4404bd9c attempt to fix failing test on windows 2015-06-01 23:57:33 +02:00
Maarten Coene 05a457b9a0 We can use Java5 methods now :) 2015-06-01 22:41:32 +02:00
Nicolas Lalevée 3d72f1db6a setup the build to use asciidoc files as the source of truth 2015-02-16 12:19:35 +01:00
Nicolas Lalevée 610c3be2cd improve the xooki2asciidoc convertor 2015-02-15 23:35:52 +01:00
Nicolas Lalevée 64b328d822 improve the xooki2asciidoc convertor 2015-02-15 16:20:14 +01:00
Nicolas Lalevée 2c03505da0 ant workspace resolver: handle properly when the cache contains the wrong resolver name 2015-02-08 14:51:48 +01:00
Nicolas Lalevée e1188f3680 ant workspace resolver: avoid a NPE on not found resolver 2015-02-08 14:45:05 +01:00
Nicolas Lalevée 82bd5be873 ant workspace resolver: fix fileset injection 2015-02-08 14:19:00 +01:00
Nicolas Lalevée dcde200010 fix the unit tests: the order doesn’t matter 2015-01-25 23:25:10 +01:00
Nicolas Lalevée f6322b7fb7 A workspace resolver for Ant.
The code is inspired from IvyDE’s one. Work in progress.
2015-01-25 22:32:28 +01:00
Nicolas Lalevée 83fcd3e1e2 Make fixdeps correctly handles transitive dependencies whose revision declaration have to be ‘kept’ 2015-01-22 22:50:59 +01:00
Nicolas Lalevée 77868bf772 In ivy:makepom, if no description, use the one in the source ivy.xml 2015-01-18 21:14:41 +01:00
Nicolas Lalevée 4746531428 Get into account the order of the defined mapping for ivy:makepom 2015-01-18 17:21:10 +01:00
Nicolas Lalevée 89a0de6a89 use Java 5 constructs 2015-01-18 17:19:20 +01:00
Nicolas Lalevée 05b14fd01e When fixing a module descriptor, copy all the useful info 2015-01-18 17:18:54 +01:00
Nicolas Lalevée 1a7a15a60b Happy new year 2015-01-11 17:56:55 +01:00
Nicolas Lalevée 3f9eb02b76 Update the release notes
This closes #4
2015-01-11 13:41:56 +01:00
Ernestas Vaiciukevicius dc58a82446 Optimization: limit the revision numbers scanned if revision prefix is
specified
2015-01-11 13:37:39 +01:00
Nicolas Lalevée 6b2eba430b Update release notes about the ssh config
This closes #3
2015-01-11 13:30:34 +01:00
Colin Stanfill da0f817745 Document sshConfig option on ssh+sftp resolvers 2015-01-11 13:25:56 +01:00
Colin Stanfill a2b5c7a9aa add sshConfig property to ssh resolver 2015-01-11 13:25:56 +01:00
Baruch Sadogursky 3fe1d3395e The default subject is `bintray`, not 'jcenter`
The code is good, typo is in the doc only.
2015-01-07 00:31:54 +01:00
Nicolas Lalevée e1276e0ac2 use java 5 constructs 2015-01-04 19:00:21 +01:00
Stefan Bodewig a42d2dccf0 upgrade to latest XMLUnit 2014-12-31 18:09:17 +01:00
Jean-Louis Boudart b3d2c0cd65 Make xooki2asciidoc work on java8+ based jvm.
Nashorn is not a drop-in replacement JavaScript implementation for Rhino.
see https://bugs.openjdk.java.net/browse/JDK-8025132 for further details
2014-12-30 17:37:07 +01:00
Nicolas Lalevée 879ac405ee Experimental xooki to asciidoc convertor 2014-12-29 18:37:46 +01:00
Nicolas Lalevée 03542311e2 use XMLUnit to abstract the order of the XML elements 2014-12-27 15:03:49 +01:00
Nicolas Lalevée 56c04300e8 fix bug introduced in 6d2e199 2014-12-27 15:01:56 +01:00
Nicolas Lalevée f42805ac09 snapshoting the sources is now basically about packaging the source tree 2014-12-26 18:52:35 +01:00
Nicolas Lalevée 3bb5a885bf snapshoting the sources is now basically about packaging the source tree 2014-12-26 18:33:00 +01:00
Nicolas Lalevée eac813fd4d Document the (already pushed) fix of the parsing of a p2 repo (IVY-1504) 2014-12-26 16:37:16 +01:00
Nicolas Lalevée c8150bddf2 Ivy 2.4.0 released 2014-12-26 16:35:20 +01:00
Nicolas Lalevée 5539fc8b2e Simplify the publication of the distribution 2014-12-22 18:37:05 +01:00
Nicolas Lalevée 3df94448a8 Document the upload to the nexus repository 2014-12-22 18:21:22 +01:00
Nicolas Lalevée 6d2e199e31 use java 5 constructs 2014-12-21 23:43:30 +01:00
Nicolas Lalevée ee94e6d823 Make the latest-osgi take also into account the implementation when resolving requirements 2014-12-21 18:08:14 +01:00
Nicolas Lalevée 10118c9c1b avoid an NPE on malformed p2 repository 2014-12-21 17:29:40 +01:00
Nicolas Lalevée c95e6a35b2 use java 5 constructs 2014-12-14 15:19:30 +01:00
Nicolas Lalevée 12c3a43545 update scheduled release date 2014-12-13 16:58:00 +01:00
Nicolas Lalevée 571725cb7b IVY-1474 : Ivy Bintray resolver (Thanks to Evgeny Goldin) 2014-12-13 16:36:17 +01:00
Nicolas Lalevée 7c51c8290c add the style folder back 2014-12-13 16:23:56 +01:00
Nicolas Lalevée a1040e355b Update release process 2014-11-14 18:19:33 +01:00
Nicolas Lalevée 4d04df25bb minimize to a bare minimum the number of files to modify when releasing 2014-11-06 22:46:12 +01:00
Nicolas Lalevée 9ec598c6e0 reintroduce the release notes in the doc 2014-11-06 21:49:58 +01:00
Nicolas Lalevée beb1de3351 no more RELEASE_NOTE 2014-11-06 21:28:37 +01:00
Nicolas Lalevée 17cb93fea4 remove the release notes which duplicate the read me and the change.txt 2014-11-06 21:23:03 +01:00
Nicolas Lalevée aa21ad97a9 finalize the release process with git 2014-10-30 00:21:14 +01:00
Nicolas Lalevée 74d5adb66e git submodules have already fixed references (if I understood it well) 2014-10-28 23:22:32 +01:00
Nicolas Lalevée 646254d242 The release process is now using git 2014-10-28 23:07:34 +01:00
Nicolas Lalevée f0e60f6fe9 add release notes updates done in the 2.4.x branch 2014-10-28 22:40:37 +01:00
2274 changed files with 55909 additions and 39720 deletions

14
.asf.yaml Normal file
View File

@ -0,0 +1,14 @@
github:
rulesets:
- name: "Default Branch Protection"
type: branch
branches:
includes:
- "~DEFAULT_BRANCH"
- "release/*"
- "rel/*"
excludes: []
bypass_teams:
- root
restrict_deletion: true
restrict_force_push: true

View File

@ -8,7 +8,7 @@
"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
https://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
@ -25,5 +25,6 @@
<fileset name="Ivy Checkstyle config" enabled="true" check-config-name="Ivy Checkstyle Config" local="true">
<file-match-pattern match-pattern="^src.java.*.java$" include-pattern="true"/>
<file-match-pattern match-pattern="^src.example.*.java$" include-pattern="true"/>
<file-match-pattern match-pattern="^test.java.*.java$" include-pattern="true"/>
</fileset>
</fileset-config>

View File

@ -1,44 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<classpath>
<classpathentry kind="src" path="src/java"/>
<classpathentry kind="src" path="test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/ant.jar"/>
<classpathentry kind="lib" path="lib/ant-testutil.jar"/>
<classpathentry kind="lib" path="lib/commons-codec.jar"/>
<classpathentry kind="lib" path="lib/commons-httpclient.jar"/>
<classpathentry kind="lib" path="lib/commons-lang.jar"/>
<classpathentry kind="lib" path="lib/commons-logging.jar"/>
<classpathentry kind="lib" path="lib/commons-vfs.jar"/>
<classpathentry kind="lib" path="lib/jsch.jar"/>
<classpathentry kind="lib" path="lib/junit.jar"/>
<classpathentry kind="lib" path="lib/oro.jar"/>
<classpathentry kind="lib" path="lib/bcpg-jdk14.jar"/>
<classpathentry kind="lib" path="lib/bcprov-jdk14.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.connector-factory.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.core.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.jsch.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.pageant.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.sshagent.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.usocket-jna.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.usocket-nc.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<!--
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
https://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.
-->
<classpath>
<classpathentry kind="src" path="src/java"/>
<classpathentry kind="src" path="test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="lib" path="lib/ant.jar"/>
<classpathentry kind="lib" path="lib/ant-testutil.jar"/>
<classpathentry kind="lib" path="lib/commons-codec.jar"/>
<classpathentry kind="lib" path="lib/commons-logging.jar"/>
<classpathentry kind="lib" path="lib/commons-vfs2.jar"/>
<classpathentry kind="lib" path="lib/hamcrest-core.jar"/>
<classpathentry kind="lib" path="lib/httpclient.jar"/>
<classpathentry kind="lib" path="lib/httpcore.jar"/>
<classpathentry kind="lib" path="lib/jsch.jar"/>
<classpathentry kind="lib" path="lib/junit.jar"/>
<classpathentry kind="lib" path="lib/xmlunit.jar"/>
<classpathentry kind="lib" path="lib/oro.jar"/>
<classpathentry kind="lib" path="lib/bcpg-jdk15on.jar"/>
<classpathentry kind="lib" path="lib/bcprov-jdk15on.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.connector-factory.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.core.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.jsch.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.pageant.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.sshagent.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.usocket-jna.jar"/>
<classpathentry kind="lib" path="lib/jsch.agentproxy.usocket-nc.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -1,26 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<classpath>
<classpathentry kind="src" path="src/java"/>
<classpathentry kind="src" path="test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/ivy.xml/*"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<!--
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
https://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.
-->
<classpath>
<classpathentry kind="src" path="src/java"/>
<classpathentry kind="src" path="test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=ivy&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=&amp;propertyFiles=version.properties"/>
<classpathentry kind="output" path="bin"/>
</classpath>

5
.gitattributes vendored Normal file
View File

@ -0,0 +1,5 @@
# Mark the test specific pom files (which have backing checksum files) as binary
# so that auto conversion of line endings aren't done on them (thus resulting in
# different checksums) during git checkout.
test/**/maven-snapshot-test/**/*.pom -text diff

23
.gitignore vendored
View File

@ -1,20 +1,23 @@
.classpath
.DS_Store
.idea
*.iml
.ivy2
*~
asciidoc/tutorial/log
bin
build
doc/style/.svn
doc/xooki/.svn
lib
test/jar-repos
test/test-repo/bundlerepo/*.jar
test/test-repo/ivyrepo/org.apache.ivy.osgi
.DS_Store
doc/samples/target-platform/bundles
doc/samples/target-platform/cache
*~
/test/repositories/checkmodified/ivy-1.0.xml
/test/repositories/checkmodified/mod1.1-1.0.jar
/test/repositories/norevision/ivy-mod1.1.xml
/test/repositories/norevision/mod1.1.jar
lib
tagsdoc.properties
test/jar-repos
test/repositories/checkmodified/ivy-1.0.xml
test/repositories/checkmodified/mod1.1-1.0.jar
test/repositories/norevision/ivy-mod1.1.xml
test/repositories/norevision/mod1.1.jar
test/test-repo/bundlerepo/*.jar
test/test-repo/ivyrepo/org.apache.ivy.osgi
out/

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "doc/xooki"]
path = doc/xooki
url = git://git.apache.org/ant-xooki.git

View File

@ -8,7 +8,7 @@
"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
https://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

View File

@ -1,4 +1,3 @@
#Thu Mar 13 22:45:49 CET 2014
# ***************************************************************
# * Licensed to the Apache Software Foundation (ASF) under one
# * or more contributor license agreements. See the NOTICE file
@ -7,9 +6,9 @@
# * 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
# *
# *
# * https://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
@ -19,17 +18,19 @@
# ***************************************************************
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=20
@ -40,15 +41,18 @@ org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=1
@ -58,6 +62,7 @@ org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
@ -67,21 +72,33 @@ org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=100
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
@ -93,7 +110,15 @@ org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
@ -141,6 +166,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=inser
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@ -159,12 +185,14 @@ org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invoca
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
@ -188,6 +216,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invoc
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
@ -215,6 +244,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do n
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@ -243,14 +273,17 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invoc
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@ -260,14 +293,23 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=100
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=false
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

69
LICENSE
View File

@ -192,7 +192,7 @@
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
https://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,
@ -255,4 +255,69 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
License for jQuery Treeview
------------------------------------------------------------------------------
Treeview 1.2 - jQuery plugin to hide and show branches of a tree
Copyright (c) 2006 Jörn Zaefferer, Myles Angell
Dual licensed under the MIT and GPL licenses:
http://www.opensource.org/licenses/mit-license.php
http://www.gnu.org/licenses/gpl.html
MIT Option:
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
“Software”), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
License for ganymed ssh library
------------------------------------------------------------------------------
Copyright (c) 2005 - 2006 Swiss Federal Institute of Technology (ETH Zurich),
Department of Computer Science (http://www.inf.ethz.ch),
Christian Plattner. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
a.) Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
b.) Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
c.) Neither the name of ETH Zurich nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE

View File

@ -1,11 +1,12 @@
Manifest-Version: 1.0
Main-Class: org.apache.ivy.Main
Bundle-Version: 2.4.0
Automatic-Module-Name: org.apache.ivy
Bundle-Version: 2.6.0
Bundle-Name: Ivy
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.apache.ivy
Bundle-Vendor: Apache Software Foundation
Bundle-DocURL: http://ant.apache.org/ivy/
Bundle-DocURL: https://ant.apache.org/ivy/
Import-Package: com.jcraft.jsch;resolution:=optional,
javax.crypto;resolution:=optional,
javax.swing;resolution:=optional,
@ -14,19 +15,20 @@ Import-Package: com.jcraft.jsch;resolution:=optional,
javax.xml.transform,
javax.xml.transform.sax,
javax.xml.transform.stream,
org.apache.commons.compress.compressors.pack200;resolution:=optional,
org.apache.commons.httpclient;resolution:=optional,
org.apache.commons.httpclient.auth;resolution:=optional,
org.apache.commons.httpclient.methods;resolution:=optional,
org.apache.commons.httpclient.params;resolution:=optional,
org.apache.commons.httpclient.protocol;resolution:=optional,
org.apache.commons.net.ftp;resolution:=optional,
org.apache.commons.vfs;resolution:=optional,
org.apache.commons.vfs.impl;resolution:=optional,
org.apache.commons.vfs.provider;resolution:=optional,
org.apache.commons.vfs.provider.ftp;resolution:=optional,
org.apache.commons.vfs.provider.local;resolution:=optional,
org.apache.commons.vfs.provider.sftp;resolution:=optional,
org.apache.commons.vfs.provider.url;resolution:=optional,
org.apache.commons.vfs2;resolution:=optional,
org.apache.commons.vfs2.impl;resolution:=optional,
org.apache.commons.vfs2.provider;resolution:=optional,
org.apache.commons.vfs2.provider.ftp;resolution:=optional,
org.apache.commons.vfs2.provider.local;resolution:=optional,
org.apache.commons.vfs2.provider.sftp;resolution:=optional,
org.apache.commons.vfs2.provider.url;resolution:=optional,
org.apache.oro.text;resolution:=optional,
org.apache.oro.text.regex;resolution:=optional,
org.apache.tools.ant;resolution:=optional,
@ -43,70 +45,71 @@ Import-Package: com.jcraft.jsch;resolution:=optional,
org.xml.sax,
org.xml.sax.ext,
org.xml.sax.helpers
Export-Package: org.apache.ivy;version="2.0.0",
org.apache.ivy.ant;version="2.0.0",
org.apache.ivy.core;version="2.0.0",
org.apache.ivy.core.cache;version="2.0.0",
org.apache.ivy.core.check;version="2.0.0",
org.apache.ivy.core.deliver;version="2.0.0",
org.apache.ivy.core.event;version="2.0.0",
org.apache.ivy.core.event.download;version="2.0.0",
org.apache.ivy.core.event.publish;version="2.0.0",
org.apache.ivy.core.event.resolve;version="2.0.0",
org.apache.ivy.core.event.retrieve;version="2.0.0",
org.apache.ivy.core.install;version="2.0.0",
org.apache.ivy.core.module.descriptor;version="2.0.0",
org.apache.ivy.core.module.id;version="2.0.0",
org.apache.ivy.core.module.status;version="2.0.0",
org.apache.ivy.core.pack;version="2.4.0",
org.apache.ivy.core.publish;version="2.0.0",
org.apache.ivy.core.report;version="2.0.0",
org.apache.ivy.core.repository;version="2.0.0",
org.apache.ivy.core.resolve;version="2.0.0",
org.apache.ivy.core.retrieve;version="2.0.0",
org.apache.ivy.core.search;version="2.0.0",
org.apache.ivy.core.settings;version="2.0.0",
org.apache.ivy.core.sort;version="2.0.0",
org.apache.ivy.osgi.core;version="2.3.0",
org.apache.ivy.osgi.filter;version="2.3.0",
org.apache.ivy.osgi.obr;version="2.3.0",
org.apache.ivy.osgi.obr.xml;version="2.3.0",
org.apache.ivy.osgi.p2;version="2.3.0",
org.apache.ivy.osgi.repo;version="2.3.0",
org.apache.ivy.osgi.updatesite;version="2.3.0",
org.apache.ivy.osgi.updatesite.xml;version="2.3.0",
org.apache.ivy.osgi.util;version="2.3.0",
org.apache.ivy.plugins;version="2.0.0",
org.apache.ivy.plugins.circular;version="2.0.0",
org.apache.ivy.plugins.conflict;version="2.0.0",
org.apache.ivy.plugins.latest;version="2.0.0",
org.apache.ivy.plugins.lock;version="2.0.0",
org.apache.ivy.plugins.matcher;version="2.0.0",
org.apache.ivy.plugins.namespace;version="2.0.0",
org.apache.ivy.plugins.parser;version="2.0.0",
org.apache.ivy.plugins.parser.m2;version="2.0.0",
org.apache.ivy.plugins.parser.xml;version="2.0.0",
org.apache.ivy.plugins.report;version="2.0.0",
org.apache.ivy.plugins.repository;version="2.0.0",
org.apache.ivy.plugins.repository.file;version="2.0.0",
org.apache.ivy.plugins.repository.jar;version="2.3.0",
org.apache.ivy.plugins.repository.sftp;version="2.0.0",
org.apache.ivy.plugins.repository.ssh;version="2.0.0",
org.apache.ivy.plugins.repository.url;version="2.0.0",
org.apache.ivy.plugins.repository.vfs;version="2.0.0",
org.apache.ivy.plugins.repository.vsftp;version="2.0.0",
org.apache.ivy.plugins.resolver;version="2.0.0",
org.apache.ivy.plugins.resolver.packager;version="2.0.0",
org.apache.ivy.plugins.resolver.util;version="2.0.0",
org.apache.ivy.plugins.signer;version="2.2.0",
org.apache.ivy.plugins.signer.bouncycastle;version="2.2.0",
org.apache.ivy.plugins.trigger;version="2.0.0",
org.apache.ivy.plugins.version;version="2.0.0",
org.apache.ivy.tools.analyser;version="2.0.0",
org.apache.ivy.util;version="2.0.0",
org.apache.ivy.util.cli;version="2.0.0",
org.apache.ivy.util.extendable;version="2.0.0",
org.apache.ivy.util.filter;version="2.0.0",
org.apache.ivy.util.url;version="2.0.0"
Export-Package: org.apache.ivy;version="2.6.0",
org.apache.ivy.ant;version="2.6.0",
org.apache.ivy.core;version="2.6.0",
org.apache.ivy.core.cache;version="2.6.0",
org.apache.ivy.core.check;version="2.6.0",
org.apache.ivy.core.deliver;version="2.6.0",
org.apache.ivy.core.event;version="2.6.0",
org.apache.ivy.core.event.download;version="2.6.0",
org.apache.ivy.core.event.publish;version="2.6.0",
org.apache.ivy.core.event.resolve;version="2.6.0",
org.apache.ivy.core.event.retrieve;version="2.6.0",
org.apache.ivy.core.install;version="2.6.0",
org.apache.ivy.core.module.descriptor;version="2.6.0",
org.apache.ivy.core.module.id;version="2.6.0",
org.apache.ivy.core.module.status;version="2.6.0",
org.apache.ivy.core.pack;version="2.6.0",
org.apache.ivy.core.publish;version="2.6.0",
org.apache.ivy.core.report;version="2.6.0",
org.apache.ivy.core.repository;version="2.6.0",
org.apache.ivy.core.resolve;version="2.6.0",
org.apache.ivy.core.retrieve;version="2.6.0",
org.apache.ivy.core.search;version="2.6.0",
org.apache.ivy.core.settings;version="2.6.0",
org.apache.ivy.core.sort;version="2.6.0",
org.apache.ivy.osgi.core;version="2.6.0",
org.apache.ivy.osgi.filter;version="2.6.0",
org.apache.ivy.osgi.obr;version="2.6.0",
org.apache.ivy.osgi.obr.xml;version="2.6.0",
org.apache.ivy.osgi.p2;version="2.6.0",
org.apache.ivy.osgi.repo;version="2.6.0",
org.apache.ivy.osgi.updatesite;version="2.6.0",
org.apache.ivy.osgi.updatesite.xml;version="2.6.0",
org.apache.ivy.osgi.util;version="2.6.0",
org.apache.ivy.plugins;version="2.6.0",
org.apache.ivy.plugins.circular;version="2.6.0",
org.apache.ivy.plugins.conflict;version="2.6.0",
org.apache.ivy.plugins.latest;version="2.6.0",
org.apache.ivy.plugins.lock;version="2.6.0",
org.apache.ivy.plugins.matcher;version="2.6.0",
org.apache.ivy.plugins.namespace;version="2.6.0",
org.apache.ivy.plugins.pack;version="2.6.0",
org.apache.ivy.plugins.parser;version="2.6.0",
org.apache.ivy.plugins.parser.m2;version="2.6.0",
org.apache.ivy.plugins.parser.xml;version="2.6.0",
org.apache.ivy.plugins.report;version="2.6.0",
org.apache.ivy.plugins.repository;version="2.6.0",
org.apache.ivy.plugins.repository.file;version="2.6.0",
org.apache.ivy.plugins.repository.jar;version="2.6.0",
org.apache.ivy.plugins.repository.sftp;version="2.6.0",
org.apache.ivy.plugins.repository.ssh;version="2.6.0",
org.apache.ivy.plugins.repository.url;version="2.6.0",
org.apache.ivy.plugins.repository.vfs;version="2.6.0",
org.apache.ivy.plugins.repository.vsftp;version="2.6.0",
org.apache.ivy.plugins.resolver;version="2.6.0",
org.apache.ivy.plugins.resolver.packager;version="2.6.0",
org.apache.ivy.plugins.resolver.util;version="2.6.0",
org.apache.ivy.plugins.signer;version="2.6.0",
org.apache.ivy.plugins.signer.bouncycastle;version="2.6.0",
org.apache.ivy.plugins.trigger;version="2.6.0",
org.apache.ivy.plugins.version;version="2.6.0",
org.apache.ivy.tools.analyser;version="2.6.0",
org.apache.ivy.util;version="2.6.0",
org.apache.ivy.util.cli;version="2.6.0",
org.apache.ivy.util.extendable;version="2.6.0",
org.apache.ivy.util.filter;version="2.6.0",
org.apache.ivy.util.url;version="2.6.0"
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-RequiredExecutionEnvironment: JavaSE-1.8

6
NOTICE
View File

@ -1,5 +1,5 @@
Apache Ivy (TM)
Copyright 2007-2014 The Apache Software Foundation
Copyright 2007-2026 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
@ -14,3 +14,7 @@ which is open source software, available under
the terms of a BSD style license.
The original software and related information is available
at http://www.jcraft.com/jsch/.
The Scp class is based on the SCPClient from the ganymed ssh
library. Which has been distributed under the BSD style license
included in the LICENSE file.

63
README
View File

@ -1,63 +0,0 @@
Apache Ivy (TM) [version]
---------------------------
Supported Platforms
--------------------
Apache Ivy requires Java level 1.5; it has been tested with Sun Java SDK 1.5.0.
Even if not mandatory, Apache Ivy is most of the times used with Apache Ant,
for which version 1.6.0 or greater is required.
Installation
-------------
Please read doc/install.html for installation instructions.
Getting Started
----------------
For an introduction to Apache Ivy and how to use it, please read the documentation
located in the doc subdirectory. A good place to start is the index.html
Licensing
---------
This software is licensed under the terms you may find in the file
named "LICENSE" in this directory.
Crypto Notice
-------------
This distribution includes cryptographic software. The country in
which you currently reside may have restrictions on the import,
possession, use, and/or re-export to another country, of
encryption software. BEFORE using any encryption software, please
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to
see if this is permitted. See <http://www.wassenaar.org/> for more
information.
The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms. The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS
Export Administration Regulations, Section 740.13) for both object
code and source code.
The following provides more details on the included cryptographic
software:
The Ivy ssh resolver requires the JSch library
<http://www.jcraft.com/jsch/index.html>.
The sftp and https resolvers requires the Java Cryptography extensions
<http://java.sun.com/javase/technologies/security/>.
The PGP signature generator requires the BouncyCastle Java cryptography APIs
<http://www.bouncycastle.org/java.html>.

105
README.adoc Normal file
View File

@ -0,0 +1,105 @@
////
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
https://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.
////
= Apache Ivy(TM)
== What is Apache Ivy?
Apache Ivy is a tool for managing (recording, tracking, resolving and reporting)
project dependencies.
It is characterized by the following:
1. flexibility and configurability
+
Apache Ivy is essentially process agnostic and is not tied to any
methodology or structure.
Instead it provides the necessary flexibility and configurability
to be adapted to a broad range of dependency management and build
processes.
2. tight integration with Apache Ant
+
While available as a standalone tool, Apache Ivy works particularly well
with Apache Ant providing a number of powerful Ant tasks ranging
from dependency resolution to dependency reporting and publication.
== Latest Changes:
See the list of the changes since the last release in the file
link:asciidoc/release-notes{outfilesuffix}[asciidoc/release-notes.adoc]
== Supported Platforms
Please see the the detailed documentation about Ivy compatibility here:
link:asciidoc/compatibility{outfilesuffix}[asciidoc/compatibility.adoc]
== Installation
Please read link:asciidoc/install{outfilesuffix}[asciidoc/install.adoc]
for installation instructions.
== Licensing
This software is licensed under the terms you may find in the file
named link:LICENSE["LICENSE"] in this directory.
== Crypto Notice
This distribution includes cryptographic software. The country in
which you currently reside may have restrictions on the import,
possession, use, and/or re-export to another country, of
encryption software. BEFORE using any encryption software, please
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to
see if this is permitted. See https://www.wassenaar.org/ for more
information.
The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms. The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS
Export Administration Regulations, Section 740.13) for both object
code and source code.
The following provides more details on the included cryptographic
software:
The Ivy ssh resolver requires the JSch library
http://www.jcraft.com/jsch/index.html. +
The sftp and https resolvers requires the Java Cryptography extensions
https://java.sun.com/javase/technologies/security/. +
The PGP signature generator requires the BouncyCastle Java cryptography APIs
https://www.bouncycastle.org/java.html.
== How to Get Involved
The Apache Ivy project really needs and appreciates any contributions,
including documentation help, source code and feedback. If you are interested
in contributing, please visit https://ant.apache.org/ivy/get-involved.html.
== How to Report Issues
The Apache Ivy project uses JIRA for issue tracking. Please report any
issues you find at https://issues.apache.org/jira/browse/IVY

View File

@ -1,133 +0,0 @@
Apache Ivy (TM) v2.4.0-devel
Release Notes
-----------------------------------------------------------------------
CONTENTS
1. What is Apache Ivy?
2. Status of this release
3. Major Changes in this Release
4. Migrating from Jayasoft Ivy to Apache Ivy
5. How to Get Involved
6. How to Report Issues
7. Committers and Contributors for this release
8. List of Changes in this Release
1. What is Apache Ivy?
Apache Ivy is a tool for managing (recording, tracking, resolving and reporting)
project dependencies.
It is characterized by the following:
1. flexibility and configurability
Apache Ivy is essentially process agnostic and is not tied to any
methodology or structure.
Instead it provides the necessary flexibility and configurability
to be adapted to a broad range of dependency management and build
processes.
2. tight integration with Apache Ant
while available as a standalone tool, Apache Ivy works particularly well
with Apache Ant providing a number of powerful Ant tasks ranging
from dependency resolution to dependency reporting and publication.
2. Status of this release
This is the development branch of Ivy. Any release branch should have a more
accurate description here.
As of this writing, the current production quality version is 2.3.0, published
by the ASF on January 21st, 2013.
3. Major Changes in this Release
This section describes what has changed between version 2.3.0 and this version of
Apache Ivy which may cause incompatibilities. For a full list of detailed changes,
please refer to CHANGES.txt file.
This new version of Apache Ivy is fully compatible with 2.3 versions.
4. Migrating from Jayasoft Ivy to Apache Ivy
Please see release notes from 2.3.0 or prior for migration instructions from
Jayasoft Ivy (1.x).
5. How to Get Involved
The Apache Ivy project really needs and appreciates any contributions,
including documentation help, source code and feedback. If you are interested
in contributing, please visit http://ant.apache.org/ivy/get-involved.html.
6. How to Report Issues
The Apache Ivy project uses JIRA for issue tracking. Please report any
issues you find at http://issues.apache.org/jira/browse/IVY
7. Committers and Contributors for this Release
Here is the list of people who have contributed source code and documentation
to this release. Many thanks to all of them, and also to the whole Ivy community
contributing ideas and feedback, and promoting the use of Ivy. The list would be too
long, but Ivy couldn't be what it is without you!
Committers
Jean-Louis Boudart
Maarten Coene
Charles Duffy
Nicolas Lalevee
Contributors
Gregory Amerson
Mykhailo Delegan
Carsten Pfeiffer
Yanus Poluektovich
Frederic Riviere
Gene Smith
Erwin Tratar
For the list of people who have contributed since Ivy inception, see CHANGES.txt file.
8. List of Changes in this Release
For a full release history of Ivy see the file CHANGES.txt
For details about the following changes, check our JIRA install at
http://issues.apache.org/jira/browse/ivy
List of changes since Ivy 2.3.0:
- DOCUMENTATION: Broken link in <dependency> documentation (IVY-1405)
- DOCUMENTATION: Explicitly document that threaded use is not supported.
- NEW: the buildobr task can now work a set of resolved artifacts: useful for managing an OSGi target platform
- NEW: fixdeps task: serializes transitively resolved dependencies into an ivy.xml file
- NEW: IvyDependencyTree task : display a dependency tree on the console
- NEW: Support Conditional Setting of a Property (IVY-1367)
- NEW: Exposing some parent metadata (organisation, module, revision, branch) as properties (IVY-1288)
- NEW: symlinkmass feature based on symlink feature of ivy:retrieve (IVY-1252) (Thanks to Gene Smith)
- NEW: Agent authentication for SSH and SFTP transports (IVY-1421)
- NEW: New OSGi resolver 'osgi-agg': a chain resolver dedicated to better handle OSGi dependencies
- NEW: Add support for "packed" artifacts: .pack.gz bundles in an OSGi P2 repository for instance
- IMPROVEMENT: New LockStrategy available based on NIO FileLocks (IVY-1424)
- IMPROVEMENT: Optional <include> ivysettings directives (IVY-1392) (thanks to Yanus Poluektovich)
- IMPROVEMENT: add support for source bundles from p2 repositories
- IMPROVEMENT: add support for source URI from OBR repositories
- IMPROVEMENT: Also copy original metadata artifact (e.g. POM) on ivy:install (IVY-1431) (Thanks to Erwin Tratar)
- IMPROVEMENT: useOrigin will do avoid copy with url resolvers configured with a 'file:/' URL
- IMPROVEMENT: add support for source artifacts in buildobr task
- FIX: In IvyDE, Ivy fails to parse ivy-settings.xml file if it contains <pgp> element (thanks to Gregory Amerson) (IVY-1441)
- FIX: ParseException when "Bundle-Description" is present in OSGi MANIFEST.MF (IVY-1438)
- FIX: NIO FileLocker released locks too early (IVY-1424) (thanks to Charles Duffy)
- FIX: Ssh Resolver doesn't work with Java 7 (IVY-1408) (thanks to Mykhailo Delegan)
- FIX: Parsing publication date in Ant tasks not thread-safe (IVY-1412)
- FIX: NullPointerException when using httpclient and server doesn't return content-type header (IVY-1400) (thanks to Frederic Riviere)
- FIX: Properly handle evicted nodes in ResolveReport
- FIX: Artifact repository locking did not correctly handle threaded use (IVY-1454) (thanks to Carsten Pfeiffer)
- FIX: Better support for "Bundle-RequiredExecutionEnvironment" from an OSGi MANIFEST.MF
- FIX: When inheriting a module descriptor, also merge the exclude rules
- FIX: Correct application of mediators (ie. override) during conflict resolution (IVY-1455)
- FIX: Fix revision number mapping across namespaces (IVY-1423)
- FIX: fix a NPE when loading a composite P2 repository with no children
- FIX: fix missing configuration when fixdeps is used with a partial resolve
- FIX: XmlModuleDescriptorWritter doesn't support fully extra infos elements (IVY-1457)

3
ReleaseInstructions Normal file
View File

@ -0,0 +1,3 @@
Release instructions are in asciidoc/dev/makerelease.adoc
You can see the last version online here: https://ant.apache.org/ivy/history/master/dev/makerelease.html

View File

@ -7,7 +7,7 @@
# * "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
# * https://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

173
asciidoc/ant.adoc Normal file
View File

@ -0,0 +1,173 @@
////
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
https://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.
////
The main and most frequent way to use Ivy is from an Ant build file. However, Ivy can also be run as a standalone application.
If you use Ant version *1.6.0* or superior, you just have to add Ivy's namespace to your project (`xmlns:ivy="antlib:org.apache.ivy.ant"` attribute of your project tag), and you can call Ivy tasks.
If you want to make your build handle ivy.jar in either Ant lib dir or a local lib dir, you can use a taskdef like this:
[source,xml]
----
<path id="ivy.lib.path">
<fileset dir="path/to/dir/with/ivy/jar" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
----
Combined with the antlib definition in the project namespace, it will load Ivy classes either from your Ant lib or a local directory (`path/to/dir/with/ivy/jar` in this example).
If you use Ant *1.5.1* or superior, you have to define the tasks you use in your build file. For instance:
[source,xml]
----
<taskdef name="ivy-configure" classname="org.apache.ivy.ant.IvyConfigure"/>
<taskdef name="ivy-resolve" classname="org.apache.ivy.ant.IvyResolve"/>
<taskdef name="ivy-retrieve" classname="org.apache.ivy.ant.IvyRetrieve"/>
<taskdef name="ivy-deliver" classname="org.apache.ivy.ant.IvyDeliver"/>
<taskdef name="ivy-publish" classname="org.apache.ivy.ant.IvyPublish"/>
----
_Note_: the tasks listed above are non exhaustive. For a complete list of tasks with the corresponding classes, see the link:https://gitbox.apache.org/repos/asf?p=ant-ivy.git;a=blob;f=src/java/org/apache/ivy/ant/antlib.xml[antlib.xml] file in Git repository or the jar file you use.
Then you can use the tasks, but check their name, following samples assume you use the Ivy namespace (ivy:xxx tasks), whereas with Ant 1.5 you cannot use namespace, and should therefore use ivy-xxx tasks if you have added the taskdefs as above.
If you use an Ant version lower than 1.5.1, you can not use the Ivy tasks... you should then run Ivy as any external program.
== Calling Ivy from Ant: first steps
Once your build file is ok to call Ivy tasks, the simplest way to use Ivy is to call the Ivy retrieve task with no parameters:
[source,xml]
----
<ivy:retrieve/>
----
This calls Ivy with default values, which might be ok in several projects. In fact, it is equivalent to:
[source,xml]
----
<target name="resolve">
<ivy:configure/>
<ivy:resolve file="${ivy.dep.file}" conf="${ivy.configurations}"/>
<ivy:retrieve pattern="${ivy.retrieve.pattern}" conf="${ivy.configurations}"/>
</target>
----
Those 3 tasks follow the 3 main steps of the Ivy retrieving dependencies process:
* First the configure task tells it how it can find dependencies giving it a path to a link:settings{outfilesuffix}[settings XML file].
* Then the resolve task actually resolves dependencies described by an link:ivyfile{outfilesuffix}[Ivy file], and puts those dependencies in the Ivy cache (a directory configured in the settings file).
* Finally the retrieve task copies dependencies from the cache to anywhere you want in your file system. You can then use those dependencies to make your classpath with standard Ant paths.
To understand more accurately the behaviour of Ivy tasks, one should know that a property file is loaded in Ant by Ivy at the beginning of the configure call. This property file contains the following properties:
[source]
----
ivy.project.dir = ${basedir}
ivy.lib.dir = ${ivy.project.dir}/lib
ivy.build.artifacts.dir = ${ivy.project.dir}/build/artifacts
ivy.distrib.dir = ${ivy.project.dir}/distrib
ivy.resolver.default.check.modified = false
ivy.default.always.check.exact.revision = true
ivy.configurations = *
ivy.resolve.default.type.filter = *
ivy.status = integration
ivy.dep.file = ivy.xml
ivy.settings.file = ivysettings.xml
ivy.retrieve.pattern = ${ivy.lib.dir}/[artifact]-[revision].[ext]
ivy.deliver.ivy.pattern = ${ivy.distrib.dir}/[type]s/[artifact]-[revision].[ext]
ivy.publish.src.artifacts.pattern = ${ivy.distrib.dir}/[type]s/[artifact]-[revision].[ext]
ivy.report.output.pattern = [organisation]-[module]-[conf].[ext]
ivy.buildlist.ivyfilepath = ivy.xml
ivy.checksums=sha1,md5
----
_For the latest version of these properties, you can check the link:https://gitbox.apache.org/repos/asf?p=ant-ivy.git;a=blob;f=src/java/org/apache/ivy/core/settings/ivy.properties[Git version]._
(*__since 2.0__*) After calling the first Ivy task, the property `ivy.version` will be available and contains the version of the used Ivy library.
== Ivy tasks attributes : generalities
Some tasks attributes values may be set in different places. The three possible places are :
. task attribute
. Ivy instance
. project property
The places are queried in this order, so anything set in task attribute will override what would have been found in Ivy instance, for example.
The Ivy instance considered here is an instance of the class `Ivy`, which is set up by a call to the configure task, and then reused for other tasks. Because most of the tasks need an Ivy instance, they first check if one is available (i.e. configure has been called), and if none is available, then a default configure is called and the resulting Ivy instance is used in the remaining tasks (unless another configure is called).
It isn't generally necessary to understand this, but it can lead to some issues if you forget to call configure before another task and if the configure step was required in your environment.
== Usual cycle of main tasks
image::images/main-tasks.png[]
== Example
Here is a more complete example of build file using Ivy:
[source,xml]
----
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="sample" default="resolve">
<target name="resolve">
<ivy:configure file="../ivysettings.xml"/>
<ivy:resolve file="my-ivy.xml" conf="default, myconf"/>
</target>
<target name="retrieve-default" depends="resolve">
<ivy:retrieve pattern="lib/default/[artifact]-[revision].[ext]" conf="default"/>
</target>
<target name="retrieve-myconf" depends="resolve">
<ivy:retrieve pattern="lib/myconf/[artifact]-[revision].[ext]" conf="myconf"/>
</target>
<target name="retrieve-all" depends="resolve">
<ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]" conf="*"/>
</target>
<target name="deliver" depends="retrieve-all">
<ivy:deliver deliverpattern="distrib/[artifact]-[revision].[ext]"
pubrevision="1.1b4" pubdate="20050115123254" status="milestone"/>
</target>
<target name="publish" depends="deliver">
<ivy:publish resolver="internal"
artifactspattern="distrib/[artifact]-[revision].[ext]"
pubrevision="1.1b4"/>
</target>
</project>
----
All Ivy tasks are documented in the following pages.

125
asciidoc/bestpractices.adoc Normal file
View File

@ -0,0 +1,125 @@
////
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
https://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.
////
Here are some recommendations and best practices we have gathered throughout our experience and consultancies with our customers.
== Add module descriptors for all your modules
In Ivy world, module descriptors are Ivy files, which are basically simple XML files describing both what the module produces as artifacts and its dependencies.
It is a good practice to write or download module descriptors for all the modules involved in your development, even for your third party dependencies, and even if they don't provide such module descriptors themselves.
First, it will seem like extra work and require time. But when you have several modules using the same third party library, then you will only need to add one line to your Ivy file to get this library and all its own dependencies that you really need (if you have good module descriptors in your repository, especially with the use of module link:concept{outfilesuffix}#configurations[configurations]). It will also be very helpful when you want to upgrade a dependency. One single change in your module Ivy file and you will get the updated version with its updated (or not) dependencies.
Therefore we recommend adding Ivy files for all the modules in your repository. You can even enforce this rule by setting the descriptor attribute to required on your link:settings/resolvers{outfilesuffix}[resolvers]. Hence you shouldn't need to use the dependency artifact inclusion/exclusion/specification feature of Ivy, which should only be used in very specific cases.
== Use your own enterprise repository
This is usually not a valid recommendation for open source projects, but for the enterprise world we strongly suggest to avoid relying on a public repository like Maven ibiblio or ivyrep. Why? Well, there are a couple of reasons:
=== Control
The main problem with these kinds of public repositories is that you don't have control over the repository. This means that if a module descriptor is broken you cannot easily fix it. Sure you can use a chain between a shared repository and the public one and put your fixed module descriptor in the shared repository so that it hides the one on the public repository, but this makes repository browsing and maintenance cumbersome.
Even more problematic is the possible updates of the repository. We know that versions published in such repositories should be stable and not be updated, but we also frequently see that a module descriptor is buggy, or an artifact corrupted. We even see sometimes a new version published with the same name as the preceding one because the previous one was simply badly packaged. This can occur even to the best; it occurred to us with Ivy 1.2 :-) But then we decided to publish the new version with a different name, 1.2a. But if the repository manager allows such updates, this means that what worked before can break. It can thus break your build reproducibility.
=== Reliability
The Maven repository is not particularly well known for its reliability (we often experience major slow downs or even complete failures of the site), and ivyrep is only supported by a small company (yes we are only a small company!). So slow down and site hangs occur also. And if the repository you rely on is down, this can cause major slow downs in your development or release process.
=== Accuracy
A public repository usually contains much more than what you actually need. Is this a problem? We think so. We think that in an enterprise environment the libraries you use should step through some kind of validation process before being used in every projects of your company. And what better way to do so? Setup an enterprise repository with only the libraries you actually want to use. This will not only ensure better quality for your application dependencies, but help to have the same versions everywhere, and even help when declaring your module dependencies, if you use a tool like IvyDE, the code completion will only show relevant information about your repository, with only the libraries you actually want to see.
=== Security
The artifacts you download from a module repository are often executable, and are thus a security concern. Imagine a hacker replacing commons-lang by another version containing a virus? If you rely on a public repository to build your software, you expose it to a security risk. You can read more about that in this link:https://www.helpnetsecurity.com/dl/articles/fortify_attacking_the_build.pdf[Forrester article].
Note that using an enterprise repository doesn't mean you have to build it entirely by hand. Ivy features an link:use/install{outfilesuffix}[install] task which can be used to install modules from one repository to another one, so it can be used to selectively install modules from a public repository to your enterprise repository, where you will then be able to ensure control, reliability and accuracy.
== Always use patterns with at least organisation and module
Ivy is very flexible and can accommodate a lot of existing repositories, using the concept of link:concept{outfilesuffix}#pattern[patterns]. But if your repository doesn't exist yet, we strongly recommend always using the organisation and the module name in your pattern, even for a private repository where you put only your own modules (which all have the same organisation). Why? Because the Ivy listing feature relies on the token it can find in the pattern. If you have no organisation token in your pattern, Ivy won't be able to list the (only?) organisation in your repository. And this can be a problem for code completion in IvyDE, for example, but also for repository wide tasks like link:use/install{outfilesuffix}[install] or link:use/repreport{outfilesuffix}[repreport].
== Public ivysettings.xml with public repositories
If you create a public repository, provide a URL to the link:settings{outfilesuffix}[ivysettings.xml] file. It's pretty easy to do, and if someone wants to leverage your repository, (s)he will just have to load it with link:use/settings{outfilesuffix}[settings] with the URL of your ivysettings.xml file, or link:settings/include{outfilesuffix}[include] it in its own settings file, which makes it really easy to combine several public repositories.
== Dealing with integration versions
Very often, especially when working in a team or with several modules, you will need to rely on intermediate, non-finalized versions of your modules. These versions are what we call integration versions, because their main objective is to be integrated with other modules to make and test an application or a framework.
If you follow the continuous integration paradigm across modules, these integration versions can be produced by a continuous integration server, very frequently.
So, how can you deal with these, possibly numerous, integration versions?
There are basically two ways to deal with them, both ways being supported by Ivy:
use a naming convention like a special suffix::
the idea is pretty simple, each time you publish a new integration of your module you give the same name to the version (in Maven world this is for example 1.0-SNAPSHOT). The dependency manager should then be aware that this version is special because it changes over time, so that it does not trust its local cache if it already has the version, but checks the date of the version on the repository and sees if it has changed. In Ivy this is supported using the link:ivyfile/dependency{outfilesuffix}[changing attribute] on a dependency or by configuring the link:settings/resolvers{outfilesuffix}[changing pattern] to use for all your modules.
automatically create a new version for each::
in this case you use either a build number or a timestamp to publish each new integration version with a new version name. Then you can use one of the numerous ways in Ivy to link:ivyfile/dependency{outfilesuffix}[express a version constraint]. Usually selecting the very latest one (using 'latest.integration' as version constraint) is enough.
So, which way is the best? As often, it depends on your context, and if one of the two was really bad it wouldn't be supported in Ivy :-)
But usually we recommend using the second one, because using a new version each time you publish a new version better fits the version identity paradigm, and can make *all* your builds reproducible, even integration ones. And this is interesting because it enables, with some work in your build system, the ability to introduce a mechanism to promote an integration build to a more stable status, like a milestone or a release.
Imagine you have a customer who comes on a Monday morning and asks for the latest version of your software, for testing or demonstration purposes. Obviously he needs it for the afternoon :-) Now if you have a continuous integration process and good tracking of your changes and your artifacts, it may occur to you that you are actually able to fulfill his request without needing the use of a DeLorean to give you some more time :-) But it may also occur to you that your latest version is stable enough to be used for the purpose of the customer, but was actually built a few days ago, because the very latest just broke a feature or introduced a new one you don't want to deliver. You can deliver this 'stable' integration build if you want, but rest assured that a few days, or weeks, or even months later, the customer will ask for a bug fix on this demo only version. Why? Because it's a customer, and we all know how they are :-)
So, with a build promotion feature of any build in your repository, the solution would be pretty easy: when the customer asks for the version, you not only deliver the integration build, but you also promote it to a milestone status, for example. This promotion indicates that you should keep track of this version for a long period, to be able to come back to it and create a branch if needed.
Unfortunately Ivy does not by its own allow you to have such reproducible builds out of the box, simply because Ivy is a dependency manager, not a build tool. But if you publish only versions with a distinct name and use Ivy features like versions constraint replacement during the publication or recursive delivery of modules, it can really help.
On the other hand, the main drawback of this solution is that it can produce a lot of intermediate versions, and you will have to run some cleaning scripts in your repository unless your company name starts with a G and ends with oogle :-)
== Inlining dependencies or not?
With Ivy 1.4 you can resolve a dependency without even writing an Ivy file. This practice is called inlining. But what is it good for, and when should it be avoided?
Putting Ivy dependencies in a separate file has the following advantages:
separate revision cycle::
if your dependencies may change more often than your build, it's a good idea to separate the two, to isolate the two concepts: describing how to build / describing your project dependencies
possibility to publish::
if you describe dependencies of a module which can itself be reused, you may want to use ant to publish it to a repository. In this case the publication is only possible if you have a separate Ivy file
more flexible::
inline dependencies can only be used to express one dependency and only one. An Ivy file can be used to express much more complex dependencies
On the other hand, using inline dependencies is very useful when:
you want to use a custom task in your ant build::
Without Ivy you usually either copy the custom task jar in ant lib, which requires maintenance of your workstation installation, or use a manual copy or download and a taskdef with the appropriate classpath, which is better. But if you have several custom tasks, or if they have themselves dependencies, it can become cumbersome. Using Ivy with an inline dependency is an elegant way to solve this problem.
you want to easily deploy an application::
If you already build your application and its modules using Ivy, it is really easy to leverage your Ivy repository to download your application and all its dependencies on the local filesystem, ready to be executed. If you also put your settings files as artifacts in your repository (maybe packaged as a zip), the whole installation process can rely on Ivy, easing the automatic installation of *any* version of your application available in your repository!
== Hire an expert
Build and dependency management is often given too low a priority in the software development world. We often see build management implemented by developers when they have time. Even if this may seem like a time and money savings in the short term, it often turns out to be a very bad choice in the long term. Building software is not a simple task, when you want to ensure automatic, tested, fully reproducible builds, releases and installations. On the other hand, once a good build system fitting your very specific needs is setup, it can then only rely on a few people with a good understanding of what is going on, with a constant quality ensured.
Therefore hiring a build and dependency expert to analyse and improve your build and release system is most of the time a very good choice.
== Feedback
These best practices reflect our own experience, but we do not pretend to own the unique truth about dependency management or even Ivy use.
So feel free to comment on this page to add your own experience feedback, suggestions or opinion.

View File

@ -0,0 +1,40 @@
////
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
https://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.
////
== JVM compatibility
Up to Ivy 2.3.x, a minimum of Java 1.4 is required.
For Ivy 2.4.0, a minimum of Java 5 is required.
Since Ivy 2.5.0, a minimum of Java 7 is required.
Since Ivy 2.5.1, a minimum of Java 8 is required.
== Apache Ant
Ivy doesn't require a specific version of Ant as long as the Ant being used complies with the JVM compatibility requirements noted above.
== Other optional dependencies
The required versions of the Apache HttpClient, Jsch or any optional dependency are to be checked against Ivy's dependency descriptor. In Ivy's source, check for the `ivy.xml` file at the root. Or the `pom.xml` of `org.apache.ivy#ivy` in the Maven Central repository.
== Environment / Configuration Requirements
Ivy does not at this time support multithreaded use. It thus should not be used with the Ant `<parallel>` task.

365
asciidoc/concept.adoc Normal file
View File

@ -0,0 +1,365 @@
////
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
https://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.
////
== [[dependency-resolver]]Dependency Resolver
A dependency resolver is a pluggable class in Ivy which is used to:
* find dependencies' Ivy files
* download dependencies' artifacts
The notion of artifact "downloading" is large: an artifact can be on a web site, or on the local file system of your machine. The download is thus the act of bring a file from a repository to the Ivy cache.
Moreover, the fact that it is the responsibility of the resolver to find Ivy files and download artifacts helps to implement various resolving strategies.
As you see, a dependency resolver can be thought of as a class responsible for describing a repository.
If you want to see which resolvers are available in Ivy, you can go to the link:settings/resolvers{outfilesuffix}[resolvers configuration page].
== [[configurations]]Module configurations explained
Module configurations are described in the terminology page as _a way to use or construct a module_. Configurations being a central part of Ivy, they need more explanations as a concept.
When you define a way to use or construct a module, you are able to define which artifacts are published by this module in this configuration, and you are also able to define which dependencies are needed in this configuration.
Moreover, because dependencies in Ivy are expressed on modules and not on artifacts, it is important to be able to define which configurations of the dependency are required in the configuration you define of your module. That's what is called *configuration mapping*.
If you use only simple modules and do not want to worry about configurations, you don't have to worry about them. They're still there under the hood because Ivy can't work without configurations. But most of the time if you declare nothing, Ivy assumes that the artifacts of your module are published in all configurations, and that all the dependencies' configurations are required in all configurations. And it works in simple cases. But whenever you want to separate things within a module, or get more control over things published and get better dependencies resolution, configurations will meet most of your needs.
For details on how to declare your module configurations, how to declare in which configuration your artifacts are published, and how to declare configuration mapping, please refer to link:ivyfile{outfilesuffix}[Ivy file documentation]. The link:tutorial/conf{outfilesuffix}[configurations tutorial] is also a good place to go to learn more about this concept.
== [[variables]]Variables
During configuration, Ivy allows you to define what are called Ivy variables. Ivy variables can be seen as Ant properties, and are used in a very similar way. In particular, you use a properties tag in the settings file to load a properties file containing Ivy variables and their values.
But the main differences between Ant properties and Ivy variables are that Ivy variables can be overridden, whereas Ant properties can't, and that they are defined in separate environments.
Actually all Ant properties are imported into Ivy variables when the configuration is done (if you call Ivy from Ant).
This means that if you define an Ant property after the call to configure, it will not be available as an Ivy variable.
On the other hand, Ivy variables are NOT exported to Ant, thus if you define Ivy variables in Ivy, do not try to use them as Ant properties.
To use Ivy variables, you just have to follow the same syntax as for Ant properties: `${variablename}` where `variablename` is the name of the variable.
Finally, it's also important to be aware of the time of substitution of variables. This substitution is done as soon as possible. This means that when Ivy encounters a reference to a variable, it tries to substitute it if such a variable is defined. Consequently, *any later modification of the variable will not alter the value already substituted*.
Moreover, in an Ant environment, a bunch of variables are going to be set by default via the Ant property file loading mechanism (actually they are first loaded as Ant properties and then imported as Ivy variables, see link:ant{outfilesuffix}[Ant Tasks]), and even in the Ant properties themselves there is going to be eager substitution on loading, effectively making it impossible to override some variable purely via the ivysettings.properties file. Some variables will really only be able to be overridden via Ant properties because of this.
Moreover, it's also important to understand the difference between Ivy variables and Ivy pattern tokens.
See the Patterns chapter below for what pattern tokens are.
== [[patterns]]Patterns
Ivy patterns are used in many dependency resolvers and Ivy tasks, and are a simple way to structure the way Ivy works.
First let's give an example. You can, for instance, configure the file system dependency resolver by giving it a pattern to find artifacts. This pattern can be like this:
`myrepository/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]`
This pattern indicates that the repository we use is in a directory called myrepository.
In this directory we have directories having for name the name of the organisation of the module we look for.
Then we have a directory per module, each having for name the name of the module.
Then in module directories we find a directory per artifact type (jars, wars, ivys, ...), in which we find artifacts named by the artifact id, followed by a hyphen, then the revision, a dot, and the artifact extension.
Not too difficult to understand is it? That's it, you have understood the pattern concept!
To give a bit more explanation, a pattern is composed of tokens, which are replaced by actual values when evaluated for a particular artifact or module. Those tokens are different from variables because they are replaced differently for each artifact, whereas variables are usually given the same value.
You can mix variables and tokens in a pattern:
`${repository.dir}/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]`
The tokens available depends on where the pattern is used (will it be evaluated with artifacts or modules, for instance).
But here are all the tokens currently available:
`[organisation]`::
the organisation name
`[orgPath]`::
(*__since 2.3__*) +
the organisation name where '.' has been replaced by '/'. This can be used to configure Maven 2-like repositories.
`[module]`::
the module name
`[branch]`::
the branch name
`[revision]`::
the revision name
`[artifact]`::
the artifact name (or id)
`[type]`::
the artifact type
`[ext]`::
the artifact file extension
`[conf]`::
the configuration name
`[originalname]`::
(*__since 1.4__*) +
the original artifact name (not including the extension)
`[classifier]`::
(*__since 1.4__*) +
the artifact classifier for Maven dependencies
The difference between type and extension is explained in the Ivy file documentation.
(*__since 1.2__*) `[organization]` can be used instead of `[organisation]`.
(*__since 1.3__*) Optional parts can be used in patterns.
This provides the possibility to avoid some input when a token is not defined, instead of having only the token as blank. Parenthesis are used to delimit the optional part, and only one token can be found inside the parenthesis.
So if you surround a token with `(` and `)`, any other text which is between the parenthesis will be ignored if the token has no value.
For instance, suppose the pattern: `abc(def[type]ghi)`
* `type` = `"jar"` -> the substituted pattern: `abcdefjarghi`
* `type` = `null` or `""` -> the substituted pattern: `abc`
A more real life example:
The pattern `[artifact](-[revision]).[ext]` lets you accept both `myartifact-1.0.jar` when a revision is set, and `myartifact.jar` (instead of `myartifact-.jar`) when no revision is set. This is particularly useful when you need to keep control of artifact names.
(*__since 1.4__*) Extra attributes can be used as any other token in a pattern.
== [[latest]]Latest Strategy
Ivy often needs to know which revision between two is considered the "latest". To know that, it uses the concept of latest strategy. Indeed, there are several ways to consider a revision to be the latest. You can choose an existing one or plug in your own.
But before knowing which revision is the latest, Ivy needs to be able to consider several revisions of a module. Thus Ivy has to get a list of files in a directory, and it uses the dependency resolver for that. So check if the dependency resolver you use is compatible with latest revisions before wondering why Ivy does not manage to get your latest revision.
Finally, in order to get several revisions of a module, most of the time you need to use the `[revision]` token in your pattern so that Ivy gets all the files which match the pattern, whatever the revision is. It's only then that the latest strategy is used to determine which of the revisions is the latest one.
Ivy has three built-in latest strategies:
`latest-time`::
This compares the revision dates to know which is the latest. While this is often a good strategy in terms of pertinence, it has the drawback of being costly to compute for distant repositories. If you use ivyrep, for example, Ivy has to ask the HTTP server what is the date of each Ivy file before knowing which is the latest.
`latest-revision`::
This compares the revisions as strings, using an algorithm close to the one used in the PHP `version_compare` function.
+
This algorithm takes into account special meanings of some text. For instance, with this strategy, 1.0-dev1 is considered before 1.0-alpha1, which in turn is before 1.0-rc1, which is before 1.0, which is before 1.0.1.
`latest-lexico`::
This compares the revisions as strings, using lexicographic order (the one used by the Java string comparison).
See also how to configure new latest strategies link:settings/latest-strategies{outfilesuffix}[here].
== [[conflict]]Conflict Manager
A conflict manager is able to select, among a list of module revisions in conflict, a list of revisions to keep.
Yes, it can select a list of revisions, even if most conflict managers select only one revision.
But in some cases you will need to keep several revisions, and load in separate class loaders, for example.
A list of revisions is said to be in conflict if they correspond to the same module, i.e. the same organisation/module name couple.
The list of available conflict managers is available on the link:settings/conflict-managers{outfilesuffix}[conflict manager configuration page].
For more details on how to setup your conflict managers by module, see the link:ivyfile/conflicts{outfilesuffix}[conflicts] section in the Ivy file reference.
== [[matcher]]Pattern matcher
(*__since 1.3__*) In several places Ivy uses a pattern to match a set of objects. For instance, you can exclude several modules at once when declaring a dependency by using a pattern matching all the modules to exclude.
Ivy uses a pluggable pattern matcher to match those object names. 3 are defined by default:
`exact`::
This matcher matches only using strings
`regexp`::
This matcher lets you use a regular expression as supported by the Pattern class of Java 1.4 or greater
`glob`::
This matcher lets you use a Unix-like glob matcher, i.e. where the only meta characters are `*` which matches any sequence of characters and `?` which matches exactly one character. Note that this matcher is available only with Jakarta ORO 2.0.8 in your classpath.
Note also that with any matcher, the character '*' has the special meaning of matching anything. This is particularly useful with default values which do not depend on the matcher.
== [[extra]]Extra attributes
(*__since 1.4__*) Several tags in Ivy XML files are extensible with what is called extra attributes.
The idea is very simple: if you need some more information to define your modules, you can add the attribute you want and you will then be able to access it as any other attribute in your patterns.
(*__since 2.0__*)
It's possible and recommended to use XML namespaces for your extra attributes. Using an Ivy extra namespace is the easiest way to add your own extra attributes.
Example: here is an Ivy file with the attribute `color` set to blue:
[source,xml]
----
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="apache"
module="foo"
e:color="blue"
status="integration"
revision="1.59"/>
</ivy-module>
----
Then you must use the extra attribute when you declare a dependency on `foo`. Those extra attributes will indeed be used as identifiers for the module like the `org`, the `name` and the `revision`:
[source,xml]
----
<dependency org="apache" name="foo" e:color="blue" rev="1.5+"/>
----
And you can define your repository pattern as:
[source]
----
${repository.dir}/[organisation]/[module]/[color]/[revision]/[artifact].[ext]
----
Note that in patterns you must use the unqualified attribute name (no namespace prefix).
If you don't want to use XML namespaces, it's possible but you will need to disable Ivy file validation, since your files won't fulfill anymore the official Ivy XSD. See the link:settings/settings{outfilesuffix}[settings documentation] to see how to disable validation.
== [[checksum]]Checksums
(*__since 1.4__*)
Ivy allows the use of checksums, also known as digests, to verify the correctness of a downloaded file.
The configuration of using the algorithm can be done globally or by dependency resolver.
Globally, use the ivy.checksums variable to list the check to be done.
On each resolver you can use the checksums attribute to override the global setting.
The setting is a comma separated list of checksum algorithms to use.
During checking (at download time), the first checksum found is checked, and that's all. This means that if you have a `"SHA-256, sha1, md5"` setting, then if Ivy finds a SHA-256 file, it will compare the downloaded file SHA-256 against this SHA-256, and if the comparison is ok, it will assume the file is ok. If no SHA-256 file is found, it will look for an sha1 file. If that isn't found, then it checks for md5 and so on. If none is found no checking is done.
During publish, all listed checksum algorithms are computed and uploaded.
By default checksum algorithms are `"sha1, md5"`.
If you want to change this default, you can set the variable `ivy.checksums`. Hence, to disable checksum validation you just have to set `ivy.checksums` to `""`.
=== Supported algorithms
(*__since 1.4__*)
* md5
* sha1
(*__since 2.5__*) In addition to md5 and sha1, Ivy supports SHA-256, SHA-512 and SHA-384 algorithms, if the Java runtime in which Ivy is running, supports those. For example, Java 6 runtime supports SHA-256 and SHA-512 as standard algorithms. If Ivy 2.5 and later versions run in Java 6 or higher runtimes, these algorithms are supported by Ivy too.
== [[event]]Events and Triggers
(*__since 1.4__*) When Ivy performs the dependency resolution and some other tasks, it fires events before and after the most important steps. You can listen to these events using Ivy API, or you can even register a trigger to perform a particular action when a particular event occur.
This is a particularly powerful and flexible feature which allows, for example, you to perform a build of a dependency just before it is resolved, or follow what's happening during the dependency resolution process accurately, and so on.
For more details about events and triggers, see the link:settings/triggers{outfilesuffix}[triggers] documentation page in the configuration section of this documentation.
== [[circular]]Circular Dependencies
(*__since 1.4__*) Circular dependencies can be either direct or indirect. For instance, if A depends on A, it's a circular dependency, and if A depends on B which itself depends on A, this is also a circular dependency.
Prior to Ivy 1.4 circular dependencies caused a failure in Ivy. As of Ivy 1.4, the behaviour of Ivy when it finds a circular dependency is configurable through a circular dependency strategy.
3 built-in strategies are available:
`ignore`::
circular dependencies are only signaled in verbose messages
`warn`::
same as ignore, except that they are signaled as a warning (default)
`error`::
halt the dependency resolution when a circular dependency is found
See the link:settings/settings{outfilesuffix}[configuration page] to see how to configure the circular dependency strategy you want to use.
== Cache and Change Management
Ivy heavily relies on local caching to avoid accessing remote repositories too often, thus saving a lot of network bandwidth and time.
=== [[cache]]Cache types
An Ivy cache is composed of two different parts:
the repository cache::
The repository cache is where Ivy stores data downloaded from module repositories, along with some meta information concerning these artifacts, like their original location.
This part of the cache can be shared if you use a well suited link:settings/lock-strategies{outfilesuffix}[lock strategy].
the resolution cache::
This part of the cache is used to store resolution data, which is used by Ivy to reuse the results of a resolve process.
+
This part of the cache is overwritten each time a new resolve is performed, and should never be used by multiple processes at the same time.
While there is always only one resolution cache, you can link:settings/caches{outfilesuffix}[define multiple repository caches], each link:settings/resolvers{outfilesuffix}[resolver] being able to use a separate cache.
=== [[change]]Change management
To optimize the dependency resolution and the way the cache is used, Ivy assumes by default that a revision never changes. So once Ivy has a module in its cache (metadata and artifacts), it trusts the cache and does not even query the repository. This optimization is very useful in most cases, and causes no problem as long as you respect this paradigm: a revision never changes. Besides performance, there are several link:bestpractices{outfilesuffix}[good reasons] to follow this principle.
However, depending on your current build system and your dependency management strategy, you may prefer to update your modules sometimes. There are two kinds of changes to consider:
==== Changes in module metadata
Since pretty often module metadata are not considered by module providers with as much attention as their API or behavior (if they even provide module metadata), it happens more than we would like that we have to update module metadata: a dependency has been forgotten, or another one is missing, ...
In this case, setting `checkModified="true"` on your dependency resolver will be the solution. This flag tells Ivy to check if module metadata has been modified compared to the cache. Ivy first checks the metadata last modified timestamp on the repository to download it only if necessary, and then updates it when needed.
==== Changes in artifacts
Some people, especially those coming from Maven 2 land, like to use one special revision to handle often updated modules. In Maven 2, this is called a SNAPSHOT version, and some argue that it helps save disk space to keep only one version for the high number of intermediary builds you can make whilst developing.
Ivy supports this kind of approach with the notion of "changing revision". A changing revision is just that: a revision for which Ivy should consider that the artifacts may change over time. To handle this, you can either specify a dependency as changing on the link:ivyfile/dependency{outfilesuffix}[dependency] tag, or use the `changingPattern` and `changingMatcher` attributes on your link:settings/resolvers{outfilesuffix}[resolvers] to indicate which revision or group of revisions should be considered as changing.
Once Ivy knows that a revision is changing, it will follow this principle to avoid checking your repository too often: if the module metadata has not changed, it will considered the whole module (including artifacts) as not changed. Even if the module descriptor file has changed, it will check the publication data of the module to see if this is a new publication of the same revision or not. Then if the publication date has changed, it will check the artifacts' last modified timestamps, and download them accordingly.
So if you want to use changing revisions, use the link:use/publish{outfilesuffix}[publish] task to publish your modules, it will take care of updating the publication date, and everything will work fine. And remember to set `checkModified=true"` on your resolver too!
== [[paths]]Paths handling
As a dependency manager, Ivy has a lot of file related operations, which most of the time use paths or path patterns to locate the file on the filesystem.
These paths can obviously be relative or absolute. We recommend to always use absolute paths, so that you don't have to worry about what is the base of your relative paths. Ivy provides some variables which can be used as the base of your absolute paths. For instance, Ivy has a concept of base directory, which is basically the same as for Ant. You have access to this base directory with the ivy.basedir variable. So if you have a path like `${ivy.basedir}/ivy.xml`, you have an absolute path. In link:settings{outfilesuffix}[settings files], you also have a variable called `ivy.settings.dir` which points to the directory in which your settings file is located, which makes defining paths relative to this directory very easy.
If you really want to use relative paths, the base directory used to actually locate the file depends on where the relative path is defined:
* In an Ivy file, paths are relative to the Ivy file itself (the only possible path in an Ivy file is for configurations declaration inclusion)
* In settings files, paths for file inclusion (namely properties file loading and settings inclusion) are relative to the directory in which the settings file is located. All other paths must be absolute unless explicitly noted.
* In Ivy Ant tasks and Ivy parameters or options, paths are relative to Ivy base directory, which when called from Ant is the same as your Ant basedir.
== [[packaging]]Packaging
Most of the artifacts found in a repository are jars. They can be downloaded and used as is. But some other kind of artifacts required some __unpacking__ after being downloaded and before being used. Such artifacts can be zipped folders and packed jars. Ivy supports that kind of artifact with *packaging*.
A __packaged__ artifact needs to be declared as such in the module descriptor via the attribute link:ivyfile/artifact{outfilesuffix}[packaging]. The value of that attribute defined which kind of unpacking algorithm must be used. Here are the list of currently supported algorithms:
* `zip`, `jar` or `war`: the artifact will be uncompressed as a folder
* `pack200`: the artifact will be unpacked to a file via the link:https://docs.oracle.com/javase/7/docs/technotes/tools/share/pack200.html[pack200] algorithm
* `bundle`: the OSGi artifact will be uncompressed as a folder, and every embedded jar file entry which is packed via the the link:https://docs.oracle.com/javase/7/docs/technotes/tools/share/pack200.html[pack200] algorithm will be unpacked
So, if in an `ivy.xml`, there would be declared a such artifact:
[source,xml]
----
<artifact name="mymodule" type="jar" ext="jar.pack.gz" packaging="pack200"/>
----
A file `mymodule-1.2.3.jar.pack.gz` would be download into the cache, and also uncompressed in the cache to `mymodule-1.2.3.jar`. Then any post resolve task which supports it, like the link:use/cachepath{outfilesuffix}[cachepath], will use the uncompressed file instead of the original compressed file.
It is possible to chain packing algorithm. The attribute link:ivyfile/artifact{outfilesuffix}[packaging] of a artifact expects a comma separated list of packing types, in packing order. For instance, an artifact `mymodule-1.2.3.jar.pack.gz` can have the packaging `jar,pack200`, so it would be uncompressed as a folder `mymodule-1.2.3`.

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:settings{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/caches{outfilesuffix}[here].

View File

@ -0,0 +1,20 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/caches/cache{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/caches/ttl{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/classpath{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/settings{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/conflict-managers.html[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/include{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/latest-strategies.html[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/lockstrategies{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/macrodef{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/macrodef/attribute{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/module{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/modules{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/namespace{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/namespace/dest{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/namespace/fromtosystem{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/namespace/rule{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../../settings/namespace/src{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/namespaces{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/outputters{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/parsers{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/properties{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/property{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/resolvers{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/status{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/statuses{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/triggers{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/typedef{outfilesuffix}[here].

View File

@ -0,0 +1,21 @@
////
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
https://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.
////
This page has moved. If your browser doesn't automatically redirect to its new location, click
link:../settings/version-matchers.html[here].

122
asciidoc/dev.adoc Normal file
View File

@ -0,0 +1,122 @@
////
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
https://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.
////
== Building from source
To build Ivy from source it's really easy.
=== Requirements
All you need is
* a link:https://git-scm.com/downloads[Git] client +
_to check out Ivy sources from Apache Git, not required if you build from sources packaged in a release_
* link:https://ant.apache.org/[Apache Ant] 1.10.0 or greater +
_We recommend the latest version of Ant_
* a link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[JDK] 7 or greater +
_Build instructions have been successfully tested with OpenJDK 8 and 11_
Some of the targets used during the release process generate CycloneDX
SBOMs and require Java 9 or greater in order to build.
=== Procedure
==== Get the source
You can either get the sources from a release, or get them directly from Git:
[source,shell]
----
git clone https://gitbox.apache.org/repos/asf/ant-ivy.git
----
==== Build
Go to the directory where you get the Ivy sources (you should see a file named build.xml) and run:
[source,shell]
----
ant
----
==== Check the result
The Ant build will compile the core classes of Ivy and use them to resolve the dependencies (used for some optional features). Then it will compile and run tests with coverage metrics.
If everything goes well, you should see the message:
[source,shell]
----
BUILD SUCCESSFUL
----
Then you can check the test results in the build/doc/reports/test directory, the jars are in build/artifacts, and the test coverage report in build/doc/reports/coverage
== Coding conventions
The Ivy code base is supposed to follow Java Code Conventions:
http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
This is a work in progress though (see link:https://issues.apache.org/jira/browse/IVY-511[IVY-511]), but patches helping migration to these conventions are welcome.
== Developing with Eclipse
Even though you can develop Ivy with your IDE of choice, we support Eclipse development by providing ad hoc metadata.
We currently provide two options:
=== Eclipse alone
To develop with a simple Eclipse install all you need is Eclipse 4.2 or greater, with no particular plugin.
First call the following Ant target in your Ivy workspace:
[source]
----
ant eclipse-default
----
This will resolve the dependencies of Ivy and produce a .classpath using the resolved jars for the build path.
Then you can use the "Import->Existing project into workspace" eclipse feature to import the Ivy project in your workspace.
=== Eclipse + IvyDE
You can also leverage the latest IvyDE version to be able to easily resolve the Ivy dependencies from Eclipse.
To do so all you need is call the following Ant target in your Ivy workspace:
[source]
----
ant eclipse-ivyde
----
or if you don't have Ant installed you can simply copy the file .classpath.ivyde and rename it to .classpath +
Then you can import the project using "Import->Existing project into workspace" as long as you already have latest IvyDE installed.
To install latest IvyDE version compatible with the latest Ivy used to resolve Ivy dependencies, you will need to use a snapshot build, not endorsed by the ASF, available here:
https://builds.apache.org/view/A/view/Ant/job/IvyDE/
Download the file and unzip its content in your Eclipse installation directory.
=== Recommended plugins
The Ivy project comes with settings for the link:http://eclipse-cs.sourceforge.net/[Checkstyle plugin] we recommend to use to avoid introducing a new digression to the Checkstyle rules we use.
If you use this plugin, you will see many errors in Ivy. As we said, following strict Checkstyle rules is a work in progress and we used to have pretty different code conventions (like using _ as prefix for private attributes), so we still have things to fix. We usually use the filter in the problems view to filter out Checkstyle errors from this view, which helps to know what the real compilation problem are.
Besides this plugin we also recommend to use a Git plugin, link:https://www.eclipse.org/egit/[EGit].

View File

@ -1,24 +1,45 @@
////
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
https://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.
////
= Ivy Proposal =
The following presents the proposal for creating a new Ivy project within the Apache Software Foundation.
== Abstract ==
Ivy (http://www.jayasoft.org/ivy) is a java based tool for tracking, resolving and managing project dependencies.
Ivy (http://www.jayasoft.org/ivy) is a Java based tool for tracking, resolving and managing project dependencies.
== Proposal ==
Ivy is a tool for managing (recording, tracking, resolving and reporting) project dependencies. It is characterized by the following:
1) flexibility and configurability - Ivy is essentially process agnostic and is not tied to any methodology or structure. Instead it provides the necessary flexibility and configurability to be adapted to a broad range of dependency management and build processes.
2) tight integration with Apache Ant - while available as a standalone tool, Ivy works particularly well with Apache Ant providing a number of powerful Ant tasks ranging from dependency resolution to dependency reporting and publication.
1. flexibility and configurability - Ivy is essentially process agnostic and is not tied to any methodology or structure. Instead it provides the necessary flexibility and configurability to be adapted to a broad range of dependency management and build processes.
2. tight integration with Apache Ant - while available as a standalone tool, Ivy works particularly well with Apache Ant providing a number of powerful Ant tasks ranging from dependency resolution to dependency reporting and publication.
== Rationale ==
Software development is increasingly characterized by leveraging externally provided components/capabilities and by a rapid release cycle. As a result it is not unusual for a project to depend on numerous third-party components which themselves may be dependent on a multitude of third-party of different or identical third-party components. Managing these dependencies - determining what the dependencies are, how they are used, the impact of a change, conflicts among dependencies, etc. - is extremely difficult and absolutely necessary. Ivy is one of a handful of tools addressing this need. While often compared to Maven - which has similar Ant tasks - Ivy differs from Maven in both its focus and philosophy. Ivy is solely focused on dependency management and is designed from the ground up to adapt to a wide range of requirements and scenarios. Examples include multiple aritfacts per module, plugin resolvers, configurable repository configurations and conflict managers.
Software development is increasingly characterized by leveraging externally provided components/capabilities and by a rapid release cycle. As a result it is not unusual for a project to depend on numerous third-party components which themselves may be dependent on a multitude of third-party of different or identical third-party components. Managing these dependencies - determining what the dependencies are, how they are used, the impact of a change, conflicts among dependencies, etc. - is extremely difficult and absolutely necessary. Ivy is one of a handful of tools addressing this need. While often compared to Maven - which has similar Ant tasks - Ivy differs from Maven in both its focus and philosophy. Ivy is solely focused on dependency management and is designed from the ground up to adapt to a wide range of requirements and scenarios. Examples include multiple artifacts per module, plugin resolvers, configurable repository configurations and conflict managers.
The maintainers of Ivy are interested in joining the Apache Software Foundation for several reasons:
* Ivy has been hosted since its beginning in 2004 by a private company, which make people feel like it's a corporate product, thus slowing the contribution by the community. We strongly believe in the open source movement, and would like to make Ivy independent from Jayasoft.
* We'd like to enjoy the benefits of utilizing Apache's infrastructure and legal protection.
* It might open the door for cooperation with other projects, such as Ant or Maven.
* We strongly believe in Apache philosophy, especially Meritocracy.
* Ivy has been hosted since its beginning in 2004 by a private company, which make people feel like it's a corporate product, thus slowing the contribution by the community. We strongly believe in the open source movement, and would like to make Ivy independent from Jayasoft.
* We'd like to enjoy the benefits of utilizing Apache's infrastructure and legal protection.
* It might open the door for cooperation with other projects, such as Ant or Maven.
* We strongly believe in Apache philosophy, especially Meritocracy.
== Current status ==
=== Meritocracy ===
@ -33,12 +54,12 @@ Ivy already has a growing user community, with more than 10,000 downloads since
Ivy has only two core developers for the moment, but we hope joining the ASF will help increase this number.
Xavier Hanin is the creator of the project, is an independant consultant and co founder of Jayasoft. He has an experience of 9 years in Java software development, uses open source projects intensively, and started his real participation in open source development with Ivy.
Maarten Coene has joined the committer team in may 2006. He has an experience of 9 years in java development, is co-administrator of dom4j, ex-committer for scarab, has contributed patches to several open-source projects and is a user of a lot of open-source projects.
Xavier Hanin is the creator of the project, is an independent consultant and co founder of Jayasoft. He has an experience of 9 years in Java software development, uses open source projects intensively, and started his real participation in open source development with Ivy.
Maarten Coene has joined the committer team in May 2006. He has an experience of 9 years in Java development, is co-administrator of dom4j, ex-committer for scarab, has contributed patches to several open-source projects and is a user of a lot of open-source projects.
=== Alignment ===
Ivy has no mandatory dependencies except java 1.4. However, it is strongly recommended to be used with Ant. Ivy uses also other Apache projects, especially from Jakarta Commons.
Ivy has no mandatory dependencies except Java 7. However, it is strongly recommended to be used with Ant. Ivy uses also other Apache projects, especially from Jakarta Commons.
== Known risks ==
@ -46,11 +67,11 @@ Ivy has no mandatory dependencies except java 1.4. However, it is strongly recom
Due to its small number of committers, there is a risk of being orphaned. The main knowledge of the codebase is still mainly owned by Xavier Hanin. Even if Xavier has no plan to leave Ivy development, this is a problem we are aware of and know that need to be worked on so that the project become less dependent on an individual.
=== Inexperience with Open Source ===
While distributed under an open source license, access to Ivy was initially limited with no public access to the issue tracking system or svn repository. While things have changed since then - the svn repository is publicly accessible, a JIRA instance has been setup since june 2005, many new features are first discussed on the forum or JIRA - experience with a true open source development model is currently limited.
While distributed under an open source license, access to Ivy was initially limited with no public access to the issue tracking system or svn repository. While things have changed since then - the svn repository is publicly accessible, a JIRA instance has been setup since June 2005, many new features are first discussed on the forum or JIRA - experience with a true open source development model is currently limited.
However, Maarten has already a good experience with true open development process, and bring his experience to the project.
=== Homogenous Developers ===
With only two core developers, at least they are not homogenous! Xavier and Maarten knew each other only due to their common interest in Ivy.
=== Homogeneous Developers ===
With only two core developers, at least they are not homogeneous! Xavier and Maarten knew each other only due to their common interest in Ivy.
=== Reliance on Salaried Developers ===
Maarten is not paid to work on Ivy.
@ -60,43 +81,43 @@ Xavier's case is more complex, as a co founder of Jayasoft, part of his time in
Ivy has a strong relationship with Apache Ant, and is often seen as a good companion of Ant. Being part of Apache could help for a closer collaboration between the two projects.
=== A Excessive Fascination with the Apache Brand ===
Even if we recognize the strong value of the Apache Brand, the purpose of joining Apache is not focused on improving the visibility of the project. The main focus of this proposition is to make Ivy a more open project, with a closer integration with Apache Ant. Even if Ivy does not join the ASF, Ivy will move out of Jayasoft umbrella and try to attract more developers.
Even if we recognize the strong value of the Apache Brand, the purpose of joining Apache is not focused on improving the visibility of the project. The main focus of this proposition is to make Ivy a more open project, with a closer integration with Apache Ant. Even if Ivy does not join the ASF, Ivy will move out of Jayasoft umbrella and try to attract more developers.
== Documentation ==
Further reading on Ivy can be found at:
Further reading on Ivy can be found at: +
http://www.jayasoft.org/ivy
== Initial Source ==
The initial code base can be found at:
The initial code base can be found at: +
http://svn.jayasoft.org/projects/tools/ivy
== External Dependencies ==
Ivy has no mandatory dependencies at runtime.
Ivy has no mandatory dependencies at runtime.
For compilation, it requires:
apache ant
apache commons-httpclient
apache commons-cli
apache oro
apache commons-vfs
jcraft jsch (BSD, already used by commons-vfs and by ant)
For compilation, it requires: +
Apache Ant +
Apache Commons-HttpClient +
Apache Commons-CLI +
Apache ORO +
Apache Commons-VFS +
JCraft JSch (BSD, already used by Commons-VFS and by Ant)
== Required Resources ==
=== Mailing lists ===
* ivy-private (with moderated subscriptions)
* ivy-dev
* ivy-user
* ivy-private (with moderated subscriptions)
* ivy-dev
* ivy-user
=== Subversion Directory ===
https://svn.apache.org/repos/asf/incubator/ivy
=== Issue Tracking ===
JIRA Ivy (IVY)
JIRA Ivy (IVY) +
An import from existing JIRA issues at http://jira.jayasoft.org/ would also be very much appreciated
== Initial Committers ==
Xavier Hanin (xavier dot hanin at gmail dot com)
Xavier Hanin (xavier dot hanin at gmail dot com) +
Maarten Coene (maarten_coene at yahoo dot com)
== Affiliations ==
@ -105,16 +126,16 @@ As stated in the Reliance on salaried developers section, Xavier is a co founder
== Sponsors ==
=== Champion ===
Antoine Levy-Lambert
Antoine Levy-Lambert +
Sylvain Wallez
=== Nominated Mentors ===
Antoine Levy-Lambert
Stephane Baillez
Antoine Levy-Lambert +
Stephane Baillez +
Steve Loughran
=== Sponsoring Entity ===
The Ant PMC has voted the following resolution:
The Ant PMC has voted the following resolution: +
The Ant PMC sponsors Ivy moving to the Apache Incubator.
If the Ivy community wishes to move Ivy to become an Ant subproject
after successful incubation, and if the ASF board agrees to it, Ant

View File

@ -0,0 +1,112 @@
////
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
https://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.
////
Here are some explanations about the conflict management algorithm in Ivy.
First, one should have a good understanding on how Ivy resolves dependencies, and especially
transitive dependencies.
During the resolve process, Ivy visits each module of the dependency graph. +
Let's call each module a *node*, including the module we are trying to resolve dependencies for.
Each node should be able to give a conflict manager for a particular ModuleId. +
Let's name it *node.cm(mid)*.
Each node should be able to maintain a map from ModuleId to a resolved Collection of nodes.
This resolved collection will never contain any evicted node FOR the concerned node as far
as Ivy knows, depending on where it is in graph visit. +
Let's call this map resolved, and the corresponding resolved collection *node.resolved(mid)*.
During the visit, Ivy should always know from which node it came to visit another node. Let's call
the first node from which Ivy came *node.parent*. Note that this concept is slightly different from
node parent, since a node can have several parents in the graph, but there is also one *node.parent*
during the visit.
Let's say that a conflict manager is able to filter a collection of nodes to return only those
that are not evicted. Let's call that *cm.resolveConflicts(collection)*.
Let's call *node.dependencies* the collection of direct dependencies of a node.
Let's call *node.revision* the module revision id of a node.
And now for the algo. This algo attempts to evict nodes on the fly, i.e. during the Ivy visit,
to minimize the number of resolved modules, and thus the number of Ivy files to download.
It is presented in a very simplified description language, far away from the whole real complexity,
but giving a good understanding of how it works. In particular, it completely hides some complexity due
to configurations management.
[source,java,subs="verbatim,quotes"]
----
resolve(node) {
node.resolved(node.mid) = _collection_(node);
resolveConflict(node, node.parent, empty);
if (!node.evicted && !node.alreadyResolved) {
node.loadData();
resolveConflict(node, node.parent, empty);
if (!node.evicted) {
// actually do resolve
foreach (dep in node.dependencies) {
resolve(dep);
}
}
}
}
resolveConflict(node, parent, toevict) {
if (node.revision.exact && parent.resolved(node.mid).revision.contains(node.revision)) {
// exact revision already in resolved
// => job already done
return;
}
if (parent.resolved(node.mid).containsAny(toevict)) {
// parent.resolved(node.mid) is not up to date:
// recompute resolved from all sub nodes
resolved = parent.cm(node.mid).resolveConflicts(parent.dependencies.resolved(node.mid));
} else {
resolved = parent.cm(node.mid).resolveConflicts(_collection_(node, parent.resolved(node.mid)));
}
if (resolved.contains(node)) {
// node has been selected for the current parent
// we update its eviction... but it can still be evicted by parent !
node.evicted = false;
// handle previously selected nodes that are now evicted by this new node
toevict = parent.resolved(node.mid) - resolved;
foreach (te in toevict) {
te.evicted = true;
}
// it's very important to update resolved BEFORE recompute parent call
// to allow it to recompute its resolved collection with correct data
// if necessary
parent.resolved(node.mid) = resolved;
if (parent.parent != null) {
resolveConflict(node, parent.parent, toevict);
}
} else {
// node has been evicted for the current parent
// it's time to update parent resolved with found resolved...
// if they have not been recomputed, it does not change anything
parent.resolved(node.mid) = resolved;
node.evicted = true;
}
}
----

97
asciidoc/dev/ideas.adoc Normal file
View File

@ -0,0 +1,97 @@
////
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
https://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.
////
- messages
+
It is quite difficult to know exactly what messages should be output to the console or not, and it often
depends on the user profile: beginner, expert, build manager, simple user, ...
+
Being able to define the messages output in a single and homogeneous way could be a good thing.
+
To allow this, maybe a solution could be to output messages in the code only by using keys:
LOGGER.debug("unhandled.revision", mrid.getRevision());
+
The LOGGER would be a constant initialised with the class name.
+
A profile wold consist in a message.properties file, associating each key (prefixed by the FQCN) to a
message for the given profile. A key with no mapping result in no message at all.
+
It would be possible to disable all messages of a class or activate only a certain level per class
(as in log4j for instance) to customize a profile at runtime
+
Shifting is costly, about 400 calls to messages
- promote task to update an already published module with a new status
+
This task would also automatically update compatibility data (see below)
- tag task to add one or several tags to an already published module
+
Tag could be added in a simple properties file next to the module Ivy file
this properties would be updated by this task
every time Ivy parses an Ivy file, it would try to locate corresponding tag file,
and if any load tags in the module descriptor instance
- compatibility data
+
Tags could be used for to indicate that a module has some compatibility level
with another one: if module A 2.0 has been tested successfully with B 1.0 and thus obtain status milestone,
then a tag `compatible.with.A.2.0=milestone` is put on B 1.0
then latest version matcher code could be updated to handle something like this:
`latest.compatible.milestone`
to be able to get the latest version of a dependency with at least a tag like
`compatible.with.A.[any revision]=milestone`
+
Since all tags should be inspected to know that, maybe using an xml file like this would be better:
<compatible>
<module org="orga" name="A">
<revision name="2.0" status="milestone"/>
</module>
</compatible>
+
This would be cleaner, but less simple, and less flexible than using a tags system, which could be used
for other use cases.
+
Another solution would be to put two tags on B 1.0: one with A revision, and one without. The tag without
the revision could be used for `latest.compatible.*`, meaning that the last compatibility status only would
be used. For instance, A 2.0 is said to be release compatible with B 1.0. using `latest.compatible.release`
is thus resolved to B 1.0. But now A 2.1 is built, and a first test tell that it is (at least) milestone
compatible with B 1.0. The compatibility status of B is thus decreased to milestone, and
`latest.compatible.release` is not resolved anymore to B 1.0, but maybe B 0.9... at least until the release
compatibility tests are done on A. Then if it is release compatible, the tag is put back to the good status,
and if it isn't compatible, the compatibility status is left to milestone, which is ok.
Consequently the main problem with this solution is the time before all the tests are run. So maybe a module
should be promoted (and thus compatibility status updated) only when all tests are done, or when an incompatible
level is reached. Note that this solution is only acceptable in case of automatic tests. When the promotion is
done by a QA team several days or even weeks after the previous status, maybe we can't wait for these tests
to be done...
+
Another solution would be to promote the module at each step, but only update the tag if the compatibility level
is better than the previous one. Another task would then allow to indicate an incompatibility, if some level of
tests then fails.
+
Switching between latest compatible and latest version could also be done without any modification in Ivy file:
use `latest.*` dependency revision, and configure your resolve task to use compatible only versions.
+
This way testing absolute latest version for a continuous integration server would be easy, and if the latest
version fails, latest compatible could be used easily, to test the module in a relative isolation of dependency
changes. In this case the continuous integration server should notify of the first failure before notifying of
the success of the compatible build: integration of latest modules has failed, but not the module itself.
It would thus allow to have more often a latest successful build, even in case of API breaks.

View File

@ -0,0 +1,313 @@
////
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
https://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.
////
== Making a release
=== Requirements
Requirements for making a release are similar to the requirements for building from source, except that Apache Ant 1.9+ is required.
=== Procedure
==== 1. Check the files which needs to be updated for the release.
On the master, check that files which require update for the release are up to date.
This includes particularly:
- `asciidoc/release-notes.adoc`
- `version.properties` (`target.ivy.bundle.version.qualifier` shoud be `final`)
- `ivy.xml` (`status` should be `release`)
==== 2. Check out a clean copy of the branch
Run the following git command to checkout the branch, revert any change and remove untracked and ignored files:
[source,shell]
----
git checkout master
git reset --hard
git clean -d -x -f
----
==== 3. Add Ivy xsd file.
You need to store the current Ivy XML schema in the documentation, so that it will later be accessible on public web site. To do so, run the following command in the directory in which you checked out the release branch:
[source,shell]
----
ant -f build-release.xml release-xsd
----
And commit your changes in the branch:
[source,shell]
----
git add asciidoc/ivy.xsd
git commit -m "release the ivy.xsd"
----
==== 4. Launch the release script
[source,shell]
----
ant -f build-release.xml release
----
The status should be release only for final releases, and milestone for any other intermediate release.
If the release script is successful, release artifacts will be waiting for you in the build/distrib directory.
==== 5. Verify the release
Check that all zips can be opened correctly, and that running `ant` after unzipping the source distribution works properly.
You can also do a smoke test with the generated ivy.jar, to see if it is able to resolve properly a basic module (for instance, you can run some tutorials provided in the src/example directory in all distributions).
==== 6. Sign the artifacts
It's now time to sign the release artifacts and upload them to a location accessible by other Apache committers.
Here is a simple way to sign the files using gnupg:
[source,shell]
----
gpg --armor --output file.zip.asc --detach-sig file.zip
----
Here is a ruby script you can use to sign the files:
[source,ruby]
----
require 'find'
Find.find('build/distrib') do |f|
`gpg --armor --output #{f}.asc --detach-sig #{f}` if File.file?(f) && ['.zip', '.gz', '.jar', '.pom', '.xml', '.json'].include?(File.extname(f))
end
----
Be prepared to enter your passphrase several times if you use this script, gpg will ask for your passphrase for each file to sign.
==== 7. Prepare the Eclipse update site
To be able to test the release within IvyDE, it can be deployed in the IvyDE update site. See link:https://ant.apache.org/ivy/ivyde/history/trunk/dev/updatesite.html[that page] to know how to process.
==== 8. Publish the release candidate
All artifacts in `build/distrib/dist` needs to be published on the 'dist' svn of the ASF, in the *dev* part.
The following command lines should do the job:
NOTE: Make sure to use the right version number in the commit message.
[source,shell]
----
svn checkout -N https://dist.apache.org/repos/dist/dev/ant/ivy build/distrib/dist
svn add build/distrib/dist/*
svn commit build/distrib/dist -m 'Ivy 2.4.0 distribution'
----
==== 9. Publish the Maven artifact to Nexus
Having your GPG key ID, its password, your apache ID and the associated password, just launch Ant and enter the information as required:
[source,shell]
----
ant -f build-release.xml upload-nexus
----
NOTE: the openpgp library used doesn't seem to support modern algorithms. The step failed for Stefan using an ECC key. The workaround is to manually sign all artifacts and using Nexus "upload bundle" feature to uplad a zip of all artifacts and signatures.
Once uploaded, log in https://repository.apache.org/ with your preferred web browser (use your Apache ID).
You should find there an __open__ repository with the name of the form `orgapacheant-XXXX`. It should contain the Maven artifacts: the pom, the jar, the sources, the javadocs and the sha and asc files.
Now __close__ the staging repository, with the description "Ivy 2.0.0-beta1". Closing means you finished the upload and some automatic checks will run. You can see them in the __Activity__ tab of the repository.
Once the checks passed, you can find in the __Summary__ the URL of the staging repository. It will something like: https://repository.apache.org/content/repositories/orgapacheant-XXXX/
==== 10. Create a signed tag
As soon as you are happy with the artifacts to be released, it is time to tag the release
NOTE: Use the right version number for the tag. For example, if you released 2.5.0 of Ivy, then the tag name should be 2.5.0
[source,shell]
----
git tag -s 2.0.0-beta1 -m 'Release Ivy 2.0.0-beta1'
----
And push the changes to the ASF repo
[source,shell]
----
git push --tags
----
==== 11. Call for a vote to approve the release
Cast a vote to approve the release on the dev@ant.apache.org mailing list.
Here is an example:
[source]
----
Subject: [VOTE] Ivy ${version} Release
I have built a release candidate for Ivy ${version}
The git tag of this release is: https://gitbox.apache.org/repos/asf?p=ant-ivy.git;a=tag;h=refs/tags/${version} with the sha1 ${githash-of-tag}
The artifacts has been published to: https://dist.apache.org/repos/dist/dev/ant/ivy/${version} at revision ${svn-rev-of-the-check-in}
The staging Maven repository is available there: https://repository.apache.org/content/repositories/orgapacheant-XXXX
The Eclipse updatesite has been build there: https://dist.apache.org/repos/dist/dev/ant/ivyde/updatesite/ivy-${version}/
Do you vote for the release of these binaries?
[ ] Yes
[ ] No
Regards,
${me}, Ivy ${version} release manager
----
==== 12. Publish the release
If the release is approved, it's now time to make it public. The artifacts in the __dev__ part needs to be moved into the __release__ one:
[source,shell]
----
svn mv https://dist.apache.org/repos/dist/dev/ant/ivy/$VERSION https://dist.apache.org/repos/dist/release/ant/ivy/$VERSION
----
In order to keep the main dist area of a reasonable size, old releases should be removed. They will disappear from the main dist but will still be available via the link:https://archive.apache.org/dist/ant/ivy/[archive]. To do so, just use the `svn rm` command against the artifacts or folders to remove.
==== 13. Promote the Maven staging repository
Go log in https://repository.apache.org/ with your preferred web browser (use your Apache ID).
Select the appropriate `orgapacheant-XXXX` repository and select the __Release__ action.
==== 14. Update the web site
It's time to update the download image used on the home page and the download page. Use site/images/ivy-dl.xcf as a basis if you have link:https://www.gimp.org/[gimp] installed. Then you can update the home page to refer to this image, and add a news item announcing the new version. Update also the download page with the new image and update the links to the download location (using a search/replace on the html source is recommended for this).
The just release documentation should be added to the site. To do so, you need to:
. edit the toc.json file in the site component of Ivy and add a piece of json with a title and an url; note that the version in the url must be the same as the tag in the git repo.
+
[source,json]
----
{
"title":"2.0.0-beta1",
"url":"http://ant.apache.org/ivy/history/2.0.0-beta1/index.html"
}
----
. from the distribution just released, install the doc into the site
+
[source, shell]
----
ant install-doc -Dhistory.version=2.5.0-rc1 -Divy-dist.zip.url=https://dist.apache.org/repos/dist/release/ant/ivy/2.5.0-rc1/apache-ivy-2.5.0-rc1-bin.zip
----
Now let's generate the website with the new toc:
[source,shell]
----
ant /all generate-site
----
You should verify that the site generated in the production directory is OK. You can open the files with your preferred web browser like it was deployed.
And once your happy with it, commit the changes in the source directory, and in the production directory to get it actually deployed via svnpubsub.
Tip: lot's of files might need to be 'added' to svn. An handy command to `add` any file which is not yet under version control is the following one:
[source,shell]
----
svn add --force sources
----
==== 15. Deploy the Eclipse updatesite
If the Eclipse update site has already been prepared to include that new Ivy release, it is now needed to be deployed. Then follow the deployment instruction on link:https://ant.apache.org/ivy/ivyde/history/trunk/dev/updatesite.html[that page].
==== 16. Announce
Announce the release on the dev@ant.apache.org, ivy-user@ant.apache.org, user@ant.apache.org and announce@apache.org mailing lists. Note that announce@apache.org only accepts emails sent with an @apache.org address.
Suggested template:
[source]
----
Subject: [Announce] Release of Apache Ivy ${version}
The Apache Ivy project is pleased to announce its ${version} release.
Apache Ivy is a tool for managing (recording, tracking, resolving and
reporting) project dependencies, characterized by flexibility,
configurability, and tight integration with Apache Ant.
Key features of this ${version} release are:
XXXX INCLUDE THE PARAGRAPH FROM THE RELEASE NOTES XXXX
XXXX SUGGESTED PARAGRAPH FOR RC
As a release candidate version, we strongly encourage the use of this version for
testing and validation. From now on, features are frozen until final ${version} version,
only bug fixes will be applied before ${version}. If no outstanding bugs are reported
with this release candidate, it will promoted to ${version} about three weeks after this
release candidate.
Issues should be reported to:
https://issues.apache.org/jira/browse/IVY
Download the release at:
https://ant.apache.org/ivy/download.cgi
More information can be found on the Ivy website:
https://ant.apache.org/ivy/
Regards,
${me}
----
==== 17. Some Housekeeping
- update `doap_Ivy.rdf` in this repository and add the release.
- log in to https://reporter.apache.org/addrelease.html?ant and add the release information
- mark the version as released and a newr elease version to Jira https://issues.apache.org/jira/projects/IVY?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page
- update Ant's homepage and the news page to anounce the release
- After a few days "svn rm" the older release artifacts from https://dist.apache.org/repos/dist/release/ant/ivy
==== 18. Update this doc
If you feel like anything is missing or misleading in this release doc, update it as soon as you encounter the problem.
==== 19. Merge your modifications back to the master if necessary.
Modifications on the template files do not need to be merged, but if you had troubles during your release you may want to merge your fixes back to the trunk.
==== 20. Prepare next release
In the master branch, update the file version.properties with the version of the next release so that anyone building from the trunk will obtain jar with the correct version number.
If the version just release is a final one (not an alpha, beta or rc), the list of changes should be emptied in doc/release-notes.html, and update there the next expected version. The announcement in the file should also be changed accordingly to the next expected version.
Release the version in link:https://issues.apache.org/jira/browse/IVY[jira], and create a new unreleased version for the next planned version.

42
asciidoc/extend.adoc Normal file
View File

@ -0,0 +1,42 @@
////
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
https://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.
////
Many things are configurable in Ivy, and many things are available with Ivy core. But when you want to do something not built in Ivy core, you can still plug your own code.
Many things are pluggable in Ivy:
* module descriptor parsers
* dependency resolvers
* lock strategies
* latest strategies
* circular dependency strategies
* conflict managers
* report outputters
* version matchers
* triggers
Before trying to implement your own, we encourage you to check if the solution to your problem can be addressed by existing features, or by contributed ones. Do not hesitate to ask for help on the mailing-lists.
If you still don't find what you need, then you'll have to develop your own plugin or find someone who could do that for you.
All Ivy plug-ins use the same code patterns as Ant specific tasks for parameters. This means that if you want to have a `myattribute` of type `String`, you just have to declare a method called `setMyattribute(String val)` on your plug-in. The same applies to child tags, you just have to follow Ant specifications.
All pluggable code in Ivy is located in the link:https://gitbox.apache.org/repos/asf?p=ant-ivy.git;a=tree;f=src/java/org/apache/ivy/plugins[org.apache.ivy.plugins] package. In each package you will find an interface that you must implement to provide a new plugin. We usually also provide an abstract class easing the implementation and making your code more independent of interface changes. We heavily recommend using these abstract classes as a base class.
To understand how your implementation can be done, we suggest looking at existing implementations we provide, it's the best way to get started.

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -0,0 +1,951 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
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
https://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.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 697.32 518.74" xml:space="preserve" viewBox="0 0 680.49139 191.48885" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g transform="translate(.77474 .076835)">
<g stroke="#010101">
<path d="m679.14 164.41c-50.58-12.83-278.12-31.26-340.63-44.1-154.18-31.203-207.09-48.383-338.51-110.78 8.242 13.5 38.485 27.738 51.058 37.347 19.865 10.676 50.899 22.75 68.428 28.635 67.796 22.739 138.83 44.402 211.58 56.294 90.439 14.816 293.15 25.048 348.07 32.605z" stroke-width=".59560" fill="#010101"/>
<linearGradient id="bq" y2="3507.4" gradientUnits="userSpaceOnUse" x2="-3432.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3621.6" x1="-3428.2">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m484.63 188.6-5.271-1.703-4.654-2.01-4.189-2.167-3.721-2.334-3.572-2.471-3.106-2.631-2.953-2.634-2.784-2.943-2.801-2.955-2.642-3.091-2.784-3.259-2.945-3.248-2.953-3.418-3.259-3.409-3.731-3.409-3.873-3.564-2.481-0.306-2.789-0.156-2.79-0.309-2.795-0.316-2.787-0.3-2.79-0.312-2.476-0.153-2.331-0.145 2.79 0.92 3.106 2.03 3.567 3.093 3.881 3.874 4.192 4.65 4.498 4.955 4.654 5.134 4.973 5.102 5.271 4.965 5.284 4.641 5.587 4.029 5.588 3.101 5.74 2.325 5.737 0.923 5.742-0.475 5.888-2.014-0.021-0.01z" stroke-width="0.254" fill="url(#bq)"/>
<linearGradient id="bf" y2="3488.6" gradientUnits="userSpaceOnUse" x2="-3471.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3582.5" x1="-3467.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m503.91 187.82h-3.111l-3.26-0.767-3.411-1.4-3.42-2.009-3.409-2.477-3.586-2.942-3.401-3.259-3.418-3.417-3.259-3.565-3.104-3.718-2.953-3.56-2.792-3.564-2.331-3.259-2.173-3.099-1.703-2.64-1.402-2.167-1.861-0.158h-1.862l-1.861-0.147-1.861-0.153-1.856-0.147-1.711-0.313-1.867-0.15-1.706-0.15-1.7-0.166-1.701-0.143-1.706-0.316-1.716-0.15-1.698-0.15-1.553-0.158h-1.714l-1.543-0.147 4.029 3.57 3.881 3.865 3.887 4.182 3.873 4.185 3.729 4.18 3.884 4.345 3.876 4.029 4.192 3.718 4.188 3.56 4.648 3.101 4.661 2.642 5.124 2.162 5.576 1.397 5.894 0.606 6.354-0.152 6.837-1.097 0.016-0.002z" stroke-width="0.254" fill="url(#bf)"/>
<linearGradient id="au" y2="3512.3" gradientUnits="userSpaceOnUse" x2="-3508.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3612.3" x1="-3504.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m516.58 187.95-2.953-2.021-2.632-2.32-2.642-2.325-2.635-2.315-2.336-2.483-2.479-2.634-2.322-2.629-2.318-2.637-2.183-2.801-2.334-2.62-2.167-2.793-2.328-2.629-2.323-2.789-2.334-2.484-2.32-2.634-2.496-2.481h-5.73l-2.48-0.287-2.477-0.316-2.479-0.309-2.486-0.309-2.483-0.158-2.637 0.008 4.351 6.511 4.188 5.734 4.039 5.263 3.879 4.81 3.723 4.023 3.57 3.729 3.572 3.099 3.573 2.629 3.575 2.325 3.406 1.706 3.415 1.393 3.572 0.772 3.568 0.616 3.567 0.146 3.72-0.304 3.882-0.469-0.026-0.017z" stroke-width="0.254" fill="url(#au)"/>
<linearGradient id="aj" y2="3491.3" gradientUnits="userSpaceOnUse" x2="-3541.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3585.3" x1="-3538.1">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m530.08 187.31-2.948-2.156-2.786-2.173-2.646-2.328-2.479-2.326-2.48-2.31-2.173-2.341-2.176-2.471-2.175-2.323-2.012-2.481-1.869-2.479-2.025-2.476-1.861-2.486-1.859-2.466-1.854-2.491-2.02-2.474-1.869-2.479-16.599-1.545 2.484 2.483 2.789 2.948 2.953 3.406 3.111 3.871 3.262 3.876 3.254 4.039 3.583 4.024 3.404 3.878 3.578 3.716 3.567 3.095 3.567 2.79 3.417 2.025 3.412 1.381 3.267 0.473 3.249-0.62 2.947-1.566-0.013-0.014z" stroke-width="0.254" fill="url(#aj)"/>
<linearGradient id="y" y2="3510.3" gradientUnits="userSpaceOnUse" x2="-3583.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3606.7" x1="-3579.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m557.56 183.74-2.173-0.152-2.48-0.306-2.486-0.612-2.79-0.928-2.79-1.089-2.945-1.242-3.111-1.703-3.103-1.856-3.109-2.173-3.256-2.471-3.106-2.792-3.105-2.942-3.26-3.259-2.953-3.729-2.945-3.871-2.95-4.187-2.64-0.148-2.021-0.147-1.397 0.003-1.393-0.158-1.395-0.158-1.559-0.15-2.167-0.15-2.787-0.467 3.259 4.501 3.262 4.651 3.417 4.638 3.414 4.493 3.578 4.174 3.404 4.2 3.739 3.567 3.72 3.409 3.89 2.779 3.868 2.181 4.028 1.39 4.183 0.775h4.351l4.495-0.938 4.49-2.025 4.812-3.106h0.011z" stroke-width="0.254" fill="url(#y)"/>
<linearGradient id="n" y2="3494" gradientUnits="userSpaceOnUse" x2="-3612.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3588" x1="-3608.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m568.25 181.23-3.731-1.863-3.567-2.168-3.564-2.317-3.415-2.474-3.108-2.489-3.096-2.637-2.961-2.457-2.623-2.489-2.336-2.32-2.173-2.173-1.709-1.858-1.548-1.559-1.244-1.239-0.775-0.77-0.309-0.316-0.772-0.147-1.706-0.158-2.323-0.143-2.795-0.312-3.264-0.152-3.251-0.312-3.417-0.301-3.106-0.158 2.79 4.029 2.953 3.881 2.958 3.718 3.101 3.415 3.254 3.256 3.412 2.942 3.42 2.637 3.726 2.318 3.726 2.164 3.881 1.712 4.182 1.395 4.195 0.918 4.493 0.614 4.653 0.316 4.802-0.324 4.973-0.623-3.726-1.556z" stroke-width="0.254" fill="url(#n)"/>
<linearGradient id="c" y2="3519.2" gradientUnits="userSpaceOnUse" x2="-3648.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3600.6" x1="-3645.4">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m589.5 183.1-2.175-1.234-2.795-1.703-3.099-2.184-3.425-2.325-3.567-2.637-3.718-2.795-3.729-2.784-3.57-2.618-3.425-2.643-3.09-2.483-2.643-2.165-2.175-1.703-1.543-1.403-0.625-0.765v-0.311l-1.711-0.306-2.009-0.158-2.484-0.166-2.483-0.299h-2.633l-2.476-0.145-2.325-0.161h-1.867l2.637 3.104 2.795 3.108 3.104 3.102 3.265 3.253 3.42 3.102 3.569 2.942 3.718 2.795 3.724 2.626 4.042 2.471 4.031 2.012 4.026 1.719 4.189 1.382 4.185 0.772 4.185 0.459 4.042-0.309 4.185-0.775-1.55-0.775z" stroke-width="0.254" fill="url(#c)"/>
<linearGradient id="b" y2="3496.9" gradientUnits="userSpaceOnUse" x2="-3685.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3590.8" x1="-3681.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m612.11 183.7-2.795-1.558-2.637-1.696-2.798-1.708-2.786-1.706-2.637-1.854-2.787-1.861-2.632-1.867-2.795-2.009-2.645-1.856-2.784-1.861-2.647-2.015-2.79-1.849-2.629-1.722-2.805-1.846-2.787-1.709-2.784-1.697-2.643-0.153-2.476-0.163-2.486-0.158-2.486-0.29-2.315-0.169-2.325-0.147-2.181-0.143-2.018-0.155 0.78 0.619 1.712 1.548 2.631 2.323 3.57 2.787 4.045 3.417 4.646 3.56 4.968 3.71 5.276 3.723 5.284 3.404 5.432 3.113 5.109 2.613 4.971 1.864 4.495 1.078 4.032-0.002 3.267-1.087 2.476-2.473-0.026-0.005z" stroke-width="0.254" fill="url(#b)"/>
<linearGradient id="a" y2="3562.4" gradientUnits="userSpaceOnUse" x2="-3715.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3606.1" x1="-3714.9">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m627.66 183.99-2.953-0.62-3.259-1.086-3.412-1.551-3.409-1.851-3.573-2.173-3.414-2.164-3.412-2.477-3.262-2.476-3.262-2.483-2.789-2.311-2.645-2.339-2.329-2.02-1.855-1.7-1.4-1.247-0.928-0.929-0.312-0.467-0.47-0.145-1.244-0.158-1.856-0.155-2.325-0.15-2.635-0.15-2.631 0.002-2.945-0.158-2.645-0.158 6.212 3.876 5.585 3.718 5.123 3.57 4.81 3.249 4.34 2.953 3.884 2.784 3.57 2.479 3.411 2.167 3.111 1.861 2.945 1.551 2.79 1.073 2.632 0.788 2.646 0.446 2.632-0.15 2.629-0.467 2.64-0.931 0.005-0.001z" stroke-width="0.254" fill="url(#a)"/>
<linearGradient id="ca" y2="3536.2" gradientUnits="userSpaceOnUse" x2="-3739.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3631.3" x1="-3753.7">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m638.96 182.28-2.481-0.611-2.483-0.783-2.323-1.076-2.488-1.252-2.16-1.39-2.339-1.543-2.162-1.703-2.17-1.714-2.181-1.856-2.17-1.856-2.012-1.861-2.02-2.015-2.02-1.863-1.856-1.709-2.027-1.701-1.859-1.703-2.481-0.155-2.47-0.298-2.337-0.147-2.167-0.169-2.328-0.301-2.315-0.147-2.333-0.164-2.484-0.152 0.939 0.938 1.55 1.382 2.004 2.02 2.647 2.32 2.948 2.795 3.411 2.79 3.729 2.945 3.879 2.786 4.034 2.795 4.351 2.463 4.182 2.018 4.343 1.55 4.182 1.084 4.045 0.293 3.879-0.617 3.56-1.393h-0.017z" stroke-width="0.254" fill="url(#ca)"/>
<linearGradient id="bz" y2="3563.4" gradientUnits="userSpaceOnUse" x2="-3772.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3607.2" x1="-3772.1">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m649.98 177.78-2.649-0.312-2.471-0.608-2.477-0.625-2.333-0.765-2.32-1.087-2.176-1.083-2.024-1.247-2.01-1.239-1.7-1.546-1.717-1.55-1.545-1.551-1.4-1.708-1.097-1.712-1.094-1.851-0.778-1.867-2.479-0.145-2.64-0.301-2.48-0.158-2.326-0.301-2.167-0.158-2.015-0.152-1.861-0.307-1.709-0.168 2.793 2.494 2.792 2.629 2.792 2.792 2.945 2.626 2.953 2.632 2.953 2.483 3.101 2.474 2.953 2.02 3.099 1.854 3.101 1.39 3.104 0.938 3.111 0.612 3.106-0.158 3.105-0.623 3.091-1.399 3.098-2.168-2.629-0.155z" stroke-width="0.254" fill="url(#bz)"/>
<linearGradient id="by" y2="3527.3" gradientUnits="userSpaceOnUse" x2="-3796.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3622.5" x1="-3811.3">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m662.69 174.98-2.173-0.47-2.006-0.617-1.87-0.611-1.848-0.622-1.706-0.768-1.709-0.772-1.542-0.775-1.405-0.923-1.39-1.097-1.411-0.926-1.242-1.236-1.239-1.245-1.239-1.395-1.244-1.553-1.097-1.562-2.64-0.145-2.325-0.158-2.176-0.15-2.004-0.153-2.024-0.155-2.015-0.309-1.861-0.15-1.864-0.16 0.934 2.642 1.397 2.637 1.861 2.315 2.17 2.178 2.486 2.004 2.634 1.706 2.951 1.558 3.111 1.393 3.253 0.926 3.26 0.931 3.411 0.464 3.104 0.153 3.268-0.006 2.939-0.464 2.792-0.78 2.643-1.076-2.184-0.629z" stroke-width="0.254" fill="url(#by)"/>
<linearGradient id="bx" y2="3564.4" gradientUnits="userSpaceOnUse" x2="-3823.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.1" x1="-3822.6">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m667.97 172.49-3.724-1.543-3.733-2.02-3.713-2.01-3.108-2.02-2.333-1.708-1.385-1.237v-0.619l-1.089 0.003-1.086-0.003-1.245-0.147-1.392-0.158-1.39-0.153-1.551-0.155-1.247-0.146-1.387-0.169 1.239 2.021 1.399 1.861 1.854 1.858 2.175 1.701 2.176 1.559 2.479 1.384 2.486 1.242 2.483 1.094 2.476 0.771 2.484 0.777 2.32 0.456 2.173 0.153h1.861l1.7-0.316 1.405-0.617 0.934-0.926-3.261-0.933z" stroke-width="0.254" fill="url(#bx)"/>
<linearGradient id="bw" y2="3564.6" gradientUnits="userSpaceOnUse" x2="-3837.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.4" x1="-3836.4">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m675.73 169.06-1.556-0.464-1.866-0.775-2.012-0.765-2.168-1.089-2.024-0.931-1.854-0.928-1.566-0.781-0.929-0.616-12.092-1.379 0.155 0.308 0.773 0.617 1.244 0.926 1.7 1.242 1.867 1.407 2.328 1.543 2.326 1.542 2.483 1.4 2.483 1.242 2.323 0.926 2.323 0.777 2.02 0.306 1.703-0.309 1.234-0.63 0.777-1.393 0.316-2.17 0.012-0.006z" stroke-width="0.254" fill="url(#bw)"/>
<linearGradient id="bv" y2="3550.8" gradientUnits="userSpaceOnUse" x2="-3852" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3578.8" x1="-3851.6">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m663.92 163.65 2.637 1.395 2.953 1.548 2.789 1.408 2.793 0.767 2.175-0.005 1.39-1.395 0.472-2.956-2.336-0.459-2.017-0.311-2.012-0.148-1.864-0.16-2.018-0.15-2.17-0.147-2.323-0.158-2.639-0.158 2.17 0.929z" stroke-width="0.254" fill="url(#bv)"/>
<linearGradient id="bu" y2="3564.9" gradientUnits="userSpaceOnUse" x2="-3852.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.6" x1="-3851.9">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m662.21 161.18 2.022-0.628 2.635-0.928 3.104-0.783 3.103-0.609 2.943 0.135 2.175 0.777 1.397 2.173-0.152 3.417-2.331-0.622-2.173-0.469-1.859-0.467-1.855-0.462-2.025-0.306-2.012-0.459-2.323-0.309-2.645-0.456-0.004-0.004z" stroke-width="0.254" fill="url(#bu)"/>
<linearGradient id="bt" y2="3725.2" gradientUnits="userSpaceOnUse" x2="-3477.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3591.5" x1="-3436.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m500.88 98.168-3.562-0.617-3.873 0.158-3.879 0.934-3.876 1.561-4.037 2.012-3.876 2.492-3.86 2.784-3.886 3.101-3.565 3.267-3.56 3.418-3.262 3.414-2.945 3.412-2.787 3.111-2.333 3.101-2.004 2.647-1.548 2.162-1.867-0.312-2.017-0.15-1.851-0.3-1.867-0.161-1.709-0.153-1.854-0.303-1.866-0.166-1.709-0.143-1.706-0.158-1.861-0.147-1.703-0.153-1.714-0.158-1.551-0.309-1.706-0.158-1.703-0.155-1.556-0.29 4.49-3.272 4.346-3.572 4.335-3.729 4.337-3.876 4.351-4.034 4.479-3.884 4.493-3.721 4.654-3.423 4.807-2.953 4.97-2.639 5.113-1.859 5.584-1.255 5.737-0.306 6.038 0.459 6.526 1.695 6.821 2.639 0.012-0.011z" stroke-width="0.254" fill="url(#bt)"/>
<linearGradient id="bs" y2="3761.1" gradientUnits="userSpaceOnUse" x2="-3569.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3655" x1="-3496.2">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m512.49 100.8-3.259 1.408-3.104 1.703-3.106 1.714-2.942 2.018-2.787 2.325-2.637 2.334-2.787 2.32-2.637 2.48-2.634 2.64-2.483 2.642-2.629 2.632-2.629 2.626-2.479 2.647-2.792 2.647-2.632 2.483-2.79 2.32-3.098-0.475-2.645-0.453-2.32-0.312-2.176-0.306-2.162-0.312-2.333-0.158-2.474-0.287-2.795-0.158 5.121-6.359 4.801-5.743 4.496-5.126 4.487-4.495 4.185-3.89 4.026-3.251 3.887-2.8 3.87-2.176 3.724-1.711 3.564-1.086 3.721-0.778 3.557-0.313 3.736 0.313 3.557 0.617 3.729 0.918 3.887 1.395-0.018 0.007z" stroke-width="0.254" fill="url(#bs)"/>
<linearGradient id="br" y2="3705.2" gradientUnits="userSpaceOnUse" x2="-3543.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3571.6" x1="-3502.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m525.54 104.21-3.415 1.402-3.256 1.551-3.104 1.711-2.948 2.012-2.786 2.021-2.64 2.178-2.479 2.32-2.484 2.325-2.167 2.331-2.32 2.489-2.162 2.637-2.175 2.479-2.157 2.479-2.02 2.483-2.17 2.489-2.17 2.481-16.912-2.01 2.792-2.322 2.953-2.801 3.404-3.259 3.403-3.562 3.727-3.878 3.873-3.734 4.021-3.73 4.034-3.567 4.034-3.259 4.029-2.79 3.871-2.173 3.881-1.556 3.56-0.77 3.564 0.301 3.272 1.239 2.945 2.479v0.004z" stroke-width="0.254" fill="url(#br)"/>
<linearGradient id="bp" y2="3722.2" gradientUnits="userSpaceOnUse" x2="-3625.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3616.1" x1="-3552.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m550.98 115.03-2.479 0.011h-2.629l-2.645 0.3-2.624 0.319-2.789 0.617-2.948 0.777-2.787 0.929-2.947 1.252-3.111 1.548-2.948 1.867-3.104 2.178-3.245 2.476-3.104 2.951-3.254 3.417-3.104 3.723-3.251 4.188-2.803-0.454-2.312-0.316-2.022-0.3-1.854-0.312-1.867-0.306-2.017-0.158-2.474-0.143-2.953-0.163 3.724-4.493 3.718-4.501 3.712-4.501 3.876-4.188 3.724-4.034 4.034-3.733 3.865-3.256 4.028-2.787 4.032-2.02 4.185-1.562 4.187-0.622 4.34 0.153 4.346 1.239 4.343 2.164 4.501 3.246 4.648 4.504 0.008-0.01z" stroke-width="0.254" fill="url(#bp)"/>
<linearGradient id="bo" y2="3683" gradientUnits="userSpaceOnUse" x2="-3616.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3549.3" x1="-3576">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m569.13 119.21-4.346 0.931-4.187 1.408-4.021 1.553-3.728 1.719-3.718 2.004-3.418 2.025-3.101 2.167-2.947 2.02-2.632 2.181-2.328 2.01-2.004 1.716-1.714 1.701-1.39 1.405-1.089 1.081-0.778 0.622-0.306 0.306-0.772 0.006-2.02-0.147-2.629-0.327-3.409-0.459-3.731-0.464-3.73-0.464-3.721-0.451-3.251-0.467 3.251-4.034 3.265-3.733 3.401-3.409 3.572-3.109 3.558-2.792 3.876-2.483 3.72-2.176 4.029-1.698 4.034-1.402 4.192-0.934 4.337-0.627 4.501-0.006 4.49 0.312 4.807 0.765 4.808 1.392 5.133 1.872-0.004-0.014z" stroke-width="0.254" fill="url(#bo)"/>
<linearGradient id="bn" y2="3682.4" gradientUnits="userSpaceOnUse" x2="-3683.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3576.3" x1="-3610.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m592.09 121.98-2.007 0.467-2.494 0.777-3.085 1.248-3.428 1.565-3.71 1.852-4.042 2.009-4.032 2.181-3.867 2.186-3.874 2.154-3.72 2.178-3.262 2.025-2.79 1.698-2.325 1.563-1.54 1.084-0.772 0.774-0.006 0.312h-1.708l-2.32-0.147-2.64-0.312-2.953-0.303-2.948-0.314-2.792-0.303-2.476-0.304-2.007-0.152 2.942-2.953 3.246-2.948 3.567-2.945 3.573-2.803 4.026-2.639 4.028-2.64 4.185-2.173 4.182-2.015 4.501-1.714 4.34-1.397 4.488-0.928 4.501-0.478 4.345-0.003 4.488 0.465 4.192 1.244 4.187 1.692 0.007-0.003z" stroke-width="0.254" fill="url(#bn)"/>
<linearGradient id="bm" y2="3659.3" gradientUnits="userSpaceOnUse" x2="-3694.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3525.6" x1="-3654.1">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m613.8 126.44-2.95 1.081-2.945 1.258-2.945 1.236-2.79 1.408-2.786 1.244-2.953 1.388-2.785 1.55-2.789 1.416-2.787 1.548-2.95 1.553-2.785 1.554-2.795 1.402-2.787 1.556-2.95 1.545-2.787 1.411-2.953 1.399-2.789-0.466-2.787-0.467-2.953-0.296-2.942-0.316-2.793-0.155-2.645-0.298-2.471-0.312-2.173-0.469 0.932-0.473 2.006-1.39 2.953-1.855 3.863-2.489 4.653-2.948 5.123-2.953 5.424-3.105 5.894-2.948 5.732-2.64 5.89-2.333 5.585-1.709 5.12-1.083h4.646l4.034 0.759 3.259 2.018 2.175 3.409 0.001-0.03z" stroke-width="0.254" fill="url(#bm)"/>
<linearGradient id="bl" y2="3562.9" gradientUnits="userSpaceOnUse" x2="-3744.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3606.7" x1="-3743.9">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m639.08 133.74h-2.486l-2.489 0.47-2.624 0.767-2.484 0.936-2.642 1.239-2.621 1.244-2.486 1.556-2.479 1.556-2.477 1.712-2.483 1.705-2.479 1.704-2.325 1.55-2.326 1.701-2.17 1.41-2.175 1.387-2.471-0.3-2.334-0.316-2.007-0.312-2.17-0.147-2.03-0.147-2.004-0.309-2.325-0.314-2.479-0.3 0.928-0.781 1.698-1.239 2.326-1.861 2.944-2.022 3.257-2.17 3.721-2.483 4.182-2.331 4.192-2.325 4.485-2.025 4.495-1.703 4.648-1.413 4.509-0.765 4.335-0.003 4.034 0.602 3.871 1.405 3.417 2.471-2.476-0.149z" stroke-width="0.254" fill="url(#bl)"/>
<linearGradient id="bk" y2="3541" gradientUnits="userSpaceOnUse" x2="-3707.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3636.1" x1="-3722.4">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m631.33 129.41-3.721 0.003-3.726 0.451-3.876 0.791-3.884 1.233-3.876 1.556-3.868 1.72-3.57 2.014-3.562 2.015-3.251 2.022-2.953 2.025-2.789 1.858-2.323 1.709-1.858 1.392-1.396 1.256-1.094 0.765-0.306 0.321-0.617 0.143-1.403-0.143-1.851-0.316-2.481-0.316-2.797-0.451-2.787-0.316-2.793-0.298-2.483-0.16 6.676-3.109 6.036-3.101 5.579-2.8 5.123-2.635 4.646-2.486 4.335-2.331 3.882-1.858 3.73-1.717 3.394-1.244 3.27-1.092 2.948-0.617 2.789-0.152 2.787 0.3 2.642 0.623 2.787 1.239 2.643 1.711v-0.005z" stroke-width="0.254" fill="url(#bk)"/>
<linearGradient id="bj" y2="3532.6" gradientUnits="userSpaceOnUse" x2="-3762.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3627.8" x1="-3777.1">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m653.98 141.79-2.789-0.316-2.632-0.292-2.642-0.003-2.635 0.147-2.476 0.316-2.352 0.456-2.315 0.625-2.17 0.771-2.015 0.931-2.024 1.094-1.695 1.097-1.551 1.393-1.556 1.551-1.234 1.708-1.091 1.714-0.929 2.01-2.645-0.301-2.632-0.316-2.795-0.298-2.628-0.319-2.481-0.295-2.326-0.465-2.017-0.155-1.859-0.309 3.254-2.009 3.259-2.342 3.252-2.325 3.414-2.168 3.415-2.183 3.409-2.173 3.262-1.698 3.401-1.708 3.256-1.103 3.417-0.777 3.257-0.304 3.108 0.146 3.101 0.931 2.951 1.545 2.942 2.325 2.797 3.101h-0.006z" stroke-width="0.254" fill="url(#bj)"/>
<linearGradient id="bi" y2="3524.4" gradientUnits="userSpaceOnUse" x2="-3815.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3619.6" x1="-3830.5">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m673.07 152-3.884-0.145-3.876 0.625-4.031 1.086-3.567 1.255-3.101 1.387-2.643 1.245-1.545 0.934-0.617 0.316h-1.236l-1.247-0.169-1.548-0.147-1.711-0.301-1.701-0.312-1.698-0.306-1.389-0.312 1.542-1.866 1.711-1.709 2.162-1.55 2.331-1.245 2.471-1.092 2.64-0.925 2.795-0.631 2.631-0.461 2.79-0.15 2.481-0.005 2.48 0.147 2.168 0.464 1.861 0.622 1.709 0.923 1.239 1.084 0.782 1.242v-0.004z" stroke-width="0.254" fill="url(#bi)"/>
<linearGradient id="bh" y2="3564.7" gradientUnits="userSpaceOnUse" x2="-3838.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.4" x1="-3837.6">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m675.09 158.06-2.02 0.005-2.167 0.301-2.17 0.464-2.165 0.617-1.859 0.62-1.7 0.472-1.095 0.453-12.411-2.159 0.316-0.146 0.773-0.614 1.553-0.625 1.861-0.928 2.165-0.934 2.483-0.931 2.634-0.936 2.632-0.931 2.787-0.62 2.483-0.312 2.326-0.163 2.015 0.316 1.7 0.77 1.097 1.245 0.614 1.866-0.142 2.466-1.71-0.296z" stroke-width="0.254" fill="url(#bh)"/>
<linearGradient id="bg" y2="3564" gradientUnits="userSpaceOnUse" x2="-3802.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3607.7" x1="-3802">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m666.55 147.98-1.864-0.303-2.02-0.155-2.01 0.005-2.012 0.15-2.02 0.161-1.864 0.311-2.012 0.47-1.861 0.622-1.856 0.611-1.717 0.781-1.703 0.928-1.548 0.934-1.39 1.092-1.241 1.083-1.087 1.247-0.933 1.38-2.637-0.293-2.489-0.464-2.326-0.148-2.164-0.316-2.17-0.311-2.025-0.146-1.851-0.313-2.022-0.158 1.395-2.787 1.703-2.483 2.17-2.168 2.629-1.866 2.792-1.551 2.951-1.242 3.256-1.097 3.257-0.627 3.406-0.293 3.417-0.003 3.254 0.443 3.265 0.619 3.259 0.937 2.953 1.387 2.637 1.551 2.478 2.012z" stroke-width="0.254" fill="url(#bg)"/>
<linearGradient id="be" y2="3635.3" gradientUnits="userSpaceOnUse" x2="-2786.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3729.3" x1="-2818.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m114.4 73.81 0.771 0.309 0.774 0.316 0.606 0.158 0.62 0.313 0.633 0.146 0.772 0.309 0.62 0.163 0.772 0.301-0.628 2.015-0.76 2.325-0.622 2.331-0.459 2.637-0.616 2.637-0.47 2.795-0.301 2.935-0.306 2.956-0.153 2.947-0.147 2.798v2.945l0.158 2.795 0.306 2.787 0.459 2.476 0.475 2.476 0.78 2.339-4.814-1.556-3.723-2.167-2.637-2.779-1.709-3.114-0.777-3.409-0.203-3.712 0.321-3.729 0.923-3.882 1.224-3.718 1.405-3.728 1.548-3.262 1.566-2.945 1.392-2.484 1.079-2.009 0.777-1.247 0.312-0.475 0.032 0.007z" stroke-width="0.254" fill="url(#be)"/>
<linearGradient id="bd" y2="3627" gradientUnits="userSpaceOnUse" x2="-2811.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3721" x1="-2843.1">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m119.63 75.969 1.092 0.314 1.239 0.306 1.545 0.469 1.408 0.454 1.693 0.467 1.708 0.616 1.872 0.615 1.852 0.622-0.923 3.259-0.765 3.106-0.628 3.411-0.459 3.257-0.298 3.417-0.166 3.257 0.005 3.411 0.164 3.265 0.306 3.254 0.47 3.105 0.475 3.091 0.616 3.111 0.628 2.787 0.775 2.787 0.928 2.48 0.929 2.481h-1.556l-1.704-0.153-1.855-0.303-2.188-0.775-2.004-1.078-2.021-1.408-2.009-2.009-1.867-2.481-1.402-3.099-1.244-3.723-0.931-4.34-0.314-5.121 0.153-5.896 0.765-6.663 1.548-7.752 2.164-8.54v-0.001z" stroke-width="0.254" fill="url(#bd)"/>
<linearGradient id="bc" y2="3617.2" gradientUnits="userSpaceOnUse" x2="-2839.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3711.2" x1="-2871.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m132.21 79.848 1.078 0.301 1.406 0.475 1.547 0.617 1.862 0.614 1.861 0.619 1.866 0.617 1.856 0.617 1.556 0.617-0.931 3.253-0.617 3.42-0.614 3.268-0.306 3.409-0.298 3.409v3.259l0.155 3.409 0.312 3.257 0.622 3.259 0.617 3.259 0.934 3.111 0.928 3.251 1.244 2.945 1.406 3.101 1.705 2.942 1.709 2.801-4.487 1.244-3.893-0.163-3.401-1.229-2.958-2.326-2.315-3.101-2.021-3.876-1.396-4.493-1.102-4.807-0.775-5.128-0.47-5.273-0.008-5.269 0.166-5.276 0.29-4.807 0.633-4.34 0.918-3.887 0.934-3.101h-0.013z" stroke-width="0.254" fill="url(#bc)"/>
<linearGradient id="bb" y2="3606.6" gradientUnits="userSpaceOnUse" x2="-2871.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3700.5" x1="-2903.2">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m171.7 144.17-1.866-1.078-1.706-1.695-1.553-2.339-1.248-2.782-1.086-3.264-0.944-3.724-0.69-3.892-0.633-4.192-0.453-4.177-0.47-4.498-0.155-4.34-0.158-4.188-0.156-4.179-0.163-4.048v-3.56-3.257l-2.02-0.611-1.856-0.617-2.02-0.622-1.852-0.62-1.872-0.617-1.851-0.461-1.722-0.628-1.709-0.611-1.39 4.81-0.923 5.126-0.469 5.275 0.011 5.269 0.316 5.271 0.774 5.269 1.25 5.126 1.556 4.814 2.02 4.487 2.173 4.029 2.64 3.56 3.104 2.958 3.259 2.162 3.56 1.545 4.039 0.623 4.198-0.324h0.065z" stroke-width="0.254" fill="url(#bb)"/>
<linearGradient id="ba" y2="3517.5" gradientUnits="userSpaceOnUse" x2="-2978.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3636.1" x1="-2999.2">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#6E2A80" offset=".0752"/>
<stop stop-color="#81287F" offset=".1935"/>
<stop stop-color="#A2237C" offset=".3399"/>
<stop stop-color="#D11C75" offset=".5088"/>
<stop stop-color="#ED2272" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m160.58 89.115 0.316 5.276 0.006 5.121 0.158 5.12 0.15 4.957 0.171 4.965 0.158 4.654 0.448 4.498 0.633 4.343 0.944 3.884 1.239 3.723 1.708 3.396 2.179 2.953 2.637 2.483 3.105 2.162 3.724 1.551 4.487 1.086-2.173-2.009-1.708-2.494-1.4-2.943-1.236-3.253-0.772-3.418-0.783-3.72-0.465-4.026-0.306-4.04-0.158-4.023-0.163-4.203-0.006-4.171-0.005-3.881-0.153-3.879-0.158-3.726-0.163-3.401-0.313-3.106-1.537-0.619-1.562-0.467-1.397-0.459-1.55-0.464-1.563-0.312-1.39-0.464-1.551-0.462-1.556-0.619 0.005-0.013z" stroke-width="0.254" fill="url(#ba)"/>
<linearGradient id="az" y2="3585.4" gradientUnits="userSpaceOnUse" x2="-2935.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3658.3" x1="-2945.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m201.74 155.31-4.656-5.421-3.733-5.263-3.102-5.424-2.483-5.123-1.698-4.963-1.408-4.814-0.791-4.638-0.458-4.192-0.169-4.034 0.158-3.567 0.316-3.109 0.301-2.787 0.464-2.178 0.316-1.711 0.306-1.089 0.158-0.459-1.719-0.462-1.554-0.308-1.39-0.467-1.545-0.459-1.571-0.459-1.387-0.472-1.551-0.459-1.703-0.462 0.316 4.338 0.306 4.656v4.957l0.011 5.284v5.11l0.163 5.286 0.47 5.107 0.62 4.962 1.094 4.815 1.692 4.337 2.036 3.879 2.789 3.412 3.576 2.631 4.332 2.015 5.281 1.239 6.201 0.295 0.012-0.003z" stroke-width="0.254" fill="url(#az)"/>
<linearGradient id="ay" y2="3580.8" gradientUnits="userSpaceOnUse" x2="-2967" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3653.7" x1="-2977.5">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m222.87 161.97-3.578-2.945-3.259-3.407-2.956-3.723-2.474-4.029-2.33-4.192-1.867-4.335-1.703-4.345-1.408-4.493-1.247-4.49-0.778-4.343-0.774-4.188-0.456-3.881-0.325-3.726-0.152-3.243 0.147-2.956 0.153-2.479-14.739-4.644-1.239 5.898-0.617 5.889 0.163 6.201 0.775 6.06 1.25 6.027 1.877 5.898 2.331 5.579 2.626 5.126 3.117 4.809 3.417 4.335 3.729 3.567 3.87 2.94 4.034 2.17 4.029 1.405 4.192 0.29 4.192-0.77v-0.005z" stroke-width="0.254" fill="url(#ay)"/>
<linearGradient id="ax" y2="3496.7" gradientUnits="userSpaceOnUse" x2="-2989.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3657.5" x1="-3006.5">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m199.52 100.89 0.312 8.369 0.786 7.916 1.244 7.121 1.571 6.679 2.004 6.191 2.342 5.421 2.473 4.968 2.79 4.189 3.106 3.879 3.105 3.096 3.27 2.473 3.259 2.025 3.26 1.393 3.259 0.77 3.248 0.153 3.101-0.465-2.631-2.33-2.168-2.632-2.02-2.79-1.708-3.264-1.396-3.412-1.249-3.707-0.941-3.731-0.771-3.873-0.617-4.034-0.469-4.023-0.306-4.203-0.475-4.029-0.158-4.028-0.301-3.887-0.172-3.865-0.309-3.57-2.175-0.464-2.787-0.772-3.259-0.921-3.265-1.091-3.401-0.931-3.27-1.084-2.953-0.775-2.32-0.765-0.009 0.003z" stroke-width="0.254" fill="url(#ax)"/>
<linearGradient id="aw" y2="3570.6" gradientUnits="userSpaceOnUse" x2="-3037.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3643.5" x1="-3048.3">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m258.98 168.14-3.116-2.94-2.79-2.945-2.336-3.108-2.167-3.243-1.709-3.265-1.55-3.262-1.245-3.403-1.086-3.418-0.788-3.569-0.763-3.56-0.627-3.718-0.465-3.895-0.633-3.863-0.469-4.034-0.459-4.019-0.464-4.205-2.336-0.614-2.01-0.62-1.708-0.45-1.872-0.475-1.693-0.454-1.697-0.618-1.874-0.469-2.168-0.462 0.475 4.032 0.304 4.495 0.316 4.81 0.152 5.281 0.475 5.271 0.47 5.266 0.77 5.438 1.248 4.962 1.563 4.957 2.012 4.343 2.797 3.879 3.407 3.248 4.045 2.647 5.12 1.692 5.894 0.62 6.989-0.33-0.012-0.002z" stroke-width="0.254" fill="url(#aw)"/>
<linearGradient id="av" y2="3489" gradientUnits="userSpaceOnUse" x2="-3064.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3649.8" x1="-3080.9">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m277.76 171.54-1.861-1.4-2.015-1.551-1.866-1.7-1.861-2.17-1.709-2.323-1.856-2.481-1.725-2.945-1.55-3.251-1.556-3.575-1.556-3.723-1.393-4.338-1.255-4.493-1.092-4.965-1.092-5.268-0.928-5.738-0.777-6.059-2.334-0.467-2.004-0.617-1.722-0.298-1.537-0.459-1.714-0.311-1.703-0.467-1.862-0.451-2.183-0.475 0.327 3.723 0.464 4.346 0.472 4.656 0.772 4.968 0.78 5.258 1.092 5.126 1.405 5.266 1.854 4.97 2.179 4.81 2.488 4.487 3.102 3.876 3.569 3.259 4.192 2.632 4.81 1.692 5.43 0.775 6.204-0.311 0.011-0.008z" stroke-width="0.254" fill="url(#av)"/>
<linearGradient id="at" y2="3565.3" gradientUnits="userSpaceOnUse" x2="-3104.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3648.3" x1="-3110.6">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m295.44 173.85-2.5-1.855-2.631-2.315-2.489-2.795-2.325-3.265-2.331-3.406-2.165-3.56-2.175-3.876-2.021-4.029-1.708-4.042-1.562-4.185-1.55-3.876-1.092-4.028-1.092-3.718-0.617-3.415-0.469-3.262-0.153-2.937-2.009-0.475-1.867-0.462-1.856-0.451-1.872-0.466-1.855-0.467-1.872-0.465-1.862-0.464-1.861-0.311 0.628 3.733 0.617 4.177 0.777 4.65 1.095 4.815 1.249 5.109 1.406 5.118 1.711 5.118 2.165 4.814 2.486 4.641 2.795 4.345 3.262 3.721 3.567 3.246 4.34 2.473 4.656 1.72 5.278 0.765 5.901-0.316v-0.004z" stroke-width="0.254" fill="url(#at)"/>
<linearGradient id="as" y2="3522.6" gradientUnits="userSpaceOnUse" x2="-3134.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3632.3" x1="-3142">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m314.81 177.4-3.099-0.923-2.945-1.708-2.637-2.326-2.645-2.939-2.322-3.409-2.173-3.884-2.02-4.032-1.867-4.329-1.714-4.515-1.556-4.329-1.387-4.335-1.25-4.192-1.097-4.034-0.929-3.56-0.77-3.101-0.775-2.634-2.015-0.316-2.02-0.467-2.024-0.459-2.168-0.611-2.173-0.47-2.164-0.617-2.176-0.461-2.32-0.451 0.003 1.543 0.461 2.634 0.775 3.564 0.934 4.351 1.561 5.11 1.856 5.271 2.178 5.593 2.484 5.732 3.116 5.429 3.401 5.271 3.733 4.648 4.341 3.868 4.661 3.106 5.115 2.004 5.596 0.775 6.032-0.783-0.001-0.014z" stroke-width="0.254" fill="url(#as)"/>
<linearGradient id="ar" y2="3520.6" gradientUnits="userSpaceOnUse" x2="-3164.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3630.3" x1="-3171.9">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m328.94 176.62-3.56-2.167-3.27-2.325-2.942-2.474-2.947-2.795-2.474-2.787-2.491-3.098-2.171-3.254-1.866-3.412-1.867-3.412-1.548-3.417-1.405-3.564-1.25-3.718-0.923-3.576-0.943-3.715-0.765-3.721-0.475-3.564-1.403-0.166-1.233-0.298-1.397-0.316-1.562-0.306-1.397-0.312-1.545-0.303-1.711-0.156-1.695-0.303 0.765 2.942 0.931 3.718 0.936 4.192 1.245 4.644 1.556 4.973 1.561 5.12 2.015 5.11 2.184 4.962 2.639 4.662 2.945 4.321 3.259 3.567 3.573 2.953 4.189 2.168 4.509 1.081 4.952-0.006 5.574-1.239 0.007-0.009z" stroke-width="0.254" fill="url(#ar)"/>
<linearGradient id="aq" y2="3476.5" gradientUnits="userSpaceOnUse" x2="-3185.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3637.2" x1="-3202.3">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m346.62 179.42-4.814-2.939-4.346-3.104-3.718-3.099-3.111-2.947-2.784-3.106-2.331-3.101-1.877-3.251-1.698-3.109-1.405-3.253-1.242-3.106-0.923-3.254-0.934-3.256-0.785-3.251-0.938-3.265-0.771-3.406-0.938-3.26-1.856-0.469-2.024-0.312-1.862-0.453-2.009-0.313-2.009-0.301-2.17-0.467-2.022-0.309-2.015-0.456 0.934 5.725 1.397 5.587 1.563 5.426 1.866 5.121 2.323 4.804 2.483 4.656 2.795 4.18 2.953 3.889 3.412 3.407 3.407 3.09 3.886 2.635 3.871 2.159 4.2 1.556 4.332 1.081 4.504 0.469 4.646-0.01 0.01 0.012z" stroke-width="0.254" fill="url(#aq)"/>
<linearGradient id="ap" y2="3472.4" gradientUnits="userSpaceOnUse" x2="-3224.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3633.2" x1="-3241.6">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m371.74 182.32-4.341-1.698-4.036-2.012-4.032-2.325-3.73-2.477-3.56-2.792-3.272-2.942-3.105-3.085-2.798-3.42-2.626-3.415-2.326-3.572-2.03-3.718-1.851-3.718-1.551-3.713-1.26-3.887-0.929-3.876-0.611-3.87-2.025-0.464-2.02-0.307-2.025-0.464-1.855-0.316-1.867-0.303-1.846-0.301-1.867-0.472-1.711-0.307 0.946 5.59 1.239 5.58 1.725 5.426 2.01 5.279 2.32 4.951 2.805 4.646 3.106 4.348 3.423 3.868 3.718 3.712 4.179 3.111 4.507 2.629 4.807 2.012 5.125 1.548 5.43 0.931 5.888 0.304 6.054-0.478-0.008-0.003z" stroke-width="0.254" fill="url(#ap)"/>
<linearGradient id="ao" y2="3538.8" gradientUnits="userSpaceOnUse" x2="-3257.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3611.7" x1="-3268.4">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m385.54 183.86-5.123-2.474-4.487-2.479-4.034-2.474-3.578-2.634-3.101-2.476-2.785-2.792-2.483-2.629-2.173-2.953-2.02-2.945-1.867-3.093-1.716-3.26-1.864-3.569-1.709-3.724-1.861-4.039-1.859-4.172-2.175-4.503-2.184-0.306-1.848-0.309-1.546-0.309-1.402-0.15-1.39-0.158-1.397-0.158-1.561-0.15-1.698-0.301 0.928 5.261 1.408 5.134 1.861 4.962 2.173 4.799 2.632 4.487 2.958 4.361 3.415 4.021 3.567 3.715 3.878 3.406 4.19 2.956 4.49 2.624 4.503 2.17 4.802 1.854 4.976 1.239 4.965 0.768 5.121 0.303-0.006-0.003z" stroke-width="0.254" fill="url(#ao)"/>
<linearGradient id="an" y2="3465.9" gradientUnits="userSpaceOnUse" x2="-3287.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3626.7" x1="-3304.4">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m410.36 185.4-4.654-1.864-4.34-2.01-4.343-2.167-4.028-2.315-3.89-2.483-3.712-2.784-3.584-2.79-3.256-2.942-3.259-3.267-2.953-3.259-2.785-3.56-2.642-3.568-2.317-3.867-2.339-4.026-2.02-4.346-1.864-4.351-1.405-0.143-1.846-0.311-2.179-0.307-2.48-0.464-2.328-0.309-2.32-0.309-1.867-0.316-1.39-0.147 2.009 4.81 2.179 4.968 2.339 4.81 2.639 4.793 2.787 4.82 2.953 4.487 3.417 4.343 3.731 4.021 4.021 3.728 4.509 3.243 4.807 2.801 5.427 2.312 5.894 1.708 6.356 1.084 7.141 0.295 7.602-0.311-0.01-0.007z" stroke-width="0.254" fill="url(#an)"/>
<linearGradient id="am" y2="3529.5" gradientUnits="userSpaceOnUse" x2="-3321.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3602.4" x1="-3332.5">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m425.1 187.56-3.573-2.787-3.394-3.111-3.422-3.09-3.41-3.415-3.419-3.401-3.262-3.409-3.257-3.412-3.101-3.56-3.111-3.422-3.106-3.417-3.108-3.249-2.945-3.104-2.95-2.784-2.953-2.787-2.79-2.331-2.795-2.162-0.777-0.469-1.548-0.306-1.867-0.314-2.17-0.15-2.479-0.311-2.473-0.153-2.331-0.295-2.328-0.322 2.333 5.59 2.798 5.427 3.256 5.11 3.56 4.814 4.045 4.653 4.192 4.335 4.501 3.876 4.654 3.718 4.807 3.251 4.812 2.942 4.814 2.484 4.81 2.001 4.805 1.701 4.658 1.086 4.338 0.617 4.188 0.152v0.004z" stroke-width="0.254" fill="url(#am)"/>
<linearGradient id="al" y2="3459.2" gradientUnits="userSpaceOnUse" x2="-3353.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3619.9" x1="-3369.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m447.75 187.55-3.106-0.928-3.101-1.387-3.105-1.859-3.262-2.167-3.257-2.484-3.259-2.784-3.412-3.114-3.417-3.401-3.423-3.401-3.564-3.723-3.575-3.73-3.567-3.71-3.724-3.724-3.736-3.72-3.876-3.568-3.873-3.564-2.025-0.301-2.314-0.464-2.481-0.459-2.481-0.321-2.32-0.47-2.333-0.155-1.999-0.298h-1.722l4.965 4.174 4.974 4.651 4.965 5.117 4.812 5.121 4.81 5.263 4.817 5.269 4.651 4.957 4.501 4.814 4.495 4.185 4.501 3.71 4.346 2.95 4.337 2.17 4.346 1.089 4.189-0.003 4.177-1.089 4.039-2.649 0.007 0.003z" stroke-width="0.254" fill="url(#al)"/>
<linearGradient id="ak" y2="3519.5" gradientUnits="userSpaceOnUse" x2="-3391" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3592.4" x1="-3401.6">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m465.28 189.56-5.595-2.95-5.118-3.248-4.812-3.562-4.499-3.868-4.182-3.884-4.037-4.034-3.575-3.868-3.567-3.881-3.111-3.705-3.104-3.417-2.95-3.262-2.792-2.781-2.803-2.323-2.629-1.711-2.64-1.242-2.637-0.609-0.928 0.003-1.548-0.164-1.859-0.155-2.336-0.298-2.317-0.163-2.334-0.301-1.856-0.147-1.548-0.164 4.343 3.718 4.19 3.876 4.026 4.188 3.884 4.335 3.884 4.334 3.729 4.192 3.873 4.18 4.037 4.026 4.031 3.726 4.354 3.404 4.492 3.098 4.807 2.486 5.282 1.999 5.434 1.561 6.041 0.612 6.37-0.006v0.005z" stroke-width="0.254" fill="url(#ak)"/>
<linearGradient id="ai" y2="3911" gradientUnits="userSpaceOnUse" x2="-2863.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3777.4" x1="-2823.4">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m120.12 61.873 0.912 0.316 0.78 0.146 0.622 0.306 0.614 0.321 0.631 0.147 0.762 0.316 0.625 0.153 0.77 0.147 0.456-2.483 0.462-2.632 0.617-2.942 0.627-3.114 0.763-3.101 0.788-3.251 0.765-3.267 0.928-3.104 1.095-3.257 1.073-3.108 1.091-2.79 1.234-2.789 1.239-2.481 1.397-2.325 1.387-1.859 1.562-1.556-4.805-1.239-4.187 0.158-3.412 1.245-2.652 2.172-2.315 2.948-1.54 3.572-1.255 4.034-0.923 4.185-0.453 4.499-0.148 4.34-0.152 4.187 0.158 3.876 0.158 3.265 0.158 2.632 0.158 1.7v0.62l0.01 0.013z" stroke-width="0.254" fill="url(#ai)"/>
<linearGradient id="ah" y2="3898.3" gradientUnits="userSpaceOnUse" x2="-2891.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3768.7" x1="-2843.8">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m125.71 64.186 0.928 0.306 0.728 0.164 0.633 0.306 0.612 0.152 0.622 0.312 0.936 0.312 1.396 0.142 1.851 0.314 0.788-3.721 0.921-3.573 0.931-3.409 0.92-3.409 1.086-3.262 1.239-3.111 1.245-3.101 1.392-2.945 1.393-2.8 1.545-2.64 1.714-2.626 1.714-2.486 2.004-2.476 1.867-2.179 2.156-2.322 2.173-2.012-1.239-0.932-1.408-0.931-1.55-0.77-1.695-0.617-1.701-0.316-2.032 0.158-1.854 0.622-2.172 1.403-2.021 2.015-2.162 2.789-2.156 3.882-2.184 4.809-2.156 6.044-2.168 7.293-2.162 8.538-2.02 10.077h-0.114z" stroke-width="0.254" fill="url(#ah)"/>
<linearGradient id="ag" y2="3896.5" gradientUnits="userSpaceOnUse" x2="-2911.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3762.9" x1="-2871.3">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m133.61 67.139 0.932 0.312 1.392 0.608 1.706 0.625 1.867 0.768 2.014 0.772 2.025 0.619 1.867 0.615 1.688 0.461 0.622-4.026 0.77-3.884 0.778-3.726 1.078-3.56 1.086-3.409 1.397-3.259 1.388-3.109 1.714-3.111 1.703-2.789 1.856-2.795 2.009-2.795 2.325-2.474 2.326-2.331 2.481-2.325 2.628-2.334 2.79-2.017-3.57-3.555-3.412-2.022-3.575-0.616-3.564 0.616-3.412 1.723-3.248 2.631-3.102 3.415-2.953 4.034-2.784 4.501-2.473 4.804-2.315 4.973-2.025 5.118-1.534 4.965-1.234 4.656-0.785 4.192-0.459 3.718 0.003 0.011z" stroke-width="0.254" fill="url(#ag)"/>
<linearGradient id="af" y2="3878.4" gradientUnits="userSpaceOnUse" x2="-2945.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3748.8" x1="-2897.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m194.02 26.449-2.795 0.765-2.621 1.405-2.494 1.858-2.468 2.326-2.184 2.637-2.156 3.101-2.02 3.264-1.852 3.581-1.703 3.718-1.714 3.871-1.695 4.042-1.534 4.034-1.411 3.876-1.551 3.876-1.233 3.884-1.403 3.564-2.014-0.306-1.852-0.625-2.022-0.456-2.012-0.775-1.864-0.622-1.864-0.606-1.855-0.47-1.864-0.469 0.614-5.732 1.236-5.59 1.553-5.574 2.01-5.284 2.32-4.967 2.629-4.81 3.104-4.346 3.085-3.723 3.414-3.259 3.573-2.79 3.723-2.025 3.876-1.244 3.729-0.464 3.876 0.464 3.723 1.393 3.718 2.48v-0.002z" stroke-width="0.254" fill="url(#af)"/>
<linearGradient id="ae" y2="3877.4" gradientUnits="userSpaceOnUse" x2="-2974.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3743.8" x1="-2934.3">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m211.13 31.084-5.568 2.025-4.973 2.8-4.335 3.104-3.887 3.718-3.248 3.879-2.953 4.192-2.326 4.192-1.998 4.189-1.703 4.189-1.237 4.029-1.094 3.729-0.765 3.254-0.464 2.786-0.459 2.018-0.158 1.556-0.147 0.606-1.709-0.301-1.709-0.459-1.556-0.611-1.542-0.479-1.563-0.612-1.551-0.459-1.55-0.467-1.709-0.149 2.015-4.501 1.858-4.81 1.706-5.118 1.852-5.12 1.851-4.963 2.025-4.978 2.004-4.81 2.33-4.343 2.632-3.876 2.932-3.267 3.265-2.635 3.721-1.705 4.189-0.781 4.651 0.153 5.273 1.397 5.896 2.621 0.004 0.007z" stroke-width="0.254" fill="url(#ae)"/>
<linearGradient id="ad" y2="3855.8" gradientUnits="userSpaceOnUse" x2="-3006.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3726.2" x1="-2959">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m233.12 34.327-4.33 1.709-4.034 2.17-3.886 2.483-3.56 2.951-3.249 3.27-3.101 3.411-2.938 3.724-2.642 3.876-2.32 3.873-2.176 3.892-1.851 3.874-1.867 3.723-1.548 3.57-1.239 3.254-1.244 3.116-0.92 2.632-15.979-4.172 0.772-6.829 1.382-6.359 2.178-6.21 2.779-5.734 3.264-5.435 3.549-4.96 4.045-4.355 4.33-3.871 4.501-3.111 4.49-2.488 4.646-1.867 4.656-0.928 4.34-0.164 4.33 0.622 4.037 1.698 3.572 2.637h0.013z" stroke-width="0.254" fill="url(#ad)"/>
<linearGradient id="ac" y2="3858.3" gradientUnits="userSpaceOnUse" x2="-3037.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3724.6" x1="-2997.4">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m192.08 86.3 3.248-8.844 3.418-8.068 3.707-6.977 3.729-6.204 3.859-5.281 4.034-4.654 4.019-3.729 4.045-2.945 4.019-2.333 3.876-1.551 3.884-0.938 3.718-0.306 3.562 0.303 3.27 0.934 3.09 1.393 2.8 1.858-3.253 1.239-3.254 1.712-2.953 2.175-2.632 2.643-2.637 2.942-2.483 3.259-2.326 3.423-2.153 3.718-2.013 4.036-2.02 4.032-1.854 4.036-1.706 4.177-1.698 4.195-1.708 4.034-1.709 4.031-1.545 3.876-2.173-0.617-2.626-0.762-2.953-0.775-3.096-1.081-3.27-0.928-2.955-0.931-2.945-0.617-2.315-0.462v-0.013z" stroke-width="0.254" fill="url(#ac)"/>
<linearGradient id="ab" y2="3846.1" gradientUnits="userSpaceOnUse" x2="-3078" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3712.5" x1="-3037.5">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m269.88 45.609-3.87 1.864-3.726 2.015-3.243 2.173-3.114 2.491-2.787 2.643-2.481 2.784-2.468 2.945-2.331 3.27-2.004 3.262-2.024 3.567-2.004 3.567-1.859 3.879-1.854 3.881-1.864 4.023-1.854 4.195-2.025 4.185-2.32-0.453-2.014-0.307-1.862-0.467-1.703-0.461-1.708-0.464-1.709-0.322-1.858-0.448-2.165-0.311 1.849-4.192 1.854-4.651 2.02-5.12 2.17-5.273 2.165-5.427 2.314-5.429 2.632-5.126 2.789-4.81 3.26-4.348 3.403-3.575 4.034-2.801 4.18-1.854 4.807-0.777 5.281 0.458 5.732 2.015 6.359 3.407v-0.008z" stroke-width="0.254" fill="url(#ab)"/>
<linearGradient id="aa" y2="3817.6" gradientUnits="userSpaceOnUse" x2="-3110.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3688" x1="-3062.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m289.12 51.179-3.101 0.459-2.959 0.63-2.778 1.086-2.643 1.25-2.631 1.703-2.479 2.021-2.479 2.325-2.479 2.637-2.326 3.267-2.468 3.404-2.323 3.892-2.486 4.335-2.637 4.814-2.615 5.273-2.784 5.737-2.79 6.21-2.479-0.467-2.178-0.309-1.867-0.461-1.851-0.47-1.709-0.306-1.856-0.459-2.024-0.464-2.326-0.459 1.712-3.876 1.843-4.501 2.173-4.648 2.473-5.129 2.643-5.117 2.942-4.973 3.243-4.805 3.412-4.656 3.729-4.039 4.034-3.418 4.329-2.789 4.498-1.867 4.963-0.775 5.123 0.307 5.424 1.55 5.745 3.096-0.018-0.008z" stroke-width="0.254" fill="url(#aa)"/>
<linearGradient id="z" y2="3827.6" gradientUnits="userSpaceOnUse" x2="-3139.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3693.9" x1="-3098.8">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m303.72 55.353-3.265 0.934-3.248 1.55-3.265 2.015-3.406 2.481-3.259 2.642-3.254 3.101-3.259 3.431-3.101 3.404-2.948 3.726-2.626 3.726-2.637 3.731-2.168 3.72-2.014 3.721-1.704 3.414-1.381 3.42-0.934 3.099-2.01-0.313-1.872-0.454-1.7-0.306-1.706-0.312-1.551-0.469-1.714-0.312-1.703-0.453-1.856-0.459 1.698-3.884 1.852-4.185 2.024-4.656 2.466-4.814 2.48-4.815 2.943-4.809 3.101-4.651 3.248-4.34 3.729-3.876 3.865-3.42 4.188-2.645 4.335-1.856 4.819-0.944 4.946-0.005 5.295 1.25 5.585 2.631 0.007-0.018z" stroke-width="0.254" fill="url(#z)"/>
<linearGradient id="x" y2="3796.8" gradientUnits="userSpaceOnUse" x2="-3166.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3667.2" x1="-3119">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m321.25 59.84-3.576-0.142-3.554 0.611-3.417 1.402-3.423 2.173-3.248 2.64-3.249 3.259-3.105 3.567-2.943 3.884-2.8 4.19-2.615 4.034-2.484 4.187-2.314 4.185-2.176 3.731-1.854 3.569-1.561 3.26-1.393 2.634-2.009-0.309-2.025-0.309-1.856-0.301-2.009-0.467-2.025-0.466-2.02-0.462-2.015-0.459-2.322-0.469 0.456-1.551 0.933-2.642 1.709-3.56 2.17-4.195 2.629-4.807 3.243-4.971 3.57-5.117 4.028-4.979 4.33-4.646 4.651-4.203 4.967-3.56 5.121-2.479 5.268-1.562 5.585-0.158 5.59 1.397 5.737 3.091h0.006z" stroke-width="0.254" fill="url(#x)"/>
<linearGradient id="w" y2="3810.3" gradientUnits="userSpaceOnUse" x2="-3196.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3676.6" x1="-3155.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m333.97 64.797-4.338 0.929-4.034 1.244-3.723 1.706-3.724 2.025-3.417 2.325-3.101 2.486-3.09 2.784-2.795 3.106-2.629 3.265-2.481 3.417-2.151 3.417-2.173 3.721-1.867 3.718-1.708 3.73-1.703 3.879-1.396 3.868-1.39-0.293-1.249-0.316-1.234-0.467-1.402-0.464-1.245-0.453-1.397-0.467-1.545-0.462-1.864-0.313 1.551-3.101 1.706-3.718 2.167-4.349 2.325-4.656 2.785-4.962 2.942-4.973 3.259-4.799 3.417-4.509 3.707-4.188 3.876-3.415 4.188-2.8 4.338-1.867 4.653-0.772 4.651 0.459 4.962 1.861 5.126 3.407 0.003-0.003z" stroke-width="0.254" fill="url(#w)"/>
<linearGradient id="v" y2="3777.7" gradientUnits="userSpaceOnUse" x2="-3218.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3648.1" x1="-3170.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m350.12 68.494-5.593 1.392-5.11 1.717-4.493 2.018-4.034 2.175-3.564 2.483-3.259 2.643-2.784 2.945-2.632 2.955-2.162 3.104-2.03 3.412-1.698 3.259-1.708 3.412-1.382 3.575-1.408 3.412-1.39 3.573-1.39 3.409-2.024-0.296-2.012-0.469-2.018-0.62-2.009-0.461-2.015-0.622-2.027-0.467-2.007-0.309-2.015-0.312 2.312-6.038 2.787-5.742 2.789-5.43 3.249-4.965 3.406-4.503 3.573-4.034 3.718-3.727 3.873-3.108 4.182-2.642 4.192-2.173 4.177-1.395 4.493-0.934 4.351-0.316 4.648 0.313 4.49 1.076 4.509 1.708 0.015-0.018z" stroke-width="0.254" fill="url(#v)"/>
<linearGradient id="u" y2="3791.7" gradientUnits="userSpaceOnUse" x2="-3257.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3658" x1="-3217.3">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m373.05 73.926-4.812 0.316-4.641 0.775-4.504 1.239-4.337 1.402-4.032 1.856-3.881 2.183-3.713 2.326-3.406 2.795-3.104 2.947-2.787 3.26-2.637 3.417-2.325 3.57-2.162 3.881-1.698 4.034-1.551 4.023-1.092 4.343-2.167-0.309-2.167-0.306-2.179-0.301-2.156-0.316-2.036-0.301-2.167-0.316-1.867-0.306-1.855-0.311 2.167-6.038 2.474-5.593 2.642-5.429 3.096-5.121 3.401-4.653 3.58-4.195 4.029-3.723 4.019-3.265 4.495-2.637 4.646-2.018 4.965-1.405 5.12-0.77 5.43 0.15 5.426 0.762 5.901 1.562 5.893 2.468h-0.008z" stroke-width="0.254" fill="url(#u)"/>
<linearGradient id="t" y2="3755.9" gradientUnits="userSpaceOnUse" x2="-3277.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3626.3" x1="-3230">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m384.38 75.149-5.732 1.249-5.12 1.403-4.341 1.545-4.028 1.719-3.409 2.021-3.111 2.167-2.787 2.328-2.479 2.64-2.315 2.789-2.015 3.111-2.017 3.254-2.165 3.417-2.024 3.871-2.157 3.881-2.481 4.346-2.64 4.504-2.009-0.312-1.856-0.461-1.55-0.316-1.556-0.301-1.556-0.314-1.551-0.306-1.551-0.155-1.861-0.143 1.54-5.745 2.025-5.432 2.471-4.968 2.786-4.651 3.254-4.187 3.417-3.724 3.863-3.417 4.031-2.953 4.343-2.483 4.49-2.021 4.662-1.556 4.954-1.244 4.973-0.622 5.118-0.158 5.11 0.459 5.274 0.765z" stroke-width="0.254" fill="url(#t)"/>
<linearGradient id="s" y2="3773.6" gradientUnits="userSpaceOnUse" x2="-3317.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3640" x1="-3276.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m409.03 78.39-4.948 1.25-4.817 1.399-4.644 1.551-4.501 1.717-4.332 2.017-4.188 2.018-4.034 2.317-3.873 2.494-3.721 2.798-3.56 2.939-3.262 3.262-3.101 3.578-2.939 3.718-2.793 4.034-2.483 4.19-2.312 4.65-1.4-0.158-1.697-0.145-1.87-0.464-2.009-0.465-2.03-0.306-1.859-0.469-1.7-0.148-1.245-0.152 2.479-5.121 2.477-4.967 2.787-4.968 2.947-4.646 3.249-4.503 3.417-4.188 3.715-3.887 4.172-3.411 4.351-3.12 4.807-2.317 5.273-1.872 5.737-1.239 6.201-0.627 6.666 0.306 7.29 1.086 7.752 1.852v-0.003z" stroke-width="0.254" fill="url(#s)"/>
<linearGradient id="r" y2="3765.8" gradientUnits="userSpaceOnUse" x2="-3343.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3632.1" x1="-3302.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m423.76 79.927-4.177 2.178-4.337 2.479-4.029 2.643-4.185 2.95-4.034 2.956-4.028 3.248-3.871 3.272-3.887 3.262-3.707 3.248-3.729 3.111-3.554 3.111-3.415 2.953-3.414 2.79-3.257 2.483-3.088 2.173-3.116 1.864-0.77 0.15-1.239-0.148-1.562-0.475-1.856-0.458-2.17-0.459-2.181-0.462-2.159-0.309-2.175-0.158 2.947-5.893 3.409-5.435 3.871-4.962 4.189-4.651 4.646-4.192 4.804-3.729 4.957-3.42 5.266-2.955 5.273-2.487 5.278-2.012 5.263-1.556 5.134-1.097 5.113-0.777 4.962-0.156 4.509 0.153 4.324 0.765h-0.005z" stroke-width="0.254" fill="url(#r)"/>
<linearGradient id="q" y2="3756.1" gradientUnits="userSpaceOnUse" x2="-3375.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3622.4" x1="-3334.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m444.4 85.793-4.493 0.475-4.346 0.778-4.187 1.397-4.034 1.709-3.874 2.024-3.726 2.331-3.56 2.637-3.723 2.784-3.562 3.109-3.557 3.259-3.575 3.267-3.724 3.265-3.718 3.406-4.034 3.272-4.021 3.259-4.188 3.101-2.012 0.008h-4.971l-2.623-0.15-2.483-0.15-2.479-0.166-2.022-0.15-1.704-0.295 5.593-3.73 5.571-4.19 5.577-4.503 5.576-4.815 5.43-4.809 5.426-4.82 5.432-4.493 5.269-4.351 5.266-3.56 4.97-3.116 4.96-2.326 4.648-1.249 4.493-0.312 4.351 0.934 4.187 2.314 3.882 3.871-0.015-0.015z" stroke-width="0.254" fill="url(#q)"/>
<linearGradient id="p" y2="3755.3" gradientUnits="userSpaceOnUse" x2="-3454.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3641.9" x1="-3354">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m459.93 87.645-6.052 2.024-5.587 2.64-5.271 2.948-5.112 3.272-4.648 3.417-4.49 3.572-4.177 3.718-3.881 3.57-3.726 3.417-3.56 3.268-3.412 2.95-3.104 2.483-3.104 2.01-2.945 1.413-2.792 0.762-2.787 0.008-0.937-0.15-1.537-0.166-2.024-0.29-2.318-0.318-2.333-0.146-2.331-0.316-2.02-0.306-1.537-0.15 4.799-3.267 4.812-3.412 4.482-3.887 4.493-3.879 4.498-4.034 4.338-4.031 4.49-3.733 4.498-3.721 4.648-3.262 4.805-2.953 4.965-2.328 5.109-1.867 5.439-1.094 5.73-0.312 6.048 0.614 6.519 1.543 0.012-0.007z" stroke-width="0.254" fill="url(#p)"/>
<linearGradient id="o" y2="3735.2" gradientUnits="userSpaceOnUse" x2="-3477.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3621.8" x1="-3376.5">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m479.47 93.079-5.426 1.241-4.965 1.408-4.341 1.553-4.031 1.867-3.721 2.007-3.409 2.175-3.254 2.334-2.953 2.48-2.939 2.637-3.106 2.795-2.942 2.938-3.105 2.959-3.401 2.945-3.56 3.108-3.882 3.101-4.335 3.267-2.634-0.16-2.95-0.156-3.106-0.467-3.104-0.3-3.098-0.475-2.945-0.454-2.645-0.459-2.474-0.313 2.942-0.472 3.415-1.556 3.873-2.632 4.182-3.422 4.648-4.021 5.115-4.351 5.273-4.659 5.424-4.656 5.732-4.182 5.886-3.89 6.051-3.259 6.057-2.333 6.033-1.25h5.893l6.057 1.384 5.737 3.262 0.008 0.006z" stroke-width="0.254" fill="url(#o)"/>
<g stroke-width="0.254">
<linearGradient id="m" y2="3588.2" gradientUnits="userSpaceOnUse" x2="-2809.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3797.2" x1="-2874.7">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m103.82 29.46 0.472 1.551 0.301 1.703 0.316 1.866 0.153 1.867 0.163 2.015 0.158 2.164v2.018l0.153 2.02 0.005 2.01v3.572l0.147 1.717v1.397l0.172 1.078 0.15 1.089 0.295 0.617-1.382-3.111-1.405-3.096-1.405-3.409-1.556-3.414-1.392-3.565-1.39-3.56-1.253-3.575-0.928-3.718-0.78-3.729-0.473-3.718v-3.723l0.304-3.724 0.77-3.564 1.397-3.406 1.861-3.576 2.474-3.256-0.461 1.7-0.454 1.867-0.321 1.851-0.147 1.859-0.143 1.864 0.005 2.02 0.143 2.017 0.146 1.859 0.171 2.025 0.306 1.858 0.47 2.009 0.475 1.859 0.459 1.703 0.617 1.714 0.616 1.701 0.775 1.553h0.016z" fill="url(#m)"/>
<linearGradient id="l" y2="3592.6" gradientUnits="userSpaceOnUse" x2="-2795.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3801.6" x1="-2860.7">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m56.531 93.846 2.8 0.143 2.801-0.15 2.784-0.467 2.79-0.925 2.789-1.092 2.632-1.4 2.795-1.551 2.631-1.866 2.785-2.012 2.637-2.184 2.637-2.173 2.631-2.476 2.479-2.328 2.484-2.479 2.479-2.494 2.479-2.468-2.795 1.545-2.774 1.563-2.652 1.384-2.474 1.562-2.642 1.55-2.483 1.709-2.463 1.556-2.643 1.556-2.468 1.698-2.494 1.561-2.637 1.711-2.637 1.551-2.784 1.709-2.784 1.706-2.948 1.869-2.953 1.708v-0.016z" fill="url(#l)"/>
<linearGradient id="k" y2="3590.5" gradientUnits="userSpaceOnUse" x2="-2802.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3799.5" x1="-2867.4">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m79.592 31.814 3.259 0.304 3.096 0.616 2.637 0.931 2.484 1.09 2.172 1.392 2.018 1.556 1.869 1.548 1.545 1.864 1.397 2.004 1.261 2.015 1.076 2.02 0.933 2.173 0.923 2.162 0.775 2.175 0.78 2.022 0.623 2.01-1.405-1.862-1.393-1.855-1.405-1.862-1.551-1.708-1.395-1.852-1.548-1.703-1.556-1.708-1.551-1.714-1.719-1.551-1.714-1.703-1.698-1.551-1.861-1.387-1.867-1.397-2.006-1.397-2.025-1.395-2.17-1.25 0.016 0.013z" fill="url(#k)"/>
<linearGradient id="j" y2="3584.8" gradientUnits="userSpaceOnUse" x2="-2820.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3793.7" x1="-2885.8">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m102.7 13.16 2.01 1.703 1.708 1.861 1.556 2.178 1.09 2.32 0.931 2.634 0.78 2.793 0.472 2.784 0.309 3.108 0.158 3.093 0.153 3.265-0.148 3.259-0.152 3.265-0.306 3.406-0.314 3.417-0.456 3.26-0.306 3.409-0.638-2.943-0.606-2.792-0.465-2.789-0.472-2.79-0.478-2.79-0.3-2.637-0.475-2.795-0.327-2.784-0.464-2.789-0.316-2.79-0.465-2.792-0.308-2.943-0.473-2.792-0.622-3.101-0.459-3.106-0.617-3.105v-0.017z" fill="url(#j)"/>
<linearGradient id="i" y2="3592.2" gradientUnits="userSpaceOnUse" x2="-2796.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3801.2" x1="-2861.8">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m86.094 8.092 0.301 4.182 0.791 3.721 0.929 3.101 1.241 2.787 1.247 2.481 1.546 2.181 1.716 2.004 1.551 2.009 1.722 2.03 1.54 2.168 1.566 2.325 1.239 2.629 1.244 3.098 0.772 3.418 0.62 4.028 0.316 4.644-1.551-1.693-1.872-2.183-2.167-2.312-2.484-2.795-2.637-2.787-2.642-3.098-2.474-3.26-2.331-3.253-2.017-3.41-1.717-3.417-1.244-3.414-0.617-3.254 0.161-3.265 0.762-3.101 1.688-2.953 2.803-2.621-0.002 0.01z" fill="url(#i)"/>
<linearGradient id="h" y2="3585.3" gradientUnits="userSpaceOnUse" x2="-2818.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3794.3" x1="-2884.1">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m105.97 57.688-0.316-1.55-0.617-1.859-0.923-1.858-0.934-2.176-1.102-2.159-1.092-2.484-0.76-2.634-0.785-2.792-0.312-2.942 0.147-3.268 0.612-3.259 1.252-3.56 1.852-3.726 2.629-3.884 3.718-4.189 4.503-4.346-1.244 2.792-0.923 2.787-1.089 2.795-0.772 2.784-0.612 2.79-0.765 2.79-0.464 2.95-0.472 2.784-0.298 2.8-0.307 2.943-0.311 2.945-0.147 2.953-0.158 3.111-0.143 3.095-0.155 3.102v3.259l-0.012 0.006z" fill="url(#h)"/>
<linearGradient id="g" y2="3593.5" gradientUnits="userSpaceOnUse" x2="-2792.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3802.5" x1="-2857.8">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m60.544 68.409 2.646 1.864 2.623 1.548 2.642 1.092 2.632 0.775 2.652 0.604 2.632 0.158h2.64l2.48-0.158 2.468-0.309 2.471-0.627 2.328-0.615 2.326-0.782 2.178-0.768 2.167-0.937 2.015-0.774 2.02-0.932-2.325 0.304-2.479 0.321-2.33 0.307-2.483 0.16-2.323 0.156-2.484 0.306h-2.32l-2.479 0.158h-4.809l-2.497-0.146-2.466-0.155-2.483-0.304-2.474-0.303-2.489-0.472-2.479-0.462v-0.009z" fill="url(#g)"/>
<linearGradient id="f" y2="3594.7" gradientUnits="userSpaceOnUse" x2="-2788.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3803.7" x1="-2854">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m74.993 80.984 3.111-1.247 3.412-1.862 3.56-2.02 3.412-2.167 3.412-2.015 2.789-1.875 2.326-1.241 1.703-0.617-3.412 0.775-3.416 0.625-3.721 0.763-3.876 0.785-3.878 0.934-3.871 0.934-3.718 1.244-3.723 1.239-3.573 1.403-3.446 1.7-3.105 2.025-2.785 2.17-2.494 2.64-1.998 2.784-1.709 3.274-1.093 3.716 1.095-1.397 1.231-1.242 1.249-1.242 1.388-1.244 1.561-1.087 1.551-1.097 1.708-1.081 1.703-0.934 1.867-0.928 1.698-0.775 1.851-0.611 1.878-0.786 1.851-0.467 1.867-0.461 1.695-0.306 1.866-0.316 0.034 0.007z" fill="url(#f)"/>
<linearGradient id="e" y2="3588.3" gradientUnits="userSpaceOnUse" x2="-2809.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3797.2" x1="-2874.5">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m67.888 108.74 2.017-4.023 2.015-3.27 2.168-2.795 2.172-2.32 2.168-1.864 2.32-1.553 2.336-1.551 2.315-1.402 2.325-1.397 2.325-1.403 2.32-1.855 2.326-2.021 2.173-2.642 2.314-2.948 2.184-3.723 2.151-4.504-2.009 1.25-2.632 1.393-3.111 1.568-3.243 1.701-3.578 1.858-3.721 2.181-3.56 2.168-3.417 2.483-3.256 2.486-2.945 2.798-2.481 2.942-1.851 2.948-1.247 3.105-0.465 3.409 0.475 3.418 1.396 3.567 0.016-0.004z" fill="url(#e)"/>
<linearGradient id="d" y2="3582.6" gradientUnits="userSpaceOnUse" x2="-2827.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3791.6" x1="-2892.6">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m106.91 70.526-1.256 1.095-1.387 1.247-1.861 1.084-2.009 1.241-2.173 1.237-2.323 1.402-2.167 1.703-2.181 2.021-1.852 2.178-1.703 2.642-1.399 3.101-0.932 3.42-0.464 4.021 0.164 4.656 0.774 5.12 1.562 5.896 0.611-2.956 0.617-2.792 0.78-2.632 0.765-2.79 0.929-2.637 1.097-2.479 1.086-2.634 1.234-2.642 1.233-2.481 1.397-2.486 1.403-2.629 1.397-2.481 1.54-2.483 1.703-2.634 1.703-2.637 1.709-2.643v-0.028z" fill="url(#d)"/>
</g>
</g>
</g>
<g stroke="#000" stroke-width="2" fill="#fff" transform="translate(.77474 .076835)">
<path d="m172.88 122.2h-16.574l-2.303 7.799h-14.906l17.757-47.244h15.924l17.753 47.244h-15.288l-2.363-7.799zm-3.028-10.216-5.215-16.983-5.16 16.983h10.375z"/>
<path d="m195.11 82.756h24.267c5.285 0 9.244 1.257 11.875 3.771s3.948 6.091 3.948 10.731c0 4.77-1.434 8.497-4.302 11.183s-7.246 4.028-13.132 4.028h-7.992v17.531h-14.663v-47.244zm14.664 20.141h3.577c2.814 0 4.791-0.488 5.93-1.466s1.708-2.229 1.708-3.754c0-1.482-0.495-2.739-1.482-3.771-0.988-1.031-2.847-1.547-5.575-1.547h-4.157v10.538z"/>
<path d="m266.27 122.2h-16.574l-2.303 7.799h-14.906l17.757-47.244h15.924l17.753 47.244h-15.288l-2.363-7.799zm-3.028-10.216-5.215-16.983-5.16 16.983h10.375z"/>
<path d="m318.82 110.66 12.794 3.867c-0.859 3.588-2.213 6.585-4.061 8.991s-4.141 4.222-6.88 5.446-6.225 1.837-10.458 1.837c-5.135 0-9.33-0.746-12.584-2.238s-6.064-4.116-8.427-7.874c-2.364-3.757-3.545-8.566-3.545-14.428 0-7.815 2.079-13.821 6.236-18.019s10.039-6.296 17.644-6.296c5.951 0 10.629 1.204 14.035 3.609 3.405 2.406 5.935 6.102 7.589 11.086l-12.891 2.868c-0.451-1.439-0.924-2.492-1.418-3.158-0.817-1.117-1.816-1.977-2.997-2.578-1.182-0.601-2.503-0.902-3.964-0.902-3.309 0-5.844 1.331-7.605 3.992-1.333 1.974-1.998 5.075-1.998 9.302 0 5.236 0.794 8.826 2.385 10.767 1.59 1.942 3.824 2.913 6.703 2.913 2.792 0 4.903-0.784 6.333-2.353 1.428-1.568 2.465-3.846 3.109-6.832z"/>
<path d="m338.77 82.756h14.599v16.532h15.952v-16.532h14.663v47.244h-14.663v-19.11h-15.952v19.11h-14.599v-47.244z"/>
<path d="m393.65 82.756h39.123v10.087h-24.492v7.509h22.72v9.636h-22.72v9.313h25.201v10.699h-39.832v-47.244z"/>
<path d="m492.4 122.2h-16.574l-2.302 7.799h-14.906l17.757-47.244h15.924l17.753 47.244h-15.287l-2.365-7.799zm-3.028-10.216-5.214-16.983-5.161 16.983h10.375z"/>
<path d="m514.79 82.756h13.632l17.789 26.138v-26.138h13.761v47.244h-13.761l-17.692-25.94v25.94h-13.729v-47.244z"/>
<path d="m566.36 82.756h44.376v11.666h-14.889v35.578h-14.599v-35.578h-14.889v-11.666z"/>
</g>
<g stroke="#000" stroke-width="2" fill="#fff" transform="translate(.77474 .076835)">
<path d="m145.15 35.753h32.273v8.484h-10.828v25.875h-10.617v-25.875h-10.828v-8.484z"/>
<path d="m182.27 35.753h10.617v12.023h11.602v-12.023h10.664v34.359h-10.664v-13.898h-11.602v13.898h-10.617v-34.359z"/>
<path d="m222.19 35.753h28.453v7.336h-17.812v5.461h16.523v7.008h-16.523v6.773h18.328v7.781h-28.969v-34.359z"/>
</g>
<g stroke="#000" stroke-width="2" fill="#fff" transform="translate(.77474 .076835)">
<path d="m340.47 142.16h17.648c3.844 0 6.723 0.914 8.637 2.742s2.871 4.43 2.871 7.805c0 3.469-1.043 6.18-3.129 8.133s-5.27 2.93-9.551 2.93h-5.812v12.75h-10.664v-34.36zm10.664 14.648h2.602c2.047 0 3.484-0.355 4.312-1.066s1.242-1.621 1.242-2.73c0-1.078-0.359-1.992-1.078-2.742s-2.07-1.125-4.055-1.125h-3.023v7.663z"/>
<path d="m375.32 176.52v-34.359h17.695c3.281 0 5.789 0.281 7.523 0.844s3.133 1.605 4.195 3.129 1.594 3.379 1.594 5.566c0 1.906-0.406 3.551-1.22 4.934-0.812 1.383-1.931 2.504-3.353 3.363-0.907 0.547-2.15 1-3.729 1.359 1.265 0.423 2.187 0.845 2.764 1.267 0.391 0.282 0.956 0.884 1.698 1.807s1.237 1.634 1.487 2.135l5.142 9.956h-11.996l-5.676-10.5c-0.719-1.359-1.359-2.242-1.922-2.648-0.766-0.531-1.633-0.797-2.602-0.797h-0.938v13.945h-10.662zm10.664-20.438h4.477c0.484 0 1.422-0.156 2.812-0.469 0.703-0.141 1.277-0.5 1.723-1.078s0.668-1.242 0.668-1.992c0-1.109-0.352-1.961-1.055-2.555s-2.023-0.891-3.961-0.891h-4.664v6.985z"/>
<path d="m410.36 159.36c0-5.609 1.562-9.977 4.688-13.102s7.477-4.688 13.055-4.688c5.719 0 10.125 1.535 13.219 4.605s4.641 7.371 4.641 12.902c0 4.016-0.676 7.309-2.027 9.879s-3.305 4.57-5.859 6-5.738 2.145-9.551 2.145c-3.875 0-7.082-0.617-9.621-1.852s-4.598-3.188-6.176-5.859-2.369-6.015-2.369-10.03zm10.618 0.047c0 3.469 0.645 5.961 1.934 7.477s3.043 2.273 5.262 2.273c2.281 0 4.047-0.742 5.297-2.227s1.875-4.148 1.875-7.992c0-3.234-0.652-5.598-1.957-7.09s-3.074-2.238-5.309-2.238c-2.141 0-3.859 0.758-5.156 2.273s-1.946 4.024-1.946 7.524z"/>
<path d="m465.98 142.16h10.641v18.667c0 3.919-0.348 6.902-1.043 8.947-0.695 2.046-2.094 3.779-4.195 5.2s-4.793 2.131-8.074 2.131c-3.469 0-6.156-0.469-8.062-1.406s-3.379-2.309-4.418-4.113-1.652-4.035-1.84-6.691l10.148-1.383c0.016 1.516 0.148 2.641 0.398 3.375s0.672 1.328 1.266 1.781c0.406 0.297 0.984 0.445 1.734 0.445 1.188 0 2.059-0.441 2.613-1.323 0.555-0.882 0.832-2.369 0.832-4.461v-21.169z"/>
<path d="m483.67 142.16h28.453v7.336h-17.812v5.461h16.523v7.008h-16.523v6.773h18.328v7.781h-28.969v-34.359z"/>
<path d="m541.23 162.46 9.305 2.812c-0.625 2.609-1.609 4.789-2.953 6.539s-3.012 3.07-5.004 3.961-4.527 1.336-7.605 1.336c-3.734 0-6.785-0.543-9.152-1.628s-4.41-2.994-6.129-5.727c-1.719-2.732-2.578-6.23-2.578-10.493 0-5.684 1.512-10.052 4.535-13.104s7.301-4.579 12.832-4.579c4.328 0 7.73 0.875 10.207 2.625s4.316 4.438 5.52 8.062l-9.375 2.086c-0.328-1.047-0.672-1.812-1.031-2.297-0.594-0.812-1.32-1.438-2.18-1.875s-1.82-0.656-2.883-0.656c-2.406 0-4.25 0.968-5.531 2.903-0.969 1.436-1.453 3.691-1.453 6.765 0 3.808 0.578 6.418 1.734 7.831s2.781 2.119 4.875 2.119c2.031 0 3.566-0.57 4.605-1.711s1.793-2.797 2.261-4.969z"/>
<path d="m553.28 142.16h32.273v8.484h-10.828v25.875h-10.617v-25.875h-10.828v-8.484z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
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
https://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.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 697.32 518.74" xml:space="preserve" viewBox="0 0 638.90594 148.79584" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g fill="#010101">
<polygon points="604.83 20.641 604.83 36.572 627.9 36.572 627.9 39.274 604.83 39.274 604.83 55.493 630.77 55.493 630.77 58.195 601.84 58.195 601.84 17.938 630.48 17.938 630.48 20.641" transform="translate(-.000078826 -.0012690)"/>
<polygon points="538.58 36.63 538.58 17.938 541.57 17.938 541.57 58.195 538.58 58.195 538.58 39.332 512.81 39.332 512.81 58.195 509.82 58.195 509.82 17.938 512.81 17.938 512.81 36.63" transform="translate(-.000078826 -.0012690)"/>
<path d="m437.3 58.886c-2.877 0-5.539-0.537-7.994-1.61-2.453-1.073-4.572-2.54-6.355-4.4-1.783-1.859-3.172-4.054-4.17-6.585-0.996-2.53-1.494-5.232-1.494-8.108v-0.114c0-2.837 0.508-5.521 1.525-8.052 1.016-2.531 2.412-4.744 4.195-6.642s3.902-3.393 6.355-4.486c2.455-1.093 5.137-1.639 8.053-1.639 1.801 0 3.432 0.154 4.887 0.46 1.459 0.309 2.809 0.749 4.055 1.323 1.246 0.575 2.416 1.256 3.51 2.041 1.094 0.787 2.156 1.66 3.191 2.617l-2.127 2.185c-0.883-0.844-1.803-1.628-2.762-2.357-0.957-0.729-1.984-1.352-3.076-1.869-1.094-0.519-2.281-0.929-3.566-1.236-1.283-0.308-2.674-0.461-4.17-0.461-2.416 0-4.658 0.461-6.727 1.381-2.07 0.919-3.863 2.195-5.379 3.824-1.514 1.63-2.703 3.539-3.564 5.722-0.865 2.187-1.295 4.543-1.295 7.074v0.115c0 2.531 0.441 4.897 1.322 7.102 0.883 2.206 2.08 4.123 3.594 5.752 1.516 1.63 3.307 2.912 5.377 3.853s4.312 1.409 6.729 1.409c2.914 0 5.443-0.535 7.592-1.609 2.146-1.073 4.236-2.626 6.27-4.658l2.012 1.955c-1.074 1.035-2.176 1.984-3.307 2.847s-2.338 1.602-3.623 2.215c-1.287 0.611-2.674 1.093-4.17 1.437-1.496 0.341-3.127 0.514-4.888 0.514z"/>
<path d="m340.63 17.649h2.876l18.75 40.545h-3.277l-5.119-11.271h-23.753l-5.119 11.271h-3.105l18.747-40.545zm11.962 26.571-10.582-23.291-10.638 23.291h21.22z"/>
<path d="m238.6 17.937h14.607c2.224 0 4.246 0.277 6.067 0.834s3.395 1.36 4.715 2.415c1.324 1.055 2.35 2.339 3.077 3.854 0.729 1.516 1.094 3.249 1.094 5.204v0.114c0 2.109-0.422 3.969-1.265 5.578-0.844 1.611-1.985 2.953-3.423 4.026s-3.104 1.879-5.003 2.415c-1.898 0.537-3.899 0.806-6.011 0.806h-10.868v15.011h-2.99v-40.257zm14.032 22.544c1.879 0 3.585-0.229 5.119-0.689 1.533-0.47 2.847-1.132 3.939-2.004 1.095-0.862 1.946-1.917 2.561-3.154 0.613-1.227 0.92-2.597 0.92-4.103v-0.114c0-1.62-0.297-3.039-0.893-4.256-0.593-1.209-1.428-2.225-2.501-3.037-1.073-0.808-2.358-1.42-3.854-1.852-1.493-0.422-3.145-0.633-4.945-0.633h-11.387v19.842h11.041z"/>
<path d="m160.16 17.649h2.875l18.75 40.545h-3.278l-5.119-11.271h-23.752l-5.119 11.271h-3.106l18.749-40.545zm11.962 26.571-10.582-23.291-10.64 23.291h21.222z"/>
<path d="m636.2 95.651c0 9.738-4.248 15.873-12.748 18.406l15.451 21.445h-12.666l-14.1-19.84h-13.086v19.84h-9.963v-59.016h21.953c9.006 0 15.449 1.521 19.334 4.56 3.884 3.04 5.825 7.908 5.825 14.605zm-24.738 10.978c5.629 0 9.457-0.872 11.482-2.619 2.027-1.742 3.039-4.543 3.039-8.4 0-3.854-1.039-6.499-3.121-7.935-2.084-1.437-5.799-2.154-11.146-2.154h-12.664v21.108h12.41z"/>
<path d="m569.87 127.35c-5.965 5.825-13.34 8.738-22.121 8.738-8.779 0-16.154-2.912-22.121-8.738-5.967-5.825-8.949-13.087-8.949-21.784 0-8.696 2.982-15.956 8.949-21.783 5.967-5.823 13.342-8.738 22.121-8.738 8.781 0 16.156 2.912 22.121 8.738 5.967 5.825 8.951 13.087 8.951 21.783 0 8.698-2.984 15.959-8.951 21.784zm-7.303-36.937c-4.023-4.166-8.963-6.248-14.818-6.248-5.854 0-10.791 2.082-14.818 6.248-4.021 4.165-6.037 9.217-6.037 15.154 0 5.939 2.014 10.991 6.037 15.157 4.025 4.165 8.965 6.248 14.818 6.248 5.855 0 10.793-2.083 14.818-6.248 4.023-4.166 6.035-9.218 6.035-15.157 0-5.937-2.011-10.989-6.035-15.154z"/>
<polygon points="485.73 85.605 467.83 85.605 467.83 76.487 513.59 76.487 513.59 85.605 495.7 85.605 495.7 135.5 485.73 135.5" transform="translate(-.000078826 -.0012690)"/>
<path d="m426.07 122.08-5.91 13.424h-10.637l26.006-59.017h10.637l26.006 59.017h-10.639l-5.912-13.424h-29.551zm25.498-9.203-10.722-24.314-10.723 24.314h21.445z"/>
<path d="m386.93 135.5h-25.836v-59.017h22.967c3.996 0 7.443 0.479 10.342 1.437 2.896 0.957 5.049 2.251 6.457 3.885 2.701 3.039 4.053 6.474 4.053 10.301 0 4.614-1.463 8.048-4.391 10.3-1.07 0.788-1.801 1.28-2.195 1.477-0.395 0.198-1.098 0.522-2.109 0.973 3.658 0.789 6.572 2.435 8.74 4.938 2.166 2.505 3.248 5.615 3.248 9.33 0 4.108-1.406 7.739-4.221 10.892-3.321 3.654-9.007 5.484-17.055 5.484zm-15.873-9.203h15.621c3.658 0 6.459-0.576 8.4-1.729 1.941-1.154 2.912-3.336 2.912-6.545 0-5.233-4.191-7.851-12.578-7.851h-14.355v16.125zm0-25.33h12.666c7.205 0 10.807-2.446 10.807-7.345 0-2.812-0.873-4.839-2.617-6.078-1.744-1.238-4.447-1.858-8.105-1.858h-12.748v15.281h-0.003z"/>
<path d="m311.82 121.99c2.701 3.152 6.359 4.728 10.976 4.728s8.275-1.575 10.977-4.728c2.702-3.152 4.053-7.431 4.053-12.833v-32.675h9.963v33.098c0 8.5-2.335 15.043-7.008 19.631-4.672 4.585-10.665 6.88-17.982 6.88-7.318 0-13.312-2.294-17.983-6.88-4.672-4.588-7.009-11.131-7.009-19.631v-33.098h9.963v32.675c-0.003 5.402 1.349 9.681 4.05 12.833z"/>
<path d="m265.68 126.47c3.434 0 6.388-0.576 8.866-1.73 2.476-1.153 5.065-2.997 7.767-5.53l6.416 6.585c-6.247 6.923-13.833 10.384-22.753 10.384-8.922 0-16.323-2.87-22.205-8.611s-8.822-13.003-8.822-21.783 2.996-16.098 8.991-21.951c5.994-5.854 13.565-8.781 22.711-8.781s16.788 3.378 22.922 10.132l-6.332 6.924c-2.812-2.703-5.474-4.588-7.979-5.657-2.503-1.069-5.446-1.604-8.823-1.604-5.966 0-10.976 1.928-15.028 5.784-4.053 3.854-6.079 8.78-6.079 14.773 0 5.994 2.014 11.004 6.038 15.029 4.023 4.024 8.795 6.036 14.31 6.036z"/>
<polygon points="213.87 135.5 180.44 92.445 180.44 135.5 170.48 135.5 170.48 76.487 180.44 76.487 214.71 120.56 214.71 76.487 224.68 76.487 224.68 135.5" transform="translate(-.000078826 -.0012690)"/>
<rect height="59.017" width="9.962" y="76.486" x="146.45"/>
</g>
<linearGradient id="a" y2="446.93" gradientUnits="userSpaceOnUse" x2="139.38" gradientTransform="matrix(1 0 0 -1 -72.34 481.13)" y1="342.52" x1="119.54">
<stop stop-color="#211C52" offset="0"/>
<stop stop-color="#CB2128" offset=".5"/>
<stop stop-color="#F89A20" offset="1"/>
</linearGradient>
<path fill="url(#a)" d="m60.645 20.391c-0.004-0.438-0.01-0.877-0.021-1.319 0.091 0.144 0.346 0.586 0.769 1.319h-0.748zm-15.88 46.21c-4.634 8.616-7.274 17.605-7.949 26.962-0.602 8.33 0.299 15.514 2.728 21.536 0.332 0.819 0.653 1.577 0.975 2.278-1.92-1.357-3.751-2.773-5.498-4.25-0.147-0.116-0.254-0.165-0.322-0.148 2.294 3.668 5.152 6.992 8.578 9.973 0.529 0.463 1.412 0.68 1.63 1.359 0.619 1.948-1.065 19.44 4.346 23.517 3.441 2.589 18.65-0.667 23.346-2.184 24.498-7.912 43.499-30.539 40.673-63.149-3.1-35.763-26.66-72.131-50.158-80.873-6.352-2.364-7.761-2.147-14.357 0.674-22.93 9.805-45.453 45.291-48.478 80.198-2.9061 33.546 17.276 56.526 42.786 63.786 0.689 0.197 1.356 0.378 2.004 0.549-0.657-1.358-1.195-2.9-1.631-4.53-26.719-7.946-41.665-31.636-39.253-59.469 2.306-26.608 20.14-65.826 46.108-76.934 5.429-2.318 5.942-2.649 11.447-0.601 26.655 9.914 45.274 50.485 47.618 77.535 2.507 28.92-13.8 53.254-42.002 60.223-2.836 0.7-5.296 1.163-7.599 1.394-7.308 0.734-9.849 2.027-11.189-5.583-2.952-16.784-0.72-47.158 6.583-58.812 0.059-0.846 0.01 0.703-0.54 2.026-0.254 0.594-0.417 0.957-0.488 1.144-4.374 10.02-6.814 39.086-4.733 44.606-0.602-1.978 0.478-6.143 2.039-6.997l0.895-0.626c4.897-3.527 8.064-9.07 11.604-16.088-0.062-0.098-0.176-0.086-0.341 0.033-1.651 1.382-3.355 2.622-5.106 3.719 3.986-4.187 7.467-9.533 10.45-16.046-0.081-0.118-0.219-0.097-0.415 0.057-1.178 1.063-2.377 2.063-3.601 3.002 5.006-9.063 9.414-19.562 9.876-31.562 0.229-7.766-1.192-15.249-4.265-22.396-1.06-2.443-2.538-5.363-4.444-8.809-2.817-5.081-4.34-7.832-4.583-8.231 0.126 11.012-1.816 19.964-5.825 26.783-1.034 1.812-2.869 4.45-5.521 7.91-2.462 3.228-4.269 5.899-5.388 8.019z"/>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Before

Width:  |  Height:  |  Size: 193 B

After

Width:  |  Height:  |  Size: 193 B

View File

Before

Width:  |  Height:  |  Size: 141 B

After

Width:  |  Height:  |  Size: 141 B

View File

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 362 B

View File

Before

Width:  |  Height:  |  Size: 104 B

After

Width:  |  Height:  |  Size: 104 B

View File

Before

Width:  |  Height:  |  Size: 605 B

After

Width:  |  Height:  |  Size: 605 B

View File

Before

Width:  |  Height:  |  Size: 215 B

After

Width:  |  Height:  |  Size: 215 B

View File

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -0,0 +1,173 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
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
https://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.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 549.56701 519.84498" version="1.2" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<font id="font3" horiz-origin-x="0" horiz-origin-y="0" horiz-adv-x="2048" vert-origin-x="45" vert-origin-y="90" vert-adv-y="90">
<font-face underline-position="-155" font-family="Helvetica" underline-thickness="101" units-per-em="2048"/>
<missing-glyph d="M66,0l0,1469l1166,0l0,-1469M1048,184l0,1101l-798,0l0,-1101z" horiz-adv-x="1298"/>
<glyph horiz-adv-x="569" unicode=" "/>
<glyph horiz-adv-x="682" unicode="(" d="M606,1493C501,1290 433,1140 402,1044C355,898 331,729 331,538C331,345 358,168 412,8C445,-91 511,-233 609,-418l-121,0C391,-266 330,-169 307,-127C284,-85 258,-28 231,44C194,143 168,248 153,360C146,418 142,473 142,526C142,723 173,899 235,1053C274,1151 356,1298 481,1493z"/>
<glyph horiz-adv-x="682" unicode=")" d="M71,-418C177,-211 245,-61 276,34C323,177 346,345 346,538C346,731 319,907 265,1067C232,1166 166,1308 68,1493l121,0C292,1329 354,1228 376,1190C397,1151 421,1098 446,1031C478,948 501,865 515,784C528,703 535,624 535,549C535,352 504,176 441,21C402,-78 320,-225 196,-418z"/>
<glyph horiz-adv-x="682" unicode="-" d="M85,663l502,0l0,-185l-502,0z"/>
<glyph horiz-adv-x="569" unicode="." d="M175,218l209,0l0,-218l-209,0z"/>
<glyph horiz-adv-x="1139" unicode="0" d="M956,1203C1020,1085 1052,923 1052,718C1052,523 1023,362 965,235C881,52 744,-39 553,-39C381,-39 253,36 169,185C99,310 64,477 64,687C64,850 85,989 127,1106C206,1323 348,1432 554,1432C739,1432 873,1356 956,1203M858,711C858,874 838,1008 798,1113C758,1218 680,1270 565,1270C459,1270 382,1220 333,1121C284,1021 259,874 259,680C259,534 275,417 306,328C354,193 436,125 552,125C645,125 720,166 775,249C830,332 858,486 858,711z"/>
<glyph horiz-adv-x="1139" unicode="1" d="M196,1014l0,138C326,1165 417,1186 468,1216C519,1245 558,1315 583,1426l142,0l0,-1426l-192,0l0,1014z"/>
<glyph horiz-adv-x="1139" unicode="2" d="M400,571l192,111C678,732 738,775 773,810C828,865 855,929 855,1000C855,1083 830,1150 780,1199C730,1248 663,1272 580,1272C457,1272 371,1225 324,1132C299,1082 285,1013 282,924l-183,0C101,1049 124,1150 168,1229C246,1368 384,1437 581,1437C745,1437 865,1393 941,1304C1016,1215 1054,1117 1054,1008C1054,893 1014,795 933,714C886,667 803,609 682,542l-137,-76C480,430 428,396 391,363C324,305 282,241 265,170l782,0l0,-170l-983,0C71,123 96,231 141,322C185,413 271,496 400,571z"/>
<glyph horiz-adv-x="1139" unicode="3" d="M49,440l188,0C245,347 262,280 289,238C336,163 420,125 542,125C637,125 713,150 770,201C827,252 856,317 856,397C856,496 826,565 766,604C705,643 621,663 514,663C502,663 490,663 478,663C465,662 453,662 440,661l0,159C459,818 474,817 487,816C500,815 513,815 528,815C595,815 651,826 694,847C770,884 808,951 808,1047C808,1118 783,1173 732,1212C681,1251 622,1270 555,1270C435,1270 352,1230 306,1150C281,1106 266,1043 263,962l-178,0C85,1069 106,1159 149,1234C222,1367 351,1434 536,1434C682,1434 795,1402 875,1337C955,1272 995,1177 995,1054C995,966 971,895 924,840C895,806 857,779 810,760C885,739 944,700 987,641C1029,582 1050,509 1050,424C1050,287 1005,176 915,90C825,4 697,-39 532,-39C363,-39 240,8 164,101C87,194 49,307 49,440z"/>
<glyph horiz-adv-x="1139" unicode="4" d="M677,507l0,649l-459,-649M680,0l0,350l-628,0l0,176l656,910l152,0l0,-929l211,0l0,-157l-211,0l0,-350z"/>
<glyph horiz-adv-x="1139" unicode="5" d="M253,365C265,262 313,191 396,152C439,132 488,122 544,122C651,122 730,156 781,224C832,292 858,367 858,450C858,550 828,627 767,682C706,737 632,764 547,764C485,764 432,752 388,728C343,704 305,671 274,628l-156,9l109,771l744,0l0,-174l-609,0l-61,-398C334,861 366,880 396,893C449,915 511,926 581,926C712,926 824,884 915,799C1006,714 1052,607 1052,477C1052,342 1010,222 927,119C843,16 709,-36 526,-36C409,-36 306,-3 217,63C127,128 77,229 66,365z"/>
<glyph horiz-adv-x="1139" unicode="6" d="M1028,1057l-178,0C839,1114 822,1158 799,1190C756,1250 690,1280 602,1280C501,1280 421,1234 362,1141C303,1048 270,914 263,741C304,802 356,847 419,877C476,904 540,917 611,917C731,917 836,879 925,802C1014,725 1059,611 1059,459C1059,329 1017,214 932,114C847,13 727,-37 570,-37C436,-37 320,14 223,116C126,217 77,388 77,629C77,807 99,958 142,1082C225,1319 378,1438 599,1438C759,1438 871,1397 934,1314C997,1231 1028,1145 1028,1057M869,444C869,517 848,587 806,654C764,720 688,753 577,753C500,753 432,727 374,676C315,625 286,547 286,444C286,353 313,277 366,216C419,154 492,123 586,123C681,123 752,155 799,219C846,282 869,357 869,444z"/>
<glyph horiz-adv-x="1139" unicode="7" d="M1071,1408l0,-157C1025,1206 964,1129 888,1018C811,907 744,788 685,660C627,535 583,422 553,319C534,253 509,147 478,0l-199,0C324,273 424,545 579,816C670,975 766,1112 867,1227l-792,0l0,181z"/>
<glyph horiz-adv-x="1366" unicode="B" d="M708,848C792,848 857,860 904,883C977,920 1014,986 1014,1081C1014,1177 975,1242 897,1275C853,1294 788,1303 701,1303l-355,0l0,-455M775,170C897,170 984,205 1036,276C1069,321 1085,375 1085,438C1085,545 1037,617 942,656C891,677 824,687 741,687l-395,0l0,-517M151,1469l631,0C954,1469 1076,1418 1149,1315C1192,1254 1213,1184 1213,1105C1213,1012 1187,936 1134,877C1107,846 1067,817 1016,791C1091,762 1148,730 1185,694C1251,630 1284,542 1284,429C1284,334 1254,249 1195,172C1106,57 965,0 772,0l-621,0z"/>
<glyph horiz-adv-x="1139" unicode="_" d="M0,-256l0,101l1139,0l0,-101z"/>
<glyph horiz-adv-x="1139" unicode="a" d="M462,117C525,117 587,132 646,161C746,210 796,289 796,400l0,145C774,531 746,519 711,510C676,501 642,494 609,490l-109,-14C435,467 386,454 353,435C298,404 270,354 270,285C270,233 289,192 327,162C365,132 410,117 462,117M706,649C747,654 775,672 789,701C797,717 801,740 801,770C801,831 779,876 736,904C692,931 629,945 548,945C454,945 387,920 348,869C326,841 312,799 305,744l-168,0C140,876 183,968 266,1020C348,1071 443,1097 552,1097C678,1097 780,1073 859,1025C937,977 976,902 976,801l0,-617C976,165 980,150 988,139C995,128 1011,122 1036,122C1044,122 1053,123 1063,124C1073,125 1084,126 1095,128l0,-133C1067,-13 1046,-18 1031,-20C1016,-22 996,-23 971,-23C909,-23 864,-1 836,43C821,66 811,99 805,142C768,94 716,52 647,17C578,-18 503,-36 420,-36C321,-36 240,-6 177,55C114,115 82,190 82,281C82,380 113,457 175,512C237,567 318,600 419,613z"/>
<glyph horiz-adv-x="1139" unicode="b" d="M118,1474l175,0l0,-533C332,992 379,1032 434,1059C489,1086 548,1099 612,1099C745,1099 854,1053 937,962C1020,870 1061,735 1061,556C1061,387 1020,246 938,134C856,22 742,-34 597,-34C516,-34 447,-14 391,25C358,48 322,86 284,137l0,-137l-166,0M877,547C877,660 853,753 805,827C756,901 685,938 591,938C509,938 437,908 376,847C314,786 283,686 283,547C283,446 296,365 321,302C368,184 457,125 586,125C683,125 756,164 805,241C853,318 877,420 877,547z"/>
<glyph horiz-adv-x="1024" unicode="c" d="M976,711l-175,0C790,777 766,832 728,876C690,919 629,941 545,941C430,941 348,885 299,773C267,700 251,611 251,504C251,397 274,306 319,233C364,160 436,123 533,123C608,123 667,146 711,192C754,237 784,300 801,379l175,0C956,237 906,133 826,68C746,2 644,-31 519,-31C379,-31 267,20 184,123C101,225 59,353 59,506C59,694 105,840 196,945C287,1050 404,1102 545,1102C666,1102 764,1073 840,1014C915,955 961,854 976,711z"/>
<glyph horiz-adv-x="1139" unicode="d" d="M553,119C636,119 705,155 759,227C812,298 839,401 839,535C839,670 811,771 756,836C701,901 632,933 551,933C460,933 387,898 331,829C274,760 246,658 246,523C246,408 270,312 319,235C368,158 446,119 553,119M723,1038C755,1018 791,983 832,933l0,541l173,0l0,-1474l-162,0l0,149C801,83 751,35 694,6C637,-23 571,-38 497,-38C378,-38 274,12 187,113C100,213 56,346 56,513C56,669 96,804 176,919C255,1033 369,1090 517,1090C599,1090 668,1073 723,1038z"/>
<glyph horiz-adv-x="1139" unicode="e" d="M962,903C998,849 1022,786 1034,714C1045,665 1050,586 1050,478l-785,0C268,369 294,282 342,217C390,151 464,118 565,118C659,118 734,149 790,211C822,247 845,289 858,336l177,0C1030,297 1015,253 989,205C962,156 933,117 900,86C845,33 778,-3 697,-22C654,-33 605,-38 550,-38C417,-38 304,11 211,108C118,205 72,340 72,515C72,687 119,827 212,934C305,1041 427,1095 578,1095C654,1095 728,1077 799,1042C870,1006 925,960 962,903M865,621C858,699 841,761 814,808C765,895 682,938 567,938C484,938 415,908 359,849C303,789 273,713 270,621z"/>
<glyph horiz-adv-x="1139" unicode="g" d="M730,1028C764,1005 799,971 834,926l0,135l166,0l0,-974C1000,-49 980,-156 940,-235C865,-380 724,-453 517,-453C402,-453 305,-427 226,-375C147,-324 103,-243 94,-133l183,0C286,-181 303,-218 329,-244C370,-284 434,-304 521,-304C659,-304 749,-255 792,-158C817,-101 829,2 827,149C791,94 748,54 697,27C646,0 579,-13 496,-13C380,-13 279,28 192,111C105,193 61,329 61,519C61,698 105,838 193,939C280,1040 386,1090 510,1090C594,1090 667,1069 730,1028M543,931C416,931 330,872 283,753C258,690 246,607 246,504C246,383 271,292 320,229C369,166 434,134 517,134C646,134 737,192 790,309C819,375 834,452 834,540C834,673 807,771 752,835C697,899 628,931 543,931z"/>
<glyph horiz-adv-x="1139" unicode="h" d="M132,1474l180,0l0,-548C355,980 393,1018 427,1040C485,1078 557,1097 644,1097C799,1097 905,1043 960,934C990,875 1005,792 1005,687l0,-687l-185,0l0,675C820,754 810,811 790,848C757,907 696,936 606,936C531,936 464,910 403,859C342,808 312,711 312,568l0,-568l-180,0z"/>
<glyph horiz-adv-x="455" unicode="i" d="M132,1066l183,0l0,-1066l-183,0M132,1469l183,0l0,-204l-183,0z"/>
<glyph horiz-adv-x="455" unicode="j" d="M312,1261l-180,0l0,208l180,0M-38,-271C43,-268 91,-261 108,-249C124,-238 132,-201 132,-140l0,1206l180,0l0,-1225C312,-237 299,-295 274,-334C232,-399 152,-432 35,-432C26,-432 17,-432 8,-431C-2,-430 -17,-429 -38,-427z"/>
<glyph horiz-adv-x="455" unicode="l" d="M137,1469l180,0l0,-1469l-180,0z"/>
<glyph horiz-adv-x="1706" unicode="m" d="M132,1071l178,0l0,-152C353,972 391,1010 426,1034C485,1075 553,1095 628,1095C713,1095 782,1074 834,1032C863,1008 890,973 914,926C954,983 1001,1026 1055,1054C1109,1081 1170,1095 1237,1095C1381,1095 1479,1043 1531,939C1559,883 1573,808 1573,713l0,-713l-187,0l0,744C1386,815 1368,864 1333,891C1297,918 1253,931 1202,931C1131,931 1071,907 1020,860C969,813 943,734 943,623l0,-623l-183,0l0,699C760,772 751,825 734,858C707,908 656,933 581,933C513,933 451,907 396,854C340,801 312,706 312,568l0,-568l-180,0z"/>
<glyph horiz-adv-x="1139" unicode="n" d="M132,1071l171,0l0,-152C354,982 407,1027 464,1054C521,1081 584,1095 653,1095C805,1095 908,1042 961,936C990,878 1005,795 1005,687l0,-687l-183,0l0,675C822,740 812,793 793,833C761,900 703,933 619,933C576,933 541,929 514,920C465,905 421,876 384,832C354,797 335,760 326,723C317,685 312,631 312,561l0,-561l-180,0z"/>
<glyph horiz-adv-x="1139" unicode="o" d="M869,553C869,653 853,734 821,797C770,896 683,945 559,945C449,945 369,903 319,819C269,735 244,634 244,515C244,401 269,306 319,230C369,154 448,116 557,116C676,116 758,161 803,252C847,342 869,442 869,553M1057,558C1057,385 1015,243 931,130C847,17 717,-39 540,-39C393,-39 276,11 189,111C102,210 59,344 59,512C59,692 105,835 196,942C287,1049 410,1102 564,1102C702,1102 819,1056 914,964C1009,872 1057,737 1057,558z"/>
<glyph horiz-adv-x="682" unicode="r" d="M137,1071l171,0l0,-185C322,922 356,966 411,1018C466,1069 529,1095 600,1095C603,1095 609,1095 617,1094C625,1093 639,1092 658,1090l0,-190C647,902 638,903 629,904C620,905 610,905 599,905C508,905 439,876 390,818C341,759 317,692 317,616l0,-616l-180,0z"/>
<glyph horiz-adv-x="1024" unicode="s" d="M239,336C244,276 259,230 284,198C329,140 408,111 520,111C587,111 645,126 696,155C747,184 772,228 772,289C772,335 752,370 711,394C685,409 634,426 557,445l-143,36C323,504 255,529 212,557C135,606 96,673 96,759C96,860 133,942 206,1005C279,1068 377,1099 500,1099C661,1099 778,1052 849,957C894,897 915,832 914,763l-170,0C741,804 726,841 701,874C660,921 588,945 486,945C418,945 367,932 332,906C297,880 279,846 279,803C279,756 302,719 348,691C375,674 414,660 466,647l119,-29C714,587 801,556 845,527C915,481 950,409 950,310C950,215 914,132 842,63C769,-6 659,-41 511,-41C352,-41 239,-5 173,68C106,140 71,229 66,336z"/>
<glyph horiz-adv-x="569" unicode="t" d="M168,1370l182,0l0,-299l171,0l0,-147l-171,0l0,-699C350,188 363,163 388,150C402,143 425,139 458,139C467,139 476,139 486,140C496,140 508,141 521,142l0,-142C500,-6 479,-10 457,-13C434,-16 410,-17 384,-17C300,-17 243,5 213,48C183,91 168,146 168,215l0,709l-145,0l0,147l145,0z"/>
<glyph horiz-adv-x="1024" unicode="v" d="M220,1071l286,-872l299,872l197,0l-404,-1071l-192,0l-395,1071z"/>
</font>
<path fill="#fcf9ce" d="m97.75 228.83h61.619c2.22 0 4.02 1.8 4.02 4.02v34.436c0 2.22-1.8 4.021-4.02 4.021h-61.619c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="247.52879" x="100.7651" font-family="Helvetica" fill="#010101">hibernate
</text>
<text font-size="12.06px" y="261.7319" x="104.3071" font-family="Helvetica" fill="#010101">3.2.6.ga
</text>
<path d="m97.75 228.83h61.619c2.22 0 4.02 1.8 4.02 4.02v34.436c0 2.22-1.8 4.021-4.02 4.021h-61.619c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m412.4 87.23h132.64c2.222 0 4.021 1.8 4.021 4.02v48.641c0 2.22-1.799 4.02-4.021 4.02h-132.64c-2.219 0-4.02-1.8-4.02-4.02v-48.641c0.001-2.219 1.802-4.02 4.02-4.02z"/>
<g font-size="12.06px" font-family="Helvetica" fill="#010101">
<text y="105.9243" x="415.41891">commons-collections
</text>
<text y="120.1284" x="463.4707">2.1.1
</text>
<text y="134.3315" x="442.63959">2.1 (evicted)
</text>
</g>
<path d="m412.4 87.23h132.64c2.222 0 4.021 1.8 4.021 4.02v48.641c0 2.22-1.799 4.02-4.021 4.02h-132.64c-2.219 0-4.02-1.8-4.02-4.02v-48.641c0.001-2.219 1.802-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m287.52 476.87h38.753c2.22 0 4.021 1.8 4.021 4.02v34.438c0 2.22-1.801 4.02-4.021 4.02h-38.753c-2.22 0-4.02-1.8-4.02-4.02v-34.438c0-2.221 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="495.56009" x="292.7612" font-family="Helvetica" fill="#010101">cglib
</text>
<text font-size="12.06px" y="509.76419" x="290.52979" font-family="Helvetica" fill="#010101">2.1_3
</text>
<path d="m287.52 476.87h38.753c2.22 0 4.021 1.8 4.021 4.02v34.438c0 2.22-1.801 4.02-4.021 4.02h-38.753c-2.22 0-4.02-1.8-4.02-4.02v-34.438c0-2.221 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m460.46 455.98h36.539c2.219 0 4.021 1.8 4.021 4.021v34.437c0 2.221-1.802 4.021-4.021 4.021h-36.539c-2.221 0-4.021-1.801-4.021-4.021v-34.437c0-2.221 1.8-4.021 4.021-4.021z"/>
<text font-size="12.06px" y="474.67331" x="466.69141" font-family="Helvetica" fill="#010101">asm
</text>
<text font-size="12.06px" y="488.8765" x="463.4707" font-family="Helvetica" fill="#010101">1.5.3
</text>
<path d="m460.46 455.98h36.539c2.219 0 4.021 1.8 4.021 4.021v34.437c0 2.221-1.802 4.021-4.021 4.021h-36.539c-2.221 0-4.021-1.801-4.021-4.021v-34.437c0-2.221 1.8-4.021 4.021-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m288.62 394.19h36.54c2.22 0 4.02 1.801 4.02 4.021v34.438c0 2.221-1.8 4.021-4.02 4.021h-36.54c-2.22 0-4.02-1.8-4.02-4.021v-34.438c0-2.22 1.8-4.021 4.02-4.021z"/>
<text font-size="12.06px" y="412.88229" x="293.353" font-family="Helvetica" fill="#010101">antlr
</text>
<text font-size="12.06px" y="427.0864" x="291.63721" font-family="Helvetica" fill="#010101">2.7.6
</text>
<path d="m288.62 394.19h36.54c2.22 0 4.02 1.801 4.02 4.021v34.438c0 2.221-1.8 4.021-4.02 4.021h-36.54c-2.22 0-4.02-1.8-4.02-4.021v-34.438c0-2.22 1.8-4.021 4.02-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m285.1 311.51h43.582c2.221 0 4.021 1.798 4.021 4.021v34.437c0 2.221-1.8 4.021-4.021 4.021h-43.582c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.224 1.8-4.022 4.02-4.022z"/>
<text font-size="12.06px" y="330.20749" x="288.11569" font-family="Helvetica" fill="#010101">dom4j
</text>
<text font-size="12.06px" y="344.4097" x="291.63721" font-family="Helvetica" fill="#010101">1.6.1
</text>
<path d="m285.1 311.51h43.582c2.221 0 4.021 1.798 4.021 4.021v34.437c0 2.221-1.8 4.021-4.021 4.021h-43.582c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.224 1.8-4.022 4.02-4.022z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m274.97 228.83h63.839c2.22 0 4.021 1.8 4.021 4.02v34.436c0 2.22-1.801 4.021-4.021 4.021h-63.839c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="247.52879" x="277.98679" font-family="Helvetica" fill="#010101">asm-attrs
</text>
<text font-size="12.06px" y="261.7319" x="291.63721" font-family="Helvetica" fill="#010101">1.5.3
</text>
<path d="m274.97 228.83h63.839c2.22 0 4.021 1.8 4.021 4.02v34.436c0 2.22-1.801 4.021-4.021 4.021h-63.839c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m285.15 146.16h43.476c2.221 0 4.021 1.8 4.021 4.02v34.437c0 2.22-1.8 4.02-4.021 4.02h-43.476c-2.22 0-4.02-1.8-4.02-4.02v-34.437c0-2.22 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="164.85201" x="299.4722" font-family="Helvetica" fill="#010101">jta
</text>
<text font-size="12.06px" y="179.05521" x="288.16849" font-family="Helvetica" fill="#010101">1.0.1B
</text>
<path d="m285.15 146.16h43.476c2.221 0 4.021 1.8 4.021 4.02v34.437c0 2.22-1.8 4.02-4.021 4.02h-43.476c-2.22 0-4.02-1.8-4.02-4.02v-34.437c0-2.22 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m280.17 63.479h53.452c2.22 0 4.02 1.8 4.02 4.02v34.437c0 2.22-1.8 4.02-4.02 4.02h-53.452c-2.22 0-4.02-1.8-4.02-4.02v-34.436c0-2.22 1.8-4.021 4.02-4.021z"/>
<text font-size="12.06px" y="82.173302" x="283.18121" font-family="Helvetica" fill="#010101">ehcache
</text>
<text font-size="12.06px" y="96.377403" x="291.63721" font-family="Helvetica" fill="#010101">1.2.3
</text>
<path d="m280.17 63.479h53.452c2.22 0 4.02 1.8 4.02 4.02v34.437c0 2.221-1.8 4.02-4.02 4.02h-53.452c-2.22 0-4.02-1.799-4.02-4.02v-34.436c0-2.22 1.8-4.021 4.02-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m421.44 0.5h114.58c2.221 0 4.02 1.799 4.02 4.02v34.437c0 2.22-1.799 4.02-4.02 4.02h-114.58c-2.219 0-4.021-1.8-4.021-4.02v-34.436c0-2.222 1.8-4.021 4.02-4.021z"/>
<text font-size="12.06px" y="19.194799" x="424.45209" font-family="Helvetica" fill="#010101">commons-logging
</text>
<text font-size="12.06px" y="33.398899" x="463.4707" font-family="Helvetica" fill="#010101">1.0.4
</text>
<path d="m421.44 0.5h114.58c2.221 0 4.02 1.799 4.02 4.02v34.437c0 2.22-1.799 4.02-4.02 4.02h-114.58c-2.219 0-4.021-1.8-4.021-4.02v-34.436c0-2.222 1.8-4.021 4.02-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<line y2="250.07" x2="85.645" stroke="#010101" stroke-miterlimit="1.45" y1="250.07" fill="none"/>
<polygon points="81.625 254.49 93.685 249.47 81.625 244.44 84.639 249.47" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="265.75241" x="33.0396" font-family="Helvetica" fill="#010101">3.2.6.ga
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 239.36 173.94 239.36 234.92 129.98 307.39 129.98 372.35 134.45 400.31 134.45" stroke-miterlimit="1.45" fill="none"/>
<polygon points="396.29 139.47 408.35 134.45 396.29 129.42 399.3 134.45" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="128.48579" x="370.52539" font-family="Helvetica" fill="#010101">2.1.1
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="162.08 269.69 173.94 269.69 234.92 497.5 275.41 497.5" stroke-miterlimit="1.45" fill="none"/>
<polygon points="271.39 502.52 283.45 497.5 271.39 492.48 274.4 497.5" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="285.97119" x="156.88921" font-family="Helvetica" fill="#010101">2.1_3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 264.63 173.94 264.63 234.92 460.68 448.37 460.68" stroke-miterlimit="1.45" fill="none"/>
<polygon points="444.35 465.71 456.41 460.68 444.35 455.66 447.36 460.68" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="476.96829" x="413.74121" font-family="Helvetica" fill="#010101">1.5.3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="330.29 497.5 340.84 497.5 420.4 492.54 448.36 492.54" stroke-miterlimit="1.45" fill="none"/>
<polygon points="444.34 497.57 456.4 492.54 444.34 487.52 447.35 492.54" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="508.82571" x="418.57709" font-family="Helvetica" fill="#010101">1.5.3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 259.58 173.94 259.58 234.92 414.82 276.51 414.82" stroke-miterlimit="1.45" fill="none"/>
<polygon points="272.49 419.85 284.55 414.82 272.49 409.8 275.51 414.82" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="409.86771" x="238.5405" font-family="Helvetica" fill="#010101">2.7.6
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 254.52 173.94 254.52 234.92 332.15 273 332.15" stroke-miterlimit="1.45" fill="none"/>
<polygon points="268.98 337.17 281.04 332.15 268.98 327.12 271.99 332.15" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="327.19189" x="238.146" font-family="Helvetica" fill="#010101">1.6.1
</text>
<line y2="250.07" x2="262.89" stroke="#010101" stroke-miterlimit="1.45" y1="250.07" x1="163.39" fill="none"/>
<polygon points="258.87 254.49 270.92 249.47 258.87 244.44 261.88 249.47" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="243.5083" x="228.25729" font-family="Helvetica" fill="#010101">1.5.3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 244.42 173.94 244.42 234.92 166.79 273.05 166.79" stroke-miterlimit="1.45" fill="none"/>
<polygon points="269.03 171.82 281.09 166.79 269.03 161.77 272.04 166.79" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="182.06979" x="238.146" font-family="Helvetica" fill="#010101">1.0.1B
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 234.3 173.94 234.3 234.92 84.115 268.06 84.115" stroke-miterlimit="1.45" fill="none"/>
<polygon points="264.04 89.14 276.1 84.115 264.04 79.089 267.06 84.115" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="99.392097" x="238.5269" font-family="Helvetica" fill="#010101">1.2.3
</text>
<line y2="96.091" x2="400.31" stroke="#010101" stroke-miterlimit="1.45" y1="96.091" x1="337.64" fill="none"/>
<polygon points="396.29 100.51 408.35 95.487 396.29 90.461 399.3 95.487" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="89.526901" x="377.13089" font-family="Helvetica" fill="#010101">2.1
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="337.64 72.742 348.19 72.742 381.38 37.063 409.34 37.063" stroke-miterlimit="1.45" fill="none"/>
<polygon points="405.32 42.088 417.38 37.063 405.32 32.039 408.34 37.063" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="31.104" x="379.5596" font-family="Helvetica" fill="#010101">1.0.4
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="162.08 229.25 173.94 229.25 234.92 5.207 409.33 5.207" stroke-miterlimit="1.45" fill="none"/>
<polygon points="405.31 10.23 417.37 5.207 405.31 0.182 408.33 5.207" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="223.28951" x="157.9966" font-family="Helvetica" fill="#010101">1.0.4
</text>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 237 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
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
https://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.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 647.669 503.39903" version="1.2" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path fill-rule="evenodd" fill="#119a48" d="m237.42 102zm-170.04-102zm16.92 0c-8.399 0-16.92 8.52-16.92 17.039v67.921c0 8.52 8.521 17.04 16.92 17.04h136.08c8.521 0 17.04-8.521 17.04-17.04v-67.921c0-8.52-8.52-17.039-17.04-17.039h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m84.298 0.000005c-8.399 0-16.92 8.52-16.92 17.039v67.921c0 8.52 8.521 17.04 16.92 17.04h136.08c8.521 0 17.04-8.521 17.04-17.04v-67.921c0-8.52-8.52-17.039-17.04-17.039h-136.08z"/>
<path d="m67.378 0.000005z"/>
<path d="m237.42 102z"/>
</g>
<path fill="#fff" d="m133.61 36.403c0 0.956-0.219 1.811-0.654 2.562-0.437 0.752-1.06 1.334-1.872 1.745-0.812 0.412-1.777 0.617-2.896 0.617h-3.691v5.231h-3.111v-14.86h6.677c1.778 0 3.148 0.409 4.107 1.229s1.44 1.978 1.44 3.476zm-3.133 0.053c0-1.562-0.922-2.342-2.764-2.342h-3.217v4.82h3.302c0.857 0 1.519-0.213 1.982-0.639 0.464-0.424 0.697-1.038 0.697-1.839zm8.152-1.309v6.402c0 2.004 0.675 3.006 2.024 3.006 0.718 0 1.296-0.308 1.735-0.923s0.659-1.404 0.659-2.368v-6.117h2.964v8.859c0 0.971 0.028 1.821 0.084 2.553h-2.826c-0.085-1.013-0.127-1.769-0.127-2.268h-0.053c-0.394 0.865-0.895 1.494-1.503 1.888s-1.33 0.591-2.167 0.591c-1.21 0-2.138-0.371-2.784-1.112-0.647-0.742-0.971-1.83-0.971-3.265v-7.246h2.965zm21.181 5.665c0 1.885-0.378 3.349-1.134 4.393s-1.837 1.566-3.243 1.566c-0.809 0-1.508-0.176-2.099-0.527s-1.044-0.857-1.36-1.519h-0.021c0 0.246-0.016 0.583-0.047 1.013-0.032 0.429-0.065 0.703-0.101 0.822h-2.879c0.056-0.654 0.084-1.522 0.084-2.605v-13.047h2.964v4.366l-0.042 1.856h0.042c0.668-1.463 1.884-2.194 3.649-2.194 1.35 0 2.385 0.512 3.105 1.535 0.722 1.023 1.082 2.47 1.082 4.341zm-5.442 3.933c1.568 0 2.353-1.311 2.353-3.934 0-1.294-0.19-2.254-0.569-2.879-0.38-0.626-0.967-0.939-1.762-0.939-0.802 0-1.411 0.336-1.83 1.008-0.418 0.671-0.627 1.64-0.627 2.905 0 1.21 0.205 2.151 0.616 2.827 0.411 0.675 1.018 1.012 1.819 1.012zm7.948 1.815v-15.652h2.964v15.652h-2.964zm5.982-13.469v-2.183h2.964v2.183h-2.964zm0 13.469v-11.413h2.964v11.413h-2.964zm10.849 0.211c-1.729 0-3.065-0.515-4.008-1.545s-1.413-2.467-1.413-4.309c0-1.885 0.475-3.353 1.424-4.403s2.295-1.577 4.039-1.577c1.343 0 2.454 0.338 3.333 1.013s1.431 1.606 1.655 2.795l-2.984 0.147c-0.084-0.583-0.295-1.049-0.633-1.397s-0.815-0.521-1.435-0.521c-1.525 0-2.288 1.276-2.288 3.828 0 2.63 0.776 3.944 2.33 3.944 0.562 0 1.034-0.177 1.414-0.532 0.379-0.355 0.615-0.884 0.706-1.587l2.975 0.137c-0.105 0.78-0.385 1.477-0.839 2.088-0.453 0.612-1.049 1.085-1.787 1.419s-1.568 0.5-2.489 0.5z"/>
<path fill="#fff" d="m101.17 70.439v-8.732c0-0.626-0.009-1.148-0.026-1.566-0.018-0.419-0.037-0.789-0.058-1.113h2.826c0.021 0.127 0.049 0.512 0.084 1.155s0.053 1.07 0.053 1.281h0.043c0.288-0.802 0.545-1.365 0.77-1.692s0.492-0.569 0.802-0.728 0.696-0.237 1.16-0.237c0.38 0 0.686 0.053 0.917 0.158v2.479c-0.478-0.105-0.899-0.158-1.266-0.158-0.738 0-1.312 0.299-1.724 0.896-0.412 0.598-0.617 1.483-0.617 2.657v5.601h-2.964zm17.871-2.889c-0.809 2.067-2.451 3.101-4.926 3.101-1.715 0-3.033-0.508-3.955-1.524-0.921-1.016-1.381-2.497-1.381-4.445 0-1.884 0.467-3.333 1.402-4.345 0.935-1.013 2.261-1.52 3.977-1.52 1.638 0 2.89 0.544 3.754 1.63 0.865 1.086 1.298 2.678 1.298 4.772v0.084h-7.319c0 1.112 0.205 1.95 0.616 2.516 0.412 0.566 0.997 0.85 1.757 0.85 1.047 0 1.708-0.454 1.982-1.361l2.795 0.242zm-4.925-6.866c-0.695 0-1.232 0.242-1.608 0.728s-0.574 1.164-0.596 2.036h4.43c-0.057-0.922-0.278-1.612-0.664-2.073-0.388-0.461-0.908-0.691-1.562-0.691zm18.137 3.997c0 1.905-0.382 3.377-1.145 4.414s-1.841 1.556-3.232 1.556c-0.802 0-1.5-0.174-2.094-0.522s-1.05-0.849-1.366-1.503h-0.062c0.042 0.211 0.062 0.852 0.062 1.92v4.377h-2.963v-13.269c0-1.076-0.028-1.951-0.085-2.627h2.88c0.035 0.127 0.064 0.377 0.089 0.749 0.025 0.373 0.037 0.742 0.037 1.107h0.042c0.668-1.398 1.885-2.099 3.649-2.099 1.329 0 2.359 0.512 3.091 1.534 0.731 1.025 1.097 2.479 1.097 4.363zm-5.464 3.944c1.582 0 2.373-1.313 2.373-3.944 0-2.559-0.783-3.839-2.352-3.839-0.787 0-1.391 0.345-1.809 1.033-0.419 0.69-0.628 1.652-0.628 2.891 0 1.23 0.209 2.181 0.628 2.853 0.419 0.671 1.015 1.006 1.788 1.006zm18.682-3.902c0 1.851-0.513 3.3-1.54 4.351-1.026 1.052-2.446 1.577-4.261 1.577-1.778 0-3.175-0.527-4.187-1.582-1.013-1.055-1.52-2.503-1.52-4.346 0-1.835 0.507-3.278 1.52-4.329 1.012-1.051 2.429-1.577 4.25-1.577 1.863 0 3.285 0.509 4.267 1.524 0.981 1.015 1.471 2.477 1.471 4.382zm-5.832 3.902c1.821 0 2.731-1.301 2.731-3.902 0-1.356-0.222-2.341-0.664-2.953-0.443-0.611-1.087-0.917-1.931-0.917-1.8 0-2.7 1.291-2.7 3.87 0 1.273 0.22 2.241 0.659 2.906 0.44 0.664 1.075 0.996 1.905 0.996zm17.914-1.519c0 1.104-0.451 1.971-1.355 2.6-0.903 0.63-2.153 0.944-3.749 0.944-1.568 0-2.769-0.248-3.602-0.743-0.833-0.496-1.387-1.268-1.661-2.315l2.604-0.391c0.148 0.542 0.403 0.925 0.765 1.15 0.362 0.226 0.993 0.337 1.894 0.337 0.83 0 1.435-0.105 1.814-0.316s0.569-0.541 0.569-0.991c0-0.365-0.153-0.655-0.459-0.87s-0.824-0.396-1.556-0.543c-1.674-0.331-2.802-0.639-3.386-0.923-0.583-0.285-1.028-0.654-1.334-1.107-0.306-0.454-0.459-1.011-0.459-1.672 0-1.09 0.42-1.938 1.261-2.547 0.84-0.608 2.03-0.912 3.57-0.912 1.356 0 2.448 0.264 3.274 0.791s1.341 1.29 1.545 2.288l-2.626 0.274c-0.084-0.464-0.292-0.811-0.622-1.039-0.331-0.229-0.854-0.343-1.571-0.343-0.703 0-1.23 0.09-1.582 0.27-0.352 0.179-0.527 0.479-0.527 0.901 0 0.331 0.135 0.593 0.405 0.786 0.271 0.193 0.727 0.353 1.366 0.479 0.893 0.184 1.686 0.371 2.378 0.564 0.693 0.193 1.248 0.424 1.667 0.69 0.418 0.268 0.752 0.61 1.002 1.028 0.25 0.421 0.375 0.957 0.375 1.61zm2.262-10.135v-2.183h2.963v2.183h-2.963zm0 13.468v-11.412h2.963v11.412h-2.963zm11.512-0.168c-0.73 0.239-1.564 0.358-2.499 0.358-0.872 0-1.544-0.237-2.015-0.712s-0.707-1.192-0.707-2.156v-6.729h-1.444v-2.004h1.593l0.928-2.679h1.856v2.679h2.162v2.004h-2.162v5.928c0 0.556 0.105 0.965 0.316 1.229s0.538 0.396 0.98 0.396c0.232 0 0.562-0.049 0.991-0.147v1.833h0.001zm12.614-5.548c0 1.851-0.514 3.3-1.54 4.351-1.026 1.052-2.447 1.577-4.261 1.577-1.779 0-3.175-0.527-4.188-1.582s-1.519-2.503-1.519-4.346c0-1.835 0.506-3.278 1.519-4.329s2.43-1.577 4.25-1.577c1.863 0 3.286 0.509 4.267 1.524s1.472 2.477 1.472 4.382zm-5.833 3.902c1.821 0 2.731-1.301 2.731-3.902 0-1.356-0.221-2.341-0.664-2.953-0.443-0.611-1.086-0.917-1.93-0.917-1.801 0-2.7 1.291-2.7 3.87 0 1.273 0.22 2.241 0.659 2.906 0.44 0.664 1.075 0.996 1.904 0.996zm8.166 1.814v-8.732c0-0.626-0.009-1.148-0.026-1.566-0.018-0.419-0.036-0.789-0.058-1.113h2.826c0.021 0.127 0.05 0.512 0.085 1.155s0.053 1.07 0.053 1.281h0.042c0.288-0.802 0.545-1.365 0.77-1.692 0.226-0.327 0.492-0.569 0.802-0.728s0.696-0.237 1.16-0.237c0.38 0 0.686 0.053 0.918 0.158v2.479c-0.479-0.105-0.9-0.158-1.266-0.158-0.738 0-1.313 0.299-1.725 0.896s-0.617 1.483-0.617 2.657v5.601h-2.964zm9.88 4.483c-0.71 0-1.332-0.046-1.867-0.137v-2.109c0.373 0.056 0.714 0.084 1.023 0.084 0.422 0 0.771-0.066 1.05-0.2 0.277-0.134 0.527-0.355 0.748-0.665 0.222-0.309 0.47-0.833 0.744-1.571l-4.515-11.296h3.133l1.793 5.348c0.281 0.767 0.637 1.94 1.065 3.522l0.264-1.002 0.686-2.479 1.688-5.39h3.101l-4.514 12.014c-0.605 1.462-1.232 2.475-1.883 3.037s-1.49 0.844-2.516 0.844z"/>
<path fill-rule="evenodd" fill="#119a48" d="m230.7 367.44zm-170.16-102.12zm17.04 0c-8.521 0-17.04 8.521-17.04 17.04v67.92c0 8.521 8.52 17.161 17.04 17.161h136.08c8.52 0 17.04-8.641 17.04-17.161v-67.92c0-8.52-8.521-17.04-17.04-17.04h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m77.578 265.32c-8.521 0-17.04 8.521-17.04 17.04v67.92c0 8.521 8.52 17.161 17.04 17.161h136.08c8.52 0 17.04-8.641 17.04-17.161v-67.92c0-8.52-8.521-17.04-17.04-17.04h-136.08z"/>
<path d="m60.538 265.32z"/>
<path d="m230.7 367.44z"/>
</g>
<path fill="#fff" d="m93.663 311.88v-14.859h11.686v2.405h-8.574v3.733h7.932v2.404h-7.932v3.912h9.007v2.404h-12.119zm21.842 0v-6.4c0-2.004-0.679-3.007-2.035-3.007-0.718 0-1.296 0.308-1.735 0.923s-0.659 1.404-0.659 2.367v6.117h-2.964v-8.859c0-0.611-0.009-1.112-0.026-1.502-0.018-0.391-0.036-0.741-0.058-1.05h2.826c0.021 0.133 0.05 0.49 0.085 1.07s0.053 0.98 0.053 1.198h0.042c0.4-0.872 0.903-1.505 1.508-1.898 0.605-0.394 1.326-0.591 2.162-0.591 1.21 0 2.138 0.373 2.785 1.118 0.646 0.745 0.97 1.835 0.97 3.27v7.244h-2.954zm11.333-0.169c-0.73 0.239-1.564 0.359-2.499 0.359-0.872 0-1.544-0.237-2.015-0.712s-0.707-1.194-0.707-2.157v-6.729h-1.444v-2.004h1.593l0.928-2.68h1.856v2.68h2.162v2.004h-2.162v5.927c0 0.556 0.105 0.966 0.316 1.229s0.538 0.395 0.98 0.395c0.232 0 0.562-0.049 0.991-0.147v1.835h0.001zm11.37-2.721c-0.809 2.067-2.45 3.101-4.926 3.101-1.716 0-3.034-0.507-3.955-1.523s-1.382-2.498-1.382-4.446c0-1.884 0.468-3.332 1.403-4.345s2.261-1.519 3.976-1.519c1.639 0 2.891 0.543 3.755 1.63 0.865 1.086 1.298 2.678 1.298 4.772v0.085h-7.32c0 1.11 0.206 1.948 0.617 2.515s0.997 0.849 1.756 0.849c1.048 0 1.709-0.452 1.983-1.359l2.795 0.24zm-4.925-6.865c-0.696 0-1.232 0.242-1.608 0.727s-0.574 1.165-0.596 2.037h4.43c-0.057-0.921-0.277-1.612-0.664-2.073-0.388-0.461-0.908-0.691-1.562-0.691zm7.208 9.755v-8.732c0-0.626-0.009-1.147-0.026-1.565-0.018-0.419-0.037-0.79-0.059-1.113h2.827c0.021 0.126 0.049 0.512 0.084 1.155s0.053 1.071 0.053 1.282h0.042c0.289-0.802 0.545-1.367 0.771-1.693 0.225-0.327 0.492-0.57 0.802-0.729 0.309-0.158 0.695-0.236 1.16-0.236 0.379 0 0.686 0.052 0.917 0.157v2.479c-0.478-0.105-0.899-0.159-1.266-0.159-0.738 0-1.312 0.3-1.725 0.897-0.411 0.598-0.616 1.483-0.616 2.658v5.599h-2.964zm19.203-5.759c0 1.906-0.383 3.378-1.146 4.415s-1.84 1.555-3.231 1.555c-0.802 0-1.5-0.173-2.095-0.521-0.594-0.348-1.049-0.85-1.365-1.503h-0.063c0.043 0.211 0.063 0.851 0.063 1.919v4.378h-2.964v-13.268c0-1.076-0.028-1.952-0.084-2.627h2.879c0.035 0.126 0.064 0.377 0.09 0.75 0.024 0.372 0.037 0.74 0.037 1.105h0.042c0.668-1.398 1.884-2.098 3.649-2.098 1.329 0 2.358 0.512 3.09 1.534 0.731 1.024 1.098 2.477 1.098 4.361zm-5.464 3.945c1.582 0 2.373-1.315 2.373-3.945 0-2.559-0.784-3.839-2.352-3.839-0.788 0-1.392 0.345-1.81 1.034-0.418 0.688-0.627 1.652-0.627 2.89 0 1.23 0.209 2.182 0.627 2.854 0.419 0.67 1.015 1.006 1.789 1.006zm7.84 1.814v-8.732c0-0.626-0.01-1.147-0.026-1.565-0.019-0.419-0.037-0.79-0.059-1.113h2.827c0.021 0.126 0.048 0.512 0.084 1.155 0.034 0.644 0.053 1.071 0.053 1.282h0.042c0.288-0.802 0.545-1.367 0.771-1.693 0.224-0.327 0.491-0.57 0.801-0.729s0.696-0.236 1.16-0.236c0.38 0 0.686 0.052 0.918 0.157v2.479c-0.479-0.105-0.9-0.159-1.266-0.159-0.738 0-1.313 0.3-1.725 0.897s-0.617 1.483-0.617 2.658v5.599h-2.963zm8.402-13.467v-2.185h2.963v2.185h-2.963zm0 13.467v-11.411h2.963v11.411h-2.963zm15.602-3.333c0 1.104-0.452 1.972-1.355 2.601-0.903 0.63-2.153 0.943-3.749 0.943-1.568 0-2.769-0.247-3.603-0.743-0.833-0.495-1.387-1.268-1.661-2.315l2.605-0.389c0.147 0.541 0.402 0.923 0.765 1.148 0.362 0.225 0.993 0.337 1.894 0.337 0.829 0 1.434-0.105 1.813-0.316s0.569-0.541 0.569-0.991c0-0.365-0.152-0.655-0.458-0.869-0.307-0.215-0.825-0.396-1.556-0.544-1.674-0.33-2.803-0.638-3.386-0.922-0.584-0.285-1.028-0.654-1.334-1.107-0.307-0.454-0.459-1.011-0.459-1.672 0-1.09 0.42-1.939 1.26-2.547 0.841-0.608 2.03-0.912 3.57-0.912 1.357 0 2.449 0.263 3.275 0.79s1.341 1.291 1.545 2.29l-2.626 0.273c-0.085-0.464-0.292-0.811-0.623-1.039-0.33-0.229-0.854-0.344-1.571-0.344-0.703 0-1.23 0.091-1.582 0.27-0.352 0.18-0.527 0.48-0.527 0.902 0 0.331 0.136 0.592 0.406 0.785s0.726 0.354 1.366 0.48c0.893 0.184 1.686 0.371 2.378 0.564s1.248 0.423 1.666 0.689c0.419 0.268 0.753 0.611 1.002 1.029 0.251 0.419 0.376 0.956 0.376 1.609zm11.988 0.443c-0.809 2.067-2.45 3.101-4.926 3.101-1.716 0-3.034-0.507-3.955-1.523s-1.382-2.498-1.382-4.446c0-1.884 0.468-3.332 1.403-4.345s2.261-1.519 3.976-1.519c1.639 0 2.891 0.543 3.755 1.63 0.865 1.086 1.298 2.678 1.298 4.772v0.085h-7.32c0 1.11 0.206 1.948 0.617 2.515s0.997 0.849 1.756 0.849c1.048 0 1.709-0.452 1.983-1.359l2.795 0.24zm-4.926-6.865c-0.696 0-1.232 0.242-1.608 0.727s-0.574 1.165-0.596 2.037h4.43c-0.057-0.921-0.277-1.612-0.664-2.073s-0.908-0.691-1.562-0.691z"/>
<path fill="#fff" d="m94.326 335.76v-8.733c0-0.625-0.009-1.148-0.026-1.565-0.018-0.419-0.037-0.79-0.058-1.113h2.826c0.021 0.127 0.05 0.511 0.085 1.155 0.035 0.643 0.053 1.07 0.053 1.281h0.042c0.288-0.802 0.545-1.365 0.77-1.693 0.226-0.326 0.492-0.569 0.802-0.727 0.31-0.159 0.696-0.238 1.16-0.238 0.38 0 0.686 0.053 0.918 0.158v2.479c-0.479-0.105-0.9-0.158-1.266-0.158-0.738 0-1.313 0.299-1.725 0.896s-0.617 1.484-0.617 2.658v5.601h-2.964zm18-2.89c-0.809 2.066-2.45 3.101-4.925 3.101-1.716 0-3.034-0.509-3.955-1.523-0.922-1.018-1.382-2.499-1.382-4.446 0-1.885 0.468-3.333 1.402-4.346 0.936-1.012 2.261-1.519 3.977-1.519 1.638 0 2.89 0.544 3.755 1.629 0.864 1.088 1.297 2.678 1.297 4.773v0.084h-7.319c0 1.111 0.205 1.949 0.617 2.517 0.411 0.564 0.996 0.848 1.756 0.848 1.048 0 1.708-0.453 1.982-1.36l2.795 0.242zm-4.924-6.866c-0.696 0-1.232 0.242-1.608 0.728-0.377 0.485-0.575 1.164-0.597 2.035h4.43c-0.056-0.921-0.277-1.611-0.664-2.072-0.388-0.461-0.908-0.691-1.561-0.691zm18.007 3.997c0 1.905-0.381 3.377-1.144 4.413-0.764 1.038-1.841 1.557-3.233 1.557-0.801 0-1.499-0.174-2.093-0.522-0.595-0.348-1.05-0.849-1.366-1.503h-0.063c0.042 0.211 0.063 0.851 0.063 1.92v4.377h-2.964v-13.269c0-1.075-0.028-1.951-0.084-2.626h2.879c0.035 0.127 0.065 0.376 0.09 0.74901 0.025 0.373 0.037 0.742 0.037 1.107h0.042c0.668-1.399 1.885-2.099 3.649-2.099 1.329 0 2.358 0.512 3.09 1.534 0.731 1.024 1.097 2.477 1.097 4.362zm-5.463 3.944c1.582 0 2.373-1.314 2.373-3.944 0-2.56-0.784-3.839-2.352-3.839-0.788 0-1.391 0.345-1.81 1.033-0.418 0.689-0.627 1.652-0.627 2.89 0 1.23 0.209 2.183 0.627 2.853 0.419 0.672 1.015 1.007 1.789 1.007zm18.811-3.902c0 1.85-0.514 3.3-1.54 4.351-1.027 1.052-2.446 1.577-4.261 1.577-1.779 0-3.175-0.527-4.188-1.582-1.012-1.055-1.519-2.503-1.519-4.346 0-1.835 0.507-3.278 1.519-4.329 1.013-1.052 2.43-1.577 4.251-1.577 1.862 0 3.285 0.509 4.266 1.523 0.982 1.018 1.472 2.478 1.472 4.383zm-5.832 3.902c1.82 0 2.731-1.301 2.731-3.902 0-1.356-0.222-2.341-0.665-2.953-0.442-0.611-1.086-0.917-1.93-0.917-1.8 0-2.7 1.29-2.7 3.87 0 1.272 0.22 2.241 0.659 2.906 0.44 0.663 1.075 0.996 1.905 0.996zm17.784-1.518c0 1.104-0.452 1.971-1.354 2.6-0.904 0.63-2.153 0.944-3.75 0.944-1.567 0-2.769-0.249-3.602-0.743-0.833-0.497-1.387-1.268-1.661-2.315l2.605-0.391c0.147 0.542 0.401 0.925 0.765 1.149 0.361 0.226 0.993 0.338 1.893 0.338 0.83 0 1.435-0.105 1.814-0.31599 0.379-0.211 0.569-0.541 0.569-0.991 0-0.366-0.153-0.656-0.459-0.87-0.306-0.215-0.824-0.396-1.556-0.543-1.673-0.331-2.802-0.638-3.386-0.924-0.583-0.283-1.028-0.654-1.334-1.106-0.306-0.454-0.459-1.011-0.459-1.672 0-1.09 0.421-1.939 1.261-2.547 0.84-0.60899 2.03-0.913 3.57-0.913 1.356 0 2.448 0.264 3.274 0.791s1.342 1.291 1.545 2.289l-2.626 0.274c-0.084-0.464-0.292-0.81-0.622-1.04-0.33-0.227-0.854-0.342-1.571-0.342-0.703 0-1.23 0.089-1.582 0.27-0.352 0.178-0.527 0.479-0.527 0.901 0 0.33 0.135 0.592 0.406 0.786 0.27 0.192 0.726 0.353 1.365 0.479 0.894 0.183 1.686 0.371 2.379 0.563 0.691 0.194 1.248 0.424 1.666 0.691s0.752 0.609 1.002 1.029c0.25 0.418 0.375 0.954 0.375 1.609zm2.391-10.136v-2.183h2.964v2.183h-2.964zm0 13.469v-11.412h2.964v11.412h-2.964zm11.404-0.169c-0.731 0.239-1.564 0.358-2.499 0.358-0.872 0-1.544-0.236-2.015-0.712-0.472-0.474-0.707-1.193-0.707-2.156v-6.729h-1.444v-2.004h1.592l0.929-2.679h1.856v2.679h2.162v2.004h-2.162v5.928c0 0.556 0.105 0.966 0.316 1.228 0.211 0.266 0.537 0.396 0.98 0.396 0.232 0 0.562-0.049 0.991-0.147v1.834h0.001zm12.614-5.548c0 1.85-0.514 3.3-1.54 4.351-1.027 1.052-2.446 1.577-4.261 1.577-1.779 0-3.175-0.527-4.188-1.582-1.012-1.055-1.519-2.503-1.519-4.346 0-1.835 0.507-3.278 1.519-4.329 1.013-1.052 2.429-1.577 4.251-1.577 1.862 0 3.285 0.509 4.266 1.523 0.982 1.018 1.472 2.478 1.472 4.383zm-5.832 3.902c1.82 0 2.731-1.301 2.731-3.902 0-1.356-0.222-2.341-0.665-2.953-0.442-0.611-1.086-0.917-1.93-0.917-1.801 0-2.7 1.29-2.7 3.87 0 1.272 0.22 2.241 0.659 2.906 0.441 0.663 1.074 0.996 1.905 0.996zm8.166 1.815v-8.733c0-0.625-0.01-1.148-0.026-1.565-0.018-0.419-0.037-0.79-0.059-1.113h2.827c0.021 0.127 0.049 0.511 0.084 1.155 0.035 0.643 0.053 1.07 0.053 1.281h0.042c0.289-0.802 0.545-1.365 0.771-1.693 0.225-0.326 0.491-0.569 0.802-0.727 0.309-0.159 0.695-0.238 1.16-0.238 0.379 0 0.686 0.053 0.917 0.158v2.479c-0.479-0.105-0.9-0.158-1.266-0.158-0.738 0-1.312 0.299-1.725 0.896-0.411 0.598-0.616 1.484-0.616 2.658v5.601h-2.964zm9.879 4.482c-0.71 0-1.333-0.046-1.867-0.138v-2.109c0.373 0.057 0.714 0.085 1.023 0.085 0.422 0 0.771-0.067 1.049-0.2 0.278-0.134 0.527-0.355 0.749-0.665s0.47-0.833 0.744-1.571l-4.515-11.296h3.133l1.793 5.348c0.281 0.767 0.636 1.94 1.065 3.522l0.264-1.002 0.686-2.479 1.688-5.39h3.101l-4.515 12.013c-0.604 1.463-1.231 2.476-1.882 3.038s-1.489 0.844-2.516 0.844z"/>
<path fill-rule="evenodd" fill="#119a48" d="m570.78 234.72zm-170.04-102.12zm16.92 0c-8.4 0-16.92 8.52-16.92 17.04v68.04c0 8.521 8.52 17.04 16.92 17.04h136.08c8.52 0 17.04-8.52 17.04-17.04v-68.04c0-8.521-8.521-17.04-17.04-17.04h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m417.66 132.6c-8.4 0-16.92 8.52-16.92 17.04v68.04c0 8.521 8.52 17.04 16.92 17.04h136.08c8.52 0 17.04-8.52 17.04-17.04v-68.04c0-8.521-8.521-17.04-17.04-17.04h-136.08z"/>
<path d="m400.74 132.6z"/>
<path d="m570.78 234.72z"/>
</g>
<path fill="#fff" d="m461.8 188.92c1.877 0 3.182-0.942 3.912-2.827l2.711 1.023c-0.584 1.435-1.439 2.501-2.567 3.201-1.129 0.699-2.481 1.049-4.056 1.049-2.391 0-4.238-0.677-5.542-2.03-1.305-1.354-1.957-3.246-1.957-5.679 0-2.44 0.629-4.314 1.888-5.622s3.083-1.962 5.474-1.962c1.744 0 3.164 0.351 4.261 1.05 1.098 0.699 1.867 1.728 2.311 3.085l-2.742 0.749c-0.232-0.745-0.688-1.338-1.365-1.777-0.679-0.439-1.479-0.659-2.4-0.659-1.406 0-2.473 0.436-3.2 1.308s-1.093 2.148-1.093 3.829c0 1.708 0.375 3.013 1.124 3.912 0.747 0.9 1.827 1.35 3.241 1.35zm15.109 0.2c-0.829 1.498-2.081 2.246-3.754 2.246-1.104 0-1.966-0.3-2.584-0.901-0.619-0.602-0.929-1.446-0.929-2.536 0-1.182 0.386-2.082 1.155-2.7 0.771-0.619 1.886-0.936 3.349-0.949l2.457-0.042v-0.58c0-0.746-0.13-1.3-0.39-1.661-0.261-0.362-0.686-0.544-1.276-0.544-0.549 0-0.95 0.125-1.207 0.375-0.257 0.249-0.417 0.662-0.48 1.239l-3.091-0.147c0.19-1.111 0.699-1.953 1.525-2.526s1.952-0.859 3.379-0.859c1.441 0 2.553 0.354 3.333 1.065 0.78 0.71 1.171 1.719 1.171 3.026v4.155c0 0.641 0.072 1.081 0.217 1.324 0.145 0.242 0.385 0.363 0.722 0.363 0.226 0 0.443-0.021 0.654-0.062v1.603c-0.176 0.042-0.334 0.081-0.475 0.116s-0.281 0.063-0.422 0.084-0.29 0.039-0.448 0.053c-0.158 0.015-0.343 0.021-0.554 0.021-0.745 0-1.295-0.183-1.65-0.549-0.354-0.365-0.568-0.903-0.639-1.613h-0.063v-0.001zm-0.305-3.248-1.519 0.021c-0.689 0.028-1.178 0.104-1.466 0.227s-0.508 0.312-0.659 0.564c-0.15 0.253-0.227 0.591-0.227 1.013 0 0.541 0.125 0.944 0.375 1.208 0.249 0.264 0.581 0.396 0.996 0.396 0.464 0 0.888-0.127 1.271-0.38s0.683-0.604 0.9-1.05c0.219-0.446 0.327-0.919 0.327-1.418v-0.581zm10.552 5.494c-1.729 0-3.065-0.515-4.008-1.545s-1.413-2.466-1.413-4.309c0-1.884 0.475-3.352 1.424-4.403s2.296-1.576 4.039-1.576c1.343 0 2.454 0.337 3.333 1.013 0.879 0.675 1.431 1.606 1.656 2.795l-2.985 0.147c-0.084-0.584-0.295-1.05-0.633-1.397-0.337-0.349-0.815-0.522-1.435-0.522-1.525 0-2.288 1.276-2.288 3.829 0 2.629 0.776 3.944 2.331 3.944 0.562 0 1.033-0.178 1.413-0.533 0.38-0.354 0.615-0.884 0.706-1.587l2.975 0.137c-0.105 0.781-0.386 1.477-0.839 2.089-0.454 0.611-1.049 1.084-1.787 1.418s-1.569 0.5-2.489 0.5zm10.173-9.344c0.401-0.872 0.904-1.505 1.509-1.898 0.604-0.395 1.325-0.591 2.162-0.591 1.209 0 2.138 0.372 2.784 1.118 0.646 0.745 0.971 1.835 0.971 3.27v7.234h-2.953v-6.391c0-2.004-0.679-3.006-2.036-3.006-0.717 0-1.295 0.308-1.734 0.923s-0.659 1.404-0.659 2.367v6.106h-2.964v-15.651h2.964v4.271c0 0.767-0.028 1.516-0.085 2.247h0.041zm19.854 6.244c-0.809 2.067-2.451 3.101-4.926 3.101-1.716 0-3.034-0.508-3.955-1.523-0.921-1.017-1.382-2.498-1.382-4.445 0-1.885 0.468-3.333 1.403-4.346s2.26-1.519 3.976-1.519c1.639 0 2.89 0.543 3.755 1.629 0.865 1.087 1.297 2.678 1.297 4.772v0.085h-7.319c0 1.11 0.205 1.949 0.616 2.516 0.412 0.565 0.998 0.849 1.757 0.849 1.048 0 1.709-0.453 1.983-1.36l2.795 0.241zm-4.926-6.867c-0.696 0-1.232 0.243-1.609 0.729-0.376 0.484-0.574 1.163-0.595 2.035h4.43c-0.057-0.921-0.278-1.612-0.665-2.072-0.387-0.461-0.907-0.692-1.561-0.692z"/>
<path fill-rule="evenodd" fill="#119a48" d="m574.26 503.4zm-170.16-102zm17.041 0c-8.521 0-17.041 8.52-17.041 16.92v68.04c0 8.52 8.52 17.04 17.041 17.04h136.08c8.399 0 17.04-8.521 17.04-17.04v-68.04c0-8.4-8.641-16.92-17.04-16.92h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m421.14 401.4c-8.521 0-17.041 8.52-17.041 16.92v68.04c0 8.52 8.52 17.04 17.041 17.04h136.08c8.399 0 17.04-8.521 17.04-17.04v-68.04c0-8.4-8.641-16.92-17.04-16.92h-136.08z"/>
<path d="m404.1 401.4z"/>
<path d="m574.26 503.4z"/>
</g>
<path fill="#fff" d="m466.25 437.8c0 0.956-0.218 1.811-0.653 2.563-0.437 0.752-1.061 1.333-1.873 1.746-0.812 0.41-1.776 0.616-2.895 0.616h-3.691v5.231h-3.111v-14.861h6.676c1.779 0 3.148 0.409 4.107 1.229 0.96 0.819 1.44 1.979 1.44 3.476zm-3.131 0.052c0-1.561-0.923-2.341-2.764-2.341h-3.217v4.819h3.301c0.858 0 1.52-0.212 1.983-0.639 0.464-0.423 0.697-1.037 0.697-1.839zm5.356 10.105v-8.733c0-0.626-0.009-1.148-0.026-1.565-0.018-0.42-0.037-0.79-0.059-1.113h2.827c0.021 0.127 0.049 0.511 0.084 1.155 0.035 0.643 0.053 1.07 0.053 1.281h0.042c0.289-0.802 0.545-1.365 0.771-1.693 0.225-0.326 0.492-0.569 0.802-0.727 0.309-0.159 0.695-0.238 1.16-0.238 0.379 0 0.686 0.053 0.917 0.158v2.479c-0.478-0.105-0.899-0.158-1.266-0.158-0.738 0-1.312 0.299-1.724 0.896s-0.617 1.483-0.617 2.658v5.601h-2.964zm19.244-5.717c0 1.85-0.513 3.3-1.54 4.35-1.026 1.053-2.446 1.578-4.261 1.578-1.778 0-3.173-0.527-4.186-1.582s-1.519-2.504-1.519-4.346c0-1.835 0.506-3.279 1.519-4.329 1.013-1.052 2.428-1.577 4.249-1.577 1.863 0 3.286 0.509 4.267 1.523 0.982 1.018 1.471 2.478 1.471 4.383zm-5.831 3.903c1.82 0 2.73-1.301 2.73-3.902 0-1.357-0.221-2.342-0.663-2.953-0.443-0.611-1.088-0.918-1.932-0.918-1.8 0-2.7 1.291-2.7 3.871 0 1.272 0.221 2.24 0.66 2.906 0.44 0.662 1.074 0.996 1.905 0.996zm8.113 6.296c-0.703 0-1.301-0.032-1.793-0.096v-2.088l0.537 0.042c0.507 0 0.853-0.11 1.04-0.333 0.185-0.22 0.278-0.68 0.278-1.375v-12.045h2.964v12.762c0 1.006-0.255 1.779-0.764 2.32-0.51 0.542-1.264 0.813-2.262 0.813zm0.063-17.951v-2.184h2.964v2.184h-2.964zm15.571 10.578c-0.809 2.067-2.452 3.102-4.926 3.102-1.717 0-3.034-0.509-3.955-1.523-0.922-1.018-1.382-2.499-1.382-4.446 0-1.885 0.468-3.333 1.403-4.346 0.934-1.013 2.259-1.519 3.976-1.519 1.638 0 2.891 0.544 3.755 1.629 0.865 1.088 1.298 2.678 1.298 4.773v0.084h-7.32c0 1.111 0.205 1.949 0.617 2.516 0.411 0.565 0.997 0.849 1.756 0.849 1.047 0 1.709-0.453 1.983-1.36l2.795 0.241zm-4.926-6.865c-0.696 0-1.232 0.242-1.608 0.728-0.377 0.485-0.574 1.163-0.596 2.035h4.43c-0.058-0.921-0.279-1.611-0.664-2.073-0.389-0.459-0.907-0.69-1.562-0.69zm12.094 9.967c-1.729 0-3.065-0.516-4.008-1.545-0.942-1.031-1.413-2.467-1.413-4.309 0-1.885 0.475-3.354 1.424-4.403 0.949-1.052 2.296-1.577 4.039-1.577 1.344 0 2.454 0.338 3.333 1.013s1.431 1.606 1.656 2.795l-2.985 0.147c-0.084-0.584-0.295-1.049-0.633-1.398-0.337-0.347-0.815-0.521-1.434-0.521-1.526 0-2.289 1.276-2.289 3.829 0 2.63 0.777 3.944 2.331 3.944 0.562 0 1.033-0.178 1.413-0.532 0.38-0.356 0.615-0.885 0.707-1.588l2.974 0.138c-0.105 0.78-0.386 1.477-0.839 2.088s-1.049 1.085-1.787 1.418c-0.738 0.334-1.568 0.501-2.489 0.501zm12.674-0.38c-0.731 0.239-1.564 0.358-2.499 0.358-0.872 0-1.544-0.236-2.015-0.713-0.472-0.473-0.707-1.192-0.707-2.156v-6.729h-1.444v-2.004h1.592l0.929-2.679h1.856v2.679h2.162v2.004h-2.162v5.928c0 0.555 0.105 0.965 0.316 1.228 0.211 0.265 0.537 0.396 0.98 0.396 0.232 0 0.562-0.05 0.991-0.147v1.835h0.001z"/>
<path fill="#fff" d="m447.23 471.84h-3.133l-1.813-6.961c-0.085-0.316-0.25-1.097-0.496-2.341l-0.548 2.362-1.836 6.939h-3.132l-2.953-11.411h2.784l1.877 8.722 0.148-0.781 0.264-1.233 1.793-6.707h3.174l1.751 6.707c0.099 0.366 0.243 1.036 0.433 2.015l0.295-1.394 1.646-7.328h2.742l-2.996 11.411zm15.392-5.716c0 1.849-0.514 3.299-1.54 4.35s-2.446 1.577-4.261 1.577c-1.779 0-3.175-0.527-4.188-1.582-1.012-1.055-1.519-2.503-1.519-4.345 0-1.836 0.507-3.279 1.519-4.33 1.013-1.052 2.43-1.576 4.251-1.576 1.863 0 3.286 0.507 4.267 1.523s1.471 2.477 1.471 4.383zm-5.832 3.902c1.82 0 2.731-1.301 2.731-3.902 0-1.357-0.222-2.342-0.665-2.953-0.442-0.612-1.086-0.919-1.93-0.919-1.8 0-2.7 1.291-2.7 3.872 0 1.272 0.221 2.24 0.66 2.904 0.441 0.665 1.074 0.998 1.904 0.998zm8.166 1.814v-8.732c0-0.626-0.009-1.148-0.026-1.567-0.018-0.418-0.036-0.788-0.058-1.111h2.826c0.021 0.126 0.05 0.511 0.085 1.154s0.053 1.069 0.053 1.28h0.042c0.288-0.802 0.545-1.365 0.77-1.692 0.226-0.326 0.492-0.569 0.802-0.728s0.696-0.237 1.16-0.237c0.38 0 0.686 0.054 0.918 0.159v2.478c-0.479-0.105-0.9-0.157-1.266-0.157-0.738 0-1.313 0.298-1.726 0.896-0.411 0.598-0.616 1.483-0.616 2.657v5.602h-2.964zm15.691 0-3.048-5.168-1.276 0.886v4.282h-2.964v-15.651h2.964v8.965l4.071-4.725h3.186l-4.008 4.45 4.313 6.961h-3.238zm14.212-3.333c0 1.104-0.453 1.971-1.356 2.6s-2.152 0.944-3.749 0.944c-1.567 0-2.769-0.248-3.602-0.744-0.834-0.495-1.387-1.267-1.661-2.314l2.605-0.392c0.147 0.543 0.401 0.926 0.764 1.151 0.362 0.225 0.994 0.337 1.894 0.337 0.83 0 1.435-0.105 1.814-0.316s0.569-0.541 0.569-0.991c0-0.365-0.153-0.656-0.459-0.87-0.306-0.215-0.824-0.396-1.556-0.543-1.673-0.33-2.802-0.639-3.385-0.924-0.584-0.284-1.029-0.653-1.335-1.107-0.306-0.453-0.458-1.011-0.458-1.672 0-1.09 0.419-1.938 1.26-2.547 0.84-0.607 2.03-0.912 3.57-0.912 1.357 0 2.448 0.265 3.274 0.792s1.341 1.289 1.546 2.287l-2.627 0.274c-0.084-0.464-0.291-0.81-0.622-1.038s-0.854-0.343-1.571-0.343c-0.703 0-1.23 0.09-1.582 0.269-0.352 0.18-0.527 0.479-0.527 0.901 0 0.33 0.135 0.593 0.405 0.786s0.727 0.353 1.366 0.479c0.894 0.183 1.686 0.371 2.378 0.564s1.248 0.425 1.667 0.691c0.418 0.268 0.752 0.609 1.002 1.028s0.376 0.957 0.376 1.61zm13.19-2.426c0 1.906-0.382 3.377-1.146 4.414-0.763 1.037-1.84 1.556-3.231 1.556-0.802 0-1.5-0.175-2.095-0.522-0.594-0.348-1.049-0.849-1.365-1.502h-0.062c0.042 0.211 0.062 0.851 0.062 1.919v4.377h-2.963v-13.269c0-1.076-0.028-1.95-0.085-2.625h2.88c0.035 0.126 0.064 0.375 0.089 0.747 0.024 0.373 0.037 0.743 0.037 1.108h0.042c0.668-1.398 1.885-2.1 3.649-2.1 1.329 0 2.359 0.512 3.091 1.535 0.731 1.024 1.097 2.478 1.097 4.362zm-5.464 3.945c1.582 0 2.373-1.315 2.373-3.945 0-2.559-0.783-3.839-2.352-3.839-0.787 0-1.391 0.345-1.81 1.034-0.418 0.688-0.627 1.652-0.627 2.89 0 1.23 0.209 2.181 0.627 2.853 0.42 0.67 1.016 1.007 1.789 1.007zm14.361-0.221c-0.829 1.497-2.081 2.246-3.755 2.246-1.104 0-1.965-0.301-2.584-0.902-0.618-0.601-0.928-1.446-0.928-2.536 0-1.181 0.385-2.081 1.154-2.699 0.77-0.619 1.887-0.936 3.35-0.949l2.457-0.043v-0.581c0-0.745-0.13-1.298-0.391-1.66-0.26-0.362-0.686-0.543-1.275-0.543-0.549 0-0.952 0.124-1.209 0.374-0.256 0.25-0.416 0.662-0.479 1.238l-3.091-0.147c0.19-1.11 0.697-1.952 1.523-2.525s1.954-0.858 3.381-0.858c1.441 0 2.553 0.354 3.333 1.063s1.171 1.721 1.171 3.028v4.155c0 0.64 0.071 1.081 0.216 1.323 0.144 0.242 0.385 0.364 0.723 0.364 0.225 0 0.443-0.021 0.654-0.063v1.604c-0.176 0.042-0.334 0.081-0.475 0.116s-0.281 0.063-0.422 0.084-0.291 0.039-0.449 0.053c-0.158 0.015-0.342 0.021-0.553 0.021-0.746 0-1.297-0.183-1.651-0.549-0.355-0.365-0.567-0.903-0.638-1.613h-0.062v-0.001zm-0.306-3.25-1.519 0.021c-0.689 0.028-1.178 0.104-1.466 0.228-0.289 0.123-0.509 0.312-0.66 0.564s-0.227 0.591-0.227 1.013c0 0.541 0.125 0.943 0.374 1.207 0.25 0.264 0.583 0.396 0.997 0.396 0.465 0 0.888-0.126 1.271-0.379 0.384-0.254 0.685-0.604 0.902-1.051 0.218-0.446 0.327-0.918 0.327-1.418v-0.581zm10.551 5.496c-1.73 0-3.066-0.516-4.008-1.546-0.942-1.029-1.414-2.467-1.414-4.309 0-1.885 0.477-3.352 1.426-4.402 0.949-1.052 2.294-1.576 4.038-1.576 1.343 0 2.454 0.337 3.333 1.012 0.879 0.676 1.431 1.605 1.656 2.794l-2.985 0.147c-0.085-0.583-0.296-1.049-0.633-1.396-0.338-0.348-0.815-0.522-1.435-0.522-1.525 0-2.287 1.277-2.287 3.829 0 2.63 0.775 3.945 2.329 3.945 0.562 0 1.034-0.179 1.413-0.533 0.38-0.355 0.615-0.885 0.708-1.588l2.975 0.138c-0.105 0.78-0.386 1.477-0.839 2.089-0.454 0.611-1.051 1.084-1.789 1.418s-1.567 0.5-2.488 0.5zm16.851-3.101c-0.809 2.067-2.451 3.101-4.926 3.101-1.716 0-3.034-0.509-3.955-1.524s-1.382-2.497-1.382-4.445c0-1.884 0.468-3.332 1.403-4.345s2.26-1.519 3.976-1.519c1.639 0 2.89 0.542 3.755 1.629 0.865 1.086 1.297 2.676 1.297 4.771v0.084h-7.319c0 1.111 0.205 1.95 0.616 2.517 0.412 0.565 0.998 0.85 1.757 0.85 1.048 0 1.709-0.454 1.983-1.362l2.795 0.243zm-4.925-6.867c-0.696 0-1.232 0.244-1.609 0.729-0.376 0.485-0.574 1.163-0.595 2.035h4.43c-0.057-0.922-0.278-1.611-0.665-2.072s-0.907-0.692-1.561-0.692z"/>
<path fill-rule="evenodd" fill="#010101" d="m158.58 241.56zm-13.679-115.68zm3.479 0v86.64h-3.479l6.84 29.04 6.84-29.04h-3.48v-86.64h-6.721z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="154.52 241.56 161.36 212.52 157.88 212.52 157.88 125.88 151.16 125.88 151.16 212.52 147.68 212.52"/>
<path d="m144.9 125.88z"/>
<path d="m158.58 241.56z"/>
</g>
<path fill-rule="evenodd" fill="#010101" d="m496.14 381zm-13.561-115.68zm3.361 0v86.76h-3.36l6.72 28.921 6.841-28.921h-3.36v-86.76h-6.841z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="492.08 381 498.92 352.08 495.56 352.08 495.56 265.32 488.72 265.32 488.72 352.08 485.36 352.08"/>
<path d="m482.58 265.32z"/>
<path d="m496.14 381z"/>
</g>
<path fill-rule="evenodd" fill="#010101" d="m378.18 217.08zm-110.64 49.199zm1.68 2.761 78.12-45.121-1.56-2.76 29.16-9.6-22.8 20.521-1.681-2.761-78.12 45.24-3.119-5.519z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="377.72 211.56 354.92 232.08 353.24 229.32 275.12 274.56 272 269.04 350.12 223.92 348.56 221.16"/>
<path d="m267.54 266.28z"/>
<path d="m378.18 217.08z"/>
</g>
<path fill-rule="evenodd" fill="#010101" d="m273.78 364.08zm97.92 71.161zm1.559-2.761-78.119-45.12-1.681 2.76-22.92-20.52 29.28 9.479-1.561 2.881 78.121 45.119-3.12 5.401z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="273.32 369.6 302.6 379.08 301.04 381.96 379.16 427.08 376.04 432.48 297.92 387.36 296.24 390.12"/>
<path d="m371.7 435.24z"/>
<path d="m273.78 364.08z"/>
</g>
<g fill="#010101">
<path d="m12.487 191.76-12.487-6.24l12.487-6.243v1.74l-8.996 4.503 8.996 4.493v1.751zm4.4-13.532v-2.077h2.077v2.077h-2.077zm0 13.532v-11.454h2.077v11.454h-2.077zm8.485 0-4.261-11.454h2.077l3.333 8.912 3.513-8.912h1.94l-4.524 11.454h-2.078zm9.545 4.166 1.856-4.166-4.43-11.454h2.246l3.28 8.627 3.502-8.627h1.961l-6.254 15.62h-2.161zm10.798-13.532v-2.088h2.078v2.088h-2.078zm0 9.366v-2.078h2.078v2.078h-2.078zm6.53-13.532v-2.077h2.078v2.077h-2.078zm0 13.532v-11.454h2.078v11.454h-2.078zm6.114 0v-11.454h2.077v2.151c1.097-1.603 2.44-2.404 4.029-2.404 0.991 0 1.782 0.314 2.373 0.943 0.591 0.63 0.886 1.476 0.886 2.537v8.227h-2.078v-7.552c0-0.851-0.124-1.457-0.374-1.819s-0.663-0.543-1.239-0.543c-1.272 0-2.472 0.833-3.597 2.499v7.415h-2.077zm16.451 0.263c-0.949 0-2.103-0.222-3.46-0.665v-1.908c1.357 0.675 2.539 1.012 3.544 1.012 0.598 0 1.094-0.161 1.487-0.484 0.394-0.324 0.591-0.729 0.591-1.213 0-0.711-0.552-1.298-1.656-1.762l-1.213-0.517c-1.793-0.745-2.689-1.817-2.689-3.217 0-0.999 0.354-1.784 1.061-2.357 0.706-0.573 1.675-0.859 2.905-0.859 0.64 0 1.431 0.088 2.373 0.264l0.433 0.084v1.729c-1.16-0.344-2.081-0.517-2.764-0.517-1.336 0-2.004 0.485-2.004 1.456 0 0.625 0.507 1.152 1.519 1.582l1.002 0.422c1.133 0.478 1.934 0.982 2.405 1.513s0.706 1.194 0.706 1.988c0 1.006-0.396 1.832-1.191 2.479-0.796 0.647-1.812 0.97-3.049 0.97zm12.996-0.263c-0.64 0.176-1.195 0.264-1.666 0.264-1.055 0-1.877-0.303-2.468-0.907s-0.886-1.445-0.886-2.521v-6.729h-1.435v-1.561h1.435v-2.078l2.077-0.2v2.278h2.995v1.561h-2.995v6.35c0 1.498 0.647 2.246 1.94 2.246 0.274 0 0.608-0.045 1.002-0.137v1.434h0.001zm10.693 0.263c-0.971 0-1.589-0.573-1.856-1.72-1.244 1.146-2.443 1.72-3.597 1.72-0.949 0-1.736-0.297-2.362-0.892-0.626-0.594-0.938-1.345-0.938-2.252 0-1.251 0.525-2.213 1.576-2.884 1.052-0.672 2.558-1.008 4.52-1.008h0.496v-1.382c0-1.328-0.683-1.993-2.046-1.993-1.098 0-2.282 0.338-3.555 1.013v-1.719c1.399-0.57 2.711-0.854 3.934-0.854 1.28 0 2.224 0.288 2.832 0.864 0.608 0.577 0.912 1.474 0.912 2.689v5.189c0 1.188 0.366 1.782 1.098 1.782 0.091 0 0.225-0.014 0.4-0.042l0.147 1.149c-0.471 0.228-0.991 0.34-1.561 0.34zm-4.862-1.698c0.865 0 1.765-0.383 2.7-1.149v-2.964l-0.696-0.021c-1.139 0-2.061 0.217-2.764 0.649s-1.055 1-1.055 1.703c0 0.499 0.176 0.921 0.527 1.266s0.782 0.516 1.288 0.516zm9.088 1.435v-16.653h2.078v16.653h-2.078zm6.112 0v-16.653h2.078v16.653h-2.078zm6.2 3.122 5.622-18.731h1.635l-5.622 18.731h-1.635zm11.69-3.122 12.488-6.244-12.488-6.243v1.74l8.997 4.503-8.997 4.493v1.751z"/>
<path d="m515.89 331.2-12.487-6.244 12.487-6.244v1.74l-8.996 4.504 8.996 4.493v1.751zm4.399-13.532v-2.077h2.077v2.077h-2.077zm0 13.532v-11.454h2.077v11.454h-2.077zm8.487 0-4.261-11.454h2.078l3.332 8.912 3.513-8.912h1.94l-4.524 11.454h-2.078zm9.545 4.166 1.856-4.166-4.43-11.454h2.246l3.28 8.627 3.502-8.627h1.962l-6.255 15.62h-2.161zm10.798-13.532v-2.088h2.078v2.088h-2.078zm0 9.366v-2.078h2.078v2.078h-2.078zm6.529 0v-11.454h2.078v2.151c0.822-1.604 2.018-2.404 3.586-2.404 0.211 0 0.433 0.018 0.664 0.053v1.94c-0.358-0.12-0.675-0.18-0.949-0.18-1.314 0-2.415 0.78-3.301 2.342v7.552h-2.078zm17.166-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.064-0.561-4.13-1.684-1.065-1.12-1.598-2.574-1.598-4.36 0-1.736 0.469-3.16 1.408-4.271 0.938-1.11 2.14-1.666 3.602-1.666 1.386 0 2.455 0.492 3.211 1.477s1.135 2.384 1.135 4.197l-0.011 0.644h-7.225c0.303 2.721 1.635 4.082 3.997 4.082 0.865 0 1.927-0.232 3.186-0.696v1.644zm-4.419-9.788c-1.597 0-2.485 1.065-2.669 3.196h5.053c0-2.131-0.795-3.196-2.384-3.196zm13.225 10.157c-0.64 0.174-1.195 0.264-1.667 0.264-1.055 0-1.877-0.303-2.468-0.907s-0.886-1.445-0.886-2.521v-6.729h-1.435v-1.561h1.435v-2.078l2.078-0.2v2.278h2.995v1.561h-2.995v6.35c0 1.497 0.646 2.246 1.94 2.246 0.274 0 0.608-0.046 1.002-0.137v1.434h0.001zm2.929 0v-11.454h2.077v2.151c0.823-1.604 2.019-2.404 3.586-2.404 0.211 0 0.433 0.018 0.665 0.053v1.94c-0.358-0.12-0.675-0.18-0.949-0.18-1.315 0-2.415 0.78-3.302 2.342v7.552h-2.077zm8.771-13.532v-2.077h2.077v2.077h-2.077zm0 13.532v-11.454h2.077v11.454h-2.077zm14.637-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.064-0.561-4.13-1.684-1.065-1.12-1.598-2.574-1.598-4.36 0-1.736 0.469-3.16 1.407-4.271 0.939-1.11 2.141-1.666 3.603-1.666 1.386 0 2.455 0.492 3.211 1.477s1.135 2.384 1.135 4.197l-0.011 0.644h-7.225c0.303 2.721 1.635 4.082 3.997 4.082 0.865 0 1.926-0.232 3.186-0.696v1.644zm-4.419-9.788c-1.597 0-2.486 1.065-2.669 3.196h5.052c0-2.131-0.794-3.196-2.383-3.196zm10.493 10.157-4.261-11.454h2.078l3.333 8.912 3.512-8.912h1.94l-4.524 11.454h-2.078zm17.189-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.064-0.561-4.13-1.684-1.065-1.12-1.598-2.574-1.598-4.36 0-1.736 0.469-3.16 1.408-4.271 0.938-1.11 2.14-1.666 3.602-1.666 1.386 0 2.455 0.492 3.211 1.477s1.135 2.384 1.135 4.197l-0.011 0.644h-7.225c0.303 2.721 1.635 4.082 3.997 4.082 0.865 0 1.927-0.232 3.186-0.696v1.644zm-4.419-9.788c-1.597 0-2.485 1.065-2.669 3.196h5.053c0-2.131-0.795-3.196-2.384-3.196zm8.384 10.157 12.487-6.244-12.487-6.244v1.74l8.996 4.504-8.996 4.493v1.751z"/>
<path d="m260.77 463.92-12.488-6.243 12.488-6.244v1.74l-8.997 4.504 8.997 4.493v1.75zm4.398-13.531v-2.078h2.078v2.078h-2.078zm0 13.531v-11.453h2.078v11.453h-2.078zm8.487 0-4.262-11.453h2.078l3.333 8.912 3.512-8.912h1.94l-4.524 11.453h-2.077zm9.545 4.166 1.855-4.166-4.43-11.453h2.247l3.28 8.627 3.501-8.627h1.962l-6.254 15.619h-2.161zm10.797-13.531v-2.088h2.078v2.088h-2.078zm0 9.365v-2.077h2.078v2.077h-2.078zm6.531 4.166v-15.619h2.078v2.151c0.851-1.604 2.127-2.405 3.828-2.405 1.378 0 2.463 0.503 3.254 1.509 0.791 1.005 1.187 2.38 1.187 4.124 0 1.898-0.448 3.43-1.345 4.592-0.896 1.165-2.076 1.746-3.539 1.746-1.356 0-2.485-0.52-3.385-1.561v5.463h-2.078zm2.078-6.897c1.068 0.956 2.088 1.435 3.059 1.435 1.996 0 2.995-1.522 2.995-4.566 0-2.686-0.886-4.029-2.658-4.029-1.16 0-2.292 0.629-3.396 1.888v5.272zm18.647 2.731v-2.151c-1.104 1.61-2.443 2.415-4.018 2.415-0.999 0-1.793-0.313-2.384-0.944-0.591-0.628-0.886-1.477-0.886-2.546v-8.227h2.078v7.551c0 0.859 0.124 1.469 0.374 1.83 0.249 0.363 0.666 0.543 1.25 0.543 1.265 0 2.46-0.833 3.585-2.499v-7.425h2.078v11.453h-2.077zm6.167 0.127v-16.78h2.077v7.352c0.851-1.604 2.127-2.405 3.829-2.405 1.378 0 2.462 0.503 3.253 1.509 0.791 1.005 1.187 2.38 1.187 4.124 0 1.898-0.448 3.43-1.345 4.592-0.896 1.165-2.075 1.746-3.538 1.746-1.357 0-2.485-0.52-3.386-1.561l-0.253 1.424h-1.824zm2.077-2.858c1.069 0.956 2.089 1.435 3.059 1.435 1.997 0 2.995-1.522 2.995-4.566 0-2.686-0.886-4.029-2.657-4.029-1.16 0-2.292 0.629-3.396 1.888v5.272zm11.488 2.731v-16.653h2.077v16.653h-2.077zm6.242-13.531v-2.078h2.078v2.078h-2.078zm0 13.531v-11.453h2.078v11.453h-2.078zm9.15 0.264c-0.949 0-2.103-0.221-3.46-0.664v-1.909c1.357 0.675 2.538 1.013 3.544 1.013 0.598 0 1.094-0.162 1.487-0.485s0.591-0.728 0.591-1.213c0-0.71-0.553-1.297-1.656-1.761l-1.213-0.518c-1.793-0.744-2.689-1.817-2.689-3.217 0-0.998 0.354-1.783 1.061-2.357 0.707-0.572 1.675-0.859 2.905-0.859 0.64 0 1.431 0.088 2.373 0.264l0.433 0.085v1.729c-1.16-0.345-2.082-0.517-2.764-0.517-1.336 0-2.004 0.485-2.004 1.455 0 0.627 0.506 1.154 1.519 1.582l1.002 0.422c1.132 0.479 1.934 0.983 2.405 1.513 0.471 0.532 0.706 1.194 0.706 1.989 0 1.007-0.397 1.831-1.191 2.479-0.796 0.645-1.811 0.969-3.049 0.969zm7.979-0.264v-16.653h2.078v7.352c1.097-1.604 2.439-2.405 4.029-2.405 0.991 0 1.782 0.315 2.373 0.943 0.59 0.631 0.886 1.477 0.886 2.537v8.227h-2.078v-7.551c0-0.85-0.125-1.457-0.375-1.82-0.249-0.361-0.663-0.543-1.238-0.543-1.274 0-2.473 0.834-3.597 2.5v7.414h-2.078zm13.591 0 12.487-6.243-12.487-6.244v1.74l8.996 4.504-8.996 4.493v1.75z"/>
<path d="m264.13 195.24-12.487-6.243 12.487-6.244v1.74l-8.996 4.504 8.996 4.492v1.751zm4.4-13.531v-2.078h2.077v2.078h-2.077zm0 13.531v-11.454h2.077v11.454h-2.077zm8.615 0-4.261-11.454h2.078l3.332 8.912 3.513-8.912h1.94l-4.524 11.454h-2.078zm9.459 4.166 1.856-4.166-4.43-11.454h2.246l3.28 8.628 3.502-8.628h1.961l-6.254 15.62h-2.161zm10.906-13.531v-2.089h2.077v2.089h-2.077zm0 9.365v-2.077h2.077v2.077h-2.077zm6.422 0v-11.454h2.077v2.152c0.823-1.604 2.019-2.405 3.586-2.405 0.211 0 0.433 0.018 0.665 0.053v1.94c-0.358-0.119-0.675-0.179-0.949-0.179-1.315 0-2.415 0.78-3.302 2.341v7.552h-2.077zm17.164-0.369c-1.392 0.422-2.584 0.633-3.574 0.633-1.688 0-3.064-0.561-4.13-1.682-1.064-1.122-1.598-2.575-1.598-4.361 0-1.736 0.47-3.16 1.408-4.271s2.14-1.667 3.602-1.667c1.386 0 2.456 0.492 3.212 1.477s1.133 2.384 1.133 4.198l-0.011 0.644h-7.224c0.303 2.721 1.635 4.081 3.997 4.081 0.864 0 1.926-0.231 3.185-0.696v1.644zm-4.418-9.787c-1.597 0-2.486 1.065-2.669 3.195h5.052c0-2.13-0.794-3.195-2.383-3.195zm11.157 10.42c-0.949 0-2.104-0.222-3.459-0.664v-1.909c1.355 0.675 2.537 1.013 3.544 1.013 0.597 0 1.092-0.162 1.485-0.485 0.395-0.323 0.591-0.728 0.591-1.213 0-0.71-0.552-1.297-1.654-1.762l-1.214-0.517c-1.793-0.744-2.688-1.817-2.688-3.217 0-0.998 0.353-1.784 1.06-2.357 0.706-0.572 1.674-0.859 2.906-0.859 0.639 0 1.43 0.089 2.371 0.264l0.434 0.085v1.729c-1.16-0.344-2.082-0.517-2.763-0.517-1.337 0-2.004 0.484-2.004 1.455 0 0.626 0.506 1.153 1.519 1.582l1.001 0.422c1.132 0.479 1.934 0.982 2.404 1.514 0.472 0.53 0.708 1.193 0.708 1.988 0 1.006-0.398 1.831-1.193 2.479-0.795 0.647-1.811 0.969-3.048 0.969zm12.461 0c-1.639 0-2.946-0.543-3.924-1.629-0.977-1.087-1.466-2.54-1.466-4.361 0-1.842 0.49-3.3 1.471-4.372s2.312-1.608 3.993-1.608c1.68 0 3.01 0.536 3.991 1.608 0.98 1.072 1.472 2.522 1.472 4.351 0 1.871-0.492 3.34-1.477 4.409s-2.337 1.602-4.06 1.602zm-3.175-5.99c0 2.953 1.069 4.43 3.206 4.43 2.201 0 3.302-1.483 3.302-4.451 0-2.932-1.087-4.397-3.259-4.397-2.166-0.001-3.249 1.471-3.249 4.418zm11.89 5.726v-16.653h2.078v16.653h-2.078zm8.486 0-4.262-11.454h2.078l3.333 8.912 3.512-8.912h1.94l-4.524 11.454h-2.077zm17.276-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.063-0.561-4.129-1.682-1.065-1.122-1.599-2.575-1.599-4.361 0-1.736 0.471-3.16 1.409-4.271s2.139-1.667 3.601-1.667c1.386 0 2.457 0.492 3.213 1.477s1.133 2.384 1.133 4.198l-0.011 0.644h-7.225c0.303 2.721 1.635 4.081 3.997 4.081 0.865 0 1.927-0.231 3.186-0.696v1.644zm-4.419-9.787c-1.597 0-2.485 1.065-2.669 3.195h5.053c0-2.13-0.795-3.195-2.384-3.195zm8.384 10.156 12.487-6.243-12.487-6.244v1.74l8.996 4.504-8.996 4.492v1.751z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 151 B

After

Width:  |  Height:  |  Size: 151 B

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 229 B

View File

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 762 B

View File

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<!--
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
https://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.
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- An SVG of a warning icon -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1em" version="1.1" y="0px" x="0px" viewBox="0 0 980.02045 886.1"><g fill="red"><path d="m972.9158,794.5l-426.1,-761.1c-10.5,-20 -31.1,-32.7 -53.7,-33.4l-1.7,0c-22,0 -42.4,11.5 -53.7,30.5l-428.9,761c-11.5,19.4 -11.8,43.3 -0.6,62.9c11.1,19.6 31.9,31.7 54.4,31.7l854.9,0c21.9,0 42.2,-11.5 53.5,-30.2s12,-42 1.9,-61.4zm-910.4,29.2l428.9,-761.1l426,761.1l-854.9,0z"/><path d="m490.3158,626.7c-36.5,0 -62.1,25.6 -62.1,62.8c0,35.8 24.9,62.8 60.7,62.8l1.4,0c37.3,0 61.5,-27 61.5,-62.8c-0.7,-37.3 -24.9,-62.8 -61.5,-62.8z"/><path d="m451.0158,592.1l78.7,0l15.2,-312.6l-109,0l15.1,312.6z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Some files were not shown because too many files have changed in this diff Show More