Commit 3359a5a5 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent f7c17a06
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
module GitHelper module GitHelper
def strip_signature(text) def strip_signature(text)
text.gsub(/-----BEGIN PGP SIGNATURE-----(.*)-----END PGP SIGNATURE-----/m, "") text = text.gsub(/-----BEGIN PGP SIGNATURE-----(.*)-----END PGP SIGNATURE-----/m, "")
text.gsub(/-----BEGIN PGP MESSAGE-----(.*)-----END PGP MESSAGE-----/m, "") text = text.gsub(/-----BEGIN PGP MESSAGE-----(.*)-----END PGP MESSAGE-----/m, "")
text.gsub(/-----BEGIN SIGNED MESSAGE-----(.*)-----END SIGNED MESSAGE-----/m, "") text = text.gsub(/-----BEGIN SIGNED MESSAGE-----(.*)-----END SIGNED MESSAGE-----/m, "")
text
end end
def short_sha(text) def short_sha(text)
......
---
title: 'Correctly return stripped PGP text'
merge_request: 21187
author: Roger Meier
type: fixed
...@@ -1128,7 +1128,14 @@ enum EntryType { ...@@ -1128,7 +1128,14 @@ enum EntryType {
} }
type Epic implements Noteable { type Epic implements Noteable {
"""
Author of the epic
"""
author: User! author: User!
"""
Children (sub-epics) of the epic
"""
children( children(
""" """
Returns the elements in the list that come after the specified cursor. Returns the elements in the list that come after the specified cursor.
...@@ -1197,13 +1204,25 @@ type Epic implements Noteable { ...@@ -1197,13 +1204,25 @@ type Epic implements Noteable {
""" """
state: EpicState state: EpicState
): EpicConnection ): EpicConnection
"""
Timestamp of the epic's closure
"""
closedAt: Time closedAt: Time
"""
Timestamp of the epic's creation
"""
createdAt: Time createdAt: Time
""" """
Number of open and closed descendant epics and issues Number of open and closed descendant epics and issues
""" """
descendantCounts: EpicDescendantCount descendantCounts: EpicDescendantCount
"""
Description of the epic
"""
description: String description: String
""" """
...@@ -1235,14 +1254,50 @@ type Epic implements Noteable { ...@@ -1235,14 +1254,50 @@ type Epic implements Noteable {
Number of downvotes the epic has received Number of downvotes the epic has received
""" """
downvotes: Int! downvotes: Int!
"""
Due date of the epic
"""
dueDate: Time dueDate: Time
"""
Fixed due date of the epic
"""
dueDateFixed: Time dueDateFixed: Time
"""
Inherited due date of the epic from milestones
"""
dueDateFromMilestones: Time dueDateFromMilestones: Time
"""
Indicates if the due date has been manually set
"""
dueDateIsFixed: Boolean dueDateIsFixed: Boolean
"""
Group to which the epic belongs
"""
group: Group! group: Group!
"""
Indicates if the epic has children
"""
hasChildren: Boolean! hasChildren: Boolean!
"""
Indicates if the epic has direct issues
"""
hasIssues: Boolean! hasIssues: Boolean!
"""
ID of the epic
"""
id: ID! id: ID!
"""
Internal ID of the epic
"""
iid: ID! iid: ID!
""" """
...@@ -1319,6 +1374,10 @@ type Epic implements Noteable { ...@@ -1319,6 +1374,10 @@ type Epic implements Noteable {
""" """
last: Int last: Int
): NoteConnection! ): NoteConnection!
"""
Parent epic of the epic
"""
parent: Epic parent: Epic
""" """
...@@ -1349,20 +1408,48 @@ type Epic implements Noteable { ...@@ -1349,20 +1408,48 @@ type Epic implements Noteable {
relationPath: String relationPath: String
""" """
The relative position of the epic in the Epic tree The relative position of the epic in the epic tree
""" """
relativePosition: Int relativePosition: Int
"""
Start date of the epic
"""
startDate: Time startDate: Time
"""
Fixed start date of the epic
"""
startDateFixed: Time startDateFixed: Time
"""
Inherited start date of the epic from milestones
"""
startDateFromMilestones: Time startDateFromMilestones: Time
"""
Indicates if the start date has been manually set
"""
startDateIsFixed: Boolean startDateIsFixed: Boolean
"""
State of the epic
"""
state: EpicState! state: EpicState!
""" """
Boolean flag for whether the currently logged in user is subscribed to this epic Boolean flag for whether the currently logged in user is subscribed to this epic
""" """
subscribed: Boolean! subscribed: Boolean!
"""
Title of the epic
"""
title: String title: String
"""
Timestamp of the epic's last activity
"""
updatedAt: Time updatedAt: Time
""" """
......
...@@ -3342,7 +3342,7 @@ ...@@ -3342,7 +3342,7 @@
"fields": [ "fields": [
{ {
"name": "author", "name": "author",
"description": null, "description": "Author of the epic",
"args": [ "args": [
], ],
...@@ -3360,7 +3360,7 @@ ...@@ -3360,7 +3360,7 @@
}, },
{ {
"name": "children", "name": "children",
"description": null, "description": "Children (sub-epics) of the epic",
"args": [ "args": [
{ {
"name": "iid", "name": "iid",
...@@ -3519,7 +3519,7 @@ ...@@ -3519,7 +3519,7 @@
}, },
{ {
"name": "closedAt", "name": "closedAt",
"description": null, "description": "Timestamp of the epic's closure",
"args": [ "args": [
], ],
...@@ -3533,7 +3533,7 @@ ...@@ -3533,7 +3533,7 @@
}, },
{ {
"name": "createdAt", "name": "createdAt",
"description": null, "description": "Timestamp of the epic's creation",
"args": [ "args": [
], ],
...@@ -3561,7 +3561,7 @@ ...@@ -3561,7 +3561,7 @@
}, },
{ {
"name": "description", "name": "description",
"description": null, "description": "Description of the epic",
"args": [ "args": [
], ],
...@@ -3650,7 +3650,7 @@ ...@@ -3650,7 +3650,7 @@
}, },
{ {
"name": "dueDate", "name": "dueDate",
"description": null, "description": "Due date of the epic",
"args": [ "args": [
], ],
...@@ -3664,7 +3664,7 @@ ...@@ -3664,7 +3664,7 @@
}, },
{ {
"name": "dueDateFixed", "name": "dueDateFixed",
"description": null, "description": "Fixed due date of the epic",
"args": [ "args": [
], ],
...@@ -3678,7 +3678,7 @@ ...@@ -3678,7 +3678,7 @@
}, },
{ {
"name": "dueDateFromMilestones", "name": "dueDateFromMilestones",
"description": null, "description": "Inherited due date of the epic from milestones",
"args": [ "args": [
], ],
...@@ -3692,7 +3692,7 @@ ...@@ -3692,7 +3692,7 @@
}, },
{ {
"name": "dueDateIsFixed", "name": "dueDateIsFixed",
"description": null, "description": "Indicates if the due date has been manually set",
"args": [ "args": [
], ],
...@@ -3706,7 +3706,7 @@ ...@@ -3706,7 +3706,7 @@
}, },
{ {
"name": "group", "name": "group",
"description": null, "description": "Group to which the epic belongs",
"args": [ "args": [
], ],
...@@ -3724,7 +3724,7 @@ ...@@ -3724,7 +3724,7 @@
}, },
{ {
"name": "hasChildren", "name": "hasChildren",
"description": null, "description": "Indicates if the epic has children",
"args": [ "args": [
], ],
...@@ -3742,7 +3742,7 @@ ...@@ -3742,7 +3742,7 @@
}, },
{ {
"name": "hasIssues", "name": "hasIssues",
"description": null, "description": "Indicates if the epic has direct issues",
"args": [ "args": [
], ],
...@@ -3760,7 +3760,7 @@ ...@@ -3760,7 +3760,7 @@
}, },
{ {
"name": "id", "name": "id",
"description": null, "description": "ID of the epic",
"args": [ "args": [
], ],
...@@ -3778,7 +3778,7 @@ ...@@ -3778,7 +3778,7 @@
}, },
{ {
"name": "iid", "name": "iid",
"description": null, "description": "Internal ID of the epic",
"args": [ "args": [
], ],
...@@ -3959,7 +3959,7 @@ ...@@ -3959,7 +3959,7 @@
}, },
{ {
"name": "parent", "name": "parent",
"description": null, "description": "Parent epic of the epic",
"args": [ "args": [
], ],
...@@ -4067,7 +4067,7 @@ ...@@ -4067,7 +4067,7 @@
}, },
{ {
"name": "relativePosition", "name": "relativePosition",
"description": "The relative position of the epic in the Epic tree", "description": "The relative position of the epic in the epic tree",
"args": [ "args": [
], ],
...@@ -4081,7 +4081,7 @@ ...@@ -4081,7 +4081,7 @@
}, },
{ {
"name": "startDate", "name": "startDate",
"description": null, "description": "Start date of the epic",
"args": [ "args": [
], ],
...@@ -4095,7 +4095,7 @@ ...@@ -4095,7 +4095,7 @@
}, },
{ {
"name": "startDateFixed", "name": "startDateFixed",
"description": null, "description": "Fixed start date of the epic",
"args": [ "args": [
], ],
...@@ -4109,7 +4109,7 @@ ...@@ -4109,7 +4109,7 @@
}, },
{ {
"name": "startDateFromMilestones", "name": "startDateFromMilestones",
"description": null, "description": "Inherited start date of the epic from milestones",
"args": [ "args": [
], ],
...@@ -4123,7 +4123,7 @@ ...@@ -4123,7 +4123,7 @@
}, },
{ {
"name": "startDateIsFixed", "name": "startDateIsFixed",
"description": null, "description": "Indicates if the start date has been manually set",
"args": [ "args": [
], ],
...@@ -4137,7 +4137,7 @@ ...@@ -4137,7 +4137,7 @@
}, },
{ {
"name": "state", "name": "state",
"description": null, "description": "State of the epic",
"args": [ "args": [
], ],
...@@ -4173,7 +4173,7 @@ ...@@ -4173,7 +4173,7 @@
}, },
{ {
"name": "title", "name": "title",
"description": null, "description": "Title of the epic",
"args": [ "args": [
], ],
...@@ -4187,7 +4187,7 @@ ...@@ -4187,7 +4187,7 @@
}, },
{ {
"name": "updatedAt", "name": "updatedAt",
"description": null, "description": "Timestamp of the epic's last activity",
"args": [ "args": [
], ],
......
...@@ -195,32 +195,32 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph ...@@ -195,32 +195,32 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description | | Name | Type | Description |
| --- | ---- | ---------- | | --- | ---- | ---------- |
| `userPermissions` | EpicPermissions! | Permissions for the current user on the resource | | `userPermissions` | EpicPermissions! | Permissions for the current user on the resource |
| `id` | ID! | | | `id` | ID! | ID of the epic |
| `iid` | ID! | | | `iid` | ID! | Internal ID of the epic |
| `title` | String | | | `title` | String | Title of the epic |
| `description` | String | | | `description` | String | Description of the epic |
| `state` | EpicState! | | | `state` | EpicState! | State of the epic |
| `group` | Group! | | | `group` | Group! | Group to which the epic belongs |
| `parent` | Epic | | | `parent` | Epic | Parent epic of the epic |
| `author` | User! | | | `author` | User! | Author of the epic |
| `startDate` | Time | | | `startDate` | Time | Start date of the epic |
| `startDateIsFixed` | Boolean | | | `startDateIsFixed` | Boolean | Indicates if the start date has been manually set |
| `startDateFixed` | Time | | | `startDateFixed` | Time | Fixed start date of the epic |
| `startDateFromMilestones` | Time | | | `startDateFromMilestones` | Time | Inherited start date of the epic from milestones |
| `dueDate` | Time | | | `dueDate` | Time | Due date of the epic |
| `dueDateIsFixed` | Boolean | | | `dueDateIsFixed` | Boolean | Indicates if the due date has been manually set |
| `dueDateFixed` | Time | | | `dueDateFixed` | Time | Fixed due date of the epic |
| `dueDateFromMilestones` | Time | | | `dueDateFromMilestones` | Time | Inherited due date of the epic from milestones |
| `upvotes` | Int! | Number of upvotes the epic has received | | `upvotes` | Int! | Number of upvotes the epic has received |
| `downvotes` | Int! | Number of downvotes the epic has received | | `downvotes` | Int! | Number of downvotes the epic has received |
| `closedAt` | Time | | | `closedAt` | Time | Timestamp of the epic's closure |
| `createdAt` | Time | | | `createdAt` | Time | Timestamp of the epic's creation |
| `updatedAt` | Time | | | `updatedAt` | Time | Timestamp of the epic's last activity |
| `hasChildren` | Boolean! | | | `hasChildren` | Boolean! | Indicates if the epic has children |
| `hasIssues` | Boolean! | | | `hasIssues` | Boolean! | Indicates if the epic has direct issues |
| `webPath` | String! | | | `webPath` | String! | |
| `webUrl` | String! | | | `webUrl` | String! | |
| `relativePosition` | Int | The relative position of the epic in the Epic tree | | `relativePosition` | Int | The relative position of the epic in the epic tree |
| `relationPath` | String | | | `relationPath` | String | |
| `reference` | String! | | | `reference` | String! | |
| `subscribed` | Boolean! | Boolean flag for whether the currently logged in user is subscribed to this epic | | `subscribed` | Boolean! | Boolean flag for whether the currently logged in user is subscribed to this epic |
......
...@@ -8,4 +8,163 @@ describe GitHelper do ...@@ -8,4 +8,163 @@ describe GitHelper do
it { expect(short_sha).to eq('d4e043f6') } it { expect(short_sha).to eq('d4e043f6') }
end end
describe '#strip_signature' do
context 'strips PGP SIGNATURE' do
let(:strip_signature) { helper.strip_signature( pgp_signature_tag ) }
it { expect(strip_signature).to eq("Version 1.69.0\n\n") }
end
context 'strips PGP MESSAGE' do
let(:strip_signature) { helper.strip_signature( pgp_message_tag ) }
it { expect(strip_signature).to eq("Version 1.69.0\n\n") }
end
context 'strips SIGNED MESSAGE' do
let(:strip_signature) { helper.strip_signature( x509_message_tag ) }
it { expect(strip_signature).to eq("this is Roger's signed tag\n\n") }
end
end
def pgp_signature_tag
<<~SIGNATURE
Version 1.69.0
-----BEGIN PGP SIGNATURE-----
iQEzBAABCAAdFiEEFMo1pwRq9j04Jovq68Q/GjfvLIoFAl2l64QACgkQ68Q/Gjfv
LIqRDggAm0d1ceVRsfldlwC6guR2ly8aWoTtZZ19E12bsfXd4lJqcQv7JXTP0og0
cwbV0l92iBJKGW6bFBipKDFmSgr5le5zFsXYOr9bJCQNOhFNMmtAgaHEIeVI16+c
S3pA+qIe516d4wRs/hcbxDJKC68iIlDaLXObdzTTLGMgbCYBFTjYJldNUfTkdvbB
oGEpFXuxV9EyfBtPLsz2vUea5GdZcRSVyJbcgm9ZU+ekdLZckroP5M0I5SQTbD3y
VrbCY3ziYtau4zK4cV66ybRz1G7tR6dcoC4kGUbaZlKsVZ1Af80agx2d9k5MR1wS
4OFe1H0zIfpPRFsyX2toaum3EX6QBA==
=hefg
-----END PGP SIGNATURE-----
SIGNATURE
end
def pgp_message_tag
<<~SIGNATURE
Version 1.69.0
-----BEGIN PGP MESSAGE-----
iQEzBAABCAAdFiEEFMo1pwRq9j04Jovq68Q/GjfvLIoFAl2l64QACgkQ68Q/Gjfv
LIqRDggAm0d1ceVRsfldlwC6guR2ly8aWoTtZZ19E12bsfXd4lJqcQv7JXTP0og0
cwbV0l92iBJKGW6bFBipKDFmSgr5le5zFsXYOr9bJCQNOhFNMmtAgaHEIeVI16+c
S3pA+qIe516d4wRs/hcbxDJKC68iIlDaLXObdzTTLGMgbCYBFTjYJldNUfTkdvbB
oGEpFXuxV9EyfBtPLsz2vUea5GdZcRSVyJbcgm9ZU+ekdLZckroP5M0I5SQTbD3y
VrbCY3ziYtau4zK4cV66ybRz1G7tR6dcoC4kGUbaZlKsVZ1Af80agx2d9k5MR1wS
4OFe1H0zIfpPRFsyX2toaum3EX6QBA==
=hefg
-----END PGP MESSAGE-----
SIGNATURE
end
def x509_message_tag
<<~SIGNATURE
this is Roger's signed tag
-----BEGIN SIGNED MESSAGE-----
MIISfwYJKoZIhvcNAQcCoIIScDCCEmwCAQExDTALBglghkgBZQMEAgEwCwYJKoZI
hvcNAQcBoIIP8zCCB3QwggVcoAMCAQICBBXXLOIwDQYJKoZIhvcNAQELBQAwgbYx
CzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVu
MRAwDgYDVQQKDAdTaWVtZW5zMREwDwYDVQQFEwhaWlpaWlpBNjEdMBsGA1UECwwU
U2llbWVucyBUcnVzdCBDZW50ZXIxPzA9BgNVBAMMNlNpZW1lbnMgSXNzdWluZyBD
QSBNZWRpdW0gU3RyZW5ndGggQXV0aGVudGljYXRpb24gMjAxNjAeFw0xNzAyMDMw
NjU4MzNaFw0yMDAyMDMwNjU4MzNaMFsxETAPBgNVBAUTCFowMDBOV0RIMQ4wDAYD
VQQqDAVSb2dlcjEOMAwGA1UEBAwFTWVpZXIxEDAOBgNVBAoMB1NpZW1lbnMxFDAS
BgNVBAMMC01laWVyIFJvZ2VyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAuBNea/68ZCnHYQjpm/k3ZBG0wBpEKSwG6lk9CEQlSxsqVLQHAoAKBIlJm1in
YVLcK/Sq1yhYJ/qWcY/M53DhK2rpPuhtrWJUdOUy8EBWO20F4bd4Fw9pO7jt8bme
u33TSrK772vKjuppzB6SeG13Cs08H+BIeD106G27h7ufsO00pvsxoSDL+uc4slnr
pBL+2TAL7nSFnB9QHWmRIK27SPqJE+lESdb0pse11x1wjvqKy2Q7EjL9fpqJdHzX
NLKHXd2r024TOORTa05DFTNR+kQEKKV96XfpYdtSBomXNQ44cisiPBJjFtYvfnFE
wgrHa8fogn/b0C+A+HAoICN12wIDAQABo4IC4jCCAt4wHQYDVR0OBBYEFCF+gkUp
XQ6xGc0kRWXuDFxzA14zMEMGA1UdEQQ8MDqgIwYKKwYBBAGCNxQCA6AVDBNyLm1l
aWVyQHNpZW1lbnMuY29tgRNyLm1laWVyQHNpZW1lbnMuY29tMA4GA1UdDwEB/wQE
AwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcoGA1UdHwSBwjCB
vzCBvKCBuaCBtoYmaHR0cDovL2NoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpBNi5j
cmyGQWxkYXA6Ly9jbC5zaWVtZW5zLm5ldC9DTj1aWlpaWlpBNixMPVBLST9jZXJ0
aWZpY2F0ZVJldm9jYXRpb25MaXN0hklsZGFwOi8vY2wuc2llbWVucy5jb20vQ049
WlpaWlpaQTYsbz1UcnVzdGNlbnRlcj9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0
MEUGA1UdIAQ+MDwwOgYNKwYBBAGhaQcCAgMBAzApMCcGCCsGAQUFBwIBFhtodHRw
Oi8vd3d3LnNpZW1lbnMuY29tL3BraS8wDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAW
gBT4FV1HDGx3e3LEAheRaKK292oJRDCCAQQGCCsGAQUFBwEBBIH3MIH0MDIGCCsG
AQUFBzAChiZodHRwOi8vYWguc2llbWVucy5jb20vcGtpP1paWlpaWkE2LmNydDBB
BggrBgEFBQcwAoY1bGRhcDovL2FsLnNpZW1lbnMubmV0L0NOPVpaWlpaWkE2LEw9
UEtJP2NBQ2VydGlmaWNhdGUwSQYIKwYBBQUHMAKGPWxkYXA6Ly9hbC5zaWVtZW5z
LmNvbS9DTj1aWlpaWlpBNixvPVRydXN0Y2VudGVyP2NBQ2VydGlmaWNhdGUwMAYI
KwYBBQUHMAGGJGh0dHA6Ly9vY3NwLnBraS1zZXJ2aWNlcy5zaWVtZW5zLmNvbTAN
BgkqhkiG9w0BAQsFAAOCAgEAXPVcX6vaEcszJqg5IemF9aFTlwTrX5ITNIpzcqG+
kD5haOf2mZYLjl+MKtLC1XfmIsGCUZNb8bjP6QHQEI+2d6x/ZOqPq7Kd7PwVu6x6
xZrkDjUyhUbUntT5+RBy++l3Wf6Cq6Kx+K8ambHBP/bu90/p2U8KfFAG3Kr2gI2q
fZrnNMOxmJfZ3/sXxssgLkhbZ7hRa+MpLfQ6uFsSiat3vlawBBvTyHnoZ/7oRc8y
qi6QzWcd76CPpMElYWibl+hJzKbBZUWvc71AzHR6i1QeZ6wubYz7vr+FF5Y7tnxB
Vz6omPC9XAg0F+Dla6Zlz3Awj5imCzVXa+9SjtnsidmJdLcKzTAKyDewewoxYOOJ
j3cJU7VSjJPl+2fVmDBaQwcNcUcu/TPAKApkegqO7tRF9IPhjhW8QkRnkqMetO3D
OXmAFVIsEI0Hvb2cdb7B6jSpjGUuhaFm9TCKhQtCk2p8JCDTuaENLm1x34rrJKbT
2vzyYN0CZtSkUdgD4yQxK9VWXGEzexRisWb4AnZjD2NAquLPpXmw8N0UwFD7MSpC
dpaX7FktdvZmMXsnGiAdtLSbBgLVWOD1gmJFDjrhNbI8NOaOaNk4jrfGqNh5lhGU
4DnBT2U6Cie1anLmFH/oZooAEXR2o3Nu+1mNDJChnJp0ovs08aa3zZvBdcloOvfU
qdowggh3MIIGX6ADAgECAgQtyi/nMA0GCSqGSIb3DQEBCwUAMIGZMQswCQYDVQQG
EwJERTEPMA0GA1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjEQMA4GA1UE
CgwHU2llbWVuczERMA8GA1UEBRMIWlpaWlpaQTExHTAbBgNVBAsMFFNpZW1lbnMg
VHJ1c3QgQ2VudGVyMSIwIAYDVQQDDBlTaWVtZW5zIFJvb3QgQ0EgVjMuMCAyMDE2
MB4XDTE2MDcyMDEzNDYxMFoXDTIyMDcyMDEzNDYxMFowgbYxCzAJBgNVBAYTAkRF
MQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMRAwDgYDVQQKDAdT
aWVtZW5zMREwDwYDVQQFEwhaWlpaWlpBNjEdMBsGA1UECwwUU2llbWVucyBUcnVz
dCBDZW50ZXIxPzA9BgNVBAMMNlNpZW1lbnMgSXNzdWluZyBDQSBNZWRpdW0gU3Ry
ZW5ndGggQXV0aGVudGljYXRpb24gMjAxNjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAL9UfK+JAZEqVMVvECdYF9IK4KSw34AqyNl3rYP5x03dtmKaNu+2
0fQqNESA1NGzw3s6LmrKLh1cR991nB2cvKOXu7AvEGpSuxzIcOROd4NpvRx+Ej1p
JIPeqf+ScmVK7lMSO8QL/QzjHOpGV3is9sG+ZIxOW9U1ESooy4Hal6ZNs4DNItsz
piCKqm6G3et4r2WqCy2RRuSqvnmMza7Y8BZsLy0ZVo5teObQ37E/FxqSrbDI8nxn
B7nVUve5ZjrqoIGSkEOtyo11003dVO1vmWB9A0WQGDqE/q3w178hGhKfxzRaqzyi
SoADUYS2sD/CglGTUxVq6u0pGLLsCFjItcCWqW+T9fPYfJ2CEd5b3hvqdCn+pXjZ
/gdX1XAcdUF5lRnGWifaYpT9n4s4adzX8q6oHSJxTppuAwLRKH6eXALbGQ1I9lGQ
DSOipD/09xkEsPw6HOepmf2U3YxZK1VU2sHqugFJboeLcHMzp6E1n2ctlNG1GKE9
FDHmdyFzDi0Nnxtf/GgVjnHF68hByEE1MYdJ4nJLuxoT9hyjYdRW9MpeNNxxZnmz
W3zh7QxIqP0ZfIz6XVhzrI9uZiqwwojDiM5tEOUkQ7XyW6grNXe75yt6mTj89LlB
H5fOW2RNmCy/jzBXDjgyskgK7kuCvUYTuRv8ITXbBY5axFA+CpxZqokpAgMBAAGj
ggKmMIICojCCAQUGCCsGAQUFBwEBBIH4MIH1MEEGCCsGAQUFBzAChjVsZGFwOi8v
YWwuc2llbWVucy5uZXQvQ049WlpaWlpaQTEsTD1QS0k/Y0FDZXJ0aWZpY2F0ZTAy
BggrBgEFBQcwAoYmaHR0cDovL2FoLnNpZW1lbnMuY29tL3BraT9aWlpaWlpBMS5j
cnQwSgYIKwYBBQUHMAKGPmxkYXA6Ly9hbC5zaWVtZW5zLmNvbS91aWQ9WlpaWlpa
QTEsbz1UcnVzdGNlbnRlcj9jQUNlcnRpZmljYXRlMDAGCCsGAQUFBzABhiRodHRw
Oi8vb2NzcC5wa2ktc2VydmljZXMuc2llbWVucy5jb20wHwYDVR0jBBgwFoAUcG2g
UOyp0CxnnRkV/v0EczXD4tQwEgYDVR0TAQH/BAgwBgEB/wIBADBABgNVHSAEOTA3
MDUGCCsGAQQBoWkHMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuc2llbWVucy5j
b20vcGtpLzCBxwYDVR0fBIG/MIG8MIG5oIG2oIGzhj9sZGFwOi8vY2wuc2llbWVu
cy5uZXQvQ049WlpaWlpaQTEsTD1QS0k/YXV0aG9yaXR5UmV2b2NhdGlvbkxpc3SG
Jmh0dHA6Ly9jaC5zaWVtZW5zLmNvbS9wa2k/WlpaWlpaQTEuY3JshkhsZGFwOi8v
Y2wuc2llbWVucy5jb20vdWlkPVpaWlpaWkExLG89VHJ1c3RjZW50ZXI/YXV0aG9y
aXR5UmV2b2NhdGlvbkxpc3QwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwME
BggrBgEFBQcDCTAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPgVXUcMbHd7csQC
F5Foorb3aglEMA0GCSqGSIb3DQEBCwUAA4ICAQBw+sqMp3SS7DVKcILEmXbdRAg3
lLO1r457KY+YgCT9uX4VG5EdRKcGfWXK6VHGCi4Dos5eXFV34Mq/p8nu1sqMuoGP
YjHn604eWDprhGy6GrTYdxzcE/GGHkpkuE3Ir/45UcmZlOU41SJ9SNjuIVrSHMOf
ccSY42BCspR/Q1Z/ykmIqQecdT3/Kkx02GzzSN2+HlW6cEO4GBW5RMqsvd2n0h2d
fe2zcqOgkLtx7u2JCR/U77zfyxG3qXtcymoz0wgSHcsKIl+GUjITLkHfS9Op8V7C
Gr/dX437sIg5pVHmEAWadjkIzqdHux+EF94Z6kaHywohc1xG0KvPYPX7iSNjkvhz
4NY53DHmxl4YEMLffZnaS/dqyhe1GTpcpyN8WiR4KuPfxrkVDOsuzWFtMSvNdlOV
gdI0MXcLMP+EOeANZWX6lGgJ3vWyemo58nzgshKd24MY3w3i6masUkxJH2KvI7UH
/1Db3SC8oOUjInvSRej6M3ZhYWgugm6gbpUgFoDw/o9Cg6Qm71hY0JtcaPC13rzm
N8a2Br0+Fa5e2VhwLmAxyfe1JKzqPwuHT0S5u05SQghL5VdzqfA8FCL/j4XC9yI6
csZTAQi73xFQYVjZt3+aoSz84lOlTmVo/jgvGMY/JzH9I4mETGgAJRNj34Z/0meh
M+pKWCojNH/dgyJSwDGCAlIwggJOAgEBMIG/MIG2MQswCQYDVQQGEwJERTEPMA0G
A1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjEQMA4GA1UECgwHU2llbWVu
czERMA8GA1UEBRMIWlpaWlpaQTYxHTAbBgNVBAsMFFNpZW1lbnMgVHJ1c3QgQ2Vu
dGVyMT8wPQYDVQQDDDZTaWVtZW5zIElzc3VpbmcgQ0EgTWVkaXVtIFN0cmVuZ3Ro
IEF1dGhlbnRpY2F0aW9uIDIwMTYCBBXXLOIwCwYJYIZIAWUDBAIBoGkwHAYJKoZI
hvcNAQkFMQ8XDTE5MTExNDE3MzYzNFowLwYJKoZIhvcNAQkEMSIEIJO0Q0yM+f6h
pNqE7YCAEPwe751CamgWYqKBIUMjTViqMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0B
BwEwCwYJKoZIhvcNAQEBBIIBACZqs0NEuP1O/90avijVtTGicqMHp6vBBcmPJK7O
WOsL1DIDfAww+fw0r5cMbnmJA+iTfY5iZU/nqMK9kiGx055eoqU9KJaWFzY3KFO/
aOeXBCxv7CTDIVKoQtA0RCH6cGOgD6dnH2Lez3aDmziEd7gMqkBRo7lh1O6o5FQy
xyZl3p3/MYrFTeZDnr0YeBWWzPrECaQkI1M7K1hdTqmURU1wE6tSANYyT7/BtN+O
XVB/7uD6aTTo+eHyeJxcZGja0IsMXmwlsFqmlxxciYhQhQdPaXRcutdx0fMEF5Zq
wxhu3ScPA3X7e2ENEKJNl5W1OT9YXvc3K9Hwvtj8USx3CJI=
-----END SIGNED MESSAGE-----
SIGNATURE
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment