4.9  Browser (Client) Oddities

This page explains several subtle behaviors in some Import and Export operations which apply only when certain browser or client types are involved.

       Topics on this Page

4.9.1  Safari Issues

Separators in Safari

Apple’s Safari does not support separators, but Smarky, Synkmark, Markster or BookMacster “fake” them as best we can.  We export Safari separators as a horizontal line of em-dashes, unless the bookmark’s parent is the Bookmarks Bar, then it is the pipe character (“|”).

Mapping into Safari’s Reading List

Beginning with Safari version 5.1, Safari has a third hard folder called Reading List.  The idea of this is similar to the Unsorted Bookmarks in Firefox (except that it has a name which makes a little more sense).  They are both intended to be a place where you might quickly drop bookmarks discovered while browsing the web that you would like to read later, and then either “sort” (where here we have mean categorize instead of alphabetize) into a regular folder or delete.

Therefore, during Import and Export operations, Smarky, Synkmark, Markster or BookMacster map Safari’s Reading List into its Reading/Unsorted hard folder, along with those of Firefox.  One issue, however, is that while Firefox allows folders (subfolders) in its Unsorted Bookmarks, Safari does not.  Therefore, when exporting to Safari, if a Reading List is found (indicating that the bookmarks of Safari 5.1 or later), any folders found in Reading/Unsorted are mapped into the root level of Safari instead of Safari’s Reading List.  If a Reading List is not found (indicating that the boomarks are of Safari version 5.0.x or earlier), then the contents of Reading/Unsorted is exported to your Default Parent you have indicated for Safari.

Sorting (Ordering) of the Reading List

When Safari displays its Reading List, it ignores the order imposed by Smarky, Synkmark, Markster or BookMacster and instead seems to display according to date added, with the more recent first.  Although we could probably override this behavior, we don’t.

4.9.2  Confusion between Google Chrome and Google Bookmarks

Google Inc. provides two separate products:

The Chrome web browser is a locally-installed browser app.  It replaces web browsers like Safari and Firefox.  Within Smarky, Synkmark, Markster or BookMacster, it is referred to as Chrome.

Google Bookmarks is an online web-based browser app, like Delicious.  Our apps supported Google Bookmarks until version 2.0.2, when we discovered that it was no longer technically feasible in OS X 10.11.

Further confusion is caused by the Chrome > Set up Sync… menu item in Chrome.  Using this feature syncs to other Chrome applications you may use on other Macs, but these bookmarks are not your Google Bookmarks.  They are stored separately.  Google does not provide any connection between the two.  In particular, Google does not provide a way to synchronize bookmarks between Chrome and Google Bookmarks.

4.9.3  Chrome, Canary and Chromium Issues

Similarity of Chrome, Canary, and Chromium

Chrome and Chromium are the same web browser built on the Chromium open-source code, simply with different names and file locations.  Google Chrome Canary, is the alpha or early adopter version of Google Chrome.  Therefore, the considerations in this section apply to all of them.  We call them the Chrom-ish browsers.

If you have more than one of Chrome, Canary, or Chromium installed, Smarky, Synkmark, Markster or BookMacster support importing and exporting among all of them, as separate browsers or clients.  In addition, BookMacster supports multiple Person user profiles.  Each browser/person is a separate client in BookMacster.

You could sync two or three of these Chrome-ish browsers’ together via a Google account, using their built-in syncing, but if you do that, be careful you don’t create a sync loop.

Sign In / Out

The Chrom-ish browsers (Chrome, Canary and Chromium) have a built-in sync which allows you to sync their bookmarks via a Google account among the Chrom-ish browsers on multiple Macs, PCs, Android and iOS devices over the internet.  If you are using this facility, and also syncing with Synkmark, Markster or BookMacster, make sure that you don’t create a sync loop.

To control your usage of this facility,

Read under Sign in.  If you are not signed in, you are not using the built-in Sync.  Otherwise, click Advanced sync settings… and observe the Bookmarks checkbox.

Loose Bookmarks vs. Enhanced Bookmarks

During the first half of 2015, the developers of the Chrom-ish browsers experimented on and off with what they called an Enhanced Bookmarks Manager.  As of this writing, 2015-06-26, it appears to be off, and not even available – setting the Enhanced Bookmarks Manager setting in chrome://flags to Enabled has no effect.  However, it is still available as an extension.

Whatever, if you use the Enhanced Bookmarks Manager, or if someday it comes back and becomes the only choice, BookMacster provides two optional settings which will make it sync more nicely with the more conventional bookmarks managers in Safari and Firefox.  The issue with the new interface is that the Other Bookmarks collection has been renamed to Folders and, as the name implies, it shows only the folders in it and hides “loose” bookmarks.  The loose bookmarks are actually still there, but the only way to see them is to click on All Bookmarks, which will show a lot of other bookmarks too.

The two optional settings described below are checkboxes in the per-Client Advanced Client Settings.

‘Don’t export loose bookmarks to ‘Folders’

If this checkbox is switched on, during exports, any loose bookmarks found in BookMacster’s Bookmarks Menu will be remapped to an alternate location instead of being exported to the browser’s’ Other Bookmarks/Folders.

Create a ‘Reading/Unsorted’

If this checkbox is switched on, during exports, if any items must be remapped (including but not limited to the loose bookmarks mentioned in the previous paragraph), BookMacster will create and export to Chrome a folder named ‘Reading/Unsorted’ and put all such items into it.  The idea is to mimic the Reading List in Safari, or the Unsorted Bookmarks in Firefox.  However, it is not an un-delete-able hard folder as Reading List and Unsorted Bookmarks.  It is in fact a regular soft folder which you could delete in Chrome, Canary or Chromium if you wanted to.

During a later export, if there are no such items which need to be remapped, BookMacster will delete the Reading/Unsorted folder that it created.  (Technically it will delete any folder named “Reading/Unsorted” in the browser’s Other Bookmarks/Folders.)

If you want to use this feature, you should not delete it yourself and not rename it in the browser becauses this will cause unexpected results.

Mobile Bookmarks

Smarky, Synkmark, Markster and BookMacster ignore but preserves Chrome’s Mobile Bookmarks.  Our idea is that you should use Mobile Bookmrks for bookmarks which you only want on your mobile device.

You should put bookmarks which you want synced in either Desktop Bookmarks or Other Bookmarks.  Chrome gives you a choice at the bottom of the popover.  Change “Mobile Bookmarks”, and whatever you change it to will become your new default new-bookmark location.

If you have already started syncing with Smarky, Synkmark, Markster or BookMacster, and want to move your Chrome bookmarks out of Mobile Bookmarks, do this…

Sometimes Need Your Help to Load a Profile

There is a pathological case in which Smarky, Synkmark, Markster or BookMacster or one of its Agents’ Workers will ask you to help a little by load a certain user profile so that it can import to or export from a Chrom-ish browser.  This will occur under the following conditions.

Once you load the profile, it will stay loaded until the browser quits, and will re-open automatically provided that you have a window open to this profile when quitting the browser.  In other words, this will not occur if you regularly use the profiles to which you are syncing.

We have requested that the Chrome developers provide a better facility for bookmarks syncing so that we may someday remove this annoyance.

4.9.4  OmniWeb Issues

Moving OmniWeb Items among its Collections

External identifiers of OmniWeb items are not unique among their three top-level collections – Favorites, Bookmarks Menu and My Shared Bookmarks.  Each of these collections can have an item numbered, for example, 57, and Smarky, Synkmark, Markster or BookMacster must therefore prepend a “collection identifier” to its identifier upon importing and remove it when exporting.

This sometimes causes little glitches.  For example, let’s say you have a bookmark in OmniWeb’s Personal Bookmarks that has been happily imported to and exported from a Bookmarkshelf document .  In such a document, it appears in the Bookmarks Menu since this is the equivalent of OmniWeb’s Personal Bookmarks.  Now, in OmniWeb, click menu > Bookmarks > Show Bookmarks Page, move this bookmark into Favorites.  Because it’s in a different collection now, OmniWeb must assign it a different identifier.  Now activate the Bookmarkshelf document and Import from OmniWeb.  Because it has a different identifier, the app will not recognize it as the one that was originally in the Personal Bookmarks/Bookmarks Menu, and will import it as a new bookmark, so now you’ll have a duplicate.

You can prevent the duplicate from being created by setting the Merge Keep control to Client or Bookmarkshelf and also checking on Merge URL.

OmniWeb’s bookmarks storage format was designed many years ago when the advantages of truly unique persistent identifiers were not as widely appreciated.  One hopes that if Omni Group continues development of OmniWeb, they will someday update update their bookmarks storage to realize this, as Opera Software did when they shipped Opera 9.5.

Shortcuts Associated with URLs

OmniWeb associates its shortcuts with URLs instead of with bookmarks.  This means that if you have, for example, two bookmarks to the same URL, one with a shortcut and one without a shortcut, and export OmniWeb, in OmniWeb they will both have the shortcut.  Then when you import back from OmniWeb, Smarky, Synkmark, Markster or BookMacster will apply the shortcut to both of them.  However, if you are importing from other Clients at the same time, this conflict can cause spurious changes or churn to be indicated in the Sync Log.

4.9.5  Firefox Issues

Multiple Profiles

Firefox supports multiple profiles on each Mac user account.  You may learn how to manage them in this Mozilla support article.  Unlike Chrome, Firefox may only be running one profile at a time.  Also, unlike Chrome, which puts the ‘Person’ profile name in the title bar of every window, in Firefox it is very difficult to determine what profile you are in, if you are not sure.  The only way is to click in the menu: Help > Troubleshooting Information, then look for Profile Folder and click Show in Finder.  From looking at the name of the folder it shows, you can usually get a clue to what profile you are in.  Of course, it may be easier to quit Firefox and then restart with the Profile Manager as indicated in that article, specifying the desired profile.

Same Tags apply to Duplicate Bookmarks

In Firefox, when you click menu Bookmarks > Manage Bookmarks and get the bookmarks Library window, it appears as though tags are associated with bookmarks, but they are not.  In Firefox, tags are actually associated with URLs.  In Smarky, Synkmark, Markster or BookMacster, tags are associated with bookmarks, just as they look.  To maintain the same content as you see in Firefox, when performing a Import from Firefox, the app creates the same tags for all bookmarks that have the same url.

If you don’t have any duplicate bookmarks (bookmarks with the same normalized URL), then this doesn’t matter, but if you do, it does.  For example, say that you have one or more bookmarks with the same normalized URL, and put a tag on, one of them, then Export to Firefox.  If you then inspect the content in Firefox’ Organize Bookmarks window, you will see that all of the several bookmarks have this tag.

Slow Exports while Firefox is Running

Firefox is quite slow at changing bookmarks, dreadfully slow when tags are involved, and apparently Firefox does all of this on its main thread, meaning that it beachballs you cannot do anything else in Firefox until it is done.  Usually, if you’re just adding a few bookmarks, it’s not a problem, but if, as is typical in a first export from Smarky, Synkmark, Markster or BookMacster, you’re changing thousands of items, it can take several minutes on a typical Mac.  New users don’t have our Firefox Sync extension installed at this point, so the app asks the user to quit Firefox and then, with Firefox out of the way, the app can export quickly.  However, in case you export many changes for some reason after installing our Firefox extension, while Firefox is running, the app will stop and advise you to quit Firefox first if it estimates that the change will take more than 1 minute.  This happens if there are more than several hundred changes or more.

(You can demonstrate the slowness of Firefox all by itself.  Put several thousand bookmarks into Firefox, open Show All Bookmarks (Library), select folder(s) containing several thousand bookmarks in aggregate, and and hit ‘delete’.  Firefox will beachball for several minutes, and show its Unresponsive Script warning sheet several times, citing Firefox’ Bookmark Service or Tagging Service.  This happens even if you have disabled all Extensions and restarted Firefox.)

Visit Count

Firefox keeps a visit count attribute for each bookmark, which, as the name implies, is supposed to increment each time a bookmark is visited in Firefox.  To see the visit count for a bookmark, display it in Firefox’ Show All Bookmarks (“Library”), then perform a secondary click on any column heading and switch on Visit Count in the contextual menu.  A Visit Count column will appear.

Smarky, Synkmark, Markster and BookMacster ignore Firefox’ visit count.  The visit count that you see in Firefox is the count of visits from Firefox only.  The visit count that you see in Smarky, Synkmark, Markster or BookMacster is the count of visits from the app plus visits from other synced browsers which properly support import and export of visit count: Camino and OmniWeb.  (The design of Firefox makes syncing to their visit count problematic.)

Firefox Sync

