BlobServiceClient
The  BlobServiceClient allows you to manipulate Azure
            Storage service resources and blob containers. The storage account provides
            the top-level namespace for the Blob service.
            
                using Azure.Core;
using Azure.Core.Pipeline;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Common;
using Azure.Storage.Cryptography;
using Azure.Storage.Sas;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Azure.Storage.Blobs
{
    public class BlobServiceClient
    {
        private readonly Uri _uri;
        private readonly BlobClientConfiguration _clientConfiguration;
        private readonly HttpPipelinePolicy _authenticationPolicy;
        private readonly ClientSideEncryptionOptions _clientSideEncryption;
        private string _accountName;
        private readonly ServiceRestClient _serviceRestClient;
        public virtual Uri Uri => _uri;
        internal virtual BlobClientConfiguration ClientConfiguration => _clientConfiguration;
        internal virtual HttpPipelinePolicy AuthenticationPolicy => _authenticationPolicy;
        internal virtual ClientSideEncryptionOptions ClientSideEncryption => _clientSideEncryption;
        public string AccountName {
            get {
                if (_accountName == null)
                    _accountName = new BlobUriBuilder(Uri).AccountName;
                return _accountName;
            }
        }
        public virtual bool CanGenerateAccountSasUri => (object)ClientConfiguration.SharedKeyCredential != null;
        internal virtual ServiceRestClient ServiceRestClient => _serviceRestClient;
        protected BlobServiceClient()
        {
        }
        public BlobServiceClient(string connectionString)
            : this(connectionString, null)
        {
        }
        public BlobServiceClient(string connectionString, BlobClientOptions options)
        {
            StorageConnectionString storageConnectionString = StorageConnectionString.Parse(connectionString);
            _uri = storageConnectionString.BlobEndpoint;
            if (options == null)
                options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_01_05);
            _authenticationPolicy = StorageClientOptions.GetAuthenticationPolicy(storageConnectionString.Credentials, null, null);
            _clientConfiguration = new BlobClientConfiguration(options.Build(_authenticationPolicy), storageConnectionString.Credentials as StorageSharedKeyCredential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes);
            ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
            _clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
            _serviceRestClient = BuildServiceRestClient(_uri);
            BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
            BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
        }
        public BlobServiceClient(Uri serviceUri, BlobClientOptions options = null)
            : this(serviceUri, null, options ?? new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_01_05))
        {
        }
        public BlobServiceClient(Uri serviceUri, StorageSharedKeyCredential credential, BlobClientOptions options = null)
            : this(serviceUri, credential.AsPolicy(), credential, options ?? new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_01_05))
        {
        }
        public BlobServiceClient(Uri serviceUri, AzureSasCredential credential, BlobClientOptions options = null)
            : this(serviceUri, credential.AsPolicy<BlobUriBuilder>(serviceUri), credential, options ?? new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_01_05))
        {
        }
        public BlobServiceClient(Uri serviceUri, TokenCredential credential, BlobClientOptions options = null)
        {
            object value;
            BlobAudience? audience;
            BlobAudience blobAudience;
            if (options == null)
                value = null;
            else {
                audience = options.Audience;
                if (!audience.HasValue)
                    value = null;
                else {
                    blobAudience = audience.GetValueOrDefault();
                    value = blobAudience.ToString();
                }
            }
            object scope;
            if (!string.IsNullOrEmpty((string)value)) {
                audience = options.Audience;
                blobAudience = audience.Value;
                scope = blobAudience.CreateDefaultScope();
            } else {
                blobAudience = BlobAudience.DefaultAudience;
                scope = blobAudience.CreateDefaultScope();
            }
            this..ctor(serviceUri, credential.AsPolicy((string)scope, options), credential, options ?? new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_01_05));
            Errors.VerifyHttpsTokenAuth(serviceUri);
        }
        internal BlobServiceClient(Uri serviceUri, HttpPipelinePolicy authentication, BlobClientOptions options)
        {
            BlobClientConfiguration clientConfiguration = new BlobClientConfiguration(options.Build(authentication), null, new ClientDiagnostics(options, null), options?.Version ?? BlobClientOptions.ServiceVersion.V2025_01_05, options?.CustomerProvidedKey, options.TransferValidation, options?.EncryptionScope, options?.TrimBlobNameSlashes ?? false);
            object clientSideEncryption;
            if (options == null)
                clientSideEncryption = null;
            else {
                ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
                clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
            }
            this..ctor(serviceUri, clientConfiguration, authentication, clientSideEncryption);
        }
        internal BlobServiceClient(Uri serviceUri, HttpPipelinePolicy authentication, StorageSharedKeyCredential storageSharedKeyCredential, BlobClientOptions options)
        {
            BlobClientConfiguration clientConfiguration = new BlobClientConfiguration(options.Build(authentication), storageSharedKeyCredential, new ClientDiagnostics(options, null), options?.Version ?? BlobClientOptions.ServiceVersion.V2025_01_05, options?.CustomerProvidedKey, options.TransferValidation, options?.EncryptionScope, options?.TrimBlobNameSlashes ?? false);
            object clientSideEncryption;
            if (options == null)
                clientSideEncryption = null;
            else {
                ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
                clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
            }
            this..ctor(serviceUri, clientConfiguration, authentication, clientSideEncryption);
        }
        internal BlobServiceClient(Uri serviceUri, HttpPipelinePolicy authentication, TokenCredential tokenCredential, BlobClientOptions options)
        {
            BlobClientConfiguration clientConfiguration = new BlobClientConfiguration(options.Build(authentication), tokenCredential, new ClientDiagnostics(options, null), options?.Version ?? BlobClientOptions.ServiceVersion.V2025_01_05, options?.CustomerProvidedKey, options.TransferValidation, options?.EncryptionScope, options?.TrimBlobNameSlashes ?? false);
            object clientSideEncryption;
            if (options == null)
                clientSideEncryption = null;
            else {
                ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
                clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
            }
            this..ctor(serviceUri, clientConfiguration, authentication, clientSideEncryption);
        }
        internal BlobServiceClient(Uri serviceUri, HttpPipelinePolicy authentication, AzureSasCredential sasCredential, BlobClientOptions options)
        {
            BlobClientConfiguration clientConfiguration = new BlobClientConfiguration(options.Build(authentication), sasCredential, new ClientDiagnostics(options, null), options?.Version ?? BlobClientOptions.ServiceVersion.V2025_01_05, options?.CustomerProvidedKey, options.TransferValidation, options?.EncryptionScope, options?.TrimBlobNameSlashes ?? false);
            object clientSideEncryption;
            if (options == null)
                clientSideEncryption = null;
            else {
                ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
                clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
            }
            this..ctor(serviceUri, clientConfiguration, authentication, clientSideEncryption);
        }
        internal BlobServiceClient(Uri serviceUri, BlobClientConfiguration clientConfiguration, HttpPipelinePolicy authentication, ClientSideEncryptionOptions clientSideEncryption)
        {
            Argument.AssertNotNull(serviceUri, "serviceUri");
            _uri = serviceUri;
            _clientConfiguration = clientConfiguration;
            _authenticationPolicy = authentication;
            _clientSideEncryption = ((clientSideEncryption != null) ? clientSideEncryption.Clone() : null);
            _serviceRestClient = BuildServiceRestClient(serviceUri);
            BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
            BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
        }
        protected static BlobServiceClient (Uri serviceUri, BlobClientOptions options, HttpPipelinePolicy authentication, HttpPipeline pipeline, StorageSharedKeyCredential sharedKeyCredential, AzureSasCredential sasCredential, TokenCredential tokenCredential)
        {
            return new BlobServiceClient(serviceUri, new BlobClientConfiguration(pipeline, sharedKeyCredential, tokenCredential, sasCredential, new ClientDiagnostics(options, null), options.Version, null, options.TransferValidation, null, options.TrimBlobNameSlashes), authentication, null);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        protected static BlobServiceClient CreateClient(Uri serviceUri, BlobClientOptions options, HttpPipelinePolicy authentication, HttpPipeline pipeline)
        {
            return new BlobServiceClient(serviceUri, new BlobClientConfiguration(pipeline, null, new ClientDiagnostics(options, null), options.Version, (CustomerProvidedKey?)null, options.TransferValidation, (string)null, options.TrimBlobNameSlashes), authentication, null);
        }
        private ServiceRestClient BuildServiceRestClient(Uri uri)
        {
            return new ServiceRestClient(_clientConfiguration.ClientDiagnostics, _clientConfiguration.Pipeline, uri.AbsoluteUri, _clientConfiguration.Version.ToVersionString());
        }
        public virtual BlobContainerClient GetBlobContainerClient(string blobContainerName)
        {
            return new BlobContainerClient(Uri.AppendToPath(blobContainerName), ClientConfiguration, ClientSideEncryption);
        }
        protected static HttpPipeline GetHttpPipeline(BlobServiceClient client)
        {
            return client.ClientConfiguration.Pipeline;
        }
        protected static HttpPipelinePolicy GetAuthenticationPolicy(BlobServiceClient client)
        {
            return client.AuthenticationPolicy;
        }
        protected static BlobClientOptions GetClientOptions(BlobServiceClient client)
        {
            BlobClientOptions blobClientOptions = new BlobClientOptions(client.ClientConfiguration.Version);
            blobClientOptions.get_Diagnostics().set_IsDistributedTracingEnabled(client.ClientConfiguration.ClientDiagnostics.IsActivityEnabled);
            return blobClientOptions;
        }
        public virtual Pageable<BlobContainerItem> GetBlobContainers(BlobContainerTraits traits = BlobContainerTraits.None, BlobContainerStates states = BlobContainerStates.None, string prefix = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            return new GetBlobContainersAsyncCollection(this, traits, states, prefix).ToSyncCollection(cancellationToken);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public virtual Pageable<BlobContainerItem> GetBlobContainers(BlobContainerTraits traits, string prefix, CancellationToken cancellationToken)
        {
            return new GetBlobContainersAsyncCollection(this, traits, BlobContainerStates.None, prefix).ToSyncCollection(cancellationToken);
        }
        public virtual AsyncPageable<BlobContainerItem> GetBlobContainersAsync(BlobContainerTraits traits = BlobContainerTraits.None, BlobContainerStates states = BlobContainerStates.None, string prefix = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            return new GetBlobContainersAsyncCollection(this, traits, states, prefix).ToAsyncCollection(cancellationToken);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public virtual AsyncPageable<BlobContainerItem> GetBlobContainersAsync(BlobContainerTraits traits, string prefix, CancellationToken cancellationToken)
        {
            return new GetBlobContainersAsyncCollection(this, traits, BlobContainerStates.None, prefix).ToAsyncCollection(cancellationToken);
        }
        [AsyncStateMachine(typeof(<GetBlobContainersInternal>d__43))]
        internal Task<Response<ListContainersSegmentResponse>> GetBlobContainersInternal(string continuationToken, BlobContainerTraits traits, BlobContainerStates states, string prefix, int? pageSizeHint, bool async, CancellationToken cancellationToken)
        {
            <GetBlobContainersInternal>d__43 stateMachine = default(<GetBlobContainersInternal>d__43);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ListContainersSegmentResponse>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.continuationToken = continuationToken;
            stateMachine.traits = traits;
            stateMachine.states = states;
            stateMachine.prefix = prefix;
            stateMachine.pageSizeHint = pageSizeHint;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        public virtual Response<AccountInfo> GetAccountInfo(CancellationToken cancellationToken = default(CancellationToken))
        {
            return GetAccountInfoInternal(false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<GetAccountInfoAsync>d__45))]
        public virtual Task<Response<AccountInfo>> GetAccountInfoAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            <GetAccountInfoAsync>d__45 stateMachine = default(<GetAccountInfoAsync>d__45);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<AccountInfo>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<GetAccountInfoInternal>d__46))]
        private Task<Response<AccountInfo>> GetAccountInfoInternal(bool async, CancellationToken cancellationToken)
        {
            <GetAccountInfoInternal>d__46 stateMachine = default(<GetAccountInfoInternal>d__46);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<AccountInfo>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        public virtual Response<BlobServiceProperties> GetProperties(CancellationToken cancellationToken = default(CancellationToken))
        {
            return GetPropertiesInternal(false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<GetPropertiesAsync>d__48))]
        public virtual Task<Response<BlobServiceProperties>> GetPropertiesAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            <GetPropertiesAsync>d__48 stateMachine = default(<GetPropertiesAsync>d__48);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobServiceProperties>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<GetPropertiesInternal>d__49))]
        private Task<Response<BlobServiceProperties>> GetPropertiesInternal(bool async, CancellationToken cancellationToken)
        {
            <GetPropertiesInternal>d__49 stateMachine = default(<GetPropertiesInternal>d__49);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobServiceProperties>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public virtual Response SetProperties(BlobServiceProperties properties, CancellationToken cancellationToken = default(CancellationToken))
        {
            return SetPropertiesInternal(properties, false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<SetPropertiesAsync>d__51))]
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public virtual Task<Response> SetPropertiesAsync(BlobServiceProperties properties, CancellationToken cancellationToken = default(CancellationToken))
        {
            <SetPropertiesAsync>d__51 stateMachine = default(<SetPropertiesAsync>d__51);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
            stateMachine.<>4__this = this;
            stateMachine.properties = properties;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<SetPropertiesInternal>d__52))]
        private Task<Response> SetPropertiesInternal(BlobServiceProperties properties, bool async, CancellationToken cancellationToken)
        {
            <SetPropertiesInternal>d__52 stateMachine = default(<SetPropertiesInternal>d__52);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
            stateMachine.<>4__this = this;
            stateMachine.properties = properties;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        public virtual Response<BlobServiceStatistics> GetStatistics(CancellationToken cancellationToken = default(CancellationToken))
        {
            return GetStatisticsInternal(false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<GetStatisticsAsync>d__54))]
        public virtual Task<Response<BlobServiceStatistics>> GetStatisticsAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            <GetStatisticsAsync>d__54 stateMachine = default(<GetStatisticsAsync>d__54);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobServiceStatistics>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<GetStatisticsInternal>d__55))]
        private Task<Response<BlobServiceStatistics>> GetStatisticsInternal(bool async, CancellationToken cancellationToken)
        {
            <GetStatisticsInternal>d__55 stateMachine = default(<GetStatisticsInternal>d__55);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobServiceStatistics>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public virtual Response<UserDelegationKey> GetUserDelegationKey(DateTimeOffset? startsOn, DateTimeOffset expiresOn, CancellationToken cancellationToken = default(CancellationToken))
        {
            return GetUserDelegationKeyInternal(startsOn, expiresOn, false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<GetUserDelegationKeyAsync>d__57))]
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public virtual Task<Response<UserDelegationKey>> GetUserDelegationKeyAsync(DateTimeOffset? startsOn, DateTimeOffset expiresOn, CancellationToken cancellationToken = default(CancellationToken))
        {
            <GetUserDelegationKeyAsync>d__57 stateMachine = default(<GetUserDelegationKeyAsync>d__57);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<UserDelegationKey>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.startsOn = startsOn;
            stateMachine.expiresOn = expiresOn;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<GetUserDelegationKeyInternal>d__58))]
        private Task<Response<UserDelegationKey>> GetUserDelegationKeyInternal(DateTimeOffset? startsOn, DateTimeOffset expiresOn, bool async, CancellationToken cancellationToken)
        {
            <GetUserDelegationKeyInternal>d__58 stateMachine = default(<GetUserDelegationKeyInternal>d__58);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<UserDelegationKey>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.startsOn = startsOn;
            stateMachine.expiresOn = expiresOn;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [ForwardsClientCalls]
        public virtual Response<BlobContainerClient> CreateBlobContainer(string blobContainerName, PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            BlobContainerClient blobContainerClient = GetBlobContainerClient(blobContainerName);
            Response<BlobContainerInfo> val = blobContainerClient.Create(publicAccessType, metadata, cancellationToken);
            return Response.FromValue<BlobContainerClient>(blobContainerClient, val.GetRawResponse());
        }
        [AsyncStateMachine(typeof(<CreateBlobContainerAsync>d__60))]
        [ForwardsClientCalls]
        public virtual Task<Response<BlobContainerClient>> CreateBlobContainerAsync(string blobContainerName, PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            <CreateBlobContainerAsync>d__60 stateMachine = default(<CreateBlobContainerAsync>d__60);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.blobContainerName = blobContainerName;
            stateMachine.publicAccessType = publicAccessType;
            stateMachine.metadata = metadata;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [ForwardsClientCalls]
        public virtual Response DeleteBlobContainer(string blobContainerName, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            return GetBlobContainerClient(blobContainerName).Delete(conditions, cancellationToken);
        }
        [AsyncStateMachine(typeof(<DeleteBlobContainerAsync>d__62))]
        [ForwardsClientCalls]
        public virtual Task<Response> DeleteBlobContainerAsync(string blobContainerName, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            <DeleteBlobContainerAsync>d__62 stateMachine = default(<DeleteBlobContainerAsync>d__62);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
            stateMachine.<>4__this = this;
            stateMachine.blobContainerName = blobContainerName;
            stateMachine.conditions = conditions;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        public virtual Response<BlobContainerClient> UndeleteBlobContainer(string deletedContainerName, string deletedContainerVersion, CancellationToken cancellationToken = default(CancellationToken))
        {
            return UndeleteBlobContainerInternal(deletedContainerName, deletedContainerVersion, deletedContainerName, false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<UndeleteBlobContainerAsync>d__64))]
        public virtual Task<Response<BlobContainerClient>> UndeleteBlobContainerAsync(string deletedContainerName, string deletedContainerVersion, CancellationToken cancellationToken = default(CancellationToken))
        {
            <UndeleteBlobContainerAsync>d__64 stateMachine = default(<UndeleteBlobContainerAsync>d__64);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.deletedContainerName = deletedContainerName;
            stateMachine.deletedContainerVersion = deletedContainerVersion;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public virtual Response<BlobContainerClient> UndeleteBlobContainer(string deletedContainerName, string deletedContainerVersion, string destinationContainerName, CancellationToken cancellationToken = default(CancellationToken))
        {
            return UndeleteBlobContainerInternal(deletedContainerName, deletedContainerVersion, destinationContainerName, false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<UndeleteBlobContainerAsync>d__66))]
        [EditorBrowsable(EditorBrowsableState.Never)]
        public virtual Task<Response<BlobContainerClient>> UndeleteBlobContainerAsync(string deletedContainerName, string deletedContainerVersion, string destinationContainerName, CancellationToken cancellationToken = default(CancellationToken))
        {
            <UndeleteBlobContainerAsync>d__66 stateMachine = default(<UndeleteBlobContainerAsync>d__66);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.deletedContainerName = deletedContainerName;
            stateMachine.deletedContainerVersion = deletedContainerVersion;
            stateMachine.destinationContainerName = destinationContainerName;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<UndeleteBlobContainerInternal>d__67))]
        internal Task<Response<BlobContainerClient>> UndeleteBlobContainerInternal(string deletedContainerName, string deletedContainerVersion, string destinationContainerName, bool async, CancellationToken cancellationToken)
        {
            <UndeleteBlobContainerInternal>d__67 stateMachine = default(<UndeleteBlobContainerInternal>d__67);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.deletedContainerName = deletedContainerName;
            stateMachine.deletedContainerVersion = deletedContainerVersion;
            stateMachine.destinationContainerName = destinationContainerName;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        internal virtual Response<BlobContainerClient> RenameBlobContainer(string sourceContainerName, string destinationContainerName, BlobRequestConditions sourceConditions = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            return RenameBlobContainerInternal(sourceContainerName, destinationContainerName, sourceConditions, false, cancellationToken).EnsureCompleted();
        }
        [AsyncStateMachine(typeof(<RenameBlobContainerAsync>d__69))]
        internal virtual Task<Response<BlobContainerClient>> RenameBlobContainerAsync(string sourceContainerName, string destinationContainerName, BlobRequestConditions sourceConditions = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            <RenameBlobContainerAsync>d__69 stateMachine = default(<RenameBlobContainerAsync>d__69);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.sourceContainerName = sourceContainerName;
            stateMachine.destinationContainerName = destinationContainerName;
            stateMachine.sourceConditions = sourceConditions;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [AsyncStateMachine(typeof(<RenameBlobContainerInternal>d__70))]
        internal Task<Response<BlobContainerClient>> RenameBlobContainerInternal(string sourceContainerName, string destinationContainerName, BlobRequestConditions sourceConditions, bool async, CancellationToken cancellationToken)
        {
            <RenameBlobContainerInternal>d__70 stateMachine = default(<RenameBlobContainerInternal>d__70);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.sourceContainerName = sourceContainerName;
            stateMachine.destinationContainerName = destinationContainerName;
            stateMachine.sourceConditions = sourceConditions;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        public virtual Pageable<TaggedBlobItem> FindBlobsByTags(string tagFilterSqlExpression, CancellationToken cancellationToken = default(CancellationToken))
        {
            return new FilterBlobsAsyncCollection(this, tagFilterSqlExpression).ToSyncCollection(cancellationToken);
        }
        public virtual AsyncPageable<TaggedBlobItem> FindBlobsByTagsAsync(string tagFilterSqlExpression, CancellationToken cancellationToken = default(CancellationToken))
        {
            return new FilterBlobsAsyncCollection(this, tagFilterSqlExpression).ToAsyncCollection(cancellationToken);
        }
        [AsyncStateMachine(typeof(<FindBlobsByTagsInternal>d__73))]
        internal Task<Response<FilterBlobSegment>> FindBlobsByTagsInternal(string marker, string expression, int? pageSizeHint, bool async, CancellationToken cancellationToken)
        {
            <FindBlobsByTagsInternal>d__73 stateMachine = default(<FindBlobsByTagsInternal>d__73);
            stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<FilterBlobSegment>>.Create();
            stateMachine.<>4__this = this;
            stateMachine.marker = marker;
            stateMachine.expression = expression;
            stateMachine.pageSizeHint = pageSizeHint;
            stateMachine.async = async;
            stateMachine.cancellationToken = cancellationToken;
            stateMachine.<>1__state = -1;
            stateMachine.<>t__builder.Start(ref stateMachine);
            return stateMachine.<>t__builder.Task;
        }
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public Uri GenerateAccountSasUri(AccountSasPermissions permissions, DateTimeOffset expiresOn, AccountSasResourceTypes resourceTypes)
        {
            string stringToSign;
            return GenerateAccountSasUri(permissions, expiresOn, resourceTypes, out stringToSign);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public Uri GenerateAccountSasUri(AccountSasPermissions permissions, DateTimeOffset expiresOn, AccountSasResourceTypes resourceTypes, out string stringToSign)
        {
            return GenerateAccountSasUri(new AccountSasBuilder(permissions, expiresOn, 1, resourceTypes), out stringToSign);
        }
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public Uri GenerateAccountSasUri(AccountSasBuilder builder)
        {
            string stringToSign;
            return GenerateAccountSasUri(builder, out stringToSign);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        [CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
        public Uri GenerateAccountSasUri(AccountSasBuilder builder, out string stringToSign)
        {
            AccountSasBuilder obj = builder;
            if (obj == null)
                throw Errors.ArgumentNull("builder");
            builder = obj;
            if (!((Enum)builder.get_Services()).HasFlag((Enum)(object)1))
                throw Errors.SasServiceNotMatching("Services", "builder", "Blobs");
            return new UriBuilder(Uri) {
                Query = ((object)builder.ToSasQueryParameters(ClientConfiguration.SharedKeyCredential, ref stringToSign)).ToString()
            }.Uri;
        }
    }
}