tfx-bsl


Nametfx-bsl JSON
Version 1.15.1 PyPI version JSON
download
home_pagehttps://www.tensorflow.org/tfx
Summarytfx_bsl (TFX Basic Shared Libraries) contains libraries shared by many TFX (TensorFlow eXtended) libraries and components.
upload_time2024-04-24 21:33:52
maintainerNone
docs_urlNone
authorGoogle LLC
requires_python<4,>=3.9
licenseApache 2.0
keywords tfx bsl
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TFX Basic Shared Libraries

[![Python](https://img.shields.io/badge/python%7C3.9%7C3.10%7C3.11-blue)](https://github.com/tensorflow/tfx-bsl)
[![PyPI](https://badge.fury.io/py/tfx-bsl.svg)](https://badge.fury.io/py/tfx-bsl)

TFX Basic Shared Libraries (`tfx_bsl`) contains libraries shared by many
[TensorFlow eXtended (TFX)](https://www.tensorflow.org/tfx) components.

__Only symbols exported by sub-modules under `tfx_bsl/public` are intended for
direct use by TFX users__, including by standalone TFX library (e.g. TFDV, TFMA,
TFT) users, TFX pipeline authors and TFX component authors. Those APIs will
become stable and follow semantic versioning once `tfx_bsl` goes beyond `1.0`.

APIs under other directories should be considered internal to TFX
(and therefore there is no backward or forward compatibility guarantee for
them).

Each minor version of a TFX library or TFX itself, if it needs to
depend on `tfx_bsl`, will depend on a specific minor version of it (e.g.
`tensorflow_data_validation` 0.14.\* will depend on, and only work with,
`tfx_bsl` 0.14.\*)

## Installing from PyPI

`tfx_bsl` is available as a [PyPI package](https://pypi.org/project/tfx-bsl/).

```bash
pip install tfx-bsl
```

### Nightly Packages

TFX-BSL also hosts nightly packages at https://pypi-nightly.tensorflow.org on
Google Cloud. To install the latest nightly package, please use the following
command:

```bash
pip install --extra-index-url https://pypi-nightly.tensorflow.org/simple tfx-bsl
```

This will install the nightly packages for the major dependencies of TFX-BSL
such as TensorFlow Metadata (TFMD).

However it is a dependency of many TFX components and usually as a user you
don't need to install it directly.

## Build with Docker

If you want to build a TFX component from the master branch, past the latest
release, you may also have to build the latest `tfx_bsl`, as that TFX component
might have depended on new features introduced past the latest `tfx_bsl`
release.

Building from Docker is the recommended way to build `tfx_bsl` under Linux,
and is continuously tested at Google.

### 1. Install Docker

Please first install [`docker`](https://docs.docker.com/install/) and
[`docker-compose`](https://docs.docker.com/compose/install/) by following the
directions.

### 2. Clone the `tfx_bsl` repository

```shell
git clone https://github.com/tensorflow/tfx-bsl
cd tfx-bsl
```

Note that these instructions will install the latest master branch of `tfx-bsl`.
If you want to install a specific branch (such as a release branch), pass
`-b <branchname>` to the `git clone` command.

### 3. Build the pip package

Then, run the following at the project root:

```bash
sudo docker-compose build manylinux2010
sudo docker-compose run -e PYTHON_VERSION=${PYTHON_VERSION} manylinux2010
```
where `PYTHON_VERSION` is one of `{39}`.

A wheel will be produced under `dist/`.

### 4. Install the pip package

```shell
pip install dist/*.whl
```

## Build from source

### 1. Prerequisites

#### Install NumPy

If NumPy is not installed on your system, install it now by following [these
directions](https://www.scipy.org/scipylib/download.html).

#### Install Bazel

If Bazel is not installed on your system, install it now by following [these
directions](https://bazel.build/versions/master/docs/install.html).


### 2. Clone the `tfx_bsl` repository

```shell
git clone https://github.com/tensorflow/tfx-bsl
cd tfx-bsl
```

Note that these instructions will install the latest master branch of `tfx_bsl`
If you want to install a specific branch (such as a release branch),
pass `-b <branchname>` to the `git clone` command.

### 3. Build the pip package

`tfx_bsl` wheel is Python version dependent -- to build the pip package that
works for a specific Python version, use that Python binary to run:
```shell
python setup.py bdist_wheel
```

You can find the generated `.whl` file in the `dist` subdirectory.

### 4. Install the pip package

```shell
pip install dist/*.whl
```

## Supported platforms

`tfx_bsl` is tested on the following 64-bit operating systems:

  * macOS 10.12.6 (Sierra) or later.
  * Ubuntu 20.04 or later.

## Compatible versions

The following table is the `tfx_bsl` package versions that are compatible with
each other. This is determined by our testing framework, but other *untested*
combinations may also work.

tfx-bsl                                                                         | apache-beam[gcp] | pyarrow  | tensorflow        | tensorflow-metadata | tensorflow-serving-api |
------------------------------------------------------------------------------- | -----------------| ---------|-------------------|---------------------|------------------------|
[GitHub master](https://github.com/tensorflow/tfx-bsl/blob/master/RELEASE.md)   | 2.47.0           | 10.0.0   | nightly (2.x)     | 1.15.0              | 2.15.1                 |
[1.15.1](https://github.com/tensorflow/tfx-bsl/blob/v1.15.1/RELEASE.md)         | 2.47.0           | 10.0.0   | 2.15              | 1.15.0              | 2.15.1
[1.15.0](https://github.com/tensorflow/tfx-bsl/blob/v1.15.0/RELEASE.md)         | 2.47.0           | 10.0.0   | 2.15              | 1.15.0              | 2.15.1
[1.14.0](https://github.com/tensorflow/tfx-bsl/blob/v1.14.0/RELEASE.md)         | 2.47.0           | 10.0.0   | 2.13              | 1.14.0              | 2.13.0                 |
[1.13.0](https://github.com/tensorflow/tfx-bsl/blob/v1.13.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 2.12              | 1.13.1              | 2.9.0                  |
[1.12.0](https://github.com/tensorflow/tfx-bsl/blob/v1.12.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 2.11              | 1.12.0              | 2.9.0                  |
[1.11.0](https://github.com/tensorflow/tfx-bsl/blob/v1.11.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 1.15 / 2.10       | 1.11.0              | 2.9.0                  |
[1.10.0](https://github.com/tensorflow/tfx-bsl/blob/v1.10.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 1.15 / 2.9        | 1.10.0              | 2.9.0                  |
[1.9.0](https://github.com/tensorflow/tfx-bsl/blob/v1.9.0/RELEASE.md)           | 2.38.0           | 5.0.0    | 1.15 / 2.9        | 1.9.0               | 2.9.0                  |
[1.8.0](https://github.com/tensorflow/tfx-bsl/blob/v1.8.0/RELEASE.md)           | 2.38.0           | 5.0.0    | 1.15 / 2.8        | 1.8.0               | 2.8.0                  |
[1.7.0](https://github.com/tensorflow/tfx-bsl/blob/v1.7.0/RELEASE.md)           | 2.36.0           | 5.0.0    | 1.15 / 2.8        | 1.7.0               | 2.8.0                  |
[1.6.0](https://github.com/tensorflow/tfx-bsl/blob/v1.6.0/RELEASE.md)           | 2.35.0           | 5.0.0    | 1.15 / 2.7        | 1.6.0               | 2.7.0                  |
[1.5.0](https://github.com/tensorflow/tfx-bsl/blob/v1.4.0/RELEASE.md)           | 2.34.0           | 5.0.0    | 1.15 / 2.7        | 1.5.0               | 2.7.0                  |
[1.4.0](https://github.com/tensorflow/tfx-bsl/blob/v1.4.0/RELEASE.md)           | 2.31.0           | 5.0.0    | 1.15 / 2.6        | 1.4.0               | 2.6.0                  |
[1.3.0](https://github.com/tensorflow/tfx-bsl/blob/v1.3.0/RELEASE.md)           | 2.31.0           | 2.0.0    | 1.15 / 2.6        | 1.2.0               | 2.6.0                  |
[1.2.0](https://github.com/tensorflow/tfx-bsl/blob/v1.2.0/RELEASE.md)           | 2.31.0           | 2.0.0    | 1.15 / 2.5        | 1.2.0               | 2.5.1                  |
[1.1.0](https://github.com/tensorflow/tfx-bsl/blob/v1.1.0/RELEASE.md)           | 2.29.0           | 2.0.0    | 1.15 / 2.5        | 1.1.0               | 2.5.1                  |
[1.0.0](https://github.com/tensorflow/tfx-bsl/blob/v1.0.0/RELEASE.md)           | 2.29.0           | 2.0.0    | 1.15 / 2.5        | 1.0.0               | 2.5.1                  |
[0.30.0](https://github.com/tensorflow/tfx-bsl/blob/v0.30.0/RELEASE.md)         | 2.28.0           | 2.0.0    | 1.15 / 2.4        | 0.30.0              | 2.4.0                  |
[0.29.0](https://github.com/tensorflow/tfx-bsl/blob/v0.29.0/RELEASE.md)         | 2.28.0           | 2.0.0    | 1.15 / 2.4        | 0.29.0              | 2.4.0                  |
[0.28.0](https://github.com/tensorflow/tfx-bsl/blob/v0.28.0/RELEASE.md)         | 2.28.0           | 2.0.0    | 1.15 / 2.4        | 0.28.0              | 2.4.0                  |
[0.27.1](https://github.com/tensorflow/tfx-bsl/blob/v0.27.1/RELEASE.md)         | 2.27.0           | 2.0.0    | 1.15 / 2.4        | 0.27.0              | 2.4.0                  |
[0.27.0](https://github.com/tensorflow/tfx-bsl/blob/v0.27.0/RELEASE.md)         | 2.27.0           | 2.0.0    | 1.15 / 2.4        | 0.27.0              | 2.4.0                  |
[0.26.1](https://github.com/tensorflow/tfx-bsl/blob/v0.26.1/RELEASE.md)         | 2.25.0           | 0.17.0   | 1.15 / 2.3        | 0.27.0              | 2.3.0                  |
[0.26.0](https://github.com/tensorflow/tfx-bsl/blob/v0.26.0/RELEASE.md)         | 2.25.0           | 0.17.0   | 1.15 / 2.3        | 0.27.0              | 2.3.0                  |

            

Raw data

            {
    "_id": null,
    "home_page": "https://www.tensorflow.org/tfx",
    "name": "tfx-bsl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.9",
    "maintainer_email": null,
    "keywords": "tfx bsl",
    "author": "Google LLC",
    "author_email": "tensorflow-extended-dev@googlegroups.com",
    "download_url": "https://github.com/tensorflow/tfx-bsl/tags",
    "platform": null,
    "description": "# TFX Basic Shared Libraries\n\n[![Python](https://img.shields.io/badge/python%7C3.9%7C3.10%7C3.11-blue)](https://github.com/tensorflow/tfx-bsl)\n[![PyPI](https://badge.fury.io/py/tfx-bsl.svg)](https://badge.fury.io/py/tfx-bsl)\n\nTFX Basic Shared Libraries (`tfx_bsl`) contains libraries shared by many\n[TensorFlow eXtended (TFX)](https://www.tensorflow.org/tfx) components.\n\n__Only symbols exported by sub-modules under `tfx_bsl/public` are intended for\ndirect use by TFX users__, including by standalone TFX library (e.g. TFDV, TFMA,\nTFT) users, TFX pipeline authors and TFX component authors. Those APIs will\nbecome stable and follow semantic versioning once `tfx_bsl` goes beyond `1.0`.\n\nAPIs under other directories should be considered internal to TFX\n(and therefore there is no backward or forward compatibility guarantee for\nthem).\n\nEach minor version of a TFX library or TFX itself, if it needs to\ndepend on `tfx_bsl`, will depend on a specific minor version of it (e.g.\n`tensorflow_data_validation` 0.14.\\* will depend on, and only work with,\n`tfx_bsl` 0.14.\\*)\n\n## Installing from PyPI\n\n`tfx_bsl` is available as a [PyPI package](https://pypi.org/project/tfx-bsl/).\n\n```bash\npip install tfx-bsl\n```\n\n### Nightly Packages\n\nTFX-BSL also hosts nightly packages at https://pypi-nightly.tensorflow.org on\nGoogle Cloud. To install the latest nightly package, please use the following\ncommand:\n\n```bash\npip install --extra-index-url https://pypi-nightly.tensorflow.org/simple tfx-bsl\n```\n\nThis will install the nightly packages for the major dependencies of TFX-BSL\nsuch as TensorFlow Metadata (TFMD).\n\nHowever it is a dependency of many TFX components and usually as a user you\ndon't need to install it directly.\n\n## Build with Docker\n\nIf you want to build a TFX component from the master branch, past the latest\nrelease, you may also have to build the latest `tfx_bsl`, as that TFX component\nmight have depended on new features introduced past the latest `tfx_bsl`\nrelease.\n\nBuilding from Docker is the recommended way to build `tfx_bsl` under Linux,\nand is continuously tested at Google.\n\n### 1. Install Docker\n\nPlease first install [`docker`](https://docs.docker.com/install/) and\n[`docker-compose`](https://docs.docker.com/compose/install/) by following the\ndirections.\n\n### 2. Clone the `tfx_bsl` repository\n\n```shell\ngit clone https://github.com/tensorflow/tfx-bsl\ncd tfx-bsl\n```\n\nNote that these instructions will install the latest master branch of `tfx-bsl`.\nIf you want to install a specific branch (such as a release branch), pass\n`-b <branchname>` to the `git clone` command.\n\n### 3. Build the pip package\n\nThen, run the following at the project root:\n\n```bash\nsudo docker-compose build manylinux2010\nsudo docker-compose run -e PYTHON_VERSION=${PYTHON_VERSION} manylinux2010\n```\nwhere `PYTHON_VERSION` is one of `{39}`.\n\nA wheel will be produced under `dist/`.\n\n### 4. Install the pip package\n\n```shell\npip install dist/*.whl\n```\n\n## Build from source\n\n### 1. Prerequisites\n\n#### Install NumPy\n\nIf NumPy is not installed on your system, install it now by following [these\ndirections](https://www.scipy.org/scipylib/download.html).\n\n#### Install Bazel\n\nIf Bazel is not installed on your system, install it now by following [these\ndirections](https://bazel.build/versions/master/docs/install.html).\n\n\n### 2. Clone the `tfx_bsl` repository\n\n```shell\ngit clone https://github.com/tensorflow/tfx-bsl\ncd tfx-bsl\n```\n\nNote that these instructions will install the latest master branch of `tfx_bsl`\nIf you want to install a specific branch (such as a release branch),\npass `-b <branchname>` to the `git clone` command.\n\n### 3. Build the pip package\n\n`tfx_bsl` wheel is Python version dependent -- to build the pip package that\nworks for a specific Python version, use that Python binary to run:\n```shell\npython setup.py bdist_wheel\n```\n\nYou can find the generated `.whl` file in the `dist` subdirectory.\n\n### 4. Install the pip package\n\n```shell\npip install dist/*.whl\n```\n\n## Supported platforms\n\n`tfx_bsl` is tested on the following 64-bit operating systems:\n\n  * macOS 10.12.6 (Sierra) or later.\n  * Ubuntu 20.04 or later.\n\n## Compatible versions\n\nThe following table is the `tfx_bsl` package versions that are compatible with\neach other. This is determined by our testing framework, but other *untested*\ncombinations may also work.\n\ntfx-bsl                                                                         | apache-beam[gcp] | pyarrow  | tensorflow        | tensorflow-metadata | tensorflow-serving-api |\n------------------------------------------------------------------------------- | -----------------| ---------|-------------------|---------------------|------------------------|\n[GitHub master](https://github.com/tensorflow/tfx-bsl/blob/master/RELEASE.md)   | 2.47.0           | 10.0.0   | nightly (2.x)     | 1.15.0              | 2.15.1                 |\n[1.15.1](https://github.com/tensorflow/tfx-bsl/blob/v1.15.1/RELEASE.md)         | 2.47.0           | 10.0.0   | 2.15              | 1.15.0              | 2.15.1\n[1.15.0](https://github.com/tensorflow/tfx-bsl/blob/v1.15.0/RELEASE.md)         | 2.47.0           | 10.0.0   | 2.15              | 1.15.0              | 2.15.1\n[1.14.0](https://github.com/tensorflow/tfx-bsl/blob/v1.14.0/RELEASE.md)         | 2.47.0           | 10.0.0   | 2.13              | 1.14.0              | 2.13.0                 |\n[1.13.0](https://github.com/tensorflow/tfx-bsl/blob/v1.13.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 2.12              | 1.13.1              | 2.9.0                  |\n[1.12.0](https://github.com/tensorflow/tfx-bsl/blob/v1.12.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 2.11              | 1.12.0              | 2.9.0                  |\n[1.11.0](https://github.com/tensorflow/tfx-bsl/blob/v1.11.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 1.15 / 2.10       | 1.11.0              | 2.9.0                  |\n[1.10.0](https://github.com/tensorflow/tfx-bsl/blob/v1.10.0/RELEASE.md)         | 2.40.0           | 6.0.0    | 1.15 / 2.9        | 1.10.0              | 2.9.0                  |\n[1.9.0](https://github.com/tensorflow/tfx-bsl/blob/v1.9.0/RELEASE.md)           | 2.38.0           | 5.0.0    | 1.15 / 2.9        | 1.9.0               | 2.9.0                  |\n[1.8.0](https://github.com/tensorflow/tfx-bsl/blob/v1.8.0/RELEASE.md)           | 2.38.0           | 5.0.0    | 1.15 / 2.8        | 1.8.0               | 2.8.0                  |\n[1.7.0](https://github.com/tensorflow/tfx-bsl/blob/v1.7.0/RELEASE.md)           | 2.36.0           | 5.0.0    | 1.15 / 2.8        | 1.7.0               | 2.8.0                  |\n[1.6.0](https://github.com/tensorflow/tfx-bsl/blob/v1.6.0/RELEASE.md)           | 2.35.0           | 5.0.0    | 1.15 / 2.7        | 1.6.0               | 2.7.0                  |\n[1.5.0](https://github.com/tensorflow/tfx-bsl/blob/v1.4.0/RELEASE.md)           | 2.34.0           | 5.0.0    | 1.15 / 2.7        | 1.5.0               | 2.7.0                  |\n[1.4.0](https://github.com/tensorflow/tfx-bsl/blob/v1.4.0/RELEASE.md)           | 2.31.0           | 5.0.0    | 1.15 / 2.6        | 1.4.0               | 2.6.0                  |\n[1.3.0](https://github.com/tensorflow/tfx-bsl/blob/v1.3.0/RELEASE.md)           | 2.31.0           | 2.0.0    | 1.15 / 2.6        | 1.2.0               | 2.6.0                  |\n[1.2.0](https://github.com/tensorflow/tfx-bsl/blob/v1.2.0/RELEASE.md)           | 2.31.0           | 2.0.0    | 1.15 / 2.5        | 1.2.0               | 2.5.1                  |\n[1.1.0](https://github.com/tensorflow/tfx-bsl/blob/v1.1.0/RELEASE.md)           | 2.29.0           | 2.0.0    | 1.15 / 2.5        | 1.1.0               | 2.5.1                  |\n[1.0.0](https://github.com/tensorflow/tfx-bsl/blob/v1.0.0/RELEASE.md)           | 2.29.0           | 2.0.0    | 1.15 / 2.5        | 1.0.0               | 2.5.1                  |\n[0.30.0](https://github.com/tensorflow/tfx-bsl/blob/v0.30.0/RELEASE.md)         | 2.28.0           | 2.0.0    | 1.15 / 2.4        | 0.30.0              | 2.4.0                  |\n[0.29.0](https://github.com/tensorflow/tfx-bsl/blob/v0.29.0/RELEASE.md)         | 2.28.0           | 2.0.0    | 1.15 / 2.4        | 0.29.0              | 2.4.0                  |\n[0.28.0](https://github.com/tensorflow/tfx-bsl/blob/v0.28.0/RELEASE.md)         | 2.28.0           | 2.0.0    | 1.15 / 2.4        | 0.28.0              | 2.4.0                  |\n[0.27.1](https://github.com/tensorflow/tfx-bsl/blob/v0.27.1/RELEASE.md)         | 2.27.0           | 2.0.0    | 1.15 / 2.4        | 0.27.0              | 2.4.0                  |\n[0.27.0](https://github.com/tensorflow/tfx-bsl/blob/v0.27.0/RELEASE.md)         | 2.27.0           | 2.0.0    | 1.15 / 2.4        | 0.27.0              | 2.4.0                  |\n[0.26.1](https://github.com/tensorflow/tfx-bsl/blob/v0.26.1/RELEASE.md)         | 2.25.0           | 0.17.0   | 1.15 / 2.3        | 0.27.0              | 2.3.0                  |\n[0.26.0](https://github.com/tensorflow/tfx-bsl/blob/v0.26.0/RELEASE.md)         | 2.25.0           | 0.17.0   | 1.15 / 2.3        | 0.27.0              | 2.3.0                  |\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "tfx_bsl (TFX Basic Shared Libraries) contains libraries shared by many TFX (TensorFlow eXtended) libraries and components.",
    "version": "1.15.1",
    "project_urls": {
        "Download": "https://github.com/tensorflow/tfx-bsl/tags",
        "Homepage": "https://www.tensorflow.org/tfx"
    },
    "split_keywords": [
        "tfx",
        "bsl"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0672483459e24e1dac6aa1b1ca7b183e4f5228ce48db9e213fbe425eddad1010",
                "md5": "13118ada1899d06c37e49720cc513bb8",
                "sha256": "efaaf34916d5782cc8adf4e2d301edb31d7cc413f6ddde9f67c029d6f65898b5"
            },
            "downloads": -1,
            "filename": "tfx_bsl-1.15.1-cp310-cp310-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "13118ada1899d06c37e49720cc513bb8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<4,>=3.9",
            "size": 24142112,
            "upload_time": "2024-04-24T21:33:52",
            "upload_time_iso_8601": "2024-04-24T21:33:52.525368Z",
            "url": "https://files.pythonhosted.org/packages/06/72/483459e24e1dac6aa1b1ca7b183e4f5228ce48db9e213fbe425eddad1010/tfx_bsl-1.15.1-cp310-cp310-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "893760ec78eb21a579096d08565727563282fd871b977349bc569a2fa0a35743",
                "md5": "371a8fd3bbbe0c7d1914e48b865623fd",
                "sha256": "e3b5d322d6527f498f6eb2ab43604ab2a06cf0ce48c64ff2f4d5cb046d6bf5a8"
            },
            "downloads": -1,
            "filename": "tfx_bsl-1.15.1-cp39-cp39-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "371a8fd3bbbe0c7d1914e48b865623fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<4,>=3.9",
            "size": 24142188,
            "upload_time": "2024-04-24T21:27:12",
            "upload_time_iso_8601": "2024-04-24T21:27:12.170395Z",
            "url": "https://files.pythonhosted.org/packages/89/37/60ec78eb21a579096d08565727563282fd871b977349bc569a2fa0a35743/tfx_bsl-1.15.1-cp39-cp39-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-24 21:33:52",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tensorflow",
    "github_project": "tfx-bsl",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tfx-bsl"
}
        
Elapsed time: 0.24266s