The publisher of Firefox, Mozilla, provides a facility called Firefox Sync.  This facility empowers you to sync your Firefox bookmarks and other data among Firefoxes on differenct devices.  If you see a button titled Set Up Sync… when you do as indicated in that link, you are not using Firefox Sync.  Otherwise, you are using Firefox Sync to sync bookmarks if the Bookmarks checkbox is switched on.

4.9.6  iCab Issues

The Wandering Bookmarks Bar

iCab allows you to designate any folder, anywhere in the hierarchy, to be your Favorites.  The items in the Favorites folder appear in a toolbar across the top of the window.  It is thus like the Bookmarks Bar or Bookmarks Toolbar present in other browsers.

Smarky, Synkmark, Markster or BookMacster treats this folder as a Bookmarks Bar, but does not allow it to be anywhere.  When you Import from iCab, the Favorites folder, wherever it is, is moved to be the first child of the root, as in all other browsers.  However, the app remembers where it came from, and when you export to iCab, it is restored to its original location.

4.9.7  Roccat Issues

Bookmarks storage in Roccat is primitive.  Obviously,

Bogs Down with too many bookmarks

Roccat may bog down if you export too many bookmarks to it.  If you export too many bookmarks to Roccat and find the performance to be unacceptable, you can remove all of the bookmarks from Roccat by doing this…

Note that, in its Bookmarks menu, Roccat allows you to visit the bookmarks of Safari, Firefox and Chrome.  Although you cannot add bookmarks to other browsers from within Roccat, this may be acceptable for some users.  You can add new bookmarks to Roccat and synchronize by, in your Settings > Clients, switching off the Export checkbox for Roccat, so that you import only.  Another solution is to not use the Bookmarks in Roccat at all, and instead access bookmarks directly, using Markster, or BookMacster directly.

No External Identifiers

Roccat does not provide unique, persistent external identifiers like other browsers do.  Smarky, Synkmark, Markster or BookMacster therefore creates its own pseudo-unique external identifiers based on the name, url and location of a bookmark.  The result is undue churn when importing from and exporting to Roccat.

4.9.8  Opera Issues

Sort by… Preference

Opera has options built in to sort bookmarks by name, address, description (comments), etc.  By default, it sorts all folders by name, according to its own rules (which are basically to sort everything). Therefore, in order to see sorting done according to the sorting settings in  the Bookmarkshelf, we must change this option to “Sort by my order”. This option is available to you in Opera’s toolbar…

However, you normally don’t have to do this, because Smarky, Synkmark, Markster or BookMacster changes this in Opera’s preference file whenever it executes an Export to the Opera Client associated with your Macintosh User Account.  This occurs if the Export Client is the Opera bookmarks of your Macintosh user account, or of another Macintosh user’s account, but not if the Export Client is a loose file.

Import/Export of items in Bookmarks kBar

The Bookmarks Bar in Opera looks  like the Bookmarks Bar in other Client browsers, but is in fact quite different for our purposes.  (If you don’t see a Bookmarks Bar in Opera, in the Opera first if a tab is showing your Bookmarks, close it; then in the menu click View > Toolbars > Bookmarks Bar.  It should be switched on (checked).)

In other browsers, the items in the Bookmarks Bar are unique items.  In Opera, the Bookmarks Bar and the Panel contain only references to items which are actually in other collections.  In this regard, they are like the Smart Playlists in iTunes and Smart Albums in iPhoto, which contain only references to songs and photos which are actually elsewhere in your iTunes and iPhoto Libraries.

In Opera’s Manage Bookmarks window, when you Show Info on an item and then check the box Show on bookmarks bar or Show in panel, you set a flag which tells Opera to display the item both in its “actual” location and in this other location.

So, a question arises when importing such an item: Should it be imported into the “actual” location, or moved into the Bookmarks Bar?  You answer this question by switching on the Import items marked “Show on bookmarks bar” into Bookmarks Bar checkbox in the Per-Client Advanced Client Settings for Opera.

If this box is checked on, items specified in Opera as Show on bookmarks bar will be imported into the Bookmarks Bar of the Bookmarkshelf instead of into the location corresponding to their location in Opera.  Whether or not you check this box depends on what is more important to you – preserving items in the Bookmarks Bar, or preserving items in their other location.  By default it is off, because this may cause churn during exports, in some pathological cases which we have not discovered yet.

Trash

Another unique feature of Opera’s bookmarks is the Trash, a special folder into which deleted bookmarks go.  Because it can be surprising to see these deleted bookmarks showing up in other browsers, the Per-Client Advanced Client Settings for Opera also has a checkbox which tells it to not import these items.

Trick to see Bookmarks in Opera’s Manage Bookmarks

In Opera, when you click Bookmarks > Manage Bookmarks, you get a window with a left sidebar.  The right pane will show the contents of whatever folder is selected in the left sidebar.  Opera does allow you to create bookmarks at the root/menu level, but the root/menu does not exist as an explicit folder in Opera, so they never show when scanning through the left sidebar with the ↑ and ↓ keys.  In order to see these “loose” bookmarks at the root/level menu, click with the mouse in the empty area at the bottom of the left sidebar, to deselect all folders in the left sidebar.  Poof!  The missing bookmarks appear!

Expanded/Collapsed Folders

Smarky, Synkmark, Markster or BookMacster remembers the Expanded/Collapsed state of folders when you save a document, and also exchanges this information with Opera which exhibits similar behavior in its Manage Bookmarks window.  (An exception is the Trash folder which, by Opera’s design, is always collapsed the next time you open it in Opera.)

4.9.9  Pinboard

Short version: After making changes in Pinboard on the web, sometimes you need to wait 15 minutes or so before importing the changes to Smarky, Synkmark, Markster or BookMacster, or exporting additional changes from BookMacster to Pinboard.

Long Version:  In order to reduce network traffic and improve performance, BookMacster maintains a local cache of bookmarks stored on the remote servers, such as Pinboard’s.  Prior to importing from or exporting to Pinboard, BookMacster sends a query (“posts/update”) to Pinboard asking when was the last time that bookmarks were changed on the remote server.  If it matches the time that the local cache was stored, BookMacster skips downloading data from Pinboard and uses what it has.  Well, on 2012 June 13 we found that a download didn’t occur as expected, and found that this was because Pinboard was returning a stale date to our “posts/update” query.  It did this for at least 10 minutes, but returned the correct date after 15 minutes.  If you don’t want to wait, click in the menu BookMacster > Empty Cache….

4.9.10  Shiira

A number of behaviors in Shiira are inexplicable.  The most noticeable is that it always reads your Safari bookmarks and puts them at the top of its Bookmarks Cabinet.  BookMacster does not do this, and exporting from BookMacster to Shiira cannot over-ride it.

4.9.11  Delicious Issues

Duplicate bookmarks

Delicious does not allow your account to have more than one bookmark with the same URL.  If you submit such a bookmark which duplicates an existing bookmark, the existing bookmark is deleted.

Editing URL in Delicious ⇒ Duplicate in BookMacster

This is because the external identifier used by Delicious is based on its URL.  Delicious also allows you to edit the URL of a bookmark within their web app.  If you do so, and then re-import from this Delicious account into a Bookmarkshelf(), BookMacster will therefore get a new identifier for this bookmark and treat it as a new bookmark that you just added.  Further, if this import is done with the Delete Unmatched Items option checked off, BookMacster will not delete the old bookmark, so you will have two bookmarks – one with the old URL, and one with the new URL.  This is appears to be a limitation in the design of Delicious.

feed:// Becomes http://

If you enter a bookmark with a URL that has a “feed://” scheme, Delicious will silently change the scheme to “http://”.

Slow or Interrupted Import or Export

Service Unavailable Messages.  When dealing with a web app, the proprietor (Delicious) can change their traffic shaping policies policies at any time.  Although BookMacster was designed to handle the policies which we have discovered at the time we last looked at them, changes could have occured, resulting in Timeout, Service Unavailable, or Please Retry Later messages from Delicious.  Refer to the article on our web page, near the bottom for the latest news.

Whitespace

Delicious will not allow consecutive spaces, or any leading or trailing whitespace, in bookmark names (titles) or comments (notes).  BookMacster collapses consecutive spaces in these attributes into one space, and leading or trailing whitespace is trimmed, before exporting (uploading) to Delicious.

4.9.12  Punctuation in Diigo Tags

