diff --git a/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM.sch b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM.sch new file mode 100644 index 0000000..6965691 --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM.sch @@ -0,0 +1,312 @@ + + + Schema for Factur-X; 1.07.2; Accounting, MINIMUM + + + + + + + + [BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present. + + + + + + [BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’. + + + + + + [BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109). + + [BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112). + + [BR-15]-An Invoice shall have the Amount due for payment (BT-115). + + [BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2. + + [BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2. + + [BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2. + + [BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2. + + + + + + [BR-01]-An Invoice shall have a Specification identifier (BT-24). + + [BR-02]-An Invoice shall have an Invoice number (BT-1). + + [BR-03]-An Invoice shall have an Invoice issue date (BT-2). + + [BR-04]-An Invoice shall have an Invoice type code (BT-3). + + [BR-05]-An Invoice shall have an Invoice currency code (BT-5). + + [BR-06]-An Invoice shall contain the Seller name (BT-27). + + [BR-07]-An Invoice shall contain the Buyer name (BT-44). + + [BR-08]-An Invoice shall contain the Seller postal address (BG-5). + + [BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40). + + + + + + Element 'ram:ID' must occur exactly 1 times. + + Element 'ram:TypeCode' must occur exactly 1 times. + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + Attribute '@format' is required in this context. + + + + + + + Value of '@format' is not allowed. + + + + + + + Value of 'ram:TypeCode' is not allowed. + + + + + + Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times. + + Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times. + + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + Value of 'ram:ID' is not allowed. + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + Element 'ram:SellerTradeParty' must occur exactly 1 times. + + Element 'ram:BuyerTradeParty' must occur exactly 1 times. + + + + + + Element 'ram:IssuerAssignedID' must occur exactly 1 times. + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + Element 'ram:Name' must occur exactly 1 times. + + + + + + Element 'ram:PostalTradeAddress' is marked as not used in the given context. + + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + Value of '@schemeID' is not allowed. + + + + + + Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context. + + + + + + Element 'ram:Name' must occur exactly 1 times. + + Element 'ram:PostalTradeAddress' must occur exactly 1 times. + + Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times. + + Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="FC"]' may occur at maximum 1 times. + + + + + + Element 'ram:CountryID' must occur exactly 1 times. + + + + + + + Value of 'ram:CountryID' is not allowed. + + + + + + + Value of '@schemeID' is not allowed. + + + + + + Element variant 'ram:SpecifiedTaxRegistration[ not(ram:ID/@schemeID="VA") and not(ram:ID/@schemeID="FC")]' is marked as not used in the given context. + + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + Attribute '@schemeID' is required in this context. + + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + Attribute '@schemeID' is required in this context. + + + + + + Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times. + + Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times. + + + + + + + Value of 'ram:InvoiceCurrencyCode' is not allowed. + + + + + + Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times. + + Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times. + + Element 'ram:GrandTotalAmount' must occur exactly 1 times. + + Element 'ram:DuePayableAmount' must occur exactly 1 times. + + + + + + Attribute @currencyID' marked as not used in the given context. + + + + + + Attribute @currencyID' marked as not used in the given context. + + + + + + Attribute @currencyID' marked as not used in the given context. + + + + + + Element variant 'ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and not(@currencyID=../../ram:TaxCurrencyCode)]' is marked as not used in the given context. + + + + + + + Value of '@currencyID' is not allowed. + + + + + + Attribute '@currencyID' is required in this context. + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM.xsd b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM.xsd new file mode 100644 index 0000000..1771432 --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_codedb.xml b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_codedb.xml new file mode 100644 index 0000000..094916e --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_codedb.xml @@ -0,0 +1,919 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd new file mode 100644 index 0000000..972b0c4 --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd new file mode 100644 index 0000000..6062ca9 --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd new file mode 100644 index 0000000..a466659 --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/Factur-X_1.07.2_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/_XSLT_MINIMUM/FACTUR-X_MINIMUM.xslt b/xsd/Factur-X_1.07.2_MINIMUM/_XSLT_MINIMUM/FACTUR-X_MINIMUM.xslt new file mode 100644 index 0000000..fed7601 --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/_XSLT_MINIMUM/FACTUR-X_MINIMUM.xslt @@ -0,0 +1,1931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + *: + + [namespace-uri()=' + + '] + + + + [ + + ] + + + + / + + @ + + + @*[local-name()=' + + ' and namespace-uri()=' + + '] + + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + + + + + + + + + + + + + + + + + . + + + + +U + + U + + + + U. + + n + + + + U. + + _ + + _ + + + + + + + + +   +   +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schema for Factur-X; 1.07.2; Accounting, MINIMUM + + + + + + + + + + + + + + FX-SCH-A-000001 + + + + + [BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000002 + + + + + [BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000003 + + + + + [BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109). + + + + + + + + + + FX-SCH-A-000004 + + + + + [BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112). + + + + + + + + + + FX-SCH-A-000005 + + + + + [BR-15]-An Invoice shall have the Amount due for payment (BT-115). + + + + + + + + + + FX-SCH-A-000006 + + + + + [BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2. + + + + + + + + + + FX-SCH-A-000007 + + + + + [BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2. + + + + + + + + + + FX-SCH-A-000008 + + + + + [BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2. + + + + + + + + + + FX-SCH-A-000009 + + + + + [BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000010 + + + + + [BR-01]-An Invoice shall have a Specification identifier (BT-24). + + + + + + + + + + FX-SCH-A-000011 + + + + + [BR-02]-An Invoice shall have an Invoice number (BT-1). + + + + + + + + + + FX-SCH-A-000012 + + + + + [BR-03]-An Invoice shall have an Invoice issue date (BT-2). + + + + + + + + + + FX-SCH-A-000013 + + + + + [BR-04]-An Invoice shall have an Invoice type code (BT-3). + + + + + + + + + + FX-SCH-A-000014 + + + + + [BR-05]-An Invoice shall have an Invoice currency code (BT-5). + + + + + + + + + + FX-SCH-A-000015 + + + + + [BR-06]-An Invoice shall contain the Seller name (BT-27). + + + + + + + + + + FX-SCH-A-000016 + + + + + [BR-07]-An Invoice shall contain the Buyer name (BT-44). + + + + + + + + + + FX-SCH-A-000017 + + + + + [BR-08]-An Invoice shall contain the Seller postal address (BG-5). + + + + + + + + + + FX-SCH-A-000018 + + + + + [BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40). + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000019 + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000020 + + + + + Element 'ram:TypeCode' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000021 + + + + + Attribute '@format' is required in this context. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000022 + + + + + Value of '@format' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000023 + + + + + Value of 'ram:TypeCode' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000024 + + + + + Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times. + + + + + + + + + + FX-SCH-A-000025 + + + + + Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000019 + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000019 + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000026 + + + + + Value of 'ram:ID' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000027 + + + + + Element 'ram:SellerTradeParty' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000028 + + + + + Element 'ram:BuyerTradeParty' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000029 + + + + + Element 'ram:IssuerAssignedID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + + Attribute @schemeID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000030 + + + + + Element 'ram:Name' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + + Element 'ram:PostalTradeAddress' is marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000019 + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000031 + + + + + Value of '@schemeID' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + + + Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000030 + + + + + Element 'ram:Name' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000032 + + + + + Element 'ram:PostalTradeAddress' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000033 + + + + + Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times. + + + + + + + + + + FX-SCH-A-000034 + + + + + Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="FC"]' may occur at maximum 1 times. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000035 + + + + + Element 'ram:CountryID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000036 + + + + + Value of 'ram:CountryID' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000031 + + + + + Value of '@schemeID' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + + + Element variant 'ram:SpecifiedTaxRegistration[ not(ram:ID/@schemeID="VA") and not(ram:ID/@schemeID="FC")]' is marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000019 + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000037 + + + + + Attribute '@schemeID' is required in this context. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000019 + + + + + Element 'ram:ID' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000037 + + + + + Attribute '@schemeID' is required in this context. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000038 + + + + + Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000039 + + + + + Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000040 + + + + + Value of 'ram:InvoiceCurrencyCode' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000041 + + + + + Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000042 + + + + + Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times. + + + + + + + + + + FX-SCH-A-000043 + + + + + Element 'ram:GrandTotalAmount' must occur exactly 1 times. + + + + + + + + + + FX-SCH-A-000044 + + + + + Element 'ram:DuePayableAmount' must occur exactly 1 times. + + + + + + + + + + + + + + + + + + + + + + + + + Attribute @currencyID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + + + Attribute @currencyID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + + + Attribute @currencyID' marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + + + Element variant 'ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and not(@currencyID=../../ram:TaxCurrencyCode)]' is marked as not used in the given context. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000045 + + + + + Value of '@currencyID' is not allowed. + + + + + + + + + + + + + + + + + + + + + + + FX-SCH-A-000046 + + + + + Attribute '@currencyID' is required in this context. + + + + + + + + + + diff --git a/xsd/Factur-X_1.07.2_MINIMUM/_XSLT_MINIMUM/FACTUR-X_MINIMUM_codedb.xml b/xsd/Factur-X_1.07.2_MINIMUM/_XSLT_MINIMUM/FACTUR-X_MINIMUM_codedb.xml new file mode 100644 index 0000000..c07e49f --- /dev/null +++ b/xsd/Factur-X_1.07.2_MINIMUM/_XSLT_MINIMUM/FACTUR-X_MINIMUM_codedb.xml @@ -0,0 +1,919 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +