Get-ExternalNode.ps1
function Get-ExternalNode { <# .SYNOPSIS Retrieves one or more entities from the ExternalNode entity set. .DESCRIPTION Retrieves one or more entities from the ExternalNode entity set. You can retrieve one ore more entities from the entity set by specifying Id, Name or other properties. .INPUTS The Cmdlet can either return all available entities or filter entities on specified conditions. See PARAMETERS section on possible inputs. .OUTPUTS default | json | json-pretty | xml | xml-pretty In addition output can be filtered on specified properties. .EXAMPLE Get-ExternalNode -ListAvailable -Select Id, Name Id Name -- ---- 218 abhenry 271 abhenry 358 abhenry 572 abhenry 636 abhenry 666 abhenry 1017 abhenry 270 absence 406 absence 490 absence 568 absence 607 absence 613 absence 745 absence 875 absence 907 absence 967 absence 1024 absence 1081 absence 1179 absence 361 aggrade 373 aggrade ... Retrieves the id and name of all ExternalNodes. .EXAMPLE Get-ExternalNode 218 Parameters : {"Hostname":"Server01"} EntityKindId : 27 ParentId : 1 Id : 218 Tid : 22222222-2222-2222-2222-222222222222 Name : abhenry Description : abhenry is a whiles for timeous purposes CreatedById : 1 ModifiedById : 1 Created : 15.12.2015 12:06:49 +01:00 Modified : 15.12.2015 12:06:49 +01:00 RowVersion : {0, 0, 0, 0...} Parent : EntityKind : Children : {} IncomingAssocs : {} OutgoingAssocs : {} Tenant : CreatedBy : ModifiedBy : Retrieves the ExternalNode object with Id 218 and returns all properties of it. .EXAMPLE Get-ExternalNode 218 -Select Parameters -ValueOnly -ConvertFromJson Hostname --- Server01 Similar to the previous example, but only returns the 'Parameters' property of it. In addition the contents of the property will be converted from JSON. .EXAMPLE Get-ExternalNode 218 -Select Name -ValueOnly abhenry Retrieves the name of the ExternalNode with Id 218. .EXAMPLE Get-ExternalNode -ModifiedBy SYSTEM -Select Id, Name Id Name -- ---- 1 Root ExternalNode 2 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 3 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 4 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 5 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 6 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 7 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 8 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 9 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 10 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 11 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 12 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 13 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 14 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 15 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 16 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 17 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 18 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 19 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode 20 biz.dfch.CS.Appclusive.Core.OdataServices.Core.ExternalNode Retrieves id and name of all ExternalNodes that have been modified by user with name 'SYSTEM' (case insensitive substring match). .EXAMPLE Get-ExternalNode AppclusiveScheduler -Select Name -ValueOnly -DefaultValue 'AppclusiveSchedulerNotAvailable' AppclusiveSchedulerNotAvailable Retrieves the 'Name' property of a ExternalNode with Name 'AppclusiveScheduler' and AppclusiveSchedulerNotAvailable if the entity is not found. .LINK Online Version: http://dfch.biz/biz/dfch/PS/Appclusive/Client/Get-ExternalNode/ .NOTES See module manifest for required software versions and dependencies. #> [CmdletBinding( SupportsShouldProcess = $true , ConfirmImpact = 'Low' , HelpURI = 'http://dfch.biz/biz/dfch/PS/Appclusive/Client/Get-ExternalNode/' , DefaultParameterSetName = 'list' )] PARAM ( # Specifies the id of the entity [Parameter(Mandatory = $false, Position = 0, ParameterSetName = 'id')] [long] $Id , # Specifies the name of the entity [Parameter(Mandatory = $false, Position = 0, ParameterSetName = 'name')] [Alias('n')] [string] $Name , # Filter by external id [Parameter(Mandatory = $false, ParameterSetName = 'name')] [string] $ExternalId , # Filter by external id [Parameter(Mandatory = $false, ParameterSetName = 'name')] [long] $NodeId , # Filter by type [Parameter(Mandatory = $false, ParameterSetName = 'name')] [Alias("Type")] [string] $ExternalType , # Filter by creator [Parameter(Mandatory = $false, ParameterSetName = 'name')] [string] $CreatedBy , # Filter by modifier [Parameter(Mandatory = $false, ParameterSetName = 'name')] [string] $ModifiedBy , # Specify the attributes of the entity to return [Parameter(Mandatory = $false)] [string[]] $Select = @() , # Specifies to return only values without header information. # This parameter takes precendes over the 'Select' parameter. [ValidateScript( { if(1 -eq $Select.Count -And $_) { $true; } else { throw("You must specify exactly one 'Select' property when using 'ValueOnly'."); } } )] [Parameter(Mandatory = $false, ParameterSetName = 'name')] [Parameter(Mandatory = $false, ParameterSetName = 'id')] [Alias('HideTableHeaders')] [switch] $ValueOnly , # This value is only returned if the regular search would have returned no results [Parameter(Mandatory = $false, ParameterSetName = 'name')] [Alias('default')] $DefaultValue , # Specifies to deserialize JSON payloads [ValidateScript( { if($ValueOnly -And $_) { $true; } else { throw("You must set the 'ValueOnly' switch when using 'ConvertFromJson'."); } } )] [Parameter(Mandatory = $false, ParameterSetName = 'name')] [Parameter(Mandatory = $false, ParameterSetName = 'id')] [Alias('Convert')] [switch] $ConvertFromJson , # Service reference to Appclusive [Parameter(Mandatory = $false)] [Alias('Services')] [hashtable] $svc = (Get-Variable -Name $MyInvocation.MyCommand.Module.PrivateData.MODULEVAR -ValueOnly).Services , # Indicates to return all file information [Parameter(Mandatory = $false, ParameterSetName = 'list')] [switch] $ListAvailable = $false , # Indicates to return node information [Parameter(Mandatory = $false, ParameterSetName = 'name')] [Parameter(Mandatory = $false, ParameterSetName = 'id')] [switch] $ExpandNode = $false , # Indicates to return job information [Parameter(Mandatory = $false, ParameterSetName = 'name')] [Parameter(Mandatory = $false, ParameterSetName = 'id')] [Alias('ExpandExternalNodeAttributes')] [Alias('ExpandAttributes')] [switch] $ExpandBags = $false , # Specifies the return format of the Cmdlet [ValidateSet('default', 'json', 'json-pretty', 'xml', 'xml-pretty')] [Parameter(Mandatory = $false)] [alias('ReturnFormat')] [string] $As = 'default' ) Begin { trap { Log-Exception $_; break; } $datBegin = [datetime]::Now; [string] $fn = $MyInvocation.MyCommand.Name; Log-Debug -fn $fn -msg ("CALL. svc '{0}'. Name '{1}'." -f ($svc -is [Object]), $Name) -fac 1; $EntitySetName = 'ExternalNodes'; # Parameter validation Contract-Requires ($svc.Core -is [biz.dfch.CS.Appclusive.Api.Core.Core]) "Connect to the server before using the Cmdlet" Contract-Requires (1 -ge ($PSBoundParameters.GetEnumerator() | Where { $_.Key -match 'Expand' -and $_.Value -eq $true}).Count) "You can specify only one 'Expand...' param."; if($Select) { $Select = $Select | Select -Unique; } } # Begin Process { trap { Log-Exception $_; break; } # Default test variable for checking function response codes. [Boolean] $fReturn = $false; # Return values are always and only returned via OutputParameter. $OutputParameter = $null; Contract-Assert ($PSCmdlet.ShouldProcess(($PSBoundParameters | Out-String))) if($PSCmdlet.ParameterSetName -eq 'list') { if($Select) { $Response = $svc.Core.$EntitySetName | Select -Property $Select; } else { $Response = $svc.Core.$EntitySetName | Select; } } else { $Exp = @(); if($PSCmdlet.ParameterSetName -eq 'id') { $Exp += ("Id eq {0}" -f $Id); } if($Name) { $Exp += ("tolower(Name) eq '{0}'" -f $Name.ToLower()); } if($ExternalType) { $Exp += ("tolower(ExternalType) eq '{0}'" -f $ExternalType.ToLower()); } if($ExternalId) { $Exp += ("tolower(ExternalId) eq '{0}'" -f $ExternalId.ToLower()); } if($NodeId) { $Exp += ("NodeId eq {0}" -f $NodeId); } if($CreatedBy) { $CreatedById = Get-User -svc $svc $CreatedBy -Select Id -ValueOnly; if ( !$CreatedById ) { # User not found return; } $Exp += ("(CreatedById eq {0})" -f $CreatedById); } if($ModifiedBy) { $ModifiedById = Get-User -svc $svc $ModifiedBy -Select Id -ValueOnly; if ( !$ModifiedById ) { # User not found return; } $Exp += ("(ModifiedById eq {0})" -f $ModifiedById); } $FilterExpression = [String]::Join(' and ', $Exp); if($Select) { $Response = $svc.Core.$EntitySetName.AddQueryOption('$filter', $FilterExpression) | Select -Property $Select; } else { $Response = $svc.Core.$EntitySetName.AddQueryOption('$filter', $FilterExpression) | Select; if ( $ExpandNode ) { $ResponseTemp = New-Object System.Collections.ArrayList; foreach ($item in $Response) { if ( $item ) { $Response_ = Get-Node -Id $item.NodeId -svc $svc; $null = $ResponseTemp.Add($Response_); } } $Response = $ResponseTemp.ToArray(); } if ( $ExpandBags ) { $ResponseTemp = New-Object System.Collections.ArrayList; foreach ($item in $Response) { if ( $item ) { $Response_ = $svc.Core.ExternalNodeBags.AddQueryOption('$filter', 'ExternaldNodeId eq {0}' -f $item.Id); $null = $ResponseTemp.Add($Response_); } } $Response = $ResponseTemp.ToArray(); } } if(1 -eq $Select.Count -And $ValueOnly) { $Response = $Response.$Select; } if($PSBoundParameters.ContainsKey('DefaultValue') -And !$Response) { $Response = $DefaultValue; } if($ValueOnly -And $ConvertFromJson) { $ResponseTemp = New-Object System.Collections.ArrayList; foreach($item in $Response) { try { $null = $ResponseTemp.Add((ConvertFrom-Json -InputObject $item)); } catch { $null = $ResponseTemp.Add($item); } } $Response = $ResponseTemp.ToArray(); } } $OutputParameter = Format-ResultAs $Response $As $fReturn = $true; } # Process End { $datEnd = [datetime]::Now; Log-Debug -fn $fn -msg ("RET. fReturn: [{0}]. Execution time: [{1}]ms. Started: [{2}]." -f $fReturn, ($datEnd - $datBegin).TotalMilliseconds, $datBegin.ToString('yyyy-MM-dd HH:mm:ss.fffzzz')) -fac 2; # Return values are always and only returned via OutputParameter. return $OutputParameter; } # End } # function if($MyInvocation.ScriptName) { Export-ModuleMember -Function Get-ExternalNode; } # # Copyright 2014-2015 d-fens GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SIG # Begin signature block # MIIXDwYJKoZIhvcNAQcCoIIXADCCFvwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU3M6LL0mWyz+69olpPYnVfJ3p # QKSgghHCMIIEFDCCAvygAwIBAgILBAAAAAABL07hUtcwDQYJKoZIhvcNAQEFBQAw # VzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV # BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0 # MTMxMDAwMDBaFw0yODAxMjgxMjAwMDBaMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQK # ExBHbG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIFRpbWVzdGFt # cGluZyBDQSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlO9l # +LVXn6BTDTQG6wkft0cYasvwW+T/J6U00feJGr+esc0SQW5m1IGghYtkWkYvmaCN # d7HivFzdItdqZ9C76Mp03otPDbBS5ZBb60cO8eefnAuQZT4XljBFcm05oRc2yrmg # jBtPCBn2gTGtYRakYua0QJ7D/PuV9vu1LpWBmODvxevYAll4d/eq41JrUJEpxfz3 # zZNl0mBhIvIG+zLdFlH6Dv2KMPAXCae78wSuq5DnbN96qfTvxGInX2+ZbTh0qhGL # 2t/HFEzphbLswn1KJo/nVrqm4M+SU4B09APsaLJgvIQgAIMboe60dAXBKY5i0Eex # +vBTzBj5Ljv5cH60JQIDAQABo4HlMIHiMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB # Af8ECDAGAQH/AgEAMB0GA1UdDgQWBBRG2D7/3OO+/4Pm9IWbsN1q1hSpwTBHBgNV # HSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFs # c2lnbi5jb20vcmVwb3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Ny # bC5nbG9iYWxzaWduLm5ldC9yb290LmNybDAfBgNVHSMEGDAWgBRge2YaRQ2XyolQ # L30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEATl5WkB5GtNlJMfO7FzkoG8IW # 3f1B3AkFBJtvsqKa1pkuQJkAVbXqP6UgdtOGNNQXzFU6x4Lu76i6vNgGnxVQ380W # e1I6AtcZGv2v8Hhc4EvFGN86JB7arLipWAQCBzDbsBJe/jG+8ARI9PBw+DpeVoPP # PfsNvPTF7ZedudTbpSeE4zibi6c1hkQgpDttpGoLoYP9KOva7yj2zIhd+wo7AKvg # IeviLzVsD440RZfroveZMzV+y5qKu0VN5z+fwtmK+mWybsd+Zf/okuEsMaL3sCc2 # SI8mbzvuTXYfecPlf5Y1vC0OzAGwjn//UYCAp5LUs0RGZIyHTxZjBzFLY7Df8zCC # BCkwggMRoAMCAQICCwQAAAAAATGJxjfoMA0GCSqGSIb3DQEBCwUAMEwxIDAeBgNV # BAsTF0dsb2JhbFNpZ24gUm9vdCBDQSAtIFIzMRMwEQYDVQQKEwpHbG9iYWxTaWdu # MRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTExMDgwMjEwMDAwMFoXDTE5MDgwMjEw # MDAwMFowWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex # MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH # MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPv0Z8p6djTgnY8YqDS # SdYWHvHP8NC6SEMDLacd8gE0SaQQ6WIT9BP0FoO11VdCSIYrlViH6igEdMtyEQ9h # JuH6HGEVxyibTQuCDyYrkDqW7aTQaymc9WGI5qRXb+70cNCNF97mZnZfdB5eDFM4 # XZD03zAtGxPReZhUGks4BPQHxCMD05LL94BdqpxWBkQtQUxItC3sNZKaxpXX9c6Q # MeJ2s2G48XVXQqw7zivIkEnotybPuwyJy9DDo2qhydXjnFMrVyb+Vpp2/WFGomDs # KUZH8s3ggmLGBFrn7U5AXEgGfZ1f53TJnoRlDVve3NMkHLQUEeurv8QfpLqZ0BdY # Nc0CAwEAAaOB/TCB+jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB # ADAdBgNVHQ4EFgQUGUq4WuRNMaUU5V7sL6Mc+oCMMmswRwYDVR0gBEAwPjA8BgRV # HSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3Jl # cG9zaXRvcnkvMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2ln # bi5uZXQvcm9vdC1yMy5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHwYDVR0jBBgw # FoAUj/BLf6guRSSuTVD6Y5qL3uLdG7wwDQYJKoZIhvcNAQELBQADggEBAHmwaTTi # BYf2/tRgLC+GeTQD4LEHkwyEXPnk3GzPbrXsCly6C9BoMS4/ZL0Pgmtmd4F/ximl # F9jwiU2DJBH2bv6d4UgKKKDieySApOzCmgDXsG1szYjVFXjPE/mIpXNNwTYr3MvO # 23580ovvL72zT006rbtibiiTxAzL2ebK4BEClAOwvT+UKFaQHlPCJ9XJPM0aYx6C # WRW2QMqngarDVa8z0bV16AnqRwhIIvtdG/Mseml+xddaXlYzPK1X6JMlQsPSXnE7 # ShxU7alVrCgFx8RsXdw8k/ZpPIJRzhoVPV4Bc/9Aouq0rtOO+u5dbEfHQfXUVlfy # GDcy1tTMS/Zx4HYwggSfMIIDh6ADAgECAhIRIdaZp2SXPvH4Qn7pGcxTQRQwDQYJ # KoZIhvcNAQEFBQAwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24g # bnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzIw # HhcNMTYwNTI0MDAwMDAwWhcNMjcwNjI0MDAwMDAwWjBgMQswCQYDVQQGEwJTRzEf # MB0GA1UEChMWR01PIEdsb2JhbFNpZ24gUHRlIEx0ZDEwMC4GA1UEAxMnR2xvYmFs # U2lnbiBUU0EgZm9yIE1TIEF1dGhlbnRpY29kZSAtIEcyMIIBIjANBgkqhkiG9w0B # AQEFAAOCAQ8AMIIBCgKCAQEAsBeuotO2BDBWHlgPse1VpNZUy9j2czrsXV6rJf02 # pfqEw2FAxUa1WVI7QqIuXxNiEKlb5nPWkiWxfSPjBrOHOg5D8NcAiVOiETFSKG5d # QHI88gl3p0mSl9RskKB2p/243LOd8gdgLE9YmABr0xVU4Prd/4AsXximmP/Uq+yh # RVmyLm9iXeDZGayLV5yoJivZF6UQ0kcIGnAsM4t/aIAqtaFda92NAgIpA6p8N7u7 # KU49U5OzpvqP0liTFUy5LauAo6Ml+6/3CGSwekQPXBDXX2E3qk5r09JTJZ2Cc/os # +XKwqRk5KlD6qdA8OsroW+/1X1H0+QrZlzXeaoXmIwRCrwIDAQABo4IBXzCCAVsw # DgYDVR0PAQH/BAQDAgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEeMDQwMgYIKwYB # BQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkG # A1UdEwQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQgYDVR0fBDswOTA3oDWg # M4YxaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3RpbWVzdGFtcGluZ2cy # LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYBBQUHMAKGOGh0dHA6Ly9zZWN1cmUu # Z2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzdGltZXN0YW1waW5nZzIuY3J0MB0GA1Ud # DgQWBBTUooRKOFoYf7pPMFC9ndV6h9YJ9zAfBgNVHSMEGDAWgBRG2D7/3OO+/4Pm # 9IWbsN1q1hSpwTANBgkqhkiG9w0BAQUFAAOCAQEAj6kakW0EpjcgDoOW3iPTa24f # bt1kPWghIrX4RzZpjuGlRcckoiK3KQnMVFquxrzNY46zPVBI5bTMrs2SjZ4oixNK # Eaq9o+/Tsjb8tKFyv22XY3mMRLxwL37zvN2CU6sa9uv6HJe8tjecpBwwvKu8LUc2 # 35IgA+hxxlj2dQWaNPALWVqCRDSqgOQvhPZHXZbJtsrKnbemuuRQ09Q3uLogDtDT # kipbxFm7oW3bPM5EncE4Kq3jjb3NCXcaEL5nCgI2ZIi5sxsm7ueeYMRGqLxhM2zP # TrmcuWrwnzf+tT1PmtNN/94gjk6Xpv2fCbxNyhh2ybBNhVDygNIdBvVYBAexGDCC # BNYwggO+oAMCAQICEhEhDRayW4wRltP+V8mGEea62TANBgkqhkiG9w0BAQsFADBa # MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEwMC4GA1UE # AxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1NiAtIEcyMB4XDTE1 # MDUwNDE2NDMyMVoXDTE4MDUwNDE2NDMyMVowVTELMAkGA1UEBhMCQ0gxDDAKBgNV # BAgTA1p1ZzEMMAoGA1UEBxMDWnVnMRQwEgYDVQQKEwtkLWZlbnMgR21iSDEUMBIG # A1UEAxMLZC1mZW5zIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB # AQDNPSzSNPylU9jFM78Q/GjzB7N+VNqikf/use7p8mpnBZ4cf5b4qV3rqQd62rJH # RlAsxgouCSNQrl8xxfg6/t/I02kPvrzsR4xnDgMiVCqVRAeQsWebafWdTvWmONBS # lxJejPP8TSgXMKFaDa+2HleTycTBYSoErAZSWpQ0NqF9zBadjsJRVatQuPkTDrwL # eWibiyOipK9fcNoQpl5ll5H9EG668YJR3fqX9o0TQTkOmxXIL3IJ0UxdpyDpLEkt # tBG6Y5wAdpF2dQX2phrfFNVY54JOGtuBkNGMSiLFzTkBA1fOlA6ICMYjB8xIFxVv # rN1tYojCrqYkKMOjwWQz5X8zAgMBAAGjggGZMIIBlTAOBgNVHQ8BAf8EBAMCB4Aw # TAYDVR0gBEUwQzBBBgkrBgEEAaAyATIwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93 # d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYDVR0TBAIwADATBgNVHSUE # DDAKBggrBgEFBQcDAzBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLmdsb2Jh # bHNpZ24uY29tL2dzL2dzY29kZXNpZ25zaGEyZzIuY3JsMIGQBggrBgEFBQcBAQSB # gzCBgDBEBggrBgEFBQcwAoY4aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9j # YWNlcnQvZ3Njb2Rlc2lnbnNoYTJnMi5jcnQwOAYIKwYBBQUHMAGGLGh0dHA6Ly9v # Y3NwMi5nbG9iYWxzaWduLmNvbS9nc2NvZGVzaWduc2hhMmcyMB0GA1UdDgQWBBTN # GDddiIYZy9p3Z84iSIMd27rtUDAfBgNVHSMEGDAWgBQZSrha5E0xpRTlXuwvoxz6 # gIwyazANBgkqhkiG9w0BAQsFAAOCAQEAAApsOzSX1alF00fTeijB/aIthO3UB0ks # 1Gg3xoKQC1iEQmFG/qlFLiufs52kRPN7L0a7ClNH3iQpaH5IEaUENT9cNEXdKTBG # 8OrJS8lrDJXImgNEgtSwz0B40h7bM2Z+0DvXDvpmfyM2NwHF/nNVj7NzmczrLRqN # 9de3tV0pgRqnIYordVcmb24CZl3bzpwzbQQy14Iz+P5Z2cnw+QaYzAuweTZxEUcJ # bFwpM49c1LMPFJTuOKkUgY90JJ3gVTpyQxfkc7DNBnx74PlRzjFmeGC/hxQt0hvo # eaAiBdjo/1uuCTToigVnyRH+c0T2AezTeoFb7ne3I538hWeTdU5q9jGCBLcwggSz # AgEBMHAwWjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex # MDAuBgNVBAMTJ0dsb2JhbFNpZ24gQ29kZVNpZ25pbmcgQ0EgLSBTSEEyNTYgLSBH # MgISESENFrJbjBGW0/5XyYYR5rrZMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEM # MQowCKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQB # gjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBSLtergZNg8EMW1 # E5f+Z2fQF9P8fjANBgkqhkiG9w0BAQEFAASCAQB3ACQ1iLaD6VF2MZ/FIH+r1VYM # HxHZpqYuONJIHILFGSPmjarsxXkAaS5+9jLfumFcuymhaqgNMsrFyH/xL49p+Yo3 # QcwkjZ3q+H8DpJhsO5wlMEYyjqKY235GsSfozcNxq2C4+OEOK8IBzxk8PfKQuhZY # 8YCtvigb5oBWlCuDe4QZwujcUOWhHA6Cw4ZpHlhMHrI3jUY7MuC2pqsgxGwhhPhE # jyV28O20X6hIaMNHOr9I3RumFymwoqHFax2vLnqxC/0bAVV59ua2v4cnvC6Hww3I # AYum1KcDIUalMib/LzLbeprX23WrCquMyiODKRpEj75WTHoxdRTltcLEdMd7oYIC # ojCCAp4GCSqGSIb3DQEJBjGCAo8wggKLAgEBMGgwUjELMAkGA1UEBhMCQkUxGTAX # BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGlt # ZXN0YW1waW5nIENBIC0gRzICEhEh1pmnZJc+8fhCfukZzFNBFDAJBgUrDgMCGgUA # oIH9MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE2 # MDgyNDE1NTQwN1owIwYJKoZIhvcNAQkEMRYEFITcC9zfOH+KluBNhNv6aIPPodqw # MIGdBgsqhkiG9w0BCRACDDGBjTCBijCBhzCBhAQUY7gvq2H1g5CWlQULACScUCkz # 7HkwbDBWpFQwUjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt # c2ExKDAmBgNVBAMTH0dsb2JhbFNpZ24gVGltZXN0YW1waW5nIENBIC0gRzICEhEh # 1pmnZJc+8fhCfukZzFNBFDANBgkqhkiG9w0BAQEFAASCAQCbfoNEO/6bbpg+V7ap # aWsazOzFVUutcMQ3SnUaCW0UM/+OlxOkxlZ4cTpTEQsCJsPwm1VZE1TX07G6hOwv # dMcP/QVy+2xavDSK8fBEASiaxlvx436pyLJ63IooZTUO/kZKbg/t9N3D4Sd4rtrl # 21iPRh4P8Uv2FlUUiasn4gGedeWHS/i4TplLEwg9F74snds0CWQQdTSChPQmdN7X # Yl5lIlpsSIX98n/N/djaFQyHF0PyP+OCb/dgH59f7jNxrylHUc5cSEeLVADhgydh # QsNGumntw2ALZcC+DCGqWqsow1Kfw+DGdqXqTAxOQDvf4uM3gRwoszL9o1zNY2wc # Ls7V # SIG # End signature block |