digitaltunnel / zatca
v1.0.0
2024-12-06 22:06 UTC
Requires
- php: ^8.3
- laravel/framework: ^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.6
- pestphp/pest: ^3.6
- phpstan/phpstan: ^2.0
README
Simple and easy to use a compliance solution for ZATCA integration with your ERP application.
Features
- OnBoarding.
- Sign Invoice.
- Report And Clear Invoices.
- Invoice Status.
- Invoice Compliance.
Installation
composer require digitaltunnel/zatca
Publish repository configurations
php artisan vendor:publish --provider="DigitalTunnel\Zatca\ZatcaServiceProvider"
This will publish zatcaconnect.php configurations to config/zatcaconnect.php
Prepare Environment
Add the following configuration to .env file.
ZATCA_CONNECT_API_KEY="user token here" #Get API key from ZATCA Connect dashboard
Usage
- Device OnBoarding
use DigitalTunnel\Zatca\Data\CSRDetails; use DigitalTunnel\Zatca\Facades\ZatcaConnect; ZatcaConnect::setEnviroment("developer") // developer, simulation, production ->setOtp(123456) ->setCSRDetails( new CSRDetails( deviceName: "POS-001", organizationIdentifier: "399999999900003", organizationUnitName: "Yasmin Branch", organizationName: "Digital Tunnel, LLC", countryName: "SA", address: "RUH2+XV Riyadh", businessCategory: "Technology", ) ) ->onBoarding();
- Example Response
{ "message": "Successfully onboarded device", "data": { "name": "POS-001-308227458-399999999900003", "serial_number": "1-POS-001|2-MacOS|3-52C3725B-B00E-5776-BDC8-96FA4A2749F6", "environment": "developer", "ccsid_request_id": 1234567890123, "ccsid_binary_security_token": "TUlJQ096Q0NBZUtnQXdJQkFnSUdBWk9ieE5PcU1Bb0dDQ3FHU000OUJBTUNNQlV4RXpBUkJnTlZCQU1NQ21WSmJuWnZhV05wYm1jd0hoY05NalF4TWpBMk1URXpPVFF6V2hjTk1qa3hNakExTWpFd01EQXdXakJ2TVFzd0NRWURWUVFHRXdKVFFURVdNQlFHQTFVRUN4TU5XV0Z6YldsdUlFSnlZVzVqYURFY01Cb0dBMVVFQ2hNVFJHbG5hWFJoYkNCVWRXNXVaV3dzSUV4TVF6RXFNQ2dHQTFVRUF4TWhVRTlUTFRBd01TMHpNRGd5TWpjME5UZ3RNems1T1RrNU9UazVPVEF3TURBek1GWXdFQVlIS29aSXpqMENBUVlGSzRFRUFBb0RRZ0FFR0dHeHRLU2M5a0plU25rZ0pMSVdQSWk0dnFsRUZKclRGTFJxT2ZiaXFKbEtFTTAxZDNmUVBjdzV3aDhIYzB0bXpwVlhLbmVwdm9JNXF1bUVJeGViMzZPQnhqQ0J3ekFNQmdOVkhSTUJBZjhFQWpBQU1JR3lCZ05WSFJFRWdhb3dnYWVrZ2FRd2dhRXhRVEEvQmdOVkJBUVVPREV0VUU5VExUQXdNWHd5TFUxaFkwOVRmRE10TlRKRE16Y3lOVUl0UWpBd1JTMDFOemMyTFVKRVF6Z3RPVFpHUVRSQk1qYzBPVVkyTVI4d0hRWUtDWkltaVpQeUxHUUJBUk1QTXprNU9UazVPVGs1T1RBd01EQXpNUTB3Q3dZRFZRUU1Fd1F4TVRBd01SY3dGUVlEVlFRYUV3NVNWVWd5SzFoV0lGSnBlV0ZrYURFVE1CRUdBMVVFRHhNS1ZHVmphRzV2Ykc5bmVUQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQlRZL0YzZ3VtWUJISTRsMnpZdnNGMWVTclRQTjE4Skl6YlJKRUszM28yZmdJZ0tXWDA5USt0d0k3aDdRUFlpalFvK2ZnZW5iZ09LTzJsUEhNRXdyUXNsbDg9", "ccsid_secret": "YcaUYQdRIu/djIXIiLhhCBYpMX5cYN5i7kCTSl0avJI=", "pcsid_request_id": 30368, "pcsid_binary_security_token": "TUlJRDNqQ0NBNFNnQXdJQkFnSVRFUUFBT0FQRjkwQWpzL3hjWHdBQkFBQTRBekFLQmdncWhrak9QUVFEQWpCaU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4RXpBUkJnb0praWFKay9Jc1pBRVpGZ05uYjNZeEZ6QVZCZ29Ka2lhSmsvSXNaQUVaRmdkbGVIUm5ZWHAwTVJzd0dRWURWUVFERXhKUVVscEZTVTVXVDBsRFJWTkRRVFF0UTBFd0hoY05NalF3TVRFeE1Ea3hPVE13V2hjTk1qa3dNVEE1TURreE9UTXdXakIxTVFzd0NRWURWUVFHRXdKVFFURW1NQ1FHQTFVRUNoTWRUV0Y0YVcxMWJTQlRjR1ZsWkNCVVpXTm9JRk4xY0hCc2VTQk1WRVF4RmpBVUJnTlZCQXNURFZKcGVXRmthQ0JDY21GdVkyZ3hKakFrQmdOVkJBTVRIVlJUVkMwNE9EWTBNekV4TkRVdE16azVPVGs1T1RrNU9UQXdNREF6TUZZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUFvRFFnQUVvV0NLYTBTYTlGSUVyVE92MHVBa0MxVklLWHhVOW5QcHgydmxmNHloTWVqeThjMDJYSmJsRHE3dFB5ZG84bXEwYWhPTW1Obzhnd25pN1h0MUtUOVVlS09DQWdjd2dnSURNSUd0QmdOVkhSRUVnYVV3Z2FLa2daOHdnWnd4T3pBNUJnTlZCQVFNTWpFdFZGTlVmREl0VkZOVWZETXRaV1F5TW1ZeFpEZ3RaVFpoTWkweE1URTRMVGxpTlRndFpEbGhPR1l4TVdVME5EVm1NUjh3SFFZS0NaSW1pWlB5TEdRQkFRd1BNems1T1RrNU9UazVPVEF3TURBek1RMHdDd1lEVlFRTURBUXhNVEF3TVJFd0R3WURWUVFhREFoU1VsSkVNamt5T1RFYU1CZ0dBMVVFRHd3UlUzVndjR3g1SUdGamRHbDJhWFJwWlhNd0hRWURWUjBPQkJZRUZFWCtZdm1tdG5Zb0RmOUJHYktvN29jVEtZSzFNQjhHQTFVZEl3UVlNQmFBRkp2S3FxTHRtcXdza0lGelZ2cFAyUHhUKzlObk1Ic0dDQ3NHQVFVRkJ3RUJCRzh3YlRCckJnZ3JCZ0VGQlFjd0FvWmZhSFIwY0RvdkwyRnBZVFF1ZW1GMFkyRXVaMjkyTG5OaEwwTmxjblJGYm5KdmJHd3ZVRkphUlVsdWRtOXBZMlZUUTBFMExtVjRkR2RoZW5RdVoyOTJMbXh2WTJGc1gxQlNXa1ZKVGxaUFNVTkZVME5CTkMxRFFTZ3hLUzVqY25Rd0RnWURWUjBQQVFIL0JBUURBZ2VBTUR3R0NTc0dBUVFCZ2pjVkJ3UXZNQzBHSlNzR0FRUUJnamNWQ0lHR3FCMkUwUHNTaHUyZEpJZk8reG5Ud0ZWbWgvcWxaWVhaaEQ0Q0FXUUNBUkl3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdNR0NDc0dBUVVGQndNQ01DY0dDU3NHQVFRQmdqY1ZDZ1FhTUJnd0NnWUlLd1lCQlFVSEF3TXdDZ1lJS3dZQkJRVUhBd0l3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUxFL2ljaG1uV1hDVUtVYmNhM3ljaThvcXdhTHZGZEhWalFydmVJOXVxQWJBaUE5aEM0TThqZ01CQURQU3ptZDJ1aVBKQTZnS1IzTEUwM1U3NWVxYkMvclhBPT0=", "pcsid_secret": "CkYsEXfV8c1gFHAtFWoZv73pGMvh/Qyo4LzKM2h/8Hg=", "csr": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ0dUQ0NBYjRDQVFBd2J6RUxNQWtHQTFVRUJoTUNVMEV4RmpBVUJnTlZCQXNURFZsaGMyMXBiaUJDY21GdQpZMmd4SERBYUJnTlZCQW9URTBScFoybDBZV3dnVkhWdWJtVnNMQ0JNVEVNeEtqQW9CZ05WQkFNVElWQlBVeTB3Ck1ERXRNekE0TWpJM05EVTRMVE01T1RrNU9UazVPVGt3TURBd016QldNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQUsKQTBJQUJCaGhzYlNrblBaQ1hrcDVJQ1N5Rmp5SXVMNnBSQlNhMHhTMGFqbjI0cWlaU2hETk5YZDMwRDNNT2NJZgpCM05MWnM2VlZ5cDNxYjZDT2FycGhDTVhtOStnZ2U4d2dld0dDU3FHU0liM0RRRUpEakdCM2pDQjJ6QWtCZ2tyCkJnRUVBWW9mRkFJRUZ4TVZWRk5VV2tGVVEwRXRRMjlrWlMxVGFXZHVhVzVuTUlHeUJnTlZIUkVFZ2Fvd2dhZWsKZ2FRd2dhRXhRVEEvQmdOVkJBUVVPREV0VUU5VExUQXdNWHd5TFUxaFkwOVRmRE10TlRKRE16Y3lOVUl0UWpBdwpSUzAxTnpjMkxVSkVRemd0T1RaR1FUUkJNamMwT1VZMk1SOHdIUVlLQ1pJbWlaUHlMR1FCQVJNUE16azVPVGs1Ck9UazVPVEF3TURBek1RMHdDd1lEVlFRTUV3UXhNVEF3TVJjd0ZRWURWUVFhRXc1U1ZVZ3lLMWhXSUZKcGVXRmsKYURFVE1CRUdBMVVFRHhNS1ZHVmphRzV2Ykc5bmVUQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5L1JPY0RkeQpIODFheUhPYWNCc3hoUURLUlc4S0RKV3RCTFBSQ3pBbG1qb0NJUUNPM0s1UjkxR1pIY1J6MVRwOTVJZzNjV290CmFFenlFNCtKc1JXbXNuRXJwUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLQo=", "private_key": "MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgDTx8z/L0CMBQUxKF9DFHLXu+3L0g3r+Fslrv0957xTmhRANCAAQYYbG0pJz2Ql5KeSAkshY8iLi+qUQUmtMUtGo59uKomUoQzTV3d9A9zDnCHwdzS2bOlVcqd6m+gjmq6YQjF5vf", "csr_details": { "csr.organization.identifier": "399999999900003", "csr.organization.unit.name": "Yasmin Branch", "csr.organization.name": "Digital Tunnel, LLC", "csr.country.name": "SA", "csr.invoice.type": "1100", "csr.location.address": "RUH2+XV Riyadh", "csr.industry.business.category": "Technology" }, "uuid": "fcb09acc-7d2f-4e74-8709-91a72a5f8fec", "created_at": "2024-12-06T11:39:48.000000Z" } }
You have to save device UUID for next operations (Sign Invoice, Report And Clear Invoices)
- Sign Invoice
use DigitalTunnel\Zatca\Facades\ZatcaConnect; use DigitalTunnel\Zatca\Data\Invoice; use DigitalTunnel\Zatca\Data\PartyInformation; use DigitalTunnel\Zatca\Data\Address; use DigitalTunnel\Zatca\Data\InvoiceLine; use DigitalTunnel\Zatca\Data\InvoiceTotals; use DigitalTunnel\Zatca\Facades\ZatcaConnect; use DigitalTunnel\Zatca\Enum\TransactionType; use DigitalTunnel\Zatca\Enum\InvoiceType; use DigitalTunnel\Zatca\Enum\PaymentMethod; $zatca = ZatcaConnect::setDeviceUuid("94d71b2f-ee56-4c21-a0a6-4f13d0c84774") ->setInvoice( new Invoice( transactionType: TransactionType::Invoice, invoiceType: InvoiceType::Invoice, invoiceNumber: "INV-1029912", invoiceDateTime: "2024-11-25T13:45:00Z", deliveryDateTime: "2024-11-25T13:45:00Z", paymentMethod: PaymentMethod::Credit, company: new PartyInformation( registrationName: "Maximum Speed Tech Supply LTD", taxIdentificationNumber: "399999999900003", identification: "1010010000", identificationType: IdentificationType::CommercialRegistrationNumber, address: new Address( street: "Street Name", buildingNumber: 2231, plotIdentification: 123, city: "Riyadh", district: "District", postalCode: "12345", country: "SA" ) ), customer: new PartyInformation( registrationName: "Company Name", taxIdentificationNumber: "399999999800003", identification: "1010010000", identificationType: IdentificationType::NationalID, address: new Address( street: "Street Name", buildingNumber: "123", plotIdentification: 123, city: "Riyadh", district: "District", postalCode: "12345", country: "SA" ) ), lines: [ new InvoiceLine( id: "1", name: "Item Name", quantity: 1, unitPrice: 2, unitType: UnitType::Unit, taxableAmount: 2, taxAmount: 0.3, taxPercentage: 15 ), new InvoiceLine( id: "2", name: "Item Name", quantity: 1, unitPrice: 2, unitType: UnitType::Unit, taxableAmount: 2, taxAmount: 0.3, taxPercentage: 15 ) ], totals: new InvoiceTotals( extensionAmount: 4, taxExclusiveAmount: 4, taxInclusiveAmount: 4.6, prepaidAmount: 0, payableAmount: 4.6, allowanceTotalAmount: 0 ) ) ) ->signInvoice();
Response example
{ "message": "Invoice Signed successfully", "data": { "status": "Signed", "uuid": "1935e4d3-0375-471d-835f-cc27ea9905ed", "transaction_type": "Simplified", "invoice_type": "Invoice", "invoice_number": "INV-1029912", "invoice_hash": "9fiFUfZwrSigOLxsfgPUVMKfLfRV5jIwf+98kiibDBo=", "invoice": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPEludm9pY2UgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiIHhtbG5zOmV4dD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIj48ZXh0OlVCTEV4dGVuc2lvbnM+CiAgICA8ZXh0OlVCTEV4dGVuc2lvbj4KICAgICAgICA8ZXh0OkV4dGVuc2lvblVSST51cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6ZHNpZzplbnZlbG9wZWQ6eGFkZXM8L2V4dDpFeHRlbnNpb25VUkk+CiAgICAgICAgPGV4dDpFeHRlbnNpb25Db250ZW50PgogICAgICAgICAgICA8c2lnOlVCTERvY3VtZW50U2lnbmF0dXJlcyB4bWxuczpzaWc9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vblNpZ25hdHVyZUNvbXBvbmVudHMtMiIgeG1sbnM6c2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpTaWduYXR1cmVBZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOnNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6U2lnbmF0dXJlQmFzaWNDb21wb25lbnRzLTIiPgogICAgICAgICAgICAgICAgPHNhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgICAgICAgICA8Y2JjOklEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6MTwvY2JjOklEPgogICAgICAgICAgICAgICAgICAgIDxzYmM6UmVmZXJlbmNlZFNpZ25hdHVyZUlEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6SW52b2ljZTwvc2JjOlJlZmVyZW5jZWRTaWduYXR1cmVJRD4KICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlIElkPSJzaWduYXR1cmUiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25lZEluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlJlZmVyZW5jZSBJZD0iaW52b2ljZVNpZ25lZERhdGEiIFVSST0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3Jtcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpleHQ6VUJMRXh0ZW5zaW9ucyk8L2RzOlhQYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlRyYW5zZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpjYWM6U2lnbmF0dXJlKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlhQYXRoPm5vdCgvL2FuY2VzdG9yLW9yLXNlbGY6OmNhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2VbY2JjOklEPSdRUiddKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpUcmFuc2Zvcm1zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+OWZpRlVmWndyU2lnT0x4c2ZnUFVWTUtmTGZSVjVqSXdmKzk4a2lpYkRCbz08L2RzOkRpZ2VzdFZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpSZWZlcmVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNTaWduYXR1cmVQcm9wZXJ0aWVzIiBVUkk9IiN4YWRlc1NpZ25lZFByb3BlcnRpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+TURrNU1USXdOR015TlRrellqZG1NbUZoTnpkak56VmtOV1JsWm1GbU0yRXlOMkk0TnpGbE5UZzNPVFJqTVdNeU9XWmhOREV5TXpsbE9HUTBaVE14Wmc9PTwvZHM6RGlnZXN0VmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlJlZmVyZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduZWRJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlVmFsdWU+TUVZQ0lRQ3hMODRMRDcwUHA4MUI5Rm1Ja0lRVVNLU0wraGJIOXQ5Qnp2VktEUUdGYWdJaEFJd0Z2eEpsdjB1SmRWY3RTSlZzZkNMakIzS3RYSmYxb0tPWlh5WVhnUWFqPC9kczpTaWduYXR1cmVWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOktleUluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEM2pDQ0E0U2dBd0lCQWdJVEVRQUFPQVBGOTBBanMveGNYd0FCQUFBNEF6QUtCZ2dxaGtqT1BRUURBakJpTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hFekFSQmdvSmtpYUprL0lzWkFFWkZnTm5iM1l4RnpBVkJnb0praWFKay9Jc1pBRVpGZ2RsZUhSbllYcDBNUnN3R1FZRFZRUURFeEpRVWxwRlNVNVdUMGxEUlZORFFUUXRRMEV3SGhjTk1qUXdNVEV4TURreE9UTXdXaGNOTWprd01UQTVNRGt4T1RNd1dqQjFNUXN3Q1FZRFZRUUdFd0pUUVRFbU1DUUdBMVVFQ2hNZFRXRjRhVzExYlNCVGNHVmxaQ0JVWldOb0lGTjFjSEJzZVNCTVZFUXhGakFVQmdOVkJBc1REVkpwZVdGa2FDQkNjbUZ1WTJneEpqQWtCZ05WQkFNVEhWUlRWQzA0T0RZME16RXhORFV0TXprNU9UazVPVGs1T1RBd01EQXpNRll3RUFZSEtvWkl6ajBDQVFZRks0RUVBQW9EUWdBRW9XQ0thMFNhOUZJRXJUT3YwdUFrQzFWSUtYeFU5blBweDJ2bGY0eWhNZWp5OGMwMlhKYmxEcTd0UHlkbzhtcTBhaE9NbU5vOGd3bmk3WHQxS1Q5VWVLT0NBZ2N3Z2dJRE1JR3RCZ05WSFJFRWdhVXdnYUtrZ1o4d2dad3hPekE1QmdOVkJBUU1NakV0VkZOVWZESXRWRk5VZkRNdFpXUXlNbVl4WkRndFpUWmhNaTB4TVRFNExUbGlOVGd0WkRsaE9HWXhNV1UwTkRWbU1SOHdIUVlLQ1pJbWlaUHlMR1FCQVF3UE16azVPVGs1T1RrNU9UQXdNREF6TVEwd0N3WURWUVFNREFReE1UQXdNUkV3RHdZRFZRUWFEQWhTVWxKRU1qa3lPVEVhTUJnR0ExVUVEd3dSVTNWd2NHeDVJR0ZqZEdsMmFYUnBaWE13SFFZRFZSME9CQllFRkVYK1l2bW10bllvRGY5QkdiS283b2NUS1lLMU1COEdBMVVkSXdRWU1CYUFGSnZLcXFMdG1xd3NrSUZ6VnZwUDJQeFQrOU5uTUhzR0NDc0dBUVVGQndFQkJHOHdiVEJyQmdnckJnRUZCUWN3QW9aZmFIUjBjRG92TDJGcFlUUXVlbUYwWTJFdVoyOTJMbk5oTDBObGNuUkZibkp2Ykd3dlVGSmFSVWx1ZG05cFkyVlRRMEUwTG1WNGRHZGhlblF1WjI5MkxteHZZMkZzWDFCU1drVkpUbFpQU1VORlUwTkJOQzFEUVNneEtTNWpjblF3RGdZRFZSMFBBUUgvQkFRREFnZUFNRHdHQ1NzR0FRUUJnamNWQndRdk1DMEdKU3NHQVFRQmdqY1ZDSUdHcUIyRTBQc1NodTJkSklmTyt4blR3RlZtaC9xbFpZWFpoRDRDQVdRQ0FSSXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd01HQ0NzR0FRVUZCd01DTUNjR0NTc0dBUVFCZ2pjVkNnUWFNQmd3Q2dZSUt3WUJCUVVIQXdNd0NnWUlLd1lCQlFVSEF3SXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTEUvaWNobW5XWENVS1ViY2EzeWNpOG9xd2FMdkZkSFZqUXJ2ZUk5dXFBYkFpQTloQzRNOGpnTUJBRFBTem1kMnVpUEpBNmdLUjNMRTAzVTc1ZXFiQy9yWEE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6T2JqZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlF1YWxpZnlpbmdQcm9wZXJ0aWVzIFRhcmdldD0ic2lnbmF0dXJlIiB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmVkUHJvcGVydGllcyBJZD0ieGFkZXNTaWduZWRQcm9wZXJ0aWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ1RpbWU+MjAyNC0xMi0wNlQyMTo0MzoyNzwveGFkZXM6U2lnbmluZ1RpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4YWRlczpDZXJ0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6Q2VydERpZ2VzdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RWYWx1ZT5aRE13TW1JME1URTFOelZqT1RVMk5UazRZelZsT0RoaFltSTBPRFUyTkRVeU5UVTJZVFZoWWpoaE1ERm1OMkZqWWprMVlUQTJPV1EwTmpZMk1qUTROUT09PC9kczpEaWdlc3RWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpDZXJ0RGlnZXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlJc3N1ZXJOYW1lPkNOPVBSWkVJTlZPSUNFU0NBNC1DQSwgREM9ZXh0Z2F6dCwgREM9Z292LCBEQz1sb2NhbDwvZHM6WDUwOUlzc3Vlck5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOVNlcmlhbE51bWJlcj4zNzkxMTI3NDI4MzEzODA0NzE4MzUyNjM5Njk1ODcyODc2NjM1MjA1MjgzODc8L2RzOlg1MDlTZXJpYWxOdW1iZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6Q2VydD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpPYmplY3Q+CiAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduYXR1cmU+CiAgICAgICAgICAgICAgICA8L3NhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgPC9zaWc6VUJMRG9jdW1lbnRTaWduYXR1cmVzPgogICAgICAgIDwvZXh0OkV4dGVuc2lvbkNvbnRlbnQ+CiAgICA8L2V4dDpVQkxFeHRlbnNpb24+CjwvZXh0OlVCTEV4dGVuc2lvbnM+CiAKIDxjYmM6UHJvZmlsZUlEPnJlcG9ydGluZzoxLjA8L2NiYzpQcm9maWxlSUQ+CiA8Y2JjOklEPklOVi0xMDI5OTEyPC9jYmM6SUQ+CiA8Y2JjOlVVSUQ+MTkzNWU0ZDMtMDM3NS00NzFkLTgzNWYtY2MyN2VhOTkwNWVkPC9jYmM6VVVJRD4KIDxjYmM6SXNzdWVEYXRlPjIwMjQtMTEtMjU8L2NiYzpJc3N1ZURhdGU+CiA8Y2JjOklzc3VlVGltZT4xMzo0NTowMDwvY2JjOklzc3VlVGltZT4KIDxjYmM6SW52b2ljZVR5cGVDb2RlIG5hbWU9IjAyMDAwMDAiPjM4ODwvY2JjOkludm9pY2VUeXBlQ29kZT4KIDxjYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+U0FSPC9jYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+CiA8Y2JjOlRheEN1cnJlbmN5Q29kZT5TQVI8L2NiYzpUYXhDdXJyZW5jeUNvZGU+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPklDVjwvY2JjOklEPgogIDxjYmM6VVVJRD41MTwvY2JjOlVVSUQ+CiA8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPlBJSDwvY2JjOklEPgogIDxjYWM6QXR0YWNobWVudD4KICAgPGNiYzpFbWJlZGRlZERvY3VtZW50QmluYXJ5T2JqZWN0IG1pbWVDb2RlPSJ0ZXh0L3BsYWluIj5OV1psWTJWaU5qWm1abU00Tm1Zek9HUTVOVEkzT0Raak5tUTJPVFpqTnpsak1tUmlZekl6T1dSa05HVTVNV0kwTmpjeU9XUTNNMkV5TjJaaU5UZGxPUT09PC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICA8L2NhYzpBdHRhY2htZW50PgogPC9jYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogCiAKIDxjYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogICAgICAgIDxjYmM6SUQ+UVI8L2NiYzpJRD4KICAgICAgICA8Y2FjOkF0dGFjaG1lbnQ+CiAgICAgICAgICAgIDxjYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdCBtaW1lQ29kZT0idGV4dC9wbGFpbiI+QVIxTllYaHBiWFZ0SUZOd1pXVmtJRlJsWTJnZ1UzVndjR3g1SUV4VVJBSVBNems1T1RrNU9UazVPVEF3TURBekF4TXlNREkwTFRFeExUSTFWREV6T2pRMU9qQXdCQVEwTGpZd0JRTXdMallHTERsbWFVWlZabHAzY2xOcFowOU1lSE5tWjFCVlZrMUxaa3htVWxZMWFrbDNaaXM1T0d0cGFXSkVRbTg5QjJCTlJWbERTVkZEZUV3NE5FeEVOekJRY0RneFFqbEdiVWxyU1ZGVlUwdFRUQ3RvWWtnNWREbENlblpXUzBSUlIwWmhaMGxvUVVsM1JuWjRTbXgyTUhWS1pGWmpkRk5LVm5ObVEweHFRak5MZEZoS1pqRnZTMDlhV0hsWldHZFJZV29JV0RCV01CQUdCeXFHU000OUFnRUdCU3VCQkFBS0EwSUFCS0ZnaW10RW12UlNCSzB6cjlMZ0pBdFZTQ2w4VlBaejZjZHI1WCtNb1RIbzh2SE5ObHlXNVE2dTdUOG5hUEpxdEdvVGpKamFQSU1KNHUxN2RTay9WSGdKUnpCRkFpRUFzVCtKeUdhZFpjSlFwUnR4cmZKeUx5aXJCb3U4VjBkV05DdTk0ajI2b0JzQ0lEMkVMZ3p5T0F3RUFNOUxPWjNhNkk4a0RxQXBIY3NUVGRUdmw2cHNMK3RjPC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICAgICAgICA8L2NhYzpBdHRhY2htZW50Pgo8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+PGNhYzpTaWduYXR1cmU+CiAgICAgIDxjYmM6SUQ+dXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNpZ25hdHVyZTpJbnZvaWNlPC9jYmM6SUQ+CiAgICAgIDxjYmM6U2lnbmF0dXJlTWV0aG9kPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpkc2lnOmVudmVsb3BlZDp4YWRlczwvY2JjOlNpZ25hdHVyZU1ldGhvZD4KPC9jYWM6U2lnbmF0dXJlPjxjYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+CiAgPGNhYzpQYXJ0eT4KICAgPGNhYzpQYXJ0eUlkZW50aWZpY2F0aW9uPgogICAgPGNiYzpJRCBzY2hlbWVJRD0iQ1JOIj4xMDEwMDEwMDAwPC9jYmM6SUQ+CiAgIDwvY2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgIDxjYWM6UG9zdGFsQWRkcmVzcz4KICAgIDxjYmM6U3RyZWV0TmFtZT5TdHJlZXQgTmFtZTwvY2JjOlN0cmVldE5hbWU+CiAgICA8Y2JjOkJ1aWxkaW5nTnVtYmVyPjIyMzE8L2NiYzpCdWlsZGluZ051bWJlcj4KICAgIDxjYmM6UGxvdElkZW50aWZpY2F0aW9uPjEyMzwvY2JjOlBsb3RJZGVudGlmaWNhdGlvbj4KICAgIDxjYmM6Q2l0eVN1YmRpdmlzaW9uTmFtZT5EaXN0cmljdDwvY2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+CiAgICA8Y2JjOkNpdHlOYW1lPlJpeWFkaDwvY2JjOkNpdHlOYW1lPgogICAgPGNiYzpQb3N0YWxab25lPjEyMzQ1PC9jYmM6UG9zdGFsWm9uZT4KICAgIDxjYWM6Q291bnRyeT4KICAgICA8Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5TQTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT4KICAgIDwvY2FjOkNvdW50cnk+CiAgIDwvY2FjOlBvc3RhbEFkZHJlc3M+CiAgIDxjYWM6UGFydHlUYXhTY2hlbWU+CiAgICA8Y2JjOkNvbXBhbnlJRD4zOTk5OTk5OTk5MDAwMDM8L2NiYzpDb21wYW55SUQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PgogICAgPGNiYzpSZWdpc3RyYXRpb25OYW1lPk1heGltdW0gU3BlZWQgVGVjaCBTdXBwbHkgTFREPC9jYmM6UmVnaXN0cmF0aW9uTmFtZT4KICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICA8L2NhYzpQYXJ0eT4KIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogPGNhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT4KICA8Y2FjOlBhcnR5PgogICA8Y2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOklEIHNjaGVtZUlEPSJOQVQiPjEwMTAwMTAwMDA8L2NiYzpJRD4KICAgPC9jYWM6UGFydHlJZGVudGlmaWNhdGlvbj4KICAgPGNhYzpQb3N0YWxBZGRyZXNzPgogICAgPGNiYzpTdHJlZXROYW1lPlN0cmVldCBOYW1lPC9jYmM6U3RyZWV0TmFtZT4KICAgIDxjYmM6QnVpbGRpbmdOdW1iZXI+MTIzPC9jYmM6QnVpbGRpbmdOdW1iZXI+CiAgICA8Y2JjOlBsb3RJZGVudGlmaWNhdGlvbj4xMjM8L2NiYzpQbG90SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+RGlzdHJpY3Q8L2NiYzpDaXR5U3ViZGl2aXNpb25OYW1lPgogICAgPGNiYzpDaXR5TmFtZT5SaXlhZGg8L2NiYzpDaXR5TmFtZT4KICAgIDxjYmM6UG9zdGFsWm9uZT4xMjM0NTwvY2JjOlBvc3RhbFpvbmU+CiAgICA8Y2FjOkNvdW50cnk+CiAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+U0E8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICA8L2NhYzpDb3VudHJ5PgogICA8L2NhYzpQb3N0YWxBZGRyZXNzPgogICA8Y2FjOlBhcnR5VGF4U2NoZW1lPgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6UGFydHlUYXhTY2hlbWU+CiAgIDxjYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDxjYmM6UmVnaXN0cmF0aW9uTmFtZT5Db21wYW55IE5hbWU8L2NiYzpSZWdpc3RyYXRpb25OYW1lPgogICA8L2NhYzpQYXJ0eUxlZ2FsRW50aXR5PgogIDwvY2FjOlBhcnR5PgogPC9jYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiA8Y2FjOkRlbGl2ZXJ5PgogIDxjYmM6QWN0dWFsRGVsaXZlcnlEYXRlPjIwMjQtMTEtMjU8L2NiYzpBY3R1YWxEZWxpdmVyeURhdGU+CiA8L2NhYzpEZWxpdmVyeT4KIDxjYWM6UGF5bWVudE1lYW5zPgogIDxjYmM6UGF5bWVudE1lYW5zQ29kZT4zMDwvY2JjOlBheW1lbnRNZWFuc0NvZGU+CiA8L2NhYzpQYXltZW50TWVhbnM+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42PC9jYmM6VGF4QW1vdW50PgogPC9jYWM6VGF4VG90YWw+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42MDwvY2JjOlRheEFtb3VudD4KICA8Y2FjOlRheFN1YnRvdGFsPgogICA8Y2JjOlRheGFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjAwPC9jYmM6VGF4YWJsZUFtb3VudD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjYwPC9jYmM6VGF4QW1vdW50PgogICA8Y2FjOlRheENhdGVnb3J5PgogICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MzA1Ij5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTU8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MTUzIj5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6VGF4Q2F0ZWdvcnk+CiAgPC9jYWM6VGF4U3VidG90YWw+CiA8L2NhYzpUYXhUb3RhbD4KIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogIDxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuMDA8L2NiYzpMaW5lRXh0ZW5zaW9uQW1vdW50PgogIDxjYmM6VGF4RXhjbHVzaXZlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NC4wMDwvY2JjOlRheEV4Y2x1c2l2ZUFtb3VudD4KICA8Y2JjOlRheEluY2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuNjA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgPGNiYzpBbGxvd2FuY2VUb3RhbEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMDA8L2NiYzpBbGxvd2FuY2VUb3RhbEFtb3VudD4KICA8Y2JjOlByZXBhaWRBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjAwPC9jYmM6UHJlcGFpZEFtb3VudD4KICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjYwPC9jYmM6UGF5YWJsZUFtb3VudD4KIDwvY2FjOkxlZ2FsTW9uZXRhcnlUb3RhbD4KIDxjYWM6SW52b2ljZUxpbmU+CiAgPGNiYzpJRD4xPC9jYmM6SUQ+CiAgPGNiYzpJbnZvaWNlZFF1YW50aXR5IHVuaXRDb2RlPSJNT04iPjEuMDAwMDAwPC9jYmM6SW52b2ljZWRRdWFudGl0eT4KICA8Y2JjOkxpbmVFeHRlbnNpb25BbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjAwPC9jYmM6TGluZUV4dGVuc2lvbkFtb3VudD4KICA8Y2FjOlRheFRvdGFsPgogICA8Y2JjOlRheEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMzA8L2NiYzpUYXhBbW91bnQ+CiAgIDxjYmM6Um91bmRpbmdBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjMwPC9jYmM6Um91bmRpbmdBbW91bnQ+CiAgPC9jYWM6VGF4VG90YWw+CiAgPGNhYzpJdGVtPgogICA8Y2JjOk5hbWU+SXRlbSBOYW1lPC9jYmM6TmFtZT4KICAgPGNhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgICA8Y2JjOklEPlM8L2NiYzpJRD4KICAgIDxjYmM6UGVyY2VudD4xNS4wMDwvY2JjOlBlcmNlbnQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgPC9jYWM6SXRlbT4KICA8Y2FjOlByaWNlPgogICA8Y2JjOlByaWNlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOlByaWNlQW1vdW50PgogIDwvY2FjOlByaWNlPgogPC9jYWM6SW52b2ljZUxpbmU+CiA8Y2FjOkludm9pY2VMaW5lPgogIDxjYmM6SUQ+MjwvY2JjOklEPgogIDxjYmM6SW52b2ljZWRRdWFudGl0eSB1bml0Q29kZT0iTU9OIj4xLjAwMDAwMDwvY2JjOkludm9pY2VkUXVhbnRpdHk+CiAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgPGNhYzpUYXhUb3RhbD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjMwPC9jYmM6VGF4QW1vdW50PgogICA8Y2JjOlJvdW5kaW5nQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4zMDwvY2JjOlJvdW5kaW5nQW1vdW50PgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6SXRlbT4KICAgPGNiYzpOYW1lPkl0ZW0gTmFtZTwvY2JjOk5hbWU+CiAgIDxjYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogICAgPGNiYzpJRD5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTUuMDA8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogIDwvY2FjOkl0ZW0+CiAgPGNhYzpQcmljZT4KICAgPGNiYzpQcmljZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjIuMDA8L2NiYzpQcmljZUFtb3VudD4KICA8L2NhYzpQcmljZT4KIDwvY2FjOkludm9pY2VMaW5lPgo8L0ludm9pY2U+", "qr": "AR1NYXhpbXVtIFNwZWVkIFRlY2ggU3VwcGx5IExURAIPMzk5OTk5OTk5OTAwMDAzAxMyMDI0LTExLTI1VDEzOjQ1OjAwBAQ0LjYwBQMwLjYGLDlmaUZVZlp3clNpZ09MeHNmZ1BVVk1LZkxmUlY1akl3Zis5OGtpaWJEQm89B2BNRVlDSVFDeEw4NExENzBQcDgxQjlGbUlrSVFVU0tTTCtoYkg5dDlCenZWS0RRR0ZhZ0loQUl3RnZ4Smx2MHVKZFZjdFNKVnNmQ0xqQjNLdFhKZjFvS09aWHlZWGdRYWoIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABKFgimtEmvRSBK0zr9LgJAtVSCl8VPZz6cdr5X+MoTHo8vHNNlyW5Q6u7T8naPJqtGoTjJjaPIMJ4u17dSk/VHgJRzBFAiEAsT+JyGadZcJQpRtxrfJyLyirBou8V0dWNCu94j26oBsCID2ELgzyOAwEAM9LOZ3a6I8kDqApHcsTTdTvl6psL+tc", "response": null, "created_at": "2024-12-06T21:43:27.000000Z" } }
Use the Invoice UUID to perform compliance checks or to initiate the report and clear steps.
- Report And Clear Invoices
use DigitalTunnel\Zatca\Facades\ZatcaConnect; $zatca = ZatcaConnect::setInvoiceUuid("94d71b2f-ee56-4c21-a0a6-4f13d0c84774") ->reportAndClearInvoices();
Response example of Standard invoice reporting
{ "message": "ZATCA Invoice Compliance Check Details", "data": { "validationResults": { "infoMessages": [ { "type": "INFO", "code": "XSD_ZATCA_VALID", "category": "XSD validation", "message": "Complied with UBL 2.1 standards in line with ZATCA specifications", "status": "PASS" }], "warningMessages": [], "errorMessages": [], "status": "PASS" }, "reportingStatus": null, "clearanceStatus": "CLEARED", "qrSellertStatus": null, "qrBuyertStatus": null } }
Response example of Simplified invoice reporting
{ "message": "ZATCA Simplified Invoice Reporting Details", "data": { "validationResults": { "infoMessages": [ { "type": "INFO", "code": "XSD_ZATCA_VALID", "category": "XSD validation", "message": "Complied with UBL 2.1 standards in line with ZATCA specifications", "status": "PASS" }], "warningMessages": [], "errorMessages": [], "status": "PASS" }, "reportingStatus": "REPORTED" } }
- Get Invoice Details
use DigitalTunnel\Zatca\Facades\ZatcaConnect; $zatca = ZatcaConnect::setInvoiceUuid("94d71b2f-ee56-4c21-a0a6-4f13d0c84774") ->getInvoice();
Response example of invoice instance
{ "message": "ZATCA Invoice Invoice Details", "data": { "uuid": "1935e4d3-0375-471d-835f-cc27ea9905ed", "status": "REPORTED", "transaction_type": "Simplified", "invoice_type": "Invoice", "invoice_number": "INV-1029912", "invoice_hash": "9fiFUfZwrSigOLxsfgPUVMKfLfRV5jIwf+98kiibDBo=", "invoice": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPEludm9pY2UgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiIHhtbG5zOmV4dD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIj48ZXh0OlVCTEV4dGVuc2lvbnM+CiAgICA8ZXh0OlVCTEV4dGVuc2lvbj4KICAgICAgICA8ZXh0OkV4dGVuc2lvblVSST51cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6ZHNpZzplbnZlbG9wZWQ6eGFkZXM8L2V4dDpFeHRlbnNpb25VUkk+CiAgICAgICAgPGV4dDpFeHRlbnNpb25Db250ZW50PgogICAgICAgICAgICA8c2lnOlVCTERvY3VtZW50U2lnbmF0dXJlcyB4bWxuczpzaWc9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vblNpZ25hdHVyZUNvbXBvbmVudHMtMiIgeG1sbnM6c2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpTaWduYXR1cmVBZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOnNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6U2lnbmF0dXJlQmFzaWNDb21wb25lbnRzLTIiPgogICAgICAgICAgICAgICAgPHNhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgICAgICAgICA8Y2JjOklEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6MTwvY2JjOklEPgogICAgICAgICAgICAgICAgICAgIDxzYmM6UmVmZXJlbmNlZFNpZ25hdHVyZUlEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6SW52b2ljZTwvc2JjOlJlZmVyZW5jZWRTaWduYXR1cmVJRD4KICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlIElkPSJzaWduYXR1cmUiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25lZEluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlJlZmVyZW5jZSBJZD0iaW52b2ljZVNpZ25lZERhdGEiIFVSST0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3Jtcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpleHQ6VUJMRXh0ZW5zaW9ucyk8L2RzOlhQYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlRyYW5zZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpjYWM6U2lnbmF0dXJlKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlhQYXRoPm5vdCgvL2FuY2VzdG9yLW9yLXNlbGY6OmNhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2VbY2JjOklEPSdRUiddKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpUcmFuc2Zvcm1zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+OWZpRlVmWndyU2lnT0x4c2ZnUFVWTUtmTGZSVjVqSXdmKzk4a2lpYkRCbz08L2RzOkRpZ2VzdFZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpSZWZlcmVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNTaWduYXR1cmVQcm9wZXJ0aWVzIiBVUkk9IiN4YWRlc1NpZ25lZFByb3BlcnRpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+TURrNU1USXdOR015TlRrellqZG1NbUZoTnpkak56VmtOV1JsWm1GbU0yRXlOMkk0TnpGbE5UZzNPVFJqTVdNeU9XWmhOREV5TXpsbE9HUTBaVE14Wmc9PTwvZHM6RGlnZXN0VmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlJlZmVyZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduZWRJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlVmFsdWU+TUVZQ0lRQ3hMODRMRDcwUHA4MUI5Rm1Ja0lRVVNLU0wraGJIOXQ5Qnp2VktEUUdGYWdJaEFJd0Z2eEpsdjB1SmRWY3RTSlZzZkNMakIzS3RYSmYxb0tPWlh5WVhnUWFqPC9kczpTaWduYXR1cmVWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOktleUluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEM2pDQ0E0U2dBd0lCQWdJVEVRQUFPQVBGOTBBanMveGNYd0FCQUFBNEF6QUtCZ2dxaGtqT1BRUURBakJpTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hFekFSQmdvSmtpYUprL0lzWkFFWkZnTm5iM1l4RnpBVkJnb0praWFKay9Jc1pBRVpGZ2RsZUhSbllYcDBNUnN3R1FZRFZRUURFeEpRVWxwRlNVNVdUMGxEUlZORFFUUXRRMEV3SGhjTk1qUXdNVEV4TURreE9UTXdXaGNOTWprd01UQTVNRGt4T1RNd1dqQjFNUXN3Q1FZRFZRUUdFd0pUUVRFbU1DUUdBMVVFQ2hNZFRXRjRhVzExYlNCVGNHVmxaQ0JVWldOb0lGTjFjSEJzZVNCTVZFUXhGakFVQmdOVkJBc1REVkpwZVdGa2FDQkNjbUZ1WTJneEpqQWtCZ05WQkFNVEhWUlRWQzA0T0RZME16RXhORFV0TXprNU9UazVPVGs1T1RBd01EQXpNRll3RUFZSEtvWkl6ajBDQVFZRks0RUVBQW9EUWdBRW9XQ0thMFNhOUZJRXJUT3YwdUFrQzFWSUtYeFU5blBweDJ2bGY0eWhNZWp5OGMwMlhKYmxEcTd0UHlkbzhtcTBhaE9NbU5vOGd3bmk3WHQxS1Q5VWVLT0NBZ2N3Z2dJRE1JR3RCZ05WSFJFRWdhVXdnYUtrZ1o4d2dad3hPekE1QmdOVkJBUU1NakV0VkZOVWZESXRWRk5VZkRNdFpXUXlNbVl4WkRndFpUWmhNaTB4TVRFNExUbGlOVGd0WkRsaE9HWXhNV1UwTkRWbU1SOHdIUVlLQ1pJbWlaUHlMR1FCQVF3UE16azVPVGs1T1RrNU9UQXdNREF6TVEwd0N3WURWUVFNREFReE1UQXdNUkV3RHdZRFZRUWFEQWhTVWxKRU1qa3lPVEVhTUJnR0ExVUVEd3dSVTNWd2NHeDVJR0ZqZEdsMmFYUnBaWE13SFFZRFZSME9CQllFRkVYK1l2bW10bllvRGY5QkdiS283b2NUS1lLMU1COEdBMVVkSXdRWU1CYUFGSnZLcXFMdG1xd3NrSUZ6VnZwUDJQeFQrOU5uTUhzR0NDc0dBUVVGQndFQkJHOHdiVEJyQmdnckJnRUZCUWN3QW9aZmFIUjBjRG92TDJGcFlUUXVlbUYwWTJFdVoyOTJMbk5oTDBObGNuUkZibkp2Ykd3dlVGSmFSVWx1ZG05cFkyVlRRMEUwTG1WNGRHZGhlblF1WjI5MkxteHZZMkZzWDFCU1drVkpUbFpQU1VORlUwTkJOQzFEUVNneEtTNWpjblF3RGdZRFZSMFBBUUgvQkFRREFnZUFNRHdHQ1NzR0FRUUJnamNWQndRdk1DMEdKU3NHQVFRQmdqY1ZDSUdHcUIyRTBQc1NodTJkSklmTyt4blR3RlZtaC9xbFpZWFpoRDRDQVdRQ0FSSXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd01HQ0NzR0FRVUZCd01DTUNjR0NTc0dBUVFCZ2pjVkNnUWFNQmd3Q2dZSUt3WUJCUVVIQXdNd0NnWUlLd1lCQlFVSEF3SXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTEUvaWNobW5XWENVS1ViY2EzeWNpOG9xd2FMdkZkSFZqUXJ2ZUk5dXFBYkFpQTloQzRNOGpnTUJBRFBTem1kMnVpUEpBNmdLUjNMRTAzVTc1ZXFiQy9yWEE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6T2JqZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlF1YWxpZnlpbmdQcm9wZXJ0aWVzIFRhcmdldD0ic2lnbmF0dXJlIiB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmVkUHJvcGVydGllcyBJZD0ieGFkZXNTaWduZWRQcm9wZXJ0aWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ1RpbWU+MjAyNC0xMi0wNlQyMTo0MzoyNzwveGFkZXM6U2lnbmluZ1RpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4YWRlczpDZXJ0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6Q2VydERpZ2VzdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RWYWx1ZT5aRE13TW1JME1URTFOelZqT1RVMk5UazRZelZsT0RoaFltSTBPRFUyTkRVeU5UVTJZVFZoWWpoaE1ERm1OMkZqWWprMVlUQTJPV1EwTmpZMk1qUTROUT09PC9kczpEaWdlc3RWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpDZXJ0RGlnZXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlJc3N1ZXJOYW1lPkNOPVBSWkVJTlZPSUNFU0NBNC1DQSwgREM9ZXh0Z2F6dCwgREM9Z292LCBEQz1sb2NhbDwvZHM6WDUwOUlzc3Vlck5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOVNlcmlhbE51bWJlcj4zNzkxMTI3NDI4MzEzODA0NzE4MzUyNjM5Njk1ODcyODc2NjM1MjA1MjgzODc8L2RzOlg1MDlTZXJpYWxOdW1iZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6Q2VydD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpPYmplY3Q+CiAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduYXR1cmU+CiAgICAgICAgICAgICAgICA8L3NhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgPC9zaWc6VUJMRG9jdW1lbnRTaWduYXR1cmVzPgogICAgICAgIDwvZXh0OkV4dGVuc2lvbkNvbnRlbnQ+CiAgICA8L2V4dDpVQkxFeHRlbnNpb24+CjwvZXh0OlVCTEV4dGVuc2lvbnM+CiAKIDxjYmM6UHJvZmlsZUlEPnJlcG9ydGluZzoxLjA8L2NiYzpQcm9maWxlSUQ+CiA8Y2JjOklEPklOVi0xMDI5OTEyPC9jYmM6SUQ+CiA8Y2JjOlVVSUQ+MTkzNWU0ZDMtMDM3NS00NzFkLTgzNWYtY2MyN2VhOTkwNWVkPC9jYmM6VVVJRD4KIDxjYmM6SXNzdWVEYXRlPjIwMjQtMTEtMjU8L2NiYzpJc3N1ZURhdGU+CiA8Y2JjOklzc3VlVGltZT4xMzo0NTowMDwvY2JjOklzc3VlVGltZT4KIDxjYmM6SW52b2ljZVR5cGVDb2RlIG5hbWU9IjAyMDAwMDAiPjM4ODwvY2JjOkludm9pY2VUeXBlQ29kZT4KIDxjYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+U0FSPC9jYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+CiA8Y2JjOlRheEN1cnJlbmN5Q29kZT5TQVI8L2NiYzpUYXhDdXJyZW5jeUNvZGU+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPklDVjwvY2JjOklEPgogIDxjYmM6VVVJRD41MTwvY2JjOlVVSUQ+CiA8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPlBJSDwvY2JjOklEPgogIDxjYWM6QXR0YWNobWVudD4KICAgPGNiYzpFbWJlZGRlZERvY3VtZW50QmluYXJ5T2JqZWN0IG1pbWVDb2RlPSJ0ZXh0L3BsYWluIj5OV1psWTJWaU5qWm1abU00Tm1Zek9HUTVOVEkzT0Raak5tUTJPVFpqTnpsak1tUmlZekl6T1dSa05HVTVNV0kwTmpjeU9XUTNNMkV5TjJaaU5UZGxPUT09PC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICA8L2NhYzpBdHRhY2htZW50PgogPC9jYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogCiAKIDxjYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogICAgICAgIDxjYmM6SUQ+UVI8L2NiYzpJRD4KICAgICAgICA8Y2FjOkF0dGFjaG1lbnQ+CiAgICAgICAgICAgIDxjYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdCBtaW1lQ29kZT0idGV4dC9wbGFpbiI+QVIxTllYaHBiWFZ0SUZOd1pXVmtJRlJsWTJnZ1UzVndjR3g1SUV4VVJBSVBNems1T1RrNU9UazVPVEF3TURBekF4TXlNREkwTFRFeExUSTFWREV6T2pRMU9qQXdCQVEwTGpZd0JRTXdMallHTERsbWFVWlZabHAzY2xOcFowOU1lSE5tWjFCVlZrMUxaa3htVWxZMWFrbDNaaXM1T0d0cGFXSkVRbTg5QjJCTlJWbERTVkZEZUV3NE5FeEVOekJRY0RneFFqbEdiVWxyU1ZGVlUwdFRUQ3RvWWtnNWREbENlblpXUzBSUlIwWmhaMGxvUVVsM1JuWjRTbXgyTUhWS1pGWmpkRk5LVm5ObVEweHFRak5MZEZoS1pqRnZTMDlhV0hsWldHZFJZV29JV0RCV01CQUdCeXFHU000OUFnRUdCU3VCQkFBS0EwSUFCS0ZnaW10RW12UlNCSzB6cjlMZ0pBdFZTQ2w4VlBaejZjZHI1WCtNb1RIbzh2SE5ObHlXNVE2dTdUOG5hUEpxdEdvVGpKamFQSU1KNHUxN2RTay9WSGdKUnpCRkFpRUFzVCtKeUdhZFpjSlFwUnR4cmZKeUx5aXJCb3U4VjBkV05DdTk0ajI2b0JzQ0lEMkVMZ3p5T0F3RUFNOUxPWjNhNkk4a0RxQXBIY3NUVGRUdmw2cHNMK3RjPC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICAgICAgICA8L2NhYzpBdHRhY2htZW50Pgo8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+PGNhYzpTaWduYXR1cmU+CiAgICAgIDxjYmM6SUQ+dXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNpZ25hdHVyZTpJbnZvaWNlPC9jYmM6SUQ+CiAgICAgIDxjYmM6U2lnbmF0dXJlTWV0aG9kPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpkc2lnOmVudmVsb3BlZDp4YWRlczwvY2JjOlNpZ25hdHVyZU1ldGhvZD4KPC9jYWM6U2lnbmF0dXJlPjxjYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+CiAgPGNhYzpQYXJ0eT4KICAgPGNhYzpQYXJ0eUlkZW50aWZpY2F0aW9uPgogICAgPGNiYzpJRCBzY2hlbWVJRD0iQ1JOIj4xMDEwMDEwMDAwPC9jYmM6SUQ+CiAgIDwvY2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgIDxjYWM6UG9zdGFsQWRkcmVzcz4KICAgIDxjYmM6U3RyZWV0TmFtZT5TdHJlZXQgTmFtZTwvY2JjOlN0cmVldE5hbWU+CiAgICA8Y2JjOkJ1aWxkaW5nTnVtYmVyPjIyMzE8L2NiYzpCdWlsZGluZ051bWJlcj4KICAgIDxjYmM6UGxvdElkZW50aWZpY2F0aW9uPjEyMzwvY2JjOlBsb3RJZGVudGlmaWNhdGlvbj4KICAgIDxjYmM6Q2l0eVN1YmRpdmlzaW9uTmFtZT5EaXN0cmljdDwvY2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+CiAgICA8Y2JjOkNpdHlOYW1lPlJpeWFkaDwvY2JjOkNpdHlOYW1lPgogICAgPGNiYzpQb3N0YWxab25lPjEyMzQ1PC9jYmM6UG9zdGFsWm9uZT4KICAgIDxjYWM6Q291bnRyeT4KICAgICA8Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5TQTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT4KICAgIDwvY2FjOkNvdW50cnk+CiAgIDwvY2FjOlBvc3RhbEFkZHJlc3M+CiAgIDxjYWM6UGFydHlUYXhTY2hlbWU+CiAgICA8Y2JjOkNvbXBhbnlJRD4zOTk5OTk5OTk5MDAwMDM8L2NiYzpDb21wYW55SUQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PgogICAgPGNiYzpSZWdpc3RyYXRpb25OYW1lPk1heGltdW0gU3BlZWQgVGVjaCBTdXBwbHkgTFREPC9jYmM6UmVnaXN0cmF0aW9uTmFtZT4KICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICA8L2NhYzpQYXJ0eT4KIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogPGNhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT4KICA8Y2FjOlBhcnR5PgogICA8Y2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOklEIHNjaGVtZUlEPSJOQVQiPjEwMTAwMTAwMDA8L2NiYzpJRD4KICAgPC9jYWM6UGFydHlJZGVudGlmaWNhdGlvbj4KICAgPGNhYzpQb3N0YWxBZGRyZXNzPgogICAgPGNiYzpTdHJlZXROYW1lPlN0cmVldCBOYW1lPC9jYmM6U3RyZWV0TmFtZT4KICAgIDxjYmM6QnVpbGRpbmdOdW1iZXI+MTIzPC9jYmM6QnVpbGRpbmdOdW1iZXI+CiAgICA8Y2JjOlBsb3RJZGVudGlmaWNhdGlvbj4xMjM8L2NiYzpQbG90SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+RGlzdHJpY3Q8L2NiYzpDaXR5U3ViZGl2aXNpb25OYW1lPgogICAgPGNiYzpDaXR5TmFtZT5SaXlhZGg8L2NiYzpDaXR5TmFtZT4KICAgIDxjYmM6UG9zdGFsWm9uZT4xMjM0NTwvY2JjOlBvc3RhbFpvbmU+CiAgICA8Y2FjOkNvdW50cnk+CiAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+U0E8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICA8L2NhYzpDb3VudHJ5PgogICA8L2NhYzpQb3N0YWxBZGRyZXNzPgogICA8Y2FjOlBhcnR5VGF4U2NoZW1lPgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6UGFydHlUYXhTY2hlbWU+CiAgIDxjYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDxjYmM6UmVnaXN0cmF0aW9uTmFtZT5Db21wYW55IE5hbWU8L2NiYzpSZWdpc3RyYXRpb25OYW1lPgogICA8L2NhYzpQYXJ0eUxlZ2FsRW50aXR5PgogIDwvY2FjOlBhcnR5PgogPC9jYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiA8Y2FjOkRlbGl2ZXJ5PgogIDxjYmM6QWN0dWFsRGVsaXZlcnlEYXRlPjIwMjQtMTEtMjU8L2NiYzpBY3R1YWxEZWxpdmVyeURhdGU+CiA8L2NhYzpEZWxpdmVyeT4KIDxjYWM6UGF5bWVudE1lYW5zPgogIDxjYmM6UGF5bWVudE1lYW5zQ29kZT4zMDwvY2JjOlBheW1lbnRNZWFuc0NvZGU+CiA8L2NhYzpQYXltZW50TWVhbnM+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42PC9jYmM6VGF4QW1vdW50PgogPC9jYWM6VGF4VG90YWw+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42MDwvY2JjOlRheEFtb3VudD4KICA8Y2FjOlRheFN1YnRvdGFsPgogICA8Y2JjOlRheGFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjAwPC9jYmM6VGF4YWJsZUFtb3VudD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjYwPC9jYmM6VGF4QW1vdW50PgogICA8Y2FjOlRheENhdGVnb3J5PgogICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MzA1Ij5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTU8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MTUzIj5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6VGF4Q2F0ZWdvcnk+CiAgPC9jYWM6VGF4U3VidG90YWw+CiA8L2NhYzpUYXhUb3RhbD4KIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogIDxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuMDA8L2NiYzpMaW5lRXh0ZW5zaW9uQW1vdW50PgogIDxjYmM6VGF4RXhjbHVzaXZlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NC4wMDwvY2JjOlRheEV4Y2x1c2l2ZUFtb3VudD4KICA8Y2JjOlRheEluY2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuNjA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgPGNiYzpBbGxvd2FuY2VUb3RhbEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMDA8L2NiYzpBbGxvd2FuY2VUb3RhbEFtb3VudD4KICA8Y2JjOlByZXBhaWRBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjAwPC9jYmM6UHJlcGFpZEFtb3VudD4KICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjYwPC9jYmM6UGF5YWJsZUFtb3VudD4KIDwvY2FjOkxlZ2FsTW9uZXRhcnlUb3RhbD4KIDxjYWM6SW52b2ljZUxpbmU+CiAgPGNiYzpJRD4xPC9jYmM6SUQ+CiAgPGNiYzpJbnZvaWNlZFF1YW50aXR5IHVuaXRDb2RlPSJNT04iPjEuMDAwMDAwPC9jYmM6SW52b2ljZWRRdWFudGl0eT4KICA8Y2JjOkxpbmVFeHRlbnNpb25BbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjAwPC9jYmM6TGluZUV4dGVuc2lvbkFtb3VudD4KICA8Y2FjOlRheFRvdGFsPgogICA8Y2JjOlRheEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMzA8L2NiYzpUYXhBbW91bnQ+CiAgIDxjYmM6Um91bmRpbmdBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjMwPC9jYmM6Um91bmRpbmdBbW91bnQ+CiAgPC9jYWM6VGF4VG90YWw+CiAgPGNhYzpJdGVtPgogICA8Y2JjOk5hbWU+SXRlbSBOYW1lPC9jYmM6TmFtZT4KICAgPGNhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgICA8Y2JjOklEPlM8L2NiYzpJRD4KICAgIDxjYmM6UGVyY2VudD4xNS4wMDwvY2JjOlBlcmNlbnQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgPC9jYWM6SXRlbT4KICA8Y2FjOlByaWNlPgogICA8Y2JjOlByaWNlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOlByaWNlQW1vdW50PgogIDwvY2FjOlByaWNlPgogPC9jYWM6SW52b2ljZUxpbmU+CiA8Y2FjOkludm9pY2VMaW5lPgogIDxjYmM6SUQ+MjwvY2JjOklEPgogIDxjYmM6SW52b2ljZWRRdWFudGl0eSB1bml0Q29kZT0iTU9OIj4xLjAwMDAwMDwvY2JjOkludm9pY2VkUXVhbnRpdHk+CiAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgPGNhYzpUYXhUb3RhbD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjMwPC9jYmM6VGF4QW1vdW50PgogICA8Y2JjOlJvdW5kaW5nQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4zMDwvY2JjOlJvdW5kaW5nQW1vdW50PgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6SXRlbT4KICAgPGNiYzpOYW1lPkl0ZW0gTmFtZTwvY2JjOk5hbWU+CiAgIDxjYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogICAgPGNiYzpJRD5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTUuMDA8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogIDwvY2FjOkl0ZW0+CiAgPGNhYzpQcmljZT4KICAgPGNiYzpQcmljZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjIuMDA8L2NiYzpQcmljZUFtb3VudD4KICA8L2NhYzpQcmljZT4KIDwvY2FjOkludm9pY2VMaW5lPgo8L0ludm9pY2U+", "qr": "AR1NYXhpbXVtIFNwZWVkIFRlY2ggU3VwcGx5IExURAIPMzk5OTk5OTk5OTAwMDAzAxMyMDI0LTExLTI1VDEzOjQ1OjAwBAQ0LjYwBQMwLjYGLDlmaUZVZlp3clNpZ09MeHNmZ1BVVk1LZkxmUlY1akl3Zis5OGtpaWJEQm89B2BNRVlDSVFDeEw4NExENzBQcDgxQjlGbUlrSVFVU0tTTCtoYkg5dDlCenZWS0RRR0ZhZ0loQUl3RnZ4Smx2MHVKZFZjdFNKVnNmQ0xqQjNLdFhKZjFvS09aWHlZWGdRYWoIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABKFgimtEmvRSBK0zr9LgJAtVSCl8VPZz6cdr5X+MoTHo8vHNNlyW5Q6u7T8naPJqtGoTjJjaPIMJ4u17dSk/VHgJRzBFAiEAsT+JyGadZcJQpRtxrfJyLyirBou8V0dWNCu94j26oBsCID2ELgzyOAwEAM9LOZ3a6I8kDqApHcsTTdTvl6psL+tc", "response": { "validationResults": { "infoMessages": [ { "type": "INFO", "code": "XSD_ZATCA_VALID", "category": "XSD validation", "message": "Complied with UBL 2.1 standards in line with ZATCA specifications", "status": "PASS" }], "warningMessages": [], "errorMessages": [], "status": "PASS" }, "reportingStatus": "REPORTED" }, "created_at": "2024-12-06T21:43:27.000000Z" } }
- Check Invoice Compliance
use DigitalTunnel\Zatca\Facades\ZatcaConnect; ZatcaConnect::setInvoiceUuid('1935e4d3-0375-471d-835f-cc27ea9905ed') ->checkCompliance();
Response example of invoice compliance
{ "message": "ZATCA Invoice Compliance Check Details", "data": { "validationResults": { "infoMessages": [ { "type": "INFO", "code": "XSD_ZATCA_VALID", "category": "XSD validation", "message": "Complied with UBL 2.1 standards in line with ZATCA specifications", "status": "PASS" }], "warningMessages": [], "errorMessages": [], "status": "PASS" }, "reportingStatus": "REPORTED", "clearanceStatus": null, "qrSellertStatus": null, "qrBuyertStatus": null } }