From b47ee96183fa8e70fc76690c44c0916914219064 Mon Sep 17 00:00:00 2001 From: dankito Date: Tue, 3 Dec 2024 22:09:52 +0100 Subject: [PATCH] Implemented parsing CEF (EU) genericode Code Lists to Kotlin enum classes --- .../invoicing/model/codes/CodeLists.md | 75 ++++++++++++++++++ e-invoice-spec-parser/build.gradle.kts | 36 +++++++++ .../app/CefGenericodeCodelistsParserApp.kt | 27 +++++++ .../codinux/invoicing/parser/CodeGenerator.kt | 54 +++++++++++++ .../CefGenericodeCodelistsParser.kt | 74 +++++++++++++++++ .../invoicing/parser/genericode/CodeList.kt | 16 ++++ .../invoicing/parser/model/CodeListType.kt | 27 +++++++ .../codinux/invoicing/parser/model/Column.kt | 10 +++ .../codeLists/cef-genericodes-2024-11-15.zip | Bin 0 -> 70260 bytes .../src/main/resources/logback-test.xml | 32 ++++++++ gradle.properties | 2 + settings.gradle.kts | 2 + 12 files changed, 355 insertions(+) create mode 100644 e-invoice-domain/src/main/kotlin/net/codinux/invoicing/model/codes/CodeLists.md create mode 100644 e-invoice-spec-parser/build.gradle.kts create mode 100644 e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/app/CefGenericodeCodelistsParserApp.kt create mode 100644 e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/CodeGenerator.kt create mode 100644 e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CefGenericodeCodelistsParser.kt create mode 100644 e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CodeList.kt create mode 100644 e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/CodeListType.kt create mode 100644 e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/Column.kt create mode 100644 e-invoice-spec-parser/src/main/resources/codeLists/cef-genericodes-2024-11-15.zip create mode 100644 e-invoice-spec-parser/src/main/resources/logback-test.xml diff --git a/e-invoice-domain/src/main/kotlin/net/codinux/invoicing/model/codes/CodeLists.md b/e-invoice-domain/src/main/kotlin/net/codinux/invoicing/model/codes/CodeLists.md new file mode 100644 index 0000000..c75b522 --- /dev/null +++ b/e-invoice-domain/src/main/kotlin/net/codinux/invoicing/model/codes/CodeLists.md @@ -0,0 +1,75 @@ + +## Sources + +Sources of Code Lists according to XRechnung specification p. 105, enhanced by information from [EN16931 code lists file](https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931) + +| Name | Beschreibung | Version | XRepository Versionskennung und Link | Usage | Using in fields | +|--------------|----------------------------------------------------------------------------------------------------|---------|-----------------------------------------------|-----------|-------------------------------------------------------------------------| +| ISO 3166-1 | Country codes (kompatibel zu ISO 3166-1) | 2022 | urn:xoev-de:kosit:codeliste:country-codes_8 | extended | BT-40, BT-55, BT-69, BT-80, BT-159 | +| ISO 4217 | Currency codes (kompatibel zu ISO 4217) | 2021 | urn:xoev-de:kosit:codeliste:currency-codes_3 | full list | BT-5, BT-6 | +| ISO/IEC 6523 | ICD — Identifier scheme code (kompatibel zu ISO 6523) | 2023 | urn:xoev-de:kosit:codeliste:icd_5 | full list | BT-29-1, BT-30-1, BT-46-1, BT-47-1, BT-60-1, BT-61-1, BT-71-1, BT-157-1 | +| UNTDID 1001 | Document name coded | 21a | urn:xoev-de:kosit:codeliste:untdid.1001_4 | subset | BT-3 | +| UNTDID 1153 | Reference code qualifier | d20a | urn:xoev-de:kosit:codeliste:untdid.1153_3 | full list | BT-18-1, BT-128-1 | +| UNTDID 2005 | Date or time or period function code qualifier | d21a | urn:xoev-de:kosit:codeliste:untdid.2005_4 | subset | BT-8 | +| UNTDID 4451 | Text subject code qualifier | d21a | urn:xoev-de:kosit:codeliste:untdid.4451_4 | full list | BT-21 | +| UNTDID 4461 | Payment means coded | d20a | urn:xoev-de:xrechnung:codeliste:untdid.4461_3 | full list | BT-81 | +| UNTDID 5189 | Allowance or charge identification coded | d20a | urn:xoev-de:kosit:codeliste:untdid.5189_3 | subset | BT-98, BT-140 | +| UNTDID 5305 | Duty or tax or fee category coded | d20a | urn:xoev-de:kosit:codeliste:untdid.5305_3 | subset | BT-95, BT-102, BT-118, BT-151 | +| UNTDID 7143 | Item type identification coded | d21a | urn:xoev-de:kosit:codeliste:untdid.7143_4 | full list | BT-158-1 | +| UNTDID 7161 | Special service description coded | d20a | urn:xoev-de:kosit:codeliste:untdid.7161_3 | full list | BT-105, BT-145 | +| EAS | Electronic Address Scheme Code list | 9.0 | urn:xoev-de:kosit:codeliste:eas_5 | full list | BT-34-1, BT-49-1 | +| VATEX | VAT exemption reason code list | 4.0 | urn:xoev-de:kosit:codeliste:vatex_1 | full list | BT-121 | +| Rec 20 | UN/EC Recommendation Nº20 – Codes for Units of Measure Used in International Trade | Rev. 17 | urn:xoev-de:kosit:codeliste:rec20_3 | full list | BT-130, BT-150 | +| Rec 21 | UN/EC Recommendation Nº21 – Codes for Passengers, Types of Cargo, Packages and Packaging Materials | Rev. 12 | urn:xoev-de:kosit:codeliste:rec21_3 | full list | BT-130, BT-150 | +| VAT ID | VAT Identifier; has only code "VAT" for Value added tax; code list only in EN Excel file | | | subset | BT-31, BT-48, BT-63 | +| VAT Cat | VAT Category code; has only code "VAT" for Value added tax; code list only in EN Excel file | | | subset | BT-95, BT-102, BT-118, BT-151 | +| MIME | Mime type codes — Mime codes; code list only in EN Excel file | | | subset | BT-125-1 | + + +## Einschätzung zu Quellen + +### EN / CEF Genericode Code Listen + +URL: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931 + +\+ good to parse + +\- no descriptions +\- only English names + + +### UNTDID + +URL e.g.: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred1001.htm + +\+ incl. Engl. descriptions + +\- difficult to parse, plain text only (on a website!) +\- only English names and descriptions +\- partially more codes than XRechnung standard allows + + +### Factur-X / ZUGFeRD Code Lists .xslx + +Download .zip from: https://www.ferd-net.de/standards/zugferd-2.3.2/zugferd-2.3.2.html?acceptCookie=1 + +\+ alle code lists in one file +\+ incl. Engl. descriptions and invoice fields in which codes are used + +\- difficult to parse + + +### UNECE Rec. 20 & 21 + +Recommendation 20 Codes for Units of Measure Used in International Trade + +Recommendation 21 Codes for Passengers, Types of Cargo, Packages and Packaging Materials (with Complementary Codes for Package Names) + +URL: https://unece.org/trade/uncefact/cl-recommendations + +\+ good to parse +\+ incl. Engl. descriptions +\+ incl. unit symbols + +\- only units, no other code lists +\- only English names and descriptions \ No newline at end of file diff --git a/e-invoice-spec-parser/build.gradle.kts b/e-invoice-spec-parser/build.gradle.kts new file mode 100644 index 0000000..e0e9151 --- /dev/null +++ b/e-invoice-spec-parser/build.gradle.kts @@ -0,0 +1,36 @@ +plugins { + kotlin("jvm") +} + + +kotlin { + jvmToolchain(11) +} + + +val phGenericodeVersion: String by project + +val klfVersion: String by project + +val assertKVersion: String by project +val logbackVersion: String by project + +dependencies { + implementation(project(":e-invoice-domain")) + + implementation("com.helger:ph-genericode:$phGenericodeVersion") + + implementation("net.codinux.log:klf:$klfVersion") + + + testImplementation(kotlin("test")) + + testImplementation("com.willowtreeapps.assertk:assertk:$assertKVersion") + + testImplementation("ch.qos.logback:logback-classic:$logbackVersion") +} + + +tasks.test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/app/CefGenericodeCodelistsParserApp.kt b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/app/CefGenericodeCodelistsParserApp.kt new file mode 100644 index 0000000..0d4e112 --- /dev/null +++ b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/app/CefGenericodeCodelistsParserApp.kt @@ -0,0 +1,27 @@ +package net.codinux.invoicing.app + +import net.codinux.invoicing.parser.CodeGenerator +import net.codinux.invoicing.parser.genericode.CefGenericodeCodelistsParser +import java.io.File + +fun main() { + CefGenericodeCodelistsParserApp().parseCefGenericodeLists() +} + +class CefGenericodeCodelistsParserApp { + + fun parseCefGenericodeLists() { + val zipFile = File(javaClass.classLoader.getResource("codeLists/cef-genericodes-2024-11-15.zip")!!.toURI()) + + val codeLists = CefGenericodeCodelistsParser().parse(zipFile) + + var outputDirectoryBasePath = zipFile.parentFile.parentFile.absolutePath.replace("e-invoice-spec-parser", "e-invoice-domain") + if (outputDirectoryBasePath.contains("/build/resources/main")) { + outputDirectoryBasePath = outputDirectoryBasePath.replace("/build/resources/main", "/src/main") + } + val outputDirectory = File(outputDirectoryBasePath, "kotlin/net/codinux/invoicing/model/codes") + + CodeGenerator().generateCodeFiles(codeLists, outputDirectory) + } + +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/CodeGenerator.kt b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/CodeGenerator.kt new file mode 100644 index 0000000..367c3b2 --- /dev/null +++ b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/CodeGenerator.kt @@ -0,0 +1,54 @@ +package net.codinux.invoicing.parser + +import net.codinux.invoicing.parser.genericode.CodeList +import net.codinux.invoicing.parser.genericode.Column +import java.io.File + +class CodeGenerator { + + fun generateCodeFiles(codeLists: List, outputDirectory: File) { + codeLists.forEach { codeList -> + File(outputDirectory, codeList.name + ".kt").bufferedWriter().use { writer -> + writer.appendLine("package net.codinux.invoicing.model.codes") + writer.newLine() + writer.appendLine("enum class ${getClassName(codeList)}(${codeList.columns.joinToString(", ") { "val ${getPropertyName(it)}: ${getDataType(codeList, it)}" } }) {") + + codeList.rows.forEach { row -> + writer.appendLine("\t${getEnumName(codeList.columns, row)}(${row.joinToString(", ") { it?.let { "\"${it.replace("\n", "")}\"" } ?: "null" } }),") + } + writer.appendLine("}") + } + } + } + + + private fun getClassName(codeList: CodeList): String { + val name = codeList.name + return if (name[0].isDigit()) "_" + name + else name + } + + private fun getPropertyName(column: Column): String = when (column.name) { + "Unique code" -> "uniqueCode" + "Meaning of the code" -> "meaningOfTheCode" + "Optional remark for the usage of this code" -> "optionalRemarkForTheUsageOfTheCode" + else -> column.name.replace(" ", "") + } + + private fun getDataType(codeList: CodeList, column: Column): String { + val index = codeList.columns.indexOf(column) + val containsNullValues = codeList.rows.any { it[index] == null } + + return when (column.dataType) { + "string" -> "String" + (if (containsNullValues) "?" else "") + else -> column.dataType[0].uppercase() + column.dataType.substring(1).replace(" ", "") + } + } + + private fun getEnumName(columns: List, row: List): String { + val name = (row[0] ?: "").replace(' ', '_').replace('/', '_').replace('.', '_').replace('-', '_') + return if (name[0].isDigit()) "_" + name + else name + } + +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CefGenericodeCodelistsParser.kt b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CefGenericodeCodelistsParser.kt new file mode 100644 index 0000000..5f4ae66 --- /dev/null +++ b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CefGenericodeCodelistsParser.kt @@ -0,0 +1,74 @@ +package net.codinux.invoicing.parser.genericode + +import com.helger.genericode.Genericode10CodeListMarshaller +import com.helger.xml.serialize.read.DOMReader +import net.codinux.invoicing.parser.model.CodeListType +import net.codinux.invoicing.parser.model.Column +import net.codinux.log.logger +import java.io.File +import java.io.InputStream +import java.util.zip.ZipFile + +class CefGenericodeCodelistsParser { + + private val log by logger() + + + fun parse(zipFile: File): List = + ZipFile(zipFile).use { zip -> + zip.entries().toList().filter { it.isDirectory == false && it.name.endsWith(".gc", true) } + .mapNotNull { parse(zip.getInputStream(it), it.name) } + } + + private fun parse(genericodeInputStream: InputStream, filename: String): CodeList? { + val doc = DOMReader.readXMLDOM(genericodeInputStream) + val marshaller = Genericode10CodeListMarshaller() + + if (doc == null) { + log.info { "Could not read XML document from file $filename" } + return null + } + + val codeListDoc = marshaller.read(doc) + if (codeListDoc == null) { + log.info { "Could not read Code List from file $filename" } + return null + } + + val columnSet = codeListDoc.columnSet + val identification = codeListDoc.identification + val simpleCodeList = codeListDoc.simpleCodeList + + val name = File(filename).nameWithoutExtension + val (version, canonicalUri, canonicalVersionUri) = Triple(identification?.version, identification?.canonicalUri, identification?.canonicalVersionUri) + val columns = columnSet?.columnChoice.orEmpty().filterIsInstance().mapIndexed { index, col -> Column(index, col.id!!, col.data?.type!!, col.shortNameValue!!) } + val rows = simpleCodeList?.row.orEmpty().map { row -> columns.map { column -> row.value.firstOrNull { (it.columnRef as? com.helger.genericode.v10.Column)?.id == column.id }?.simpleValueValue } } + + return CodeList(getType(name), name, version, canonicalUri, canonicalVersionUri, columns, rows) + } + + private fun getType(name: String): CodeListType = when (name) { + "Country" -> CodeListType.IsoCountryCodes + "Currency" -> CodeListType.IsoCurrencyCodes + "ICD" -> CodeListType.Iso_6523_IdentificationSchemeIdentifier + + "1001" -> CodeListType.UN_1001_InvoiceType + "1153" -> CodeListType.UN_1153_ReferenceCode + + "Text" -> CodeListType.UN_4451_TextSubjectCodeQualifier + "Payment" -> CodeListType.UN_4461_PaymentCodes + "5305" -> CodeListType.UN_5305_DutyOrTaxOrFeeCategory + "Allowance" -> CodeListType.UN_5189_AllowanceIdentificationCode + "Item" -> CodeListType.UN_7143_ItemTypeIdentificationCode + "Charge" -> CodeListType.UN_7161_SpecialServiceDescriptionCodes + + "Unit" -> CodeListType.Units + + "EAS" -> CodeListType.EAS + "VATEX" -> CodeListType.VATEX + "MIME" -> CodeListType.Mime + + else -> throw IllegalArgumentException("No known Code List of name '$name' found") + } + +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CodeList.kt b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CodeList.kt new file mode 100644 index 0000000..fa0d9e3 --- /dev/null +++ b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/genericode/CodeList.kt @@ -0,0 +1,16 @@ +package net.codinux.invoicing.parser.genericode + +import net.codinux.invoicing.parser.model.CodeListType +import net.codinux.invoicing.parser.model.Column + +class CodeList( + val type: CodeListType, + val name: String, + val version: String?, + val canonicalUri: String?, + val canonicalVersionUri: String?, + val columns: List, + val rows: List> +) { + override fun toString() = "$name ${columns.joinToString { it.name }}, ${rows.size} rows" +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/CodeListType.kt b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/CodeListType.kt new file mode 100644 index 0000000..8ab2e36 --- /dev/null +++ b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/CodeListType.kt @@ -0,0 +1,27 @@ +package net.codinux.invoicing.parser.model + +enum class CodeListType(val filename: String, val usesFullList: Boolean, val usedInFields: List) { + IsoCountryCodes("Country", true, listOf("BT-40", "BT-48", "BT-55", "BT-63", "BT-69", "BT-80", "BT-159")), // actually it's not only the full list, it's "extended" + IsoCurrencyCodes("Currency", true, listOf("BT-5", "BT-6")), + Iso_6523_IdentificationSchemeIdentifier("IdentifierSchemeCode", true, listOf("BT-29-1", "BT-30-1", "BT-46-1", "BT-47-1", "BT-60-1", "BT-61-1", "BT-71-1", "BT-157-1")), // = ICD + + UN_1001_InvoiceType("InvoiceType", false, listOf("BT-3")), // original name: Document type, + UN_1153_ReferenceCode("ReferenceCode", true, listOf("BT-18-1", "BT-128-1")), + UN_2005_2475_EventTimeCode("TimeReferenceCode", false, listOf("BT-8")), // code list only in EN Excel file + + UN_4451_TextSubjectCodeQualifier("TextSubjectQualifier", true, listOf("BT-21")), // Text subject qualifier, tab Text + UN_4461_PaymentCodes("PaymentMeans", true, listOf("BT-81")), // Payment means, tab Payment + UN_5189_AllowanceIdentificationCode("AllowanceIdentificationCode", false, listOf("BT-98", "BT-140")), // tab Allowance + UN_5305_DutyOrTaxOrFeeCategory("DutyOrTaxOrFreeCategory", false, listOf("BT-95", "BT-102", "BT-118", "BT-151")), + UN_7143_ItemTypeIdentificationCode("ItemTypeIdentificationCode", true, listOf("BT-158-1")), // Item type identification code, tab Item, full list + UN_7161_SpecialServiceDescriptionCodes("SpecialServiceDescriptionCode", true, listOf("BT-105", "BT-145")), // Charge codes, tab Charge + + Units("Unit", true, listOf("BT-130", "BT-150")), // UN/ECE Recommendation N°20 and UN/ECE Recommendation N°21 — Unit codes + + EAS("ElectronicAddressSchemeIdentifier", true, listOf("BT-34-1", "BT-49-1")), // Electronic address scheme identifier + VATEX("VatExemptionReasonCode", true, listOf("BT-121")), // VAT exemption reason code + + VatIdentifier("VatIdentifier", false, listOf("BT-31", "BT-48", "BT-63")), // code list only in EN Excel file + VatCategoryCode("VatCategoryCode", false, listOf("BT-95", "BT-102", "BT-118", "BT-151")), // code list only in EN Excel file + Mime("Mime", false, listOf("BT-125-1")), +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/Column.kt b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/Column.kt new file mode 100644 index 0000000..854e612 --- /dev/null +++ b/e-invoice-spec-parser/src/main/kotlin/net/codinux/invoicing/parser/model/Column.kt @@ -0,0 +1,10 @@ +package net.codinux.invoicing.parser.model + +data class Column( + val index: Int, + val id: String, + val dataType: String, + val name: String, +) { + override fun toString() = "$dataType $name ($id)" +} \ No newline at end of file diff --git a/e-invoice-spec-parser/src/main/resources/codeLists/cef-genericodes-2024-11-15.zip b/e-invoice-spec-parser/src/main/resources/codeLists/cef-genericodes-2024-11-15.zip new file mode 100644 index 0000000000000000000000000000000000000000..345e0ce22aec6868abb4877bb3a2187828f1ec73 GIT binary patch literal 70260 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%0AjunK1W!c?#b!45-k0 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%0A>?96p-AXHw#_uZ~GX- zX)5mN&BJHbSOG(CCIL(zF_@f6hbkL}B!j@=L#i?g84Bkd_+T(XY#xhPg0%-C2llJ) zM=_earx-!J8Vp$m z?-V3TAMQ_PlZ1)}bbYd0_TGbSkOruKdcwFQ70d<3E;F5`x0Mhf70z!U+xR=f1%i>B zoU9w~6Ik3bkw0wF8Bv4u>P02Nf z9gv)-w-DDgY~tD-W0ly<=xD>FPG_ld#-@IAnHnUTN>z72f}TqtUFjyKHlFCI*IoEg z#vOtbKZD~aU$TxXHule?uwfptD&sY>)(Lfe?tmmd7uqI#Q(@k(nMtYQt2-cZ%UVE3 z>b#+ZEhi1N%M!wis)ql%rm)^xR>9gw8q(B@>bVBQyH zvPdAmwFA;K%w49)ju<3nct;bIUY*oDL_05WsYU@XmF#d>LqNJJK72c+(LKTe?n6G-&6HH<9_5331K zo3XX1Ko%`(kk%)WCuA>*VN!Q@H44qb?SOP)?*imY(CvW4VRM~bn^+*B1X6~*vDuYL z$MhN~NH0~zu`No+S0bWY2qc*LPfH!H-vJ4vW<3Lv4_;Ks$S z*jo%|XoC{FVs9}VqK!@JioHcuEkw^EhFe@cin9ph8q#MGRE*G~XA!lS^D&%7)U4Sf zIExtS5!!OdiSD6o~@qXU{~P1xQDG_86Q6NL73G2%H5-V>|RClAXmn)H>`; z)LEb!Mn#Sz{$>DbTR8HMy1n1e#bDG!bwmU9Bf5G4#6&(iCj@b9NBCy9t_%T|laK%5y=% z-(7yZxVs73ua^{5k+WTp0%Vg%5}-sty+=`4Ky^n^T%ZTnZ*Oaj$g@Y+c0t09%`p@m z6W;}iJg%aXQEu1;Nk4`&8HiGikNakUq#xTijZOkVB9LuNjY?NVcDe8{G^6qNf*YT9 zUto1LnjPR%OC8GG1qop;N^@*Q`rQ{8>d_z~7l(I2+MZ&?(_N6rX9GweYJ342iJ3zZ zh#5iJrArQveU(5erc0OvP9I3ZbUE0f+X^&by97$YSiow5sJ{RciSqnO1pFX<)1}u} z1Q(c9R5wcm8JJ#FcS{5rIE^8A%|H^Oce(^cu+dnD2s*58sPL5osfFI5RwCFKOhoL` z0hK`?!>wb~R|KyehMlywTngptK{}zU^&@&_8>APS*Qi0!4$xn0kcw$*ijv(r3X(8gH6R-nNX>N36cim9 zyn&RC2&8b@&J@rwfx9|FhJX$V+(}wz2I#QBMVLAxK!=4}jUs!sa2rvCuNSzTRPu@u ziZDXg45Wd2H`z@Gh9MejGTn4!jMfjKn+B3WU7O>kV*~RKIvz&3g$@c>WN8JILZt|h z`e{8oTHh<7tRhJMGz>%7QFNo6CLcu%>zD(Y>MSlYZi6340X5jBe2g0uzQ^T-&4?Z%d2|6PNVjum^Abacp&e~PC2Ktl z`)K2P3|0gtJmfDRF!AwNZXs&-OG74QEeMj)TEKe@HUw>kc?9;`+Cw&d?5ato(~0IT z=h)pkg@78VOmVH#ImQ4n1Bp!myIlwxH?c*o(qZi>=#oae7#dQf!%PpwbYU@mq3TAr z2^Y)$8OR@)q{wt0nKbgjG!@ek22!G~bmYj=$|vU#FuOLJs;{MSQazjKs@1o=OMc9Q z3hyK6_^};b4>wZO?og)V0INngH+v zNO^r_gpJ&G@&Ts3E(QpgP7*|gNwKu%fyAyACa==ogeN;+{sE-Mo;!P`r8WwE0O_%> z$ZxisBm2gIwAt^|7v7#4^F`!MULQc3_iM4Sml=Kl3E!^;Cy-qMso&QrBcETEF&jwyUUFva14#FN zHG#=?A0X-bRag?23#ikwIEi$70VksusQ4ZO!#S#B*mQgHVIhe}154s^Az6oHcP>fh zUP@r+14!?_Q4V5LdyvZgebiney#tcHzn9^QU_{c8wM1V8C1|2%9ZI?Oe~?W666X@Z zh2bd6tV;wKhNUck3Ent#D~;ea<8;&rT{e(f{wg}DD+kidUmtdh0OX`g_%XbEAZ`8D#Iv)JoA`N$B6AbI(D?_D!v4KcEjwxl3GUw? z(y{@9#Fa3PW60o^?7Z3}d4C*9sgeF zOea)8+ZPx>nVLR{hUMA2(Plj1inQ)PAT89JTZfQ}3nRb3n7a%w)<*O7=JV$*%8`?? z?&HAPQ8Y4nZW0}t+&VkscH@1(sBn)ntz0zDY@So$>~DcwVv_K$*gj@)N97Jp8Yjij zq~oZJO`I|*xxlm!x>J><4#}3nX!NgI%A~26K2!0P8kb*FAs&GJeM9J}s4(k1mS@hn zfVLrsJb9908b=^cF^5C;6-S^mCuAMWs;uS)wIu+kxIW_Y7V_XQ&($(Gp$%FeFhOxh zV2EQo#oab8juR9PawFI&#!c`8r_Zod(m!p%-8=W;0<%QVgSk=8(T6zqo}*Su3uc=4 zK+Ao^lFWOky*~a`6*d*HombFan9@|eKC7=+6{rK~W3R)TVC2#f0g8sTXy3b&{JR7mov<4hs zB4Q7;mZ(lgtaSFUgTp=0W}+J1P{)cMxbK11_0*UqI(Ak76tY=W2oq?BO@+yGcL7M4 zXL*pQl)B+%?*-;94$3jBYdKp>hqxFqk8-1q;{kF3VIJZJP^B`%DnB7}@<6L*>aEHC;0f3Yv|MIs6?CZU z*P1&)Y$xQb^XU1L2YKJW4l9Oh)HO*N&jDI5Bfo%U542v!=}fVU;huj3Ky^u zhGjJQCjs6LS|$^GpkR079%zwF39CwLaKV6zBeMH&_CO0`S~Y&jowa+Qy)k~Z=|Crf zF$rjSOdFU0C=9b$+N{WK-U2O+S+gxta^LPAXp77@VbV>Bp&m;ZmsVs7a1qdcnWhfw zZfrC&QTcism2&e_pbayN$Gb(2xxg^g*_p%MEL#M7WX zGXY+!VSwI@2-+>Pc9>AgbU?lK1|q%m2U;YvqFyEDO@Lz^3tvg^tOqTVS%F25yg`d( zDp)oVYW4-~keQj-wvyg5F*j&~jK?Ox8bJ$V+6`~~@ea_Em^P@;$jlBsLAznvxO^kM zK;i(j7^X>n3%Cgk$?*26Tp$+>hEyyI1qm1lL@MmCD4*UNGh{nH%)7grX`i_nt76Qx z4`|&zJkGc{aP_?Xt|G;$ML+nCtNBhYq>HYEBO zGH9>GQudP0GcaQ36ZTyH7DltU=gDle&0Wf|*8v$tB8%L)#9*l@!@z#gRF%s;jG+D; zPizZv3Ien+We#YbfRI|AvbTe}Oyp*8kV>{Ig>Rn)V{#7pSf?R3>ZB(lUJi->kjp`r%JJhFWAGDfLXE}H3VgCd}$=OM|{gXrF zU&DGhM z$PPf80hUS?B8@l)ATj+pqAI|h<%SCiDx<&Ed(ig7zYYylH@~Bbsg5>mX2vFsd~Y&0 z`)~kK&R>Ri-j60)UEh+SVG7ZApe4QvK!yet@$IP68FIJj9)R`%%n@bg3l|Qix?aQC zRg+Ao6K$&1Yx7B0Un2+}zl7^dKJnsh*>p}yHo{jnp6ID5{S5cOV&1v1Nl&aZ_yDvT z;jWQow9gMfdlJ^;BbV|IK)VzETQ_t$lyGXmW&@yQ3+pY;PD37mHZQD4#~&s+0BvAc zkB=X~AAoi-w8j?hK;`0tvbv8tp5)xcvj?EX3^k%tm0p=tMt$G_w3lHGGyzWn+Rm^B zoPZkvZDpvzo!zM6P$$%i=K*LVL)e)yvnD5>K9o98d*z8p!~ojFu#Bv&%_R^ufYvkI zkC7cYpw={afQwmIdY{z+XraMC6=eU8d70OTY*VecON94j?KANRU;^X*mFofefKAdL5rt~L)At>MZNeDzd zpmh)530xo=0qB}D2BB?3RnhmczM9%<#c4-7j zOo{V{p=bk@iB#S}8!}25nNFgO^TQIA%WR^HDK|3%+K;gon3(^^5Tg4r4!Lp_2cU%+ z_XDIeebCN~`w>2cda??Oe5y86S!`m%^K^_30yhQijA=6s=dRV z3ksAY@t{Hnl2j8sXuZY?Fm?|)Aqk|S=d=s+(5df{n_$EvNMgUrz5hs=l1Nc-f zsw1_-5ugH~wHfR2u^9nqfkxG+y8=;2#O(mIvtf0uxnwa%KkHH#<0#6-i zbHh4x0xukB(Sa?}Scj6sC@IWPCeH*~c(4{5J<;?Y^DL|dCvodA!P8oJ64wqB8qMML zC9fSutgt01!6%p)wLjm2BdnAGl5k!ECPhn5Fv`F)Gt-HmlKm%pkK@5djP_qJ6%|OY z4*@b)dFP+Ciz5i2w3rV3_Oem*Pko~kYAWjx6S#Oc7y9*vdP?5vbqLZcT>I*>3E|-; z#$Ic|@d@D}NRe?ZJU$^j1Zguib3CFA`G+8_#-%AGE+9mf*?vB9%kNR;v*n1Fc|B-?hFN6m9Azg{#_(-NDGGOc1~uC)Z` z0%Ss089rkRIPME(!MmA|e&8zR=YI(U2uj{Hp~bAxo$vt`;U+u#8LK zYJnsMbEndw%7&4OW1Z+MG}HU4)5yo3BgGZXJp`!*mi)t{Rg-u_wWy;Ihaj!LiOq67 zvo|HOje#|#0m-m1w4)8HJe9G_OiTubd7&HmDB0u=NMNo($4-ENq~TWOF@=qWd9hbP z(rt%%uHv3DP0E?>M&lgJeAoNTcilxY=nX zkY3q+NL$S}T$q@*|2~)@X(4=sxy&FSrXOA&Ay{0~kO&sGEte&=z{A_HBgHXO~Nqgo>#kxwl2YRy~=w zDkGm*AR)Tjm`u-(yaV!{yYLF)Csv)5cw&=Ez-;qxImPrF`A?t+961Y zaDmP{O)+plPE$LW`HLs$MnP(X-$qIAD*~w!w#q$h*76?1TD*N+P<(4oRk2G0AeqJW z;OG?skkI0KbOK>MNNaIDK8c3`!&T<^`m$FKLs-^>qhGx(2)I~Xac|fbMyu~iImMk_ z>EPP$CMr|0)7C9gM`HKm+6ljOwa{fb8K1jFM+_=!6*2-mh?9F}WRPcC5ohqW!{l7JI+J z08Vt~zEZ*Lb<)XX}SPZrB-%bPdL?68QrsCzj2F;jU=PQ&+b zjH5AsgA}_CF>S~+LzgwDB zrQX)%ce$25g(1&uiIe@t_qXAeY+k_V{qyL5^PwsiA>RGuc6g8PDgTY)o=+69=DvVu zCorRxyptSqpW}SS`~()6O3Ncih4mT7Qi8bn(^_7f3kqkeYjTbKGcLyV_Mu_{m(!Q4 zN?c^P=P9iAqo?97Fs}Qs4Ja5awb@i9=4%;bOQo?c@HF2Q={R>fja+89((jKTzT>ng+|7Q~Fh+>eoNM9fIc3b&!_MIND5Jq5T7YkjIrCgKRXM77nk zE7*5(1X?#Lrcr(L0z+mRKusz_!1uoZ(UUva*ghY$9<~8ic}WS2ff&g$FuJ)w9OQ9m zz#qK;F_1@~nSKP?4=bpbegxVG8y@I+3qqut?kHDUj(Z+K>tIurE{Z)OxjxWJSX=ns z3USHpBhYTx`{2>37HCK8efT6?3x=26hfpA03tAm}A3`A!>LbuD**}EI-QjrzS}l7Y zOqsQHN1#QsYfx5_T3m1#HghjH0rP=0&`fM|qf2s@%S<#LfmY4VbbQ74n6E%Ot#dFU zj106hcNr9&hk5svGFe&h;*z2Cve|DOMKVD6S#Ju&9He=j76>*Xe(@kM`#`85oiHygKM#e zkqZm+nl-TK-Vn6rwE-mI0Wq&v14-gGVcx7T$t%@b3|ic}z{GBq0PSa80AjyQZ!y8} z5+IS2hv5**xag-3LnIcU!bFCIwJ=O#1sL627$UJiCEODS+6KEGAKiEuhOq!Az?wkY zUso|noJG)**E`VI#}KsEb%9HO>4Fxyu3{27hG^O$G!6>d(CVtbuPC3G+03M4ZaV{L zJ*x+m*iYTw0olw|mXcg8dj#6Px&o1X7-4*)1*$zoE@V8=64o_1 z*~Mkh2G(U{bWkwnV+F^ z|Db}ytk0-=8zVj=0PU-(-cN6*(nyg?Vmqle;Jtf63Q z?VMwjwaNQhk1%@YHHl;AfRBL!PmKT)-6b4@l+N#{XY$R3)XjVx3Djed%=s!tZkps6 zq;S51iXE9Bg9Of3V3Bj)#~`ut6;%Az#bc02`3f+8Gu$yqpWJKrO?2kI^3yBFAUX1} z87nbJnA%uJt72p`?lXl~=$`7as+uo-q}ck(*~m?FG_yCg7s(^b-7|O$67X)Jzq6Y! zYW++4JNE*#du3TVzuxQNONO<8xxgC%(k*YTVPD|m0t1PLPNw0o3IIZBZiS+CI~1t* z%5c$PxQc)Oyvam_?2b{YZ#Up{~8$Hb>L<@N;} zgA}|~>0+mf-zx$sP#*!b}GA#uKkx>Kp29x zl82PB6|k`OI1VE$A)=#=+$rbB#Qj%4iX(+_EG`U;`^a?3HwwR3mWu{Mpz3r-)3vA4 zaiaeregZMPYGFF5aui60JT_TeB)%t>eaAq0YIT?reB(gndKi^9JO8QwQ4At}{kxltf8 z)llLpE62qIauW@vObv}nx#ew;7=+f{um6((REemMw zk9^DvS{U$1&~0IqsQtiu7<6oAr&a9CwdPZdts@vf{^0EvMr_i9;k%A4jKXO+dgSjDPlMmg?#+u6ZHhvm)Bl`jUk^8for5wF>L73tp#bFC6h?w{>o_6am72i8NRlO@n* zkq`-!w{ae0Ho%1L3A$EE_Z(*z{-_FOM~X68G|X{?Os_&6Vq&HxR2N!PS4bU$*2jg* z#V)rWVV3(XG*zi+j?p9{5s*wh{)FwF7r_KPc6>A^7>6*=k3R_!(~UOc3HO~nIe_3g zE(46{z!vqS>xs>#DlvZYraF_ybOU|_QCj+Y3);-)LqdVJoKKj0)m@x2I?elpDaEYL zqtGibpD^^bZ7M!{{e;=0w`webir^;!kxsofbgdg8-D)zj%fFmJ2qt9k}1$e6_N3o@T^p@f_|`US2N%J*;t-W_fD z9`b+v=heke6Ka*|1k`A))2NL6EV%%E0$Lzi^^G?(k$g9C0$Lzi0c&)DB!FSs;(H^V z4R!96&bYdDC#Z#?i;hq`DoI2Z7ujvJ@jUw1|JNmZ4AAP(C4i-8EYIV{D*N@ z7QkM<|LH}EZI_G<(=s3YNBdO1l)#2*pTC3c&2s^4m}dGpHrX?YX`^4kCSf(urqL@i zYcD}! b%R*25$Zd%aTU9u;jZJ{NySVtRW3}dokF|#KBQPzSWiel4i|A>bMpXHaF z3lBq37BlCPrTr7s^3Y~9wuZ-6aX10(4PE0`_!kbtO#-K^mr9Rpk-15=TbhdvBs>|C zr9&OJ#^5BjiJpMgq%PzFWaiONFmJ#tGkycHHQceC6VT4r%1TXsM8Hb8?XIoG-uzb# zwcEAj?CD+}wA8h&@E{?tbOPGyI=5A85w8^Q2d#DWOkYat^#rukwe}i!jV9nj2>MbL z`4Gs91Gm1efaA-|pMX}rt^qgX_TZd=R->*##%|X;0j)+|C@wDw00Q?7v={aMM~+TU zK>JV^iGvW#2zV3FhSU{cbWeieB$yQLydCn}&Vqw7C{@Rf}x zdTL4s`WVn-h|HfuFTe&sn@ay17eIi`zQ$0ZKX(Wu@MFl+pF0HM1()~`Fa)da>-?tO zTd|yk3jnRB|32Un7ROMw?>zQ0O4ui$RkRQHc|y2BduqSa=tDiuw2pSwB-80cbJbl= zK$~qJZhK+)OwRX5N8nVYS0?3pe9*$&@3y}Pc4@9xCCVf}0o+!(=FPwN)Q9}_l}@e= zRj%s)2(FiEwcb~y{sh7S&^q7>iBu0GXcur}w7N&EI-Fgd ziEDxfE?q`F%%&--!jtsyu}%^$q#caZcr`0cMS|I0JJorv#@u%l zwEi$PTt^Mss<*f;clYXX?+(UHi6zH!$CyCj&Y~iI{`Pnua{^W2d=epSM&$zPfv?m| z#aG-*)WhsHYeUM&egT9?JN5$TlQWD9Khd*^PV9WEb&(Cs(70RrYSa_Z3snil@crE- zCNe57P>3WX_9uVDgh(@$YAPH0xV-}bV!ztdSAolKcpen#-wSiC63rE%`?&o9g6`vX zKl)I{u2ld1aT~ML$AdYngK;t-%z7*j=y;xM;3C??AhHu`ngp~+vl3kv6tw+#f?4ge zMopRus|PxDd0gJ25Xa_KYY#nl{}IDk?X}MQP%vE!;^S`^-Y`lEGmPqUc;4q8zuz$7 z>@uc9DyAN42~!r6DNqlzfGM^`87U29#A? zfA}Uk&B%ui!;8w_rBlf@3O&>YrwJPeZe3HX(jm88-a{>DDv{_!Ns8U}K)ac|p%OJ^ z_o?OIVAw+LOfujC!7zk1w}pPY-qW zmHQ5X77{J@KMK6BpfyB)UT~U=o+)DX2TIdi;9zmH2Z;<*5rcLcB`O^!nj38QHJVR~-%61T(6*v7 z`pB#(F3<{UmCC{bDPznb39v!X;-KZ5C4mb=nwD>t04~tZpQW260SmTb`c|fC2DF%G z`Cjo+fizE-ZWSLDhFvV(DLyC+waAV3LoHG-FlhHpxK`58FytcKEoo>NlHo6yG%^g$ z$n;bS5opa#+fH;}2-&)@^Y5RFxj!N-N68f{Dh>>ae9=Fa_+fQBL* zD>qC68isJJ-Z2Se7{1YxXO`-F1uc77D)YB$K_YcL(C(MuO=_Srm4D#Q7g<~w7BbPX z69$H1A-PlOP-VkNxv9-(lewU{06+{KaXOx)K_XBdA%>bbn`KgnK#eK634rKN8fcr! zQu+1HZaM+8fjG&83eZ8J9Ue|o_k$wbQ7{z^o=EQ9f z5U#)61=%CB<#|gCJ3{$@gfmu2!c}kYVdNrb#*vBp5k||iUMJa0l(SSkAAw^U^T^73 z>_n$y$2HX_kY5{XnV1o?#%iVvx9Zx5hxL+LC})`0beP>nGm|>H&~NVy<+%eGvcm5f zXibv&-OCmW83-fXKC_vZH()~f1d=UY2;0#WWj}#Li*@Gb^|?qeDLxxJO-)050x1>; zAVS%qPaxsqe4^5n?F2CSyot&jS>NIlNTxVduE^$UEMfQH$nUq~yK787uRe5QR|%8Q ztIwYpD$v~e{YOy>DMUR^322%U~m)d0$_06Rz4Du+Bx|NB#V4!h({_8 z0m&ox=hG9b9p2;>GM_*K$oJx7537Cx2_2vKbWLKuYIzfagpI#}kZwef;PFAjJJJel zz6_R&5yM0l81prEl8O-10u&lco<<`T=VofSntq?QFhykl`nl3%8ztLU(XCb)m+N*^&(@=f7YR+0$cC)rXrkJN*d4VJ#O& z58TB~H%t$8z^=>R>AMr85>2O|{^wO>{KC%Z848$A3qJ;yM(nVt50V^N?8*|dRUgzY zxSH)0Kn99rCn_0*05;lq6HRUECOMVs^}Co!ojkT&TGa1iNO&G+#fD~VTLNT7|l#6742Lr|E5(;&2x_^v$RM%B%xVSL+AJ2KBjoc|$ zGS$F4WA!eZ1`x^ghv;Pi*F*>N|(e$XWaT*#*kY zsT(Q~5RNNtsB>TaOAL;QnbCRmub?ONHY>RR)eoFux@VkD%4l>tExd$m80$(*>U9;O zTxZuN=3>Nz4o#(KW;7Yl7N$t#n~|&4v7t2N*Vxw(Ti>O6@iS0f&ROS`jbk&cRlumA zFm$gmmXL_a**=Dk*J^Dgk9guSCB@L!E@PWIRr(aNu{CE&OTv!4A(UlNi@u#onmqsrB_H2&-6ET z&QH0np^vFM`O`r8Re9OszOH$b0m39`;ME5&L|EaqMgf`_G_8OP$4~^Ye=Q z#guxTE-*guM!Rs%s8BE$DCi?e-J1)HXZPj_&An7CT?`$MZN|lc3Cg`q99O{aVh44+ z$a&a{9h6NpHJ@;SX;{1Qw2iO%f3b(jB?OPmo_M*yq)~5dcI7j~p`)0Jr;qW*^F|0N zmNN{y^aqWJ;}R2Ge<)I?v;QNH;)&vR3jDea>L9A>Vz=aT_UksL8M4YF($Sn^JOCTV zZy<^FiAu*}^~v8*a=oebOSY&`Kru5p@$}non1XTPijtY#MngR+4;l65TyA1Q=IyMQ zK8bRtHMLxNxrqs9DmdjYrzSN8HU7Wc#Q5k6(k!{Xv6g(~b|HYeb0_^I8YTLR8E}2v z7%NLlcK}ThoPDBvB#JKJQonR5^635^eu)8c2%yQM6u!?(6<;SSb-4;dEa4- z(^E;JoeUz7g)-%YOa!9pMLJAm5N%-&-M%l$PW8}~mI@L4qRdqCT{HIEqy-qq7Un>n zHr`w!nYo2Ilxaqi>uZ7|}7YVAiHW+Xlb1yrnnwoQoj(z?idKL}BR~cE9;j)7& zt+A^#9ZWP-WmC9FK-ED%)8eIe(~-c!GhZCC(^;nTobA3)CE1*PVKDN7m2v#@B4r@V+K-B;tvsCNDZEWg zI`r+5WMYkps~dhG#0@axVsqOypybSk8Sw3p3*{Y*RMS0oY)~WvTX5689ZZI&LzZ8; z?3{yW5qZ$JgUM3e^$a414KqAa^-J0;s&>edF<~^%OH5oCzv5COUhuX&Z$7v1Y~bU* zXD%ypvY9YLn&pF(KL&VRRC`()nyj5l$G)h{#RTnv8fbF;p^HhZb|*!~4X8kBP2sHF z7&nO~%HO3Z=vdBd!F_qVgs1}jYh@9x^V)Ch7m2<0fT}(E$YYo`}V=|~+cCoRGNuaib8B*&a>n1w8F}W_^ zd>xySDPvTXM=n!o?iF_ za;PEx;R3;AQT@0P7Y8O+>Q5I}fAg}7$(D8t>UP-6E~ur?Ub9IkCNb(G9KU~<+~wQF zq(no4K&qhC#pFl30S^1LVRE6ReXbQZ?YRv~dsZpJX^}Wneltqct*5CHb9dX&BCQY_ih9;2QMA$B+v!nP zHeGH5r9>VCy2AV<+9@(SAlK8jF)6Z2C(mSLzPOD^l5Oj$`KO(Tw&{X|sOMFtBDoUt zI-opS8=1(H2+FIqaY;Ocm^9nA$!9vv$rN)NlU-Uk3?XNMNy&Jx&c%Vr$ed;B_DN*Z znr@X|J&JuSE#xOK>6-gNN;nNnBIg^1w8?GmZZl1ufZoQWdhQ1*^k!ocK^07QV=I{X z-J9tPEz}*gm)n>u(Knz<+)qr}=o=tq&g~9LMtdytcI=>foPt7{Z*rOit&eEHE@FTd zqOC_Ja_4qHjZgO=6uNMzl+t>TB6kqfE_DyYsdnU=!Vap9%EK{v=%|>ojfRP0chYN} z*csPV?qYK9yI~Cpd5n7(nr0tmh2i$)?1CQXIiB)2aUJ?D=3Nel&8d{z!ncd@Y`ezq z#N;BuBvE%0c30&trjc#eT9?@Pikx5E#pD-vO){OaRcUrHNyT07!?-{&3Agfy4f%T( zFLzNrIhpgT$dntfUl`D&qL0z%tJP$7VqShg$!}Ftvtx2w%LmN!`N3rDR-+H7UjC+c zoWH&N@&m?Uw-uJdt^+P8WF?{Y3cg2UVl(sAf9Y47<|W)KJq+$JGES4VZa;vAp1nsL z7ir2(sDHq;^;KTuQA|1Sq4XlXV${;`sZ7Re5A=+!!zYlK-9r@#*1(g=%I;yZvU_%% zPqZRq!DRCGR5~V;kUh+My{D$^-46SxMK^xQQh95JCNKTot%!Hn$2h;c*koM8KF0ao zg(vZF?PIdBcfs+CZJl{E)ZhQd-*%$xA-hDf%`{}oQV5x{CuE(mX3J73(%7c4O|p$W ziqImZL=4R^gAYbgwitzxk3@DenD6+V^ZQgzuYca}bKd9qy7#`$z30Bq`+e^7p+Unm z1+u7?42i4B3{W!;^&RzOIUOWc#gr&)kkOW(5d&qb3y>4}DTwizBiN^1t{L_yhe)MC zAUAbuQIsTQ8fMB&*cR#FVO7?~gY*U@nf<2)L&e96GQT~M4#M78{n1WRFE)&QS415m z_7S!t0vm)0F;H#E+b5I#sDN-#dWi{LrGn)j)A%or9JX+Dd``Cql{U{atpyaC(396@5l!z&xsblU6@2Re&%%`m{fm7?fj=3p~Sd?dVq zV~%qYpWeYb&uLeyD`%K$hUv^X3<(=dF2L#GtSL*kPVU1+r#ckefAl&X!DOV`)cW+c z6zr8e6c@y!$DS6TlCQ|xD}lXs8W8d+d|mVPF;zjo*|R1?> z{%(;~5K;JT$z`fK$<0Yepfi>3UxT5FTomQZlPh3%@6I=>)`agqgpNVq5 zsxR`88#{RHQH!?m+LE*u*a0ixwDYN}_z9)_sHI+o0>B+wErBgojz-%x>8S>)~smn#dT5_oJ7eVMYY@)PnC^?>Az9T$OQ+b&x#x9+QWjmiyr>8 zPHRxTUO-~|S$ZQ}Iof4=$qyT~9(CazLaST#uVB*?iflAef4b;Zv_{ck4|jTmcL@>2n6ymOfSLGW11xiORaqv4^_m*AM*#aA6tS>@EZyPgAnYPgQL zvk@1JC*yG6Z6C+nwAfI;?A&ddIBQsG)0}ZSQHiW_1pDSTD6$Y;Ysc~;Zpf_f*(*~K zwCa#$xS`iEokt_WPKO8>`Cf?%hbeP!nB@Mrdsn89ge_-Zs-fTU7aXn*u=NJ%T=q_f zcrPuvdEsxcc~>W zXW+xN$eswQ{UdB7KGwb5nCnEpakl1*i{W}1HyISkfdkvn8j&i?u2{-+V#=ea6~kx= zkxaJP8$3Z7`|zBj>w)}MjM_US6u$>=CQtY>wyMFKn8FD3$rEHe zmwxyakFdU->{y|GiaxaW!u^M1c(@mf*)53*+(TEq3-u^)3nw3UOcwXqzsO#B0;2zF zuyn^bS8pewlTY75ufZByC*180z#!Ygx;gz(@pZ#q0DDVdIMB~F`wEO~g&FS-Y30$EZV+qm%W=|6Zj$2H zVSfkDW~NZS{i_a{R<38vtsgz!@P>0dBA=9!Qc9eU^Y94kYbrVVE(sZTosTznD!i!0 zH8-{~7jqtb>3dc)$C{Aw>+_lo?vp}xcXeLD*_!O2Sh_v$@bsV^^wx`&Hng1HFcGdu z3*_h{K9r%M4uxJZ^1ir?B5!oLf(MA!c{|-3Dfq-VfAHMpRgL23)8kZ(igVPmB3xvQ zxT3OJ)A6tcEemtarag`=7o6|VWsBiaom2G5v1052h>8?_KJ1S$X}ksva=Ft89X9-Q9-sx^?h857rd(ENbMl zx@efI6$Z2sj~jVZ)ThBI%Xo`@tX6ABKQQ~sc)Ga{f0b&4K)oiOOiuPh@U^lRB+P+3q$%&T60oPsBlEM@Ko_FwN-x!IZcY1WNLH#G zT@J+V4AMuZ&*sDsOhQZc50hdDZ6PHN7g5B-IMhgWd@hE}9oDxdHaTc8heCBenSn5T z@1TPDWtQA*sNTG;LZo9OicUq-^;VrNbm=wpjo6NHCcAw*PrjC644xje3S&a}2x$VRSp6zQpP5YJ($)?H=cFn4`1lc0+-1+cI zK4M-zSK#_iDwl0exAyVbYL@)rg3{iN6HTq5o!bMmfz`+}I<99x7RnjDiO8yQSImc6 zAC@_Z&6uWE6BrqkYogc2Rxz@6E^B(BlCa%i4xZd5n{=&LiD1kZ&{p%Al@#Vv&D2=w zxAd1hoDUx7eZ>)1R1Lpt8{R_$kn}a;OcSEU)B_erK}tj;v{#q~9Sv6sEoBHA7Y(N_ zTHbG;62qd_2yV3b=H&(-_q5tX(So!?o&1?O^fO-zVY-}B zUN^+h>HcchMctI#)5R<{q{Jxij;ikO6W>J zagGQ`KS^^-Y4P3Gr4`YuKPA5@n>y{}5$~og0B*=8W<@Ey=?-f|<9o3DwBB8Gw@g2? z0tZ(}jN&4~A@BA_a3p0xcj4o;&8tMA!WQJ<#z6vw{QewT=~PX-p&FQiPU!Xex0lT2 za;Mv?n#4;`v+xE_&lobf-tLIYnvzO(O(u9H_wgpFnt6eb3?WDL>LSQP-;d=VHMGQ; zqLn%fM4N@u+6Uk*ys!CC?LywtJk28vUdCE?r$h|jvLiHV?Ms~x>Yoo^=x0irGtM{D z*;RUyYR{`3LU^6=D|91Q-$**DO==+!#o4^@ zEdO~c9B4xyMKbdEJo5!vrg;FrZO>Y98yj`J&43f(bRQ{=4tN$9?a4|=z(#497_cH{ zORx6|EksKR1lxIFDp#3O1-9Gka7=lO6m8#jjAbaYY=l&7l)$dO^8pPVf5%Y>V??Fc z@NM$367J^nB2w%<*!?qDCr=BD>f}rNs#znxl-)2NYDD$QY1vfWP9}yh8=slaJFa#S zF=^t@TM11;$WbNn3#otUoax(mgl{1_5*+$2>|vn%!~gFBr8I*s%AXq=wsd^D%4JIzU%C~w-&nJ@|V9e#u8w&w}xWT46|s@s37m)zv&9Mytj_C06-Pr z-eKv-1Arz3r1_V|ZfU=mR%D2d3IPDmuR<{H9wq_6sldRHYo5WdT@vu#ZvGAv{ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + DEBUG + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index df152ca..3836088 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,6 +26,8 @@ angusMailVersion=2.0.3 openHtmlToPdfVersion=1.1.22 jsoupVersion=1.18.1 +phGenericodeVersion=7.1.3 + klfVersion=1.6.2 lokiLogAppenderVersion=0.5.5 # only used for tests diff --git a/settings.gradle.kts b/settings.gradle.kts index 63e3326..091f680 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -30,4 +30,6 @@ include("e-invoice-domain") include("invoice-creator") +include("e-invoice-spec-parser") + include("e-invoice-api")