All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.networkcloud.kotlin.BmcKeySetArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.networkcloud.kotlin

import com.pulumi.azurenative.networkcloud.BmcKeySetArgs.builder
import com.pulumi.azurenative.networkcloud.kotlin.enums.BmcKeySetPrivilegeLevel
import com.pulumi.azurenative.networkcloud.kotlin.inputs.ExtendedLocationArgs
import com.pulumi.azurenative.networkcloud.kotlin.inputs.ExtendedLocationArgsBuilder
import com.pulumi.azurenative.networkcloud.kotlin.inputs.KeySetUserArgs
import com.pulumi.azurenative.networkcloud.kotlin.inputs.KeySetUserArgsBuilder
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 *
 * Azure REST API version: 2023-10-01-preview. Prior API version in Azure Native 1.x: 2022-12-12-preview.
 * Other available API versions: 2023-07-01, 2024-06-01-preview.
 * ## Example Usage
 * ### Create or update baseboard management controller key set of cluster
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var bmcKeySet = new AzureNative.NetworkCloud.BmcKeySet("bmcKeySet", new()
 *     {
 *         AzureGroupId = "f110271b-XXXX-4163-9b99-214d91660f0e",
 *         BmcKeySetName = "bmcKeySetName",
 *         ClusterName = "clusterName",
 *         Expiration = "2022-12-31T23:59:59.008Z",
 *         ExtendedLocation = new AzureNative.NetworkCloud.Inputs.ExtendedLocationArgs
 *         {
 *             Name = "/subscriptions/123e4567-e89b-12d3-a456-426655440000/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterExtendedLocationName",
 *             Type = "CustomLocation",
 *         },
 *         Location = "location",
 *         PrivilegeLevel = AzureNative.NetworkCloud.BmcKeySetPrivilegeLevel.Administrator,
 *         ResourceGroupName = "resourceGroupName",
 *         Tags =
 *         {
 *             { "key1", "myvalue1" },
 *             { "key2", "myvalue2" },
 *         },
 *         UserList = new[]
 *         {
 *             new AzureNative.NetworkCloud.Inputs.KeySetUserArgs
 *             {
 *                 AzureUserName = "userABC",
 *                 Description = "Needs access for troubleshooting as a part of the support team",
 *                 SshPublicKey = new AzureNative.NetworkCloud.Inputs.SshPublicKeyArgs
 *                 {
 *                     KeyData = "ssh-rsa AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1Xo+yYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm",
 *                 },
 *                 UserPrincipalName = "[email protected]",
 *             },
 *             new AzureNative.NetworkCloud.Inputs.KeySetUserArgs
 *             {
 *                 AzureUserName = "userXYZ",
 *                 Description = "Needs access for troubleshooting as a part of the support team",
 *                 SshPublicKey = new AzureNative.NetworkCloud.Inputs.SshPublicKeyArgs
 *                 {
 *                     KeyData = "ssh-rsa AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1Xo+yYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm",
 *                 },
 *                 UserPrincipalName = "[email protected]",
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	networkcloud "github.com/pulumi/pulumi-azure-native-sdk/networkcloud/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := networkcloud.NewBmcKeySet(ctx, "bmcKeySet", &networkcloud.BmcKeySetArgs{
 * 			AzureGroupId:  pulumi.String("f110271b-XXXX-4163-9b99-214d91660f0e"),
 * 			BmcKeySetName: pulumi.String("bmcKeySetName"),
 * 			ClusterName:   pulumi.String("clusterName"),
 * 			Expiration:    pulumi.String("2022-12-31T23:59:59.008Z"),
 * 			ExtendedLocation: &networkcloud.ExtendedLocationArgs{
 * 				Name: pulumi.String("/subscriptions/123e4567-e89b-12d3-a456-426655440000/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterExtendedLocationName"),
 * 				Type: pulumi.String("CustomLocation"),
 * 			},
 * 			Location:          pulumi.String("location"),
 * 			PrivilegeLevel:    pulumi.String(networkcloud.BmcKeySetPrivilegeLevelAdministrator),
 * 			ResourceGroupName: pulumi.String("resourceGroupName"),
 * 			Tags: pulumi.StringMap{
 * 				"key1": pulumi.String("myvalue1"),
 * 				"key2": pulumi.String("myvalue2"),
 * 			},
 * 			UserList: networkcloud.KeySetUserArray{
 * 				&networkcloud.KeySetUserArgs{
 * 					AzureUserName: pulumi.String("userABC"),
 * 					Description:   pulumi.String("Needs access for troubleshooting as a part of the support team"),
 * 					SshPublicKey: &networkcloud.SshPublicKeyArgs{
 * 						KeyData: pulumi.String("ssh-rsa AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1Xo+yYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm"),
 * 					},
 * 					UserPrincipalName: pulumi.String("[email protected]"),
 * 				},
 * 				&networkcloud.KeySetUserArgs{
 * 					AzureUserName: pulumi.String("userXYZ"),
 * 					Description:   pulumi.String("Needs access for troubleshooting as a part of the support team"),
 * 					SshPublicKey: &networkcloud.SshPublicKeyArgs{
 * 						KeyData: pulumi.String("ssh-rsa AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1Xo+yYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm"),
 * 					},
 * 					UserPrincipalName: pulumi.String("[email protected]"),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.networkcloud.BmcKeySet;
 * import com.pulumi.azurenative.networkcloud.BmcKeySetArgs;
 * import com.pulumi.azurenative.networkcloud.inputs.ExtendedLocationArgs;
 * import com.pulumi.azurenative.networkcloud.inputs.KeySetUserArgs;
 * import com.pulumi.azurenative.networkcloud.inputs.SshPublicKeyArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var bmcKeySet = new BmcKeySet("bmcKeySet", BmcKeySetArgs.builder()
 *             .azureGroupId("f110271b-XXXX-4163-9b99-214d91660f0e")
 *             .bmcKeySetName("bmcKeySetName")
 *             .clusterName("clusterName")
 *             .expiration("2022-12-31T23:59:59.008Z")
 *             .extendedLocation(ExtendedLocationArgs.builder()
 *                 .name("/subscriptions/123e4567-e89b-12d3-a456-426655440000/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterExtendedLocationName")
 *                 .type("CustomLocation")
 *                 .build())
 *             .location("location")
 *             .privilegeLevel("Administrator")
 *             .resourceGroupName("resourceGroupName")
 *             .tags(Map.ofEntries(
 *                 Map.entry("key1", "myvalue1"),
 *                 Map.entry("key2", "myvalue2")
 *             ))
 *             .userList(
 *                 KeySetUserArgs.builder()
 *                     .azureUserName("userABC")
 *                     .description("Needs access for troubleshooting as a part of the support team")
 *                     .sshPublicKey(SshPublicKeyArgs.builder()
 *                         .keyData("ssh-rsa AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1Xo+yYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm")
 *                         .build())
 *                     .userPrincipalName("[email protected]")
 *                     .build(),
 *                 KeySetUserArgs.builder()
 *                     .azureUserName("userXYZ")
 *                     .description("Needs access for troubleshooting as a part of the support team")
 *                     .sshPublicKey(SshPublicKeyArgs.builder()
 *                         .keyData("ssh-rsa AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1Xo+yYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm")
 *                         .build())
 *                     .userPrincipalName("[email protected]")
 *                     .build())
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:networkcloud:BmcKeySet bmcKeySetName /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/clusters/{clusterName}/bmcKeySets/{bmcKeySetName}
 * ```
 * @property azureGroupId The object ID of Azure Active Directory group that all users in the list must be in for access to be granted. Users that are not in the group will not have access.
 * @property bmcKeySetName The name of the baseboard management controller key set.
 * @property clusterName The name of the cluster.
 * @property expiration The date and time after which the users in this key set will be removed from the baseboard management controllers.
 * @property extendedLocation The extended location of the cluster associated with the resource.
 * @property location The geo-location where the resource lives
 * @property privilegeLevel The access level allowed for the users in this key set.
 * @property resourceGroupName The name of the resource group. The name is case insensitive.
 * @property tags Resource tags.
 * @property userList The unique list of permitted users.
 */
public data class BmcKeySetArgs(
    public val azureGroupId: Output? = null,
    public val bmcKeySetName: Output? = null,
    public val clusterName: Output? = null,
    public val expiration: Output? = null,
    public val extendedLocation: Output? = null,
    public val location: Output? = null,
    public val privilegeLevel: Output>? = null,
    public val resourceGroupName: Output? = null,
    public val tags: Output>? = null,
    public val userList: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.networkcloud.BmcKeySetArgs =
        com.pulumi.azurenative.networkcloud.BmcKeySetArgs.builder()
            .azureGroupId(azureGroupId?.applyValue({ args0 -> args0 }))
            .bmcKeySetName(bmcKeySetName?.applyValue({ args0 -> args0 }))
            .clusterName(clusterName?.applyValue({ args0 -> args0 }))
            .expiration(expiration?.applyValue({ args0 -> args0 }))
            .extendedLocation(extendedLocation?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .location(location?.applyValue({ args0 -> args0 }))
            .privilegeLevel(
                privilegeLevel?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .userList(
                userList?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [BmcKeySetArgs].
 */
@PulumiTagMarker
public class BmcKeySetArgsBuilder internal constructor() {
    private var azureGroupId: Output? = null

    private var bmcKeySetName: Output? = null

    private var clusterName: Output? = null

    private var expiration: Output? = null

    private var extendedLocation: Output? = null

    private var location: Output? = null

    private var privilegeLevel: Output>? = null

    private var resourceGroupName: Output? = null

    private var tags: Output>? = null

    private var userList: Output>? = null

    /**
     * @param value The object ID of Azure Active Directory group that all users in the list must be in for access to be granted. Users that are not in the group will not have access.
     */
    @JvmName("vnupeujtvgspkhbg")
    public suspend fun azureGroupId(`value`: Output) {
        this.azureGroupId = value
    }

    /**
     * @param value The name of the baseboard management controller key set.
     */
    @JvmName("baermadafxvfkbhc")
    public suspend fun bmcKeySetName(`value`: Output) {
        this.bmcKeySetName = value
    }

    /**
     * @param value The name of the cluster.
     */
    @JvmName("lcepkrhiyswvhlst")
    public suspend fun clusterName(`value`: Output) {
        this.clusterName = value
    }

    /**
     * @param value The date and time after which the users in this key set will be removed from the baseboard management controllers.
     */
    @JvmName("jmauorigjyldynbc")
    public suspend fun expiration(`value`: Output) {
        this.expiration = value
    }

    /**
     * @param value The extended location of the cluster associated with the resource.
     */
    @JvmName("curvlocxmnjakmjy")
    public suspend fun extendedLocation(`value`: Output) {
        this.extendedLocation = value
    }

    /**
     * @param value The geo-location where the resource lives
     */
    @JvmName("rvdmmowkohqeoame")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value The access level allowed for the users in this key set.
     */
    @JvmName("hdngdqasoarnkeli")
    public suspend fun privilegeLevel(`value`: Output>) {
        this.privilegeLevel = value
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("qgrqwycuelnootxw")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value Resource tags.
     */
    @JvmName("uqjnswhnrmajeobq")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value The unique list of permitted users.
     */
    @JvmName("annbibtwjcodgpei")
    public suspend fun userList(`value`: Output>) {
        this.userList = value
    }

    @JvmName("venknqpdcqdmanpf")
    public suspend fun userList(vararg values: Output) {
        this.userList = Output.all(values.asList())
    }

    /**
     * @param values The unique list of permitted users.
     */
    @JvmName("xtxbqfxiaaxjfiok")
    public suspend fun userList(values: List>) {
        this.userList = Output.all(values)
    }

    /**
     * @param value The object ID of Azure Active Directory group that all users in the list must be in for access to be granted. Users that are not in the group will not have access.
     */
    @JvmName("ndhmyapthouqmhrx")
    public suspend fun azureGroupId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.azureGroupId = mapped
    }

    /**
     * @param value The name of the baseboard management controller key set.
     */
    @JvmName("kuhnlhawcyclhvrb")
    public suspend fun bmcKeySetName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.bmcKeySetName = mapped
    }

    /**
     * @param value The name of the cluster.
     */
    @JvmName("xoeppgbentfrtvht")
    public suspend fun clusterName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clusterName = mapped
    }

    /**
     * @param value The date and time after which the users in this key set will be removed from the baseboard management controllers.
     */
    @JvmName("lannwamrbmkqxkde")
    public suspend fun expiration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.expiration = mapped
    }

    /**
     * @param value The extended location of the cluster associated with the resource.
     */
    @JvmName("ibdljlmbfufbyykg")
    public suspend fun extendedLocation(`value`: ExtendedLocationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.extendedLocation = mapped
    }

    /**
     * @param argument The extended location of the cluster associated with the resource.
     */
    @JvmName("sgirsahcvccxypuy")
    public suspend fun extendedLocation(argument: suspend ExtendedLocationArgsBuilder.() -> Unit) {
        val toBeMapped = ExtendedLocationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.extendedLocation = mapped
    }

    /**
     * @param value The geo-location where the resource lives
     */
    @JvmName("udwnquxligbxrdrw")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value The access level allowed for the users in this key set.
     */
    @JvmName("lahdlibalassntgk")
    public suspend fun privilegeLevel(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.privilegeLevel = mapped
    }

    /**
     * @param value The access level allowed for the users in this key set.
     */
    @JvmName("qndkkijpcwudeeov")
    public fun privilegeLevel(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.privilegeLevel = mapped
    }

    /**
     * @param value The access level allowed for the users in this key set.
     */
    @JvmName("fgdfuglnqnpyelqq")
    public fun privilegeLevel(`value`: BmcKeySetPrivilegeLevel) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.privilegeLevel = mapped
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("hbvndpntqretqavd")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value Resource tags.
     */
    @JvmName("tyrnmbbauuehvwbu")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Resource tags.
     */
    @JvmName("umoelibjlmyqhtph")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The unique list of permitted users.
     */
    @JvmName("shdbgpwswdapxjas")
    public suspend fun userList(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.userList = mapped
    }

    /**
     * @param argument The unique list of permitted users.
     */
    @JvmName("vmsqxuoypwuxlxpb")
    public suspend fun userList(argument: List Unit>) {
        val toBeMapped = argument.toList().map { KeySetUserArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.userList = mapped
    }

    /**
     * @param argument The unique list of permitted users.
     */
    @JvmName("aptnltitbqhdrmje")
    public suspend fun userList(vararg argument: suspend KeySetUserArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { KeySetUserArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.userList = mapped
    }

    /**
     * @param argument The unique list of permitted users.
     */
    @JvmName("oypjvqhqkdongaey")
    public suspend fun userList(argument: suspend KeySetUserArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(KeySetUserArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.userList = mapped
    }

    /**
     * @param values The unique list of permitted users.
     */
    @JvmName("fubjgflxoibsdegx")
    public suspend fun userList(vararg values: KeySetUserArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.userList = mapped
    }

    internal fun build(): BmcKeySetArgs = BmcKeySetArgs(
        azureGroupId = azureGroupId,
        bmcKeySetName = bmcKeySetName,
        clusterName = clusterName,
        expiration = expiration,
        extendedLocation = extendedLocation,
        location = location,
        privilegeLevel = privilegeLevel,
        resourceGroupName = resourceGroupName,
        tags = tags,
        userList = userList,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy