VibeFox iMile for OpenCart — Hilfe
Voraussetzungen
OpenCart: 3.0.x (getestet mit 3.0.5.0) oder 4.0.2 und neuer (getestet mit 4.1.0.3).
PHP: 8.0 oder neuer.
iMile-Tarif: die Preise, die Sie mit dem Vertriebsteam von iMile vereinbart haben. Sie geben sie in der Preistabelle in der Standardwährung Ihres Shops ein.
iMile-API-Konto (nur für die Live-Schätzung): Die Live-Schätzung nutzt die iMile-OpenAPI „Estimated order delivery costs“. Sie benötigen eine Customer ID und einen Secret key (den API-Schlüssel, den iMile zusammen mit Ihrer Customer ID ausstellt). Für einen Testkunden registrieren Sie sich im iMile-Developer-Portal (developer.imile.com). Produktionsschlüssel erhalten Sie von Ihrem iMile-Accountmanager. Wenn Sie nur die Preistabelle verwenden, benötigen Sie keine API-Schlüssel.
VibeFox-Lizenzschlüssel: wird auf vibefox.net gekauft. Ein Schlüssel funktioniert auf einer Domain.
Installation
Der Download ist eine einzige ZIP-Datei mit den Paketen für beide OpenCart-Versionen. Entpacken Sie sie auf Ihrem Computer. Sie enthält README.txt, das Paket für OpenCart 3 vfd_imile-oc3-(version).ocmod.zip und das Paket für OpenCart 4 vfd_imile.ocmod.zip. Installieren Sie nur das Paket für Ihre OpenCart-Version. Der Lizenzschlüssel ist für beide Versionen gleich.
OpenCart 3
1. Gehen Sie im Admin zu Extensions > Installer, klicken Sie auf Upload und wählen Sie die Datei vfd_imile-oc3-(version).ocmod.zip. Die Erweiterung fügt keine OCMOD-Modifikationen hinzu, daher müssen Sie Extensions > Modifications nicht aktualisieren. Statt des Installers können Sie den Inhalt des Ordners upload dieses Pakets auch in das Stammverzeichnis Ihres Shops kopieren.
2. Gehen Sie zu Extensions > Extensions, wählen Sie den Erweiterungstyp Shipping. Suchen Sie VibeFox iMile und klicken Sie auf Install (die grüne +-Schaltfläche).
3. Klicken Sie auf Edit (die Stift-Schaltfläche), um die Einstellungsseite zu öffnen.
4. Geben Sie Ihren VibeFox-Lizenzschlüssel in das Feld License key im Lizenzblock oben auf der Seite Edit ein und klicken Sie auf Activate (siehe Lizenzschlüssel).
5. Tragen Sie Ihre iMile-Preise in der Price table ein. Optional füllen Sie den Abschnitt Live rates (API) aus und aktivieren Live estimate (siehe Konfiguration). Aktivieren Sie Enable iMile und klicken Sie auf Save.
OpenCart 4
1. Gehen Sie im Admin zu Extensions > Installer, klicken Sie auf Upload und wählen Sie die Datei vfd_imile.ocmod.zip. Benennen Sie die Datei nicht um: OpenCart 4 entnimmt den Code der Erweiterung dem Dateinamen, und ein umbenanntes Paket funktioniert nicht.
2. Das Paket erscheint auf derselben Seite in der Liste der installierten Erweiterungen. Klicken Sie daneben auf Install (die grüne +-Schaltfläche).
3. Gehen Sie zu Extensions > Extensions und wählen Sie den Erweiterungstyp Shipping. Suchen Sie VibeFox iMile, klicken Sie auf Install (die grüne +-Schaltfläche) und dann auf Edit (die Stift-Schaltfläche).
4. Geben Sie den Lizenzschlüssel und die Einstellungen wie in den Schritten 4 und 5 für OpenCart 3 ein. Die Einstellungsseite und ihre Felder sind in beiden Versionen gleich.
Nach der Installation ist die Versandart deaktiviert, bis Sie Enable iMile einschalten und speichern. Wenn Sie die Erweiterung nach einer Deinstallation erneut installieren, werden die gespeicherten iMile-Einstellungen wieder verwendet.
Konfiguration
Alle Einstellungen befinden sich auf der Erweiterungsseite: Extensions > Extensions > Shipping > VibeFox iMile > Edit. Die Abschnitte sind links aufgelistet. Eine Schaltfläche Save speichert die gesamte Seite ohne Neuladen. Jedes Speichern löscht außerdem die zwischengespeicherten iMile-Schätzungen und Zugriffstoken. Nur Admin-Benutzer mit der Berechtigung zum Ändern dieser Erweiterung können die Einstellungen speichern.
Beim Speichern prüft die Erweiterung, ob Method title gültig ist (höchstens 64 Zeichen, ohne < > ; = # { }), ob die Preis-, Betrags- und Gewichtsfelder Zahlen von 0 oder mehr sind, ob Minimum weight (kg) nicht größer als Maximum weight (kg) ist, ob Sort order eine ganze Zahl ist und ob die Steuerklasse und die Geozone existieren. Andernfalls zeigt sie einen Fehler an und speichert nichts.
Warnungen erscheinen über den Einstellungen (und nach einem Speichern erneut), wenn Live estimate eingeschaltet ist, aber nicht funktionieren kann: die Customer ID oder der Secret key fehlt, die Versandstadt oder das Versandland fehlt (oder das Land ist kein iMile-Markt), es gibt keine Wechselkurse, oder die Preistabelle ist leer und es gibt keinen Preis für andere Länder. Eine Warnung erscheint auch, wenn der Shop keine Gewichtsklasse mit der Einheit kg hat und die Einheit der Standard-Gewichtsklasse der Erweiterung nicht bekannt ist: Produktgewichte werden dann als Kilogramm angenommen, daher fügen Sie unter System > Localisation > Weight Classes eine Gewichtsklasse kg hinzu.
Allgemein
Die Einstellungen gelten für jede Geozone. Sie können die Versandart unter Conditions auf eine Geozone beschränken oder unter Countries die Option Ignore shipping zones einschalten, um sie stattdessen auf eine Länderliste zu beschränken.
Enable iMile: blendet iMile an der Kasse ein oder aus. Standard: aus.
Method title: der Name der Versandart, den der Kunde im Warenkorb und an der Kasse sieht. Standard: iMile. Pflichtfeld.
Sort order: die Position von iMile unter den Versandarten an der Kasse. Eine ganze Zahl.
Live-Tarife (API) (optional)
Liefert iMile keine Schätzung (keine Schlüssel, noch keine Stadt eingegeben, Fehler, Zeitüberschreitung, kein Wechselkurs), wird die Preistabelle verwendet.
Live estimate: aktivieren Sie die Option, um die Versandkosten von iMile zu erhalten. Standard: aus. Ist die Live-Schätzung aus, wird während des Checkouts nichts an iMile gesendet.
Environment: Production (openapi.imile.com) (Standard) oder Test (test-openapi.52imile.cn). Testschlüssel funktionieren nur mit dem Testserver und liefern Testpreise.
Customer ID: der von iMile ausgestellte Kundencode (customerId), zum Beispiel C2102192601. Wenn Sie ihn löschen, wird auch der gespeicherte Secret key gelöscht.
Secret key: der geheime Schlüssel (API-Schlüssel), den iMile zusammen mit der Customer ID ausstellt. Er signiert die Anfragen. Nach dem Speichern bleibt das Feld leer und zeigt Saved — leave empty to keep it. Geben Sie einen neuen Wert nur ein, wenn Sie ihn ändern möchten.
Signature: wie die Anfragen signiert werden.
Ship-from country: das Land, aus dem Sie versenden. Die erste Option, Store country, verwendet das Land Ihres Shops. Die Liste enthält nur die Länder, für die die Erweiterung iMile-Ländercodes kennt.
Ship-from city: die Stadt, aus der Ihre Pakete versendet werden, geschrieben wie in der iMile-Städteliste (zum Beispiel Dubai, Riyadh). Für Live-Schätzungen erforderlich: OpenCart hat keine Stadt für den Shop, daher wird ohne dieses Feld nur die Preistabelle verwendet.
Ship-from province: optional, zum Beispiel Dubai oder Riyadh Province.
iMile service: der Auftragstyp, der an iMile gesendet wird: Delivery order (100) (Standard) oder Express order (1100). Express muss für Ihr Konto und Land freigeschaltet sein.
Goods category: die Art der Waren, die an iMile gemeldet wird: Normal goods (Standard), Sensitive (cosmetics, liquids...), With battery, Batteries / power banks, Documents oder Parcel.
Exchange rates: iMile schätzt in der Währung des Ziellandes. Geben Sie eine Zeile pro Währung mit dem Preis von 1 Einheit in der Standardwährung Ihres Shops ein, zum Beispiel „AED = 0.25“ oder „SAR = 0.24“. Für die Währung des Shops selbst wird kein Kurs benötigt. Ohne Kurs werden Schätzungen in dieser Währung nicht verwendet, stattdessen wird die Preistabelle genutzt. Derselbe Kurs rechnet auch den an iMile gemeldeten Warenwert um.
Preise (werden verwendet, wenn die Live-Schätzung aus ist, und als Ersatz, wenn iMile keine Schätzung liefert)
Geben Sie Ihren iMile-Tarif in der Standardwährung Ihres Shops ein, ohne Steuern. Ist er in AED, SAR oder einer anderen Währung, rechnen Sie ihn vorher um.
Price table: eine Zeile pro Zielland. Klicken Sie auf Add country, um eine Zeile hinzuzufügen, und auf die Schaltfläche × , um eine zu entfernen. Wählen Sie * All other countries für eine Zeile, die alle Länder ohne eigene Zeile abdeckt. Jede Zeile hat einen Base price und optionale Gewichtsspalten: XS ≤1 kg, S ≤2 kg, M ≤3 kg, L ≤5 kg und XL >5 kg. Eine leere (oder 0) Gewichtsspalte verwendet den Grundpreis. Ein Grundpreis von 0 bedeutet kostenlosen Versand in dieses Land. Sowohl „9.99“ als auch „9,99“ werden akzeptiert.
Price for countries not in the table: ein Preis in der Standardwährung des Shops. Er wird verwendet, wenn die Tabelle keine Zeile für das Zielland hat (und keine Zeile *), oder wenn die Zeile für dieses Gewicht keinen Preis hat. Lassen Sie das Feld leer, um die Versandart in diesem Fall auszublenden.
Price applies: wie der Preis berechnet wird.
Dieselbe Wahl gilt für die Live-Schätzung: Pro Bestellung sendet ein Paket mit dem gesamten Warenkorb; pro Artikel fragt sie für jedes unterschiedliche Paket an und multipliziert mit der Anzahl der Einheiten. Hat der Warenkorb mehr als 5 verschiedene Pakete, wird die Preistabelle verwendet.
Produktgewichte werden von ihrer Gewichtsklasse in OpenCart in Kilogramm umgerechnet, Abmessungen von ihrer Längenklasse in Zentimeter.
Bedingungen
Minimum weight (kg): blendet die Versandart unterhalb dieses Warenkorbgewichts aus. 0 bedeutet kein Limit (Standard).
Maximum weight (kg): blendet die Versandart oberhalb dieses Warenkorbgewichts aus. Standard: 30. 0 bedeutet kein Limit. Lassen Sie das Feld leer, werden 30 kg verwendet.
Minimum order amount: zeigt die Versandart nur an, wenn die Zwischensumme der versandpflichtigen Produkte (nach dem Gutschein, vor Steuern) diesen Betrag erreicht. Leer lassen, um sie immer anzuzeigen.
Free shipping from: die Zwischensumme der versandpflichtigen Produkte (nach dem Gutschein, vor Steuern), ab der die Lieferung mit iMile kostenlos ist. Leer lassen, um nie kostenlosen Versand anzubieten.
Tax class: die Steuerklasse der Versandkosten oder No tax (Standard). Wählen Sie No tax, wenn die Preise in der Tabelle und die iMile-Schätzungen bereits die MwSt. enthalten.
Geo zone: bietet iMile nur für Adressen in dieser Geozone an. All zones (Standard) bedeutet kein Limit. Die Geozone wird nicht geprüft, wenn Ignore shipping zones eingeschaltet ist. Geozonen werden unter System > Localisation > Geo Zones verwaltet.
Länder
Ignore shipping zones: ist die Option eingeschaltet, wird die Geo zone nicht geprüft, und iMile wird für die unten genannten Länder angeboten. Ist sie ausgeschaltet (Standard), gilt nur die Geo zone.
Countries: die erlaubten Zielländer. Leer lassen, um alle im Shop aktivierten Länder zu erlauben. Dieses Feld wird nur verwendet, wenn Ignore shipping zones eingeschaltet ist.
Erweitert
Debug log: schreibt Tarifberechnungen in storage/logs/vfd_imle_debug.log.php (unter OpenCart 4 system/storage/logs/vfd_imle_debug.log.php). Die Datei kann nicht über das Web gelesen werden. Es werden keine Schlüssel und keine Kundenadressen protokolliert. Fehlgeschlagene iMile-Anfragen werden immer protokolliert, auch wenn das Debug-Protokoll ausgeschaltet ist. Schalten Sie das Protokoll wieder aus, wenn Sie fertig sind. Erreicht die Datei 5 MB, wird sie nach vfd_imle_debug.old.log.php verschoben und ein neues Protokoll begonnen.
Log: zeigt die Größe und die neuesten Einträge des Debug-Protokolls. Klicken Sie auf Clear log, um es zu leeren.
Remove data on uninstall: ist die Option eingeschaltet, löscht die Deinstallation der Erweiterung die iMile-Einstellungen und das Protokoll. Ist sie ausgeschaltet (Standard), bleiben die Einstellungen für eine erneute Installation erhalten. Zwischengespeicherte Schätzungen und Zugriffstoken werden immer gelöscht.
Import / Export
Export: klicken Sie auf Download JSON, um die Einstellungen als JSON-Datei zu speichern. Der Secret key wird nicht exportiert.
Import: fügen Sie zuvor exportiertes JSON ein und klicken Sie auf Import, um die Einstellungen wiederherzustellen, zum Beispiel in einem anderen Shop. Die Werte werden wie bei einem normalen Speichern geprüft. Der gespeicherte Secret key bleibt erhalten.
So funktioniert es an der Kasse
Wenn OpenCart die Versandarten anzeigt, fragt es die Erweiterung nach dem iMile-Preis. Ist eine Geo zone festgelegt, Ignore shipping zones ausgeschaltet und die Adresse liegt außerhalb der Geozone, wird iMile nicht angeboten. Nur Produkte, bei denen Requires Shipping auf Yes steht, zählen: Andere Produkte erhöhen weder das Gewicht noch fließen sie in den Bestellwert ein. Danach prüft die Erweiterung die Bedingungen: erlaubte Länder (wenn Ignore shipping zones eingeschaltet ist), Warenkorbgewicht und minimaler Bestellwert. Der Bestellwert ist der Preis der versandpflichtigen Produkte nach dem Gutscheinrabatt und vor Steuern. Geschenkgutscheine, Bonuspunkte und Guthaben im Shop werden nicht berücksichtigt. Gilt kostenloser Versand, ist der Preis 0 und es wird keine Anfrage an iMile gesendet.
Mit eingeschalteter Live-Schätzung sendet die Erweiterung an iMile das Versandland, die Provinz und die Stadt, das Zielland, die Region, die Stadt und die Postleitzahl, das Warenkorbgewicht in kg, die Größe in cm³ (aus den Produktabmessungen), den Warenkorbwert, den iMile-Service und die Warenkategorie. Die Schätzung wird immer als Vorauszahlung angefordert, sodass Nachnahmegebühren nicht enthalten sind. Eine Live-Schätzung wird erst angefordert, nachdem der Kunde eine Lieferadresse mit Stadt eingegeben hat, und nur wenn jedes Produkt im Warenkorb ein Gewicht hat.
Jede Antwort wird 1 Stunde lang zwischengespeichert. Eine fehlgeschlagene Anfrage wird 5 Minuten lang zwischengespeichert. Nach einer Zeitüberschreitung oder einem Serverfehler wird iMile 2 Minuten lang nicht angefragt, nach abgelehnten Schlüsseln 5 Minuten lang, damit die Kasse bei jeder Aktualisierung nicht auf iMile wartet. Das API-Zeitlimit beträgt 12 Sekunden. Ein abgelaufenes Zugriffstoken wird automatisch erneuert.
Die Schätzung wird mit Ihren Wechselkursen in die Standardwährung des Shops umgerechnet. Liefert iMile keine verwendbare Schätzung (Schlüssel nicht gesetzt, Stadt noch nicht eingegeben, unbekannte Stadt, Fehler, Zeitüberschreitung, kein Wechselkurs), sieht der Kunde keinen Fehler, und der Preis aus der Tabelle wird verwendet. Hat die Tabelle auch keinen Preis, wird die Versandart ausgeblendet. Der Grund wird im Protokoll festgehalten. Der Preis wird in Ihrer Standardwährung berechnet, auf deren Dezimalstellen gerundet und dem Kunden in seiner Währung mit der Steuer der gewählten Tax class angezeigt.
In OpenCart 4 klickt der Kunde im Block der Versandart auf der Kassenseite auf Choose und wählt iMile im Fenster Shipping method options aus. Die Versandart funktioniert genauso wie in OpenCart 3.
Die Erweiterung berechnet nur Tarife. Sie erstellt keine iMile-Sendungen, druckt keine AWB-Etiketten, bestellt keine Abholungen, verfolgt keine Pakete, gleicht keine Nachnahmezahlungen ab und bietet keine Abholstellen oder Paketboxen an. Sie fügt den Bestellungen nichts hinzu: Die Bestellung zeigt den Namen der Versandart und die Versandkosten wie bei jeder anderen OpenCart-Versandart. Verwenden Sie für Sendungen das iMile-Portal.
Lizenzschlüssel
Die Erweiterung arbeitet mit einem VibeFox-Lizenzschlüssel von vibefox.net. Der Lizenzblock License — VibeFox iMile ist der erste Block auf der Seite Extensions > Extensions > Shipping > VibeFox iMile > Edit, über den Einstellungen. Fügen Sie den Schlüssel in License key ein und klicken Sie auf Activate. Danach zeigt der Block den Schlüssel maskiert, den Status (zum Beispiel das Datum, bis zu dem die Lizenz gültig ist, und Ihre Domain) sowie die Schaltflächen Check now, um den Status erneut zu prüfen, Change key, um einen anderen Schlüssel einzugeben, und Remove key, um den Schlüssel aus diesem Shop zu entfernen. Darunter stehen die Zeile Product: opencart-shipping-imile und der Link Manage licenses and domains in your account, der Ihr vibefox.net-Konto öffnet. Den Schlüssel können nur Admin-Benutzer mit der Berechtigung zum Ändern dieser Erweiterung ändern. Die Texte des Blocks folgen der Admin-Sprache (Englisch und Russisch sind enthalten).
Wird der Schlüssel nicht akzeptiert, nennt der Block den Grund, zum Beispiel Key not found, This key belongs to another product, Domain limit reached oder License expired on mit einem Datum. Nach einer Änderung der Shop-Adresse oder nachdem Sie einen Domain-Platz in Ihrem Konto freigegeben haben, klicken Sie auf Check now. Ist der Lizenzserver nicht erreichbar, arbeitet die Erweiterung mit dem zuletzt bekannten Status weiter.
Ein Schlüssel funktioniert auf einer Domain: der Shop-Adresse aus der OpenCart-Konfiguration. Das Entfernen des Schlüssels aus dem Shop gibt seinen Domain-Platz nicht frei. Geben Sie den Platz in Ihrem vibefox.net-Konto frei.
Ohne einen aktiven Schlüssel wird die iMile-Versandart Kunden an der Kasse nicht angezeigt, und es wird kein Tarif berechnet. Ein Admin-Benutzer, der im Admin im selben Browser angemeldet ist, sieht die Versandart im Shop weiterhin, markiert mit (unlicensed — visible to admins only), damit Sie die Erweiterung einrichten und testen können, bevor Sie einen Schlüssel kaufen. In OpenCart 4 ist diese Vorschau nicht verfügbar: Der Shop sieht die Admin-Anmeldung nicht, daher wird die Versandart ohne aktiven Schlüssel für alle ausgeblendet. Nachdem Sie die Seite Edit einmal geöffnet haben, erscheint ein Hinweis auf dem Dashboard im Admin. Schließen Sie ihn mit ×, um ihn 7 Tage lang auszublenden. Bestehende Bestellungen sind nicht betroffen.
Läuft eine Lizenz ab, arbeitet die Erweiterung weiter, aber Updates und Support benötigen eine Verlängerung. Der Status wird automatisch erneut geprüft, wenn Sie das Dashboard des Admins oder die Seite Edit öffnen: einmal täglich in den ersten 14 Tagen nach der Eingabe des Schlüssels, danach einmal pro Woche. Ein Cron-Job ist nicht nötig. Beim Deinstallieren der Erweiterung werden der Lizenzschlüssel und der Lizenzstatus immer entfernt.
Fehlerbehebung
iMile erscheint nicht an der Kasse: Prüfen Sie, dass die Lizenz aktiv ist und Enable iMile eingeschaltet ist. Prüfen Sie Geo zone, Ignore shipping zones und Countries, die Gewichtslimits und Minimum order amount. Prüfen Sie, dass das Land oder * All other countries eine Zeile in der Price table hat oder Price for countries not in the table gesetzt ist. Prüfen Sie, dass die Produkte Requires Shipping auf Yes haben.
Statt der iMile-Schätzung wird der Tabellenpreis angezeigt: Schalten Sie Debug log ein, laden Sie die Kasse neu und sehen Sie im Feld Log auf der Erweiterungsseite nach. Häufige Gründe: Live estimate ist aus, die Schlüssel fehlen, Ship-from city ist leer, der Kunde hat noch keine Stadt eingegeben, iMile kennt die Schreibweise der Stadt nicht, Produkte haben kein Gewicht, es gibt keinen Wechselkurs für die Zielwährung oder ein API-Fehler. Prüfen Sie auch die Warnungen über den Einstellungen.
„sign is invalid“ im Protokoll: Prüfen Sie den Secret key und probieren Sie dann Signature = SimpleKey.
Schlüssel werden abgelehnt: Prüfen Sie Customer ID, Secret key und Environment. Testschlüssel funktionieren nur mit dem Testserver.
Stadtnamen stimmen nicht überein: Stadtnamen müssen mit der iMile-Städteliste übereinstimmen. Entwickler können die Anfrage mit dem OpenCart-Ereignis vfd_imile/live_request anpassen und Ländercodes mit dem Ereignis vfd_imile/live_country_code.
Preise in der falschen Währung: Die Preistabelle ist in der Standardwährung des Shops. Rechnen Sie einen Tarif in AED, SAR oder MXN beim Eingeben um. Live-Schätzungen werden mit Exchange rates umgerechnet.
Versandkosten werden doppelt besteuert: Wenn Ihre Preise bereits die MwSt. enthalten, stellen Sie Tax class auf No tax.
Schätzungen wirken nach einer Änderung veraltet: Klicken Sie auf der Erweiterungsseite auf Save. Das löscht die zwischengespeicherten iMile-Schätzungen.
Die Seite zeigt „Warning: You do not have permission to modify VibeFox iMile!“: Ihre Admin-Benutzergruppe darf die Einstellungen nur ansehen. Geben Sie der Gruppe die Berechtigung zum Ändern für extension/shipping/vfd_imile (OpenCart 3) bzw. extension/vfd_imile/shipping/vfd_imile (OpenCart 4) unter System > Users > User Groups.
Deinstallation
Gehen Sie zu Extensions > Extensions, wählen Sie den Typ Shipping und klicken Sie neben VibeFox iMile auf Uninstall (die rote −-Schaltfläche). Der Lizenzschlüssel und der Lizenzstatus dieser Erweiterung werden immer entfernt. OpenCart setzt Enable iMile, Sort order, Tax class und Geo zone immer zurück. Die zwischengespeicherten Schätzungen und Zugriffstoken werden immer entfernt. Ist Remove data on uninstall eingeschaltet, werden auch die iMile-Einstellungen und das Debug-Protokoll gelöscht. Ist die Option ausgeschaltet, bleiben die übrigen Einstellungen erhalten und werden bei einer erneuten Installation wieder verwendet. Bestehende Bestellungen behalten ihre Versandart und ihre Kosten.
Um unter OpenCart 4 auch die Dateien der Erweiterung zu entfernen, gehen Sie nach der Deinstallation zu Extensions > Installer, klicken Sie in der Liste der installierten Erweiterungen neben VibeFox iMile auf Uninstall (die orangefarbene −-Schaltfläche) und dann auf Delete (die rote Papierkorb-Schaltfläche), um das hochgeladene Paket zu entfernen.
iMile ist eine Marke ihres jeweiligen Inhabers. Diese Erweiterung ist weder mit iMile verbunden noch wird sie von iMile unterstützt.
