scripts/Group.ps1

# Group.ps1: This is an autogenerated file. Part of Nimble Group Management SDK. All edits to this file will be lost!
#
# ? Copyright 2017 Hewlett Packard Enterprise Development LP.


function Get-NSGroup {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding(DefaultParameterSetName='id')]
  param(
    [Parameter(ParameterSetName='id')]
    [Parameter(ParameterSetName='nonId')]
    [ValidateSet('id','name','smtp_server','smtp_port','smtp_auth_enabled','smtp_auth_username','smtp_auth_password','smtp_encrypt_type','autosupport_enabled','allow_analytics_gui','allow_support_tunnel','proxy_server','proxy_port','proxy_username','proxy_password','alert_to_email_addrs','send_alert_to_support','alert_from_email_addr','alert_min_level','isns_enabled','isns_server','isns_port','snmp_trap_enabled','snmp_trap_host','snmp_trap_port','snmp_get_enabled','snmp_community','snmp_get_port','snmp_sys_contact','snmp_sys_location','domain_name','dns_servers','ntp_server','timezone','user_inactivity_timeout','syslogd_enabled','syslogd_server','syslogd_port','vvol_enabled','iscsi_enabled','fc_enabled','unique_name_enabled','access_protocol_list','group_target_enabled','default_iscsi_target_scope','tdz_enabled','tdz_prefix','group_target_name','default_volume_reserve','default_volume_warn_level','default_volume_limit','default_snap_reserve','default_snap_warn_level','default_snap_limit','default_snap_limit_percent','alarms_enabled','vss_validation_timeout','auto_switchover_enabled','auto_switchover_messages','merge_state','merge_group_name','tlsv1_enabled','cc_mode_enabled','group_snapshot_ttl','autoclean_unmanaged_snapshots_ttl_unit','autoclean_unmanaged_snapshots_enabled','leader_array_name','leader_array_serial','management_service_backup_array_name','management_service_backup_status','failover_mode','witness_status','member_list','compressed_vol_usage_bytes','compressed_snap_usage_bytes','uncompressed_vol_usage_bytes','uncompressed_snap_usage_bytes','usable_capacity_bytes','usage','raw_capacity','usable_cache_capacity','raw_cache_capacity','snap_usage_populated','pending_deletes','num_connections','vol_compression_ratio','snap_compression_ratio','compression_ratio','dedupe_ratio','clone_ratio','vol_thin_provisioning_ratio','savings_ratio','data_reduction_ratio','savings_dedupe','savings_compression','savings_clone','savings_vol_thin_provisioning','savings_data_reduction','savings','free_space','unused_reserve_bytes','usage_valid','space_info_valid','version_current','version_target','version_rollback','update_state','update_start_time','update_end_time','update_array_names','update_progress_msg','update_error_code','update_downloading','update_download_error_code','update_download_start_time','update_download_end_time','iscsi_automatic_connection_method','iscsi_connection_rebalancing','repl_throttled_bandwidth','repl_throttled_bandwidth_kbps','repl_throttle_list','volume_migration_status','array_unassign_migration_status','data_rebalance_status','scsi_vendor_id','encryption_config','last_login','num_snaps','num_snapcolls','date','login_banner_message','login_banner_after_auth','login_banner_reset','snap_retn_meter_high','snap_retn_meter_very_high')]
    [string[]]$fields,

    [Parameter(ParameterSetName='id')]
    [ValidatePattern('([0-9a-f]{2})([0-9a-f]{16})([0-9a-f]{16})([0-9a-f]{8})')]
    [string] $id,

    [Parameter(ParameterSetName='nonId')]
    [string]$name,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$smtp_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$smtp_auth_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_auth_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_auth_password,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'starttls', 'none', 'ssl')]
    [string]$smtp_encrypt_type,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$autosupport_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$allow_analytics_gui,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$allow_support_tunnel,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$proxy_port,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_password,

    [Parameter(ParameterSetName='nonId')]
    [string]$alert_to_email_addrs,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$send_alert_to_support,

    [Parameter(ParameterSetName='nonId')]
    [string]$alert_from_email_addr,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string]$alert_min_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$isns_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$isns_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$isns_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$snmp_trap_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_trap_host,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snmp_trap_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$snmp_get_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_community,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snmp_get_port,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_sys_contact,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_sys_location,

    [Parameter(ParameterSetName='nonId')]
    [string]$domain_name,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$dns_servers,

    [Parameter(ParameterSetName='nonId')]
    [string]$ntp_server,

    [Parameter(ParameterSetName='nonId')]
    [string]$timezone,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$user_inactivity_timeout,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$syslogd_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$syslogd_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$syslogd_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$vvol_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$fc_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$unique_name_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$access_protocol_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$group_target_enabled,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'volume', 'group')]
    [string]$default_iscsi_target_scope,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$tdz_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$tdz_prefix,

    [Parameter(ParameterSetName='nonId')]
    [string]$group_target_name,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_reserve,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_warn_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_limit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_reserve,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_warn_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_limit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_limit_percent,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$alarms_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$vss_validation_timeout,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$auto_switchover_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$auto_switchover_messages,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'dest_db_done', 'dest_db', 'dest_reassigned', 'src_quiesced', 'none', 'dest_relinquish', 'src_reassigned', 'dest_start', 'src_start', 'src_quiesce_failed', 'dest_merge_validation', 'src_reassign_failed', 'dest_db_failed')]
    [string]$merge_state,

    [Parameter(ParameterSetName='nonId')]
    [string]$merge_group_name,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$tlsv1_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$cc_mode_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$group_snapshot_ttl,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$autoclean_unmanaged_snapshots_ttl_unit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$autoclean_unmanaged_snapshots_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$leader_array_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$leader_array_serial,

    [Parameter(ParameterSetName='nonId')]
    [string]$management_service_backup_array_name,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'in_sync', 'remove_in_progress', 'yet_to_setup', 'unsetup_in_progress', 'setup_in_progress', 'out_of_sync', 'add_in_progress', 'setup_failed')]
    [string]$management_service_backup_status,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'Manual', 'Automatic')]
    [string]$failover_mode,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$witness_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$member_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$compressed_vol_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$compressed_snap_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$uncompressed_vol_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$uncompressed_snap_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usable_capacity_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usage,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$raw_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usable_cache_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$raw_cache_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_usage_populated,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$pending_deletes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_connections,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$vol_compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$snap_compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$dedupe_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$clone_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$vol_thin_provisioning_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$savings_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$data_reduction_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_dedupe,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_compression,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_clone,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_vol_thin_provisioning,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_data_reduction,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$free_space,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$unused_reserve_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$usage_valid,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$space_info_valid,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_current,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_target,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_rollback,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'normal', 'paused', 'updating', 'invalid', 'timed_out', 'failed')]
    [string]$update_state,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_start_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_end_time,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_array_names,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_progress_msg,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_error_code,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$update_downloading,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_download_error_code,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_download_start_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_download_end_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_automatic_connection_method,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_connection_rebalancing,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_throttled_bandwidth,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_throttled_bandwidth_kbps,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$repl_throttle_list,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$volume_migration_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$array_unassign_migration_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$data_rebalance_status,

    [Parameter(ParameterSetName='nonId')]
    [string]$scsi_vendor_id,

    [Parameter(ParameterSetName='nonId')]
    [Object]$encryption_config,

    [Parameter(ParameterSetName='nonId')]
    [string]$last_login,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_snaps,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_snapcolls,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$date,

    [Parameter(ParameterSetName='nonId')]
    [string]$login_banner_message,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$login_banner_after_auth,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$login_banner_reset,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_retn_meter_high,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_retn_meter_very_high

  )

  process
  {
    $API = 'groups'
    $Param = @{
      ObjectName = 'Group'
      APIPath = 'groups'
    }

    if ($fields)
    {
        $Param.Fields = $fields
    }

    if ($id)
    {
        # Get a single object for given Id.
        $Param.Id = $id
        $ResponseObject = Get-NimbleStorageAPIObject @Param
        return $ResponseObject
    }
    else
    {
        # Get list of objects matching the given filter.
        $Param.Filter = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'fields')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $Param.Filter.Add("$($var.name)", ($var.value))
                }
            }
        }
        $ResponseObjectList = Get-NimbleStorageAPIObjectList @Param
        return $ResponseObjectList
    }
  }
}

function Set-NSGroup {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding()]
  param(

    [Parameter(ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, Mandatory = $True, ParameterSetName='all')]
    [string]$id,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $name,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $smtp_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $smtp_auth_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_auth_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_auth_password,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'starttls', 'none', 'ssl')]
    [string] $smtp_encrypt_type,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $autosupport_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $allow_analytics_gui,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $allow_support_tunnel,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $proxy_port,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_password,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $alert_to_email_addrs,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $send_alert_to_support,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $alert_from_email_addr,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string] $alert_min_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $isns_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $isns_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $isns_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $snmp_trap_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_trap_host,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $snmp_trap_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $snmp_get_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_community,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $snmp_get_port,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_sys_contact,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_sys_location,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $domain_name,

    [Parameter(ParameterSetName='all')]
    [Object[]] $dns_servers,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $ntp_server,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $timezone,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $user_inactivity_timeout,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $syslogd_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $syslogd_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $syslogd_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $vvol_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $iscsi_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $fc_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $unique_name_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $group_target_enabled,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'volume', 'group')]
    [string] $default_iscsi_target_scope,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $tdz_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $tdz_prefix,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $group_target_name,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_reserve,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_warn_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_limit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_reserve,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_warn_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_limit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_limit_percent,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $alarms_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $vss_validation_timeout,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $auto_switchover_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $tlsv1_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $cc_mode_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $group_snapshot_ttl,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $autoclean_unmanaged_snapshots_ttl_unit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $autoclean_unmanaged_snapshots_enabled,

    [Parameter(ParameterSetName='all')]
    [Object[]] $repl_throttle_list,

    [Parameter(ParameterSetName='all')]
    [Object] $encryption_config,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $date,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $login_banner_message,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $login_banner_after_auth,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $login_banner_reset

  )

    process {
        # Gather request params based on user input.
        $RequestData = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'id')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $RequestData.Add("$($var.name)", ($var.value))
                }
            }
        }
        $Params = @{
            ObjectName = 'Group'
            APIPath = 'groups'
            Id = $id
            Properties = $RequestData
        }

        $ResponseObject = Set-NimbleStorageAPIObject @Params
        return $ResponseObject
    }
}


function Reset-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'reboot'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'halt'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupAlert {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string]$level

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'test_alert'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[long]]$skip_precheck_mask

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_precheck'
        ReturnType = 'NsSoftwareUpdateReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[long]]$skip_start_check_mask

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_start'
        ReturnType = 'NsSoftwareUpdateReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSGroupSoftwareDownload {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$version,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_download'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSGroupSoftwareDownload {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_cancel_download'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Resume-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_resume'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupDiscoveredList {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$group_name

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_group_discovered_list'
        ReturnType = 'NsDiscoveredGroupListReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupMerge {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_name,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_ip,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_username,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_password,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$src_passphrase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$skip_secondary_mgmt_ip

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'validate_merge'
        ReturnType = 'NsGroupMergeReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Merge-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_name,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_ip,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_username,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_password,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$src_passphrase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$skip_secondary_mgmt_ip

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'merge'
        ReturnType = 'NsGroupMergeReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupgetEULA {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'en')]
    [string]$locale,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'html', 'text')]
    [string]$format,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'software', 'setup')]
    [string]$phase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_eula'
        ReturnType = 'NsEulaReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupMigrate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'check_migrate'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Move-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'migrate'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupTimeZoneList {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_timezone_list'
        ReturnType = 'NsTimezonesReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}


# SIG # Begin signature block
# MIIiUwYJKoZIhvcNAQcCoIIiRDCCIkACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCBrXDK9HW1VdCO
# NG1Xs3RtWaH7mvltsbXK2lPrZu8sPqCCEIwwggVRMIIEOaADAgECAhAqlTIY4QtL
# e2/RSyqeww0mMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYDVQQGEwJVUzEXMBUGA1UE
# ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
# cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
# cml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290
# IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE2MDUxMjAwMDAwMFoXDTI2MDUx
# MTIzNTk1OVowgZExCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jw
# b3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3QgTmV0d29yazFCMEAGA1UE
# AxM5U3ltYW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIENvZGUgU2ln
# bmluZyBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZCU
# ss4Vva9QGeDEzgpo6PhoHDzlK84LS1feob0ads/HnzSxAG14+SblzJmsdMae4Gzh
# LZEgk4drboRs1S5SF9CP2ers/Owg8g3aP22cJdHb+yDs8ND/SxC2uTkRjfYMokxP
# uB33fdDlz/dcM4BmpNYib3vjeBcGBfTGxpS3/stWKn4P+hjzSANNp24WtxUbfdwv
# 20MOKR7ReG9oGBu3gst+WI/Y0ph/kE27xws8cf7MxMv2o0IQrB3Kg/yRviyqgK+3
# mWlGcdOVIJnNUS6V+KwSHnzitCJpLgvAF3yg/e1cpi4iK2X/fc0xpGOs3yLlk3yi
# ToLCEyy/HIsiPatm7QIDAQABo4IBdTCCAXEwLgYIKwYBBQUHAQEEIjAgMB4GCCsG
# AQUFBzABhhJodHRwOi8vcy5zeW1jZC5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADBg
# BgNVHSAEWTBXMFUGBWeBDAEDMEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1j
# Yi5jb20vY3BzMCUGCCsGAQUFBwICMBkaF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBh
# MDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9zLnN5bWNiLmNvbS91bml2ZXJzYWwt
# cm9vdC5jcmwwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgEG
# MCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTM4ODAdBgNV
# HQ4EFgQUq4sRSQsqAmJ1SpvFAiCghNJL+N4wHwYDVR0jBBgwFoAUtnf6aUhHn1MS
# 1cLqBzJ2B9GXBxkwDQYJKoZIhvcNAQELBQADggEBADAxqBF+Ga4dNNPS18ywHMoB
# oUoWX2jFyk0FWQH0/IUKp88fsBwgZAlBGBK0490yM3KZEytIXUmWESLnucRvBTBN
# bKwzvk1PImLW8WcqFnvGjI4OuZYAnQ5kAZJk6jf4BH4RYm+MLJxdC7j/3X9AzOiI
# 8p0mNEm0H735Wz94cy6B+mka85SPlTB+wrTYlSXSev6KOOiwb/ZvOfDO+oRWEH9W
# p8UUYLRPWjmBSqzhMmBLDhSg9R6hSEOXWZG9HWhmmDAAi8JZ1H72hRt6f7rbZWgO
# rW5ztlQ59GgDhXyhvFOzO6GCP3gkNQKkroWGwgXngHVcBZF57aqNh2kmiheB58Mw
# ggWNMIIDdaADAgECAgphLSPLAAAAAAAhMA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNV
# BAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4w
# HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAMTIE1pY3Jvc29m
# dCBDb2RlIFZlcmlmaWNhdGlvbiBSb290MB4XDTExMDIyMjE5NDYzOVoXDTIxMDIy
# MjE5NTYzOVowgb0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5j
# LjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMp
# IDIwMDggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE4
# MDYGA1UEAxMvVmVyaVNpZ24gVW5pdmVyc2FsIFJvb3QgQ2VydGlmaWNhdGlvbiBB
# dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHYTdesQE0
# 22LXFZv/WFqMIyPWYI6R15CYg3rmWBk4jMX25WSFtKJx++29udrNTQC0yC1zpcdp
# cZUfOTyyRAec6A76TUrEId8pYY8yImGCxYcfbox8XxYgUUTRcE9X6uMc48x57ljY
# DsKzRZPALOeaFyt7ADd6QTN44TPi8xAaf4csvvb190Li5b+HYolfAEvfxd3kdUQy
# QToecW5pywt1RgjRytIrldDP+7lAa2SMV038ExF5hO1eVPY0nwgB8xAlBhdK2vEd
# emZrmGBmpNnv0i6C8fDvCepEyRVq4gNuM9Osn1UAx/YIapS5X9zgM/GEYPlbJxG0
# /Bbyu1ZqgCWNAgMBAAGjgcswgcgwEQYDVR0gBAowCDAGBgRVHSAAMA8GA1UdEwEB
# /wQFMAMBAf8wCwYDVR0PBAQDAgGGMB0GA1UdDgQWBBS2d/ppSEefUxLVwuoHMnYH
# 0ZcHGTAfBgNVHSMEGDAWgBRi+wohW39DbhHaCVRQa/XSlnHxnjBVBgNVHR8ETjBM
# MEqgSKBGhkRodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0
# cy9NaWNyb3NvZnRDb2RlVmVyaWZSb290LmNybDANBgkqhkiG9w0BAQUFAAOCAgEA
# WUdSmjRDPbATxDK4+DfZVVANKqRnZzOUyf/Y9QysjVo5g0htsrtDj3sL81uvNHpP
# nrcI5/4BOBHeLzucPpYLslCC5rVVtGCWE0jtJy0lAnI4s/NlWYpiM3bVbPmV9J01
# TIOgwWf8g7V2k8boUhtZubqFlAo70SgFGxkM8yMXZUZ4DtlzSsC8PcBI4aT4h+UW
# 4VaHZTjhABeiHkQr9k9aKTywG7hfZUtI62qYKV5X4vVi2ENHsy5qE0GnfTgjBg33
# XOZ/us1lBJJSUiZgqKM8Ig2tt7pMMm9S3qubccme6L6fXqatd9dtJZVWKhhDwszB
# buHO30Xv/rdRKnyYtP5mg59rbOx01Z8yHyQ7QzrRBB0ASlul0m1mTMjBTezDATXB
# uHn94Mb2qCmgko09Q3d4ph5MwjgEWOs6gzQExjROE0WyW3IvcmpP5Rp8GGtE48hY
# H45xDIBrTit7PPhK45OSxLCavKZht9N8ynD1+v/NB6LZ6BHMbERQn3GwgtI2pllz
# vbcLW2mGe6Ufx53B0grdLkzCMbaHKo0Qevqnfjxf8LCg9UUF3nkSegKF8R6K05mH
# FylcvnVY1nkBBpVjOfsFFsc9SVGs+muYLcyXbqyzw2+CnACWfyQN6VlAYbNk27n5
# QaG57tlYjf8EV87Y/ur/Z1vOE/yc/PbhZs2joN13EbIwggWiMIIEiqADAgECAhAo
# MknpQET0/8yu7uTbXTF2MA0GCSqGSIb3DQEBCwUAMIGRMQswCQYDVQQGEwJVUzEd
# MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVj
# IFRydXN0IE5ldHdvcmsxQjBABgNVBAMTOVN5bWFudGVjIENsYXNzIDMgRXh0ZW5k
# ZWQgVmFsaWRhdGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBHMzAeFw0xODExMTkwMDAw
# MDBaFw0yMTExMTgyMzU5NTlaMIIBIzETMBEGCysGAQQBgjc8AgEDEwJVUzEZMBcG
# CysGAQQBgjc8AgECDAhEZWxhd2FyZTEZMBcGCysGAQQBgjc8AgEBDAhTYW4gSm9z
# ZTEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24xEDAOBgNVBAUTBzU2OTky
# NjUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQHDAhT
# YW4gSm9zZTErMCkGA1UECgwiSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgQ29t
# cGFueTEWMBQGA1UECwwNTmltYmxlc3RvcmFnZTErMCkGA1UEAwwiSGV3bGV0dCBQ
# YWNrYXJkIEVudGVycHJpc2UgQ29tcGFueTCCASIwDQYJKoZIhvcNAQEBBQADggEP
# ADCCAQoCggEBAKWSqwdskNaMZ0X9Nqn4RKr2Bc131ZU5pS3FWyBGPRumS2sFtCTa
# frdZ9i1xQL0dF3KcNHFFBAnkM/Ig4+UNOR/TIlAD7ssnDxNxfYG07GXxPmAlogoI
# 2s6CWQ1mmLjZoJPHcGqcBsjKvn9sw/OZ1buOjB9SPBn02sh3S2L7dFnlQ1LuJDYa
# sL0BlOzye9leSysvqyhDwMsYv3K7wNpyLoxi7Ee4z/ZBupMZY3LY8F7RMg6W2aHK
# zzqDaP/X867mLqHedB6aK80aQY3C4MVFfOqiLHQFIG7/gVa16aO4U1q8HDUZswRx
# IeiRMOaHje8VRdhtWUU2U+CQC4/RRx1GLsMCAwEAAaOCAV8wggFbMAkGA1UdEwQC
# MAAwDgYDVR0PAQH/BAQDAgeAMCsGA1UdHwQkMCIwIKAeoByGGmh0dHA6Ly9yaC5z
# eW1jYi5jb20vcmguY3JsMGAGA1UdIARZMFcwVQYFZ4EMAQMwTDAjBggrBgEFBQcC
# ARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGQwXaHR0cHM6
# Ly9kLnN5bWNiLmNvbS9ycGEwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwMwHwYDVR0j
# BBgwFoAUq4sRSQsqAmJ1SpvFAiCghNJL+N4wHQYDVR0OBBYEFCwOW0/Kegfs4BMM
# 4OMor35vnOjTMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3Jo
# LnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3JoLnN5bWNiLmNvbS9yaC5j
# cnQwDQYJKoZIhvcNAQELBQADggEBAHFMScjMHXHXJv6cZj0Kwh1Uphw2DfoLL5rz
# dOYd0vT8PH3WU3WwfJssqsU6LxvPIQlVj75z73PoegdDYLOH2NRfxMGYuw9Ru+4P
# vBEjWpJOeV3j5rM8yubcgF6twn6hkDbI5GsfaK7MJgovXOglzKuV7mCkJMHb8LDT
# qPE6mT9zDUR7YRaavhxV9YiiCnU7RLZd7HwtmJvygF/xkyJg+XYoTolQw7ZEtBVb
# UScbXdDmJO0BWpWlkAF+gMmIBlcdoZ7Avwf4DdQdp+KiDKRlMFTgp0fJ7uzfTZDY
# P+yEYst/1wNjCavw8EoALakact7/SR/x1WP0hR5qALp/jg4gdqIxghEdMIIRGQIB
# ATCBpjCBkTELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0
# aW9uMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMUIwQAYDVQQDEzlT
# eW1hbnRlYyBDbGFzcyAzIEV4dGVuZGVkIFZhbGlkYXRpb24gQ29kZSBTaWduaW5n
# IENBIC0gRzMCECgySelARPT/zK7u5NtdMXYwDQYJYIZIAWUDBAIBBQCgfDAQBgor
# BgEEAYI3AgEMMQIwADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEE
# AYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg5xDx1gTjUwMY
# MOgLNpzChBHzyX1AOmuAOcUeRxXzz9gwDQYJKoZIhvcNAQEBBQAEggEAcWfZEOSJ
# /3uszEyUjiW76BTyUMO+ALjusyV7D3qyLw/qVUqnxXqJ7FuHw7a5ZF3Hw4tNMqNf
# AneHbpZS++XolOQ8AVieC9MKPQIm/I5tam0lDklPjqf5YdxNTgfT6Aen5jApamVh
# jok1f9VDFi0uaUg7ckjGZZJloeu6KH9UwfuaL2oXa5KfjNbNHC10lEgTfjoInW7/
# i8znnjWHHJ4FyC+3w49rTvKQZ6tGyKnPdPKeB7e0TodGaYUFa8XxQEmTZoXt0Y2x
# zq9x2fma0/FV8XuAuL8F/PQhVcfQnSSoKdADyZldKPCDvKgMzMOkTb/meStGYqAv
# lFlykUzli0Jk56GCDskwgg7FBgorBgEEAYI3AwMBMYIOtTCCDrEGCSqGSIb3DQEH
# AqCCDqIwgg6eAgEDMQ8wDQYJYIZIAWUDBAIBBQAweAYLKoZIhvcNAQkQAQSgaQRn
# MGUCAQEGCWCGSAGG/WwHATAxMA0GCWCGSAFlAwQCAQUABCDBYhF2M5jD+ql5sMT/
# uQMEoQISpPByFkJnVr+Q26JXJgIRAOVLMtT4AQGzVsR3wYHwCQ0YDzIwMjAwOTAz
# MTA0ODQ3WqCCC7swggaCMIIFaqADAgECAhAEzT+FaK52xhuw/nFgzKdtMA0GCSqG
# SIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
# GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
# QTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0EwHhcNMTkxMDAxMDAwMDAwWhcN
# MzAxMDE3MDAwMDAwWjBMMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs
# IEluYy4xJDAiBgNVBAMTG1RJTUVTVEFNUC1TSEEyNTYtMjAxOS0xMC0xNTCCASIw
# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOlkNZz6qZhlZBvkF9y4KTbMZwlY
# hU0w4Mn/5Ts8EShQrwcx4l0JGML2iYxpCAQj4HctnRXluOihao7/1K7Sehbv+EG1
# HTl1wc8vp6xFfpRtrAMBmTxiPn56/UWXMbT6t9lCPqdVm99aT1gCqDJpIhO+i4It
# xpira5u0yfJlEQx0DbLwCJZ0xOiySKKhFKX4+uGJcEQ7je/7pPTDub0ULOsMKCcl
# gKsQSxYSYAtpIoxOzcbVsmVZIeB8LBKNcA6Pisrg09ezOXdQ0EIsLnrOnGd6OHdU
# QP9PlQQg1OvIzocUCP4dgN3Q5yt46r8fcMbuQhZTNkWbUxlJYp16ApuVFKMCAwEA
# AaOCAzgwggM0MA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB
# /wQMMAoGCCsGAQUFBwMIMIIBvwYDVR0gBIIBtjCCAbIwggGhBglghkgBhv1sBwEw
# ggGSMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIIB
# ZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBmACAAdABoAGkA
# cwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABpAHQAdQB0AGUA
# cwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAgAEQAaQBnAGkA
# QwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAgAFIAZQBsAHkA
# aQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAgAHcAaABpAGMA
# aAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBuAGQAIABhAHIA
# ZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBpAG4AIABiAHkA
# IAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG/WwDFTAfBgNVHSMEGDAWgBT0
# tuEgHf4prtLkYaWyoiWyyBc1bjAdBgNVHQ4EFgQUVlMPwcYHp03X2G5XcoBQTOTs
# nsEwcQYDVR0fBGowaDAyoDCgLoYsaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3No
# YTItYXNzdXJlZC10cy5jcmwwMqAwoC6GLGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv
# bS9zaGEyLWFzc3VyZWQtdHMuY3JsMIGFBggrBgEFBQcBAQR5MHcwJAYIKwYBBQUH
# MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBPBggrBgEFBQcwAoZDaHR0cDov
# L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJRFRpbWVz
# dGFtcGluZ0NBLmNydDANBgkqhkiG9w0BAQsFAAOCAQEALoOhRAVKBOO5MlL62YHw
# Grv4CY0juT3YkqHmRhxKL256PGNuNxejGr9YI7JDnJSDTjkJsCzox+HizO3LeWvO
# 3iMBR+2VVIHggHsSsa8Chqk6c2r++J/BjdEhjOQpgsOKC2AAAp0fR8SftApoU39a
# EKb4Iub4U5IxX9iCgy1tE0Kug8EQTqQk9Eec3g8icndcf0/pOZgrV5JE1+9uk9lD
# xwQzY1E3Vp5HBBHDo1hUIdjijlbXST9X/AqfI1579JSN3Z0au996KqbSRaZVDI/2
# TIryls+JRtwxspGQo18zMGBV9fxrMKyh7eRHTjOeZ2ootU3C7VuXgvjLqQhsUwm0
# 9zCCBTEwggQZoAMCAQICEAqhJdbWMht+QeQF2jaXwhUwDQYJKoZIhvcNAQELBQAw
# ZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQ
# d3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBS
# b290IENBMB4XDTE2MDEwNzEyMDAwMFoXDTMxMDEwNzEyMDAwMFowcjELMAkGA1UE
# BhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2lj
# ZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIFRpbWVz
# dGFtcGluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3QMu5L
# zY9/3am6gpnFOVQoV7YjSsQOB0UzURB90Pl9TWh+57ag9I2ziOSXv2MhkJi/E7xX
# 08PhfgjWahQAOPcuHjvuzKb2Mln+X2U/4Jvr40ZHBhpVfgsnfsCi9aDg3iI/Dv9+
# lfvzo7oiPhisEeTwmQNtO4V8CdPuXciaC1TjqAlxa+DPIhAPdc9xck4Krd9AOly3
# UeGheRTGTSQjMF287DxgaqwvB8z98OpH2YhQXv1mblZhJymJhFHmgudGUP2UKiyn
# 5HU+upgPhH+fMRTWrdXyZMt7HgXQhBlyF/EXBu89zdZN7wZC/aJTKk+FHcQdPK/P
# 2qwQ9d2srOlW/5MCAwEAAaOCAc4wggHKMB0GA1UdDgQWBBT0tuEgHf4prtLkYaWy
# oiWyyBc1bjAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzASBgNVHRMB
# Af8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcD
# CDB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj
# ZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t
# L0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHoweDA6oDigNoY0
# aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENB
# LmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNz
# dXJlZElEUm9vdENBLmNybDBQBgNVHSAESTBHMDgGCmCGSAGG/WwAAgQwKjAoBggr
# BgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1s
# BwEwDQYJKoZIhvcNAQELBQADggEBAHGVEulRh1Zpze/d2nyqY3qzeM8GN0CE70uE
# v8rPAwL9xafDDiBCLK938ysfDCFaKrcFNB1qrpn4J6JmvwmqYN92pDqTD/iy0dh8
# GWLoXoIlHsS6HHssIeLWWywUNUMEaLLbdQLgcseY1jxk5R9IEBhfiThhTWJGJIdj
# jJFSLK8pieV4H9YLFKWA1xJHcLN11ZOFk362kmf7U2GJqPVrlsD0WGkNfMgBsbko
# dbeZY4UijGHKeZR+WfyMD+NvtQEmtmyl7odRIeRYYJu6DC0rbaLEfrvEJStHAgh8
# Sa4TtuF8QkIoxhhWz0E0tmZdtnR79VYzIi8iNrJLokqV2PWmjlIxggJNMIICSQIB
# ATCBhjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFz
# c3VyZWQgSUQgVGltZXN0YW1waW5nIENBAhAEzT+FaK52xhuw/nFgzKdtMA0GCWCG
# SAFlAwQCAQUAoIGYMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG
# 9w0BCQUxDxcNMjAwOTAzMTA0ODQ3WjArBgsqhkiG9w0BCRACDDEcMBowGDAWBBQD
# Jb1QXtqWMC3CL0+gHkwovig0xTAvBgkqhkiG9w0BCQQxIgQgh5RBkbtvr6ZVHySh
# t6rN7cMGaWRgyYhrPxGj+IbnbcAwDQYJKoZIhvcNAQEBBQAEggEAurM0J2AkTMa9
# 1mkgsJE+D/zXsKArtZwRdMzR9AkSA/GaEmed6m2V2kPHlcj9OrAgHwSzFP0XGNro
# UJ6U6z2InzbeeL/UemOGkrdOUF5dF5NkakXMbmrheHOWkNpY/nI/K7sq2tpIFnNJ
# cg1+KNZQKtxZfSIV/QKCt6igJknL5aLxoFHxQ/p9prS5hxV4S6WgOBjaQfFAMmU3
# Uno47vuPiFf5yreq8IUfVPJbsUXT+uhIGOpCP3GmMlEjT6T7RxmuGorCw7QEpHps
# RS3L8R/ajkK0uS4o5dSOdzt7jwbyid5pnMZBfjPK9EpeZhTPX+UtiYM8SaL9YBYf
# +jm4sNzOYw==
# SIG # End signature block