Besides the fact that doublequotes serve as tag delimiters in Diigo, other punctuation characters will get changed.  Commas get changed to spaces, forward and back slashes, and backslash-escaped doublequotes (as in “"”) get changed to underscores.  This is just what we’ve noticed; there may be other substitutions.  These are not documented anywhere in Diigo documentation.

4.9.13  Separators in Camino

Because Camino does not endow its separators with external identifiers, Smarky, Synkmark, Markster and BookMacster create their own external identifier for separators imported from Camino based on it’s parent’s external identifier and its position.  The only noticeable effect of this, that we know of, is that if you move a separator in Camino (or move other items above it, causing its position to be changed), and then Import from this Client with Merge Keep set to Client, the corresponding separator in the app will be deleted and a new one created at the new location, instead of moving the existing one.  (Now you know you must be at the bottom of the page!)

4.9.14  Smart Keyword Searches

Firefox, iCab, Camino, Google Chrome, Opera all support Smart Keyword Searches.  However, they are implemented differently.

Smarky, Synkmark, Markster or BookMacster will omit Firefox Smart Keyword Search Bookmarks when exporting to any other browser except Camino, because they won’t like they do in Firefox.  (They don’t work in iCab because iCab does not support a Keyword or Shortcut attribute.)

4.9.15  Multiple Web App Accounts and the Mac OS X Keychain

If you have multiple accounts for a web app such as Delicious, each is a separate  Client as far as BookMacaster is concerned.  BookMacster discovers these accounts and populates them into the Import and Export popup menus in Settings > Clients by looking in your Mac OS X Keychain for passwords you have stored to the web apps’ domain, for example, Delicious.  Some of these may have been entered previously by Safari, Cocoalicious or another Keychain-aware app.  To remove old accounts that are no longer used, launch the Keychain Access application (/Applications/Utilities/Keychain Access.app), search for and delete them.

When connecting to a web app, if BookMacster finds a password which you have not previously authorized BookMacster to use, Keychain will ask your permission. If BookMacster does not find the password even in Keychain, BookMacster will ask you to to enter it into as secure field, and give you the option to store it in Keychain for future use by BookMacster or any other (Keychain-aware) app which is smart enough to look there for it.

4.9.16   Download Policy Options for Web Apps

During an Export operation to Delicious, Diigo or Pinboard, BookMacster should find out what bookmarks are currently on the server and merge them per your settings.  Ideally, BookMacster would ask the server to just tell me all of the bookmarks, if any, that have been added, updated or deleted since we last synced.  But this information is not always available, sometimes not reliable, and in its absence BookMacster should download all bookmarks from the server.  This can take several or many minutes if you have thousands of bookmarks on the remote server.  Therefore, BookMacster allows you to manually override the default automatic behavior.  To access these controls, open the advanced settings for the relevant Client, and look in the Special Settings section.

Note that these settings are only available for permanent Clients which you have specified in the Settings > Clients tab.  The temporary Clients which are used when you click in the menu: File > Import from Only or Esport to Only will always download all bookmarks from the server (in BookMacster 1.22.4 or later).

The setting Import > Never is not available because it would defeat the purpose of the whole operation.  If you don’t want a permanent client to Import, switch off its Import checkbox in Settings > Clients.

Better Reliability: Always Download during Exports

Over the years we have seen bugs in the various web apps come and go, and at some times the indication from the server telling BookMacster that nothing has changed, you can skip downloading turns out to be  not true.  For best reliability, if you don’t export to a web app very often, you may prefer to Always download during Exports.

Faster: Never Download during Exports

At the other extreme, to avoid the extended export times that can result if you have thousands of bookmarks to download, you may wish that BookMacster never download them.  This is technically OK if you use the web app only to visit bookmarks and always change (add, update, edit, modify, delete) bookmarks in BookMacster only, you may prefer to Never download during Exports.

If there are other clients, it might also make sense to switch off the Import checkbox for this client (see above)

This can be efficient, but will will cause bad results if you ever forget and in fact change bookmarks changed on the remote server, using the client’s web app, or some other tool, because this all happens effectively behind BookMacster’s back.  For example, if you switch on this checkbox and then add bookmarks to the remote server using the web app or some other service, these bookmarks will be deleted the next time that you export from BookMacster, even if you have Delete unmatched items switched off.  Or if you delete 100 bookmarks on the remote server, then export from BookMacster, BookMacster will re-upload them if they are still in BookMacster, or waste time re-deleting them if not.