From 278889ab35d57b5cfb2e7a88157d1004d9e4ea04 Mon Sep 17 00:00:00 2001 From: safaci2000 Date: Fri, 16 Feb 2024 15:48:34 +0000 Subject: [PATCH] deploy: 355807d03d5fdc9010e5e894e5d05a4ba30bf0c3 --- 404.html | 2 +- categories/index.html | 2 +- contributors/henk-verlinde/index.html | 2 +- contributors/index.html | 2 +- docs/gdg/backup_guide/index.html | 2 +- docs/gdg/cloud_configuration/index.html | 2 +- docs/gdg/configuration/index.html | 2 +- docs/gdg/developer/index.html | 2 +- docs/gdg/enterprise_guide/index.html | 2 +- docs/gdg/getting_started/index.html | 2 +- docs/gdg/index.html | 2 +- docs/gdg/installation/index.html | 8 ++++---- docs/gdg/other_commands/index.html | 2 +- docs/gdg/tools_guide/index.html | 2 +- docs/index.html | 2 +- docs/releases/gdg_0.4/index.html | 2 +- docs/releases/gdg_0.5/index.html | 2 +- docs/releases/index.html | 2 +- docs/templating/description/index.html | 2 +- docs/templating/index.html | 2 +- docs/tutorials/index.html | 2 +- docs/tutorials/library_elements/index.html | 2 +- docs/tutorials/orgs_auth/index.html | 2 +- index.html | 2 +- ...7c95a714473639509ecad6f5e87ba084022568a90ca16e5ffad.js | 4 ++-- tags/index.html | 2 +- 26 files changed, 30 insertions(+), 30 deletions(-) rename index.min.82d8f69742629cc1e05bee829672f1c6ee03c900c7ecfd1156601ed38f854da4023785d7eb7a97fba884c25af3f44e78b45afe05b3f2d7f461dfa8a03dd52e6d.js => index.min.375baccca6e1f8e9aeb226da3ad71560cf578eb1cbb6806cf07921dc2bbcce091fe1ee41826df7c95a714473639509ecad6f5e87ba084022568a90ca16e5ffad.js (99%) diff --git a/404.html b/404.html index b82d7c42..366b7e49 100644 --- a/404.html +++ b/404.html @@ -1,4 +1,4 @@ 404 Page not found - GDG

Page not found :(

The page you are looking for doesn't exist or has been moved.

\ No newline at end of file +

Page not found :(

The page you are looking for doesn't exist or has been moved.

\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 9c6de3ac..d041d819 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,4 +1,4 @@ Categories - GDG

Categories

\ No newline at end of file +

Categories

\ No newline at end of file diff --git a/contributors/henk-verlinde/index.html b/contributors/henk-verlinde/index.html index 1bc13151..75cdc4ab 100644 --- a/contributors/henk-verlinde/index.html +++ b/contributors/henk-verlinde/index.html @@ -1,4 +1,4 @@ Henk Verlinde - GDG

Henk Verlinde

Creator of Hyas.

@HenkVerlinde

\ No newline at end of file +

Henk Verlinde

Creator of Hyas.

@HenkVerlinde

\ No newline at end of file diff --git a/contributors/index.html b/contributors/index.html index 42dce4e8..4790afe4 100644 --- a/contributors/index.html +++ b/contributors/index.html @@ -1,4 +1,4 @@ Contributors - GDG

Contributors

The Doks contributors.

\ No newline at end of file +

Contributors

The Doks contributors.

\ No newline at end of file diff --git a/docs/gdg/backup_guide/index.html b/docs/gdg/backup_guide/index.html index 964295a6..2bcebce8 100644 --- a/docs/gdg/backup_guide/index.html +++ b/docs/gdg/backup_guide/index.html @@ -88,4 +88,4 @@ ./bin/gdg backup users download -- Lists all known users ./bin/gdg backup users upload -- Export all users (Not yet supported) ./bin/gdg backup users clear -- Delete all known users except admin -
← Cloud Configuration
Tools Guide →
\ No newline at end of file +
← Cloud Configuration
Tools Guide →
\ No newline at end of file diff --git a/docs/gdg/cloud_configuration/index.html b/docs/gdg/cloud_configuration/index.html index 13130c5f..c7840c9d 100644 --- a/docs/gdg/cloud_configuration/index.html +++ b/docs/gdg/cloud_configuration/index.html @@ -45,4 +45,4 @@ ... storage: any_label ... -

So given the bucket name of foo with a prefix of bar with the output_path configured as testing_data the connections will be imported to:

s3://foo/bar/testing_data/connections/ and exported from the same location. If you need it to be in a different location you can update the prefix accordingly but at destination will follow the typical app patterns.

← Configuration
Backup Commands Guide →
\ No newline at end of file +

So given the bucket name of foo with a prefix of bar with the output_path configured as testing_data the connections will be imported to:

s3://foo/bar/testing_data/connections/ and exported from the same location. If you need it to be in a different location you can update the prefix accordingly but at destination will follow the typical app patterns.

← Configuration
Backup Commands Guide →
\ No newline at end of file diff --git a/docs/gdg/configuration/index.html b/docs/gdg/configuration/index.html index 85b7ec49..a25ea258 100644 --- a/docs/gdg/configuration/index.html +++ b/docs/gdg/configuration/index.html @@ -149,4 +149,4 @@

NOTE: Complex data type are not supported, so if the value is an array it can’t be currently set.

Building/Running the app

Running it then should be as simple as:

$ task build_all
 $ ./bin/gdg  ## main binary
 $ ./bin/gdg-generate  ## Dashboard Templating engine
-

Requires task to be installed locally

← Getting Started
Cloud Configuration →
\ No newline at end of file +

Requires task to be installed locally

← Getting Started
Cloud Configuration →
\ No newline at end of file diff --git a/docs/gdg/developer/index.html b/docs/gdg/developer/index.html index 0af0a5a6..d5a22438 100644 --- a/docs/gdg/developer/index.html +++ b/docs/gdg/developer/index.html @@ -30,4 +30,4 @@

Alternatively if you have a more recent version of Go.

go install github.com/goreleaser/goreleaser@latest
 

export your GITHUB_TOKEN.

export GITHUB_TOKEN="secret"
 

git tag v0.1.0 -goreleaser release

NOTE: CI/CD pipeline should do all this automatically. make release-snapshot is used to test the release build process. Once a build is tagged all artifacts should be built automatically and attached to the github release page.

NOTE: mac binary are not signed so will likely complain.

← Other Commands
version v0.5 →
\ No newline at end of file +goreleaser release

NOTE: CI/CD pipeline should do all this automatically. make release-snapshot is used to test the release build process. Once a build is tagged all artifacts should be built automatically and attached to the github release page.

NOTE: mac binary are not signed so will likely complain.

← Other Commands
version v0.5 →
\ No newline at end of file diff --git a/docs/gdg/enterprise_guide/index.html b/docs/gdg/enterprise_guide/index.html index b9fe63b9..3ac4d203 100644 --- a/docs/gdg/enterprise_guide/index.html +++ b/docs/gdg/enterprise_guide/index.html @@ -34,4 +34,4 @@ │ 712 │ t5xBsTQ4k │ PERMISSION--> │ Edit │ │ sa-gdg-authscope-test │ │ │ 712 │ t5xBsTQ4k │ PERMISSION--> │ Query │ │ authscope_team_arm │ │ └─────┴───────────┴──────────────────────────────────────────┴──────────────────────────┴────────────────────┴───────────────────────┴────────────────────────────────────────────┘ -
← Tools Guide
Other Commands →
\ No newline at end of file +
← Tools Guide
Other Commands →
\ No newline at end of file diff --git a/docs/gdg/getting_started/index.html b/docs/gdg/getting_started/index.html index d0dae2ca..3503699b 100644 --- a/docs/gdg/getting_started/index.html +++ b/docs/gdg/getting_started/index.html @@ -75,4 +75,4 @@ | └── cluster-scaling.json └── Infrastructure └── aws-ecs.json -

You can execute ./bin/gdg dash export to upload the local dashboards to your Grafana. Afterwards, you can try running ./bin/gdg dash list in order to confirm that your dashboards were uploaded successfully.

← Organization and Authentication
Configuration →
\ No newline at end of file +

You can execute ./bin/gdg dash export to upload the local dashboards to your Grafana. Afterwards, you can try running ./bin/gdg dash list in order to confirm that your dashboards were uploaded successfully.

← Organization and Authentication
Configuration →
\ No newline at end of file diff --git a/docs/gdg/index.html b/docs/gdg/index.html index 52d55fca..cdab8839 100644 --- a/docs/gdg/index.html +++ b/docs/gdg/index.html @@ -9,4 +9,4 @@ Releases
  • \ No newline at end of file +Tutorials
    \ No newline at end of file diff --git a/docs/gdg/installation/index.html b/docs/gdg/installation/index.html index a4978fd5..ab50f5b8 100644 --- a/docs/gdg/installation/index.html +++ b/docs/gdg/installation/index.html @@ -37,7 +37,7 @@ - ./exports:/app/exports ## doesn't need to be /app/exports but you should export the destination of where exports are being written out to.

    From the CLI:

    docker run -it --rm -v $(pwd)/config:/app/config -v $(pwd)/exports:/app/exports ghcr.io/esnet/gdg:latest  ds --help
     

    Installing via Go

    If you have go install you may run the following command to install gdg. Keep in mind there are two binaries you may install.


    gdg

    go install github.com/esnet/gdg/cmd/gdg@latest  #for latest
    -go install github.com/esnet/gdg@v0.5.3  #for a specific version
    -

    You can verify the version by running gdg version.

    gdg-generate

    go install github.com/esnet/gdg/cmd/gdg-generate@latest  #for latest
    -go install github.com/esnet/gdg@v0.5.3  #for a specific version
    -

    Configuration

    You can then create a simple configuration using gdg tools ctx new which will do a best effort to guide to setup a basic config that will get you up and going or read the more detailed documentation that can be found here

    NOTE: wizard doesn’t currently support ALL features but it should help you get a head start.

    Templating Tool →
    \ No newline at end of file +go install github.com/esnet/gdg/cmd/gdg@v0.5.3 #for a specific version +

    You can verify the version by running gdg version.

    gdg-generate

    go install github.com/esnet/gdg/cmd/gen@latest  #for latest
    +go install github.com/esnet/gdg/cmd/gen@v0.5.3  #for a specific version
    +

    Configuration

    You can then create a simple configuration using gdg tools ctx new which will do a best effort to guide to setup a basic config that will get you up and going or read the more detailed documentation that can be found here

    NOTE: wizard doesn’t currently support ALL features but it should help you get a head start.

    Templating Tool →
    \ No newline at end of file diff --git a/docs/gdg/other_commands/index.html b/docs/gdg/other_commands/index.html index ece6c9c5..50285d12 100644 --- a/docs/gdg/other_commands/index.html +++ b/docs/gdg/other_commands/index.html @@ -36,4 +36,4 @@ Go Version: go1.18 OS / Arch: darwin amd64 -
    ← Enterprise User Guide
    Developer Guide →
    \ No newline at end of file +
    ← Enterprise User Guide
    Developer Guide →
    \ No newline at end of file diff --git a/docs/gdg/tools_guide/index.html b/docs/gdg/tools_guide/index.html index 709bb078..c0525599 100644 --- a/docs/gdg/tools_guide/index.html +++ b/docs/gdg/tools_guide/index.html @@ -60,4 +60,4 @@ ./bin/gdg tools devel srvinfo -- print grafana server info

    Organizations

    Command can use organizations or org to set the organizations in the configuration file.

    NOTE: this only manages top level of the orgs structure. Mainly used for a lazy man pattern.

    ./bin/gdg tools org set <orgID> -- Sets a given Org filter.  All Dashboards and Datasources etc are uploaded to the given Org only.
     

    Users

    CRUD is under the ‘backup’ command. The tools allows you to promote a given user to a grafana admin if you have the permission to do so.

    NOTE: admin user is always ignored.

    ./bin/gdg tools users promote -u user@foobar.com -- promotes the user to a grafana admin
    -
    ← Backup Commands Guide
    Enterprise User Guide →
    \ No newline at end of file +
    ← Backup Commands Guide
    Enterprise User Guide →
    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 640b5ce9..aca6d7ee 100644 --- a/docs/index.html +++ b/docs/index.html @@ -9,4 +9,4 @@ Releases
  • \ No newline at end of file +Tutorials
    \ No newline at end of file diff --git a/docs/releases/gdg_0.4/index.html b/docs/releases/gdg_0.4/index.html index ce28fb1d..41f46c38 100644 --- a/docs/releases/gdg_0.4/index.html +++ b/docs/releases/gdg_0.4/index.html @@ -24,4 +24,4 @@

    LibraryElements support added.

    Please see the usage guide here and a brief tutorial available here

    Folders Update

    Introducing a –use-filters. When enabled will only operate on folders configured. Default is to create/update/delete all folders in the grafana instance.

    Breaking Changes:

    SFTP support dropped.

    See the Cloud configuration section. Switched out the library we relied on, which means the auth has moved out of GDG config and relies on the system config.

    API SDK Changes:

    I have been trying to find a proper library to use so I’m not re-writing and reinventing the wheel so to speak.

    For reference, here are all the current “active” (active can be a relative term for some of these project) development I’m aware of.

    Final Choice:

    Although the Swagger/OpenAPI based version is not great, I’ve even ran into a few issues where the documented response does not match the result, it’s a lot more encompassing and allows further development without being as limited on upstream changes.

    DataModel Changes

    I’ve tried to utilize mostly the same endpoints to recreate the same behavior for all the various entities, but there is are some changes. For most use cases this shouldn’t matter. But you have been officially warned.

    Cloud Support

    The previous abstraction library used to provide S3, GS, SFTP has limited activity and introduced some security vulnerabilities. 0.4.X also -changes some of the cloud behavior. It relies on the system authentication rather than having the auth in the config file.

    Please see the related docs on how to configure your environment.

    As the Stow library was removed, SFTP has been dropped. The list of current supported cloud providers are: S3, GS, Azure.

    ← version v0.5
    \ No newline at end of file +changes some of the cloud behavior. It relies on the system authentication rather than having the auth in the config file.

    Please see the related docs on how to configure your environment.

    As the Stow library was removed, SFTP has been dropped. The list of current supported cloud providers are: S3, GS, Azure.

    ← version v0.5
    \ No newline at end of file diff --git a/docs/releases/gdg_0.5/index.html b/docs/releases/gdg_0.5/index.html index c553db95..012655e4 100644 --- a/docs/releases/gdg_0.5/index.html +++ b/docs/releases/gdg_0.5/index.html @@ -17,4 +17,4 @@ On this page ExpandCollapse

    version v0.5

    Release Notes for v0.5.2

    Changes

    Bug Fixes

    Developer Changes

    Release Notes for v0.5.1

    Release Date: 11/03/2023

    Changes

    Bug Fixes

    Developer Changes

    Notes on 0.5.x

    This is going to be a fairly big release and changing several of the expectations that GDG had before.

    The main push for this was to support organizations a bit better, and the only way to really do this correctly was to change the destination path of where the orgs are being saved. Every entity that supports organization will now be namespace by the org it belongs to. This will now allow GDG to manage connections and dashboards across multiple organizations.

    The other big change, is that most feature are now namespaced under either ‘backup’ or ’tools’ with the exception context which a GDG concept. The intent of the CLI was getting a bit murky. There is functionality to create a service account, modify a user permission and so on which is a good bit different from the initial intent of GDG which was to simply manage entities. Any additional features beyond the crud are under tools. This might be split into two different binaries later down the line but the separation helps clarify the intent.

    Datasources have also been deprecated in favor of ‘Connections’ to match the Grafana naming convention changes.

    Release Notes for v0.5.0

    Release Date: 09/01/2023

    Changes

    Technical Debt

    Bug Fixes

    Breaking Changes

    \ No newline at end of file +ExpandCollapse

    Release Notes for v0.5.2

    Changes

    Bug Fixes

    Developer Changes

    Release Notes for v0.5.1

    Release Date: 11/03/2023

    Changes

    Bug Fixes

    Developer Changes

    Notes on 0.5.x

    This is going to be a fairly big release and changing several of the expectations that GDG had before.

    The main push for this was to support organizations a bit better, and the only way to really do this correctly was to change the destination path of where the orgs are being saved. Every entity that supports organization will now be namespace by the org it belongs to. This will now allow GDG to manage connections and dashboards across multiple organizations.

    The other big change, is that most feature are now namespaced under either ‘backup’ or ’tools’ with the exception context which a GDG concept. The intent of the CLI was getting a bit murky. There is functionality to create a service account, modify a user permission and so on which is a good bit different from the initial intent of GDG which was to simply manage entities. Any additional features beyond the crud are under tools. This might be split into two different binaries later down the line but the separation helps clarify the intent.

    Datasources have also been deprecated in favor of ‘Connections’ to match the Grafana naming convention changes.

    Release Notes for v0.5.0

    Release Date: 09/01/2023

    Changes

    Technical Debt

    Bug Fixes

    Breaking Changes

    ← Developer Guide
    version v0.4 →
    \ No newline at end of file diff --git a/docs/releases/index.html b/docs/releases/index.html index e20530ad..9abbe1c6 100644 --- a/docs/releases/index.html +++ b/docs/releases/index.html @@ -9,4 +9,4 @@ Releases
  • \ No newline at end of file +Tutorials
    \ No newline at end of file diff --git a/docs/templating/description/index.html b/docs/templating/description/index.html index 155e8cfd..d5e3a74e 100644 --- a/docs/templating/description/index.html +++ b/docs/templating/description/index.html @@ -129,4 +129,4 @@ 2023-11-16 09:49:03 INF templating/templating.go:97 Creating a new template folder=General orgId=2 data="map[enabledlight:false lightsources:[sun moon lightbulb office lights] title:Bob Loves Candy]" 2023-11-16 09:49:03 INF templating/templating.go:100 Writing data to destination output=test/data/org_2/dashboards 2023-11-16 09:49:03 INF templating/templating.go:131 template Path: path=test/data/templates -

    A new file has been created under test/data/org_2/dashboards/General/template_example.json

    ← Installation
    Working with Library Panels →
    \ No newline at end of file +

    A new file has been created under test/data/org_2/dashboards/General/template_example.json

    ← Installation
    Working with Library Panels →
    \ No newline at end of file diff --git a/docs/templating/index.html b/docs/templating/index.html index 66decb7b..159368c9 100644 --- a/docs/templating/index.html +++ b/docs/templating/index.html @@ -9,4 +9,4 @@ Releases
  • \ No newline at end of file +Tutorials
    \ No newline at end of file diff --git a/docs/tutorials/index.html b/docs/tutorials/index.html index a3bf0587..8df08e6e 100644 --- a/docs/tutorials/index.html +++ b/docs/tutorials/index.html @@ -9,4 +9,4 @@ Releases
  • \ No newline at end of file +Tutorials
    \ No newline at end of file diff --git a/docs/tutorials/library_elements/index.html b/docs/tutorials/library_elements/index.html index 01dd1615..9fa36207 100644 --- a/docs/tutorials/library_elements/index.html +++ b/docs/tutorials/library_elements/index.html @@ -143,4 +143,4 @@ │ library │ Extreme Dashboard Makeover - Room Temperature (F) │ │ library │ Extreme Dashboard Makeover - Salmon Cooking Times, past 7 days │ └─────────┴────────────────────────────────────────────────────────────────┘ -
    ← Templating Tool
    Organization and Authentication →
    \ No newline at end of file +
    ← Templating Tool
    Organization and Authentication →
    \ No newline at end of file diff --git a/docs/tutorials/orgs_auth/index.html b/docs/tutorials/orgs_auth/index.html index 0f6be620..63b34f35 100644 --- a/docs/tutorials/orgs_auth/index.html +++ b/docs/tutorials/orgs_auth/index.html @@ -124,4 +124,4 @@ │ dashboard │ test/data/org_1/dashboards/General/science-discipline-patterns.json │ │ dashboard │ test/data/org_1/dashboards/General/top-talkers-over-time.json │ └───────────┴──────────────────────────────────────────────────────────────────────┘ -

    Please note the path has org_1 in the path. Starting with version 0.5 of GDG we always namespace the entities we back by the org they belong to.

    ← Working with Library Panels
    Getting Started →
    \ No newline at end of file +

    Please note the path has org_1 in the path. Starting with version 0.5 of GDG we always namespace the entities we back by the org they belong to.

    ← Working with Library Panels
    Getting Started →
    \ No newline at end of file diff --git a/index.html b/index.html index df8aeacd..3d2e1659 100644 --- a/index.html +++ b/index.html @@ -3,4 +3,4 @@

    GDG - Grafana Dash-n-Grab

    These documents are provided for the Grafana Dash-n-Grab utility. GDG is a tool used to manage dashboards, datasources, orgs and various entities of the Grafana application. All interactions are done via the -Grafana API.

    Get Started
    \ No newline at end of file +Grafana API.

    Get Started
    \ No newline at end of file diff --git a/index.min.82d8f69742629cc1e05bee829672f1c6ee03c900c7ecfd1156601ed38f854da4023785d7eb7a97fba884c25af3f44e78b45afe05b3f2d7f461dfa8a03dd52e6d.js b/index.min.375baccca6e1f8e9aeb226da3ad71560cf578eb1cbb6806cf07921dc2bbcce091fe1ee41826df7c95a714473639509ecad6f5e87ba084022568a90ca16e5ffad.js similarity index 99% rename from index.min.82d8f69742629cc1e05bee829672f1c6ee03c900c7ecfd1156601ed38f854da4023785d7eb7a97fba884c25af3f44e78b45afe05b3f2d7f461dfa8a03dd52e6d.js rename to index.min.375baccca6e1f8e9aeb226da3ad71560cf578eb1cbb6806cf07921dc2bbcce091fe1ee41826df7c95a714473639509ecad6f5e87ba084022568a90ca16e5ffad.js index b422b2f3..f6884dac 100644 --- a/index.min.82d8f69742629cc1e05bee829672f1c6ee03c900c7ecfd1156601ed38f854da4023785d7eb7a97fba884c25af3f44e78b45afe05b3f2d7f461dfa8a03dd52e6d.js +++ b/index.min.375baccca6e1f8e9aeb226da3ad71560cf578eb1cbb6806cf07921dc2bbcce091fe1ee41826df7c95a714473639509ecad6f5e87ba084022568a90ca16e5ffad.js @@ -10,9 +10,9 @@ Example compose. version: '3.7' services: gdg: image: ghcr.io/esnet/gdg:0.5.3 command: "--help" ## Add additional parameters here # command: "ds export" ## Pass any cmd on here. volumes: - ./config:/app/config ## where the configuration lives - ./exports:/app/exports ## doesn't need to be /app/exports but you should export the destination of where exports are being written out to. From the CLI: docker run -it --rm -v $(pwd)/config:/app/config -v $(pwd)/exports:/app/exports ghcr.io/esnet/gdg:latest ds --help Installing via Go # If you have go install you may run the following command to install gdg. Keep in mind there are two binaries you may install. gdg ==> Main binary that manages the various entities supported. gdg-generate => Helper utility that allows you to generate multiple dashboards given a valid configuration and seed data. gdg -go install github.com/esnet/gdg/cmd/gdg@latest #for latest go install github.com/esnet/gdg@v0.5.3 #for a specific version You can verify the version by running gdg version. +go install github.com/esnet/gdg/cmd/gdg@latest #for latest go install github.com/esnet/gdg/cmd/gdg@v0.5.3 #for a specific version You can verify the version by running gdg version. gdg-generate -go install github.com/esnet/gdg/cmd/gdg-generate@latest #for latest go install github.com/esnet/gdg@v0.5.3 #for a specific version Configuration # You can then create a simple configuration using gdg tools ctx new which will do a best effort to guide to setup a basic config that will get you up and going or read the more detailed documentation that can be found here +go install github.com/esnet/gdg/cmd/gen@latest #for latest go install github.com/esnet/gdg/cmd/gen@v0.5.3 #for a specific version Configuration # You can then create a simple configuration using gdg tools ctx new which will do a best effort to guide to setup a basic config that will get you up and going or read the more detailed documentation that can be found here NOTE: wizard doesn’t currently support ALL features but it should help you get a head start. `}),e.add({id:2,href:"/gdg/docs/templating/description/",title:"Templating Tool",description:`GDG has now introduced a new supporting tool that works in conjunction with GDG. It is currently dependent on the GDG configuration since it will operate on the currently selected context. You can confirm what the current context is by running gdg ctx show For example, my current output is as follows: diff --git a/tags/index.html b/tags/index.html index 5f8a0242..f04113a8 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,4 +1,4 @@ Tags - GDG

    Tags

    \ No newline at end of file +

    Tags

    \ No newline at end of file