[
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n\n  - package-ecosystem: \"gomod\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/scorecard.yml",
    "content": "name: Scorecard supply-chain security\non:\n  # For Branch-Protection check. Only the default branch is supported. See\n  # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection\n  branch_protection_rule:\n  # To guarantee Maintained check is occasionally updated. See\n  # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained\n  schedule:\n    - cron: '33 5 * * 2'\n  push:\n    branches: [ \"main\" ]\n\n# Declare default permissions as read only.\npermissions: read-all\n\njobs:\n  analysis:\n    name: Scorecard analysis\n    runs-on: ubuntu-latest\n    permissions:\n      # Needed to upload the results to code-scanning dashboard.\n      security-events: write\n      # Needed to publish results and get a badge (see publish_results below).\n      id-token: write\n\n    steps:\n      - name: \"Checkout code\"\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n\n      - name: \"Run analysis\"\n        uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3\n        with:\n          results_file: results.sarif\n          results_format: sarif\n          publish_results: true\n\n      # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF\n      # format to the repository Actions tab.\n      - name: \"Upload artifact\"\n        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0\n        with:\n          name: SARIF file\n          path: results.sarif\n          retention-days: 5\n\n      # Upload the results to GitHub's code scanning dashboard.\n      - name: \"Upload to code-scanning\"\n        uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0\n        with:\n          sarif_file: results.sarif\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "on: [push, pull_request]\nname: Test\npermissions:\n  contents: read\n\njobs:\n  test:\n    name: Test Go ${{ matrix.go }}\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        go: ['1.26', '1.25']\n    steps:\n      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n      - name: Setup Go\n        uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0\n        with:\n          go-version: ${{ matrix.go }}\n      - name: Test\n        run: go test ./...\n"
  },
  {
    "path": ".gitignore",
    "content": "*.test\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n"
  },
  {
    "path": "README.md",
    "content": "# gosaml2\n\n[![Build Status](https://github.com/russellhaering/gosaml2/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/russellhaering/gosaml2/actions/workflows/test.yml?query=branch%3Amain)\n[![GoDoc](https://godoc.org/github.com/russellhaering/gosaml2?status.svg)](https://godoc.org/github.com/russellhaering/gosaml2)\n\nSAML 2.0 implemementation for Service Providers based on [etree](https://github.com/beevik/etree)\nand [goxmldsig](https://github.com/russellhaering/goxmldsig), a pure Go\nimplementation of XML digital signatures.\n\n## Installation\n\nInstall `gosaml2` into your `$GOPATH` using `go get`:\n\n```\ngo get github.com/russellhaering/gosaml2\n```\n\n## Example\n\nSee [demo.go](s2example/demo.go).\n\n## Supported Identity Providers\n\nThis library is meant to be a generic SAML implementation. If you find a\nstandards compliant identity provider that it doesn't work with please\nsubmit a bug or pull request.\n\nThe following identity providers have been tested:\n\n* Okta\n* Auth0\n* Shibboleth\n* Ipsilon\n* OneLogin\n* Azure Active Directory (Azure AD)\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Reporting a Vulnerability\n\nSecurity vulnerabilities can be reported using GitHub's [private vulnerability reporting tool](https://github.com/russellhaering/gosaml2/security/advisories/new).\n"
  },
  {
    "path": "attribute.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport \"github.com/russellhaering/gosaml2/types\"\n\n// Values is a convenience wrapper for a map of strings to Attributes, which\n// can be used for easy access to the string values of Attribute lists.\ntype Values map[string]types.Attribute\n\n// Get is a safe method (nil maps will not panic) for returning the first value\n// for an attribute at a key, or the empty string if none exists.\nfunc (vals Values) Get(k string) string {\n\tif vals == nil {\n\t\treturn \"\"\n\t}\n\tif v, ok := vals[k]; ok && len(v.Values) > 0 {\n\t\treturn string(v.Values[0].Value)\n\t}\n\treturn \"\"\n}\n\n//GetSize returns the number of values for an attribute at a key.\n//Returns '0' in case of error or if key is not found.\nfunc (vals Values) GetSize(k string) int {\n\tif vals == nil {\n\t\treturn 0\n\t}\n\n\tv, ok := vals[k]\n\tif ok {\n\t\treturn len(v.Values)\n\t}\n\n\treturn 0\n}\n\n//GetAll returns all the values for an attribute at a key.\n//Returns an empty slice in case of error of if key is not found.\nfunc (vals Values) GetAll(k string) []string {\n\tvar av []string\n\n\tif vals == nil {\n\t\treturn av\n\t}\n\n\tif v, ok := vals[k]; ok && len(v.Values) > 0 {\n\t\tfor i := 0; i < len(v.Values); i++ {\n\t\t\tav = append(av, string(v.Values[i].Value))\n\t\t}\n\t}\n\n\treturn av\n}\n"
  },
  {
    "path": "authn_request.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport \"time\"\n\n// AuthNRequest is the go struct representation of an authentication request\ntype AuthNRequest struct {\n\tID                          string `xml:\",attr\"`\n\tVersion                     string `xml:\",attr\"`\n\tProtocolBinding             string `xml:\",attr\"`\n\tAssertionConsumerServiceURL string `xml:\",attr\"`\n\n\tIssueInstant time.Time `xml:\",attr\"`\n\n\tDestination string `xml:\",attr\"`\n\tIssuer      string\n}\n"
  },
  {
    "path": "build_logout_response.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"html/template\"\n\n\t\"github.com/beevik/etree\"\n\t\"github.com/russellhaering/gosaml2/uuid\"\n)\n\nfunc (sp *SAMLServiceProvider) buildLogoutResponse(statusCodeValue string, reqID string, includeSig bool) (*etree.Document, error) {\n\tlogoutResponse := &etree.Element{\n\t\tSpace: \"samlp\",\n\t\tTag:   \"LogoutResponse\",\n\t}\n\n\tlogoutResponse.CreateAttr(\"xmlns:samlp\", \"urn:oasis:names:tc:SAML:2.0:protocol\")\n\tlogoutResponse.CreateAttr(\"xmlns:saml\", \"urn:oasis:names:tc:SAML:2.0:assertion\")\n\n\tarId := uuid.NewV4()\n\n\tlogoutResponse.CreateAttr(\"ID\", \"_\"+arId.String())\n\tlogoutResponse.CreateAttr(\"Version\", \"2.0\")\n\tlogoutResponse.CreateAttr(\"IssueInstant\", sp.Clock.Now().UTC().Format(issueInstantFormat))\n\tlogoutResponse.CreateAttr(\"Destination\", sp.IdentityProviderSLOURL)\n\tlogoutResponse.CreateAttr(\"InResponseTo\", reqID)\n\n\t// NOTE(russell_h): In earlier versions we mistakenly sent the IdentityProviderIssuer\n\t// in the AuthnRequest. For backwards compatibility we will fall back to that\n\t// behavior when ServiceProviderIssuer isn't set.\n\tif sp.ServiceProviderIssuer != \"\" {\n\t\tlogoutResponse.CreateElement(\"saml:Issuer\").SetText(sp.ServiceProviderIssuer)\n\t} else {\n\t\tlogoutResponse.CreateElement(\"saml:Issuer\").SetText(sp.IdentityProviderIssuer)\n\t}\n\n\tstatus := logoutResponse.CreateElement(\"samlp:Status\")\n\tstatusCode := status.CreateElement(\"samlp:StatusCode\")\n\tstatusCode.CreateAttr(\"Value\", statusCodeValue)\n\n\tdoc := etree.NewDocument()\n\n\t// Only POST binding includes <Signature> in <AuthnRequest> (includeSig)\n\tif includeSig {\n\t\tsigned, err := sp.SignLogoutResponse(logoutResponse)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tdoc.SetRoot(signed)\n\t} else {\n\t\tdoc.SetRoot(logoutResponse)\n\t}\n\treturn doc, nil\n}\nfunc (sp *SAMLServiceProvider) BuildLogoutResponseDocument(status string, reqID string) (*etree.Document, error) {\n\treturn sp.buildLogoutResponse(status, reqID, true)\n}\n\nfunc (sp *SAMLServiceProvider) BuildLogoutResponseDocumentNoSig(status string, reqID string) (*etree.Document, error) {\n\treturn sp.buildLogoutResponse(status, reqID, false)\n}\n\nfunc (sp *SAMLServiceProvider) SignLogoutResponse(el *etree.Element) (*etree.Element, error) {\n\tctx := sp.SigningContext()\n\n\tsig, err := ctx.ConstructSignature(el, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret := el.Copy()\n\n\tvar children []etree.Token\n\tchildren = append(children, ret.Child[0])     // issuer is always first\n\tchildren = append(children, sig)              // next is the signature\n\tchildren = append(children, ret.Child[1:]...) // then all other children\n\tret.Child = children\n\n\treturn ret, nil\n}\n\nfunc (sp *SAMLServiceProvider) buildLogoutResponseBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) {\n\trespBuf, err := doc.WriteToBytes()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tencodedRespBuf := base64.StdEncoding.EncodeToString(respBuf)\n\n\tvar tmpl *template.Template\n\tvar rv bytes.Buffer\n\n\tif relayState != \"\" {\n\t\ttmpl = template.Must(template.New(\"saml-post-form\").Parse(`<html>` +\n\t\t\t`<form method=\"post\" action=\"{{.URL}}\" id=\"SAMLResponseForm\">` +\n\t\t\t`<input type=\"hidden\" name=\"SAMLResponse\" value=\"{{.SAMLResponse}}\" />` +\n\t\t\t`<input type=\"hidden\" name=\"RelayState\" value=\"{{.RelayState}}\" />` +\n\t\t\t`<input id=\"SAMLSubmitButton\" type=\"submit\" value=\"Continue\" />` +\n\t\t\t`</form>` +\n\t\t\t`<script>document.getElementById('SAMLSubmitButton').style.visibility='hidden';</script>` +\n\t\t\t`<script>document.getElementById('SAMLResponseForm').submit();</script>` +\n\t\t\t`</html>`))\n\t\tdata := struct {\n\t\t\tURL          string\n\t\t\tSAMLResponse string\n\t\t\tRelayState   string\n\t\t}{\n\t\t\tURL:          sp.IdentityProviderSLOURL,\n\t\t\tSAMLResponse: encodedRespBuf,\n\t\t\tRelayState:   relayState,\n\t\t}\n\t\tif err = tmpl.Execute(&rv, data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\ttmpl = template.Must(template.New(\"saml-post-form\").Parse(`<html>` +\n\t\t\t`<form method=\"post\" action=\"{{.URL}}\" id=\"SAMLResponseForm\">` +\n\t\t\t`<input type=\"hidden\" name=\"SAMLResponse\" value=\"{{.SAMLResponse}}\" />` +\n\t\t\t`<input id=\"SAMLSubmitButton\" type=\"submit\" value=\"Continue\" />` +\n\t\t\t`</form>` +\n\t\t\t`<script>document.getElementById('SAMLSubmitButton').style.visibility='hidden';</script>` +\n\t\t\t`<script>document.getElementById('SAMLResponseForm').submit();</script>` +\n\t\t\t`</html>`))\n\t\tdata := struct {\n\t\t\tURL          string\n\t\t\tSAMLResponse string\n\t\t}{\n\t\t\tURL:          sp.IdentityProviderSLOURL,\n\t\t\tSAMLResponse: encodedRespBuf,\n\t\t}\n\n\t\tif err = tmpl.Execute(&rv, data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn rv.Bytes(), nil\n}\n\nfunc (sp *SAMLServiceProvider) BuildLogoutResponseBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) {\n\treturn sp.buildLogoutResponseBodyPostFromDocument(relayState, doc)\n}\n"
  },
  {
    "path": "build_request.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/beevik/etree\"\n\t\"github.com/russellhaering/gosaml2/uuid\"\n)\n\nconst issueInstantFormat = \"2006-01-02T15:04:05Z\"\n\nfunc (sp *SAMLServiceProvider) buildAuthnRequest(includeSig bool) (*etree.Document, error) {\n\tauthnRequest := &etree.Element{\n\t\tSpace: \"samlp\",\n\t\tTag:   \"AuthnRequest\",\n\t}\n\n\tauthnRequest.CreateAttr(\"xmlns:samlp\", \"urn:oasis:names:tc:SAML:2.0:protocol\")\n\tauthnRequest.CreateAttr(\"xmlns:saml\", \"urn:oasis:names:tc:SAML:2.0:assertion\")\n\n\tarId := uuid.NewV4()\n\n\tauthnRequest.CreateAttr(\"ID\", \"_\"+arId.String())\n\tauthnRequest.CreateAttr(\"Version\", \"2.0\")\n\tauthnRequest.CreateAttr(\"ProtocolBinding\", \"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\")\n\tauthnRequest.CreateAttr(\"AssertionConsumerServiceURL\", sp.AssertionConsumerServiceURL)\n\tauthnRequest.CreateAttr(\"IssueInstant\", sp.Clock.Now().UTC().Format(issueInstantFormat))\n\tauthnRequest.CreateAttr(\"Destination\", sp.IdentityProviderSSOURL)\n\tif sp.ForceAuthn {\n\t\tauthnRequest.CreateAttr(\"ForceAuthn\", \"true\")\n\t}\n\tif sp.IsPassive {\n\t\tauthnRequest.CreateAttr(\"IsPassive\", \"true\")\n\t}\n\n\t// NOTE(russell_h): In earlier versions we mistakenly sent the IdentityProviderIssuer\n\t// in the AuthnRequest. For backwards compatibility we will fall back to that\n\t// behavior when ServiceProviderIssuer isn't set.\n\tif sp.ServiceProviderIssuer != \"\" {\n\t\tauthnRequest.CreateElement(\"saml:Issuer\").SetText(sp.ServiceProviderIssuer)\n\t} else {\n\t\tauthnRequest.CreateElement(\"saml:Issuer\").SetText(sp.IdentityProviderIssuer)\n\t}\n\n\tnameIdPolicy := authnRequest.CreateElement(\"samlp:NameIDPolicy\")\n\tnameIdPolicy.CreateAttr(\"AllowCreate\", \"true\")\n\tif sp.NameIdFormat != \"\" {\n\t\tnameIdPolicy.CreateAttr(\"Format\", sp.NameIdFormat)\n\t}\n\n\tif sp.RequestedAuthnContext != nil {\n\t\trequestedAuthnContext := authnRequest.CreateElement(\"samlp:RequestedAuthnContext\")\n\t\trequestedAuthnContext.CreateAttr(\"Comparison\", sp.RequestedAuthnContext.Comparison)\n\n\t\tfor _, context := range sp.RequestedAuthnContext.Contexts {\n\t\t\tauthnContextClassRef := requestedAuthnContext.CreateElement(\"saml:AuthnContextClassRef\")\n\t\t\tauthnContextClassRef.SetText(context)\n\t\t}\n\t}\n\n\tdoc := etree.NewDocument()\n\n\t// Only POST binding includes <Signature> in <AuthnRequest> (includeSig)\n\tif sp.SignAuthnRequests && includeSig {\n\t\tsigned, err := sp.SignAuthnRequest(authnRequest)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tdoc.SetRoot(signed)\n\t} else {\n\t\tdoc.SetRoot(authnRequest)\n\t}\n\treturn doc, nil\n}\n\nfunc (sp *SAMLServiceProvider) BuildAuthRequestDocument() (*etree.Document, error) {\n\treturn sp.buildAuthnRequest(true)\n}\n\nfunc (sp *SAMLServiceProvider) BuildAuthRequestDocumentNoSig() (*etree.Document, error) {\n\treturn sp.buildAuthnRequest(false)\n}\n\n// SignAuthnRequest takes a document, builds a signature, creates another document\n// and inserts the signature in it. According to the schema, the position of the\n// signature is right after the Issuer [1] then all other children.\n//\n// [1] https://docs.oasis-open.org/security/saml/v2.0/saml-schema-protocol-2.0.xsd\nfunc (sp *SAMLServiceProvider) SignAuthnRequest(el *etree.Element) (*etree.Element, error) {\n\tctx := sp.SigningContext()\n\n\tsig, err := ctx.ConstructSignature(el, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret := el.Copy()\n\n\tvar children []etree.Token\n\tchildren = append(children, ret.Child[0])     // issuer is always first\n\tchildren = append(children, sig)              // next is the signature\n\tchildren = append(children, ret.Child[1:]...) // then all other children\n\tret.Child = children\n\n\treturn ret, nil\n}\n\n// BuildAuthRequest builds <AuthnRequest> for identity provider\nfunc (sp *SAMLServiceProvider) BuildAuthRequest() (string, error) {\n\tdoc, err := sp.BuildAuthRequestDocument()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn doc.WriteToString()\n}\n\nfunc (sp *SAMLServiceProvider) buildAuthURLFromDocument(relayState, binding string, doc *etree.Document) (string, error) {\n\tparsedUrl, err := url.Parse(sp.IdentityProviderSSOURL)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tauthnRequest, err := doc.WriteToString()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tbuf := &bytes.Buffer{}\n\n\tfw, err := flate.NewWriter(buf, flate.DefaultCompression)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"flate NewWriter error: %v\", err)\n\t}\n\n\t_, err = fw.Write([]byte(authnRequest))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"flate.Writer Write error: %v\", err)\n\t}\n\n\terr = fw.Close()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"flate.Writer Close error: %v\", err)\n\t}\n\n\tqs := parsedUrl.Query()\n\n\tqs.Add(\"SAMLRequest\", base64.StdEncoding.EncodeToString(buf.Bytes()))\n\n\tif relayState != \"\" {\n\t\tqs.Add(\"RelayState\", relayState)\n\t}\n\n\tif sp.SignAuthnRequests && binding == BindingHttpRedirect {\n\t\t// Sign URL encoded query (see Section 3.4.4.1 DEFLATE Encoding of saml-bindings-2.0-os.pdf)\n\t\tctx := sp.SigningContext()\n\t\tqs.Add(\"SigAlg\", ctx.GetSignatureMethodIdentifier())\n\t\tvar rawSignature []byte\n\t\tif rawSignature, err = ctx.SignString(signatureInputString(qs.Get(\"SAMLRequest\"), qs.Get(\"RelayState\"), qs.Get(\"SigAlg\"))); err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unable to sign query string of redirect URL: %v\", err)\n\t\t}\n\n\t\t// Now add base64 encoded Signature\n\t\tqs.Add(\"Signature\", base64.StdEncoding.EncodeToString(rawSignature))\n\t}\n\n\t//Here the parameters may appear in any order.\n\tparsedUrl.RawQuery = qs.Encode()\n\treturn parsedUrl.String(), nil\n}\n\nfunc (sp *SAMLServiceProvider) BuildAuthURLFromDocument(relayState string, doc *etree.Document) (string, error) {\n\treturn sp.buildAuthURLFromDocument(relayState, BindingHttpPost, doc)\n}\n\nfunc (sp *SAMLServiceProvider) BuildAuthURLRedirect(relayState string, doc *etree.Document) (string, error) {\n\treturn sp.buildAuthURLFromDocument(relayState, BindingHttpRedirect, doc)\n}\n\nfunc (sp *SAMLServiceProvider) buildAuthBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) {\n\treqBuf, err := doc.WriteToBytes()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tencodedReqBuf := base64.StdEncoding.EncodeToString(reqBuf)\n\n\tvar tmpl *template.Template\n\tvar rv bytes.Buffer\n\n\tif relayState != \"\" {\n\t\ttmpl = template.Must(template.New(\"saml-post-form\").Parse(`` +\n\t\t\t`<form method=\"POST\" action=\"{{.URL}}\" id=\"SAMLRequestForm\">` +\n\t\t\t`<input type=\"hidden\" name=\"SAMLRequest\" value=\"{{.SAMLRequest}}\" />` +\n\t\t\t`<input type=\"hidden\" name=\"RelayState\" value=\"{{.RelayState}}\" />` +\n\t\t\t`<input id=\"SAMLSubmitButton\" type=\"submit\" value=\"Submit\" />` +\n\t\t\t`</form>` +\n\t\t\t`<script>document.getElementById('SAMLSubmitButton').style.visibility=\"hidden\";` +\n\t\t\t`document.getElementById('SAMLRequestForm').submit();</script>`))\n\n\t\tdata := struct {\n\t\t\tURL         string\n\t\t\tSAMLRequest string\n\t\t\tRelayState  string\n\t\t}{\n\t\t\tURL:         sp.IdentityProviderSSOURL,\n\t\t\tSAMLRequest: encodedReqBuf,\n\t\t\tRelayState:  relayState,\n\t\t}\n\t\tif err = tmpl.Execute(&rv, data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\ttmpl = template.Must(template.New(\"saml-post-form\").Parse(`` +\n\t\t\t`<form method=\"POST\" action=\"{{.URL}}\" id=\"SAMLRequestForm\">` +\n\t\t\t`<input type=\"hidden\" name=\"SAMLRequest\" value=\"{{.SAMLRequest}}\" />` +\n\t\t\t`<input id=\"SAMLSubmitButton\" type=\"submit\" value=\"Submit\" />` +\n\t\t\t`</form>` +\n\t\t\t`<script>document.getElementById('SAMLSubmitButton').style.visibility=\"hidden\";` +\n\t\t\t`document.getElementById('SAMLRequestForm').submit();</script>`))\n\n\t\tdata := struct {\n\t\t\tURL         string\n\t\t\tSAMLRequest string\n\t\t}{\n\t\t\tURL:         sp.IdentityProviderSSOURL,\n\t\t\tSAMLRequest: encodedReqBuf,\n\t\t}\n\t\tif err = tmpl.Execute(&rv, data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn rv.Bytes(), nil\n}\n\n//BuildAuthBodyPost builds the POST body to be sent to IDP.\nfunc (sp *SAMLServiceProvider) BuildAuthBodyPost(relayState string) ([]byte, error) {\n\tvar doc *etree.Document\n\tvar err error\n\n\tif sp.SignAuthnRequests {\n\t\tdoc, err = sp.BuildAuthRequestDocument()\n\t} else {\n\t\tdoc, err = sp.BuildAuthRequestDocumentNoSig()\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sp.buildAuthBodyPostFromDocument(relayState, doc)\n}\n\n//BuildAuthBodyPostFromDocument builds the POST body to be sent to IDP.\n//It takes the AuthnRequest xml as input.\nfunc (sp *SAMLServiceProvider) BuildAuthBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) {\n\treturn sp.buildAuthBodyPostFromDocument(relayState, doc)\n}\n\n// BuildAuthURL builds redirect URL to be sent to principal\nfunc (sp *SAMLServiceProvider) BuildAuthURL(relayState string) (string, error) {\n\tdoc, err := sp.BuildAuthRequestDocument()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn sp.BuildAuthURLFromDocument(relayState, doc)\n}\n\n// AuthRedirect takes a ResponseWriter and Request from an http interaction and\n// redirects to the SAMLServiceProvider's configured IdP, including the\n// relayState provided, if any.\nfunc (sp *SAMLServiceProvider) AuthRedirect(w http.ResponseWriter, r *http.Request, relayState string) (err error) {\n\turl, err := sp.BuildAuthURL(relayState)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\thttp.Redirect(w, r, url, http.StatusFound)\n\treturn nil\n}\n\nfunc (sp *SAMLServiceProvider) buildLogoutRequest(includeSig bool, nameID string, sessionIndex string) (*etree.Document, error) {\n\tlogoutRequest := &etree.Element{\n\t\tSpace: \"samlp\",\n\t\tTag:   \"LogoutRequest\",\n\t}\n\n\tlogoutRequest.CreateAttr(\"xmlns:samlp\", \"urn:oasis:names:tc:SAML:2.0:protocol\")\n\tlogoutRequest.CreateAttr(\"xmlns:saml\", \"urn:oasis:names:tc:SAML:2.0:assertion\")\n\n\tarId := uuid.NewV4()\n\n\tlogoutRequest.CreateAttr(\"ID\", \"_\"+arId.String())\n\tlogoutRequest.CreateAttr(\"Version\", \"2.0\")\n\tlogoutRequest.CreateAttr(\"IssueInstant\", sp.Clock.Now().UTC().Format(issueInstantFormat))\n\tlogoutRequest.CreateAttr(\"Destination\", sp.IdentityProviderSLOURL)\n\n\t// NOTE(russell_h): In earlier versions we mistakenly sent the IdentityProviderIssuer\n\t// in the AuthnRequest. For backwards compatibility we will fall back to that\n\t// behavior when ServiceProviderIssuer isn't set.\n\t// TODO: Throw error in case Issuer is empty.\n\tif sp.ServiceProviderIssuer != \"\" {\n\t\tlogoutRequest.CreateElement(\"saml:Issuer\").SetText(sp.ServiceProviderIssuer)\n\t} else {\n\t\tlogoutRequest.CreateElement(\"saml:Issuer\").SetText(sp.IdentityProviderIssuer)\n\t}\n\n\tnameId := logoutRequest.CreateElement(\"saml:NameID\")\n\tnameId.SetText(nameID)\n\tnameId.CreateAttr(\"Format\", sp.NameIdFormat)\n\n\t//Section 3.7.1 - http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf says\n\t//SessionIndex is optional. If the IDP supports SLO then it must send SessionIndex as per\n\t//Section 4.1.4.2 of https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf.\n\t//As per section 4.4.3.1 of //docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf,\n\t//a LogoutRequest issued by Session Participant to Identity Provider, must contain\n\t//at least one SessionIndex element needs to be included.\n\tnameId = logoutRequest.CreateElement(\"samlp:SessionIndex\")\n\tnameId.SetText(sessionIndex)\n\n\tdoc := etree.NewDocument()\n\n\tif includeSig {\n\t\tsigned, err := sp.SignLogoutRequest(logoutRequest)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tdoc.SetRoot(signed)\n\t} else {\n\t\tdoc.SetRoot(logoutRequest)\n\t}\n\n\treturn doc, nil\n}\n\nfunc (sp *SAMLServiceProvider) SignLogoutRequest(el *etree.Element) (*etree.Element, error) {\n\tctx := sp.SigningContext()\n\n\tsig, err := ctx.ConstructSignature(el, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tret := el.Copy()\n\n\tvar children []etree.Token\n\tchildren = append(children, ret.Child[0])     // issuer is always first\n\tchildren = append(children, sig)              // next is the signature\n\tchildren = append(children, ret.Child[1:]...) // then all other children\n\tret.Child = children\n\n\treturn ret, nil\n}\n\nfunc (sp *SAMLServiceProvider) BuildLogoutRequestDocumentNoSig(nameID string, sessionIndex string) (*etree.Document, error) {\n\treturn sp.buildLogoutRequest(false, nameID, sessionIndex)\n}\n\nfunc (sp *SAMLServiceProvider) BuildLogoutRequestDocument(nameID string, sessionIndex string) (*etree.Document, error) {\n\treturn sp.buildLogoutRequest(true, nameID, sessionIndex)\n}\n\n//BuildLogoutBodyPostFromDocument builds the POST body to be sent to IDP.\n//It takes the LogoutRequest xml as input.\nfunc (sp *SAMLServiceProvider) BuildLogoutBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) {\n\treturn sp.buildLogoutBodyPostFromDocument(relayState, doc)\n}\n\nfunc (sp *SAMLServiceProvider) buildLogoutBodyPostFromDocument(relayState string, doc *etree.Document) ([]byte, error) {\n\treqBuf, err := doc.WriteToBytes()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tencodedReqBuf := base64.StdEncoding.EncodeToString(reqBuf)\n\tvar tmpl *template.Template\n\tvar rv bytes.Buffer\n\n\tif relayState != \"\" {\n\t\ttmpl = template.Must(template.New(\"saml-post-form\").Parse(`` +\n\t\t\t`<form method=\"POST\" action=\"{{.URL}}\" id=\"SAMLRequestForm\">` +\n\t\t\t`<input type=\"hidden\" name=\"SAMLRequest\" value=\"{{.SAMLRequest}}\" />` +\n\t\t\t`<input type=\"hidden\" name=\"RelayState\" value=\"{{.RelayState}}\" />` +\n\t\t\t`<input id=\"SAMLSubmitButton\" type=\"submit\" value=\"Submit\" />` +\n\t\t\t`</form>` +\n\t\t\t`<script>document.getElementById('SAMLSubmitButton').style.visibility=\"hidden\";` +\n\t\t\t`document.getElementById('SAMLRequestForm').submit();</script>`))\n\n\t\tdata := struct {\n\t\t\tURL         string\n\t\t\tSAMLRequest string\n\t\t\tRelayState  string\n\t\t}{\n\t\t\tURL:         sp.IdentityProviderSLOURL,\n\t\t\tSAMLRequest: encodedReqBuf,\n\t\t\tRelayState:  relayState,\n\t\t}\n\t\tif err = tmpl.Execute(&rv, data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\ttmpl = template.Must(template.New(\"saml-post-form\").Parse(`` +\n\t\t\t`<form method=\"POST\" action=\"{{.URL}}\" id=\"SAMLRequestForm\">` +\n\t\t\t`<input type=\"hidden\" name=\"SAMLRequest\" value=\"{{.SAMLRequest}}\" />` +\n\t\t\t`<input id=\"SAMLSubmitButton\" type=\"submit\" value=\"Submit\" />` +\n\t\t\t`</form>` +\n\t\t\t`<script>document.getElementById('SAMLSubmitButton').style.visibility=\"hidden\";` +\n\t\t\t`document.getElementById('SAMLRequestForm').submit();</script>`))\n\n\t\tdata := struct {\n\t\t\tURL         string\n\t\t\tSAMLRequest string\n\t\t}{\n\t\t\tURL:         sp.IdentityProviderSLOURL,\n\t\t\tSAMLRequest: encodedReqBuf,\n\t\t}\n\t\tif err = tmpl.Execute(&rv, data); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn rv.Bytes(), nil\n}\n\nfunc (sp *SAMLServiceProvider) BuildLogoutURLRedirect(relayState string, doc *etree.Document) (string, error) {\n\treturn sp.buildLogoutURLFromDocument(relayState, BindingHttpRedirect, doc)\n}\n\nfunc (sp *SAMLServiceProvider) buildLogoutURLFromDocument(relayState, binding string, doc *etree.Document) (string, error) {\n\tparsedUrl, err := url.Parse(sp.IdentityProviderSLOURL)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tlogoutRequest, err := doc.WriteToString()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tbuf := &bytes.Buffer{}\n\n\tfw, err := flate.NewWriter(buf, flate.DefaultCompression)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"flate NewWriter error: %v\", err)\n\t}\n\n\t_, err = fw.Write([]byte(logoutRequest))\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"flate.Writer Write error: %v\", err)\n\t}\n\n\terr = fw.Close()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"flate.Writer Close error: %v\", err)\n\t}\n\n\tqs := parsedUrl.Query()\n\n\tqs.Add(\"SAMLRequest\", base64.StdEncoding.EncodeToString(buf.Bytes()))\n\n\tif relayState != \"\" {\n\t\tqs.Add(\"RelayState\", relayState)\n\t}\n\n\tif binding == BindingHttpRedirect {\n\t\t// Sign URL encoded query (see Section 3.4.4.1 DEFLATE Encoding of saml-bindings-2.0-os.pdf)\n\t\tctx := sp.SigningContext()\n\t\tqs.Add(\"SigAlg\", ctx.GetSignatureMethodIdentifier())\n\t\tvar rawSignature []byte\n\t\t//qs.Encode() sorts the keys (See https://golang.org/pkg/net/url/#Values.Encode).\n\t\t//If RelayState parameter is present then RelayState parameter\n\t\t//will be put first by Encode(). Hence encode them separately and concatenate.\n\t\t//Signature string has to have parameters in the order - SAMLRequest=value&RelayState=value&SigAlg=value.\n\t\t//(See Section 3.4.4.1 saml-bindings-2.0-os.pdf).\n\t\tvar orderedParams = []string{\"SAMLRequest\", \"RelayState\", \"SigAlg\"}\n\n\t\tvar paramValueMap = make(map[string]string)\n\t\tparamValueMap[\"SAMLRequest\"] = base64.StdEncoding.EncodeToString(buf.Bytes())\n\t\tif relayState != \"\" {\n\t\t\tparamValueMap[\"RelayState\"] = relayState\n\t\t}\n\t\tparamValueMap[\"SigAlg\"] = ctx.GetSignatureMethodIdentifier()\n\n\t\tss := \"\"\n\n\t\tfor _, k := range orderedParams {\n\t\t\tv, ok := paramValueMap[k]\n\t\t\tif ok {\n\t\t\t\t//Add the value after URL encoding.\n\t\t\t\tu := url.Values{}\n\t\t\t\tu.Add(k, v)\n\t\t\t\te := u.Encode()\n\t\t\t\tif ss != \"\" {\n\t\t\t\t\tss += \"&\" + e\n\t\t\t\t} else {\n\t\t\t\t\tss = e\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//Now generate the signature on the string of ordered parameters.\n\t\tif rawSignature, err = ctx.SignString(ss); err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"unable to sign query string of redirect URL: %v\", err)\n\t\t}\n\n\t\t// Now add base64 encoded Signature\n\t\tqs.Add(\"Signature\", base64.StdEncoding.EncodeToString(rawSignature))\n\t}\n\n\t//Here the parameters may appear in any order.\n\tparsedUrl.RawQuery = qs.Encode()\n\treturn parsedUrl.String(), nil\n}\n\n// signatureInputString constructs the string to be fed into the signature algorithm, as described\n// in section 3.4.4.1 of\n// https://www.oasis-open.org/committees/download.php/56779/sstc-saml-bindings-errata-2.0-wd-06.pdf\nfunc signatureInputString(samlRequest, relayState, sigAlg string) string {\n\tvar params [][2]string\n\tif relayState == \"\" {\n\t\tparams = [][2]string{{\"SAMLRequest\", samlRequest}, {\"SigAlg\", sigAlg}}\n\t} else {\n\t\tparams = [][2]string{{\"SAMLRequest\", samlRequest}, {\"RelayState\", relayState}, {\"SigAlg\", sigAlg}}\n\t}\n\n\tvar buf bytes.Buffer\n\tfor _, kv := range params {\n\t\tk, v := kv[0], kv[1]\n\t\tif buf.Len() > 0 {\n\t\t\tbuf.WriteByte('&')\n\t\t}\n\t\tbuf.WriteString(url.QueryEscape(k) + \"=\" + url.QueryEscape(v))\n\t}\n\treturn buf.String()\n}\n"
  },
  {
    "path": "build_request_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"encoding/base64\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"net/url\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/beevik/etree\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestRedirect(t *testing.T) {\n\tr := &http.Request{URL: &url.URL{Path: \"/\"}}\n\tw := httptest.NewRecorder()\n\n\tspURL := \"https://sp.test\"\n\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t\tSignAuthnRequests:           false,\n\t}\n\n\trequire.NoError(t, sp.AuthRedirect(w, r, \"foobar\"))\n\trequire.Len(t, w.HeaderMap, 1, \"wrong number of headers was set\")\n\trequire.Equal(t, http.StatusFound, w.Code, \"wrong http status was set\")\n\n\tu, err := url.Parse(w.HeaderMap.Get(\"Location\"))\n\trequire.NoError(t, err, \"invalid url used for redirect\")\n\n\trequire.Equal(t, \"idp.test\", u.Host)\n\trequire.Equal(t, \"https\", u.Scheme)\n\trequire.Equal(t, \"foobar\", u.Query().Get(\"RelayState\"))\n\n\tbs, err := base64.StdEncoding.DecodeString(u.Query().Get(\"SAMLRequest\"))\n\trequire.NoError(t, err, \"error base64 decoding SAMLRequest query param\")\n\n\tfr := flate.NewReader(bytes.NewReader(bs))\n\n\treq := AuthNRequest{}\n\trequire.NoError(t, xml.NewDecoder(fr).Decode(&req), \"Error reading/decoding from flate-compressed URL\")\n\n\tiss, err := url.Parse(req.Issuer)\n\trequire.NoError(t, err, \"error parsing request issuer URL\")\n\n\trequire.Equal(t, \"sp.test\", iss.Host)\n\trequire.WithinDuration(t, time.Now(), req.IssueInstant, time.Second, \"IssueInstant was not within the expected time frame\")\n\n\tdst, err := url.Parse(req.Destination)\n\trequire.NoError(t, err, \"error parsing request destination\")\n\trequire.Equal(t, \"https\", dst.Scheme)\n\trequire.Equal(t, \"idp.test\", dst.Host)\n\n\t//Require that the destination is the same as the redirected URL, except params\n\trequire.Equal(t, fmt.Sprintf(\"%s://%s%s\", u.Scheme, u.Host, u.Path), dst.String())\n}\n\nfunc TestRequestedAuthnContextOmitted(t *testing.T) {\n\tspURL := \"https://sp.test\"\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t\tSignAuthnRequests:           false,\n\t}\n\n\trequest, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\n\tdoc := etree.NewDocument()\n\terr = doc.ReadFromString(request)\n\trequire.NoError(t, err)\n\n\tel := doc.FindElement(\"./AuthnRequest/RequestedAuthnContext\")\n\trequire.Nil(t, el)\n}\n\nfunc TestRequestedAuthnContextIncluded(t *testing.T) {\n\tspURL := \"https://sp.test\"\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t\tRequestedAuthnContext: &RequestedAuthnContext{\n\t\t\tComparison: AuthnPolicyMatchExact,\n\t\t\tContexts: []string{\n\t\t\t\tAuthnContextPasswordProtectedTransport,\n\t\t\t},\n\t\t},\n\t\tSignAuthnRequests: false,\n\t}\n\n\trequest, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\n\tdoc := etree.NewDocument()\n\terr = doc.ReadFromString(request)\n\trequire.NoError(t, err)\n\n\tel := doc.FindElement(\"./AuthnRequest/RequestedAuthnContext\")\n\trequire.Equal(t, el.SelectAttrValue(\"Comparison\", \"\"), \"exact\")\n\trequire.Len(t, el.ChildElements(), 1)\n\tel = el.ChildElements()[0]\n\trequire.Equal(t, el.Tag, \"AuthnContextClassRef\")\n\trequire.Equal(t, el.Text(), AuthnContextPasswordProtectedTransport)\n}\n\nfunc TestForceAuthnOmitted(t *testing.T) {\n\tspURL := \"https://sp.test\"\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t}\n\n\trequest, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\n\tdoc := etree.NewDocument()\n\terr = doc.ReadFromString(request)\n\trequire.NoError(t, err)\n\n\tattr := doc.Root().SelectAttr(\"ForceAuthn\")\n\trequire.Nil(t, attr)\n}\n\nfunc TestForceAuthnIncluded(t *testing.T) {\n\tspURL := \"https://sp.test\"\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t\tForceAuthn:                  true,\n\t}\n\n\trequest, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\n\tdoc := etree.NewDocument()\n\terr = doc.ReadFromString(request)\n\trequire.NoError(t, err)\n\n\tattr := doc.Root().SelectAttr(\"ForceAuthn\")\n\trequire.NotNil(t, attr)\n\trequire.Equal(t, \"true\", attr.Value)\n}\n\nfunc TestIsPassiveOmitted(t *testing.T) {\n\tspURL := \"https://sp.test\"\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t}\n\n\trequest, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\n\tdoc := etree.NewDocument()\n\terr = doc.ReadFromString(request)\n\trequire.NoError(t, err)\n\n\tattr := doc.Root().SelectAttr(\"IsPassive\")\n\trequire.Nil(t, attr)\n}\n\nfunc TestIsPassiveIncluded(t *testing.T) {\n\tspURL := \"https://sp.test\"\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: spURL,\n\t\tAudienceURI:                 spURL,\n\t\tIdentityProviderIssuer:      spURL,\n\t\tIdentityProviderSSOURL:      \"https://idp.test/saml/sso\",\n\t\tIsPassive:                   true,\n\t}\n\n\trequest, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\n\tdoc := etree.NewDocument()\n\terr = doc.ReadFromString(request)\n\trequire.NoError(t, err)\n\n\tattr := doc.Root().SelectAttr(\"IsPassive\")\n\trequire.NotNil(t, attr)\n\trequire.Equal(t, \"true\", attr.Value)\n}\n"
  },
  {
    "path": "decode_logout_request.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"encoding/base64\"\n\t\"fmt\"\n\n\tdsig \"github.com/russellhaering/goxmldsig\"\n)\n\nfunc (sp *SAMLServiceProvider) validateLogoutRequestAttributes(request *LogoutRequest) error {\n\tif request.Destination != \"\" && request.Destination != sp.ServiceProviderSLOURL {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      DestinationAttr,\n\t\t\tExpected: sp.ServiceProviderSLOURL,\n\t\t\tActual:   request.Destination,\n\t\t}\n\t}\n\n\tif request.Version != \"2.0\" {\n\t\treturn ErrInvalidValue{\n\t\t\tReason:   ReasonUnsupported,\n\t\t\tKey:      \"SAML version\",\n\t\t\tExpected: \"2.0\",\n\t\t\tActual:   request.Version,\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (sp *SAMLServiceProvider) ValidateEncodedLogoutRequestPOST(encodedRequest string) (*LogoutRequest, error) {\n\traw, err := base64.StdEncoding.DecodeString(encodedRequest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Parse the raw request - parseResponse is generic\n\t_, el, err := parseResponse(raw, sp.MaximumDecompressedBodySize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar requestSignatureValidated bool\n\tif !sp.SkipSignatureValidation {\n\t\tel, err = sp.validateElementSignature(el)\n\t\tif err == dsig.ErrMissingSignature {\n\t\t\treturn nil, fmt.Errorf(\"logout request is not signed\")\n\t\t} else if err != nil {\n\t\t\treturn nil, err\n\t\t} else if el == nil {\n\t\t\treturn nil, fmt.Errorf(\"missing transformed logout request\")\n\t\t} else {\n\t\t\trequestSignatureValidated = true\n\t\t}\n\t}\n\n\tdecodedRequest := &LogoutRequest{}\n\terr = xmlUnmarshalElement(el, decodedRequest)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to unmarshal logout request: %v\", err)\n\t}\n\tdecodedRequest.SignatureValidated = requestSignatureValidated\n\n\terr = sp.ValidateDecodedLogoutRequest(decodedRequest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn decodedRequest, nil\n}\n"
  },
  {
    "path": "decode_response.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"encoding/xml\"\n\n\t\"github.com/beevik/etree\"\n\trtvalidator \"github.com/mattermost/xml-roundtrip-validator\"\n\t\"github.com/russellhaering/gosaml2/types\"\n\tdsig \"github.com/russellhaering/goxmldsig\"\n\t\"github.com/russellhaering/goxmldsig/etreeutils\"\n)\n\nconst (\n\tdefaultMaxDecompressedResponseSize = 5 * 1024 * 1024\n)\n\nfunc (sp *SAMLServiceProvider) validationContext() *dsig.ValidationContext {\n\tctx := dsig.NewDefaultValidationContext(sp.IDPCertificateStore)\n\tctx.Clock = sp.Clock\n\treturn ctx\n}\n\n// validateResponseAttributes validates a SAML Response's tag and attributes. It does\n// not inspect child elements of the Response at all.\nfunc (sp *SAMLServiceProvider) validateResponseAttributes(response *types.Response) error {\n\tif response.Destination != \"\" && response.Destination != sp.AssertionConsumerServiceURL {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      DestinationAttr,\n\t\t\tExpected: sp.AssertionConsumerServiceURL,\n\t\t\tActual:   response.Destination,\n\t\t}\n\t}\n\n\tif response.Version != \"2.0\" {\n\t\treturn ErrInvalidValue{\n\t\t\tReason:   ReasonUnsupported,\n\t\t\tKey:      \"SAML version\",\n\t\t\tExpected: \"2.0\",\n\t\t\tActual:   response.Version,\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// validateLogoutResponseAttributes validates a SAML Response's tag and attributes. It does\n// not inspect child elements of the Response at all.\nfunc (sp *SAMLServiceProvider) validateLogoutResponseAttributes(response *types.LogoutResponse) error {\n\tif response.Destination != \"\" && response.Destination != sp.ServiceProviderSLOURL {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      DestinationAttr,\n\t\t\tExpected: sp.ServiceProviderSLOURL,\n\t\t\tActual:   response.Destination,\n\t\t}\n\t}\n\n\tif response.Version != \"2.0\" {\n\t\treturn ErrInvalidValue{\n\t\t\tReason:   ReasonUnsupported,\n\t\t\tKey:      \"SAML version\",\n\t\t\tExpected: \"2.0\",\n\t\t\tActual:   response.Version,\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc xmlUnmarshalElement(el *etree.Element, obj interface{}) error {\n\tdoc := etree.NewDocument()\n\tdoc.SetRoot(el)\n\tdata, err := doc.WriteToBytes()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = xml.Unmarshal(data, obj)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (sp *SAMLServiceProvider) getDecryptCert() (*tls.Certificate, error) {\n\tif sp.SPKeyStore == nil {\n\t\treturn nil, fmt.Errorf(\"no decryption certs available\")\n\t}\n\n\t//This is the tls.Certificate we'll use to decrypt any encrypted assertions\n\tvar decryptCert tls.Certificate\n\n\tswitch crt := sp.SPKeyStore.(type) {\n\tcase dsig.TLSCertKeyStore:\n\t\t// Get the tls.Certificate directly if possible\n\t\tdecryptCert = tls.Certificate(crt)\n\n\tdefault:\n\n\t\t//Otherwise, construct one from the results of GetKeyPair\n\t\tpk, cert, err := sp.SPKeyStore.GetKeyPair()\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error getting keypair: %v\", err)\n\t\t}\n\n\t\tdecryptCert = tls.Certificate{\n\t\t\tCertificate: [][]byte{cert},\n\t\t\tPrivateKey:  pk,\n\t\t}\n\t}\n\n\tif sp.ValidateEncryptionCert {\n\t\t// Check Validity period of certificate\n\t\tif len(decryptCert.Certificate) < 1 || len(decryptCert.Certificate[0]) < 1 {\n\t\t\treturn nil, fmt.Errorf(\"empty decryption cert\")\n\t\t} else if cert, err := x509.ParseCertificate(decryptCert.Certificate[0]); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid x509 decryption cert: %v\", err)\n\t\t} else {\n\t\t\tnow := sp.Clock.Now()\n\t\t\tif now.Before(cert.NotBefore) || now.After(cert.NotAfter) {\n\t\t\t\treturn nil, fmt.Errorf(\"decryption cert is not valid at this time\")\n\t\t\t}\n\t\t}\n\t}\n\n\treturn &decryptCert, nil\n}\n\nfunc (sp *SAMLServiceProvider) decryptAssertions(el *etree.Element) error {\n\tvar decryptCert *tls.Certificate\n\n\tdecryptAssertion := func(ctx etreeutils.NSContext, encryptedElement *etree.Element) error {\n\t\tif encryptedElement.Parent() != el {\n\t\t\treturn fmt.Errorf(\"found encrypted assertion with unexpected parent element: %s\", encryptedElement.Parent().Tag)\n\t\t}\n\n\t\tdetached, err := etreeutils.NSDetatch(ctx, encryptedElement) // make a detached copy\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to detach encrypted assertion: %v\", err)\n\t\t}\n\n\t\tencryptedAssertion := &types.EncryptedAssertion{}\n\t\terr = xmlUnmarshalElement(detached, encryptedAssertion)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to unmarshal encrypted assertion: %v\", err)\n\t\t}\n\n\t\tif decryptCert == nil {\n\t\t\tdecryptCert, err = sp.getDecryptCert()\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"unable to get decryption certificate: %v\", err)\n\t\t\t}\n\t\t}\n\n\t\traw, derr := encryptedAssertion.DecryptBytes(decryptCert)\n\t\tif derr != nil {\n\t\t\treturn fmt.Errorf(\"unable to decrypt encrypted assertion: %v\", derr)\n\t\t}\n\n\t\tdoc, _, err := parseResponse(raw, sp.MaximumDecompressedBodySize)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to create element from decrypted assertion bytes: %v\", err)\n\t\t}\n\n\t\t// Replace the original encrypted assertion with the decrypted one.\n\t\tif el.RemoveChild(encryptedElement) == nil {\n\t\t\treturn fmt.Errorf(\"unable to remove encrypted assertion element\")\n\t\t}\n\n\t\tel.AddChild(doc.Root())\n\t\treturn nil\n\t}\n\n\tif err := etreeutils.NSFindIterate(el, SAMLAssertionNamespace, EncryptedAssertionTag, decryptAssertion); err != nil {\n\t\treturn err\n\t} else {\n\t\treturn nil\n\t}\n}\n\nfunc (sp *SAMLServiceProvider) validateElementSignature(el *etree.Element) (*etree.Element, error) {\n\treturn sp.validationContext().Validate(el)\n}\n\n// deprecated\nfunc (sp *SAMLServiceProvider) validateAssertionSignatures(el *etree.Element) error {\n\tsignedAssertions := 0\n\tunsignedAssertions := 0\n\tvalidateAssertion := func(ctx etreeutils.NSContext, unverifiedAssertion *etree.Element) error {\n\t\tparent := unverifiedAssertion.Parent()\n\t\tif parent == nil {\n\t\t\treturn fmt.Errorf(\"parent is nil\")\n\t\t}\n\t\tif parent != el {\n\t\t\treturn fmt.Errorf(\"found assertion with unexpected parent element: %s\", unverifiedAssertion.Parent().Tag)\n\t\t}\n\n\t\tdetached, err := etreeutils.NSDetatch(ctx, unverifiedAssertion) // make a detached copy\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to detach unverified assertion: %v\", err)\n\t\t}\n\n\t\tassertion, err := sp.validationContext().Validate(detached)\n\t\tif err == dsig.ErrMissingSignature {\n\t\t\tunsignedAssertions++\n\t\t\treturn nil\n\t\t} else if err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Replace the original unverified Assertion with the verified one. Note that\n\t\t// if the Response is not signed, only signed Assertions (and not the parent Response) can be trusted.\n\t\tif el.RemoveChild(unverifiedAssertion) == nil {\n\t\t\treturn fmt.Errorf(\"unable to remove unverified assertion element\")\n\t\t}\n\n\t\tel.AddChild(assertion)\n\t\tsignedAssertions++\n\n\t\treturn nil\n\t}\n\n\tif err := etreeutils.NSFindIterate(el, SAMLAssertionNamespace, AssertionTag, validateAssertion); err != nil {\n\t\treturn err\n\t} else if signedAssertions > 0 && unsignedAssertions > 0 {\n\t\treturn fmt.Errorf(\"invalid to have both signed and unsigned assertions\")\n\t} else if signedAssertions < 1 {\n\t\treturn dsig.ErrMissingSignature\n\t} else {\n\t\treturn nil\n\t}\n}\n\n// verifyAssertionSignaturesIfPresent iterates through assertions within a\n// signed Response and verifies any that carry their own signatures. Assertions\n// without signatures are left untouched (the Response envelope signature\n// covers them). This prevents XML wrapping attacks where assertion content is\n// tampered with inside a signed envelope.\nfunc (sp *SAMLServiceProvider) verifyAssertionSignaturesIfPresent(responseEl *etree.Element) error {\n\tverifyAssertion := func(ctx etreeutils.NSContext, assertionEl *etree.Element) error {\n\t\tif assertionEl.Parent() != responseEl {\n\t\t\treturn nil\n\t\t}\n\n\t\tdetached, err := etreeutils.NSDetatch(ctx, assertionEl)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to detach assertion for signature verification: %v\", err)\n\t\t}\n\n\t\tverified, err := sp.validationContext().Validate(detached)\n\t\tif err == dsig.ErrMissingSignature {\n\t\t\t// No signature on this assertion — that's fine, the Response\n\t\t\t// envelope signature covers it.\n\t\t\treturn nil\n\t\t} else if err != nil {\n\t\t\treturn fmt.Errorf(\"assertion signature verification failed: %v\", err)\n\t\t}\n\n\t\t// Replace the unverified assertion with the signature-verified version.\n\t\tif responseEl.RemoveChild(assertionEl) == nil {\n\t\t\treturn fmt.Errorf(\"unable to remove unverified assertion element\")\n\t\t}\n\t\tresponseEl.AddChild(verified)\n\t\treturn nil\n\t}\n\n\treturn etreeutils.NSFindIterate(responseEl, SAMLAssertionNamespace, AssertionTag, verifyAssertion)\n}\n\n// ValidateEncodedResponse both decodes and validates, based on SP\n// configuration, an encoded, signed response. It will also appropriately\n// decrypt a response if the assertion was encrypted\nfunc (sp *SAMLServiceProvider) ValidateEncodedResponse(encodedResponse string) (*types.Response, error) {\n\traw, err := base64.StdEncoding.DecodeString(encodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Parse the raw response\n\tdoc, unverifiedResponse, err := parseResponse(raw, sp.MaximumDecompressedBodySize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar responseSignatureValidated bool\n\t// storing our final response to return back\n\tdecodedResponse := &types.Response{}\n\t// user has decided to skip signature verification\n\t// just unmarshal the untrusted el\n\n\tif sp.SkipSignatureValidation {\n\t\terr = xmlUnmarshalElement(unverifiedResponse, decodedResponse)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to unmarshal response: %v\", err)\n\t\t}\n\n\t\tdecodedResponse.SignatureValidated = false\n\t\terr := sp.Validate(decodedResponse)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn decodedResponse, nil\n\t}\n\n\t// first get SignedResponse, if any\n\tsignedResponseEl, err := sp.validateElementSignature(unverifiedResponse)\n\n\t// continue for unsigned Response, maybe individual Assertions are still signed\n\tif err == dsig.ErrMissingSignature {\n\t\t// Unfortunately we just blew away our Response\n\t\tunverifiedResponse = doc.Root()\n\t} else if err != nil {\n\t\treturn nil, err\n\t} else if signedResponseEl == nil {\n\t\treturn nil, fmt.Errorf(\"missing transformed response\")\n\t} else {\n\t\t// good case, no errors when verifying signature\n\t\t// 1. Response is signed\n\t\t// optionally decrypt each assertion\n\t\terr = sp.decryptAssertions(signedResponseEl)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Even though the Response envelope is signed, verify assertion\n\t\t// signatures when present. This prevents XML wrapping attacks\n\t\t// where an attacker tampers with assertion content within a\n\t\t// signed envelope.\n\t\terr = sp.verifyAssertionSignaturesIfPresent(signedResponseEl)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tresponseSignatureValidated = true\n\n\t\terr = xmlUnmarshalElement(signedResponseEl, decodedResponse)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"unable to unmarshal response: %v\", err)\n\t\t}\n\t\tdecodedResponse.SignatureValidated = responseSignatureValidated\n\n\t\terr := sp.Validate(decodedResponse)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn decodedResponse, nil\n\t}\n\n\t// now we have a tricky case,\n\t// unsigned response but have some signed Assertions\n\t// unmarshal into decodedResponse,\n\n\terr = xmlUnmarshalElement(unverifiedResponse, decodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// keep in mind anything inside the Response is technically untrusted\n\t// however, we have to keep the relevant details such as StatusCode\n\t// We reset the underlying assertions & encrypted assertions to []\n\n\tdecodedResponse.SignatureValidated = false\n\tdecodedResponse.Assertions = []types.Assertion{}\n\tdecodedResponse.EncryptedAssertions = []types.EncryptedAssertion{}\n\n\t// first decrypt all assertions\n\terr = sp.decryptAssertions(unverifiedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// iterate through each Assertion inside our etree unverifiedResponse\n\taddSignedAssertion := func(ctx etreeutils.NSContext, unverifiedAssertion *etree.Element) error {\n\t\tparent := unverifiedAssertion.Parent()\n\t\tif parent == nil {\n\t\t\treturn fmt.Errorf(\"parent is nil\")\n\t\t}\n\t\tif parent != unverifiedResponse {\n\t\t\treturn fmt.Errorf(\"found assertion with unexpected parent element: %s\", unverifiedAssertion.Parent().Tag)\n\t\t}\n\n\t\tdetached, err := etreeutils.NSDetatch(ctx, unverifiedAssertion) // make a detached copy\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to detach unverified assertion: %v\", err)\n\t\t}\n\n\t\t// signedAssertion after checking for errors\n\t\tsignedAssertion, err := sp.validationContext().Validate(detached)\n\n\t\tif err != nil {\n\t\t\treturn err // return any errors including unsignedAssertions\n\t\t}\n\n\t\tdecodedAssertion := &types.Assertion{}\n\n\t\terr = xmlUnmarshalElement(signedAssertion, decodedAssertion)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to unmarshal assertion: %v\", err)\n\t\t}\n\n\t\tdecodedAssertion.SignatureValidated = true\n\n\t\t// now add it to decodedResponse\n\t\tdecodedResponse.Assertions = append(decodedResponse.Assertions, *decodedAssertion)\n\n\t\treturn nil\n\t}\n\n\t// iterate through each Assertion through our unverified Response\n\t// our decodedResponse contains a empty list of Assertions\n\t// throughout iteration, we will add signed assertions to the decodedResponse\n\tif err := etreeutils.NSFindIterate(unverifiedResponse, SAMLAssertionNamespace, AssertionTag, addSignedAssertion); err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = sp.Validate(decodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn decodedResponse, nil\n}\n\n// DecodeUnverifiedBaseResponse decodes several attributes from a SAML response for the purpose\n// of determining how to validate the response. This is useful for Service Providers which\n// expose a single Assertion Consumer Service URL but consume Responses from many IdPs.\nfunc DecodeUnverifiedBaseResponse(encodedResponse string) (*types.UnverifiedBaseResponse, error) {\n\traw, err := base64.StdEncoding.DecodeString(encodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar response *types.UnverifiedBaseResponse\n\n\terr = maybeDeflate(raw, defaultMaxDecompressedResponseSize, func(maybeXML []byte) error {\n\t\tresponse = &types.UnverifiedBaseResponse{}\n\t\treturn xml.Unmarshal(maybeXML, response)\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\n\n// maybeDeflate invokes the passed decoder over the passed data. If an error is\n// returned, it then attempts to deflate the passed data before re-invoking\n// the decoder over the deflated data.\nfunc maybeDeflate(data []byte, maxSize int64, decoder func([]byte) error) error {\n\terr := decoder(data)\n\tif err == nil {\n\t\treturn nil\n\t}\n\n\t// Default to 5MB max size\n\tif maxSize == 0 {\n\t\tmaxSize = defaultMaxDecompressedResponseSize\n\t}\n\n\tlr := io.LimitReader(flate.NewReader(bytes.NewReader(data)), maxSize+1)\n\n\tdeflated, err := io.ReadAll(lr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif int64(len(deflated)) > maxSize {\n\t\treturn fmt.Errorf(\"deflated response exceeds maximum size of %d bytes\", maxSize)\n\t}\n\n\treturn decoder(deflated)\n}\n\n// parseResponse is a helper function that was refactored out so that the XML parsing behavior can be isolated and unit tested\nfunc parseResponse(xml []byte, maxSize int64) (*etree.Document, *etree.Element, error) {\n\tvar doc *etree.Document\n\tvar rawXML []byte\n\n\terr := maybeDeflate(xml, maxSize, func(xml []byte) error {\n\t\tdoc = etree.NewDocument()\n\t\trawXML = xml\n\t\treturn doc.ReadFromBytes(xml)\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tel := doc.Root()\n\tif el == nil {\n\t\treturn nil, nil, fmt.Errorf(\"unable to parse response\")\n\t}\n\n\t// Examine the response for attempts to exploit weaknesses in Go's encoding/xml\n\terr = rtvalidator.Validate(bytes.NewReader(rawXML))\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn doc, el, nil\n}\n\n// DecodeUnverifiedLogoutResponse decodes several attributes from a SAML Logout response, without doing any verifications.\nfunc DecodeUnverifiedLogoutResponse(encodedResponse string) (*types.LogoutResponse, error) {\n\traw, err := base64.StdEncoding.DecodeString(encodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar response *types.LogoutResponse\n\n\terr = maybeDeflate(raw, defaultMaxDecompressedResponseSize, func(maybeXML []byte) error {\n\t\tresponse = &types.LogoutResponse{}\n\t\treturn xml.Unmarshal(maybeXML, response)\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn response, nil\n}\n\nfunc (sp *SAMLServiceProvider) ValidateEncodedLogoutResponsePOST(encodedResponse string) (*types.LogoutResponse, error) {\n\traw, err := base64.StdEncoding.DecodeString(encodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Parse the raw response\n\tdoc, el, err := parseResponse(raw, sp.MaximumDecompressedBodySize)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar responseSignatureValidated bool\n\tif !sp.SkipSignatureValidation {\n\t\tel, err = sp.validateElementSignature(el)\n\t\tif err == dsig.ErrMissingSignature {\n\t\t\t// Unfortunately we just blew away our Response\n\t\t\tel = doc.Root()\n\t\t} else if err != nil {\n\t\t\treturn nil, err\n\t\t} else if el == nil {\n\t\t\treturn nil, fmt.Errorf(\"missing transformed logout response\")\n\t\t} else {\n\t\t\tresponseSignatureValidated = true\n\t\t}\n\t}\n\n\tdecodedResponse := &types.LogoutResponse{}\n\terr = xmlUnmarshalElement(el, decodedResponse)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to unmarshal logout response: %v\", err)\n\t}\n\tdecodedResponse.SignatureValidated = responseSignatureValidated\n\n\terr = sp.ValidateDecodedLogoutResponse(decodedResponse)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn decodedResponse, nil\n}\n"
  },
  {
    "path": "decode_response_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"encoding/pem\"\n\t\"io/ioutil\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/jonboulle/clockwork\"\n\trtvalidator \"github.com/mattermost/xml-roundtrip-validator\"\n\tdsig \"github.com/russellhaering/goxmldsig\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nconst (\n\tidpCert = `\n-----BEGIN CERTIFICATE-----\nMIIDODCCAiCgAwIBAgIUQH54kyyeacU69J2iwz9bzeLmMaswDQYJKoZIhvcNAQEL\nBQAwHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MB4XDTE1MDYwNDIyMTAz\nMVoXDTM1MDYwNDIyMTAzMVowHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlJhN20ng2VN/cTrWtqUI\nNaUsrHCkYXbm2y1PTN4b6fJI5hbvcv+LWCuLkLi3+iPGlBpcHHfrdJcyhmBHRHQ9\nSos3RIH5Lsn1IgjWe3hxQQmVeEi5xVxnw2YZGHaeX4YnI1TEBJwhtJmyitk74LHy\nbPGEqOJdApUnLz54L7I+252G/cOfEqUHMbxxtmHSc/9chF8bBxQ8OzIbJsByHnqi\nawQHwtsttre7n328gVqmf1VHE27cfAYiSjuK5pCsx/1kuJMBN+kg/3Gg9oi6aR50\nWX1VUF3IBcnTDeiAXRz3PgsT8FlVZou6Ik9NT/Y5IHOZVGk64SRDaG8FuGxLexXr\nswIDAQABo3AwbjAdBgNVHQ4EFgQUjQwaAoY3u/iToIE3ADeNEW+Uu34wTQYDVR0R\nBEYwRIISY29sbGVnZS5jY2N0Y2EuZWR1hi5odHRwczovL2NvbGxlZ2UuY2NjdGNh\nLmVkdTo4NDQzL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBAQB26rdx\nphN1YKad3yDhLg6Y1ZwbmAjc+l4QB1KSL+cLqhDn5iMy4VdWh8HpSKRqCwofLtlw\n3qOwospj+mJaguXRMpjYODRQaKRkTrCGxJhuNrQxDXL/b6FOEIJnUYenbPevuNgR\nJc1VnREhWUUXT44KN5YUz9FEiG0BsBK8ecCPKBzTQ/hwaczhpqw6uqVMqxJaTGcn\nlCUHJAhVHiA8lWJ7vaNPsJ86xBFs/F76EwyFXIKQaruvcvChU7GNNSYdNJBa6HO9\n9QWdGbr5aNQ4diunnBQdrdjgbQIwyhKTfbFWa2l5vbqEKDc0dwuPa6c25l8ruqxq\nCQ1CF8ZDDJ0XV6Ab\n-----END CERTIFICATE-----\n`\n\n\toktaCert = `\n-----BEGIN CERTIFICATE-----\nMIIDPDCCAiQCCQDydJgOlszqbzANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzETMB\nEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEQMA4GA1UEChMH\nSmFua3lDbzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDMxMjE5NDYzM1oXDTI3MTExOT\nE5NDYzM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcT\nDVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB0phbmt5Q28xEjAQBgNVBAMTCWxvY2FsaG9zdD\nCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMGvJpRTTasRUSPqcbqCG+ZnTAur\nnu0vVpIG9lzExnh11o/BGmzu7lB+yLHcEdwrKBBmpepDBPCYxpVajvuEhZdKFx/Fdy6j5m\nH3rrW0Bh/zd36CoUNjbbhHyTjeM7FN2yF3u9lcyubuvOzr3B3gX66IwJlU46+wzcQVhSOl\nMk2tXR+fIKQExFrOuK9tbX3JIBUqItpI+HnAow509CnM134svw8PTFLkR6/CcMqnDfDK1m\n993PyoC1Y+N4X9XkhSmEQoAlAHPI5LHrvuujM13nvtoVYvKYoj7ScgumkpWNEvX652LfXO\nnKYlkB8ZybuxmFfIkzedQrbJsyOhfL03cMECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAeH\nwzqwnzGEkxjzSD47imXaTqtYyETZow7XwBc0ZaFS50qRFJUgKTAmKS1xQBP/qHpStsROT3\n5DUxJAE6NY1Kbq3ZbCuhGoSlY0L7VzVT5tpu4EY8+Dq/u2EjRmmhoL7UkskvIZ2n1DdERt\nd+YUMTeqYl9co43csZwDno/IKomeN5qaPc39IZjikJ+nUC6kPFKeu/3j9rgHNlRtocI6S1\nFdtFz9OZMQlpr0JbUt2T3xS/YoQJn6coDmJL5GTiiKM6cOe+Ur1VwzS1JEDbSS2TWWhzq8\nojLdrotYLGd9JOsoQhElmz+tMfCFQUFLExinPAyy7YHlSiVX13QH2XTu/iQQ==\n-----END CERTIFICATE-----\n`\n\n\toktaCert2 = `\n-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAWxzAwX1MA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi05MDUyNTExHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTkwODA4MjA1MzMzWhcNMjkwODA4MjA1NDMzWjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtOTA1MjUxMRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nm+ZZF6aEG6ehLLIV6RPA+i1z6ss3HBG2bZD3efwKCDDXYUkp59AE7JsjVHMtpJPHhzHuScuHDMlu\nHmkBQTW7j9XpnaRn8SfZXkwlCUHTo+HAC9lwbQxO4d4wnwgnm6FAjm1I/gbfFAobd8BR9pDxHuXE\nMQ0DtQu/W3WbDUrz/bhSxPJAoVy2koQn9G0y3unm7eRwYWHeuW6GdPWV2szTtDS0c3qtUXVF5Ugg\niQYlwQu6xkfy4l8iGJL7ETa2BmJzwCFecMIct87SqNhYQwCBH54MBaHcaSsCKyimNvMY9B7RmC+H\n4+awePPA1q3R/UQ3Pfom8mx6yDdKIWqlkG3MsQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAiURCZ\nP4oJWcf1o5nm4yG15UH01g/S6Y4OUWMi6BFJy9fCrJ0h/2BZKi68SQ0uMAbdK6anxCzq3Rr5MSzW\nOWPQ1Zljn3LGPsiTFdFca/GVRen5IYQ7Dr2Mvhtm+QVscEY9TDjtETbTAHEVEjwXmB21wtdIhizv\nsQS7wz0A8LV+Atpbev45RiV6COmB6T6vJuFQ7ZsDZMSHZriTYiETTJvHBGd7PtbCxYNc6LRB2JDb\nwlekRhVEjR0UhnM+nn2sqqbv7tDEPs63lZSDXCnR1PhscHrEuQ04rHI3OL0gCULVQFvJrj85IAZF\n1QQuGUK8ozfOyFpQWAJUW71INnF/SLWv\n-----END CERTIFICATE-----\n`\n\n\tbadInput = `<saml2:Assertion ID=\"id1684056077776386493060641\"IssueInstant=\"2019-08-12T12:00:52.718Z\"Version=\"2.0\"xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\"xmlns=\"\">http://www.okta.com/exk133onomIuOW98z357</l><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id1684056077776386493060641\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces PrefixList=\"xs\"xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></m></s><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>dC1cm0pLLjIWZC6G2Pmf0JogmqHztp9W1euXPd/TUHo=</e></e></o><ds:SignatureValue>YRSCFLIkIgjbbYLyfCIc8jsP2MUJPjn+nYWRdlVIDdXtYXXxklYqdBXQsxDwNcsOAIGS75PeVGryml3oBkUDg/MfK7z/fFPLXX7c7xgh7/DBAFlSXbwlJQxuXQ5eZcGesgG6nYRwU1hpW+yN7C2ODN9KHi5TUdiEhvy8vdlFSfxdy4Mn68nG/UZBqmHHIZdRG2/Hpcs29YyaVVZUCZ0w22b7zsPuOXHuStOSTQ6isxI2R268+ZNKERYaNMCAGX4zNlT3mHBV0NnZkbO3wmlOfKksL+Qx7L64xFc3PaervxWuPqh2FoWpTCqFdliLdvUfFDszKXJKhO0bj1U0aSrdzg==</e><s><s><s></X></X></o></e><saml2:Subject xmlns=\"\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">steven.james.johnstone@gmail.com</l><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_40a419f5-5c1c-43d0-5834-5caf268a5f01\"NotOnOrAfter=\"2019-08-12T12:05:52.718Z\"Recipient=\"https://127.0.0.1/login\"/></l></l><saml2:Conditions NotBefore=\"2019-08-12T11:55:52.718Z\"NotOnOrAfter=\"2019-08-12T12:05:52.718Z\"xmlns=\"\"><saml2:AudienceRestriction><saml2:Audience>37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f.jazznetworks.com</l></l></l><saml2:AuthnStatement AuthnInstant=\"2019-08-12T12:00:52.718Z\"SessionIndex=\"_40a419f5-5c1c-43d0-5834-5caf268a5f01\"xmlns=\"\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</l></l></l><saml2:AttributeStatement xmlns=\"\"><saml2:Attribute Name=\"FirstName\"NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns=\"\"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"xsi:type=\"xs:string\">Steven</l></l><saml2:Attribute Name=\"LastName\"NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns=\"\"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"xsi:type=\"xs:string\">Johnstone</l></l><saml2:Attribute Name=\"Email\"NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns=\"\"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"xsi:type=\"xs:string\">steven.james.johnstone@gmail.com`\n)\n\nfunc testEncryptedAssertion(t *testing.T, validateEncryptionCert bool) {\n\tvar err error\n\tcert, err := tls.LoadX509KeyPair(\"./testdata/test.crt\", \"./testdata/test.key\")\n\trequire.NoError(t, err, \"could not load x509 key pair\")\n\n\tblock, _ := pem.Decode([]byte(idpCert))\n\n\tidpCert, err := x509.ParseCertificate(block.Bytes)\n\trequire.NoError(t, err, \"couldn't parse idp cert pem block\")\n\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: \"https://saml2.test.astuart.co/sso/saml2\",\n\t\tSPKeyStore:                  dsig.TLSCertKeyStore(cert),\n\t\tValidateEncryptionCert:      validateEncryptionCert,\n\t\tIDPCertificateStore: &dsig.MemoryX509CertificateStore{\n\t\t\tRoots: []*x509.Certificate{idpCert},\n\t\t},\n\t\tClock: dsig.NewFakeClockAt(time.Date(2016, 04, 28, 22, 00, 00, 00, time.UTC)),\n\t}\n\n\tbs, err := ioutil.ReadFile(\"./testdata/saml.post\")\n\trequire.NoError(t, err, \"couldn't read post\")\n\n\t_, err = sp.RetrieveAssertionInfo(string(bs))\n\tif validateEncryptionCert {\n\t\trequire.Error(t, err)\n\t\trequire.Equal(t, \"error validating response: unable to get decryption certificate: decryption cert is not valid at this time\", err.Error())\n\t} else {\n\t\trequire.NoError(t, err, \"Assertion info should be retrieved with no error\")\n\t}\n}\n\nfunc TestEncryptedAssertion(t *testing.T) {\n\ttestEncryptedAssertion(t, false)\n}\n\nfunc TestEncryptedAssertionInvalidCert(t *testing.T) {\n\ttestEncryptedAssertion(t, true)\n}\n\nfunc TestCompressedResponse(t *testing.T) {\n\tbs, err := ioutil.ReadFile(\"./testdata/saml_compressed.post\")\n\trequire.NoError(t, err, \"couldn't read compressed post\")\n\n\tblock, _ := pem.Decode([]byte(oktaCert))\n\n\tidpCert, err := x509.ParseCertificate(block.Bytes)\n\trequire.NoError(t, err, \"couldn't parse okta cert pem block\")\n\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: \"https://f1f51ddc.ngrok.io/api/sso/saml2/acs/58cafd0573d4f375b8e70e8e\",\n\t\tSPKeyStore:                  dsig.TLSCertKeyStore(cert),\n\t\tIDPCertificateStore: &dsig.MemoryX509CertificateStore{\n\t\t\tRoots: []*x509.Certificate{idpCert},\n\t\t},\n\t\tClock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 3, 17, 20, 00, 0, 0, time.UTC))),\n\t}\n\n\t_, err = sp.RetrieveAssertionInfo(string(bs))\n\trequire.NoError(t, err, \"Assertion info should be retrieved with no error\")\n}\n\nfunc TestDecodeColonsInLocalNames(t *testing.T) {\n\t// Handling of double colons was improved in Go 1.7 such that this test no longer fails.\n\t// See: https://go-review.googlesource.com/c/go/+/277892\n\tif rtvalidator.Validate(bytes.NewReader([]byte(`<x::Root/>`))) == nil {\n\t\tt.Skip()\n\t}\n\n\t_, _, err := parseResponse([]byte(`<x::Root/>`), 0)\n\trequire.Error(t, err)\n}\n\nfunc TestDecodeDoubleColonInjectionAttackResponse(t *testing.T) {\n\t// Handling of double colons was improved in Go 1.7 such that this test no longer fails.\n\t// See: https://go-review.googlesource.com/c/go/+/277892\n\tif rtvalidator.Validate(bytes.NewReader([]byte(`<x::Root/>`))) == nil {\n\t\tt.Skip()\n\t}\n\n\t_, _, err := parseResponse([]byte(doubleColonAssertionInjectionAttackResponse), 0)\n\trequire.Error(t, err)\n}\n\nfunc TestMalFormedInput(t *testing.T) {\n\tblock, _ := pem.Decode([]byte(oktaCert2))\n\tidpCert, err := x509.ParseCertificate(block.Bytes)\n\trequire.NoError(t, err, \"couldn't parse okta cert pem block\")\n\n\tcertStore := dsig.MemoryX509CertificateStore{\n\t\tRoots: []*x509.Certificate{idpCert},\n\t}\n\n\tsp := &SAMLServiceProvider{\n\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2019, 8, 12, 12, 00, 52, 718, time.UTC))),\n\t\tAssertionConsumerServiceURL: \"https://saml2.test.astuart.co/sso/saml2\",\n\t\tSignAuthnRequests:           true,\n\t\tIDPCertificateStore:         &certStore,\n\t\tValidateEncryptionCert:      true,\n\t}\n\tbase64Input := base64.StdEncoding.EncodeToString([]byte(badInput))\n\t_, err = sp.RetrieveAssertionInfo(base64Input)\n\trequire.Errorf(t, err, \"parent is nil\")\n}\n\nfunc TestCompressionBombInput(t *testing.T) {\n\tbs, err := ioutil.ReadFile(\"./testdata/saml_compressed.post\")\n\trequire.NoError(t, err, \"couldn't read compressed post\")\n\n\tblock, _ := pem.Decode([]byte(oktaCert))\n\n\tidpCert, err := x509.ParseCertificate(block.Bytes)\n\trequire.NoError(t, err, \"couldn't parse okta cert pem block\")\n\n\tsp := SAMLServiceProvider{\n\t\tAssertionConsumerServiceURL: \"https://f1f51ddc.ngrok.io/api/sso/saml2/acs/58cafd0573d4f375b8e70e8e\",\n\t\tSPKeyStore:                  dsig.TLSCertKeyStore(cert),\n\t\tIDPCertificateStore: &dsig.MemoryX509CertificateStore{\n\t\t\tRoots: []*x509.Certificate{idpCert},\n\t\t},\n\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 3, 17, 20, 00, 0, 0, time.UTC))),\n\t\tMaximumDecompressedBodySize: 2048,\n\t}\n\n\t_, err = sp.RetrieveAssertionInfo(string(bs))\n\trequire.Error(t, err, \"error validating response: deflated response exceeds maximum size of 2048 bytes\")\n}\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/russellhaering/gosaml2\n\ngo 1.25.0\n\ntoolchain go1.26.1\n\nrequire (\n\tgithub.com/beevik/etree v1.6.0\n\tgithub.com/jonboulle/clockwork v0.5.0\n\tgithub.com/mattermost/xml-roundtrip-validator v0.1.0\n\tgithub.com/russellhaering/goxmldsig v1.6.0\n\tgithub.com/stretchr/testify v1.11.1\n)\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/kr/text v0.2.0 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "github.com/beevik/etree v1.6.0 h1:u8Kwy8pp9D9XeITj2Z0XtA5qqZEmtJtuXZRQi+j03eE=\ngithub.com/beevik/etree v1.6.0/go.mod h1:bh4zJxiIr62SOf9pRzN7UUYaEDa9HEKafK25+sLc0Gc=\ngithub.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=\ngithub.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60=\ngithub.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=\ngithub.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU=\ngithub.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=\ngithub.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=\ngithub.com/russellhaering/goxmldsig v1.6.0 h1:8fdWXEPh2k/NZNQBPFNoVfS3JmzS4ZprY/sAOpKQLks=\ngithub.com/russellhaering/goxmldsig v1.6.0/go.mod h1:TrnaquDcYxWXfJrOjeMBTX4mLBeYAqaHEyUeWPxZlBM=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "internal/fuzz/README.md",
    "content": "# Internal Fuzzing for gosaml2\n\nThis directory contains fuzzing targets for gosaml2 that are used with Go's built-in fuzzing functionality and OSS-Fuzz.\n\n## Running Fuzzers Locally\n\n```bash\ngo test -fuzz=FuzzDecodeResponse ./internal/fuzz/ -fuzztime=30s\ngo test -fuzz=FuzzLogoutResponse ./internal/fuzz/ -fuzztime=30s\ngo test -fuzz=FuzzBuildRequest ./internal/fuzz/ -fuzztime=30s\n```\n\n## OSS-Fuzz Integration\n\nThese fuzzers use native Go fuzzing (`func Fuzz(f *testing.F)`) and are compiled\nby OSS-Fuzz using `compile_native_go_fuzzer`. Configuration files for the integration\ncan be found in the `oss-fuzz` directory."
  },
  {
    "path": "internal/fuzz/fuzz_test.go",
    "content": "// Copyright 2025 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fuzz\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"testing\"\n\n\tsaml2 \"github.com/russellhaering/gosaml2\"\n)\n\nfunc FuzzDecodeResponse(f *testing.F) {\n\tf.Fuzz(func(t *testing.T, data []byte) {\n\t\tencodedResponse := base64.StdEncoding.EncodeToString(data)\n\n\t\t_, err := saml2.DecodeUnverifiedBaseResponse(encodedResponse)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tsp := &saml2.SAMLServiceProvider{}\n\t\t_, _ = sp.ValidateEncodedResponse(encodedResponse)\n\t})\n}\n\nfunc FuzzLogoutResponse(f *testing.F) {\n\tf.Fuzz(func(t *testing.T, data []byte) {\n\t\tencodedResponse := base64.StdEncoding.EncodeToString(data)\n\n\t\t_, err := saml2.DecodeUnverifiedLogoutResponse(encodedResponse)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tsp := &saml2.SAMLServiceProvider{}\n\t\t_, _ = sp.ValidateEncodedLogoutResponsePOST(encodedResponse)\n\t})\n}\n\nfunc FuzzBuildRequest(f *testing.F) {\n\tf.Fuzz(func(t *testing.T, data []byte) {\n\t\tif len(data) < 8 {\n\t\t\treturn\n\t\t}\n\n\t\tidValue := binary.LittleEndian.Uint64(data[:8])\n\t\trelayState := string(data[8:])\n\n\t\tif len(relayState) == 0 {\n\t\t\treturn\n\t\t}\n\n\t\tsp := &saml2.SAMLServiceProvider{\n\t\t\tIdentityProviderSSOURL:      \"https://idp.example.com/sso\",\n\t\t\tIdentityProviderIssuer:      \"https://idp.example.com/\",\n\t\t\tAssertionConsumerServiceURL: \"https://sp.example.com/acs\",\n\t\t\tAudienceURI:                 \"https://sp.example.com/audience\",\n\t\t\tSignAuthnRequests:           idValue%2 == 0,\n\t\t\tForceAuthn:                  idValue%3 == 0,\n\t\t\tIsPassive:                   idValue%5 == 0,\n\t\t}\n\n\t\t_, _ = sp.BuildAuthURL(relayState)\n\t\t_, _ = sp.BuildAuthRequest()\n\t})\n}\n"
  },
  {
    "path": "logout_request.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"encoding/xml\"\n\t\"github.com/russellhaering/gosaml2/types\"\n\t\"time\"\n)\n\n// LogoutRequest is the go struct representation of a logout request\ntype LogoutRequest struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:protocol LogoutRequest\"`\n\tID      string   `xml:\"ID,attr\"`\n\tVersion string   `xml:\"Version,attr\"`\n\t//ProtocolBinding     string          `xml:\",attr\"`\n\n\tIssueInstant time.Time `xml:\"IssueInstant,attr\"`\n\n\tDestination string        `xml:\"Destination,attr\"`\n\tIssuer      *types.Issuer `xml:\"Issuer\"`\n\n\tNameID             *types.NameID `xml:\"NameID\"`\n\tSignatureValidated bool          `xml:\"-\"` // not read, not dumped\n}\n"
  },
  {
    "path": "oss-fuzz/Dockerfile",
    "content": "# Copyright 2025 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n#\n################################################################################\n\nFROM gcr.io/oss-fuzz-base/base-builder-go\nRUN apt-get update && apt-get install -y make cmake\nRUN git clone --depth 1 https://github.com/russellhaering/gosaml2\nWORKDIR gosaml2\nCOPY build.sh $SRC/\nCOPY *.options $SRC/ "
  },
  {
    "path": "oss-fuzz/README.md",
    "content": "# OSS-Fuzz Integration for gosaml2\n\nThis directory contains the configuration files necessary for integrating gosaml2 with Google's [OSS-Fuzz](https://github.com/google/oss-fuzz) continuous fuzzing service.\n\n## Files\n\n- `build.sh`: Build script that compiles the fuzzing targets and creates the seed corpora\n- `Dockerfile`: Defines the Docker container used for building the fuzzers\n- `project.yaml`: Project configuration for OSS-Fuzz\n- `fuzz_decode_response.options`: Fuzzer-specific options for the SAML response decoder\n\n## Fuzzing Targets\n\nThe actual fuzzing targets are implemented in the `internal/fuzz` directory:\n\n1. `FuzzDecodeResponse`: Fuzzes SAML response decoding and validation\n2. `FuzzLogoutResponse`: Fuzzes SAML logout response decoding\n3. `FuzzBuildRequest`: Fuzzes SAML authentication request building\n4. `FuzzXMLValidation`: Fuzzes XML validation to catch parsing vulnerabilities\n\n## Testing Locally with Docker\n\nTo test the OSS-Fuzz integration locally:\n\n```bash\n# Clone OSS-Fuzz\ngit clone https://github.com/google/oss-fuzz\ncd oss-fuzz\n\n# Build the image\npython infra/helper.py build_image gosaml2\n\n# Build the fuzzers\npython infra/helper.py build_fuzzers gosaml2\n\n# Run the fuzzers\npython infra/helper.py run_fuzzer gosaml2 fuzz_decode_response\n```\n\n## Adding New Fuzzers\n\nTo add a new fuzzer:\n\n1. Add the fuzzer implementation to `internal/fuzz/`\n2. Update `build.sh` to compile the new fuzzer and create its seed corpus\n3. Create fuzzer options file if needed (e.g., `my_new_fuzzer.options`) "
  },
  {
    "path": "oss-fuzz/build.sh",
    "content": "#!/bin/bash -eu\n# Copyright 2025 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n################################################################################\n\ncd $SRC/gosaml2\n\n# Build fuzzers\ncompile_native_go_fuzzer github.com/russellhaering/gosaml2/internal/fuzz FuzzDecodeResponse fuzz_decode_response\ncompile_native_go_fuzzer github.com/russellhaering/gosaml2/internal/fuzz FuzzLogoutResponse fuzz_logout_response\ncompile_native_go_fuzzer github.com/russellhaering/gosaml2/internal/fuzz FuzzBuildRequest fuzz_build_request\n\n# Create seed corpus\nmkdir -p $OUT/fuzz_decode_response_seed_corpus\n# Use existing test data as seed corpus\nfind ./testdata -name '*.b64' -o -name '*.xml' | while read f; do\n  cp \"$f\" $OUT/fuzz_decode_response_seed_corpus/\ndone\nzip -j $OUT/fuzz_decode_response_seed_corpus.zip $OUT/fuzz_decode_response_seed_corpus/*\nrm -rf $OUT/fuzz_decode_response_seed_corpus\n\n# Create a minimal seed corpus for the logout response\nmkdir -p $OUT/fuzz_logout_response_seed_corpus\n# Find logout response files if they exist, otherwise use a subset of the general ones\nfind ./testdata -name '*logout*' -o -name '*.b64' | head -n 5 | while read f; do\n  cp \"$f\" $OUT/fuzz_logout_response_seed_corpus/\ndone\nzip -j $OUT/fuzz_logout_response_seed_corpus.zip $OUT/fuzz_logout_response_seed_corpus/*\nrm -rf $OUT/fuzz_logout_response_seed_corpus\n\n# Create a minimal seed corpus for build request\nmkdir -p $OUT/fuzz_build_request_seed_corpus\necho \"relayState\" > $OUT/fuzz_build_request_seed_corpus/relaystate\necho \"state123456\" > $OUT/fuzz_build_request_seed_corpus/state\nzip -j $OUT/fuzz_build_request_seed_corpus.zip $OUT/fuzz_build_request_seed_corpus/*\nrm -rf $OUT/fuzz_build_request_seed_corpus\n"
  },
  {
    "path": "oss-fuzz/fuzz_decode_response.options",
    "content": "[libfuzzer]\nmax_len = 10240\n"
  },
  {
    "path": "oss-fuzz/project.yaml",
    "content": "homepage: \"https://github.com/russellhaering/gosaml2\"\nprimary_contact: \"russell.haering@gmail.com\"\nlanguage: go\nmain_repo: \"https://github.com/russellhaering/gosaml2\"\n\nfuzzing_engines:\n  - libfuzzer\nsanitizers:\n  - address\n\narchitectures:\n  - x86_64"
  },
  {
    "path": "providertests/exercise.go",
    "content": "// Copyright 2016 Russell Haering et al.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     https://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// +build go1.7\n\npackage providertests\n\nimport (\n\t\"testing\"\n\n\tsaml2 \"github.com/russellhaering/gosaml2\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc ExerciseProviderTestScenarios(t *testing.T, scenarios []ProviderTestScenario) {\n\tfor _, scenario := range scenarios {\n\t\tt.Run(scenario.ScenarioName, func(t *testing.T) {\n\t\t\t_, err := saml2.DecodeUnverifiedBaseResponse(scenario.Response)\n\t\t\t// DecodeUnverifiedBaseResponse is more permissive than RetrieveAssertionInfo.\n\t\t\t// If an error _is_ returned it should match, but it is OK for no error to be\n\t\t\t// returned even when one is expected during full validation.\n\t\t\tif err != nil {\n\t\t\t\tscenario.CheckError(t, err)\n\t\t\t}\n\n\t\t\tassertionInfo, err := scenario.ServiceProvider.RetrieveAssertionInfo(scenario.Response)\n\t\t\tif scenario.CheckError != nil {\n\t\t\t\tscenario.CheckError(t, err)\n\t\t\t} else {\n\t\t\t\trequire.NoError(t, err)\n\t\t\t}\n\n\t\t\tif err == nil {\n\t\t\t\tif scenario.CheckWarningInfo != nil {\n\t\t\t\t\tscenario.CheckWarningInfo(t, assertionInfo.WarningInfo)\n\t\t\t\t} else {\n\t\t\t\t\trequire.False(t, assertionInfo.WarningInfo.InvalidTime)\n\t\t\t\t\trequire.False(t, assertionInfo.WarningInfo.NotInAudience)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "providertests/exercise_go_1_6.go",
    "content": "// Copyright 2016 Russell Haering et al.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     https://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// +build !go1.7\n\npackage providertests\n\nimport (\n\t\"testing\"\n\n\tsaml2 \"github.com/russellhaering/gosaml2\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc ExerciseProviderTestScenarios(t *testing.T, scenarios []ProviderTestScenario) {\n\tfor _, scenario := range scenarios {\n\t\t// DecodeUnverifiedBaseResponse is more permissive than RetrieveAssertionInfo.\n\t\t// If an error _is_ returned it should match, but it is OK for no error to be\n\t\t// returned even when one is expected during full validation.\n\t\t_, err := saml2.DecodeUnverifiedBaseResponse(scenario.Response)\n\t\tif err != nil {\n\t\t\tscenario.CheckError(t, err)\n\t\t}\n\n\t\tassertionInfo, err := scenario.ServiceProvider.RetrieveAssertionInfo(scenario.Response)\n\t\tif scenario.CheckError != nil {\n\t\t\tscenario.CheckError(t, err)\n\t\t} else {\n\t\t\trequire.NoError(t, err)\n\t\t}\n\n\t\tif err == nil {\n\t\t\tif scenario.CheckWarningInfo != nil {\n\t\t\t\tscenario.CheckWarningInfo(t, assertionInfo.WarningInfo)\n\t\t\t} else {\n\t\t\t\trequire.False(t, assertionInfo.WarningInfo.InvalidTime)\n\t\t\t\trequire.False(t, assertionInfo.WarningInfo.NotInAudience)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "providertests/oktadev_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage providertests\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/jonboulle/clockwork\"\n\tsaml2 \"github.com/russellhaering/gosaml2\"\n\tdsig \"github.com/russellhaering/goxmldsig\"\n)\n\nvar oktaScenarioErrors = map[int]string{\n\t1:  \"error validating response: Missing signature referencing the top-level element\",\n\t3:  \"error validating response: Could not verify certificate against trusted certs\",\n\t4:  \"error validating response: Unrecognized Destination value, Expected: http://dba9a5fc.ngrok.io/v1/_saml_callback, Actual: fake.identifier.example.com\",\n\t5:  \"error validating response: Unrecognized Issuer value, Expected: http://example.com/saml/acs/example, Actual: fake.identifier.example.com\",\n\t7:  \"error validating response: missing Issuer element\",\n\t8:  \"error validating response: missing NotOnOrAfter attribute on SubjectConfirmationData element\",\n\t9:  \"missing NotOnOrAfter attribute on Conditions element\",\n\t10: \"missing NotBefore attribute on Conditions element\",\n\t12: \"error validating response: Missing signature referencing the top-level element\",\n\t13: \"error validating response: Signature could not be verified\",\n\t14: \"error validating response: Unrecognized StatusCode value, Expected: urn:oasis:names:tc:SAML:2.0:status:Success, Actual: Failure\",\n\t15: \"error validating response: Unrecognized StatusCode value, Expected: urn:oasis:names:tc:SAML:2.0:status:Success, Actual: urn:oasis:names:tc:SAML:2.0:status:Requester\",\n}\n\nvar oktaScenarioWarnings = map[int]scenarioWarnings{\n\t6: scenarioWarnings{\n\t\tNotInAudience: true,\n\t},\n\t11: scenarioWarnings{\n\t\tInvalidTime: true,\n\t},\n}\n\nfunc TestOktaDevCasesLocally(t *testing.T) {\n\tsp := &saml2.SAMLServiceProvider{\n\t\tIdentityProviderSSOURL:      \"http://example.com/saml/acs/example\",\n\t\tIdentityProviderIssuer:      \"http://example.com/saml/acs/example\",\n\t\tAssertionConsumerServiceURL: \"http://dba9a5fc.ngrok.io/v1/_saml_callback\",\n\t\tAudienceURI:                 \"http://example.com/saml/acs/example\",\n\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/saml.oktadev.com/oktadev.pem\"),\n\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 4, 4, 17, 54, 0, 0, time.UTC))),\n\t}\n\n\tscenarios := []ProviderTestScenario{}\n\n\tfor i := 0; i < 17; i++ {\n\t\tresponse := LoadRawResponse(fmt.Sprintf(\"./testdata/saml.oktadev.com/response_%d\", i))\n\t\tscenarios = append(scenarios, ProviderTestScenario{\n\t\t\tScenarioName:    fmt.Sprintf(\"Scenario_%d\", i),\n\t\t\tResponse:        response,\n\t\t\tServiceProvider: sp,\n\t\t\t// Capture the value of i by passing it to a function.\n\t\t\tCheckError:       scenarioErrorChecker(i, oktaScenarioErrors),\n\t\t\tCheckWarningInfo: scenarioWarningChecker(i, oktaScenarioWarnings),\n\t\t})\n\t}\n\n\tExerciseProviderTestScenarios(t, scenarios)\n}\n"
  },
  {
    "path": "providertests/onelogin_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage providertests\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\tsaml2 \"github.com/russellhaering/gosaml2\"\n)\n\nvar oneLoginScenarioErrors = map[int]string{\n\t// 99 - Response(Assertion) - no signature\n\t99: \"error validating response: Missing signature referencing the top-level element\",\n\t// 98 - Response(encrypted(Assertion)) - no signature\n\t98: \"error validating response: Missing signature referencing the top-level element\",\n\t// 01 - signed(Response(Assertion))\n\t1: \"\",\n\t// 03 - Response(signed(Assertion))\n\t3: \"\",\n\t// 04 - signed(Response(signed(Assertion)))\n\t4: \"\",\n\t// 05 - Response(encrypted(signed(Assertion))), no encryption certificate included in Assertion.\n\t// OneLogin does not include SP encryption certificate by default.  ADFS and PingFed also do not\n\t// include the SP encryption certificate and they do not provide an option to include it in Response.\n\t// OneLogin and PingFed also do not include DigestMethod (default to http://www.w3.org/2000/09/xmldsig#sha1).\n\t5: \"\",\n\t// 06 - Response(encrypted(signed(Assertion)))\n\t6: \"\",\n\t// 07 - signed(Response(encrypted(Assertion)))\n\t7: \"\",\n\t// 08 - signed(Response(encrypted(signed(Assertion))))\n\t8: \"\",\n\t// 09 - signed(Response(encrypted(signed(Assertion)))), no encryption certificate included in Assertion.\n\t// OneLogin does not include SP encryption certificate by default.  ADFS and PingFed also do not\n\t// include the SP encryption certificate and they do not provide an option to include it in Response.\n\t// OneLogin and PingFed also do not include DigestMethod (default to http://www.w3.org/2000/09/xmldsig#sha1).\n\t9: \"\",\n\t// 11 - signed(Response(Assertion)) - 01 Assertion content changed slightly\n\t11: \"error validating response: Signature could not be verified\",\n\t// 12 - signed(Response(Assertion)) - 01 Response content changed slightly\n\t12: \"error validating response: Signature could not be verified\",\n\t// 13 - Response(signed(Assertion)) - 03 Assertion content changed slightly\n\t13: \"error validating response: Signature could not be verified\",\n\t// 14 - signed(Response(signed(Assertion)) - 04 Assertion content changed slightly\n\t14: \"error validating response: Signature could not be verified\",\n\t// 15 - signed(Response(signed(Assertion))) - 04 Response content changed slightly\n\t15: \"error validating response: Signature could not be verified\",\n\t// 16 - Response(encrypted(signed(Assertion))) - 06 CipherValue of EncryptedKey changed slightly\n\t16: \"error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: rsa internal error: crypto/rsa: decryption error\",\n\t// 17 - signed(Response(encrypted(Assertion))) - 07 Response content changed slightly\n\t17: \"error validating response: Signature could not be verified\",\n\t// 18 - signed(Response(encrypted(signed(Assertion)))) - 16 signed (signature valid, still cannot decrypt)\n\t18: \"error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: rsa internal error: crypto/rsa: decryption error\",\n\t// 81 - Response(Assertion) - 99 missing assertion and response signature\n\t81: \"error validating response: Missing signature referencing the top-level element\",\n\t// 82 - Response(Assertion) - 99 missing assertion and response signature\n\t82: \"error validating response: Missing signature referencing the top-level element\",\n\t// 91 - Response(Assertion) - 99 missing Response subject confirmation element\n\t// Note: gosaml2 is correctly checking signature before contents\n\t91: \"error validating response: Missing signature referencing the top-level element\",\n\t// 92 - Response(Assertion) - 99 missing Response subject confirmation method\n\t// Note: gosaml2 is correctly checking signature before contents\n\t92: \"error validating response: Missing signature referencing the top-level element\",\n\t// 21 - signed(Response(Assertion)) - 91 sign Response, IssueInstant before SigningCertTime\n\t21: \"error validating response: Cert is not valid at this time\",\n\t// 22 - signed(Response(Assertion)) - 92 sign Response, IssueInstant after SigningCertTime\n\t22: \"error validating response: Cert is not valid at this time\",\n\t// 93 - Response(signed(Assertion)) - 91 sign Assertion, IssueInstant before SigningCertTime\n\t93: \"error validating response: Cert is not valid at this time\",\n\t// 94 - Response(signed(Assertion)) - 92 sign Assertion, IssueInstant after SigningCertTime\n\t94: \"error validating response: Cert is not valid at this time\",\n\t// 83 - Response(signed(Assertion)) - 81 sign Assertion IssueInstant before EncryptionCertTime\n\t//                                    (Success, EncryptionCertTime is not a factor in this case)\n\t83: \"\",\n\t// 84 - Response(signed(Assertion)) - 82 sign Assertion, IssueInstant after EncryptionCertTime\n\t//\t                                  (Success, EncryptionCertTime is not a factor in this case)\n\t84: \"\",\n\t// 23 - Response(encrypted(signed(Assertion))) - 83 encrypt Assertion, IssueInstant before EncryptionCertTime\n\t23: \"error validating response: unable to get decryption certificate: decryption cert is not valid at this time\",\n\t// 24 - Response(encrypted(signed(Assertion))) - 84 encrypt Assertion, IssueInstant after EncryptionCertTime\n\t24: \"error validating response: unable to get decryption certificate: decryption cert is not valid at this time\",\n\t// 26 - signed(Response(Assertion)) - 01 with AtTime after IssueInstant\n\t26: \"error validating response: Expired NotOnOrAfter value, Expected: 2017-08-30T23:55:00Z, Actual: 2017-08-30T23:19:41.379Z\",\n\t// 28 - Response(encrypted(signed(Assertion))) - 06 with AtTime after IssueInstant\n\t28: \"error validating response: Expired NotOnOrAfter value, Expected: 2017-08-30T23:55:00Z, Actual: 2017-08-30T23:19:41.379Z\",\n\t// 31 - signed(Response(Assertion)) - 01 wrong IDP signing cert\n\t31: \"error validating response: Could not verify certificate against trusted certs\",\n\t// 33 - Response(signed(Assertion)) - 03 wrong IDP signing cert\n\t33: \"error validating response: Could not verify certificate against trusted certs\",\n\t// 34 - signed(Response(signed(Assertion))) - 04 wrong IDP signing cert\n\t34: \"error validating response: Could not verify certificate against trusted certs\",\n\t// 36 - Response(encrypted(signed(Assertion))) - 06 wrong IDP signing cert, correct SP encryption cert\n\t36: \"error validating response: Could not verify certificate against trusted certs\",\n\t// 37 - signed(Response(encrypted(Assertion))) - 07 wrong IDP signing cert, correct SP encryption cert\n\t37: \"error validating response: Could not verify certificate against trusted certs\",\n\t// 38 - signed(Response(encrypted(signed(Assertion)))) - 08 wrong IDP signing cert, correct SP encryption cert\n\t38: \"error validating response: Could not verify certificate against trusted certs\",\n\t// 97 - Response(encrypted(Assertion)) - 99 wrong SP encryption cert\n\t97: \"error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)\",\n\t// 46 - Response(encrypted(signed(Assertion))) - 06 wrong SP encryption cert, correct IDP signing cert\n\t46: \"error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)\",\n\t// 47 - signed(Response(encrypted(Assertion))) - 07 wrong SP encryption cert, correct IDP signing cert\n\t47: \"error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)\",\n\t// 48 - signed(Response(encrypted(signed(Assertion)))) - 08 wrong SP encryption cert, correct IDP signing cert\n\t48: \"error validating response: unable to decrypt encrypted assertion: cannot decrypt, error retrieving private key: key decryption attempted with mismatched cert, SP cert(cd:f6:7c:e9), assertion cert(42:99:58:b8)\",\n\t// 85 - Response(Assertion) - 99 empty Response Destination (empty is ok, Destination is optional)\n\t// Note: gosaml2 is correctly checking signature before contents\n\t85: \"error validating response: Missing signature referencing the top-level element\",\n\t// 86 - Response(Assertion) - 99 wrong Response Destination (SP acs)\n\t// Note: gosaml2 is correctly checking signature before contents\n\t86: \"error validating response: Missing signature referencing the top-level element\",\n\t// 87 - Response(Assertion) - 99 wrong Response Issuer (IDP endpoint id)\n\t// Note: gosaml2 is correctly checking signature before contents\n\t87: \"error validating response: Missing signature referencing the top-level element\",\n\t// 88 - Response(Assertion) - 99 wrong Assertion Audience (SP entity id)\n\t// Note: gosaml2 is correctly checking signature before contents\n\t88: \"error validating response: Missing signature referencing the top-level element\",\n\t// 89 - Response(Assertion) - 99 wrong Assertion Issuer (IDP endpoint id)\n\t// Note: gosaml2 is correctly checking signature before contents\n\t89: \"error validating response: Missing signature referencing the top-level element\",\n\t// 50 - signed(Response(Assertion)) - 85 signed Response, empty Response Destination (success, optional)\n\t50: \"\",\n\t// 51 - signed(Response(Assertion)) - 86 signed Response, wrong Response Destination (SP acs)\n\t51: \"error validating response: Unrecognized Destination value, Expected: https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z, Actual: https://saml.sp.nope/session/sso/saml/acs/incorrect\",\n\t// 52 - signed(Response(Assertion)) - 87 signed Response, wrong Response Issuer (IDP endpoint id)\n\t52: \"error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect\",\n\t// 54 - signed(Response(Assertion)) - 89 signed Response, wrong Assertion Issuer (IDP endpoint id)\n\t54: \"error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect\",\n\t// 55 - Response(signed(Assertion)) - 85 signed Assertion, empty Response Destination (success, optional)\n\t55: \"\",\n\t// 56 - Response(signed(Assertion)) - 86 signed Assertion, wrong Response Destination (SP acs)\n\t56: \"error validating response: Unrecognized Destination value, Expected: https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z, Actual: https://saml.sp.nope/session/sso/saml/acs/incorrect\",\n\t// 57 - error validating response: Response(signed(Assertion)) - 87 signed Assertion, wrong Response Issuer (IDP endpoint id)\n\t57: \"error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect\",\n\t// 59 - Response(signed(Assertion)) - 89 signed Assertion, wrong Assertion Issuer (IDP endpoint id)\n\t59: \"error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect\",\n\t// 155 - Response(encrypted(signed(Assertion))) - 85 encrypted signed Assertion, empty Response Destination (success, optional)\n\t155: \"\",\n\t// 156 - Response(encrypted(signed(Assertion))) - 86 encrypted signed Assertion, wrong Response Destination (SP acs)\n\t156: \"error validating response: Unrecognized Destination value, Expected: https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z, Actual: https://saml.sp.nope/session/sso/saml/acs/incorrect\",\n\t// 157 - Response(encrypted(signed(Assertion))) - 87 encrypted signed Assertion, wrong Response Issuer (IDP endpoint id)\n\t157: \"error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect\",\n\t// 159 - Response(encrypted(signed(Assertion))) - 89 encrypted signed Assertion, wrong Assertion Issuer (IDP endpoint id)\n\t159: \"error validating response: Unrecognized Issuer value, Expected: https://saml.idp.nope/h9gkjzvb3e, Actual: https://saml.idp.nope/incorrect\",\n}\n\nvar oneLoginScenarioWarnings = map[int]scenarioWarnings{\n\t// 25 - signed(Response(Assertion)) - 01 with AtTime before IssueInstant\n\t25: scenarioWarnings{\n\t\tInvalidTime: true,\n\t},\n\t// 27 - Response(encrypted(signed(Assertion))) - 06 with AtTime before IssueInstant\n\t27: scenarioWarnings{\n\t\tInvalidTime: true,\n\t},\n\t// 53 - signed(Response(Assertion)) - 88 signed Response, wrong Assertion Audience (SP entity id)\n\t53: scenarioWarnings{\n\t\tNotInAudience: true,\n\t},\n\t// 58 - Response(signed(Assertion)) - 88 signed Assertion, wrong Assertion Audience (SP entity id)\n\t58: scenarioWarnings{\n\t\tNotInAudience: true,\n\t},\n\t// 158 - Response(encrypted(signed(Assertion))) - 88 encrypted signed Assertion, wrong Assertion Audience (SP entity id)\n\t158: scenarioWarnings{\n\t\tNotInAudience: true,\n\t},\n}\n\nvar oneLoginAtTimes = map[int]string{\n\t25: \"2017-08-30T23:00:00Z\",\n\t26: \"2017-08-30T23:55:00Z\",\n\t27: \"2017-08-30T23:00:00Z\",\n\t28: \"2017-08-30T23:55:00Z\",\n}\n\nfunc TestOneLoginCasesLocally(t *testing.T) {\n\tsp := &saml2.SAMLServiceProvider{\n\t\tIdentityProviderSSOURL:      \"https://saml.idp.nope/h9gkjzvb3e\", // not required for these tests\n\t\tIdentityProviderIssuer:      \"https://saml.idp.nope/h9gkjzvb3e\",\n\t\tAssertionConsumerServiceURL: \"https://saml.sp.nope/session/sso/saml/acs/rq5jwkvb8z\",\n\t\tAudienceURI:                 \"https://saml.sp.nope/session/sso/saml/spentityid/rq5jwkvb8z\",\n\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/onelogin/idp.signing.cert\"),\n\t\tSPKeyStore:                  LoadKeyStore(\"./testdata/onelogin/sp.encryption.cert\", \"./testdata/onelogin/sp.encryption.key\"),\n\t\tSPSigningKeyStore:           LoadKeyStore(\"./testdata/onelogin/sp.signing.cert\", \"./testdata/onelogin/sp.signing.key\"),\n\t\tValidateEncryptionCert:      true,\n\t}\n\n\tscenarios := []ProviderTestScenario{}\n\tfor _, idx := range scenarioIndexes(oneLoginScenarioErrors, oneLoginScenarioWarnings) {\n\t\tresponse := LoadRawResponse(fmt.Sprintf(\"./testdata/onelogin/olgn09_response_%02d.b64\", idx))\n\t\tscenarios = append(scenarios, ProviderTestScenario{\n\t\t\tScenarioName:     fmt.Sprintf(\"Scenario_%02d\", idx),\n\t\t\tResponse:         response,\n\t\t\tServiceProvider:  spAtTime(sp, getAtTime(idx, oneLoginAtTimes), response),\n\t\t\tCheckError:       scenarioErrorChecker(idx, oneLoginScenarioErrors),\n\t\t\tCheckWarningInfo: scenarioWarningChecker(idx, oneLoginScenarioWarnings),\n\t\t})\n\t}\n\n\tExerciseProviderTestScenarios(t, scenarios)\n}\n"
  },
  {
    "path": "providertests/pingfed_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     https://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage providertests\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/russellhaering/gosaml2\"\n)\n\nvar pingFedScenarioErrors = map[int]string{\n\t// 01 - signed(Response(Assertion)) - no KeyInfo (no IDP signing certificate included)\n\t// By default, PingFed does not include the KeyInfo element (which would include the\n\t// IDP signing certificate) in Response.  Most other IDPs include KeyInfo element.\n\t// gosaml2 is ok with this as long as the SP has only one IDP signing certificate\n\t// for this relationship (it does not have to guess at to which cert to use).\n\t// Note: Response.Destination is set.\n\t01: \"\",\n\t// 02 - signed(Response(Assertion)) - with KeyInfo (including IDP signing certificate)\n\t// Same as pfed11_response_01 except KeyInfo is included.\n\t// Note: Response.Destination is set.\n\t02: \"\",\n\t// 03 - Response(signed(Assertion))\n\t// As with 01, KeyInfo element is not included (not a bug).  Unlike 01,\n\t// Response.Destination is NOT set.  Most IDPs (including PingOne) always includes Response.Destination.\n\t// PingFed only includes Response.Destination when the Response is signed.\n\t// SAML Core 2.0 defines Response.Destination as [Optional].\n\t// Thus, PingFed is not in not including Destination.  Before a fix, gosaml2 required\n\t// Response.Destination.  gosaml2 now only checks the value of Response.Destination if it\n\t// is set (mandated by SAML Core 2.0).\n\t03: \"\",\n\t// 05 - signed(Response(encrypted(Assertion))) - no encryption certificate included in Assertion.\n\t// PingFed and ADFS do not include the SP encryption certificate and do not provide an option to include it in Response.\n\t// OneLogin (see olgn09/olgn09_response_05.b64) also does not include SP encryption certificate by default.\n\t// OneLogin and PingFed also do not include DigestMethod (default to http://www.w3.org/2000/09/xmldsig#sha1).\n\t05: \"\",\n}\n\nvar pingFedScenarioWarnings = map[int]scenarioWarnings{}\n\nvar pingFedAtTimes = map[int]string{}\n\nfunc TestPingFedCasesLocally(t *testing.T) {\n\tsp := &saml2.SAMLServiceProvider{\n\t\tIdentityProviderSSOURL:      \"https://saml.test.nope:9031/eid/sxpmrhbkzn\", // not required for these tests\n\t\tIdentityProviderIssuer:      \"https://saml.test.nope:9031/eid/sxpmrhbkzn\",\n\t\tAssertionConsumerServiceURL: \"https://saml.test.nope/session/sso/saml/acs/hp24dqnpvq\",\n\t\tAudienceURI:                 \"https://saml.test.nope/session/sso/saml/spentityid/hp24dqnpvq\",\n\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/pingfed/idp.signing.cert\"),\n\t\tSPKeyStore:                  LoadKeyStore(\"./testdata/pingfed/sp.encryption.cert\", \"./testdata/pingfed/sp.encryption.key\"),\n\t\tSPSigningKeyStore:           LoadKeyStore(\"./testdata/pingfed/sp.signing.cert\", \"./testdata/pingfed/sp.signing.key\"),\n\t\tValidateEncryptionCert:      true,\n\t}\n\n\tscenarios := []ProviderTestScenario{}\n\tfor _, idx := range scenarioIndexes(pingFedScenarioErrors, pingFedScenarioWarnings) {\n\t\tresponse := LoadRawResponse(fmt.Sprintf(\"./testdata/pingfed/pfed11_response_%02d.b64\", idx))\n\t\tscenarios = append(scenarios, ProviderTestScenario{\n\t\t\tScenarioName:     fmt.Sprintf(\"Scenario_%02d\", idx),\n\t\t\tResponse:         response,\n\t\t\tServiceProvider:  spAtTime(sp, getAtTime(idx, pingFedAtTimes), response),\n\t\t\tCheckError:       scenarioErrorChecker(idx, pingFedScenarioErrors),\n\t\t\tCheckWarningInfo: scenarioWarningChecker(idx, pingFedScenarioWarnings),\n\t\t})\n\t}\n\n\tExerciseProviderTestScenarios(t, scenarios)\n}\n"
  },
  {
    "path": "providertests/providers_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     https://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage providertests\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/jonboulle/clockwork\"\n\t\"github.com/russellhaering/gosaml2\"\n\t\"github.com/russellhaering/goxmldsig\"\n)\n\nfunc TestValidateResponses(t *testing.T) {\n\tscenarios := []ProviderTestScenario{\n\t\t{\n\t\t\tScenarioName: \"Auth0\",\n\t\t\tResponse:     LoadXMLResponse(\"./testdata/auth0_response.xml\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://scaleft-test.auth0.com/samlp/rlXOZ4kOUTQaTV8icSXrfZUd1qtD1NhK\",\n\t\t\t\tIdentityProviderIssuer:      \"urn:scaleft-test.auth0.com\",\n\t\t\t\tAssertionConsumerServiceURL: \"http://localhost:8080/v1/_saml_callback\",\n\t\t\t\tAudienceURI:                 \"urn:scaleft-test.auth0.com\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/auth0_cert.pem\"),\n\t\t\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2016, 7, 25, 18, 30, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tScenarioName: \"Adfs\",\n\t\t\tResponse:     LoadRawResponse(\"./testdata/adfs_response.b64\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://do.not.need/this/not/sending/authn\",\n\t\t\t\tIdentityProviderIssuer:      \"http://fs.spstest2.com/adfs/services/trust\",\n\t\t\t\tAssertionConsumerServiceURL: \"https://saml.test.nope/session/sso/saml/acs/dknhyszjl7\",\n\t\t\t\tSignAuthnRequests:           false,\n\t\t\t\tAudienceURI:                 \"https://saml.test.nope/session/sso/saml/spentityid/dknhyszjl7\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/adfs_idp_signing_cert.pem\"),\n\t\t\t\tSPKeyStore:                  LoadKeyStore(\"./testdata/adfs_sp_encryption_cert.pem\", \"./testdata/adfs_sp_encryption_key.pem\"),\n\t\t\t\tSPSigningKeyStore:           LoadKeyStore(\"./testdata/adfs_sp_signing_cert.pem\", \"./testdata/adfs_sp_signing_key.pem\"),\n\t\t\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 9, 21, 23, 28, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tScenarioName: \"AdfsEncrypted\",\n\t\t\tResponse:     LoadRawResponse(\"./testdata/adfs_response_enc.b64\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://do.not.need/this/not/sending/authn\",\n\t\t\t\tIdentityProviderIssuer:      \"http://fs.spstest2.com/adfs/services/trust\",\n\t\t\t\tAssertionConsumerServiceURL: \"https://saml.test.nope/session/sso/saml/acs/dknhyszjl7\",\n\t\t\t\tSignAuthnRequests:           false,\n\t\t\t\tAudienceURI:                 \"https://saml.test.nope/session/sso/saml/spentityid/dknhyszjl7\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/adfs_idp_signing_cert.pem\"),\n\t\t\t\tSPKeyStore:                  LoadKeyStore(\"./testdata/adfs_sp_encryption_cert.pem\", \"./testdata/adfs_sp_encryption_key.pem\"),\n\t\t\t\tSPSigningKeyStore:           LoadKeyStore(\"./testdata/adfs_sp_signing_cert.pem\", \"./testdata/adfs_sp_signing_key.pem\"),\n\t\t\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 9, 21, 23, 20, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Okta uses detached EncryptedKey element (sibling of EncryptedData).  See:\n\t\t\t// https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Extensions-to-KeyInfo\n\t\t\tScenarioName: \"OktaEncrypted\",\n\t\t\tResponse:     LoadRawResponse(\"./testdata/oktaenc_response.b64\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://do.not.need/this/not/sending/authn\",\n\t\t\t\tIdentityProviderIssuer:      \"http://www.okta.com/exkbb59wb20X96NY20h7\",\n\t\t\t\tAssertionConsumerServiceURL: \"https://saml.test.nope/session/sso/saml/acs/skv8dv26wh\",\n\t\t\t\tSignAuthnRequests:           false,\n\t\t\t\tAudienceURI:                 \"https://saml.test.nope/session/sso/saml/spentityid/skv8dv26wh\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/oktaenc_idp_signing_cert.pem\"),\n\t\t\t\tSPKeyStore:                  LoadKeyStore(\"./testdata/oktaenc_sp_encryption_cert.pem\", \"./testdata/oktaenc_sp_encryption_key.pem\"),\n\t\t\t\tSPSigningKeyStore:           LoadKeyStore(\"./testdata/oktaenc_sp_signing_cert.pem\", \"./testdata/oktaenc_sp_signing_key.pem\"),\n\t\t\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 9, 06, 22, 14, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tScenarioName: \"Okta\",\n\t\t\tResponse:     LoadXMLResponse(\"./testdata/okta_response.xml\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://dev-116807.oktapreview.com/app/scaleftdev116807_test_1/exk659aytfMeNI49v0h7/sso/saml\",\n\t\t\t\tIdentityProviderIssuer:      \"http://www.okta.com/exk659aytfMeNI49v0h7\",\n\t\t\t\tAssertionConsumerServiceURL: \"http://localhost:8080/v1/_saml_callback\",\n\t\t\t\tSignAuthnRequests:           true,\n\t\t\t\tAudienceURI:                 \"\\\"123\\\"\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/okta_cert.pem\"),\n\t\t\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2016, 7, 25, 23, 16, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tScenarioName: \"OneLogin\",\n\t\t\tResponse:     LoadXMLResponse(\"./testdata/onelogin_response.xml\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://launchdarkly-dev.onelogin.com/trust/saml2/http-post/sso/634027\",\n\t\t\t\tIdentityProviderIssuer:      \"https://app.onelogin.com/saml/metadata/634027\",\n\t\t\t\tAssertionConsumerServiceURL: \"http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/onelogin_cert.pem\"),\n\t\t\t\tAudienceURI:                 \"{audience}\",\n\t\t\t\tSkipSignatureValidation:     false,\n\t\t\t\tAllowMissingAttributes:      true,\n\t\t\t\tClock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2017, 3, 8, 7, 51, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tScenarioName: \"OracleAccessManager\",\n\t\t\tResponse:     LoadXMLResponse(\"./testdata/oam_response.xml\"),\n\t\t\tServiceProvider: &saml2.SAMLServiceProvider{\n\t\t\t\tIdentityProviderSSOURL:      \"https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed\",\n\t\t\t\tIdentityProviderIssuer:      \"https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed\",\n\t\t\t\tAssertionConsumerServiceURL: \"http://127.0.0.1:5556/callback\",\n\t\t\t\tIDPCertificateStore:         LoadCertificateStore(\"./testdata/oam_cert.pem\"),\n\t\t\t\tAudienceURI:                 \"JSAuth\",\n\t\t\t\tSkipSignatureValidation:     false,\n\t\t\t\tAllowMissingAttributes:      true,\n\t\t\t\tClock: dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2016, 12, 12, 16, 55, 0, 0, time.UTC))),\n\t\t\t},\n\t\t},\n\t}\n\n\tExerciseProviderTestScenarios(t, scenarios)\n}\n"
  },
  {
    "path": "providertests/testdata/adfs_idp_signing_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIC2jCCAcKgAwIBAgIQNdNUIOmoKrFJNQadPV+9sTANBgkqhkiG9w0BAQsFADAp\nMScwJQYDVQQDEx5BREZTIFNpZ25pbmcgLSBmcy5zcHN0ZXN0Mi5jb20wHhcNMTYx\nMTAyMjIyOTE1WhcNMTcxMTAyMjIyOTE1WjApMScwJQYDVQQDEx5BREZTIFNpZ25p\nbmcgLSBmcy5zcHN0ZXN0Mi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQCjjUuNwckrCQgaXAMzHLFMuxrG+dREwct+d5W6PlAxlh8jxijhWXeHMcpP\nnaDLkPhI6J5hva+2r/kJcIuz3c9wAHVIl6oQdSeH4lwbrD/bfCnu0lOmjgey/cY2\nlVTs4mfx1L7ejnUWd4ROfrHkhtFgqOYrJYir29ZOqojmCvaSQbqfjXAQmP8xvsFy\nYw0FNSURrt2ZZ9HTY1T6eJIrEJi0csgI4579IzYNyttwOfuM8rDrin2gTNTVTOE/\nlfXv2q7CGU67ErETCtmaJJvlqYmRLwT51Jxrf3KLTkAjxyE4uISTuzys/Y/ktxI6\nLQ3eFD/oRfTtA1V3pj96nxbxk2z3AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEZ5\nuUC+Djrx9XJlrGHwwhVShyDcEvloJzeZLnNvMC1Gfyq4enHaVE5ztnkLTvphym9+\nW9waFlVPHlIAXv3CKz9xbFWDtaXvD229pOGThDBCKo8o2vucHCo8gn+dUq0ZS+TV\nLpqeNoTpjfI4FQZ7BwDoILza6xdXHmDukui1btNFYYwhHzgMx1x1cz4VvBj5D+WW\nf13uClD2dkeasoZ4M9KH15Oy128tXhmzCw7ymsv3KC20CvHiqwGnYcybZdcIKQUT\naB3qCNW5ti44RxwmLF4tnuFONmPuH1Pet0Hnq6pWNBMsWNEPM9LRVoPLqDR3fmkL\n/mNtZZd4xG3Kgd1IbPc=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/adfs_response.b64",
    "content": "PHNhbWxwOlJlc3BvbnNlIElEPSJfYjlkM2VhNzAtMmEwYy00MmI2LWI4ZjctNjU3YWRlYjJiYjA5IiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0yMVQyMzoyNzowNi44MjhaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ka25oeXN6amw3IiBDb25zZW50PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y29uc2VudDp1bnNwZWNpZmllZCIgSW5SZXNwb25zZVRvPSJfNTk4OGJmNDUtMWNjOC00MjI4LWIzZTgtMWFhODU5MGU2M2QzIiB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48SXNzdWVyIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vZnMuc3BzdGVzdDIuY29tL2FkZnMvc2VydmljZXMvdHJ1c3Q8L0lzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiIC8+PC9zYW1scDpTdGF0dXM+PEFzc2VydGlvbiBJRD0iX2ZkNjEwOGZkLWQyYmYtNDMyNy1hODFmLWMwM2I4ZmNhNzcwZCIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTIxVDIzOjI3OjA2LjgyOFoiIFZlcnNpb249IjIuMCIgeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxJc3N1ZXI+aHR0cDovL2ZzLnNwc3Rlc3QyLmNvbS9hZGZzL3NlcnZpY2VzL3RydXN0PC9Jc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiIC8+PGRzOlJlZmVyZW5jZSBVUkk9IiNfZmQ2MTA4ZmQtZDJiZi00MzI3LWE4MWYtYzAzYjhmY2E3NzBkIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIgLz48ZHM6RGlnZXN0VmFsdWU+cmJTd3EwZVZTWXFYdDFwQ095SThtT255K2h1Ukt3OU1LR0dxS21BUnFxcz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+Wm96L3dldWlEckVBVHEvVXFGb3hLbTUySUZmV2NZbzM1S1BxY0ttZE9RaW9TcWdnYnJlbElzM3dFSUFveUdxZHZKd1ZSNmlac2RsNlpTU0g0Z29nV01ydFV6QXRVT2IvMjVJMU1HWVBNZmJ4bVZTL0syQ0RmSUllV2wzU1hIT0o0YWxURldtR21wQ2NrZFpvUUgvR3M4ZUFzOHBxOXBLWUVlZFhkVzNSc0JpZTRzSFo3ME94aGhZS0VWY0RrUkJkQzNHQ1pqSk4yY3RENUJZeGhJMDVENnN1eU9rYlpHYVBCR1l2MkFzSDRDTmRXeHlaVDhEN21tejM3NElNOWorcUQ2U3RuNFZ0STZXRThCb3ByV1daSWRnYzZCRDgwSEhQR0k1WGo5UzZzRmxsSEtaSGlRckVtNnd4WnMyUVQ5T0JiMVNRcjQrMTNUSFgxWkpBbFUwMTZBPT08L2RzOlNpZ25hdHVyZVZhbHVlPjxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlDMmpDQ0FjS2dBd0lCQWdJUU5kTlVJT21vS3JGSk5RYWRQVis5c1RBTkJna3Foa2lHOXcwQkFRc0ZBREFwTVNjd0pRWURWUVFERXg1QlJFWlRJRk5wWjI1cGJtY2dMU0JtY3k1emNITjBaWE4wTWk1amIyMHdIaGNOTVRZeE1UQXlNakl5T1RFMVdoY05NVGN4TVRBeU1qSXlPVEUxV2pBcE1TY3dKUVlEVlFRREV4NUJSRVpUSUZOcFoyNXBibWNnTFNCbWN5NXpjSE4wWlhOME1pNWpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2pqVXVOd2NrckNRZ2FYQU16SExGTXV4ckcrZFJFd2N0K2Q1VzZQbEF4bGg4anhpamhXWGVITWNwUG5hRExrUGhJNko1aHZhKzJyL2tKY0l1ejNjOXdBSFZJbDZvUWRTZUg0bHdickQvYmZDbnUwbE9tamdleS9jWTJsVlRzNG1meDFMN2VqblVXZDRST2ZySGtodEZncU9ZckpZaXIyOVpPcW9qbUN2YVNRYnFmalhBUW1QOHh2c0Z5WXcwRk5TVVJydDJaWjlIVFkxVDZlSklyRUppMGNzZ0k0NTc5SXpZTnl0dHdPZnVNOHJEcmluMmdUTlRWVE9FL2xmWHYycTdDR1U2N0VyRVRDdG1hSkp2bHFZbVJMd1Q1MUp4cmYzS0xUa0FqeHlFNHVJU1R1enlzL1kva3R4STZMUTNlRkQvb1JmVHRBMVYzcGo5Nm54YnhrMnozQWdNQkFBRXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRVo1dVVDK0Rqcng5WEpsckdId3doVlNoeURjRXZsb0p6ZVpMbk52TUMxR2Z5cTRlbkhhVkU1enRua0xUdnBoeW05K1c5d2FGbFZQSGxJQVh2M0NLejl4YkZXRHRhWHZEMjI5cE9HVGhEQkNLbzhvMnZ1Y0hDbzhnbitkVXEwWlMrVFZMcHFlTm9UcGpmSTRGUVo3QndEb0lMemE2eGRYSG1EdWt1aTFidE5GWVl3aEh6Z014MXgxY3o0VnZCajVEK1dXZjEzdUNsRDJka2Vhc29aNE05S0gxNU95MTI4dFhobXpDdzd5bXN2M0tDMjBDdkhpcXdHblljeWJaZGNJS1FVVGFCM3FDTlc1dGk0NFJ4d21MRjR0bnVGT05tUHVIMVBldDBIbnE2cFdOQk1zV05FUE05TFJWb1BMcURSM2Zta0wvbU50WlpkNHhHM0tnZDFJYlBjPTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9LZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxTdWJqZWN0PjxOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnBhdWxAc3BzdGVzdDIuY29tPC9OYW1lSUQ+PFN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJfNTk4OGJmNDUtMWNjOC00MjI4LWIzZTgtMWFhODU5MGU2M2QzIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDktMjFUMjM6MzI6MDYuODI4WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwudGVzdC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL2Rrbmh5c3pqbDciIC8+PC9TdWJqZWN0Q29uZmlybWF0aW9uPjwvU3ViamVjdD48Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDktMjFUMjM6Mjc6MDYuODI2WiIgTm90T25PckFmdGVyPSIyMDE3LTA5LTIyVDAwOjI3OjA2LjgyNloiPjxBdWRpZW5jZVJlc3RyaWN0aW9uPjxBdWRpZW5jZT5odHRwczovL3NhbWwudGVzdC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ka25oeXN6amw3PC9BdWRpZW5jZT48L0F1ZGllbmNlUmVzdHJpY3Rpb24+PC9Db25kaXRpb25zPjxBdHRyaWJ1dGVTdGF0ZW1lbnQ+PEF0dHJpYnV0ZSBOYW1lPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9naXZlbm5hbWUiPjxBdHRyaWJ1dGVWYWx1ZT5wYXVsPC9BdHRyaWJ1dGVWYWx1ZT48L0F0dHJpYnV0ZT48QXR0cmlidXRlIE5hbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3N1cm5hbWUiPjxBdHRyaWJ1dGVWYWx1ZT5mcmFsZXk8L0F0dHJpYnV0ZVZhbHVlPjwvQXR0cmlidXRlPjwvQXR0cmlidXRlU3RhdGVtZW50PjxBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDktMjFUMjM6Mjc6MDYuNzY3WiIgU2Vzc2lvbkluZGV4PSJfZmQ2MTA4ZmQtZDJiZi00MzI3LWE4MWYtYzAzYjhmY2E3NzBkIj48QXV0aG5Db250ZXh0PjxBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvQXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9BdXRobkNvbnRleHQ+PC9BdXRoblN0YXRlbWVudD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==\n"
  },
  {
    "path": "providertests/testdata/adfs_response_enc.b64",
    "content": "PHNhbWxwOlJlc3BvbnNlIElEPSJfYWUyNDZkNGUtYjllMC00OWUzLTk3YTItYzJmMjM2NDA4YjllIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0yMVQyMzoxOToxMS42MDhaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ka25oeXN6amw3IiBDb25zZW50PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y29uc2VudDp1bnNwZWNpZmllZCIgSW5SZXNwb25zZVRvPSJfMjUyZDAxMjktMWM4My00OTZlLWIwMzktZmZjOWNlZTExY2NhIiB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48SXNzdWVyIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vZnMuc3BzdGVzdDIuY29tL2FkZnMvc2VydmljZXMvdHJ1c3Q8L0lzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiIC8+PC9zYW1scDpTdGF0dXM+PEVuY3J5cHRlZEFzc2VydGlvbiB4bWxucz0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHhlbmM6RW5jcnlwdGVkRGF0YSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIiAvPjxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZTpFbmNyeXB0ZWRLZXkgeG1sbnM6ZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj48ZTpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48L2U6RW5jcnlwdGlvbk1ldGhvZD48S2V5SW5mbz48ZHM6WDUwOURhdGEgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpYNTA5SXNzdWVyU2VyaWFsPjxkczpYNTA5SXNzdWVyTmFtZT5DTj1zYW1sLnRlc3Qubm9wZSwgTz1TQU1MIFRlc3QgTm9wZS4sIFM9Q2FsaWZvcm5pYSwgQz1VUzwvZHM6WDUwOUlzc3Vlck5hbWU+PGRzOlg1MDlTZXJpYWxOdW1iZXI+MTY5OTkyMzEzMjE5MTk1MjQ4NDM8L2RzOlg1MDlTZXJpYWxOdW1iZXI+PC9kczpYNTA5SXNzdWVyU2VyaWFsPjwvZHM6WDUwOURhdGE+PC9LZXlJbmZvPjxlOkNpcGhlckRhdGE+PGU6Q2lwaGVyVmFsdWU+Qk43OVlidmYxaERHdDArT1lPY2lRVjVDWk53c3krZ2dtSnFmYjhRTXBVZVVJc2JIT3FPOUxpK3FGQmpZbjBpZmZXc0Q4TXhxdlVjVWY5QzdSYlV2UjgvdEdIU3dHQWZEbzhrU3dCOENqTGhjLzgyYTkweTNDSkI5eGxOZHFyek54eERueXM0NS9iQ0Y5L3I3U1VwbG1tU0NJcTdzQUxjT3hxRnh6VWZ0Q2xxcWlvUS9EbVA2RkZWWEx1ZXNRaHgya0p4aGYzL1RQUW5HZTNMYjNFSm1lZnh0SVFiSXJpRm95M1poUUVLRXlialFWTDFaWHAzanV3QzJVZDU2ZEt3d21lcDY4R3JtUU5xdE1IYW9qUEtmRVpnRExXVlhCZnlHWmx6NnBjRlYvQ1pJNFVySnd2TTlObUlxT0VsbHQ2S3JWdUVhaG5xT2lCeDdrNi9sZ2IxY0lnPT08L2U6Q2lwaGVyVmFsdWU+PC9lOkNpcGhlckRhdGE+PC9lOkVuY3J5cHRlZEtleT48L0tleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5ETHlXS3F3UmlMbnpzcnk0eVlRYURjNEtONEt4bjhmV2dwc0hSWXlSaUczbzRoenJlOTdXV3o5WGNRRUpSVGlqVUMvdnEwR1pSUXRuTU5ycTMxLzJPNTN6cUMwbzhnUG9Gb28rTTZEMUxOSURTYzBRdFpiY2xUWmY5Z3o4dkVwNDdDSDJDTVNkUzAvVmxremJHZ0w1UHlkUlNQcGcrb1FiUVJJWThJWHBPd0RhdUJlMElidjV0QURUR0k3WkxTb0RmblFSUVluMWZySUx5SkVmMWU5MU1IODRzZWt0NEEvNDQrRFBtc0JjKzdWN095WGk3N2hBcnRDeEN5REowaUJZb1QwSkZWK1RhNUFSMkFKRk1HanNVL3QrUTNXdGhuRzZUbVFtYVpYVXFzem5FUGptWXp5eUNSM2ZoSE9pdmZGK09GYms0Nzk5WmtiY2ZNN1lvL2FZR3pMSHllM25ZNThCTFlCbnhFR0VCcDhacGhsWSs2VUgxYlF5V1Fid09tcjRJQk03ejNLaCtQS3pBQThYbDNQcG9CSHl4VkVXWC94S1BvQWtTV2FXcmRFZy8vZ1kwZURybUVwOHlZM0pjRXU4VkNPTmZKRXlIbjBabXdSVTdLd0lWMDFmTk1kVDdVbUJ1RWtucE55eUNhc2FTMm9zOUM0RlhmWVUzU3pFOXhXM1VUZkticE1OMW1zSnVGaXdPcXNIRzF0MklHdVZTV1puZVNrQTdDYUVvUFNLVHJNVGw3OERqVGQ0dW1WbEVmajZnRXg1S3FnU092ejBicTR4NGdURVVHL1JkNFlFZUhWNTZ6Rm5tOHVZVVRDTUNHS2kzYlk3MndXdDMvb1dVeTlhUk5nQmI0YjZKR0ZzRUx4OS91aEdYUlJNRjhad0t2WXBpSHJ1Q3pybk1zeDVWTFM5dkhIZ0RnekpvbFJSbjl2aE1aeXJ4SDMwTVpobk1JMEdTbDVmeXdzdjNXejcxNDJJOUxiWkxOSEpWdTNJTTMrQVF0a0M3R280Mmc2eVB0ZmRMQklwMnlvOWhlVlp6UTFNZUp6MUQyT3EvM2RqN1JFZDJHcGNSRnpTb25jc0VuU0ZiRlZQSU5tdmdBTXhYaU5LTmJ1N0ZZOUdSblorM1FaUnUzRmRLY1N6V0tVeFduT05oNFRYN09WNjIrNWZKQm1sN3RZTmRKZTBOblpQS1I3VlBsSmpBTnBNd0NoekEzaFRKUzJFTmY0RUtVS2xHaW8vUXVmWmxDOEhTUzhlM0djeGtub0F0V2YwVmdZWmZYZDNMWGxrSnV5NHRCMC9SNm1sYnh1WlBaOEZXWXBCSzF6RVpHbDN2L0pNbDAya3cvVzh4bHB0enZkNE9tcStOUTcrbG1TZHdZWXhpeE8xaG9GSUh2WmpYdlhHazNONGZNZzQweVNIRG1wejJNNWJBSi81aXNqTWo5cERzczh1Lzd2bGtzR1pFaVIvdE04UDBJNEZlUFE5ODlXaStKOVdiWjV3MGtCaWRKKzRNVXBKY0hUd1pLSHI1NEpTOTVBeHVkWjNCY2hLSGhnQXVpTVU0S3VGRWpqUDg4d0RoaFBBWHdnd3pzT1A0RDh5LzlTaVBnclRUYjFoUTVPWXFZU040ZzMvY0YveDFIVmRzWkZodUZ5Q2JBQjgxTm1tVG5FR1dOd25qemgvcGVPQzNYa05UUGx6Yzhpd284bVdqU3dibGZBZHphL2xnQ0xhODhsdDZqd0ozUDQ4c1hqRVZyWjhob1B1RE9hQnc0bVh6QjN0NEtVeEJmR0JjRzZxczUzUVQ3YjVNRnduamVIVjFETldVV05Fa0FZbEl2MFhJeWZ1MUJwWHZ0M1d1MmNoTys2RDg2aDVoclZGVzhHcFdFa3lSaGUvSHk3RGRURHZEMURUWVlIUXBSR2EwZnNxUVF1Z1NyT2hMdmxTWFltbmY0ZnorcWVNK1JucU1NMi8zNi84eEVIc1dzWDRtNVhlSWV1d2NrK2lXQ0ErTklRTzFodU9UU29qQmtMeXh5ZHZnU3lXWDZER2hNZlZPZWdKbWZrNjMxUlZBT1F4OWpVY0FhRklaa3RIS3JzUklKb3RUSytiZ1BwSTNmbzh3cEhjaDZiSmJTZ1U0ZGtNWmh2Sm9yM2J4bk5qcFpjZWVNWHlKdmg2TUZsZ1ZVSXNVTG12cGhxQldhWFg0TlZEcVNCZlFhbFVydGFYVW8rTzhVTy9pZWpKdGdBVTl2Yi9pWElsemJnZ1lUTmdIQmJVbk4zdTFyb2pCU0pDYnNvNDJZK013b0MxbURTRjJKbTkxTlhXR2hyUjZzZ0xmOTlBUTlGSmNGNjhuWkNmT0MzTkJPVG9KOVBLZEJzT1AvRzRPSlBmWWN0VWwwVC90alFXQS92L0ZqRHJrclZpUWttOUY4ak5lUTZISDVDZGl4MmJMY0FqTk1kVmVTMGticXVmRFBaMWY1bTJOYXRnclpwU1dVTk1vSXd4YkovVFJkVENYWDZmY0NkS0laa25XbXRHVHdudWU5cVVUS0cvS0krZkdUakcwSS81czdIb1pkZ1llS2xDY2poc2VXU1VSakdIb0tDU1FXRFAwOUxvYkQvSlN4UWtlTm9IdS9BR0ovMnFJMnJ2dCtKWEh3SmpxMDNIZStvNEQva1Vwc1BLRDZtbWdWU0dVSlA0UTZRcjhXbm1McTA4WEdGRTN4WFM1NjVESEd0UmVrTEJobDN1eFMwcHRobkUvSyswbGtLdzQzWmpZTVEydUtiTURIYWJQa1Y0bUpoZXFVQllxZGN2VmJEZ2d5TStFclp5NFJtQTlPcTgrTFMxenljRlVKcmJtKzQ2TXo1aXV4NzJMYWFGNEZMRjR2ZDBTbnAxc05GZmxPK3Y5UVpkc3dMNHdQa3ZSL3VYYWxOQ1k4QUZ4ZzhjU2p0RHUxbnN0bmV5MzA0c3NXRytFTmN5T0ZCZExUWFJqMlMxSDFlWEd2c0pYMGdrMmFRL1FhMmdReGlHcmJKK2ROeWgwVUp2NGJ3N2NXejJQTWhEdEx4bnU5ZFFZL0JrcXppcm5McUUrNUE1SzVwRUlJVXJLeTlnZXRpQzR4cDAyazZlQnh0dmFSVTQ4bkZ2RGdIY3BUdEplTmVhK3orZm9tR2UzdkNLcHp2a21CYU54dElqRWRrdEtrRmFaeE92L2R5ZGEvOVdMNERvTjFQa24xSkJxbzhOM0ZnQWNtVjlzZkpqbGcxRVpiSWgwT2lEWWY3aXFqY3BlRHRwbjNYOWJ2dXYwSkRQaC9FTExaYTJNaC9tSWJ2L21SMG8vdzEzOWdtN09mVWlPR2paR1YyMjl1TVBmOFlUNXlURjgyb3lqb2QrTEZCLzEvSGI5VWdiT1VyUGZJbVo1TnJrU2tTRUt1M28xUlRMc21TRS9VeXJISlhhRC80dFZubVJ2UWhiQ3ViVmUzeHdLTUZUbitNeG5IUUN3M2E3UFAycElwVEpDOGVCZlE0Um1xSE4ycXNNcFdEMitHWi9xb2Z1SU1tNTRXYjBMTGt1NnA3QW9hRExJVTYwSC9XL1I2U2VvbmVQWE1pL3ZTeThOamhoK214b08wMEVLYWNDRnhDT05vZUN0N2J2eWhOUWFPbklUbTcyT1ZHT0dMaDlxRkFyYUNTRlRSWC9QVFdWV3N1QWtaNUVFUWpkN2xSdVMxWUc2ZXFFMGdVQWxWckFTZTJSRXZvejZ1RnFCQ3JlYUovUDBIUWpBa2dnV1hDU3ZGOVNaMm1mSTgvd1haYkpNaDVBNVduUW9PdVYwMlJQNFYzbmJCd0hzRFFibzBzRWcvaitkRlVIVTRpTEhFLzB6QTZZWmgwamtzOHhlN0pEbGI2cmo2M1EwRnZZMlM3Nnh4U1I4RlpkbEtxdXJQSjVXRWsxNmRSNUxQWkRSbkFpODBnUURrUkV4SllDZW1uS2pqeGpWSndld3pISzlIV2V2Q2xuYUxxWmxxbkRUendXWWZ2dkU5d09zYndNZ2VoRTFWWWFBNGFPUSs5T21udmgvemdHS215UXI2dGlSK3p0cjhSK0dHMy93SHlua2JRQWNIMjZkL09YaVRuWVZ0eXlGUk1TL1QxdVFJWnU1MkNjZGFoL2xSdVRTMjhNN1N1eFNpS1N5Q0pvc29YZDQ1VXZ4RVpNUi9DRGFpUmk5TUNKNE5OR0hxRlF0SFJhQmRuYmx2VmJNZ0lXYnFma1UrK2ZwNWVIaHJBa296eHRKU2RIeU9JWUNWMlM5T0ZRaGR2S3hzNkFzSzZHYm9xV3ZpbFdPMVoxOHZzTXpSd29wcks4RU04Y3ZmMEh1enJaZ1lFVGlGVVRJLzlaMHB3U1djVWNnSEJBUUVzZnJWYkVtc2lyQ3dvRnFSZmthZ00zSmUrQncyRk11NlZXNHI2cVJuT2Z6cS8zZkZmZVpjemdNN1VBVWVMT091L3ZKUmF6R0Z0L0ROQksvSTJjcEZ0UW0xazNuQS9WYmtDQ0plaGFMS1FRa3hVNFlMV1R2bnUzdWRxaVlHQlNsOXBjLzBJV3ZicUlHS3Z2ZHhiMjNPUFZUZGVVMnpndmF0eVk5cHFDVE5rMUtMV3d4TDVQREJ5VythdGRSNk1GK2o4Rk1mWUg4S0RlRWcwV2lrK3VqU2dBTWRUc0tKcEF0UGkxMnZ2M2FMZzVINnplSHdBNEZUN2M5ZUZsaVdGTWlyc2FHcTlGNENpTzdFZnY1QWFpK2YyUXNyWDlxUFRncExCbzZHUFM5cUhYb2tkV283U0tTc084OGs3cDJnTWdiN1hoTkF1RHg4RElVWDQ1MnBDTXV6OXhCRnBpTWx0OW4xc1hQNjY2REkxS2RjMEprbnVvRlVBalVySk9Rb2xJL1QySVZYcjFiYVh5TUc1dUE0bTNvQXBveDU5S2pMYmh0ZTQxNXJuTzlBMVBCU2wwVlN1YjhBL0MwaHhaK3NGZXUwRUNoc3pHbGY0amdNQStZd2U4TVdud0F0TVM3L1hiZ0tkYUt1QXpoNFBuNzdWVlFSNThkM0FmL2lneEdsSE5JRDhPVS9yWVREVkNrWjJVaEUzdHlDUmN5a3VzcUIvN290dEZVbGpsbEwxR1loaW9iMTkvVnQrZklIVHhWa2hlZTErQnp3cUxpeWlQdmE4OVZHbG9UTEo1UzY4US80N0FGODVneTM1U0ZBUnM1dUljT3NtWXN2Vm1qdUpOZU5Hd2g4SmpFbHIxR015N2Ywd3pITS8rVm1kbk9lSHBXUktMaXhrZEloOVVNcUdFV0pBNG9uQ3NWRlU2ZnpXdCtSTUdySlhseTF5VzdMTnRGUWtxaGxiWDlhY2RuTE9qSzc5clpNdmwwTjZjMk5OQmpHT01BbkZSWnZyd09sSmJ0cGhjMGFWQmNBcFUxNzR0aU01Ym5xWDBpV1NIai82VmRWY29yNmlMVlY2RER3TUpFUlNQeDJmd1hUVjdGTTRkamR3S2UzRmpZY1FCRmV1bXl0clVxWkZRQjk4T0xpS0ZOdi85ekdXUGxXOHVoUEdjYk9KeUxXaHl0UlUyekZPMGlOYnpDMTlUUnhnRUJSYUhDQmMyYThzWDVnZHRYeGt3L0hYU0Iyc1k3bnA1TzJZOHBYb21sSVFyd01senJpQkpTVnprOGZoMHpzS0d5UXZGR2p4Z0R6SjNHVGRwSjFiSWNUSkdidjM4bGNVZVBma2xzTURESUE5dDVBM1E3RFVCVHRSd2xTazNmdXJjOWRaY1EydlJ3WU5HT1RLaXZxSTNXRmdUamxBbHhNQVVkbURha1pzbmxycEFxNC8yOTNKdDYrK2pLejZ2RUlVK0FJc2doVzN1NmUrREN6MWNTL2tUZzJtZkRhUy9vZ2tMOWdKMVhYM2pvL3o1RTEzTGpZRmNScFVOTVlLbDBVOEZNeUJPWmxIa2E3L08xM3JScnh6ZG9DbzRMdExjVTRpZ1ZWc2dlUGhTVFFZVTRNRHo3RzdTYTRLeFZiK3lQU3JrNzVDQWpiQmhwU01DK044U285WDBYaGZzV3hLanE4OWlPUHNOMWMwcS8yTTBoZjBVR2ZFaUtpNEMwUUFUUWtuNWVLSzRqV1JJT05QckcxTXhHT29uV3VaVGNFYlArTkh6UjV5T0w5aWZOdlBwcFBuV1Yvc2RzZUd3MFdvK3A5NHA1V1oyMFpJT29QTjJzN1FEanY4elQ4V1pLcnZHQ0FjWVN3RktYdHVrZXFsQ3MvSzBhV090ZVc2NFNFeGNLKzlkM1JMY3BsTzh3TGEweDA3Wmx0SHRsbmRUcjR2emFLQUdKdHBTd3Q2UjA0WTJsdmk4NjJZNGtLeXk0MEVTeGJsS04zMktMZDNHSzdFSzNKRVZTTllMejdmZUhuczhBUmxpNEFrS0ZnQmZrODl2M3FKOG9SYXZVT3dOWUpjdlRWTEIzUU9VRzdLLzBjV0o8L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZERhdGE+PC9FbmNyeXB0ZWRBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4=\n"
  },
  {
    "path": "providertests/testdata/auth0_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\r\nMIIC9DCCAdygAwIBAgIJX9Qb0a2w33UjMA0GCSqGSIb3DQEBBQUAMCExHzAdBgNV\r\nBAMTFnNjYWxlZnQtdGVzdC5hdXRoMC5jb20wHhcNMTYwNzI1MTc0OTQ1WhcNMzAw\r\nNDAzMTc0OTQ1WjAhMR8wHQYDVQQDExZzY2FsZWZ0LXRlc3QuYXV0aDAuY29tMIIB\r\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+MnMtsJsNjDD4YEsi//LeBD\r\nwbwqwYTJk8mUlTLuaSss2X4aPo2kGjuEjvTc0x4Mk9ZQ/CIPPX3J9N4AFQu88rRd\r\npT+TTuY9AIiyt8sZ+b1qF9eewyLVchM6s9Ff2JqgDIfajym825GKAJL7hi6smFRT\r\n6h+OyyHo8pJjXePldum4woSFW/H3y83meF51Wn9oMTRRVAlpsdRVOgmuQpBlw3ap\r\neeRpAmqLYT7DH3j30umYu3+4+NcxtEC7s5+QAIenuORjjw+M+IB+HhYpy1AnblY6\r\n4RRAD+EfESEC+AF/+G0zuA4q43s9IduYZp2GMzPzMlnhDlR5syiLGFtLZ+pwFQID\r\nAQABoy8wLTAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSX/v06GyNh1an1f7O7KKER\r\n6xNntTANBgkqhkiG9w0BAQUFAAOCAQEAgtITYCbzRo8l8Q3+EHFwASlmnSyRm8HW\r\nG41nmHLcC2lUqNvniSEf0kO65oMN2nxlq9JMeI7NxKNpTVL4OYX5+/0NqcxePayY\r\n/9/5jBRwqF+84USc8HG8z+BFh1rVW35eoE5ULeegUBPgDG9shQjSLyIkNvYqXQ7A\r\ntjMka8lkmdtU9XBlfYZC4YEmkeQOHkW5gmix5opajkj+Tih7HKsdhOgxZrl7/4Wm\r\nGOoyR2q3Ffg8fmNgDe2Sf8bGv7IoTeeYVHIurVFoQSLziICOBQSpk/y/NS3HdSBO\r\nADRxhUn241jRTaEi06qcg/A9P4zulKR61mCVpEWv6ZveEyVm4XA4xQ==\r\n-----END CERTIFICATE-----\r\n"
  },
  {
    "path": "providertests/testdata/auth0_response.xml",
    "content": "<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" ID=\"_5376783a08fa6e021aa4\" InResponseTo=\"_e3ce5e05-4e53-44ff-9229-c649f2b859a0\" Version=\"2.0\" IssueInstant=\"2016-07-25T18:29:17Z\" Destination=\"http://localhost:8080/v1/_saml_callback\"><saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">urn:scaleft-test.auth0.com</saml:Issuer><samlp:Status><samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></samlp:Status><saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" Version=\"2.0\" ID=\"_mU52Pie5AsaLMC1ne4sCHEYWPjvt00oS\" IssueInstant=\"2016-07-25T18:29:17.523Z\"><saml:Issuer>urn:scaleft-test.auth0.com</saml:Issuer><saml:Subject><saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">google-oauth2|117637692321743777825</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData NotOnOrAfter=\"2016-07-25T19:29:17.523Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\" InResponseTo=\"_e3ce5e05-4e53-44ff-9229-c649f2b859a0\"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2016-07-25T18:29:17.523Z\" NotOnOrAfter=\"2016-07-25T19:29:17.523Z\"><saml:AudienceRestriction><saml:Audience>urn:scaleft-test.auth0.com</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AttributeStatement xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><saml:Attribute Name=\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier\"><saml:AttributeValue xsi:type=\"xs:anyType\">google-oauth2|117637692321743777825</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\"><saml:AttributeValue xsi:type=\"xs:anyType\">russell.haering@scaleft.com</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name\"><saml:AttributeValue xsi:type=\"xs:anyType\">Russell Haering</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\"><saml:AttributeValue xsi:type=\"xs:anyType\">Russell</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\"><saml:AttributeValue xsi:type=\"xs:anyType\">Haering</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn\"><saml:AttributeValue xsi:type=\"xs:anyType\">russell.haering@scaleft.com</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/identities/default/provider\"><saml:AttributeValue xsi:type=\"xs:anyType\">google-oauth2</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/identities/default/connection\"><saml:AttributeValue xsi:type=\"xs:anyType\">google-oauth2</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/identities/default/isSocial\"><saml:AttributeValue xsi:type=\"xs:anyType\">true</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/email_verified\"><saml:AttributeValue xsi:type=\"xs:anyType\">true</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/picture\"><saml:AttributeValue xsi:type=\"xs:anyType\">https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/locale\"><saml:AttributeValue xsi:type=\"xs:anyType\">en</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/clientID\"><saml:AttributeValue xsi:type=\"xs:anyType\">rlXOZ4kOUTQaTV8icSXrfZUd1qtD1NhK</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/updated_at\"><saml:AttributeValue xsi:type=\"xs:anyType\">Mon Jul 25 2016 18:29:17 GMT+0000 (UTC)</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/nickname\"><saml:AttributeValue xsi:type=\"xs:anyType\">russell.haering</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/identities\"><saml:AttributeValue xsi:type=\"xs:anyType\">[object Object]</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"http://schemas.auth0.com/created_at\"><saml:AttributeValue xsi:type=\"xs:anyType\">Mon Jul 25 2016 17:51:26 GMT+0000 (UTC)</saml:AttributeValue></saml:Attribute></saml:AttributeStatement><saml:AuthnStatement AuthnInstant=\"2016-07-25T18:29:17.523Z\" SessionIndex=\"_PpuqwkgWTWGbYyLu3lhPMW4vvzLKIiEF\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion><Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"><SignedInfo><CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><Reference URI=\"#_5376783a08fa6e021aa4\"><Transforms><Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></Transforms><DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><DigestValue>WpFHrL2L9I0IcJDC4cFrh54kqNM=</DigestValue></Reference></SignedInfo><SignatureValue>j6jV5RJuDF+TVy2obGLcl1nGpNPXsIyjud4NXTSStVibuFvJ8VetYU9yv9MlyhyI9GC9pL73zHt3havhm3iCvwBcOLcgu9oX+s60N5HUt7eVnEBUdXt52hEZki61D3w+//e6l6gt5Di9109vLHfV1KgkuKPC3IfBK8Z52rL6KfmIrry5OEl0n2o0A8wAYDnZkkY07LTYvZFcQ2JQ/plYEi/y+4yGYSxhjcVyPs/h0xavjk7xFJ0b16kUshpYUSkZOUOamW2tdlADXOrossOV4iOCOB2VnT5WjOfviYzW2WE39fmiZ7ahSmxCCtsuHS/xhRq05mi4j3EDd3N/07isVg==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIC9DCCAdygAwIBAgIJX9Qb0a2w33UjMA0GCSqGSIb3DQEBBQUAMCExHzAdBgNVBAMTFnNjYWxlZnQtdGVzdC5hdXRoMC5jb20wHhcNMTYwNzI1MTc0OTQ1WhcNMzAwNDAzMTc0OTQ1WjAhMR8wHQYDVQQDExZzY2FsZWZ0LXRlc3QuYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+MnMtsJsNjDD4YEsi//LeBDwbwqwYTJk8mUlTLuaSss2X4aPo2kGjuEjvTc0x4Mk9ZQ/CIPPX3J9N4AFQu88rRdpT+TTuY9AIiyt8sZ+b1qF9eewyLVchM6s9Ff2JqgDIfajym825GKAJL7hi6smFRT6h+OyyHo8pJjXePldum4woSFW/H3y83meF51Wn9oMTRRVAlpsdRVOgmuQpBlw3apeeRpAmqLYT7DH3j30umYu3+4+NcxtEC7s5+QAIenuORjjw+M+IB+HhYpy1AnblY64RRAD+EfESEC+AF/+G0zuA4q43s9IduYZp2GMzPzMlnhDlR5syiLGFtLZ+pwFQIDAQABoy8wLTAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBSX/v06GyNh1an1f7O7KKER6xNntTANBgkqhkiG9w0BAQUFAAOCAQEAgtITYCbzRo8l8Q3+EHFwASlmnSyRm8HWG41nmHLcC2lUqNvniSEf0kO65oMN2nxlq9JMeI7NxKNpTVL4OYX5+/0NqcxePayY/9/5jBRwqF+84USc8HG8z+BFh1rVW35eoE5ULeegUBPgDG9shQjSLyIkNvYqXQ7AtjMka8lkmdtU9XBlfYZC4YEmkeQOHkW5gmix5opajkj+Tih7HKsdhOgxZrl7/4WmGOoyR2q3Ffg8fmNgDe2Sf8bGv7IoTeeYVHIurVFoQSLziICOBQSpk/y/NS3HdSBOADRxhUn241jRTaEi06qcg/A9P4zulKR61mCVpEWv6ZveEyVm4XA4xQ==</X509Certificate></X509Data></KeyInfo></Signature></samlp:Response>"
  },
  {
    "path": "providertests/testdata/oam_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIB/jCCAWegAwIBAgIBCjANBgkqhkiG9w0BAQQFADAkMSIwIAYDVQQDExlkZWFv\nYW0tZGV2MDIuanBsLm5hc2EuZ292MB4XDTE2MDYzMDA0NTQxNloXDTI2MDYyODA0\nNTQxNlowJDEiMCAGA1UEAxMZZGVhb2FtLWRldjAyLmpwbC5uYXNhLmdvdjCBnzAN\nBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAht1N4lGdwUbl7YRyHwSCrnep6/e2I3+V\neue0pSA/DGn8OuR/udM8UCja5utqlqJdq200ox4b4Mpz0Jg9kMckALtKe+1DgeES\nEIx9FpeuBdHlitYQNSbEr30HIG2nmeTOy4Vi5unBO54um3tNazcUTMA0/LJ6KQL8\nLeZSlB/IxwUCAwEAAaNAMD4wDAYDVR0TAQH/BAIwADAPBgNVHQ8BAf8EBQMDB9gA\nMB0GA1UdDgQWBBRYo1YjfrNonauLzj6/AsueWFGSszANBgkqhkiG9w0BAQQFAAOB\ngQACq7GHK/Zsg0+qC0WWa2ZjmOXE6Dqk/xuooG49QT7ihABs7k9U27Fw3xKF6MkC\n7pca1FwT82eZK1N3XKKpZe7Flu1fMKt2o/XSiBkDjWwUcChVnwGsUBe8hJFwFqg7\nolNJn1kaVBJUqZIiXF9kS0d+1H55rStOd0CNXAzp9utr2A==\n-----END CERTIFICATE-----"
  },
  {
    "path": "providertests/testdata/oam_response.xml",
    "content": "<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:enc=\"http://www.w3.org/2001/04/xmlenc#\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:x500=\"urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Destination=\"http://127.0.0.1:5556/callback\" ID=\"id-IWlPTptSB-PlR80dwt8ZhVeG70mrz7nPvTVrhduK\" InResponseTo=\"_e66b3a98-831c-4c96-5706-b63fe0549624\" IssueInstant=\"2016-12-12T16:54:35Z\" Version=\"2.0\"><saml:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed</saml:Issuer><samlp:Status><samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></samlp:Status><saml:Assertion ID=\"id-rT9rTqxdQC9j34YhVeNayUWC9EbIBgym6gp-MZt-\" IssueInstant=\"2016-12-12T16:54:35Z\" Version=\"2.0\"><saml:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed</saml:Issuer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><dsig:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><dsig:Reference URI=\"#id-rT9rTqxdQC9j34YhVeNayUWC9EbIBgym6gp-MZt-\"><dsig:Transforms><dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><dsig:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><dsig:DigestValue>z1HD/59hv6UOd5+jeG+ihaFWLgI=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>I99oG5kiOfIgbXYa21z/TOmzftTkFnXe9ObhBNSKit9kAhT93apYROqqXv4Ax96P144Ld7ERX1hgJsytK8LC2874Pk7QrSNm4zvW3x0D4GR4lM06CvJK/EhIur3TrCUJDPigvyP7TJitheCyBejwt0x0lqNP/OzR3tMbAIMRoho=</dsig:SignatureValue></dsig:Signature><saml:Subject><saml:NameID Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\" NameQualifier=\"https://deaoam-dev02.jpl.nasa.gov:14101/oam/fed\" SPNameQualifier=\"JSAuth\">pkieu</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData InResponseTo=\"_e66b3a98-831c-4c96-5706-b63fe0549624\" NotOnOrAfter=\"2016-12-12T16:59:35Z\" Recipient=\"http://127.0.0.1:5556/callback\"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2016-12-12T16:54:35Z\" NotOnOrAfter=\"2016-12-12T16:59:35Z\"><saml:AudienceRestriction><saml:Audience>JSAuth</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2016-12-12T16:54:10Z\" SessionIndex=\"id-l3NCbxKoBfUZcuKhlotMuIF3ydgYJgGGG6BGTTU6\" SessionNotOnOrAfter=\"2016-12-12T17:54:35Z\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion></samlp:Response>"
  },
  {
    "path": "providertests/testdata/okta_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a\n-----END CERTIFICATE-----"
  },
  {
    "path": "providertests/testdata/okta_response.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id12433943337943699538801121\" InResponseTo=\"_15f66d2d-628b-4d9b-a99e-089d8da862e1\" IssueInstant=\"2016-07-25T23:20:14.859Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk659aytfMeNI49v0h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id12433943337943699538801121\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>ABeBWHP23nfnxsyUWE5d59IIqQeXgHGol36mjFvWcA4=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>NfzCNa5SytP8OH0kq5yElIzhQrlAWdHWV6fdZA8+6SH8yrCPFMOwCsQRM0UriNDasPhodEQIRCzcZuaGNXqXiNXmEcoILXEFWsLPNg0dxHrrdbmKTz+QxKB+4PFAmgOwFIMMN7xwinMBJG3JEhBTjj8QRg9TbVUG/3GgTrlfzNpp9Db94nPOuhyMNStNGMFUEfCyMRQ5ZYK66ritnHFrMDBnu7oiCEV7xDIRf97kqHIDVenyntR56zDLu/ndCJfuP66Fahae1sU0U2bHJfM/64YWvI/OyywsNlZl1tANRXiNaKt6ukvDcz4CFI8aRER7RNbsEhinGMWxHUey0c3o5g==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id12433943338016269283631347\" IssueInstant=\"2016-07-25T23:20:14.859Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk659aytfMeNI49v0h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id12433943338016269283631347\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>jwweWw9Jrdw3X28IpBEQgQ5I0mwOeStoOSso1hjtqkg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>BiFOSVvt5tIqMDwO5gcBehbTGaqe4S6gBmDxywqx0H1KL7vdz5v46L/0GxyfAZESwPu1zEMXSpt24wY+oTN2sMEuOAw2SK0OROucF3gWzYs6Uk7MtXg6uXq+jXRF76qdilWi5O2t270vwPYMOAG78C0DFhvtOA+aJI5Uc/SxbYPeN9/3/ymOhNNzZNSz8CfxwjhIGYjBao4mJd3Cb0I3N7ggHP9LhxUsRWDq7zWhKms0EOOfuiRw3VCdZh3E8wvbykos8M7Iy3m12XHK/JDJ2U88KPX2aMjgOrxBUBLwnySzzQ4+MPYGaWL6/4TQWp/NX2pm4L9rMuQguJj50/5p/A==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">russellhaering</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_15f66d2d-628b-4d9b-a99e-089d8da862e1\" NotOnOrAfter=\"2016-07-25T23:25:14.859Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-07-25T23:15:14.859Z\" NotOnOrAfter=\"2016-07-25T23:25:14.859Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>\"123\"</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-07-25T23:20:14.859Z\" SessionIndex=\"_15f66d2d-628b-4d9b-a99e-089d8da862e1\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"username\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">russell.haering@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>"
  },
  {
    "path": "providertests/testdata/oktaenc_idp_signing_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDrDCCApSgAwIBAgIGAVhBgiX+MA0GCSqGSIb3DQEBBQUAMIGWMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxFzAVBgNVBAMMDnNreXBvcnRzeXN0ZW1zMRwwGgYJKoZIhvcN\nAQkBFg1pbmZvQG9rdGEuY29tMB4XDTE2MTEwODAxMTUzOFoXDTI2MTEwODAxMTYzOFowgZYxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ0w\nCwYDVQQKDARPa3RhMRQwEgYDVQQLDAtTU09Qcm92aWRlcjEXMBUGA1UEAwwOc2t5cG9ydHN5c3Rl\nbXMxHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\nggEKAoIBAQCFRpdl2Wm6UtxSzZp+MCV5ljVm+Rg4dyFYxBz2DzCqGRCE5a47JnrkTSsaQGV2IrId\nGejmqpMcB3teziPeQ9IoBA4Grqc0FWUwh79d6vTH7A263XTtkyecq1D9qBwl4oDULcG2IbiQUcMM\nJRXgiknzOvHKH1p4TLaxQbmRO2qmHoZG0J0azWe2HgM/tzD9wBosRLu1EGV7ooS9xfS02kum2Qa/\nCKydS2nWo/84R+s7hLPmbC3FsDc4U2XWmkFealgh8bZUZHZ6f7xTZkLqq7rvhw4p4pulrYqpnGgU\nbAsk/IHLiEzAjfz6movtU4B+CHEt3u/XDH8dW1O0aXpTIauVAgMBAAEwDQYJKoZIhvcNAQEFBQAD\nggEBACZxU65IrSV3hT4/0DDG1P4kplvsfg/YYup8f6mgH38D1rdodiMW59mUBipw13qyempSgbRy\nUAukbpi3fpYb0Cob6Flo+FQR8+fpeUTePCIO+yD4mlqElAJR5a2J7ZWhycvAGOqvpaHHK+xrJCDD\nY4c1hIOezAveGDskDS0cDcXknwQwdt2eQxGebRXaDSlvbjFPvpd2Y72x2PBxSoXaamdNRbiSUC0y\nAPle2k24tMMfcm9A/FDDI8QOikV4vQeIjFjGr+yQf+eqBihaL8iDCojT8xXMU/mbDrQhrSWkqpnF\nsjls45t/votmhL8boe2A6Cx9yiAWltPISL7+L1ENa88=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/oktaenc_response.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9za3Y4ZHYyNndoIiBJRD0iaWQxMDM3MzM2OTUzMDUyMDExMDQ1Nzk4NzIxOSIgSW5SZXNwb25zZVRvPSJfNTI2MGZjOTktOWM0MS00MzNiLThhMzEtYjdhM2UzYTRlNzU1IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDktMDZUMjI6MTM6MTAuMTQ0WiIgVmVyc2lvbj0iMi4wIj48c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cDovL3d3dy5va3RhLmNvbS9leGtiYjU5d2IyMFg5Nk5ZMjBoNzwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iI2lkMTAzNzMzNjk1MzA1MjAxMTA0NTc5ODcyMTkiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT5XZk5kRjRJcGx3aU44eWhLaGgvakNHY0Z6TEU1ODVUTys2MEVUcFp1OG9vPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5JZnNXU1ZmcitKbTZSVFM0MGtBdkJkVHB6cGUzSVR5MjBJT2doMFZ6Vm5aWEFMMU9XZlZCYXN3Nk12SGVwMHQ5R2x4Y25zSHN2eHVVUEIwK3pHMzdkNDNuZHMweks4dGlVcDQ4a2V4ZDBFcnhIelNIMkpwVkw2UDdTQW8vY0dyOXRRamxWMVV5SmJ0NTJnZEttb1JlbXpxVS9wdzVQd3lqSXRNODFyM3pHZUJ1Ym9FeXpkMDBzMCtDaFZyMGhoVkhtK0RPMDc2SnNId1VJRjBkWE1qTHpLTGxLM3hSTnMzd0pBY1h6VytJTnRnMFpvQlBEUWU1SlFDMjJrRUx4SkpyTThWMWQxSkd6MlVUM09yTVIzOHpaQ2ZxVG1JVm9uWExMZ0h4c3dkRHpHcXFiV0xET3VQZUdOcVgzOVAzZGErOEUwbmdJVnVEaHdiM3ZYbW5jZW9YYnc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRHJEQ0NBcFNnQXdJQkFnSUdBVmhCZ2lYK01BMEdDU3FHU0liM0RRRUJCUVVBTUlHV01Rc3dDUVlEVlFRR0V3SlZVekVUTUJFRwpBMVVFQ0F3S1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ3d05VMkZ1SUVaeVlXNWphWE5qYnpFTk1Bc0dBMVVFQ2d3RVQydDBZVEVVCk1CSUdBMVVFQ3d3TFUxTlBVSEp2ZG1sa1pYSXhGekFWQmdOVkJBTU1Ebk5yZVhCdmNuUnplWE4wWlcxek1Sd3dHZ1lKS29aSWh2Y04KQVFrQkZnMXBibVp2UUc5cmRHRXVZMjl0TUI0WERURTJNVEV3T0RBeE1UVXpPRm9YRFRJMk1URXdPREF4TVRZek9Gb3dnWll4Q3pBSgpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIREExVFlXNGdSbkpoYm1OcGMyTnZNUTB3CkN3WURWUVFLREFSUGEzUmhNUlF3RWdZRFZRUUxEQXRUVTA5UWNtOTJhV1JsY2pFWE1CVUdBMVVFQXd3T2MydDVjRzl5ZEhONWMzUmwKYlhNeEhEQWFCZ2txaGtpRzl3MEJDUUVXRFdsdVptOUFiMnQwWVM1amIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRQ0ZScGRsMldtNlV0eFN6WnArTUNWNWxqVm0rUmc0ZHlGWXhCejJEekNxR1JDRTVhNDdKbnJrVFNzYVFHVjJJcklkCkdlam1xcE1jQjN0ZXppUGVROUlvQkE0R3JxYzBGV1V3aDc5ZDZ2VEg3QTI2M1hUdGt5ZWNxMUQ5cUJ3bDRvRFVMY0cySWJpUVVjTU0KSlJYZ2lrbnpPdkhLSDFwNFRMYXhRYm1STzJxbUhvWkcwSjBheldlMkhnTS90ekQ5d0Jvc1JMdTFFR1Y3b29TOXhmUzAya3VtMlFhLwpDS3lkUzJuV28vODRSK3M3aExQbWJDM0ZzRGM0VTJYV21rRmVhbGdoOGJaVVpIWjZmN3hUWmtMcXE3cnZodzRwNHB1bHJZcXBuR2dVCmJBc2svSUhMaUV6QWpmejZtb3Z0VTRCK0NIRXQzdS9YREg4ZFcxTzBhWHBUSWF1VkFnTUJBQUV3RFFZSktvWklodmNOQVFFRkJRQUQKZ2dFQkFDWnhVNjVJclNWM2hUNC8wRERHMVA0a3BsdnNmZy9ZWXVwOGY2bWdIMzhEMXJkb2RpTVc1OW1VQmlwdzEzcXllbXBTZ2JSeQpVQXVrYnBpM2ZwWWIwQ29iNkZsbytGUVI4K2ZwZVVUZVBDSU8reUQ0bWxxRWxBSlI1YTJKN1pXaHljdkFHT3F2cGFISEsreHJKQ0REClk0YzFoSU9lekF2ZUdEc2tEUzBjRGNYa253UXdkdDJlUXhHZWJSWGFEU2x2YmpGUHZwZDJZNzJ4MlBCeFNvWGFhbWROUmJpU1VDMHkKQVBsZTJrMjR0TU1mY205QS9GRERJOFFPaWtWNHZRZUlqRmpHcit5UWYrZXFCaWhhTDhpRENvalQ4eFhNVS9tYkRyUWhyU1drcXBuRgpzamxzNDV0L3ZvdG1oTDhib2UyQTZDeDl5aUFXbHRQSVNMNytMMUVOYTg4PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbDJwOlN0YXR1cz48c2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgSWQ9Il9jZmY0OGY1OGE1Mjk2MzJmYThhYzNkZmVhMDgzYjc4OCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIvPjxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6UmV0cmlldmFsTWV0aG9kIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VuY3J5cHRlZEtleSIgVVJJPSIjXzMxYjY4NzUyZDJlZGQ0ZDE5NWU5ZDFiZGFiOWQxYTZiIi8+PC9kczpLZXlJbmZvPjx4ZW5jOkNpcGhlckRhdGEgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj48eGVuYzpDaXBoZXJWYWx1ZT45M0NsMkYwTDU2aWxHaGRQdXdld1FGNXdnblRGS29jYzR1bEhLdjhmTEtCTWYycE94YjNWQVllcTVHdXV3cUIxNFVnMlFBOGpCSjNRcndMOWc2RkU5WlNFVWs3R3FYMTh2ZUVVc3RMZ1R3aGFrbDg3SGNJSER4WTR2NkJoTTVkQVBZNEpSUFpHZFNTdVlieEN4TGJ6MkhiYUVMSlZwRmlLK2tsTFdNM041T3laWGJQK3NNZGNTM3pITDd2Z21Hd1BGWld1eC9ZV0ZhaEhiZ1pqSE0rM1lvYW1DaTFCNFZxcW9KSW9NdzlnU2RuUU5lbXNMamxDYjRDUnl0QlVzL2k2clB6a1BhQzdITm9sbjRyMS9maWRYdGVDdkhZc2N5ZjA2YzhLcWJXUkE3MFlDQkgvMXJqVTEvYXovQlRnNTJ6R0d1MDF4NE9pSDd4dVZXWVU1UUJHVUQrQzFuc3hZVWJ5TitCN3UrcEUrcGdyOW9hRWNBalhVVUlYYnkrb3pxWDFJOEdyNDdVWjdRUWh6Z1l0UzcrSjl5dTZhR21pa1RVSE4rYmJ3d0hjZXJXNFZnWEpjWnBXMzRuWHFEdGFIUEFwaWxwc1F3QWV5VndMWnVvdVBKbEV0ZU1FbkQwbUN1cGxJMHRtbXJjcG8zdk00VnlTeS9EakZNbm9BSE0zK1hEQVBXMitqNm5jTDlaVU9sR2VmRDhDTy9ONG8rVTJYbVhmaGNvUjZSRHAybmo1T1c4RU5la1BIZEY0cXIyMXVreXJqc25qZngzUlhQSUx6RXJFN3c0MGRtNnRFa2VMYzlLZEs2TlNCc1ZmS2Zna0ZpQWdTK1AzSHJ1MU1rRW1OcHhTaG9qMWJtNDVVZnZqejM2TndzTnZpcFBTRWhtKzN1b0xOcWhoU1MrVjVVeGFXVERQbk5mcExZVGZScVpVTHV2eGo2SmNBS0o0aE5xTlRWZEN1azBPTCswUG9pU1dtNHltU1haQ3I2ZVEzSXpxL2JSNUV1anlBbjZIdXhXN3ZzTGkraG5rNG1BUWhTT2ovUUFVQmFMRWJ3cDFjWUZXWHFjaVpiOVRjRFA4K3NKQTBqejh0WlBBd3lMMERCS1Y0VHJ0ZE5ZNUpjTEVucElpbnFqQ3Ric1NzTzNjUUt4QnE3aFBabnBjWUtnT1V4NHEyZ2huN2tiaGY5Sjl5MGtNcTIvMXN1bWc5K3E1bnNWM3FrNFZ4aUtxa1I1M2x6Tm1yYkZJVTFTOTRjZFYzTldiUVlmK1ZlNkdPU1ZFbmlWcmZDcGZteFI5Yk96aTRGTXpVNEllbWEzNDJ1ZlQ1RTk5NTFrTnJWSnhLQ1c2TmsrTXFNNzJsOW11c2NOcUJUMkpMK2hKbWJBWm9kSHBuUnZsUlp2MkZmcjRCVWNhck41bnQvWVQ3d0ZhVlZWNDdBTnh4SW82YXlsTW9hRjVNc29WSWpFWm5jQlJpTjczNWhMTXVYNFBBdkxXWE93ZW9kVnBXN3k1R0FnbVVyUVN2SDl1QXdBSXBQaWJaS1RQWG92dXpLNEErUDlJV09mazdWYithZ2dHQk9RV3djbXA5dm52OXRJbXg4NjRLOEtGTnFMV0l5RVNmQ3dINFdmelJSbWNCb1pTQ2JsckVLbDhKUFQ2bGM1UkIvRkJ1bjBUSzlhNU5MUDRjSTdjMTZLUHlTeGVGTWNHampWcnlkZHpNRkxFYm16R0IwdEE3TGFjWHdrV0UrSUhvT0d0cUloZC9MSlRWb1o2UUJCcDlheHBVa1dGNDVIdERVWWxzRExqYnpYcFlxUnA1WnNWR2h1cmJ1V1ZydjA5aUxESlRYRlFtc3J2R0hJeW9sU2NkMnRUMmZKMGg0aksydThiZ0lZUmx5SmFia3RtUjNHT0Q3dUZUN1JpZGR1STJ3V1NnbmViR0RuMWRnaDkzNEdmSTdCUktpVnZBMW1heE9IbnltSzRSRTVid2JYeGJadWx6UWZDakZuME9UNEpZUit4dDl0aU1NRC9RVUJCYUdTU2MrSHBrMnRpVjFDc1ZPVDQzZ3FCZmFtOGI3U3JTdTdDOFF3dVZCQmRFcURmeGFsZnpnNUVNOFNBSjhHdDhmUHNCTEpybkc4aFhtNUpWbGovb2M5dnhYaFg2ZFM0YmpEaU9hSng0ZVU4Z1FYQVduYW5CK25lcCtnZzhRemNURG1neTRuZnFKRHhzNi9JVWxBbjcwbWZycmFNZElnV3BHWXYyb1UvdFZsb0cyNmdSVlh6SHBQekRPNHd0UVVkUmE0aUc3ZDZPUnFPTVRrWnlVa3VhRGZ5Y1NVSDZZZUgyK1hyLzVVOS9DU2J5VDNLeHN5djJwckxPdFBLTEVIVloxSU9lUUlTcy8rVXBaWmZEQTFFNWNleFd2cnhtUURtOXZFa2k0bHJYb0NxSXI2YzZvT0lzRzI5MlJ0WHlROGVKMlZBM3phWWRsWEVCbzJpU2RBTFMrUFJteE55aUYyaWdBTzRvZDQ3ZWUxWGJkeU5zOFU0L3l3S3o2cGxPT0ZyRjhaeEdLOGd0ZnRxbW1wdWxWcVpQZnNuYmsxOHUzVitaWjBUaWhkbmJWRCs5YkRxL1htZUh1eUdyY3o2MWhxRm55Zkw1SUtWbW4zWUhqL2J0cXM1bjFWTHZKNHl5QTh4ZUZISVRQUjRkSmxYU3hxQW5QUW5uSG9Cdzk0cnFKUUQwdFZQS3pkWWZiQVlOeEMzMmpRRXB5T1FKSjNrclphNVRHMFJySFp1ckdtbTNHZTlhemwwR0QwWGR5YWxBdVA4Sk8zZEZtcjhHS2h0R2sweTdld01vYVlYUE52NXAzNWtyNVptSWpmb2VhUWlMUlBiMktLcnlqSlhERndPZjY1ekcxQU0xaThWMjVMZHhIUzJXZDQxUHZGQUdYOG1zN2ZGTWJtQW8zNVlZOTY1MTNTWE55cmZTM2duMjNFSzR3S2dNTDlkUkxFWjc2ZlVCb1BlWTg1Z2ZWZWVaWmtBTlRzTXFYWVA2ajB0QllYZU5TSGdUWDI2SW55b09ML01LeFRqU09WL0hEdXpGMnp3V3JDdWowbnNPakIrZzVYTW9uTlY5cm44dkRYZ2lTclAvVzcwVDRnbWlUT1dFV2h2ZTZlS21sZDRLTnRJTHVyWGZVSXR2SHgzbEdwRzVNMEhLNW1hWkxJTmE4NUZQSDgwSzVDY1pYMXR3TE9VQjVubGlPWms2NHllUGNaY2puTFhXNWhvMVZOQUo2TnpKUkxwNHBkODczTzNucFEwMUVqektYWGNqUzQ2SFppTnVySk5Lbk9ZaHliOGhHdFNhYUNRSVVoWlRrSGFRT0c4dnFrd3ZTbGhpcHZCamp1SGFUMytudWdoOXhYVzhta3JwZU1tbU85QlV0L05PU29wSHpSdHQ2QW1GUnJTeDRNWGJoVlplYUR2bzV4U2FPWFA3MUlTSUJKcjNudVY3aEh6REs5Z245R2EzN2NuQXgzMDNvdTJBcmpldllxaHEwdGNHV055ZkpkK0ljRUE5ZDEzY09rQmVvMG8vRnp6NHRkWVpTN2l2MHdHWkRsOVVkR09HQUpmMHMraDNqbFZVeUUwTlQvSC9CSmQ1YWsyemF3cWlCUmU2SzNSbmR2bm1IZXBmaTA3TTZibnVGSGRQM0h1Ny8zRmFjV2VtQllSU0htaHhhM0xUN1lBTjU5MWovVDErS2E3WmY1VE1WbmJoRFVtTWVRTTk5Ui94S1VBOGpaeFVEUnRhckd4YkxrVzBMVytIUHBqb25ZN3BVMThEQ1lhNCtXbWEyZlZWMDNrUmlzaUQrc3RVUUY4MXhXTVVjdWxudk1xeGpnWS81MUh2NS9tR0dyVFpBZTdHTktqazE3bzdnRWJOUFhCcHZFazZFbHA5SVlSVnhJRm5YOVZtSXJPQmIzQ3hrbU9OY2pNUHhic2NPYm5WVXdrU0djemZHWTV2SGg0TXk0QnZxV0RwWkZYb2FCaG9VNVQ4b2pLY2VLbjdJTHFmMUlqaWhGMkhQeG9MQ244QWxCME5VaU9pbjBxMUtzUk9lR08rWGFHUkl6VHdFZGxDTUpPelNETmpEVnhKelZrOHpxK2c1VG0yRGhpYnpQVmtxTlN5RktORlFQVllTMXFMbzcyS3NsZWtVVW9pUTRVVVQvOUF6Z0VDTXVWMUJVYVY4aHduUjJLNnNZQ3RkNDVieit1T0tVVlhUTWROUW55TXQ4Tk9pY2Q2YWtQR0N2LzBid0Q5MTk1STByZWh0eitLSGZUWENYV3J5MGtZNWRuZG1yZjg3NWlVeU1PM1dXaTFTQnpRT0NzU0UxOXVPR241NEEwelh5NUZsbnd6Z2RyeENyWldpQWJkdXhEenlNcU5EVXZaZU9oRGVCaXB3R2k2MmN4MkJtWHRrdEtGdy9jWjhBVnRnS2ZjZUJkSCtkN1dzYU9DN2R2UlprcFNVV0ZkOVlnaGhZNlBrb3N1akdlQjZOR29KbVVuMVY0SGt2UytGTUxoeWw1enRhc3hLMUlMNkp2cWFZbVVEMHI2eTVwU2N5TGVQSGg4c05PZitHVGlKZkowNDh1L2tDZWF0RExqbFA2NkVNdHJQK0tLcGNyajMzd1hGeWJ1a3B2cVNsRFFiZFVnaFFsN0owZStqRjVrR1BlRlAySWt5eHVOMEJNQjZCL3U4cVhCQ0lrMzkrYnkwd0toMG44Qk1pQW5ETURDdWsrSGVJQkdtYlYydGFBZXkzZ3RJSWZ1K0JPU0s3aVBFZzZKM2t1aVJXRlhlTVBrZGxmbm1TaGtYQ0RnZXJqb29aaFIvaE9NQVkxSkIxUDQrQXlkSXR4Z3JzaEQwQU52U3ErNmVrVmZiNHVadnpvR2k4UDRuN3JlaHF0aTE4dlo2RTJXVVAyVFVEQk84T0FSY0VDaHcvalV2NDdTTUs2WXBYR2pFbm05VW1GS3pTNWJ3UzFoOWtTV3lzaE52bWEyK3dmVEd1UlZueS85Z0RISmZnT3owVUNta1JtUklrYmhHOXY3cE9DZjR5N0w2NWZsUlRFbitLbjJZTStBT042TTB2NTlWZVh4WGNjclNXRmdwSXJSaktQcDVlR20vNzJZL28wTmVpQkx6L1VtMTd5TlpvRG5kekJvbVRxMnpSdE5Eb1JOd1NpS2JGdFROaGtnSG05amJPN2lZKzk1eUw4bmo5ZElJcFpOSGR2a0ZkUWRtelQ1WDNmVWEvSjNER2NhRHpJZHlpTWM2cEhCN3Q5R1l4T1dpWnF6ME9aQUYyZWZGcGM0T2d0YkhFRFp5ZldBSXMxeVpuS3ppQTRjNjl6SEJ6TEFnYitQc1pVWGs4SUNXWUIyZU1OV2RETXIrWU54Nml0V1YrUC9PallXMjg0ZUZvMEFyY1JZQVBnZXpiaXUybmltSmJSbnhxQW9jcThvbktkOWtFMjBuTDJYTjdOalRBZkNMNDhncFFadGZOZHBJamFUQ2NnK1pFUk16bGhZRUhna3NUMklwVzR1OE4xYmVRd290WHA3MzdYNzNpeVRYR1gyZWFhTEhCZi9DU1V1V1BRT2dGUDN0cWo5MW9VWC9ucSswNktTbFVuL2ZzcnFQT3hVdi9nOWNsdEx3RE5wUUZlK2R4TXN4WnRtWXVyd1JnQ2ljL2VxWDhRT2c5NEZnYW5UMHpCTW45dGFPNitqcC9NaWg1VDdrNzlNek02R3pHR1RKTkg4Q05qdUhNZElaUkhMeWRSNDhEMDRRRFBBc1J2YVAvVHN4YmFFNkoyWmZEMnNaVTN5UnAvTm4xNHRHL3l1U3g4aE40S29kMkpLWllTSkEzK0NpM3JseHgzZmx2dFlBQjVIakFSWm5YbGZXVCs2a2RLOExDN1B3TXlXK2Zld2V4UWs4MDQ1U001VytSZU45elJoRVBEc041TmZBaUVSeFgzMHNmd0NyOEs5bTBEbXE5b0wySmNqZTdHQjJQc2R6UTV0cTZhTTN4enFjU01uQ0wrSmUvd3hKYXpESDF0THhzZENhM3g5QXlwSXFmU2sxdkxtTHB3RkpBRk5GdEkrVVRuamlnaHA0WG1qQ2VnSlBrN0V3bG95NENSMVZXSkdPYTB0N1M3WTlwYkg0OU1vc3EvdVVFWFB1MXUvcmROZUF1Z24wVmROTDRDMGZhbXZidm1KVHE0K3NVeGhvYVBzVmpLYXJVYzE5TERmWWJIem11QmcwZTZrdGptd2VNMWZwM0JUMkNObFBXS0c3cXdrS1I4TXpvblByTUc4UFRjVnpvMjZHNUtqT3pMRGE2V3Z0UkpwRkxVMzd0TmVxY0FRdDROU1FwVW1uaW5CMHdSaG04T1BjVzdwYno4WG1qNFczekJpdkRVTWd5dmNET0hCWWx1eUlvdFpNL0ZoV0d6SXRlaU1UR1MwOTZFNnBLTEloODk3QklGMVdLaE1UMmF1SmNmZzRLOG1oOE4xem5xR3RQUURFNEprclZjM0V3cWpEcmZXcGczQXpNWUdpOENIWmgwV3E3MkhoWEh3NS9UUVJ2K3o5NTJTMUhNRE13TmpJMUxUL3Fvd1BCTHhkeTI5QlI5OXhHLzdGZnRzRDVFdGJ1ZWVocnFESkxqU1IzMVlGaEpuZmp4VG1pN2s0dXMveWhKcjhQdHRvS0ZKL05nZEdnTnh2d3FJZkw3ZjNPRnBXNWFrdXd3N1VkVEg0MjBhNDM2dkpMczZraEFKWkVUSFE5WURyMHE1Rm5DMHZMbzhZaFoxQWV1ZFJ4L1I2eEYrWkpzZkxOa3pzZHBneTZFcUxOckk2MkU0T3ZEZSszL3B2RDZkSHhnd05DdzRoL2FaVXo4bGI2R0w4V3Z2dFFMSklJanRNVW1UNzdwS3F6V2FaQWYrblFBQ1ZkbzltRjBRbEJ2cGJvWGlUUDYzdmZkd0wveklaOVBmNFpLdS9EYVdLRzFmaDRCL0dmZ08yRzR3dW5vbVpUenl3ZVBzVWdlbHNiUVFCN2Rmc213Q1pLUW5GeFRyYlZ1WnhUckhvaVY0SzE4VExXc2o3RTNWcnJmbWhxWmFkdnM1Nkw3b0cvbHNGS21jN2FuUGwxVVBNYTJzbmphQ0NLUm1oMXZXZkVhVmVBeC8yd2E2elVjUTg2T29qN0ZTdFkwMlN0SElOWFZnMTU0RnZjcWw5OGZhVlRML3BHNGIzRGg0L2lwU2NJZUJlWUc0cVFteFRCZHUzSFlyL3lhTEFObnd0S1pVUHFielJyWmtvbEJZV3lEaDhGSGc4WldYZjRrTThYSStHckRGV0JwRTY3MFVaYkNOaEJGQ2VRSlRxTk8zMnpQYStjMVhFM3E5WjNGRXF6am5lZW5KRkdKTEw5RWd2bFNkUm13cWVsVFpoQTVIeEhxa2loVHhYcitMdGp4dEZjejd6QjYyRUd0RStlUVJvNDlKdXJRR25PcmFKOCtyWWRBS1lRSU5FQ3lmSlY5THFITE5VRWU0Mkw0a0V5d1hEMXlndnYyc0VHeXFuc3VGRGpWZGJKUVQwcDZPR3NKZEhkU1RpRkRucXhXUXQyWXBrVVFSVkFubHR2dHF6bWJzaDlRdVJ6UXpZdjlxNHh3SHp5dW54WWEvYnRxSHhFYVpkOCs1VTBYY20vRVJjZXVWN3AyMFNYdjZKN1JTT2VWOStkWDFHVnYrUGdINXdTaTNTWFZWeDBKQ1RiMDkxVHhRMG8yNFFyNmRjUFo1R2Jtcm1iWXNRTDc4NDZhYm1FU0NwejVTTTBGUWVyRUhseUhjVjZ5QUVVR3loK1pRZnk5c2I3c3kxS0JQaTFHZTQ5dHZSUXZsRUorNC9DVmhBTVNpK1NOVHdqb04yeDl4dDBvR1EzZ3hrMjk1MWp1eC9Ic3JJMm1ySU9vQ2VtNnYwWmViN2dic2xWWUczWG95MGhlbGd0WDloMVFJZHJjdEdZWmFvUGVCVlN0eHo3Q1NhRU9RalkwQ0ovZTNraEZ1MXl3dkQwV05MbGtPV3lLYTdCZzNkdnpPRjZkSkI1WEQ1R3RaeGxieS9rTG9wVDJBRXc5NDl5NEpPNk1lZEVUakVhQ1VSL2VkOVNNNDRLT0VyTC9rYkF5b1dvWWpTVEJtNkl1cHdxWTdJVTFENWtnWkhsT3Ewc213bjJmQ2NSSHZGSklvclN2MmlIc0p5K2pLa1RaZnMzc2hSbUxYRGR2QXhiT0liS0NsODg4di9kcHdnT1lnWkxQWXZCNXQyOVMxVFl0V0U0S0dVakF4UGI4ekJQTjZYWFJRMUNWUjdxZHlqVWp0bjFOZHRpVEZEV0p5dTc1RVRBYUwxWmlMRG9uaDV0a3Bid3h2bXpLZDV3d1J5WEMrWElUa1czbFM4YlUwNW9KN1QwbVhKa1RQWm95Zk0wbXhkcHBBQUVWQTNCTzVKUHdGQmlNSGNqUEdEUEZOSzJoQk1BQTBYVjV1cktQckNVSWpCc3YyTEhpQ2VKdXhhK2ljd2hlZjdkcUVaSDF6OXdYazJZRUc2RmMrdU9Db1VVNTNVT00rbEpGZFo1OVhENTc3MTVRcCtxSUdHak5tM09Gb3ZNdFBUV3NuRVFsdHdjZkhoMFZFaXd2UU1EL1Zxcm5TVTViQmw0dVhDVEJLT0E2SjQ0cWtmU1greW04d1RtV1NOY2pWbjZqNlNER3hvNmNCcEovZU5scktjS0wrVnVUeSs1dm0yTGZpNVlidDdMYnNmR3lqOXhWTnM4b2orbS9QVzE5RFQ1SnNLcXlucGxYY3h4dEdTays1YnJGVlVUdnZ1cFp6RUM0VkhQb1ppMkhGeVcvVmdiTXlZTVlDdzZNNTllbk9nQ1ZmS043aFNPMkordlR2dnlzdU92Q3p1OXVJYXVtVmdYeXhJb09vdml6NUJGcUV5alBvZ244UDV5cUFyYURtVzVYbUZGSFhaS0d4YXJXTS93NkE4TjZ3MS8xRWY5ektqMldma2NtMTlnUWFJa3FqU0dRc0t4cFJ6R0dMVFBJaytYM05CaUhIZnFEaytWdGUzSlBGOENFZzRydUtpOFVyM25zc2c2T1FBVERSdGpVMFVtSkpoNXdET3Bjb0x6NlFqa05PR0RyaDRQdGpvUzN3ME5DNlpPUEtVV2Y3MjFXMVh5dy9CWUdZc205cUtBUk9OWFYvSUtacEdkNjUvKytrMnBYVkpJU2JOd09WUlg1UFNRaENoT0pMTzJ5cklJY0NPN3VzODEvR1hYNkpaY3RiNUVuTThLcFh0ZS9MMXRodDRXZzJrbms0MEwzNEdOMEZTbTNtbXJCY2tMTVRIUGRtdUQyWDE2YWtCMTloZmNvK1Z0WGo1UENEQWJ2UnAxTGNpdmJVR1RKM0JpZS94dXQzMk84OWdST1hxNjN4d1hLekNDSUhnTVZLdnlOMnhlZGRRYkFYaUYwV05VU3pqVDFSMzZTbENoMWNxcnYyOWFQeXJYRFk2M3lERnU3eks1OEhzMmZ6aDczNEs2WlZKQy8vQXNMaEx3MThWQWlqU1NDaFRodmUrVFpKRithRU1XemJPdTlLU0g3NEZ3OGdpbGw0Mkk0NWUvS012Qk1ZS082NEN1STJaVWRGbFFRZWl0LzVXNit1dDcwN0x5ajR3MklGNjdBSWZWSDg4WnNvdEliYm55cUpGa2xnZXJkeXhpVmpQcTdacVNXQjV1MHZzZ3pZMkRVRnhzTHloc3IrdDFUdnNBaFJTVVVrSnpFTlhwdDVoVmlZSVVVM29zRFdja0FSQnhLNUNETGoxWmdGQUZ0enJvbms1QlNPZkpwWDY1ZldhSGpHQTdQeUxFYXVoL2JjNCt4aFdNTmNhbnh3d2JYQVVDM0gxdTFKWndPUUVHK1BRTW5naGllOCsxWXdvZXRqTmNZQjVJeFh2ZVBORTFQcFJtVGZOUnpyeFdWd0Fjc3d5cHFaRnc0VXlwelgvZnVRakVPMS9zeFl4NDk0ZGJsa2kxVmFOTW8zeTJpVzR6czFCb3dQekRVTWttYzlxdnB0SU90eHVCYXB5eEMwYnhidFVabkdsQkt4UFlRL1BWd1NNdkgwbWJ6clJKVCtUVkRyV2pQNzNWRU9paE02QU5TU213ay9KTWMwZExrUDU4Z0tXSlk0VVppa0hwWCtPZy9kdkFpci9xTkxTU2dmZUFRYkhOZE1XWTdJdzVUUW1RdytFd2VvdFE3ZUFnZVZqd1pZampQMTE0TzRLUVdPbFBlbEEyQTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkRGF0YT48eGVuYzpFbmNyeXB0ZWRLZXkgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBJZD0iXzMxYjY4NzUyZDJlZGQ0ZDE5NWU5ZDFiZGFiOWQxYTZiIj48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+PGRzOkRpZ2VzdE1ldGhvZCB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjwveGVuYzpFbmNyeXB0aW9uTWV0aG9kPjxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFPdnBadEpOdFEvck1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13CkVRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmgKYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURneE5EQXhORGcxTjFvWUR6SXhNVFl3TXpBNE1ERTBPRFUzV2pCVk1Rc3dDUVlEVlFRRwpFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEClZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXcKRFBDSjlKWHkxTnN4S2ZxeU9mTFFYRktLR2dOS0tSTHpMQVdPNDNHZ1FZclY2N1FhQW55NUx2Z09hODFLUU9YNEl2akp5MG5kL1ZyTwo2akc5cFRkTVI5dkZIVDBUdTNXMVFVc3lQUFNRcXBLWHdiMlpDU1hOZ2hZRDVnQnJOdG1PeEFPczFBeng1cW1JekJKNEYwUmtSaXZjCmRiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUwKelhiUGJRV2Ewa3BiTUxETXo4S3IycE9ETEtiM3JHbWRmNFA2QTlhQTQxazZMNGNsVHNOZGNLN1p3SjJmR0Y3OVdHekU2Ukx5QlgyVQpTM2dQSFVYdC9XTVFaWHlVTE8zZXhpVERzUVhXRmY4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnUVFNQTBHQ1NxR1NJYjNEUUVCCkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0IKTFNRd1h6RmVjRU4rQ0E4U2xwTm9JWEh3azZENlYzdUVCU2pLZW1adEpGQ0pxZThkKzVxdDNHVjUwQUttdEV0Mk5jN0I5NFROOHhCNQpFbVpsYWRuVEpXY0JnU3V1ejFoTFhRUTAyZEozZERxOEZNbHlSNzBTMkRUdHVQdTBpMi9mNkt0cmxtbU5zVTI0QXErZkN6RUc0M05xClNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkMKbEJSTDZ6RGpscFBDSUR3Y01GaThOWHZhaVZjbHhJcTNYZGZxeGlHQkJFbGRraGdaPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkNpcGhlclZhbHVlPmhuQ0NyWEFCK2JIdEEvNHBKeVBFWWcxQ0RwQWRGMXl5clY0dDdaVGtTRCtCSmlRY1B6SWIyVTZFOC9UeUNsQ1o4OXlsYjE3SG1xNjlzTVFqZHMzWUllVHRCdjVxc0tBczFHUTRvQnBDU1F4UTZEa3JlL3FZdVgwUU5vaUdNMDR5dUI3OTMzVFdGQjIxbHFUa0NrNDJVd25GVlRjTHhLWHhrM1Q3cmhUTWZJbkxheVFWRCtKU1ZWQ3F4TFM1L1R0YWhLWFBlb1FsQ0VSUi82ejRMV1ErTEhpU2k5dXJNTEpLZk5MdDhBNmxpRmhCbmM5KzNtaVp3dGgzR1lEVWRGK2c2VEk0d2lOQzdlNHdvbk93RmNnU211amQwUzVtbkxidXB5dVB0NFJDVGYrTC91ZE1rUXBjVWc1dmZVTndnK0dmdUhDL2NmNDM2cWJmMEpyYytLRDNGUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjx4ZW5jOlJlZmVyZW5jZUxpc3Q+PHhlbmM6RGF0YVJlZmVyZW5jZSBVUkk9IiNfY2ZmNDhmNThhNTI5NjMyZmE4YWMzZGZlYTA4M2I3ODgiLz48L3hlbmM6UmVmZXJlbmNlTGlzdD48L3hlbmM6RW5jcnlwdGVkS2V5Pjwvc2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uPjwvc2FtbDJwOlJlc3BvbnNlPg==\n"
  },
  {
    "path": "providertests/testdata/oktaenc_sp_encryption_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAOvpZtJNtQ/rMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgxNDAxNDg1N1oY\nDzIxMTYwMzA4MDE0ODU3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfUlciwDPCJ\n9JXy1NsxKfqyOfLQXFKKGgNKKRLzLAWO43GgQYrV67QaAny5LvgOa81KQOX4IvjJ\ny0nd/VrO6jG9pTdMR9vFHT0Tu3W1QUsyPPSQqpKXwb2ZCSXNghYD5gBrNtmOxAOs\n1Azx5qmIzBJ4F0RkRivcdbXSfBUBLpCn1M285c4tk5SEvoRgBeisLJJDB7hmylA1\nV6/+BN+N6b3M+ZZG//CTvOjJKgnwkMALzXbPbQWa0kpbMLDMz8Kr2pODLKb3rGmd\nf4P6A9aA41k6L4clTsNdcK7ZwJ2fGF79WGzE6RLyBX2US3gPHUXt/WMQZXyULO3e\nxiTDsQXWFf8CAwEAAaMPMA0wCwYDVR0PBAQDAgQQMA0GCSqGSIb3DQEBCwUAA4IB\nAQB3fQZz2qNAo/wohPNaR2uAakLt25cKrsbgn3XwO+X+DRH4nqMSZkHdLGr82xD3\ni33BLSQwXzFecEN+CA8SlpNoIXHwk6D6V3uEBSjKemZtJFCJqe8d+5qt3GV50AKm\ntEt2Nc7B94TN8xB5EmZladnTJWcBgSuuz1hLXQQ02dJ3dDq8FMlyR70S2DTtuPu0\ni2/f6KtrlmmNsU24Aq+fCzEG43NqShOMeM5rDxLsSJCtjfMRwG8YeyNf6cCMSMxY\nAJfrTyj+AS8RtZQNGF7tX+exEWHOf1C9CBzHtKRClBRL6zDjlpPCIDwcMFi8NXva\niVclxIq3XdfqxiGBBEldkhgZ\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/oktaenc_sp_encryption_key.pem",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn1JXIsAzwifSV\n8tTbMSn6sjny0FxSihoDSikS8ywFjuNxoEGK1eu0GgJ8uS74DmvNSkDl+CL4yctJ\n3f1azuoxvaU3TEfbxR09E7t1tUFLMjz0kKqSl8G9mQklzYIWA+YAazbZjsQDrNQM\n8eapiMwSeBdEZEYr3HW10nwVAS6Qp9TNvOXOLZOUhL6EYAXorCySQwe4ZspQNVev\n/gTfjem9zPmWRv/wk7zoySoJ8JDAC812z20FmtJKWzCwzM/Cq9qTgyym96xpnX+D\n+gPWgONZOi+HJU7DXXCu2cCdnxhe/VhsxOkS8gV9lEt4Dx1F7f1jEGV8lCzt3sYk\nw7EF1hX/AgMBAAECggEATD8qZWiGGGm0csNFrOdjGQALj6LVrrILK19v1aogX84Q\nyrhxzm9ti/8dDijbi9qRY0zOuyvGR5z1/HMb/Ttv7nUoMD05kEC3Dd5/FfTo2w7R\n3pIyzDKh1E9IdqIs7W+L+Li8zI4twzWriM4FaxQ5ElL4zxt3PcoEuDwOH0TQMOsy\nP2gLEhzzkFp7TRoKzR87sM6lXoERsGKh7XNWjjS15/w+XHMaDverOOALwWDbv32N\nUCdVSAGBx4Ic4mZuJv+e3MH2SAja0J6NLMzCMtrzmfcgVECykMnELi1XftZYbgD+\nKulSvHuamygS4KJppnAdly8950C8CxI7fp9QJV/8UQKBgQDUaT68z9e203L/XATr\nsa9CgZodWvjrLH7a2e5EvUPq8slmg2VqEYNjHzP4rCoOcLul6TwrlNInxqTIkIPR\nmRxBSrG24azfGRrOs34IMTXgqfMVVxbcSVK8OijHs94NTwYrRjMXeaAOnKjPH484\nDALrEoEGcrjXmDDKBV9rb+a5XQKBgQDKRVkUvCoILjsA3jG6qaKBwKSZBFla2o6x\nYxgOZdeSG2NEuMt74yRHjgV6iogpvw9i/FSY9TAaZsoX0L3I5LWRtwEi3iXtEC9X\nqFlS9EPr9encpdd2vu1O6aWXW4IlUWbu3ecdb5UAxu44ObUQS6HiXEfcK8vufF5l\nWyilXNerCwKBgAMYYYSo1rDgVe2orp2soiwq7U7+M2Bh7ptLz7AKvgGfdhXbVk/8\nX1jDbKN0BszdEa7yPiE4cvOHboFJsdINFB9TclGC6lz55a0banu+E9XpRBSMh1XA\nb8c0ZcG7OkIhY6qfxEDUUePEnqUeBZ1Ad45rX5vzcgQaQKPA/kn3gHo1AoGAU/05\nwSdk2KLBs1mQEq9PoEsqzbMFm3k3WScJnSjiu3ON48JMFDQ8I04wrjKJ2bPRIswe\nIKlnAP9/mSX/OETntArmeOD/pJFc5ywrcwukjH0/T3S5pEAhb+wK629++hn0AOm5\nhvqHR5xS3JvxuEN/g+vHlv/EnVGdLL8OgKOtlgMCgYBU/5WF/7dr89uYzjiBvedh\nHQCgwd+8aSs+raY5eTzJrJgqVbEMoxhco1GWzWYUjDVw88Y63k+fqIf1DQJFkWFi\n9T1nppVDeofoLDLTrh/2oTAHIM2QL6kWwoHiD7b/scF5z/rC21KqobqroAh2R0CP\nJ2waRoJgqT+P15Lq3PEcSA==\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "providertests/testdata/oktaenc_sp_signing_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAKHPtM2MqZxXMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY\nDzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWw8EP/dSG0\nyy7cL2sQvcRqiTrsVCWzQ5SGgZNGbFJXq36pshZ21H7gFPI/K2n6m4I3vNMCQtRJ\nJwfjyrPbuXpVaTMcmg8J3PGUVzaab+dZ28EQ7V9HEnzcVbEgu87xY/SB6SCiJbdI\nCOZWlsgLUkgZS9CFkw5q6i29nL6nSZw/MmNr1hjJWvVvs1KwnGjB2aF6wYBQKKsY\nGxfZTJqKKBGXwIB5qnaWpVQgP6+H/84YCHLUEKk1hgh9AnR1xNVE6e64clcAE+O/\nHWDS6QW658TJsw18TapzVbiUGou4TlxJZqEuJv3BfPX3EMsnp0uRurMtwgyzI/ZP\nCCHxSMJs4xECAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB\nAQBRwSaE1AnhZU/GzMngLSG6WsOp1NksoEHZsJoIKxUJWdMj9s0Pb/QSGg/W/2UU\nCREt6xBd9rh3jv17AwH6+IAvq/zQn36UtOE0/0v85Tp/I6t8v96cTjkEgDHBWSqw\nqfPvnrokKUpDRv1cxCL0qh4oW7selKkI0VpZOgpKm87oi6POQJ/KOMfcewlH+DXt\nzN3Es8Xp8BAfRRIEk7i3PqZSrhWUguQgCOAOvkb0tGuPDsFLLJJBML7B7aYrS1Kw\nEyuowZiDCDSk49KpGOmKYv2ocIG65gr7+am/l2NN+6cxuCf/o9H8UL8qm0LUJdgh\n5sVa0DJzIcuOjWsp2QxqTjr/\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/oktaenc_sp_signing_key.pem",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1sPBD/3UhtMsu\n3C9rEL3Eaok67FQls0OUhoGTRmxSV6t+qbIWdtR+4BTyPytp+puCN7zTAkLUSScH\n48qz27l6VWkzHJoPCdzxlFc2mm/nWdvBEO1fRxJ83FWxILvO8WP0gekgoiW3SAjm\nVpbIC1JIGUvQhZMOauotvZy+p0mcPzJja9YYyVr1b7NSsJxowdmhesGAUCirGBsX\n2UyaiigRl8CAeap2lqVUID+vh//OGAhy1BCpNYYIfQJ0dcTVROnuuHJXABPjvx1g\n0ukFuufEybMNfE2qc1W4lBqLuE5cSWahLib9wXz19xDLJ6dLkbqzLcIMsyP2Twgh\n8UjCbOMRAgMBAAECggEAA/py2FpQm0NVK5qAo0yDizh19sdT9FtfgHINhkcFeiwX\nQje/AYTqlDid3MwLTE/Dde94f/pNsk5Dv4V6W8PU5NvX6NmYefnST6va2QQ6rQsn\np6uSNwLcYcWFTtKTqi1Y7fKmQyOpxcCbCUgeFxVAYPnE0jUKikdHB2dedkI9d2FV\nZMSBAlNp5NQQTTojjdvfa3yxFqB/5Gh+tZZnnXm0BmtSHjWvXnpi62Nz8LHtKwtO\nqzS6650vhbC8GyuILeBkEa0Zvw2aUhRI0grCjWsbXJT66FrV+pIElOAQvyHP6hlX\nzC43ODdXSiFogVkF07umlqmopv4gDLgst8fjY61VfQKBgQDpVytmVrNXI9A2uDv/\n0RhCZpmBMgz8o3OQY0KRtZqupeVUGCTKk0zNqxsvUg31fa+DLYu+fYUDRVy58ST7\nvTiXjKYllWY5LAacsqtA/1E4BghOuYfU12tGJcOUM1TZNkQ/s2to/fDL0HTjYX6T\nSTqxoyg9zCnSYpF+u7gj91QuywKBgQDHVcUGiL69Tws3J6riKvFBtqrqcJaRu5OS\nt/U+kqM1m5/GOaBpZyropeusQgb/nZHIE/lEur7CHYcTi8PKF2lGxnqWOn31LVrc\nrM11r2pweDpCBBQqytNoE9vUzgfueXbPPgl+l1pTDA02u6EE45IHC1bPPbjDx29/\nxhfAykD+EwKBgQCrVA3Rvqc/vFQNWYj0dJrTZnIfophWh806nycpxaYlxjl0XaXl\n9/HUsWXsgNsu/XH5Z1/MJm2b0TocbSsyi+UZoXP89I1yPRk9xRJpTw5bjFJdO2y4\notNpViEcl/Qc6PODskGTfaFohU7OBa/ihUpLU/kgJuAuUaFy5HJ4NgnhsQKBgQCm\nq/K4SfKiu8r27TYXMizT83bp3AYqCJuWHDb1gQryshNgXaLhPyBDsyhhuju70/an\nQvw0GamTCbl+AGlPO1ANm7u4jWPwc2H8DoklE+196SldNaffOASYi7JON4+uOOW8\n13R84vTlZ7hMwYobWmUperO1STiKiuGSBwKpcvPw/QKBgBgqByvETHwewxnYoIsp\nyn3Fz1KM7MMnRil2sXVTdpS6lpF+iGs7iXc8sBnWKxFFQWnvvx6VvhXw6lCCnEQX\n3LH177jH+s0jVQgD+YZLnYDBF347tU7W/dPz5Df7hgmuQhOU/UV9ihm4udutRFbR\n4fd3j6wIcv2MZ0iDUVJ0UFYr\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "providertests/testdata/onelogin/idp.signing.cert",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAMQeWnDJVaTyMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY\nDzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOwVVXE67dWF\nWQGnFyWLQyaAqco+hargHNq5DWTiQM5EG1GELt5QqW7XQJwgwfIHic7zMBDU13F6\nIUrh310gNm0Nygg7DWEREBNZvTdjg999pbRyt5IgeihKh5NEwpH9TGXnbow8QjI7\n9AqsB9Irn0fEuLKb1KOF0EMt5XqJnW2oqJrvTdYeGoi7Ckpg9J986XMqLMp48Gd9\n/ATo83GHsO7w+NKs0mAxB/Tffh6hrbILtMVMENQB6lv3dIrdmQqPGJ120xO6dmHq\nLTj+tNSjhkznSKXBDHT/7vGt3Ra38P6mGCKrDAloAz2XdXJcdiY57PxeQvc0zwRt\nJtOxphA5WHMCAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB\nAQAQ2P9aUBaM1kC0XJF86A4aYkqRVuyspJT6+DOYA/pcifZ3zhpXPe2+TY2gKsGk\nqfYma7ch6dq4zVErFMwkn8qM7PD1knK/P8SZuUPC3LTH3ETH+beb1lM9NICOItkh\nu7RIwwwwhAZKP52/Ww0F59PCv1SPZJ1NkF8XWak4Df8l4un4xsX1jcFkFlUxCDh6\nsimdFOK3ibMHUZxyGbvK/MwJfKQmMcjo/fIaukv1/2tKXnilSDhQS1161yiX7ooF\ndD+y55KaGF5O50K/9DW30E9ZgrSDltD/6aGt17VrX5wnkoUb68CqYfUrRjhpbPYI\nLGu96alI6+eLeIwZKpKSbMj4\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_01.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQxZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVXWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxOaFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFwODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNLWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUwSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_03.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDk4M2Y0MGJlLTYyZWEtY2UxZi04NWU4LTI5ZTExYjg2MWE3MyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDk4M2Y0MGJlLTYyZWEtY2UxZi04NWU4LTI5ZTExYjg2MWE3MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+RnBLNHZMamNwMG8wZ1hlRGRXRDV4WlgrbERBPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5tZWdVZ2dkVzlZTmNST3FQb0MwOEh1Q3RVZWZMaFdWS1djcHIxQjNrb1NkZzNJNStueFhiWks1QzUxdnpWNXN6N0Y2alRHL0lsYnNReGl1NGt0bWErYUZiVnB6YVRmV0VOZEdzdVRaMmFCL1kzMm03ekU0KzVUajVKenEvbVNVVUxQYXdkc09uOHc3V3NIdGU5OUgzWE56aGQvVVA1dnVpUUpnSW13UGxRaTJqSlRpNE1XVytON0NQRVZvb3M1YW1OUVRUdWFyN1NRVkdOaTFhQWNvUThTVzJWRFQ1MnpSM3ZxMnVtUVo2dUhCYThrK0x4YWNaeW9BWVVyRXlYc0JrZFBGVEp6RVVER21jMFp5Qk9TaE1pMC9EZnBZazZzbHNrMWQwUE5RMHNCVU5iZ3U4aDM5Y3ZMblpJWWV3dTFOb3F2RVgyQ0pId2JmSDg5S1FaeEJLTGc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_04.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZTNjMWQwMzQtNjI3NC01ZDAzLTgyMzAtMjdlZTMxOGU1MjNiIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGUzYzFkMDM0LTYyNzQtNWQwMy04MjMwLTI3ZWUzMThlNTIzYiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UktxRkp5cWRZcWRETUFjUEtmUW5SMmNGM3R3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT42RUpTN1Z0VDljNXdpSG1xNmlUMnJMYjB4aWY0NmpLSEJNaFdKdXNFZi84c0I2QTBHRFkvbmZyTnpkWlZ4akQ0Tm9vSTFTVzZuZ2dYVDdxVGZmV3pXVnh0Zm5WcC9qSXVGVkFybG9sMDdMc1l2bEFCT0w2MFY4YzMySXZ6Vmk5ZEJiMzlJeHdtV0l6SU5BOXhnMjl2TGlWNzc4MlNtWFpVbk8yQ3AyTGRZbHFLQXdFeS9XbEhDRjFFWVZNekpqeE9ySHo1NWhPV3hTQWswWTdYZUtSWGdvK1VMVHZxSnd2dmQ5d0gyWVZlOFk3WUFYRDlCaE9adU5CTkxNcG8rc09FbExjT25IYTgvZmdEQzJuT3h4dFU4RFVSSGpqLzRKR2pDU1JCU2UrTmg1VUdWQldpTnZoaURtNU9oRnRHY2J6NlRzN0IzSFp6N0lBVGNYNEQxOTZnbFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+aHYwR2RrOXlWUVR1YWxoNGNsZW41VWZkQU0wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PQ0hVV2FWbmUxVTBQWEFpZEljbzI3SDVzYVpmbGYyamdiMnh2QXc0V1VHWmlFUmt0UGJJdWRnRWhreU42Ny9LMlUya1A0ekFCNkZhZjhLbmtWY2s2WHBCSUhEMkpzN1Rsa244RGxjN2dLQXNiTmh2SFNWeklQbkxUelFHK0hjbFhmQTJCMHZwWk5YM3lpK1dZOUtJc1dnTXZzSXRUalRFRW55SUZqMmRaQXRRclhBclFMc2d0Tmtnb0ZpcHhpeDZxM1l0NHl5UmU3MVhXTXNldW81ZUV0VFhTOCtFS3FPUW50V0xoYzhudDJWemFtK1Z1RUVzT0YrSzl5K1FnbzBDelFHNU9udnpZMVN3UG5HclRyaHAyL09TVDJJbkV5Sk9MeEpCMWY1STNDYkYrWXlrdjJKeXNjL0ppMHlGWjJZSnlNYS9KdEN4U2t5Y01EY2RVbThNYXc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_05.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiLz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPlUraXV5SHd1R2RSMis3UDhwQWF6R2wwUldyY2VZMVJyVkUxbzFNclVZMkZ1ZVZKN1NyM1VaSi9sQkhGazI5eHU2M1VXSzFOYUFCTlV4Njg1ZFFrbzdja3ExWjJSZHZpcHREcWkyVC9meXcrVG5leTJIVHVNN0lMZk5mWlAxUEhiWkJuVXBSb3J5UXBLSEt3Q1EwRkVxKyt1QUc1RGhmVm5NMjBuQjI1MU8wUnlFd3oxTncvZ0dCUnlERDA4a2h6RTV2b21LMlVhQXZ1RnUrNWEwSUgzWU0yWTJ5ZmNUK0x4eUlHYzFnZG1KaGdVdVlFYlhnOFJhelU2R3pZbHJxcEl1TTBESXlTdUdORDByMG85M0ZMNEMzaUR4RTRjcmI5Y1p4ZC9HSjhyZE9sRkRqV2dyaVN4KzhNN3NVNlc2MUhyUUV1ZmF2R2M2RFY2OGZIZC9lRUgzUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPjcyTmUxNkN2UFpCOEhnekp3dEw3dDYrVlpUcGpEcHRNWU5ZbHB0WjR4elFJbktEUmxEUkpxN25tSlN1YVNqa3BpUFFEeHVlaVlYWGxLUFdNbTE2Z2xpYm44bjlnSnNiYmdIUDI1ZnFYdXpZelZkWWhXWmdLc3JhZjZYM2I1MURWRjQxckNIelVsT1I2WnpvNmJsblZFWW1aOUdsQzUyWVo1bGNlVkJTeGM4QnNGWFY5Nit5aU5XWnFkalVUY0wzQ0NIUjBxNVZMY3Y2Sk5HVFh3T0k0RytTblZaMWdYZ3cxWUJRUmE1U0VFOWhqQ0tXeGNsUjB2bWdPNmE4L3FHZHo2UGlpMHZZQkU3QnpNSXNkWTA1bTFDdWdZckV1STFsQ1c1QUpVMm9MdURGYks4UG8wVEdNbHE3bStSWGZqdHpvaEdMRDlHTFdwY1kvdng2MHE4T0M1ZW9pK2hTQ3Q5VFMrU0dEa0FnRGl3WDZYZFJxZHg4RUhzZDVhVlZBZ2F0eHpZZmZKRERYUkk4NHV5NHR3VERxYmhhLzBCekVGbjAvVTM3SldJbXdWZVIyL244bzNpaXVqTjhYQ0pGeHpDSlQzQU83UmJhQkJSU0lXZlE4YU1hNmFHd0dSTDJYS25mRk9kaFFuM2Rmd011S1RDMEhEdUgvZTdZVmNCYmhDOGhOZ0UrUnJHZDlSSzVmUE1LRFphNjZKbEQ1Uy9ZdEFxTGpuTElHUlZWUEtPQlhDMnViSnFRUEc5RnlPMUdEc2RYYlBxOURZRzV0NXR3NjgwcW42cnZlTTUva3dIM3JhdmsvUWs2MmU1MVY2WktkQmdKY0ZEQk1Uam83UExmNTR6cFZ2RlU4eXUxekI0VmcrWms3T2NWUi9sNTBJTjJFZzZUOStrNW9WQjhkOFhpSUN0ak10RXpDZVAxRTVIK2FYSmRTNDlKdXFkRzFtRmxCOHlvOUZXUENOY2dHMnlIL1pXTUkyNG9tbm91MmNiQ0ltNnRQUnIxZG5wdnZkL21zL3ZRN2JJekRxRllZQXhFZDVIbWw4RzY4cU0rdVl3cnpOK1gxWkVzS0V1V2lLNmFoeG8rRDRRaUJua1RuNWNJcDdFK05CbUtPb0FOT0sreDlZTnFIaWRieDd4ODVMK3prL0NRbURyOVlMTUJXUlJTWEhOM0tmYzc5VTJGWlAya3dUOTZnSXAyamovSXRXc3ZmT1VRMSs2bjVmbzNjb3F3ZjZ4WHFpNWJHcEx0OXcvNnRybkR4dkliTnJSd1ZJRGgvVit2ZW8vTGI2RTBrTTh4aHdhdDhEK3RMN1JNajNIZUgvNmp5bHY5MUZBcVEzTXJDMEc3aXlTMXpqRE45SEp2TEw4SE9FS2V2amxabm1LVHJEQmZ5WmREUXZ5UExLN2JRanM0M1RRQVVyZjQwODdYWkRSL0VQS3ZqUDBFMUlKQ1o3UU1vdDUvZG1GU3lvUjhWc0p2cGxuTml2QVBoeFhDVUd2STNYV1Q1TTVNcUtXTWVtNHpEZE96WituNGNSMnRMM2tlalQvR1ZFSURoY3pwdDQzcERmQUlqUFNiZXRLMnlzN2VmMHY0bjQyYldyQjlGZEVkMVdNeWc2V0MwVGpPVWQyckI3di92MldGeWNJakRUS1NhY2NYcUtIcTFGL3VLWVg0NVpOWXpTdjJ6dFBjWlprV1M3b2tuZmFkM1p0RDZBenhweDJJTTR3bDMrY0gvdnMvbXJzRVRXT0tMTzdPdlF1aVdEbGhrdjlhK3RycE42WURpRno5cHIwNDFXOUhkdy9ScHUyNkl3UEE4ZG1hRE5BamdrRU9GM3JoMTZQU3JidGFDTThmeG5EaXlJT29HQStUbW5PSjdIWlBuV29DdnpwcEhpK1lRN3Bwamg2QWVkRk9hNlZiU1FCQkppNmFIcFF1WUZvR1N6c1BaUnk1bFJPcEFUK0hkRm1Qd216TVU3OFpiNkRFR1c0TEdRdS9kVHpaa1Y1OUE0bm9RcktTcHdhQWRJeTV6Nmc1VGRUWUJIT3VDclhXYWR0amRtTUFOOU1seDA4NzNJZE84SXY3WU1hNk5ZL1NpM29yRnh1c200ZHhuQWZXMGg2eVZQd3pIRkRPU2NnclJxR2dpUnEvMW4wc0NpTjNlTmU1OHJYbjAxRjFVYm5jdTNTRTUvclV6aFRRRTl0Kys2K3dHREtlcGp4QkhNS05kNjJ2YXRlVkZ5N3BqMklUejM2U0pvQlRzQUJtbXZKZ3JUNmd6bkNLSjZqSmlkSmZyWitPSU52YkpsaXhzdUJzWGZPUXVTMEc0dkFBS1NDWllUSy9TQ0trTnNNNFViTVpnZkt1b3ZuRUNZazIyMG1hUzBKczd5R1phZjVndkJBRGxCODhmWFRURTBGZWQyd0pjbGxLYURVVGhBdm9tSG1FNHZXTENkRFFUcDAwbTdIR0pieWxneUFZWGtITC90dlhDcFlpT1V2ZWtzcmNubWQyNjFuR0FacXkrUWJ6TVU4eHVlMy80Si9nUXpmamo0T00xaE9JSnMrSEVLUjRxTk51YUoyb2I2NlhmZUhkV291ZkxaTUVObndpOWJ4bkR1U0lYZENnc0NHS3pYM0tnNHNYMm83QVlWeU5sNFZVL2VJTXBKR0VqL1R2R0ZxckMrMEt6MGQ5bEF4c00veFpXeTFESElzYVJrVUowbnNZS0RTQVNNalREaldhVlVMc0E0RWlTUktyS04yK0ZUZXduSXJEQjFONzJZOWEwYTJUSXNRbFY4cmZnNDhpMFNFb05SNVJ2K1JObFJWUUxHOXVZd2h4QjkrM1BsKy9YaDdDZ085Y0JrWE13TStXblhjZlAwYTYxMENZV3ZabElZV1lCY29LTE95OWFaaGVVOFNKaWZpSk9uRmREQWNkVEFWeGplSk5oSVc5Y2lVU0RJdTVwV1grSlFaMkpTQ3ZRdkFWV3lNdGxqNVoremhMRlNLUk9hQUg1R0dIK2IrZ2dIUUhmVzFJaGYxa1gzSEFPZFJKNUw4QldXVGxiems0TWcvN2QwMHVER3c4dDdtdnZrWmFtSVE3SzFPNE9yQ0pQZnNVR1hrN0tXZHF3N1ViYkhUQXZzb0wvdlJFWUVMNG02eDBRaXBQWUlPZU5UTTBnZmYwb0JsajhhRm1UTG0yaEIvVjRicWF4U2hlSWg4Q1IvZmZrNDB1dXR1RzRST05LT1prUlpKQko3MUpWNTEzM2VPMkluUHhqMHNIVHFQRjhmOXJXTEFtb283bTFUeWFUN0FibnRqUlNJMWhHSWh5VjFmSThwU1pIWDVhLzAxcVRFczNPQSt2ZlE3VUI4VkV4dkxOVXExVXB0UDJrRVVzQ2FjNFJqY1AwTHdEZDU4eE1XSUhVVXkrVURVTnhvUytJNm5RSUovZnVuckxTMnM5WXhRT1g4NGpZNTNzSlFUQTM0aUF3MzY3YzBZcjdXeENqZ0FiNUt4ZW1mTGZSQjhvRXhLQ1JnRm9xRXMzU1VKaThJeENLc2d5djFQcFgrZ3JxdVNEN1RhZ0Q3S3hWb253Qm8zM21jSXdIWk01a0kra0pmTEd6OVlPaFFLanl5cUhrZkFvVU9rUmRsN1NGSWhUR3MwTitOUmEzWFFQTjVWQzVBMG5QTXpFUHFkYnhzeU1aUkhMcGFIS24xcklacDFGanJhOUZBcTQ0Vkp6ajRpZVdtVGplSGNPa2MrR1cxVEVNQ3JzM2lXNHYyWU95aHFtUWt4L2QwQTFEbnFRS3pZV1gvZDNYNG4xTDc4Vmc1cWgydTYzVzRGMGo0cHVxWWpNalJ6R2YyVUZ6VnF6b1dvSlNiOWhTSno4K1VZY2N6eloweHFwUUw3bTlMZVNYaUxwMThkdGEwYWxsVlh5SFkwMjQ3ZnNMWGJPRGk2MG9IUitQZmhKakJaRXR6TXBFRTRuZXY0TEE1Nm9MazdxcU5ZQStwTnVlZ0lFK2labUY5QWNCRlVTYnhqVzd4cUVJY1VKTk16a3YwUUkyZWFqYVNKbHNCTTJrYlpuUHZSN3VRL2dXYmRiRUZxMVVyLzJrM2xTcjRDZExQM0szeXZtSjJtYlptejRDZjNaTVRNekU0TkhFTUdnL3VEajdKc2ttRUhsNzI2K1hyUXdWVFcyLzNha3RSRGxwL2Myb0gyamJkUE5IUUJaUjJMMGN3T29WVEIxMFl5czB2OUdIYVpCTitDOWxFNnlpRzlJdjFPV3VGQUIwWWM1OGJYaFN1cTgxWmVxejFTN2RLTTBCaWR0SGE0dk05VURxK2dBQ1huY05NdCs0MFBBNCswdDNLL1E2N3dtd2ZJZWRyclljVXpjYmREWGFUTTRpY1FNK3RPSGZQdnBRNW9hK2NPOVpxTWErV2tFK3F1aXp2RTMvUWMrUUMyZ3N2VmpXZEp3c1E2QzNISUlndHN0VC9qRS9lUmxkUEw2Si8zRko5N2tpQkQ1NDRSTFdnM3Z5dXlSMTBEWjRkU0dOUmE3aXAyOVhVVTQ5NzgrNitiSWlKUEdqdFhDSG5jYTUzNjZLTUkxMDJ0bDdrNnFpdEFLOC85UGUxb2N3UVhhTUpyb0pQdTQyQUhabWdmZXhnbXJrNEVPSDVZVmQ5a09CajVBK2JoeHgvQW81aEsrbkZUdzlmaEoxU3NyMlpkZ1U1cU9ZcDYvSEJnSnMzSm5McWZZQ3RPaFYra0xITEttbzVxUWQ2bjFMS01xbFlzblpCeVBvMDh1dVBxT20zVHRUc3NoOUJUb2xFeVNFRkZLOHYrRHNhK0wzOXlqMUNPNUVvSWQrb0RxSEJWbi9wOEV4M2pQbWI0QWRjaElYcjVBN1BtMnJoV0xXQlhDbGtLWDMvaWsrOXhCdmtuMU8yMC9zN1pwczNJTUhvN3NoTmJzMHNCcUMwbzJFY1IrdXlPS3c2RVVkWTd3VHkyS1NHMDFrWThveHlzSlp4WUMzemxQbXBvVDluTTlvWVNORFB2dGVLK1F0ajdrVWgyVEdGd3c0Mnl1VzcvMjlHL0t6UG02OHc4eFhPREZTWU4waVNsNjc0NmJKZHF1cTc1OEdEVzErTUpBQTBYZEk0bEVoVGRKdStIVlY0M1owa1A3VmNOalVGN3JqOUU2L1lZRUpPcDR3ZDB5S2Ezb3VUV3ltNVVqd3NnbUNIS3Y0VFF4azAxc1pHWmtnNFRVUS9Zc1FIS3JtNnQ0emZPM2ZObTFrcVowUzZqZFJvU1AwbVhRRjVzQ3l0cHVpWlJKdkJUaWY5UUZiQVRxR0xITHdNaDdYTE1Bdjc3UzJVYUd3Y2RieXgzdlpXU2FIbG1KMUxmVDNlWk1UY2NMNUppdm5obWlqU2JnL1ZOSkIrb0hEVTg3cThtbjNUZno5bFFiYWExakdXNUZabFU1NVkxcUZpM3NPbk1NRTRBb2lUckJ1RzBIWjk2NFNHazBMRkJaTllKb2YvTHBPbk9TcGsrU0xCbG41NWwxcEliUW5FQ2NpcVlRbUo1NnkvR0R3bDZhZXNrRzZrbWp3cTE4WGZqT0t5WXpteTFDeGt4RzdzcVphZXBtLzE4cCtBT3I4RjRBamg3NHd5MGNNMm5BNEcxclRIajM1aWZUbGtIczhueTFtSzFrWkJKR1d2RzhaMFVhU1czNmRrdzRPMHhxdEZMZThaaC80emJhTWlkMW11b3Y2eVZ6c2Q2aS9zWERkclRRVlBzaEM4VFd2WERqdHpCZVZHcjlkQzhzUjZRcWlrSVYrS21CRmJqU1VHSnZHTEIzb3FCbHY2VWlrOUI2NjMrd05MeEt2N2RHMmZBL0VQMFVrR2U2QjM3YzJGdTBXYk1QSzNpWGIxM0dmMWorYlFGWVBMTDRGMTQ3Z2hQaitCRTZVWkpSYTdrWHc5THVtenF3aXFiMGwrU3pmNFBEOEdhK29sVkUxczJNMTg2SzZNQlllQ2JxbnZKMTZ5RW1tZ29ITHhXSG5sV1ZlOXZEdUcrQjJpb2Y2WklJaEVJM0ZpM1VGZER1bmlaVFMycWZHSThjeEt0dENHTjFpTDRSZGp0bnlJM1Z1b01OSWZHYnlTM0pKM0tJU2RpeWhNek13d1U0QnFYdGxzaTJrS2pEUkxpRmtlbkxYVnNLblo1RnZmMzdueU9Va0Y3QlJ2WW92alZlRWFsRVhDQ0I4K0Ira3dzMHFxQWIxWnN6YzVaZ093WEFUeUNOVVpRMW1QbmtJeHBlYzFFOFBXMEF5SGRQYXBDSWJhTFFxc0YveC8yQThnc2I4cUtqc1ZRSDRYU2lWWERPS2luTjd6dUxoZlV4TzlRcE1JNWhYWWdKdkI3dHhyVWpFVnIyY2gwaUJBOHNTeDFuRVdJbjl4N3RZMkd1clF0bmpPVGJrdCtCLzNMaEJhUlRiaFZiTHYxUUpKcFh5cTFWOHpyNzJGYUtETGYvWis0OFllSEFpcmFmNm5DNGFORjZTV2tNckQ0Z0ptR0RZQW1LV3Mrd2phQ3BxY0x5MnRqT3hidE1KNjU0RmZNdStGb0FiQ1U2di9WZ2g1M3VuMjN2L24yeVk5NGJMQ3g0NHg1Q1c1VUc1d1VHdFB2enNtMmFFcWRLamVTZjRORVBXV0ZWZG9nT3FYOGdwTjVjOWZ5NXVsc1dKT1VsSk1DcUZ5YURiWlRuOEhibU1aQlo5amxLRVBRc2YrVDkzb2h1LzZHamNpbFdHRmJRYnpncC9MVEl3YnMrRmpRK1pjVGNzZmgyQjFTMFVGMjRuaHBWbXg2b3FJa0F4TFUxSHpDUTRta0FXV0lxdXFiL2E0cWErbHVYSGlnNkE1Y3JQeFZoTFN2UmtlaFh0Q0oybkM1M25wN3hpM3o5TXovVmRtS3BHenVHU0FsM0FSOG9aN0JYd2M1Q3JrV2xPckRBa0l0V3NNbFJtS0l0S3ZIZ2hsOVpQSEcyQ0ZpSmpTZ0ZCTTlZMlQxYzhha1hiUGVua05BdFhSZnh5UVY1dTR6WG5KWlQ1UFI1WWNTNVN5UnNqblZscDdaVGVhYWJBenFHWStuVWE1WTgzK1V1SlZHQm1VUUh1Y000djNRczFzMXdTVEFyeERzOE9md2N2bDJmeUorVTd1clhkQXkyOGdiQzdZRWpick5wMzlYQk8rL1VoaUZib1dWazZkNEJFcm9DVUhJZ1RTNGJ2eG1lbzhvQ2VTQzAyRUs3clNlalRvT1lGUkhIRzBlak9td1E3Y2JBb1VkTWNUbURpZ25WbFFXajkzRFA5S3ZGbnpvOExHdk1jMjJ2U1BIR2xYaTRrRUNpUkpPN1RJTnVzNXlROVIrRmFQQVE3MytwUXhIWjB5L2N2SmRDZmdsUmZzV0Z3MCtiTUdIeEtvVWZ2M0NEalJWRnpHTVNPVVJMVkxYRklpdi94eHNVUjRvNGRTUlpGZWJuUTNka3hDbmRMOGdRbFhDRWhHR3hONmhob00yTHZnYWxzbm0zVWFqV245c1VZOFlkTFEwcmp2TjI3eWQ0ZCtrOTk4Sm1uM2U2VStRUjVMenlDUDZKUTlXUFprYXo5Tlg4aTFtZS9ISklodUV2VHpDcVVPWmg5VndnU013OXVLV1RzeExiQlJaKzl1K1E4RVZXa0tPMkJpaVVzNWhwOUtIODBYZko2dUhKY29Pb3hIRDlzYWt6alROTWEwdlBjSk9ZeWZBRm5QVEVhTTc2UVF1SmloWHJjei92OFJHUkNkMmYrQUo3cldHY05SVlVMMHNMY25hQkZqby9TQlh6WUM0ZE80Vm44T3ZWUUFETzR6cjBHeWFoVjVHRXVEU2xzWGJmR1NTVXRwbU9UQVVyM0dCY1ZYNXNnVEFQQU1TTVZKNnNQTUpHbzVRNi9wYUFLNFppMW9ac3dhYXJ5eWlBaGticnNEcnJBMEptd1g2T2dWZnhDMW1NSnRMR3JzT0paRVlMcnRJN0R4OEZXUWJnQmVhTG9uN05qVk1scjgwNy9mc056ZDd2bkNBd3Y5L0MvK0VPbFBBQkc4akxmNmxxVHJRNncrc3ExNDRwMTV5TjM5NFZYZDVMeTRtNmc4NzhrNHNGSDhPZWtmRVFFMy8yV0NobDZLOUZSMzNwS2szamJaSXd0K1lpbWZaMFdNS0w4clplSml3RzFZcnBrejc1d25lbHcySDBndFV6OHJ3N0xLc1BKWm1QZkgwb0U3amROa0hPcVFuVS9ISk05VmIyN1p5NzZ0L3JvSmFHdFZiaXFaREM0V1g1SmlNZnZlTDhrb04rZnRudWlqWVYrZzdnQmxpZ2QzOFpMb1dDb2pRRm5DY3ZSOFRBVUpxTHR1TUpZVVZXWTdiNHR3TGNWRWR3VzByenhhU0xjTDJUU0pOMmpYZC83aW94Q0dtcW9OdjJRNjJPYWc1dU5vajQxZnlyd201aWdZL0hkd1gwUGQvNFdBMU14RjNDc090dVg3SEY3UXltVW83RC9ieXRTcWszOVZFdHh0QmZQdEVrd2diNUV1Q2xQckxjZHVxTjFEYkwrb1pGRnR1ZVhpTWx5NlR6bGg3eUFVSmNrNGNUSFNEWjdTakNwUi9DNzhPWkpjUzhMYVgwdjZ4d3NlRENxeVc4TXVUZWt4NDViWUxhT0lTbEVUWnRSeG4va1gxZEZqblZINWUrL2lBNUpJUk84NkpxeVpzQ2JWck9pWHZZbWhFTm8zVzFYQjRKd3lzOW95ejZPeVpZa1N3UXo5dENmTlphblRNZld0UmhVR2xESnM3alRoTDhGSkZGVHd1UW1qbS9Gd2RTbEZWMldxUHlDMHVtNHBHbnp4UkhQZ3p6NHBtYWZFRU1PZkU5NCswODlWZFF2SUhZajJieWt1K3gvZXBTd1ducHJSSjZ2ZW8ra2ZIbXBzS1hFRE8xYVFsS2RvRHVrVG9QT1FnTFFPUjQrNGNQblJ6WFlRSUt5cHQwakRBckp4WUxScFVybGI4VW1uYW1WRjBLbzJJSEw4UFNCNmt4RHNXUWVHV08xVWFTM3lPbEpmbUNUQXNaM0NMaUF2QjA3Rm1rWlRmQ05TVWRsZDV3LzR1ZCtKaVpLUFdyaWVpemNWSytUMnoxVSs5aytWUkl4bFRna1JFUHBsZ1FQeVJtQmpHNlR4b2JLTGRNT1NHaFBZQnRTWXlVYkkrTGJCd2lIWlptTnFnVHR2MTZKS0JKczV1R05FUUwxUjNqZGlNQ0hhZjArU0xldDgwWUpHU1h1OWQ0d08rb3NIbzJCaG54SlVNS1BieHowZ1Vqa3VrRTJLbFBBVVdpcmJkYStiU3hHTktqQzF6YmEvbFNhOVhLbW51VWI3bVFwTnBXU1QxS25jRnRlVkNUZ3B1V3dRaE05elUydHovSE1nbXNISWd4YkJvYmJ6TzFnVDlzdEY0eW9jbTZQemU2TXFsUC9TUE1BOGEzR3pyNndEbERkWXlwV2pHVWZDcDk3VFRUSU5kWGtpL0RrRFhkcFZjbnRzT1FBUS9HUW91Mjh0NFpFS0M0eUVmNnlzc0kxcE15RW5UWXdZM21EZ2xWbE1hYVJjd1BiNGVKd2tQVUhwb2pHWitzTlQzVUZVU204bXJQZVNpSEFYTUhzQll0cnJHSmpvWnYyakdjQW5Nbk5XVFBLamxxdklJcHo3UzF5dGY5ODJuaFdrc25LaEcwWW1NYWZhaUxCMGxXc1ZhNWhyeUJoQWcxRDlLQjFCeVF6bUgwWXNIam5NbVZqM0JyMm15T3RLZDIrRkpaS2pEOUtscGgxaERRTkljcE5ENnMvenZreXBDcTNTeE5CTkVsV1g1QytFUjh6TkNIMjloUTRyQnU2U09IYUlYRGpFY2EvOE5JZHJsSTRlVy8xUjduZHlTUkoydklldUZFVHg3Tnc8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_06.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_07.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4NmM4OGU2NmUtM2MwMC1lNDc3LTZhYWMtNWQ1MDEyZjk1ZTZhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDZjODhlNjZlLTNjMDAtZTQ3Ny02YWFjLTVkNTAxMmY5NWU2YSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+cVFHemJXcUNZNEdoZGdUMzBpTmlYRHlJZm9jPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT4zMmN2VzQrN0VwdXZJYVpCaG1HcjRYVGRxU0gzcXBNWWRNdFlqQk01U3dhT0QxdUw2a1NtUEFweG1SNWIyb3JkblZ2NjV5eFFybTdENnUwdUl2RFYvVUJEaDcrakVuVkowR1lkdXZsYlNMSXpjTkZybEI3QVpPT2JqMUJvZWZJeEt0dHFkcUxHckgwKzZYMnNhaU5CVnR0VUpKb29xNnVpZ05mWmpUbkY2TGJuejJReHlBeTNKeEZvTnZHQ25meGFmU25TdWdQYmhvb2tVSElvYk12UGh2Ym5ac0VVL3lEcUw0elYrREFkcm0xaHc0U28vVzcrVGpWdGNJOXFYc0x6WjJRcWsvdi8wOHdUR1AveEZnWWw5SlBmN0R4eUhBVDR0ZjNEQTFoSFhBNkVaRHdOSkdkU3FWcmJFVEwyMGF4WEk4ak1WaGVRNU54Y1dFYzcrVjFvYnc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkg0WUJITXBMdzBYZkZJdFVHSmhWdW93QWJmZlh1djhsZ1N3N1ZjbkhuWk5OWUF3U0M0dFU5Mndpd293c2E4dlRTWTZwWkxjK1hzRm1uY3NyS0ZQOW9helBKYnI4cEhqQmZTa3RJaFVkeEJtNkVTaWkzSUNub1YrQlp2aW9lbTkwOVdNRVlUb29HaXdBOEhqYVlFRDhqdTBlTzVrQ01QNE5veUROMXZWcmhTaXRWOHo1RHZpaXk3RWpPY1RIb3E4b0VQUUNGNHpRMVBldW9acWxQN0VDYlJQWWh1NlBSN01rT3dyZHE1aUluWm96OFB5Mk14TnhTaU9mUHl2c2s4MHM4SVBuTUVWNFk1R2dhdVMwYnZtcVM1RHluRWI5VHJPazdYMmE3ajE1eDZ3QlRMdzl5ZTRPcEdaRThWYU94YXFQZWJGV2w2QVEzYUp4dWkzZnJwakgrUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPkl6aWpyQUpTdHJFS21YSjZacGFSL1pZWkdidG1ybmVSUERqMHRPZnpkUkR0Q3BObGMyaHp4b1dpYXBVUjRQaWQ1ZnBCUENYa2d3ZDZXb21mWCtzaWlZNEdDclFCcmJ0c1lDTm92UFVYOGJxY1libFpYaldsVklucnpTc205RXkvNStEMjl1Mit1ZGI5ZlFGOVVxKzVzY0FSTy9HSG12Vml0N29yMDliZlVrd0p4VWNvOEtiWTRPUklraEpWWTRPdzBvVWZ3MzNxRDFzSFJ5c0VpTmdBNWxMRmF6RW9HUkcxcDg0dnFJOTdVRUkrUW1tcnFJU3grU1BKQTQzZ1pqNzRYci8yeUlnWEtVemhoSFRLQlhMc1l4M2hhQkNLeVk3WXFSZVlCenU4WUFtbVBGeU1OV1k3YjkxcDRBQ0RrU2daTHRIZFZTeVhKZGx3OVpjd0wyei9sbmFLNWcxOU1NYm5zMXVzOVZEU2l2V0s0SVJyY0EvYVBCQkhZMUZucW1DbVNzZ2hWTkNRbngvZkRlK3FHdW1iL3R5NGpLMGN5MllIeXdCaFVWa1dHYUVaa3h4Nm9YOTlsbi9WMSs3NlY3M2tLNGJ4UjFXMS9nVXB0MjRWV3Q4MUVwU2YrNlVHa3pMK2ZNd0VqT1hlcEtSVlM4b0hGV3NlSDVxOGVXTFRDQ1NaWld2Y3Vvb2txSUhZc2l5ZmkzSmVZclZxQ1hqbm0vaGdEV0UwOFpuemUzY3FlTGs2L2RBeDB4ZkU3enpreGJnQm1neEozSUExTElkK0Ztb1ZWSlpZSTNWTm9GQUdKQ21lWG9DVDRITnJJMWlLRjMwbVo2ejBuVDQ5bmxUemJyWVozNFVkbzF5S1dWZ3VKdWtVZS9qcFVraWp6Mk0vRE9RSkhLeUw5czdJZUtJc3pwL3VrOGxwUzl3aTdCUFk4eFozZ2lPbHFZdW1YVUEyaDNFUHpRQmhFY3lHYWk1M282WjBFNG5lc2NlQVVCOWI1UkFHZmJkYkptUkR0c1VGUGpvVGZENVJxV1NIUkxIbVJMVEQ0OHpqeUo2SXF0Qjk3aGVHazZhblJ4RWtzUEpvNHN5a1FSMEZJQldhSlBlZG5GaDhlakRhd1QwRGdTT21uTVpJVldRSlNWRmNoWlk1NUdtQjNkSkZNcTRUL0hOdEhOSmErdmJzZk1jQlhYQmZBamtmaS90WEVCdS9VSmFhNnVodXJwd29obi95YjM5YjcxZWNVaGdMdHY2VE1lcWJZRjVVTUxIbi9VNXIrU2dHUi8waTYwYUhieUo0Q1BhTHhlZnJGOFByZHI4S05hZ1FmM05EaVY2d3RZVE1tM1FZWWhZME9VMzRxcldxaWFmeXVIc0tLb04yYnN4dForaitjeS9TY0VhcGtPWlNndVJ3bzlTdTJNU0hxWUJxVExhdmp3RktsUkt5d2ZPcklzbFBTZFBsU0pHV1B4RloyWng5TnhGUGRpaTJvamFBNE0rbU9jVTlTR2duMUZ5K2srUEdoMm9PTS83ZEwrVkhEUzUwRndXN3RZekZxWHdOUFNiRFNDZ2JGUWNmVVptSjFzbDVGN25qQWxjN1BCZ21JYmRiR3JiNU05TFF0eXFEYVRFdlpDRDA2cVNKQ3Z5K1BLWEdxaGl5UUdaVTVhNzJudnRPKzRhaGd1TS9CMTgzcVduejFOOVd5SG1BWUJrUlRYMGxKdVZrd2R5RDloOHRZMWkwbERKS1dYQmVxdTJQNkhPZTBJSFp3ZzJXKzBzcWxaYU9hbGhjYWMwZ09uUHN6YStHWmcrZzdrdDhHUmR2MEpnSTZ1MkFKRW43S1lDNVAzN1NGOEUyK1YrVUtCK0NTa1FqWmV6b0JFR0FDKzRPOXpCN1VvUHZCTU9ZTlVvaGNueDF4KzNuSitFcUYyZ1JlVnZPWFc1a0NIYml3WWVKZDFmam9uUjBkY3AxQkhadUlPYUdOdnJERTJCb3NXOFo5R2NKNDl1SGZoN01MYnY5VzZ4MEVvRVNKalVhYUtQaGxPV2tYRi9oU005cW9OZUpzOCt3Q1FpK1l4RFJJbEwwc0gzN0IyK0VMN1hLOWkwR0s2SGU0WE9pUDY3OElYRU1WNjc2d3dzL2xUSllOV3h2b3pObkVDS1ZDNTlPRjZTNHN3NkhFK0VMZnhGai9BcVpMZ05vbFVNOVRENzVGTWUzV2QvdWxEN2QwTUpjaWVIcXJRUytJVnRJb0d2TkpTUHFXQUFKM0c1dWJ2enhqNmx1UWxQS05iVG4vTzV3SUJLMGtKaHhHNEhjNFdYNWEvVERocjltK0M0SXhmTmRZem4yNHJjckMvdTJTcjR6dzBZbElQM3hsTXFDTldpdThLbDY5eHczeEJrS0xmQWNtUDQ3alFqbFp1bW5vVldIMHI3TmVmbTVkYTc2ZG5kTm1nc2svbjQ5K09OL3NjdFVLWUVEN2VXWHdQcnpUK3dIUktBVC8vZGtxK1k4RGVqZ04yek9SSU1Qb2NpMFNXMUJtUnZIOXpseE1Zdkg0N1N1UkhqNi93V2pEUWFrSkQ2TXdRbGU2NHV6OENhVDFJdS9OenBCN1c5VWVFUWdETVVFOEFCMWxRNVdHR2M1cEN6YVhNM0h0SDA4K3h2NEtzTGtDUWpDV0NJclNjMll2OFlBSVB1WUlQM0hxaGNVeVBESmVjVnF5bjNrUUtzbXZxTlBrYS9lWGJVbkdsVmxOOW92OStWWjA3OGtvSUQvUE81SkNhZE1VbFRpVnZUVERkamVabUFxMTdRWTVwTGx2dE9PaktJUHF5aHROSEliQTlKbXc1YUYvcTZqREdWSlZOL3FLSzg2Z2tpTysvNW9HSGJpQkpDK2lSQUkzNUZvVjVXdExHTWVpSm9RbVJsUkRaZERSNWVDcVNtc3hZdWlXVW43RC9BdWFSN0U4elBDMEZ3RmRzQ1k4SzZNNlZsN01KcTFJK094YTdnZHRLS09IekV3ZXdVcDQ5WTNvM0RlT0ZVRjAwZy9rem9xV3gzVHB0MWZNL3hFU25RN3RZcCsrR2Y1UkNobFRQYkVZMWhNSCtiREZ5UkhHazltbGN1NXllMTRldi9aTkRoSUowZ0wxV3daQittN0xmMktBek1VY1BVU3ZzK1NyeEkvVVdwSnEvSWs1bzlpVWRlcjZET2FEd2FLLzhYREcxZWtNSXlZcXpXN3ppcHVFSmZzQWp1Ujl5ZFRhVjRGQVVUYy81dHR6TDBWd1FBUU9MQi9GNGRSNHhuSGJoOXE3K0ZFREN3K0Rjc3hvZ3BjTi9FL1FnMll0UDNPbnNZTXorczZkYmhjMys0bGlRWFBiTU82R043ait6SDczdUhNMHZTWWswL3lSV051Q2dxMVBxTVhUblN6Q0pnNldLMFhnelpHN29ieW5ycjh5ZStINXN3T1pVYnQzQ0FzaG02aXVsQk9FbXRSbkdVam4wR2o5UGxVRHBoVnd5RFZFaThTS1hKK29oaEdVdW1CQWJUR2JLMTQzbG0yU0xGMXBFbFVOMEZFcjBucU9GRzhiRDdIZlRPOHU3bitNSC9aSEFNMlpBdkk2dGJCbGJOV2NOWm5oUUcrWmFTTXVicWJNRWdBOEtFdHNWQ2pUaXluS0xWSXJBS1YzY3J4VHpJcFJQTjhTdXNpSGJUWFZCNHo2dUQycnowVTZEUjRiSGxsRzlxZzRlUnBlNjNiMXQxZnE0UWdtaUNQVkE1YTVKTzhlSGdoK3JOZ3cxL2tVTjAzWkVUeXJVVFF0N0tOc2E2TGplRno2ZUpUUEppT284ZlZ4ZFlNNzJ0cTNvRWpxRWE3Z09jRFhMeGlGWlYxYXlhSHI4VGlJQ0g3WFZVYVg3bkdXWjYyUUM3VGpNRlp5bytEemZxSHZOa1BLY0xTUncrWktuY2lCaGQzdXRSMHZsOVJVWEdZYkNTVmpuV2JuUVZZN0RTMEZyS1hqd2t2T29lK0NYKzgvTmM0MkV5TnpNZmxsaW5YdU9JV2I0OGNtZ3lPT2xCMzhBRGs4bTlvNWJsYWJVbG1FRE4xNi9YblhkaytXcksxQmJNUzdqMUZhWU95NTVSakdCRlVTVHZHaUl1V2pFQ3FtdWkzYlpDWW0zRExMdGFFUEg2Uy8wWCtTRWcwaGt0T2E0ZzRNM1FJdURCdUg3dWxYTXh6c2gzY3U4dGJSWklSQjdtdEladjBVaGJORUJodUQwQU9kWjZnbEpzc0tQSUhpRlNpUHFvVjBMelpaVTZqZFQvQlZBTlA5SE5BVDFQWTU1SUR3OFRIcmtDdDRIcWc2WU8zSjVSa3FibjJvU2h2QkcvOTNwblQ5Vy80VWE4ZG9RUXdsanl2UDFpWUw3SzFDRndHR045dGRSK25UK0ZwWWV6QjdxZEU4ZS9RNDkvc0QrYklLVTNycVRWZmUzQTZwRVNlekZJbzBsaUg3eVU0Y3BFQjFNdGhubkRhRkdINE9FaDJvckNMam5KOEhXL1NMdEVBUThnWHE4cWpqVTBHdFdITFVFejRIQmZSOGVNWjJXb1NBdUx2WUNHWW5sRUtMZmhTVTNtdUtIR0ppeDdRRzJRNktGT3liTkxqL0hGcm95MnlhQUVHY3hXeG5lWUNqVkpDZktrVkhoajBEOVo4eGFWaGk5TW8wdFdBQzV1Y0Zrc25zRzQvYjNBRVlaSHRHSFg2SUFCdmFDbERTQm02MzhsQlRtRGFnYVlTMmpxOGQ5WTdEYWQ0OU5Yb1ZxQm5yaUszOWgvUHZrNXdDcW50U2M0WDBuQ2hzb3hKS2c4Yk41cm1SSGZYbUV2azNsang0WVhhOVZxVlNnZ2k1b3M4T3R3a2tkYWlBM1BDbVNUMVR3N3JOK0hCOUM0MzYyUTN1aUlYa0d6TmljRjdCRkM4NEVQN1lpdUJVWUswVkVmL3g2eDcxT3kyVzVjdXdxem9sSm9scDhVdXAyQldWYjZXSC9VcTZnd0ZQOCtWRWREKzRyeTlvRmhQMXo0Y2RnTy95eEd3MFl3dFhhUGU2ZkdsTVJSdTNYelVZbWI3cTU1RUUveGFvcFppNEd2TGdiV215L3JQVnVuZHhIeHVLZm0vejc0WjlCbnZsN0x1WTV5RnB0Syt2Wm1WY25hejFxUXZocTBxMklEREdRQ3IxOW9UdVNwZGo1TUdwM3hDL2FSdE9lbFA4THZzYlRnS3lRRHNzTVVrM2psL0dIV2svQWRzZ0lPSko3YmxjZzcwZnB2WU04ajhsL0hxS0txenp2Wlp3emJSNFFhbGt2b01iZ0ZjQVMrcXlzV3lYR05NQUxpOFpmcWZxK3pTbHpwOEhPMGsxNWlHRnhmZTYzdW9xUUxETEt0dUJrZlBDNndGZDJqekNYZThrNFBHczZSMDdtcmM3dUIxZWZuWlRsYkxyMGhIcDhuYkpyZHRuRUN3Mi9tQ0NsVDVQUys1Yzc5VjlZaGI5ZmpyMGlNeVF5c0p5WlZ4MW56R1JnQzdxaUxnbEVHWHF4cDFqMFowZU5YcEFlOUMrVTNiQVJ5Q0dYb25JekQ2cGFTNExhalNtcU1iWmxHbHhSRTRFd2EvTWlaWHFQb2V1ZEpkWWx6OUN6VmxRTzJvU1Z5Vy9YOGpNY2pmeVlXNXI0UG91akZMc2tNMnBFWUJaZDdtUHlyR2xseEd3S0hjUjhWUndaN09iWWRibzlCd1BqY3dtNWhHSitncWJuV2MwdXFPK1NDQUQvRzVRRmVrUHFZMDlXZHBNdEhJcC93cnlOY2syK202Q0pTeDlsYUdYTTc4dW9Cc29udjNuSHBXWWdrQVVzTzNSRHczN2pOZS8rYmsyYktsPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_08.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDhkODRiYWEtZDE4Yi0wMDY0LWZkZGUtNzRjZGU2ZjFkYjM5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA4ZDg0YmFhLWQxOGItMDA2NC1mZGRlLTc0Y2RlNmYxZGIzOSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UUpydVQvQmNYT1Rvcm1aS2xaWmVnMmRKVWtnPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5oYW9lVm93OUU5MjhpZkZTeE4rRVNDaStyamJwaUVFcUUwZ3ZJR3ZJZVZHdytxcStsNXl6ODZCMlMrdmk5YWNlTUlTRmE0djhiZDFkM0EvVVhhTUdqUVE5eHVLd3VrSjVxZEFXUnYxK29WcjNhWk1VOTRTaFpBWVBDT1BIZWF2VFk5Y3E4ZVZoQnRPSFNoM1VYWCtJOE9ERjNJeVVnQ0szUkNGT3Q0QnZyVmxZVGVPWTZxSytma25EYVI2eEV3U1MraU9BTjMraW9Pa2xWeG1qa1dzeDhpTlZ6NDQydnB6cWdubXB3bWRwdUF6ck1JbVdIckZxRGtZYnRoWVN2Ky9FWUl6UlYyb2tQNlRMQ0Jub0ZnQnYxUVJzTlN6MVFiT1l3czQ3aFFJUnhsTGhGeVROa0V1NmtZdEdQOEZoYytaeUpQUGpVN2pWMVVrSnB2Q2FBcVZwY2c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_09.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDllYWIwMjMtNzc3YS1jYzQ2LWQ2OGYtZDhiYzM5MTJjOWY2IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA5ZWFiMDIzLTc3N2EtY2M0Ni1kNjhmLWQ4YmMzOTEyYzlmNiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+VURibXI2ODQyVXBMWks0SU44c1lJeWovTkN3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5kQStsZW1uV1g5c1lDVUpRK05xanJYdjg4eklZR1l5UkV0WEJTQStaMzlOUXNvSG9CNlZwUGN5a3RQWCtwMnppd0IvNUhlV0Z5Vko4Y0xkRU1aeXMzQ0pYaGJBTlFOTXdaUW9FRW9PU3c5SVFGT2xSTkIvV1NYUEtDUkw2MGZwclRCNkpuV28xUS9iNHpydGQvZ2JKRkdvaVpNRHN3Snc1c2xMOC8yMlZJcUt5ejYrWnJpQlBDSEN4WmtENWprbHAwM2Y5eEhyQmx6MXZSdVNYWFlBTmdrbDBDa3JYM0NwN2d2QlJIL1RpTmRuaVppckpxaVA1bnpRSEZMeXByelRGMW45S0MzZGJCeHRHNUluOWNBT2plYnlhRTNsQVBJalVxMm10eDZJdzZ3S1RtdDh3a0pzWGk5R0dISjlVaDd0SnVNZmduQnBqOTZ2UWlZNG5Oby9pc3c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiLz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPlUraXV5SHd1R2RSMis3UDhwQWF6R2wwUldyY2VZMVJyVkUxbzFNclVZMkZ1ZVZKN1NyM1VaSi9sQkhGazI5eHU2M1VXSzFOYUFCTlV4Njg1ZFFrbzdja3ExWjJSZHZpcHREcWkyVC9meXcrVG5leTJIVHVNN0lMZk5mWlAxUEhiWkJuVXBSb3J5UXBLSEt3Q1EwRkVxKyt1QUc1RGhmVm5NMjBuQjI1MU8wUnlFd3oxTncvZ0dCUnlERDA4a2h6RTV2b21LMlVhQXZ1RnUrNWEwSUgzWU0yWTJ5ZmNUK0x4eUlHYzFnZG1KaGdVdVlFYlhnOFJhelU2R3pZbHJxcEl1TTBESXlTdUdORDByMG85M0ZMNEMzaUR4RTRjcmI5Y1p4ZC9HSjhyZE9sRkRqV2dyaVN4KzhNN3NVNlc2MUhyUUV1ZmF2R2M2RFY2OGZIZC9lRUgzUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPjcyTmUxNkN2UFpCOEhnekp3dEw3dDYrVlpUcGpEcHRNWU5ZbHB0WjR4elFJbktEUmxEUkpxN25tSlN1YVNqa3BpUFFEeHVlaVlYWGxLUFdNbTE2Z2xpYm44bjlnSnNiYmdIUDI1ZnFYdXpZelZkWWhXWmdLc3JhZjZYM2I1MURWRjQxckNIelVsT1I2WnpvNmJsblZFWW1aOUdsQzUyWVo1bGNlVkJTeGM4QnNGWFY5Nit5aU5XWnFkalVUY0wzQ0NIUjBxNVZMY3Y2Sk5HVFh3T0k0RytTblZaMWdYZ3cxWUJRUmE1U0VFOWhqQ0tXeGNsUjB2bWdPNmE4L3FHZHo2UGlpMHZZQkU3QnpNSXNkWTA1bTFDdWdZckV1STFsQ1c1QUpVMm9MdURGYks4UG8wVEdNbHE3bStSWGZqdHpvaEdMRDlHTFdwY1kvdng2MHE4T0M1ZW9pK2hTQ3Q5VFMrU0dEa0FnRGl3WDZYZFJxZHg4RUhzZDVhVlZBZ2F0eHpZZmZKRERYUkk4NHV5NHR3VERxYmhhLzBCekVGbjAvVTM3SldJbXdWZVIyL244bzNpaXVqTjhYQ0pGeHpDSlQzQU83UmJhQkJSU0lXZlE4YU1hNmFHd0dSTDJYS25mRk9kaFFuM2Rmd011S1RDMEhEdUgvZTdZVmNCYmhDOGhOZ0UrUnJHZDlSSzVmUE1LRFphNjZKbEQ1Uy9ZdEFxTGpuTElHUlZWUEtPQlhDMnViSnFRUEc5RnlPMUdEc2RYYlBxOURZRzV0NXR3NjgwcW42cnZlTTUva3dIM3JhdmsvUWs2MmU1MVY2WktkQmdKY0ZEQk1Uam83UExmNTR6cFZ2RlU4eXUxekI0VmcrWms3T2NWUi9sNTBJTjJFZzZUOStrNW9WQjhkOFhpSUN0ak10RXpDZVAxRTVIK2FYSmRTNDlKdXFkRzFtRmxCOHlvOUZXUENOY2dHMnlIL1pXTUkyNG9tbm91MmNiQ0ltNnRQUnIxZG5wdnZkL21zL3ZRN2JJekRxRllZQXhFZDVIbWw4RzY4cU0rdVl3cnpOK1gxWkVzS0V1V2lLNmFoeG8rRDRRaUJua1RuNWNJcDdFK05CbUtPb0FOT0sreDlZTnFIaWRieDd4ODVMK3prL0NRbURyOVlMTUJXUlJTWEhOM0tmYzc5VTJGWlAya3dUOTZnSXAyamovSXRXc3ZmT1VRMSs2bjVmbzNjb3F3ZjZ4WHFpNWJHcEx0OXcvNnRybkR4dkliTnJSd1ZJRGgvVit2ZW8vTGI2RTBrTTh4aHdhdDhEK3RMN1JNajNIZUgvNmp5bHY5MUZBcVEzTXJDMEc3aXlTMXpqRE45SEp2TEw4SE9FS2V2amxabm1LVHJEQmZ5WmREUXZ5UExLN2JRanM0M1RRQVVyZjQwODdYWkRSL0VQS3ZqUDBFMUlKQ1o3UU1vdDUvZG1GU3lvUjhWc0p2cGxuTml2QVBoeFhDVUd2STNYV1Q1TTVNcUtXTWVtNHpEZE96WituNGNSMnRMM2tlalQvR1ZFSURoY3pwdDQzcERmQUlqUFNiZXRLMnlzN2VmMHY0bjQyYldyQjlGZEVkMVdNeWc2V0MwVGpPVWQyckI3di92MldGeWNJakRUS1NhY2NYcUtIcTFGL3VLWVg0NVpOWXpTdjJ6dFBjWlprV1M3b2tuZmFkM1p0RDZBenhweDJJTTR3bDMrY0gvdnMvbXJzRVRXT0tMTzdPdlF1aVdEbGhrdjlhK3RycE42WURpRno5cHIwNDFXOUhkdy9ScHUyNkl3UEE4ZG1hRE5BamdrRU9GM3JoMTZQU3JidGFDTThmeG5EaXlJT29HQStUbW5PSjdIWlBuV29DdnpwcEhpK1lRN3Bwamg2QWVkRk9hNlZiU1FCQkppNmFIcFF1WUZvR1N6c1BaUnk1bFJPcEFUK0hkRm1Qd216TVU3OFpiNkRFR1c0TEdRdS9kVHpaa1Y1OUE0bm9RcktTcHdhQWRJeTV6Nmc1VGRUWUJIT3VDclhXYWR0amRtTUFOOU1seDA4NzNJZE84SXY3WU1hNk5ZL1NpM29yRnh1c200ZHhuQWZXMGg2eVZQd3pIRkRPU2NnclJxR2dpUnEvMW4wc0NpTjNlTmU1OHJYbjAxRjFVYm5jdTNTRTUvclV6aFRRRTl0Kys2K3dHREtlcGp4QkhNS05kNjJ2YXRlVkZ5N3BqMklUejM2U0pvQlRzQUJtbXZKZ3JUNmd6bkNLSjZqSmlkSmZyWitPSU52YkpsaXhzdUJzWGZPUXVTMEc0dkFBS1NDWllUSy9TQ0trTnNNNFViTVpnZkt1b3ZuRUNZazIyMG1hUzBKczd5R1phZjVndkJBRGxCODhmWFRURTBGZWQyd0pjbGxLYURVVGhBdm9tSG1FNHZXTENkRFFUcDAwbTdIR0pieWxneUFZWGtITC90dlhDcFlpT1V2ZWtzcmNubWQyNjFuR0FacXkrUWJ6TVU4eHVlMy80Si9nUXpmamo0T00xaE9JSnMrSEVLUjRxTk51YUoyb2I2NlhmZUhkV291ZkxaTUVObndpOWJ4bkR1U0lYZENnc0NHS3pYM0tnNHNYMm83QVlWeU5sNFZVL2VJTXBKR0VqL1R2R0ZxckMrMEt6MGQ5bEF4c00veFpXeTFESElzYVJrVUowbnNZS0RTQVNNalREaldhVlVMc0E0RWlTUktyS04yK0ZUZXduSXJEQjFONzJZOWEwYTJUSXNRbFY4cmZnNDhpMFNFb05SNVJ2K1JObFJWUUxHOXVZd2h4QjkrM1BsKy9YaDdDZ085Y0JrWE13TStXblhjZlAwYTYxMENZV3ZabElZV1lCY29LTE95OWFaaGVVOFNKaWZpSk9uRmREQWNkVEFWeGplSk5oSVc5Y2lVU0RJdTVwV1grSlFaMkpTQ3ZRdkFWV3lNdGxqNVoremhMRlNLUk9hQUg1R0dIK2IrZ2dIUUhmVzFJaGYxa1gzSEFPZFJKNUw4QldXVGxiems0TWcvN2QwMHVER3c4dDdtdnZrWmFtSVE3SzFPNE9yQ0pQZnNVR1hrN0tXZHF3N1ViYkhUQXZzb0wvdlJFWUVMNG02eDBRaXBQWUlPZU5UTTBnZmYwb0JsajhhRm1UTG0yaEIvVjRicWF4U2hlSWg4Q1IvZmZrNDB1dXR1RzRST05LT1prUlpKQko3MUpWNTEzM2VPMkluUHhqMHNIVHFQRjhmOXJXTEFtb283bTFUeWFUN0FibnRqUlNJMWhHSWh5VjFmSThwU1pIWDVhLzAxcVRFczNPQSt2ZlE3VUI4VkV4dkxOVXExVXB0UDJrRVVzQ2FjNFJqY1AwTHdEZDU4eE1XSUhVVXkrVURVTnhvUytJNm5RSUovZnVuckxTMnM5WXhRT1g4NGpZNTNzSlFUQTM0aUF3MzY3YzBZcjdXeENqZ0FiNUt4ZW1mTGZSQjhvRXhLQ1JnRm9xRXMzU1VKaThJeENLc2d5djFQcFgrZ3JxdVNEN1RhZ0Q3S3hWb253Qm8zM21jSXdIWk01a0kra0pmTEd6OVlPaFFLanl5cUhrZkFvVU9rUmRsN1NGSWhUR3MwTitOUmEzWFFQTjVWQzVBMG5QTXpFUHFkYnhzeU1aUkhMcGFIS24xcklacDFGanJhOUZBcTQ0Vkp6ajRpZVdtVGplSGNPa2MrR1cxVEVNQ3JzM2lXNHYyWU95aHFtUWt4L2QwQTFEbnFRS3pZV1gvZDNYNG4xTDc4Vmc1cWgydTYzVzRGMGo0cHVxWWpNalJ6R2YyVUZ6VnF6b1dvSlNiOWhTSno4K1VZY2N6eloweHFwUUw3bTlMZVNYaUxwMThkdGEwYWxsVlh5SFkwMjQ3ZnNMWGJPRGk2MG9IUitQZmhKakJaRXR6TXBFRTRuZXY0TEE1Nm9MazdxcU5ZQStwTnVlZ0lFK2labUY5QWNCRlVTYnhqVzd4cUVJY1VKTk16a3YwUUkyZWFqYVNKbHNCTTJrYlpuUHZSN3VRL2dXYmRiRUZxMVVyLzJrM2xTcjRDZExQM0szeXZtSjJtYlptejRDZjNaTVRNekU0TkhFTUdnL3VEajdKc2ttRUhsNzI2K1hyUXdWVFcyLzNha3RSRGxwL2Myb0gyamJkUE5IUUJaUjJMMGN3T29WVEIxMFl5czB2OUdIYVpCTitDOWxFNnlpRzlJdjFPV3VGQUIwWWM1OGJYaFN1cTgxWmVxejFTN2RLTTBCaWR0SGE0dk05VURxK2dBQ1huY05NdCs0MFBBNCswdDNLL1E2N3dtd2ZJZWRyclljVXpjYmREWGFUTTRpY1FNK3RPSGZQdnBRNW9hK2NPOVpxTWErV2tFK3F1aXp2RTMvUWMrUUMyZ3N2VmpXZEp3c1E2QzNISUlndHN0VC9qRS9lUmxkUEw2Si8zRko5N2tpQkQ1NDRSTFdnM3Z5dXlSMTBEWjRkU0dOUmE3aXAyOVhVVTQ5NzgrNitiSWlKUEdqdFhDSG5jYTUzNjZLTUkxMDJ0bDdrNnFpdEFLOC85UGUxb2N3UVhhTUpyb0pQdTQyQUhabWdmZXhnbXJrNEVPSDVZVmQ5a09CajVBK2JoeHgvQW81aEsrbkZUdzlmaEoxU3NyMlpkZ1U1cU9ZcDYvSEJnSnMzSm5McWZZQ3RPaFYra0xITEttbzVxUWQ2bjFMS01xbFlzblpCeVBvMDh1dVBxT20zVHRUc3NoOUJUb2xFeVNFRkZLOHYrRHNhK0wzOXlqMUNPNUVvSWQrb0RxSEJWbi9wOEV4M2pQbWI0QWRjaElYcjVBN1BtMnJoV0xXQlhDbGtLWDMvaWsrOXhCdmtuMU8yMC9zN1pwczNJTUhvN3NoTmJzMHNCcUMwbzJFY1IrdXlPS3c2RVVkWTd3VHkyS1NHMDFrWThveHlzSlp4WUMzemxQbXBvVDluTTlvWVNORFB2dGVLK1F0ajdrVWgyVEdGd3c0Mnl1VzcvMjlHL0t6UG02OHc4eFhPREZTWU4waVNsNjc0NmJKZHF1cTc1OEdEVzErTUpBQTBYZEk0bEVoVGRKdStIVlY0M1owa1A3VmNOalVGN3JqOUU2L1lZRUpPcDR3ZDB5S2Ezb3VUV3ltNVVqd3NnbUNIS3Y0VFF4azAxc1pHWmtnNFRVUS9Zc1FIS3JtNnQ0emZPM2ZObTFrcVowUzZqZFJvU1AwbVhRRjVzQ3l0cHVpWlJKdkJUaWY5UUZiQVRxR0xITHdNaDdYTE1Bdjc3UzJVYUd3Y2RieXgzdlpXU2FIbG1KMUxmVDNlWk1UY2NMNUppdm5obWlqU2JnL1ZOSkIrb0hEVTg3cThtbjNUZno5bFFiYWExakdXNUZabFU1NVkxcUZpM3NPbk1NRTRBb2lUckJ1RzBIWjk2NFNHazBMRkJaTllKb2YvTHBPbk9TcGsrU0xCbG41NWwxcEliUW5FQ2NpcVlRbUo1NnkvR0R3bDZhZXNrRzZrbWp3cTE4WGZqT0t5WXpteTFDeGt4RzdzcVphZXBtLzE4cCtBT3I4RjRBamg3NHd5MGNNMm5BNEcxclRIajM1aWZUbGtIczhueTFtSzFrWkJKR1d2RzhaMFVhU1czNmRrdzRPMHhxdEZMZThaaC80emJhTWlkMW11b3Y2eVZ6c2Q2aS9zWERkclRRVlBzaEM4VFd2WERqdHpCZVZHcjlkQzhzUjZRcWlrSVYrS21CRmJqU1VHSnZHTEIzb3FCbHY2VWlrOUI2NjMrd05MeEt2N2RHMmZBL0VQMFVrR2U2QjM3YzJGdTBXYk1QSzNpWGIxM0dmMWorYlFGWVBMTDRGMTQ3Z2hQaitCRTZVWkpSYTdrWHc5THVtenF3aXFiMGwrU3pmNFBEOEdhK29sVkUxczJNMTg2SzZNQlllQ2JxbnZKMTZ5RW1tZ29ITHhXSG5sV1ZlOXZEdUcrQjJpb2Y2WklJaEVJM0ZpM1VGZER1bmlaVFMycWZHSThjeEt0dENHTjFpTDRSZGp0bnlJM1Z1b01OSWZHYnlTM0pKM0tJU2RpeWhNek13d1U0QnFYdGxzaTJrS2pEUkxpRmtlbkxYVnNLblo1RnZmMzdueU9Va0Y3QlJ2WW92alZlRWFsRVhDQ0I4K0Ira3dzMHFxQWIxWnN6YzVaZ093WEFUeUNOVVpRMW1QbmtJeHBlYzFFOFBXMEF5SGRQYXBDSWJhTFFxc0YveC8yQThnc2I4cUtqc1ZRSDRYU2lWWERPS2luTjd6dUxoZlV4TzlRcE1JNWhYWWdKdkI3dHhyVWpFVnIyY2gwaUJBOHNTeDFuRVdJbjl4N3RZMkd1clF0bmpPVGJrdCtCLzNMaEJhUlRiaFZiTHYxUUpKcFh5cTFWOHpyNzJGYUtETGYvWis0OFllSEFpcmFmNm5DNGFORjZTV2tNckQ0Z0ptR0RZQW1LV3Mrd2phQ3BxY0x5MnRqT3hidE1KNjU0RmZNdStGb0FiQ1U2di9WZ2g1M3VuMjN2L24yeVk5NGJMQ3g0NHg1Q1c1VUc1d1VHdFB2enNtMmFFcWRLamVTZjRORVBXV0ZWZG9nT3FYOGdwTjVjOWZ5NXVsc1dKT1VsSk1DcUZ5YURiWlRuOEhibU1aQlo5amxLRVBRc2YrVDkzb2h1LzZHamNpbFdHRmJRYnpncC9MVEl3YnMrRmpRK1pjVGNzZmgyQjFTMFVGMjRuaHBWbXg2b3FJa0F4TFUxSHpDUTRta0FXV0lxdXFiL2E0cWErbHVYSGlnNkE1Y3JQeFZoTFN2UmtlaFh0Q0oybkM1M25wN3hpM3o5TXovVmRtS3BHenVHU0FsM0FSOG9aN0JYd2M1Q3JrV2xPckRBa0l0V3NNbFJtS0l0S3ZIZ2hsOVpQSEcyQ0ZpSmpTZ0ZCTTlZMlQxYzhha1hiUGVua05BdFhSZnh5UVY1dTR6WG5KWlQ1UFI1WWNTNVN5UnNqblZscDdaVGVhYWJBenFHWStuVWE1WTgzK1V1SlZHQm1VUUh1Y000djNRczFzMXdTVEFyeERzOE9md2N2bDJmeUorVTd1clhkQXkyOGdiQzdZRWpick5wMzlYQk8rL1VoaUZib1dWazZkNEJFcm9DVUhJZ1RTNGJ2eG1lbzhvQ2VTQzAyRUs3clNlalRvT1lGUkhIRzBlak9td1E3Y2JBb1VkTWNUbURpZ25WbFFXajkzRFA5S3ZGbnpvOExHdk1jMjJ2U1BIR2xYaTRrRUNpUkpPN1RJTnVzNXlROVIrRmFQQVE3MytwUXhIWjB5L2N2SmRDZmdsUmZzV0Z3MCtiTUdIeEtvVWZ2M0NEalJWRnpHTVNPVVJMVkxYRklpdi94eHNVUjRvNGRTUlpGZWJuUTNka3hDbmRMOGdRbFhDRWhHR3hONmhob00yTHZnYWxzbm0zVWFqV245c1VZOFlkTFEwcmp2TjI3eWQ0ZCtrOTk4Sm1uM2U2VStRUjVMenlDUDZKUTlXUFprYXo5Tlg4aTFtZS9ISklodUV2VHpDcVVPWmg5VndnU013OXVLV1RzeExiQlJaKzl1K1E4RVZXa0tPMkJpaVVzNWhwOUtIODBYZko2dUhKY29Pb3hIRDlzYWt6alROTWEwdlBjSk9ZeWZBRm5QVEVhTTc2UVF1SmloWHJjei92OFJHUkNkMmYrQUo3cldHY05SVlVMMHNMY25hQkZqby9TQlh6WUM0ZE80Vm44T3ZWUUFETzR6cjBHeWFoVjVHRXVEU2xzWGJmR1NTVXRwbU9UQVVyM0dCY1ZYNXNnVEFQQU1TTVZKNnNQTUpHbzVRNi9wYUFLNFppMW9ac3dhYXJ5eWlBaGticnNEcnJBMEptd1g2T2dWZnhDMW1NSnRMR3JzT0paRVlMcnRJN0R4OEZXUWJnQmVhTG9uN05qVk1scjgwNy9mc056ZDd2bkNBd3Y5L0MvK0VPbFBBQkc4akxmNmxxVHJRNncrc3ExNDRwMTV5TjM5NFZYZDVMeTRtNmc4NzhrNHNGSDhPZWtmRVFFMy8yV0NobDZLOUZSMzNwS2szamJaSXd0K1lpbWZaMFdNS0w4clplSml3RzFZcnBrejc1d25lbHcySDBndFV6OHJ3N0xLc1BKWm1QZkgwb0U3amROa0hPcVFuVS9ISk05VmIyN1p5NzZ0L3JvSmFHdFZiaXFaREM0V1g1SmlNZnZlTDhrb04rZnRudWlqWVYrZzdnQmxpZ2QzOFpMb1dDb2pRRm5DY3ZSOFRBVUpxTHR1TUpZVVZXWTdiNHR3TGNWRWR3VzByenhhU0xjTDJUU0pOMmpYZC83aW94Q0dtcW9OdjJRNjJPYWc1dU5vajQxZnlyd201aWdZL0hkd1gwUGQvNFdBMU14RjNDc090dVg3SEY3UXltVW83RC9ieXRTcWszOVZFdHh0QmZQdEVrd2diNUV1Q2xQckxjZHVxTjFEYkwrb1pGRnR1ZVhpTWx5NlR6bGg3eUFVSmNrNGNUSFNEWjdTakNwUi9DNzhPWkpjUzhMYVgwdjZ4d3NlRENxeVc4TXVUZWt4NDViWUxhT0lTbEVUWnRSeG4va1gxZEZqblZINWUrL2lBNUpJUk84NkpxeVpzQ2JWck9pWHZZbWhFTm8zVzFYQjRKd3lzOW95ejZPeVpZa1N3UXo5dENmTlphblRNZld0UmhVR2xESnM3alRoTDhGSkZGVHd1UW1qbS9Gd2RTbEZWMldxUHlDMHVtNHBHbnp4UkhQZ3p6NHBtYWZFRU1PZkU5NCswODlWZFF2SUhZajJieWt1K3gvZXBTd1ducHJSSjZ2ZW8ra2ZIbXBzS1hFRE8xYVFsS2RvRHVrVG9QT1FnTFFPUjQrNGNQblJ6WFlRSUt5cHQwakRBckp4WUxScFVybGI4VW1uYW1WRjBLbzJJSEw4UFNCNmt4RHNXUWVHV08xVWFTM3lPbEpmbUNUQXNaM0NMaUF2QjA3Rm1rWlRmQ05TVWRsZDV3LzR1ZCtKaVpLUFdyaWVpemNWSytUMnoxVSs5aytWUkl4bFRna1JFUHBsZ1FQeVJtQmpHNlR4b2JLTGRNT1NHaFBZQnRTWXlVYkkrTGJCd2lIWlptTnFnVHR2MTZKS0JKczV1R05FUUwxUjNqZGlNQ0hhZjArU0xldDgwWUpHU1h1OWQ0d08rb3NIbzJCaG54SlVNS1BieHowZ1Vqa3VrRTJLbFBBVVdpcmJkYStiU3hHTktqQzF6YmEvbFNhOVhLbW51VWI3bVFwTnBXU1QxS25jRnRlVkNUZ3B1V3dRaE05elUydHovSE1nbXNISWd4YkJvYmJ6TzFnVDlzdEY0eW9jbTZQemU2TXFsUC9TUE1BOGEzR3pyNndEbERkWXlwV2pHVWZDcDk3VFRUSU5kWGtpL0RrRFhkcFZjbnRzT1FBUS9HUW91Mjh0NFpFS0M0eUVmNnlzc0kxcE15RW5UWXdZM21EZ2xWbE1hYVJjd1BiNGVKd2tQVUhwb2pHWitzTlQzVUZVU204bXJQZVNpSEFYTUhzQll0cnJHSmpvWnYyakdjQW5Nbk5XVFBLamxxdklJcHo3UzF5dGY5ODJuaFdrc25LaEcwWW1NYWZhaUxCMGxXc1ZhNWhyeUJoQWcxRDlLQjFCeVF6bUgwWXNIam5NbVZqM0JyMm15T3RLZDIrRkpaS2pEOUtscGgxaERRTkljcE5ENnMvenZreXBDcTNTeE5CTkVsV1g1QytFUjh6TkNIMjloUTRyQnU2U09IYUlYRGpFY2EvOE5JZHJsSTRlVy8xUjduZHlTUkoydklldUZFVHg3Tnc8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_11.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh\nbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQx\nZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw\nMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z\nMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft\nbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk\ncz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+\nPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y\nMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht\nPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm\nZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRz\nOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm\nb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w\nOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3\nYndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT\naWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVX\nWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2\nWkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxO\naFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFw\nODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNL\nWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUw\nSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5\nRGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5\nTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ\nV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB\nTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF\nMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw\nWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM\nblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP\nd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3\nZ3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln\nZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x\nSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo\nNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU\nLzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D\nQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy\nUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz\nR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN\nOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40\neHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv\nMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh\nR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k\nczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1\ncmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0i\nMjAxNy0wOC0zMFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJ\nc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24i\nIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5\nIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAg\nIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6\nYXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpu\nYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNw\nLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRp\nb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAg\nICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89Imlk\nLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0i\nMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3Bl\nL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpT\ndWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2Ft\nbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz\nc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRl\ncj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNl\nUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1s\nLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1\nZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAg\nPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50\nPSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUw\nYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNv\nbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9h\nc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3Bv\ncnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhu\nQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpB\ndHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFt\nZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h\ndDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s\nbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6\nLy93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5n\nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmli\ndXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1\ncm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4K\nICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3\ndy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAw\nMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0\ndHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAg\nPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVz\nOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAg\nICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEv\nWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu\nc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgog\nICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3\nLnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx\nL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0\ndHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5z\nOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8v\nd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+\nYmx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRl\nPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRp\nb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo=\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_12.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh\nbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQx\nZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw\nMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z\nMFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft\nbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk\ncz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+\nPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y\nMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht\nPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm\nZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRz\nOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm\nb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w\nOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3\nYndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT\naWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVX\nWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2\nWkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxO\naFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFw\nODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNL\nWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUw\nSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5\nRGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5\nTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ\nV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB\nTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF\nMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw\nWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM\nblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP\nd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3\nZ3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln\nZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x\nSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo\nNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU\nLzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D\nQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy\nUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz\nR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN\nOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40\neHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv\nMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh\nR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k\nczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1\ncmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0i\nMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJ\nc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24i\nIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5\nIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAg\nIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6\nYXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpu\nYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNw\nLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRp\nb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAg\nICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89Imlk\nLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0i\nMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3Bl\nL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpT\ndWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2Ft\nbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz\nc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRl\ncj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNl\nUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1s\nLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1\nZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAg\nPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50\nPSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUw\nYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNv\nbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9h\nc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3Bv\ncnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhu\nQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpB\ndHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFt\nZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h\ndDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s\nbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6\nLy93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5n\nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmli\ndXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1\ncm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4K\nICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3\ndy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAw\nMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0\ndHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAg\nPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVz\nOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAg\nICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEv\nWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu\nc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgog\nICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3\nLnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx\nL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0\ndHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5z\nOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8v\nd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+\nYmx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRl\nPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRp\nb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo=\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_13.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3Nv\nL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJ\nblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci\nIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgog\nICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w\nOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv\ncm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1\nZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIgSUQ9InBmeDk4M2Y0MGJlLTYyZWEtY2UxZi04NWU4LTI5ZTExYjg2MWE3MyIgSXNz\ndWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQwLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAg\nICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w\nOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv\ncm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1\nZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxk\nc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3Jp\ndGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpT\naWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRz\naWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDk4M2Y0MGJlLTYyZWEtY2Ux\nZi04NWU4LTI5ZTExYjg2MWE3MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJl\nIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1s\nLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0i\naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+\nRnBLNHZMamNwMG8wZ1hlRGRXRDV4WlgrbERBPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVu\nY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5tZWdVZ2dkVzlZTmNST3FQb0Mw\nOEh1Q3RVZWZMaFdWS1djcHIxQjNrb1NkZzNJNStueFhiWks1QzUxdnpWNXN6N0Y2alRHL0lsYnNR\neGl1NGt0bWErYUZiVnB6YVRmV0VOZEdzdVRaMmFCL1kzMm03ekU0KzVUajVKenEvbVNVVUxQYXdk\nc09uOHc3V3NIdGU5OUgzWE56aGQvVVA1dnVpUUpnSW13UGxRaTJqSlRpNE1XVytON0NQRVZvb3M1\nYW1OUVRUdWFyN1NRVkdOaTFhQWNvUThTVzJWRFQ1MnpSM3ZxMnVtUVo2dUhCYThrK0x4YWNaeW9B\nWVVyRXlYc0JrZFBGVEp6RVVER21jMFp5Qk9TaE1pMC9EZnBZazZzbHNrMWQwUE5RMHNCVU5iZ3U4\naDM5Y3ZMblpJWWV3dTFOb3F2RVgyQ0pId2JmSDg5S1FaeEJLTGc9PTwvZHM6U2lnbmF0dXJlVmFs\ndWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakND\nQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZC\nQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlG\nUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURn\nd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVU\nTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZj\nR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFR\nRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5x\nNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3\nRFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJu\nMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9B\nVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhP\nNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1\nN1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdD\nU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitE\nT1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25L\nL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBD\ndjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlH\nYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdG\nNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1\nOTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48\nL2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6\nc2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg\nICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVp\nZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgog\nICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpu\nYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1Ympl\nY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz\nNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3\nOVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3Mv\ncnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAg\nICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNh\nbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIw\nMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQx\nLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAg\nICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9z\nYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwv\nc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAg\nICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEu\nMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZi\nYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAg\nIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6\nYWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0\nQ2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2Ft\nbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxu\nczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAg\nICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT\nY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1\ndGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1s\nMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1M\nOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwy\nOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt\nYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUt\nZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1\nZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0i\naHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6\nQXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h\nIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4\nc2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3Jn\nLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No\nZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVW\nYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRy\naWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+\nCg==\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_14.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh\nbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZTNjMWQw\nMzQtNjI3NC01ZDAzLTgyMzAtMjdlZTMxOGU1MjNiIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw\nMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z\nMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft\nbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk\ncz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+\nPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y\nMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht\nPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm\nZXJlbmNlIFVSST0iI3BmeGUzYzFkMDM0LTYyNzQtNWQwMy04MjMwLTI3ZWUzMThlNTIzYiI+PGRz\nOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm\nb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w\nOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UktxRkp5cWRZcWRETUFjUEtmUW5SMmNG\nM3R3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT\naWduYXR1cmVWYWx1ZT42RUpTN1Z0VDljNXdpSG1xNmlUMnJMYjB4aWY0NmpLSEJNaFdKdXNFZi84\nc0I2QTBHRFkvbmZyTnpkWlZ4akQ0Tm9vSTFTVzZuZ2dYVDdxVGZmV3pXVnh0Zm5WcC9qSXVGVkFy\nbG9sMDdMc1l2bEFCT0w2MFY4YzMySXZ6Vmk5ZEJiMzlJeHdtV0l6SU5BOXhnMjl2TGlWNzc4MlNt\nWFpVbk8yQ3AyTGRZbHFLQXdFeS9XbEhDRjFFWVZNekpqeE9ySHo1NWhPV3hTQWswWTdYZUtSWGdv\nK1VMVHZxSnd2dmQ5d0gyWVZlOFk3WUFYRDlCaE9adU5CTkxNcG8rc09FbExjT25IYTgvZmdEQzJu\nT3h4dFU4RFVSSGpqLzRKR2pDU1JCU2UrTmg1VUdWQldpTnZoaURtNU9oRnRHY2J6NlRzN0IzSFp6\nN0lBVGNYNEQxOTZnbFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5\nRGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5\nTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ\nV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB\nTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF\nMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw\nWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM\nblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP\nd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3\nZ3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln\nZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x\nSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo\nNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU\nLzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D\nQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy\nUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz\nR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN\nOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40\neHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv\nMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh\nR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k\nczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1\ncmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIgSUQ9InBmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyIgSXNz\ndWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQwLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAg\nICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w\nOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv\ncm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1\nZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxk\nc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3Jp\ndGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpT\naWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRz\naWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE4N2MyYjRmLTU5NWItZjc4\nNy1kMGFjLWI2MTExY2Y3MWUyNyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJl\nIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1s\nLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0i\naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+\naHYwR2RrOXlWUVR1YWxoNGNsZW41VWZkQU0wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVu\nY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PQ0hVV2FWbmUxVTBQWEFpZElj\nbzI3SDVzYVpmbGYyamdiMnh2QXc0V1VHWmlFUmt0UGJJdWRnRWhreU42Ny9LMlUya1A0ekFCNkZh\nZjhLbmtWY2s2WHBCSUhEMkpzN1Rsa244RGxjN2dLQXNiTmh2SFNWeklQbkxUelFHK0hjbFhmQTJC\nMHZwWk5YM3lpK1dZOUtJc1dnTXZzSXRUalRFRW55SUZqMmRaQXRRclhBclFMc2d0Tmtnb0ZpcHhp\neDZxM1l0NHl5UmU3MVhXTXNldW81ZUV0VFhTOCtFS3FPUW50V0xoYzhudDJWemFtK1Z1RUVzT0Yr\nSzl5K1FnbzBDelFHNU9udnpZMVN3UG5HclRyaHAyL09TVDJJbkV5Sk9MeEpCMWY1STNDYkYrWXlr\ndjJKeXNjL0ppMHlGWjJZSnlNYS9KdEN4U2t5Y01EY2RVbThNYXc9PTwvZHM6U2lnbmF0dXJlVmFs\ndWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakND\nQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZC\nQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlG\nUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURn\nd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVU\nTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZj\nR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFR\nRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5x\nNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3\nRFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJu\nMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9B\nVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhP\nNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1\nN1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdD\nU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitE\nT1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25L\nL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBD\ndjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlH\nYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdG\nNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1\nOTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48\nL2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6\nc2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg\nICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVp\nZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgog\nICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpu\nYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1Ympl\nY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz\nNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3\nOVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3Mv\ncnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAg\nICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNh\nbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIw\nMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQx\nLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAg\nICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9z\nYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwv\nc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAg\nICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEu\nMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZi\nYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAg\nIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6\nYWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0\nQ2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2Ft\nbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxu\nczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAg\nICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT\nY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1\ndGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1s\nMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1M\nOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwy\nOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt\nYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUt\nZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1\nZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0i\naHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6\nQXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h\nIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4\nc2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3Jn\nLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No\nZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVW\nYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRy\naWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+\nCg==\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_15.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh\nbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZTNjMWQw\nMzQtNjI3NC01ZDAzLTgyMzAtMjdlZTMxOGU1MjNiIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw\nMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z\nMFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft\nbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk\ncz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+\nPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y\nMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht\nPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm\nZXJlbmNlIFVSST0iI3BmeGUzYzFkMDM0LTYyNzQtNWQwMy04MjMwLTI3ZWUzMThlNTIzYiI+PGRz\nOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm\nb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w\nOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UktxRkp5cWRZcWRETUFjUEtmUW5SMmNG\nM3R3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT\naWduYXR1cmVWYWx1ZT42RUpTN1Z0VDljNXdpSG1xNmlUMnJMYjB4aWY0NmpLSEJNaFdKdXNFZi84\nc0I2QTBHRFkvbmZyTnpkWlZ4akQ0Tm9vSTFTVzZuZ2dYVDdxVGZmV3pXVnh0Zm5WcC9qSXVGVkFy\nbG9sMDdMc1l2bEFCT0w2MFY4YzMySXZ6Vmk5ZEJiMzlJeHdtV0l6SU5BOXhnMjl2TGlWNzc4MlNt\nWFpVbk8yQ3AyTGRZbHFLQXdFeS9XbEhDRjFFWVZNekpqeE9ySHo1NWhPV3hTQWswWTdYZUtSWGdv\nK1VMVHZxSnd2dmQ5d0gyWVZlOFk3WUFYRDlCaE9adU5CTkxNcG8rc09FbExjT25IYTgvZmdEQzJu\nT3h4dFU4RFVSSGpqLzRKR2pDU1JCU2UrTmg1VUdWQldpTnZoaURtNU9oRnRHY2J6NlRzN0IzSFp6\nN0lBVGNYNEQxOTZnbFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5\nRGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5\nTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ\nV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB\nTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF\nMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw\nWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM\nblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP\nd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3\nZ3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln\nZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x\nSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo\nNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU\nLzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D\nQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy\nUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz\nR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN\nOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40\neHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv\nMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh\nR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k\nczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1\ncmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIgSUQ9InBmeGE4N2MyYjRmLTU5NWItZjc4Ny1kMGFjLWI2MTExY2Y3MWUyNyIgSXNz\ndWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAg\nICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w\nOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv\ncm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1\nZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxk\nc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3Jp\ndGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpT\naWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRz\naWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE4N2MyYjRmLTU5NWItZjc4\nNy1kMGFjLWI2MTExY2Y3MWUyNyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJl\nIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1s\nLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0i\naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+\naHYwR2RrOXlWUVR1YWxoNGNsZW41VWZkQU0wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVu\nY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PQ0hVV2FWbmUxVTBQWEFpZElj\nbzI3SDVzYVpmbGYyamdiMnh2QXc0V1VHWmlFUmt0UGJJdWRnRWhreU42Ny9LMlUya1A0ekFCNkZh\nZjhLbmtWY2s2WHBCSUhEMkpzN1Rsa244RGxjN2dLQXNiTmh2SFNWeklQbkxUelFHK0hjbFhmQTJC\nMHZwWk5YM3lpK1dZOUtJc1dnTXZzSXRUalRFRW55SUZqMmRaQXRRclhBclFMc2d0Tmtnb0ZpcHhp\neDZxM1l0NHl5UmU3MVhXTXNldW81ZUV0VFhTOCtFS3FPUW50V0xoYzhudDJWemFtK1Z1RUVzT0Yr\nSzl5K1FnbzBDelFHNU9udnpZMVN3UG5HclRyaHAyL09TVDJJbkV5Sk9MeEpCMWY1STNDYkYrWXlr\ndjJKeXNjL0ppMHlGWjJZSnlNYS9KdEN4U2t5Y01EY2RVbThNYXc9PTwvZHM6U2lnbmF0dXJlVmFs\ndWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakND\nQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZC\nQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlG\nUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURn\nd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVU\nTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZj\nR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFR\nRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5x\nNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3\nRFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJu\nMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9B\nVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhP\nNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1\nN1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdD\nU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitE\nT1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25L\nL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBD\ndjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlH\nYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdG\nNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1\nOTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48\nL2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6\nc2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg\nICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVp\nZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgog\nICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpu\nYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1Ympl\nY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz\nNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3\nOVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3Mv\ncnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAg\nICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNh\nbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIw\nMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQx\nLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAg\nICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9z\nYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwv\nc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAg\nICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEu\nMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZi\nYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAg\nIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6\nYWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0\nQ2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2Ft\nbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxu\nczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAg\nICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT\nY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1\ndGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1s\nMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1M\nOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwy\nOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt\nYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUt\nZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1\nZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0i\naHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6\nQXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h\nIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4\nc2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3Jn\nLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No\nZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVW\nYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRy\naWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+\nCg==\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_155.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJwZnhhZTZkMTc4Yi1hYjA1LTc0NWQtYTUzZi1lMzQyYTRhMDg0NzIiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4YWU2ZDE3OGItYWIwNS03NDVkLWE1M2YtZTM0MmE0YTA4NDcyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5pdmZHWFk0MDJRcGpCY21QeTJwWWdrVEVhY1k9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm5vTmYvSnhEZXo5ZjB2R0RtZlJWdjlxbVpkSmtKL0JaUnl6SjIvMkJpZHZ2S1dJaHBJVUJGOFZBeEw4OGtiTjhFSVZaWkJpeVBvWHV2bXlsY0pqYXFQaFB2U1pUaGhyZld4d245NW84b29wcldjb0FEanIvbjBaeGRWQjF4QlhXR3o2WTh5Q2ZISTR6OU5LTEord1dUYTlUd1Aya1p5LzdzbE9WZlVueDZtZUZBbXhEUWNBOVBzVllKMlJVS0F5Um51eEdCTlg3dGdxQjZyRmFSVERGNStMb29zelBET1pDZll1WmJVaTlQVXEvWjA2NDdVUXBCYjg5b0svRzBlcWZSczBlZzB4SWhJc050VzEvNyt3Y3A0cU5MTkVEdjlIbkM0Z0JiUjIzbXp4V2x4V2Q5c3dvUkpLSlV0WnovTVp3dTkybGcyWUJyZmZkbU1rKzBzYUlUZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5FcEZMNm4rWTVPRmZudzNjQUZ2d01ZQzNWR1U9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkVSYm9WRERKSEc3QVdJVHZka2ZWYlF1UmVzYkt3UmZPWGZ3OHZnMVlsd2FnejNLNkJXQUNQV2JJUkgzYVp0L0FaNVVEZ2dHMHpzS0Zrd2FaREpaZTRGQm14d3dRSVk2TEU0Z3ZRYlBiTS9VTWViL0p4ak52Z2gxcHEvdkxQTk5YT21QVW5McC9aT3YvV0dKNjl2WWs2YmR4MFZ0UVRCV21sd2lBNkltSFFIWExXZmFrM1FZdk5nV3dFb3dueHMxMmxxeU9kT2c1bVdiNHo5cjV0VGgvRkZuSHdMbGVPZFZxMUR4dExaNUZpRkVNemM0YnZEd1RsNEFSenU4bGJnK09pRGJPVUIxVjJ3bmtUaStpaEdobzdxbEt0dWM3ZzRkQUJpYUhSVGZWOTRUK3dlMkpFN1FJemZZejJBMXBMajJ2dTRkc3dTSkF1QUh3Z0lxOE4xYmxkZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_156.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9pbmNvcnJlY3QiIElEPSJwZng2ZTVmYzE3YS0xNTRiLTcyZDAtYTRkMi1jMzQ5MWM1YTZmN2QiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NmU1ZmMxN2EtMTU0Yi03MmQwLWE0ZDItYzM0OTFjNWE2ZjdkIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT55Z1RSWGJxRlUzRnNzanAwRXFPOU9qUVRhWEE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnd5cG9NQ2dmZ1Q5UGRKVWJ0WlJvSjEvYmhwdHk4RS9YVkNVL29XeVFLMjJBUlhPTDJEN1h0WWZPend2L2RVMWV0bFlqOW1ZZGI5OXBHUDlMeUZKNEFFR2FXaEdTb0IwQUhGWkxld3dKd0UzWGo3b1FiRytBUHdMWTJYd0FLa3p5RDg5MTZMWHlNR1g4RnJuYTc1Rk5VWThieXRhaEF0VElBano3ZXE2aDBiZlFZbnVwRWJLNG9NUVdpSi9zZTB4QWVTVnNuMTRiM29EbWRqK0ZDVjdmbkduTEFiRVcrTUdKTEcrUEQyZ0dEUWFKajFzdUJqb25Dak1uWVFYbndZdlA3Q2hteEIyaHlLZ2VBdUlaZ25hQVJIOVdZUEdMYWZXT1JQUWpZZkNhNDIwNk5jMFJDSDRDZzE1cTk4eDJTcnhZSkRkeWdUR2FYL2drU1l0NUNyaHJ1QT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5XOWcvRkM4ZUFGQ1k3K3FuWm1BL1lidjdXTTg9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPklrRnRiYS96cUhkNkduN0xWM256a0M0RVM1ZVJadkZWY0NSSXgwN0JlUjBFWXVpcUNzcVVxalYvNitkRzkzdXAxalZ4RXE4SzRRdHdKSzdsVTIrbUhtOHpiWHFETitEYXFIYXJkaW1VUjRQU2dhdUErQmdNNTBvRVN6L2JVN0ZSMEd6TzA5Y3Z1bXBBcG1aYjJvMklvVDJNT2dzNmNRRkFDeEd1MUlsSSs3QTVZbXozdlFBL0VtdXRiRGN2TEtTUDdOazJqUEhBMXkraUhPYldjNU40bnd2bnh1U2JDUy9ic3BnUHpSQkprdXByQllSN0hqcVlVelhOYUZtVy9GckZLejZsQTZYeEl6QkVLSisxcFhBZklhRXN2Y3dvMzlYWkNNY3ZKYXNmUUpDcjRFUE9kUVA0dUVZbFQ4cmNyeXFvZlVJOWI5V3puZC80KzVxYXBoZkxkQT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_157.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YTk5NDM1ZDYtNDNjNS0wOTRlLWU4OWEtMWUwNDQyZmQ0ZmRlIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4YTk5NDM1ZDYtNDNjNS0wOTRlLWU4OWEtMWUwNDQyZmQ0ZmRlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT50VHRGTjFyRnBXak94TmxTSVdFWVNHL29nSmM9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm5ocTJKUmFJSk14L29sdnE2eHpOdDg4NWdSRERrajVSeTlxekUvanlibUJ3S1dLZVlYVHNyMytwdXlMSXZ6MWY0aUVPNVl0WWtuNkN4MXlSZFM3T3JmamptNWorQ0l5YnRNa3psZG96bHpLdkhtK3k5Q24zbTYxUEw0ZUpYaHc1UTNlUWM3SENDWkxXZXRicW1RUnlYQ0hpOGoxYTRNR1FyR3E0YWxpcE1sSGorMm4reDRtUWdEYlZPQnZnYktoazNoZVRjVmZWcDJrb3NEazd4Nklwa2M3YTBDdHJncHJCSk44WkJ0TXBZaWtMbmhUblZ5ckVZd0FHdGp2cVFrTkw5dGp0SjMyamhkSXlKOTBDVGx6V3JoKytzTThBU2xBTUNRYi94bk5Ib28xWVB1TlUyemhDWXVEbWV5NlROQ2JnUG1OajdTNGpMdjJkbS9hSnE1RkxOdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5kbmtjUk9Hb3JmYUx4M3hpazYrbE9aNmZVamc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkg0b1Ixa1h3aC94QUJTdExEcGhyOC91ZHYzSDVVb2o4MmQwSUU3bjdsQTVKVk9HS1M2bXZvdWZnd1NSMXVpdkhvenRBZjZsM2xyMmZMNmpjdVdhVUs0b1JYZk1hc3RwYkluckxqQmtocktOUlVtQzV2Y3dIK2V2czZZM295VEw1Wis5ZWlHUzdpYXVQSGpqWXFHY0R6ZjAzRWYyZ0xsc0xZNHRBNnpib0NpOE1SRHJKSFp6RFo5bnRUTVlQTHlOeHR1Rk9NaldHZm96a3ZSbmJ2R05jcUdocG5RNVFBQlVjNHQyRi9YbXdJTlRKYjRKMElqb3kySFJVelJBTzVVWER5YjVraWFFazlxQ1JiaDNOM29TdTUwcGk5S2EzSlJhSzZpRXhwT3owUDBvOG5QNGJJNjJZeXFNeE0wdzZFTmVCN1J2K0hnMUlVM3RoMFJkbFp1YUdRdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_158.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4OGJhZWRjMTMtY2FjZC0zMmUyLTYwOTEtMGQzMWZkZTkxZTczIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDhiYWVkYzEzLWNhY2QtMzJlMi02MDkxLTBkMzFmZGU5MWU3MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+c2pNVG5GUEt3azlmYzNOQkppWC8rNXY4d25NPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT54NG9KWXFKSngvK3RUcnBiQ1k1eFpaMXJIMm1CQjh5QndoRGNrdEhxTEoxbHFCbFFvaDJFdVkrVmpOeFZ5MTZyVzVmVVVabzBWN0VZN2NNWXhUQjNaamRoaFhCVkZIY0FsYUppNEFKZ3FRSHlKRFhieTBXYk0wUzZtVldaNXJCb09vOFdDdkFOUzFyU2hSR2grbzJaRUtUa2c0T29jWUdkVDJqZWhLR2xnNDUrSmNaUjVLOVYxbEg4ZXo0Y2QwYlNkeDV1NWNTd2h1RnBSbnVxc1IrWUNtUlJPU1BBY1dMU1IrYnhxTjJ0YnkvZkV6SmhkaFFCY1BTNHFBS3dLQTNEM013QmhRbDdLeXV6bEh2WWJENnhHdXB0aG50TWladi9KcEluZThCUlF1K3lFWXBZOWthTFF3ckR3bVp6Ymk3dzRTU3pPUmVjSUtpbTE4U1R0WXhxZ0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dXN5MGRuU0EwZzBUVWY4RHFhV0tPNi81YkEwPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5vVURoc01ydHlWa3pIM1dFRDFheGI1bFluMkNaK2NlQW1uMUt1N3l4bW9RMkwrd3QycnVCN0FaN3dnRnM3MkJOVFZzNVcya1BPS29zWHBzbDlDQWM0WVp5c294R3pMdzN2dWVEL1FLaExVbmN6OEFUaUc3NDJNQlhkL2lzS1A1dHg2NGZGN1FaTFBoMjVidTlSWklHa0hzL2NQOGhPa1Y2NjBXQnpJK05aZXY1VWx4L3B3aVY4V25pQThjdHRtbm54R1dQUlJwdWRhUmluWXhNRmJncEFFbUJNOUp6SEtvVEtVSEtOTGNINWNvc1VWQzdIeS9OcE5CU1lLSVJzd0Y2TFdUY1FUckowaTZzZlhkN0xwd0lWWS9PUWlEQ1kvT01pRkVsVldzQlVUTEJFVStMMkprSUl3M0c4Q1lDN0VsMzQ2Rm93SDlpQUVDcTd3Qm52UlFLL2c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvaW5jb3JyZWN0PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_159.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4OTRhMjI5NDAtZTMxOS03ZjAwLTQyNDItMmRiNDFjYTY1ZDRhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDk0YTIyOTQwLWUzMTktN2YwMC00MjQyLTJkYjQxY2E2NWQ0YSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dlFEOTRoZTVmLzNUTWtWeVd4YTVLUEF2S0ZRPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5iZW9SRk1SanYzS1RLU1lKOW5tRHdHd2syeXI4em1YaGtITUI5aXlkMDRaZjRkSTRsdEVvcEFkRFFyV1hta0lpT05IN2ErVCtDa1k1aG5yYWRuWUk0MU9uMnNXekowa0JmZkt2bWR1YnM3cXZibDJpU2dRQkptTTNVMVpqMXFjcFViZUp4RS9lZ0dTRWRKRHpMTGJ0SUduMzJHdlhWeHNGaFlwVGQ0dlZqcVBtZVdKUkxiNlJxakJWYk1QNnhtT2tGVEcwWHpMbjlzL2JNOFBTNGN1L3lTVFlrOFRuRG0xVGZiTTFielVOb2VSbjh1MW11S0JnN0J6aUk1VUx4cTFiWVhlSXc5bHA2SE5SMklrdEx2Y01oNGVzY3k1eEgxaEhqZGVMZHdwYkZzSjNDTmdnWXdaVHBobmN4QlUrYnNCN2M1azM1aExkTGxIdXJzT1FjcWczdmc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDU2MTlhMmU3LTI2ZTktOGQxMi1kZTc2LWQ3ODRiNGI3YzRhMiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NTYxOWEyZTctMjZlOS04ZDEyLWRlNzYtZDc4NGI0YjdjNGEyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5mRTdydGlRSElVMHRHcUs4ZE5vMkg3NVNhVlE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm1Fc0QxYThaRlQyZUtPMEZQVkZVNm42ZktuMFZzb2lIdDBVdDVLSlBRV08rQ0FjaTYrSklKaEE2ZE81K1JGTGVqRHJUYW9XVUcxL0dBWXBjMTJRcktyb1YrbklwR3NJTjBVbWJGQmtHTjVPYmNoMDZ3MXUvUXhFOVRBNVVxNTBRWWI2TDg3MFF0T0w4UCswZS9hQ2xYNGY2Vmg3MXkvZkFtOGVDN2IrNVBiSEthQm1BQy9sVjNZTWlzTmZDMElLZTNtZGxqWUsrNmxlZ2tSdWtwdnFGdkpiQlB3TzI0K3F5dGRKSy9Wc0lNU3NwZVRqdUF5dnFkbXpuMUx5R1JOeEV2SS83Q1lFVWxCMTBGdHRrUUJtWnFuWGxhd1NrVm04SU82d05FUDh5NmxmUGVtbVJlWWFnWVlVZnRkSldnd1ZwaDg4Uk9DWUR2SjdtS3FCSjJsamdDdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_16.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3Nv\nL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJ\nblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci\nIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgog\nICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w\nOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZv\ncm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1\nZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5h\nbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cu\ndzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAw\nMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxl\nbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn\nLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0\ndHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVu\nYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94\nbWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6\nLy93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRo\nb2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJ\nRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFK\nQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRR\nVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERU\nRTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdK\nVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4w\nSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklo\ndmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhG\nS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpH\nOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4\nNXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15\nbEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJw\nT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNn\nUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FR\nTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0ty\nc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lY\nSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1a\nbGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1O\nc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJU\neWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5Y\ndmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpY\nNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVl\nPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFVOb2Z0\nK0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1\nL0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFj\neE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpH\nUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDND\nMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRi\nUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRL\nZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhl\nclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1\nd0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01q\nTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gx\nanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1H\nWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpC\nMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9J\ndFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VX\nUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZT\nUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9m\nOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdi\nWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhh\ncVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdP\nMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2Nt\nbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9m\nNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81\nYW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpj\nb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5\nWFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0x\nbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4\nMHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQ\nSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5z\nelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXpt\nS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxR\nQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAw\ndGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIy\nREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5\nQlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JS\nZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5n\nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFF\ncEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09n\nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2\neE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNR\nZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1K\nY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFi\nNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpV\nWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFH\nZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhm\nRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9k\nR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3Vw\nQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1\nRDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZ\nSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0\nSE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNt\ndEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09k\nZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RT\nNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZr\nS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0y\nOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3\ncGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNz\nNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5\nUis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JN\nbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lv\nRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xH\nUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxY\nejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hk\nU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3\neEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJ\nK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NX\nVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1N\nUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitD\nN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3\nM3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2\nbTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFn\nQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9M\nWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBS\nalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmlj\nbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2\nNG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pl\ndTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZK\nMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdS\nbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQv\na2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxB\nNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdV\neU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNF\nQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pD\nRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNl\nYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1\nSmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3\nRmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVT\ndmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1\nS2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xz\ncWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZq\nWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1\ncmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcr\nTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZV\nSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJu\nZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhl\nb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFm\nazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNT\nR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3Rj\nM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJB\ncHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RV\ncWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1\nZ1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhq\nSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJI\nU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRy\nR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5\nYkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1\nd2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpz\ndnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlN\nVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4\nbURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVX\nWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERj\nN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1Bz\nQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJC\ncUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRa\na0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBT\naUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1\nQ2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1a\neU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRt\nV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlv\nUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVR\nbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMz\ndnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkcz\nd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVz\nZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVv\nU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJp\ndWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsx\nU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRU\nbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxY\nRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9i\nYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FW\nNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3\nN3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEv\neTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZw\nYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVh\nWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2Jq\nNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJ\ndGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hC\nVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8\nL3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6\nUmVzcG9uc2U+Cg==\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_17.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3Nh\nbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4NmM4OGU2\nNmUtM2MwMC1lNDc3LTZhYWMtNWQ1MDEyZjk1ZTZhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYw\nMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0z\nMFQyMzoxNDo0MC4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpz\nYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2Ft\nbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpk\ncz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+\nPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y\nMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGht\nPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVm\nZXJlbmNlIFVSST0iI3BmeDZjODhlNjZlLTNjMDAtZTQ3Ny02YWFjLTVkNTAxMmY5NWU2YSI+PGRz\nOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0\naG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNm\nb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8w\nOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+cVFHemJXcUNZNEdoZGdUMzBpTmlYRHlJ\nZm9jPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpT\naWduYXR1cmVWYWx1ZT4zMmN2VzQrN0VwdXZJYVpCaG1HcjRYVGRxU0gzcXBNWWRNdFlqQk01U3dh\nT0QxdUw2a1NtUEFweG1SNWIyb3JkblZ2NjV5eFFybTdENnUwdUl2RFYvVUJEaDcrakVuVkowR1lk\ndXZsYlNMSXpjTkZybEI3QVpPT2JqMUJvZWZJeEt0dHFkcUxHckgwKzZYMnNhaU5CVnR0VUpKb29x\nNnVpZ05mWmpUbkY2TGJuejJReHlBeTNKeEZvTnZHQ25meGFmU25TdWdQYmhvb2tVSElvYk12UGh2\nYm5ac0VVL3lEcUw0elYrREFkcm0xaHc0U28vVzcrVGpWdGNJOXFYc0x6WjJRcWsvdi8wOHdUR1Av\neEZnWWw5SlBmN0R4eUhBVDR0ZjNEQTFoSFhBNkVaRHdOSkdkU3FWcmJFVEwyMGF4WEk4ak1WaGVR\nNU54Y1dFYzcrVjFvYnc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5\nRGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5\nTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZ\nV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJB\nTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpF\nMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVw\nWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNM\nblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFP\nd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3\nZ3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUln\nZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9x\nSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZo\nNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhU\nLzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1D\nQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEy\nUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tz\nR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxN\nOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40\neHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEv\nMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZh\nR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9k\nczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1\ncmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpT\nQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46\nb2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0\nYXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5h\nbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIw\nMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cu\ndzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAw\nMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxl\nbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3Jn\nLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0\ndHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVu\nYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94\nbWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6\nLy93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRo\nb2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJ\nRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFK\nQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRR\nVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERU\nRTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdK\nVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4w\nSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklo\ndmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhG\nS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpH\nOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4\nNXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15\nbEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJw\nT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNn\nUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FR\nTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0ty\nc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lY\nSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1a\nbGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1O\nc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJU\neWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5Y\ndmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpY\nNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVl\nPkg0WUJITXBMdzBYZkZJdFVHSmhWdW93QWJmZlh1djhsZ1N3N1ZjbkhuWk5OWUF3U0M0dFU5Mndp\nd293c2E4dlRTWTZwWkxjK1hzRm1uY3NyS0ZQOW9helBKYnI4cEhqQmZTa3RJaFVkeEJtNkVTaWkz\nSUNub1YrQlp2aW9lbTkwOVdNRVlUb29HaXdBOEhqYVlFRDhqdTBlTzVrQ01QNE5veUROMXZWcmhT\naXRWOHo1RHZpaXk3RWpPY1RIb3E4b0VQUUNGNHpRMVBldW9acWxQN0VDYlJQWWh1NlBSN01rT3dy\nZHE1aUluWm96OFB5Mk14TnhTaU9mUHl2c2s4MHM4SVBuTUVWNFk1R2dhdVMwYnZtcVM1RHluRWI5\nVHJPazdYMmE3ajE1eDZ3QlRMdzl5ZTRPcEdaRThWYU94YXFQZWJGV2w2QVEzYUp4dWkzZnJwakgr\nUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRL\nZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhl\nclZhbHVlPkl6aWpyQUpTdHJFS21YSjZacGFSL1pZWkdidG1ybmVSUERqMHRPZnpkUkR0Q3BObGMy\naHp4b1dpYXBVUjRQaWQ1ZnBCUENYa2d3ZDZXb21mWCtzaWlZNEdDclFCcmJ0c1lDTm92UFVYOGJx\nY1libFpYaldsVklucnpTc205RXkvNStEMjl1Mit1ZGI5ZlFGOVVxKzVzY0FSTy9HSG12Vml0N29y\nMDliZlVrd0p4VWNvOEtiWTRPUklraEpWWTRPdzBvVWZ3MzNxRDFzSFJ5c0VpTmdBNWxMRmF6RW9H\nUkcxcDg0dnFJOTdVRUkrUW1tcnFJU3grU1BKQTQzZ1pqNzRYci8yeUlnWEtVemhoSFRLQlhMc1l4\nM2hhQkNLeVk3WXFSZVlCenU4WUFtbVBGeU1OV1k3YjkxcDRBQ0RrU2daTHRIZFZTeVhKZGx3OVpj\nd0wyei9sbmFLNWcxOU1NYm5zMXVzOVZEU2l2V0s0SVJyY0EvYVBCQkhZMUZucW1DbVNzZ2hWTkNR\nbngvZkRlK3FHdW1iL3R5NGpLMGN5MllIeXdCaFVWa1dHYUVaa3h4Nm9YOTlsbi9WMSs3NlY3M2tL\nNGJ4UjFXMS9nVXB0MjRWV3Q4MUVwU2YrNlVHa3pMK2ZNd0VqT1hlcEtSVlM4b0hGV3NlSDVxOGVX\nTFRDQ1NaWld2Y3Vvb2txSUhZc2l5ZmkzSmVZclZxQ1hqbm0vaGdEV0UwOFpuemUzY3FlTGs2L2RB\neDB4ZkU3enpreGJnQm1neEozSUExTElkK0Ztb1ZWSlpZSTNWTm9GQUdKQ21lWG9DVDRITnJJMWlL\nRjMwbVo2ejBuVDQ5bmxUemJyWVozNFVkbzF5S1dWZ3VKdWtVZS9qcFVraWp6Mk0vRE9RSkhLeUw5\nczdJZUtJc3pwL3VrOGxwUzl3aTdCUFk4eFozZ2lPbHFZdW1YVUEyaDNFUHpRQmhFY3lHYWk1M282\nWjBFNG5lc2NlQVVCOWI1UkFHZmJkYkptUkR0c1VGUGpvVGZENVJxV1NIUkxIbVJMVEQ0OHpqeUo2\nSXF0Qjk3aGVHazZhblJ4RWtzUEpvNHN5a1FSMEZJQldhSlBlZG5GaDhlakRhd1QwRGdTT21uTVpJ\nVldRSlNWRmNoWlk1NUdtQjNkSkZNcTRUL0hOdEhOSmErdmJzZk1jQlhYQmZBamtmaS90WEVCdS9V\nSmFhNnVodXJwd29obi95YjM5YjcxZWNVaGdMdHY2VE1lcWJZRjVVTUxIbi9VNXIrU2dHUi8waTYw\nYUhieUo0Q1BhTHhlZnJGOFByZHI4S05hZ1FmM05EaVY2d3RZVE1tM1FZWWhZME9VMzRxcldxaWFm\neXVIc0tLb04yYnN4dForaitjeS9TY0VhcGtPWlNndVJ3bzlTdTJNU0hxWUJxVExhdmp3RktsUkt5\nd2ZPcklzbFBTZFBsU0pHV1B4RloyWng5TnhGUGRpaTJvamFBNE0rbU9jVTlTR2duMUZ5K2srUEdo\nMm9PTS83ZEwrVkhEUzUwRndXN3RZekZxWHdOUFNiRFNDZ2JGUWNmVVptSjFzbDVGN25qQWxjN1BC\nZ21JYmRiR3JiNU05TFF0eXFEYVRFdlpDRDA2cVNKQ3Z5K1BLWEdxaGl5UUdaVTVhNzJudnRPKzRh\naGd1TS9CMTgzcVduejFOOVd5SG1BWUJrUlRYMGxKdVZrd2R5RDloOHRZMWkwbERKS1dYQmVxdTJQ\nNkhPZTBJSFp3ZzJXKzBzcWxaYU9hbGhjYWMwZ09uUHN6YStHWmcrZzdrdDhHUmR2MEpnSTZ1MkFK\nRW43S1lDNVAzN1NGOEUyK1YrVUtCK0NTa1FqWmV6b0JFR0FDKzRPOXpCN1VvUHZCTU9ZTlVvaGNu\neDF4KzNuSitFcUYyZ1JlVnZPWFc1a0NIYml3WWVKZDFmam9uUjBkY3AxQkhadUlPYUdOdnJERTJC\nb3NXOFo5R2NKNDl1SGZoN01MYnY5VzZ4MEVvRVNKalVhYUtQaGxPV2tYRi9oU005cW9OZUpzOCt3\nQ1FpK1l4RFJJbEwwc0gzN0IyK0VMN1hLOWkwR0s2SGU0WE9pUDY3OElYRU1WNjc2d3dzL2xUSllO\nV3h2b3pObkVDS1ZDNTlPRjZTNHN3NkhFK0VMZnhGai9BcVpMZ05vbFVNOVRENzVGTWUzV2QvdWxE\nN2QwTUpjaWVIcXJRUytJVnRJb0d2TkpTUHFXQUFKM0c1dWJ2enhqNmx1UWxQS05iVG4vTzV3SUJL\nMGtKaHhHNEhjNFdYNWEvVERocjltK0M0SXhmTmRZem4yNHJjckMvdTJTcjR6dzBZbElQM3hsTXFD\nTldpdThLbDY5eHczeEJrS0xmQWNtUDQ3alFqbFp1bW5vVldIMHI3TmVmbTVkYTc2ZG5kTm1nc2sv\nbjQ5K09OL3NjdFVLWUVEN2VXWHdQcnpUK3dIUktBVC8vZGtxK1k4RGVqZ04yek9SSU1Qb2NpMFNX\nMUJtUnZIOXpseE1Zdkg0N1N1UkhqNi93V2pEUWFrSkQ2TXdRbGU2NHV6OENhVDFJdS9OenBCN1c5\nVWVFUWdETVVFOEFCMWxRNVdHR2M1cEN6YVhNM0h0SDA4K3h2NEtzTGtDUWpDV0NJclNjMll2OFlB\nSVB1WUlQM0hxaGNVeVBESmVjVnF5bjNrUUtzbXZxTlBrYS9lWGJVbkdsVmxOOW92OStWWjA3OGtv\nSUQvUE81SkNhZE1VbFRpVnZUVERkamVabUFxMTdRWTVwTGx2dE9PaktJUHF5aHROSEliQTlKbXc1\nYUYvcTZqREdWSlZOL3FLSzg2Z2tpTysvNW9HSGJpQkpDK2lSQUkzNUZvVjVXdExHTWVpSm9RbVJs\nUkRaZERSNWVDcVNtc3hZdWlXVW43RC9BdWFSN0U4elBDMEZ3RmRzQ1k4SzZNNlZsN01KcTFJK094\nYTdnZHRLS09IekV3ZXdVcDQ5WTNvM0RlT0ZVRjAwZy9rem9xV3gzVHB0MWZNL3hFU25RN3RZcCsr\nR2Y1UkNobFRQYkVZMWhNSCtiREZ5UkhHazltbGN1NXllMTRldi9aTkRoSUowZ0wxV3daQittN0xm\nMktBek1VY1BVU3ZzK1NyeEkvVVdwSnEvSWs1bzlpVWRlcjZET2FEd2FLLzhYREcxZWtNSXlZcXpX\nN3ppcHVFSmZzQWp1Ujl5ZFRhVjRGQVVUYy81dHR6TDBWd1FBUU9MQi9GNGRSNHhuSGJoOXE3K0ZF\nREN3K0Rjc3hvZ3BjTi9FL1FnMll0UDNPbnNZTXorczZkYmhjMys0bGlRWFBiTU82R043ait6SDcz\ndUhNMHZTWWswL3lSV051Q2dxMVBxTVhUblN6Q0pnNldLMFhnelpHN29ieW5ycjh5ZStINXN3T1pV\nYnQzQ0FzaG02aXVsQk9FbXRSbkdVam4wR2o5UGxVRHBoVnd5RFZFaThTS1hKK29oaEdVdW1CQWJU\nR2JLMTQzbG0yU0xGMXBFbFVOMEZFcjBucU9GRzhiRDdIZlRPOHU3bitNSC9aSEFNMlpBdkk2dGJC\nbGJOV2NOWm5oUUcrWmFTTXVicWJNRWdBOEtFdHNWQ2pUaXluS0xWSXJBS1YzY3J4VHpJcFJQTjhT\ndXNpSGJUWFZCNHo2dUQycnowVTZEUjRiSGxsRzlxZzRlUnBlNjNiMXQxZnE0UWdtaUNQVkE1YTVK\nTzhlSGdoK3JOZ3cxL2tVTjAzWkVUeXJVVFF0N0tOc2E2TGplRno2ZUpUUEppT284ZlZ4ZFlNNzJ0\ncTNvRWpxRWE3Z09jRFhMeGlGWlYxYXlhSHI4VGlJQ0g3WFZVYVg3bkdXWjYyUUM3VGpNRlp5bytE\nemZxSHZOa1BLY0xTUncrWktuY2lCaGQzdXRSMHZsOVJVWEdZYkNTVmpuV2JuUVZZN0RTMEZyS1hq\nd2t2T29lK0NYKzgvTmM0MkV5TnpNZmxsaW5YdU9JV2I0OGNtZ3lPT2xCMzhBRGs4bTlvNWJsYWJV\nbG1FRE4xNi9YblhkaytXcksxQmJNUzdqMUZhWU95NTVSakdCRlVTVHZHaUl1V2pFQ3FtdWkzYlpD\nWW0zRExMdGFFUEg2Uy8wWCtTRWcwaGt0T2E0ZzRNM1FJdURCdUg3dWxYTXh6c2gzY3U4dGJSWklS\nQjdtdEladjBVaGJORUJodUQwQU9kWjZnbEpzc0tQSUhpRlNpUHFvVjBMelpaVTZqZFQvQlZBTlA5\nSE5BVDFQWTU1SUR3OFRIcmtDdDRIcWc2WU8zSjVSa3FibjJvU2h2QkcvOTNwblQ5Vy80VWE4ZG9R\nUXdsanl2UDFpWUw3SzFDRndHR045dGRSK25UK0ZwWWV6QjdxZEU4ZS9RNDkvc0QrYklLVTNycVRW\nZmUzQTZwRVNlekZJbzBsaUg3eVU0Y3BFQjFNdGhubkRhRkdINE9FaDJvckNMam5KOEhXL1NMdEVB\nUThnWHE4cWpqVTBHdFdITFVFejRIQmZSOGVNWjJXb1NBdUx2WUNHWW5sRUtMZmhTVTNtdUtIR0pp\neDdRRzJRNktGT3liTkxqL0hGcm95MnlhQUVHY3hXeG5lWUNqVkpDZktrVkhoajBEOVo4eGFWaGk5\nTW8wdFdBQzV1Y0Zrc25zRzQvYjNBRVlaSHRHSFg2SUFCdmFDbERTQm02MzhsQlRtRGFnYVlTMmpx\nOGQ5WTdEYWQ0OU5Yb1ZxQm5yaUszOWgvUHZrNXdDcW50U2M0WDBuQ2hzb3hKS2c4Yk41cm1SSGZY\nbUV2azNsang0WVhhOVZxVlNnZ2k1b3M4T3R3a2tkYWlBM1BDbVNUMVR3N3JOK0hCOUM0MzYyUTN1\naUlYa0d6TmljRjdCRkM4NEVQN1lpdUJVWUswVkVmL3g2eDcxT3kyVzVjdXdxem9sSm9scDhVdXAy\nQldWYjZXSC9VcTZnd0ZQOCtWRWREKzRyeTlvRmhQMXo0Y2RnTy95eEd3MFl3dFhhUGU2ZkdsTVJS\ndTNYelVZbWI3cTU1RUUveGFvcFppNEd2TGdiV215L3JQVnVuZHhIeHVLZm0vejc0WjlCbnZsN0x1\nWTV5RnB0Syt2Wm1WY25hejFxUXZocTBxMklEREdRQ3IxOW9UdVNwZGo1TUdwM3hDL2FSdE9lbFA4\nTHZzYlRnS3lRRHNzTVVrM2psL0dIV2svQWRzZ0lPSko3YmxjZzcwZnB2WU04ajhsL0hxS0txenp2\nWlp3emJSNFFhbGt2b01iZ0ZjQVMrcXlzV3lYR05NQUxpOFpmcWZxK3pTbHpwOEhPMGsxNWlHRnhm\nZTYzdW9xUUxETEt0dUJrZlBDNndGZDJqekNYZThrNFBHczZSMDdtcmM3dUIxZWZuWlRsYkxyMGhI\ncDhuYkpyZHRuRUN3Mi9tQ0NsVDVQUys1Yzc5VjlZaGI5ZmpyMGlNeVF5c0p5WlZ4MW56R1JnQzdx\naUxnbEVHWHF4cDFqMFowZU5YcEFlOUMrVTNiQVJ5Q0dYb25JekQ2cGFTNExhalNtcU1iWmxHbHhS\nRTRFd2EvTWlaWHFQb2V1ZEpkWWx6OUN6VmxRTzJvU1Z5Vy9YOGpNY2pmeVlXNXI0UG91akZMc2tN\nMnBFWUJaZDdtUHlyR2xseEd3S0hjUjhWUndaN09iWWRibzlCd1BqY3dtNWhHSitncWJuV2MwdXFP\nK1NDQUQvRzVRRmVrUHFZMDlXZHBNdEhJcC93cnlOY2syK202Q0pTeDlsYUdYTTc4dW9Cc29udjNu\nSHBXWWdrQVVzTzNSRHczN2pOZS8rYmsyYktsPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6\nQ2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRp\nb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo=\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_18.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4ZmRiYjcxODAtNWQ1NC1lNTUzLWYyMjMtMDYzN2U3ZTBiZjBmIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGZkYmI3MTgwLTVkNTQtZTU1My1mMjIzLTA2MzdlN2UwYmYwZiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+OEJBMlk5cTFSVXFtS0FwYWJjNGV4MktCTWEwPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5UNEVWZ3QveUllSlpjS0FQZmFXU3ZjR0lBcHVDRmphWDNtcWFheE5aelNSdXRkSnNJazdqR0V4aUpIZ25GUmFEZ1NqRHJxWlFVa29VbDRaT2FkZGFMWFBLSHE1WVI5a0dVY1dVNWZGZmMxR3pQaHJqTFFsMDRwejVFdWl6VW0xWHBCY0hHMDIvd0lMWC9EMW5YMnREanRHTmVnQnZZMzFHVUpQSWVrMVIzenY4UTlDazVFcGZqcDVXWWdOYUZrYUxQZ08zSUNNcjZDc3p1Sk5XY1d3cm1GelFudnZsRGNWei9UOGVjdWp1NURPRUZkQkdJbFRIWXpTaTNtVUt6ekpMSDF2OGIvOWY1WHJ2UU9TUXFzNmcrVFZ3ODYxcUJ1Mkk3dC9SRHV5R21FV29Oa1I2aWQ2d2RiemRxV0w2QXltbDVsZGxXRmtPT091aU9vNGQxSHdzOEE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFVOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_21.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4OTYzYzIwZjItMWJhNy1iNzNiLTIwYjAtOThlZDFmYjJkNzRhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0wOFQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4OTYzYzIwZjItMWJhNy1iNzNiLTIwYjAtOThlZDFmYjJkNzRhIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5VRTN0SGZQNkhZNXZwNERLZm9iMXEvREhXRHc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPjJsSXR5Z3FlQWk2bllwd3UycnNSVWE1UnJaZjJzZExqYmFlTnBWRDVkTUp6UEZ3YnFWYmtuRllSZzU0U3lpUVBTcHA3S1c4NU9JUFZzekhiN3Y1aVZ2QURqckY4YkdxeWVxRWQyaG1yYkIxcUFJUWFHNVV2NE9WWGtiMmJCQ2RxRDNFbVVKNlF2UWlHWDR0MnlBSHQ1TFRKL3ZnRTNtR25kbGNwVmdrQzZkc0tHYXYzWDNmdEVWVDM1WjNnTTRSVHNhVlhKMGhkeFErQUl5amlKcDArV1BUSUtVUmhXelJLMWM0cmtDSUEybktuaTh4N2MxWjNvbkt4cG5XWTZZLzl5eEs0dTRjMGkxcEdnYzdVeWFJZkprR01MN3RFb0lsVlhNWFJUdVRUaGltQWFYNWNrQzVuQjFaaVhrT0JuYVZlUW9GV095RzZkajd5bDBoQ051TGNOUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTA4VDAxOjA1OjAwWiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMDhUMDE6MTA6MDBaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTA4VDAxOjAwOjAwWiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTA4VDAxOjEwOjAwWiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_22.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MTQxNjM5NzYtMTkxYS1iZGU0LWRlN2QtNjEzYzc4YzE2Y2YzIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNy0wNy0xNVQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4MTQxNjM5NzYtMTkxYS1iZGU0LWRlN2QtNjEzYzc4YzE2Y2YzIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT50RDFUU3k4Qm9SNjhZcFF3UXI0U2Zza1RRV009PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlBCczZ3d0F4TGZSLzhuQkZOVlArTFpWVk1rRy9UUUpBNW43bTdLVFZDRFAvN25pSTZWQXRSNjBjSE1vNXhnTmFxY1dtbkgxc01QK3IzS2g3ekc4MFRSWHFUYnZaUmJiQ0dpRnF6dEZmT3dVbmV4ZG5qMWl5R2QzbEd4TXhpNmgrdXovSFE1allDcmJoUjRpTWJWdFVzRVVubnVJaTY3UFcyVGVGQkFSQkROOCt5Ry9qdWhSU20vajBqNG8xakxGc2MxN2lDMkpNT1V1cUYrN2pYaVppSTFSOTBHMy9NOXVmamVSTWM5dXVFYng4TWduNVh3RS83TVZVY3N3M3dYc243cTAyN3BmNWJVS0R4cTNzVjB1QWZMc2wzS2Rob1dVaFUrRU9uZitjZlpkdVFsNTZxZ3h0Vk12VUdxT3Z2NXhVRkw5S2ZoWHZkM2V6ejZ1SG1aWUNoZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMTE3LTA3LTE1VDIzOjA1OjAwWiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIxMTctMDctMTVUMjM6MTA6MDBaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMTE3LTA3LTE1VDIzOjAwOjAwWiIgTm90T25PckFmdGVyPSIyMTE3LTA3LTE1VDIzOjEwOjAwWiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_23.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0xMVQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgo8c2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjx4ZW5jOkVuY3J5cHRlZERhdGEgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50Ij48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIvPjxkc2lnOktleUluZm8geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PHhlbmM6RW5jcnlwdGVkS2V5Pjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48L3hlbmM6RW5jcnlwdGlvbk1ldGhvZD48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFPdnBadEpOdFEvck1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3hOREF4TkRnMU4xb1lEekl4TVRZd016QTRNREUwT0RVM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZVbGNpd0RQQ0o5Slh5MU5zeEtmcXlPZkxRWEZLS0dnTktLUkx6TEFXTzQzR2dRWXJWNjdRYUFueTVMdmdPYTgxS1FPWDRJdmpKeTBuZC9Wck82akc5cFRkTVI5dkZIVDBUdTNXMVFVc3lQUFNRcXBLWHdiMlpDU1hOZ2hZRDVnQnJOdG1PeEFPczFBeng1cW1JekJKNEYwUmtSaXZjZGJYU2ZCVUJMcENuMU0yODVjNHRrNVNFdm9SZ0JlaXNMSkpEQjdobXlsQTFWNi8rQk4rTjZiM00rWlpHLy9DVHZPakpLZ253a01BTHpYYlBiUVdhMGtwYk1MRE16OEtyMnBPRExLYjNyR21kZjRQNkE5YUE0MWs2TDRjbFRzTmRjSzdad0oyZkdGNzlXR3pFNlJMeUJYMlVTM2dQSFVYdC9XTVFaWHlVTE8zZXhpVERzUVhXRmY4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnUVFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUIzZlFaejJxTkFvL3dvaFBOYVIydUFha0x0MjVjS3JzYmduM1h3TytYK0RSSDRucU1TWmtIZExHcjgyeEQzaTMzQkxTUXdYekZlY0VOK0NBOFNscE5vSVhId2s2RDZWM3VFQlNqS2VtWnRKRkNKcWU4ZCs1cXQzR1Y1MEFLbXRFdDJOYzdCOTRUTjh4QjVFbVpsYWRuVEpXY0JnU3V1ejFoTFhRUTAyZEozZERxOEZNbHlSNzBTMkRUdHVQdTBpMi9mNkt0cmxtbU5zVTI0QXErZkN6RUc0M05xU2hPTWVNNXJEeExzU0pDdGpmTVJ3RzhZZXlOZjZjQ01TTXhZQUpmclR5aitBUzhSdFpRTkdGN3RYK2V4RVdIT2YxQzlDQnpIdEtSQ2xCUkw2ekRqbHBQQ0lEd2NNRmk4Tlh2YWlWY2x4SXEzWGRmcXhpR0JCRWxka2hnWjwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjx4ZW5jOkNpcGhlckRhdGE+PHhlbmM6Q2lwaGVyVmFsdWU+R1dGZ0hlcm5wNzlGaytDNStyWTFpT2tSNDJuQ3RKMDJMVTYvUE9WbUxKdGkybTVqTTNpUWFEOEtWYzZZb21IdVRZQWJub0NoZXdGT0gzNTR6cjk0WjB4SnE4NFMvcjVPT0orRHVka0czOEFFd2F4bmhKbHlEbGlIVGtkemJNcnJmcmVaeXB2cFZHN3QwNi9tN0xjSjYwbFhHWFp0YWo4RGNhTkVXeWN3dlN6TVZ2NGFaUWhZT1hTWHM0YzV3OFVtSjNONlJ5NFdqZ2JOQ05lQlZJT3JZVTJlV0VHQXhjblBEV1ZQVTNkRm9QaU5wbmNPVmtHY21HUDN4c2Y0RWhPT2FKNXBkSDRKZFVqVnZ4Szc3a1U1UXlBM3Jzakt6R3NvSDR6cklITkUzUUltcG9LYm8wM1NXeS80WDg3QmpiL1BaNDEzcG0xbEVWODU0UjY0RHdhV0VnPT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZEtleT48L2RzaWc6S2V5SW5mbz4KICAgPHhlbmM6Q2lwaGVyRGF0YT4KICAgICAgPHhlbmM6Q2lwaGVyVmFsdWU+MVFrRjZsR3I5T0xnRVhHa0JQYkVDbnVHYVdvY3hMdXg1ZjZQSUJKbjdVYXA5NlFhSkhCVFVjekdvOHZoUnVtdHBzQ2hPK1UvUWxScjN2bHgzTWZtTFRpVWFYb3RrOHBHczRoMWtBd3lWZHJtQ21YMXdRNkkyQjN3aXlWajZUSk9BTDUra0F6L3NIaXlINFdpWVFoNy9MK0dNbGwxNkNMMFA4eEpSb0hhS1pnMEtnTk5VcFZiNFkxcjVNWkkwS2Ezckw5ZEJidEZDTjAxekxhYlQyS05LelA5M2FReGhWdSt1YkNkZVRYZHcranpZeXdpNGlzdHFwU1NaaW5oaVUxTUpPY1I2YVpxZTVWajI1TkxtZGlsa08rMWIrY2dETjVnaEYrTHJtTE40THorbER4aDNFRzRIMmVOZkpEcGRZY0FMVGp4TlljNllDNlV4bEFMTHl4cDJ1Z2I5L0NMQTMyNFpLbGhOVDNzc21VUzdxVmFxM3BIVzgrME5vTVU3azY5bS9vK25PWm9vTWhhWUhOaFpPMzY0Mk8xbi91cE1tdG54WXd6TnBURVFKKytjVTJ2dTIra3V2Y0lzU3JGd0lxWTYxZkRnNEI3T0R6M1QwdEFiTVFJY2k4Y0oyTU1QUHZnQ1JBMlBwWStQNEtBU2pqS2tGOGxtNUpJbFVYV1dSYzFUQy96UUQwd2FrMEgwdEJ1YU5PM01OUUFaTDJWcGNzTDJ5dzZVWnhtYTFQdUFrK3IxSmdyR0dtSjF3OTlzdjBMdkhnSmtJZWg3NjNiWFExNWhSMzFJQ2pESUlKR2VtVDYxdUpDYUthV3Z0T2F5UXR5SkMvWmNiOUhiOXlaUG1yOVFmUnJjd1lhZjJINStwQnZGSTl1NHdPdkJKMzk0aE1hMlJPS3ptWnFwZS9jMjJSMVgyWE5pYU9ZclRWUStpVnhHajVLUjd1QjFGNWVkMjZkOW95Y0VlUTR0ZTltaHdxWWpPMXhIcWl3WlJ2OUVZZWZrVjg5VG96VUdqcmc3bllhMldZaGJmSlcrL3ZxOFQ4VXgyM1NaeXlTb045Ulp4OXljaXp2ZUQyY0txa215QUYvdmdGZ01BN0Z3bHY5Y0szNlFmWmJYWUFKNEwwMmhNUjdKWHUrQlM4blVKWC81TGMzd04yM3psaUo3S1k0Z3NOZDJ0OElZN1lFS2VRVU9OVEg2T1k1MXhhVktDTUhtZVZ6NG1oZy9jZHU3aFAwaHBnbXRGUzlNNG1yalFHMVN5cmoxT2ZSZTduTW4vczk5d0hPeFY2TFdUeEdEZjU5TFJCRHp0ZmtCRE5tKzNiRUFORzB1NXJwNTYrcmUvU1pFMzVVUkIxS1FGeGd4ajNncmloM1FTSjY3WmV2a1UvNWVFMXQwSVhVM045d2gwOEU3WWQ1Y1hhbmhrQSsrWm1hQ1hWWDMweU1YcUpDZmtKWGZ1aFNHbks1YnpxL1ZsdnNLNUVPR1RnZjN4Y3dMcDlSSGxNZE90S21XNjMwdlNqdHREYnJ0a0szdStLZHZ4bGhXTFBNRURrQ08wR0NyWXB5V0NMNWRYSks4MXhYNWxESUNGQUxLVXdyTUtRbGtKc2dyQnVocHlzaUNtLzVGb3R4NnQyYUtGVS90eVhXUnlLdnQ5NTE1QUI2TDZPZVNrLzBIMXBaQkxXQ2RRSm1pTnBNdGQyZUg2TXVvUUxrbjRmS3Uya2wyRVBTRS9HcG5SRW5XVW9lRUJQR1JwUlhUdUZzYUN0bmMvdWZKU1EyOStWTkxpK2Z5aWdyOW1xT2FtRkpyeE1uRUViSm93bFIrTmZ3aHJ3UzBTUXZaQTdMSXRkdSszV3VtL0tZci9ZbjEwNVdUYnFCR1NGS0gzZjdaZnJtTXdPMmdDNUJKVjJmWkYyVEVpWitZY2N0emFzL0p5MVI0TmVKdnVDOTFwZlpsZUJWeWdKYVNCZFArRmZqbC9ZYWwrRDBXQlZ5NVBmUENvU1BQc2RSTEVRZFhXdElxR3psSU9rY1dVWkViWmh3TE5ycm41cDBPbi9YUENMYjdTWHJ2TFRjWU5KMlhrMm5zZGIzWVIrUnRNS3I0L2VqckdUbWY4UEYvZU9FQ2lXTkNCdzVBNHU4L01DcjYxWkRnd3RUaXlrdWhQNVlUTTladGdLREJrOVRDRFFwRFFyeTJWSE9LOUtNMVBQZENvL0lPeDkzZDBsKzVhZVlIT3lleS91R2U0WHM3a09oQ2IyS2dEY0l1RGpXS1RqMTRKTFUwWS83VWM1U01kWEJHUFZEVnZEdlluLzU4L1cwUkxnbzE1TEEzT2ZSbXAxelM4eUxra3FqVmFLcU5ZWXBGN3ZsMVB6dWRIdEVlWGpVKzcxd2hTdGNvblhCVTJVZC9ERE9mVnF1cWlJNlVnb0lleExpR1ovNUZxUjRTNDZKR1JvSHVRN01ucDV4YklBSzhHL1pmMlhZVGtnYVNIU3pQMHB0V3hvcU9wV3h3VW5pS1loc1dJWU1UQ1dvdSttR2lNYnNtWkNDbG5vYnErZndiOGNWOExRQVpDRTZZZHp5d3F4a1ordDNjdXRENXc3M0RBUkxlUGUvWWxnZzFaUnRTQUR4YUtkNE5kTlh4NnV3LzF2V1NWd3dxc1JXK29HSFZVNi9ETXFTQk8vOUo0blloSkhoYVEwYUFwZXN6QVNQUGd0dTBpc1E0R1lwN3A2T25JME1lNmtSUWNIcDd0OUQyWVF0R1RBbWxUNUdCKzNqdXF3QkcvaTRYSGZrNFdCL0RPdDJyTDFOTjVya1M1NmN5SHE2bW8yQ3BEam01Z09RR1BZcnBVRlpsZVVhc1puK2k1c3h3aStnallyYTU2Rk96YnZ5ak5lOWh1SUVHQzkwN0FPekFPTE82ejdlUXNNdm1oODh6ZGVRYjJ5MnR2M1V5S2tXTUdLTys5U3Y5YUw5bWJ0OXZkaGllTytjSENIMmlmKzhpUDdqaTY5Rk5OOGhlc0VGL1hua21INFlkNkxtTmI3VGlTUXpvSDhsTm1ScGpnQjQ1YitKT0EvcEE3SUhlb093aEhjQ253ZXQ1NUFPM0FPY05reDJnSmRaTkZlTm1lTWw4Z1N4SEpVREFsbGxHSlFWQUIxd3Y2ZU1sa3VFZXd0dDlMa0ZDTlNFRTllSWpFYi9neEFyWVhnTDBDTGhONGUzTTBVOG9lOTZaNDFCVVNTbFlHc2FwQ0EzUDJ0MWI0N1RGNHhieHIrejU5RmtWbE5QYjlyZU1pWUNRR21kbmFUa05Jam03OTRyTGxza3FZaVZheWJOUHdJWkFJMXk3OXVEVG84M1dYWUh0cUcwVXRMYmVSeWN4K2pzQ1J0aXZybjNUUXJQanB1RE5ZNlB4MVRtQnBiTzBRUG5zZCtmSkhqWnBkdllkbEI4WEx2MHlVVkxVSGpJQWh0NnIrMDFJR1ArSnN5UFM0QXJZRmJLZ20rNEVMRE4wWGs1YVhvL1FhVEhtaVZqdkFxaW1qNUVZYzNiZC9KTXViSXhhS3dvNm1JbzlvSjhWT2dHdWZZOFY0RUFETHVxSTVGRXZPMWZTUHMzbVArTkVLWlZNMmpIN3BmRzBqSk1hNE1KSDlDdUVEM1k4Q0dmeFhFMXF3d2hWQzU3OHhFdTF2ak0yVHh0TWdkejJTYXVBKzJmb3d1a2VGTEs5K2M1MjA5VWpacy9jUTFWTmphbGR2L2V1Q3hEQXJuRWtkMG9xcXhGYUc5OTNtL1M0ZEp0azVJeUdCM2xRU2hOZkhxUXBsOWx5RElDZW5hb3dWZmJ0YjJ1aWJacWFqbmFidVcxVHZYSXM2d3BQRUpYQ0didXlRN254U00xOGFKUUF5WVE0OXBDSmVOcU9LMHNvRVUzWDQ4L0tBbDVWNzZTNlZ3dEFjd2VSbGdnbjg2K0RwbC9sZ3JOWkRvUzlHQTRqQkdDZWUrcVQrd0l1b1Q1dE85V0VBVXkxcDdlaTVRUU5DSmV4dWl2cHUxakdodW1DYUI0Q1o4RWt3SHFXd0RaZENXNjdyT1RVMjk2cmc5Um9ZZkplV2NKVlFDWUlqTUIzLy9kUE9YVFVYd0dHTzVwcmFjSmlmbnR4cjA3MXdPWFBGbDNFSXY0TlgvaEdScUJjcU5vNUtVV2ppLzB0UTZhSjBZeVRIcld3MEhlOXNZL2ZKOUEwdGtHTmN4bkJlTCt5bGpkNkhEdTZGUkZYcGFySnZpdFlkYXBoNWVtZUJjbmQwZDFzckJJY0xZYmZWb2JmME5PT0NCWDVvemk0MndxaFRZUXpWUHY4TzFnRVVWb1hBajVxd2czNkRDakhSMjN2VEJnYnJFRTM3ZmpvTVNhdmg4R240dnFSTXA0T0VjbkFMWXRVbzkwREVQZ1JHUDE4R3c5T3FYaUhBQmlvZHR3ckhBaGkrQXVRckVkQ0JsQmZuSFpaZ3ZVYWk2TlQ4RVM5SG9hd1krV3VCM0pxeUpZUHgyRmxITUZTYnE5NlpjRFU5T3BKL01QWTZmYVdTVXczVmVDUUs1dFBHME5MdzdUMG1EbXg5NEI0YzVDWmtic1pCb1lqNENvMCtDZHFmZTZPMERjcXR4RVRsWmhtRXE0bGMxZTd3ak1HMEFHMGx0cERsdGErVmJoSG1mNjVjcVRqWk9uT240ZmJLODN4T0ZRVFJGK2IrRk9sWHE0Q2dkVitReW41WVUreFI0UG45ZzkzN3pzZEdKNUxXQ0xnVUpJbE1IaGZoTmc4VkVYckRKbGgvUW52cGovZUJibjdxNVpBMUFpem4rdDkrL2psVEV3a2xlcU04NFRLZHpSOUlNTzlTYktBb3d3bTJFTkk3Wms1Nk9zV1JZc3E0WWpHSWRGRkFBY3R5alFsYXlpazZ0Z1lVZHVKZ1ZyaDY4c1ZqRmo0RngyZXV4TWRNOEI5cEJGTkdHQ1VBc1k5S2NyUU5RVnR1ZkFQYVkzN3ZjUnFtSFB0dUlPNVZObWI3VUJtN1VNUXlEVTNTWHRRekpLNm45bCtzb1lPVHdaQ0tJL2pHdjJyYVBMZkMwTzN2RVo5eDI0QnNFMk9DZXl1YWlOcEhlQ2tzTFM5Rnh6ZmN6YnJKdUMrUTRTS2RUdGtGN2lHajZmR1dCVVhRbnkzZWxoaVlyTU9idThvd2FKck1NV2hEeUJIaFpzMmEwUVhvRlFKaDBYQm5tOHlmS0xBcDFTSjl5QllWR1N6VTByRFZaZHF5TnFBQ3dLWjhRcXUxOEdTZ3M1U2gzajlHOUcybkIwMmRpTFJXK2FLYldlZHlWdDFuTVFWU1c1UkxMVXlnaUFOc2poWTFqTGlrYXVWczRLQ0YxL3kyMlIxa1VNdCszQ0I3N3VIK2RlN1lyazBPZzdjZFkxRUNZd2xsK0MwSUJsTXVEdnBTSnF3bzk2ZGNlcDArTWdkM1AwWVFuUHgrMXJ1ZVVFbE9wc1RsdGNVbTQ4dTBNYndQT05xQjNxWkpxclpQSjNFamVOVm9BaVgraUFCL0pWS1R0S0lWNldKMkZzcTcxOTVQbThvWm1yV1lFS1JhVDNWNENyTVM0dmI5RFVkUHZVT01XRlBRWE5iNHlCOFFPZDl2ak4yK3JLSkxjWFk2b1B6MzQrUkVFTlZhQ0p6NkZMb2JHTG5CdzdhQ1VkQzI1c2krTGo3b0RWWndzSnJ3RG9wS09OUUN3djNVRXl3VUQwblFFOEk1ZU1JeVhpaXhJUWNaNEdNd3N0ZldDVzNhVkFMUUNQOEc3WXowSnZvblBEK21hVXhIL3Z2aDVDbVlpSUFBb2dSSmZqTnhNa29GYmZLZE4yNSs5R3JnS1V4TkoxQ2k3cXpFWE9HRm9saFc0R2U0UnlKZWRnZC9rV3FVa2ZZRkJoSERJbEVTWUNrTkxJc0FHbHJsKzZOOWp3QUFIRk1pSUVkWHhPWmFJVmVrTTNRVTFRSnRxYjFrYS9aMktoRnd1cDN5OEFjVDZnbkZxMm93YnN2ZThqcUZhRUJQTDUwclJRdjhhby8wWDk4WkNHY080eVdhejNYMDB0RytKaC95Wk1CZExBL0c0TkNxdlo1M3I2Q01VRE1DcU9CbGVvTVo3ZGk4Z09iWG1tSXJaQjNJMlNFRmFaT1NXR2hSb3BFTkF6bVErVTdlQXpkRUdXR0hIN09mcVdGYXI4TU51UWU1N3ozdWhGbWJndFpqRHdBcXdsWTNybXNRSzYzREZiTlV4MmxEalJ2YTRwV3ozelprWGNyV3FYMWpNN1RGT1RJYjdIZlJ5bVVWb3dmblpsSGpCVHN2eE1BbVBWdWdPb0RjVDVjTXVGVEdIMktWV0NCOHpxSzdrVUpGWjU0ckZ4bitqZTI0RFloRXVtSmxOb2hmZlhOTGVvSkVDYkhLcEQ2RzBjZ0NaVDRobVEvMldZY1BpTlNoQ3JLYWJ6M3FjRXA3VmF2cGkyKy9PQXR3bFVGandwSkdqeXlvTzdiSURtQVZra2RBYkhoclVPSFZVaWFTNlRMNEJXbVZDRU1RR0ZPalhoQU9NRFBFdHhRdzBsdWEvaUpEVmdKV25WdnBPZ1d1QVJycXlzVzZVUnl1UEMzdk4yaHMxcmdWSTg0ZzZWRStIUzZwSWloQytYNExmRGw0d01jQmF3SldHQU9MSjhvR1J1UGI1RkcwWU80Zk1IaWkyazBYMzFxSDBsOVZjeC9hVkpqNWRhajdrRlJRbDJVWm4xUXdIbnFQcEYwUE5uMWY3ZnZ6Sis1L2g4TnUrbnl2V29ILzNOZVdzYVlEWWxoRDg1ZHNiR0FuMHVIZzc3cmtWdkdFdzB2ZDIvdVNvOEZDRk9wTit5bHZ3SUU4dUlRNitSVlJUT1VLY1R0RHlCNjZkQjVObzhQb1BjTFdXbTFadzNjU0RSUUtlMXdaNkNDcGV6cjZwWStoQURkUTZveGJmcnFKVzVXVzBqNkdrYyttWUk4WUswdWJWdVBoaTVMWGFRWjhNYlgyZEIrdzd0cktzZ2FYU1dyS2RtUHlGNXRUenB0R2R6ekpUbVBnZ2Q2MG8zcWhnd1A2LzVDSllZanZJdk1VMEpUQmpjalFDUjh3enhaVlJ1U1RZaUp1WE0rcERoZUlIZXdGVFRyeVZJRGRJTUpLcGV4dWhaN1gzV3VTTkV3RzE3YkpORU90MGY1TWh1MitzVTRqb1ZlU2lNTC8vSzFYV1dkZWhYMHZYUmp4aUluWEZYZWExTU1mS1h4aXBIZVpjN2l1OThkc3RYK2ovaHR6NHJCU1VneVBGMER6ZWhWM1dTUXI1TXhKVUZWd0t3OWROSXBWS21QUm0yV2dnRllNSjVHYkpXR0xrYjByVGNuSXVsS0wyTTBCZlNZL2g4UFNiS1lHMlNVczZRNFZaME9Cckc1ZVlhanBQbm5vdUZ6YThUMmpzb3hmRHhXYTBCM2x1TUhLd1ZFd1UwaG95RUNwWjRydmZBSldFK212R0JiUEI5SC9hL0RqVjNYYUtSRUdlZ1pFVjl1Zi8ycHZ3a2crS0hyajNnWDJ0d2kxOG5CVFk0cW9hcVVaWTFRdHZkZW5ReHo1d2lSRkp0VGJOaHlPUkFoelNpa3JyRElpRytndFMvS282ZWZ3WUxYZWZxN01WL1pnN0VCY2lQdk8weHgvRmo3Skk5QlJUK0RpZmtqQ3ZwWWgxeEJueVIvU05ya1h3dldiMkhHR1paY0MydzU5SS9pbkJueU5CbFVpR25rd21lSG9sUGh1UTMySVh5OURZODUwSVlkZWZHQXd3VDlPWkhaV1NiOTVUK0wyZm9TSDRnek0vRm5XUEd2SUcyZkYwTDI0STBScE5EbEgvVmREQ0R6dFlIT0Z4a1I2cUFzNjVTait3VHhYdjF3NmRSMmxNL0R5cklNL3hTSitBT2p3U3FLc09KbUdnVUk3Wmx6alBLOFBSOGd6Q1BNYTh1TGVWL1pjUk1GdWdqWlNnMW5SQUxaN3NJZk5mVW1ockRJWnptR20ycUt5VXhCZkRFS3RPRXM0dTdBZENpWUFIcXkyWi9SVHgxZGhEVE9qcXFqSThxbUdRdGlxZUhJNDcrbUMzL2poRWdGdlZKeTV6Y05meks2MTlQZlVnaEpCdnhQVnhFMnA3YjBzZnhRVGZ2aUNlalBmZXAzVXdzM2grVE9rSWt6Zk93SUdoMkNTcmJGUHpvQ2tOVkxxNE1iRkJOMUxPZUtjMHZ6NnZPalZBUkltNllpNjNKT2p0S1BZdTMxcXY4STlVR3lXZEdNcDVjMUxhMjlpM3ZQazhENC9EcklPcEttNVhPU0MxVzhxQ2JpL1ZJaXR3MVVaUHZsbjlOS0E3OU5Gekd2SjQrOWswK0hTRVFHNGl3bUFhc3lBMjZjQUQvVXF4SUFuVEEyaXhNUmlQTXoyeW1BRTNvdjYzdDhMQ2JtcmJNc1VUT1ZySllnZWxkaTBaWXRjTDdoMlFuRzk2enZUamd6Q1pWL0U1aE84ZzNYSzIxVlJ4Z1FCam5ndU15Y0tSSG1LeTFkd1QvbzE3YU04bjNxa3VzMjBic2RRQkUxTEY1Ull0ei9iUDlOdllZRjN5N2tMbWpDdGRxYlRPWVZXZzI2K094Qjk1cXUvUnB0cElDYVFBM2w4L1VZUzh5Q1B3TEZLQ2tJUFJ1a1FtMk5XTTlLN2l5WmY0c0ZvK05WdENMZnNRTHE0MDh2OTYzQ1JkRUJuSjBCZ3ZCSk1jOElObWZ6SnVybWZiUVMwUTZudFRScFFjRUhQVTRxK0g0UnE5RDBDZTgvRGFFWnozbDgrOUVHdEUzRlNrK2YvVzVXcEU3bFcwaEplUlIraWlhTkphQzVxTkQyT2E0dnczQlYzRzVHek0vcVVHRHZyWGk3MjRob2lLWlVRTXFiOG9LcWhoYVJxZXhtU0c3Wm5tZzNDNFpUQWlLQkR2OUVVbmdZWGxqNW5wWGZEYTFLckNaTCs2U2VsWXFiNm96anUyKzBZTDA1bzJ1Tmd5bUE3ZTUrUFdNS3BKR2sxRURXTzV3TVZwU1RGVnFZTjlCRmV2d2p1aGVKU0NrUXhWMm5EQTIva0hMWjhmSWNlaFN4K2x5a1hVNzNob3lxYUJEclNNMU9Hem9keS9JN01NVElrRlZ0d1J5ZEt1VGdpcWNCc1RwaytZWkZkVnZQOFYwMlVFUmlWUFdMa2RZOGVmcjU3L2pmVTB5eDBDcUpCUVBWV21ITmhCSFhvbGFTN1pWbTNMbWhtenVFN3h3cW5QclloSW5GZVFHYWJOYWs5WW83eDhvcGFkOWM2dzVwYVQzY3hRSkxjdmVxSU5jbmZuVXNBbjJ3ZjQ0YmNQKzJxRXlHR3NsaFdXN1lURWc5amZUWm54LzkrQ21HTk5nemNSZGtHYStRMUYwRWRLczhpdngwTm5ZWnNvU1NGZ3VrbEt1alUvTEYyZHFQRHNkYVdVVlFqbjQxcmlONVdGZDQvWTl2K3ZmVlBpRVlGdG5CQjlYcGhFbFMwSkVneWdOaitjbkhnVWY2NHNBY0gxSFpIU2NiTmRKNW5FTjNOVnJHK1hPUWU0SkFmaGh1dmFua1dtR1RBVyt0UE5MZUc0K00yOE9rTzg4VTFLcDhpNk0vRnZuU1o4N2lIa09yUXNtNisyZU1QaFBkNkovWEdlQ0JmQ2M1TGlGTTJFK1pDajF0Nk1WRFdTOTlTeDQ0QTVJYU1GSUE1WDRJNkh0aUoxRFE3RUtoT2pKRWl4UmhNTnRGcXpMN1Nkd24xbXY5aVhZa3dNM3MxM2ttbVUrTzg0QUxGN2FmMFhxdTZUK3ZQS2YvQkRKYzd2RjJDQ0V5My9Pc1ZGbW1Ba0YrS2Jqek42TTdibz08L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_24.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNi0wMy0wOFQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgo8c2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjx4ZW5jOkVuY3J5cHRlZERhdGEgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50Ij48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIvPjxkc2lnOktleUluZm8geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PHhlbmM6RW5jcnlwdGVkS2V5Pjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48L3hlbmM6RW5jcnlwdGlvbk1ldGhvZD48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFPdnBadEpOdFEvck1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3hOREF4TkRnMU4xb1lEekl4TVRZd016QTRNREUwT0RVM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZVbGNpd0RQQ0o5Slh5MU5zeEtmcXlPZkxRWEZLS0dnTktLUkx6TEFXTzQzR2dRWXJWNjdRYUFueTVMdmdPYTgxS1FPWDRJdmpKeTBuZC9Wck82akc5cFRkTVI5dkZIVDBUdTNXMVFVc3lQUFNRcXBLWHdiMlpDU1hOZ2hZRDVnQnJOdG1PeEFPczFBeng1cW1JekJKNEYwUmtSaXZjZGJYU2ZCVUJMcENuMU0yODVjNHRrNVNFdm9SZ0JlaXNMSkpEQjdobXlsQTFWNi8rQk4rTjZiM00rWlpHLy9DVHZPakpLZ253a01BTHpYYlBiUVdhMGtwYk1MRE16OEtyMnBPRExLYjNyR21kZjRQNkE5YUE0MWs2TDRjbFRzTmRjSzdad0oyZkdGNzlXR3pFNlJMeUJYMlVTM2dQSFVYdC9XTVFaWHlVTE8zZXhpVERzUVhXRmY4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnUVFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUIzZlFaejJxTkFvL3dvaFBOYVIydUFha0x0MjVjS3JzYmduM1h3TytYK0RSSDRucU1TWmtIZExHcjgyeEQzaTMzQkxTUXdYekZlY0VOK0NBOFNscE5vSVhId2s2RDZWM3VFQlNqS2VtWnRKRkNKcWU4ZCs1cXQzR1Y1MEFLbXRFdDJOYzdCOTRUTjh4QjVFbVpsYWRuVEpXY0JnU3V1ejFoTFhRUTAyZEozZERxOEZNbHlSNzBTMkRUdHVQdTBpMi9mNkt0cmxtbU5zVTI0QXErZkN6RUc0M05xU2hPTWVNNXJEeExzU0pDdGpmTVJ3RzhZZXlOZjZjQ01TTXhZQUpmclR5aitBUzhSdFpRTkdGN3RYK2V4RVdIT2YxQzlDQnpIdEtSQ2xCUkw2ekRqbHBQQ0lEd2NNRmk4Tlh2YWlWY2x4SXEzWGRmcXhpR0JCRWxka2hnWjwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjx4ZW5jOkNpcGhlckRhdGE+PHhlbmM6Q2lwaGVyVmFsdWU+U083bWZtTXRhUVpxL0lTMFo2MEI5YzNBR2h6Zzlua0llWlFOTGZPQmZHbzN3VVBoei9hbUNBYXgrTmZ5S1ZjVnJYSXBqeCtESXFzdVM2YTNLMC82cjQzMDFHTEtwNjIvZXJha0RxT3dNTVlsUUpab0ZoSS9pUXhVYXQ1dmN1MjRWVVIyU3FWSHprMWxRVyt5R0FaNE1rK05OYkpuMU5xRVZYWnl5ZGdycTdtWTY4aE8zWmM2QmhmemMxM3FMbEhaUkdrcVMvME15Vm93Ym5SbE1GOXlnbnZJTVpJY0pDanJNajFMTmtqVnUvdUpoZ29BYzZXNGFuSFhvbStKMUZvU09FL0I1S3pwOEVuc2M0MTRFME44UzRRTUp6eWpFMUltT2JiUXNLWGg0RysralBRUndiSDl4am5PRnE3NmU1cE9yZWlpS0xlY3R4MDI2dEorYlptZHZnPT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZEtleT48L2RzaWc6S2V5SW5mbz4KICAgPHhlbmM6Q2lwaGVyRGF0YT4KICAgICAgPHhlbmM6Q2lwaGVyVmFsdWU+WHFqUFhwM3N0aThVUm5hc0wzZ092eWhYNGNIdCtvWEtOUW1EQTVFczhjS1BpQ1QzMzdacWtYaVB5TjVndTRISXNoa09IWHZuM0pOU08yVzBObCtEczk2RzhjNTlIR3pIdDgzZGozYWFhRzR6L0czaU92S0UzcGZGY1FVZzNTczVLVWhSSW1OQ2Q3THVhNUdTU2oyQzdJZS8vckR1RVg1KytHMW41WnA0aHQvNmVidVpTMUw2TWZZdUc3eHRiVzBYUUdweDNzWVlvdzNwbUU4VVZ0aEE3a0ZDd3ViUm8reXhjMHdGMlQ3WFBNVi80UzdJY3gwY21vSDN6c1RwcHVRRTltZjd0ZGxjYlJUUDZuSE50eE1vTTQ0U1FNTTVCLzZ6VlpiajR4Zm9LTjZ4d2RmeXAxbFUwcjBJTFEwSmlsR1hueE1IU0V2b3VyaExsZ25UTm5JSDZKUWRzRCtERE9LWGtLdW91OWVtWU5zUS9VSzJkVDJSaEJ3WjdueUtDZXRrWHNGb1pVZi9BQy9seDllK3FHbmo2Q0ZYdEFvdjB3UExZWmN2eTBFaXE2eklDa0RJeWNCWi9GZ3VrMDNxN0JNc3MyZDY3ZlZ1amFOR1JqOHlrTC9yUGorV2dHWkRMci9tR0U5eUd5cDBHeXJmT3JueDdZWHkwTXZoV01VU3RGMUxmV1hlMnZvRFR6Rm81bFI3azFnaEpqZlRjS0h2VVM2MlhSbWpaTHBWZE15R2hBeXdQSWgxcWVKZmpTQ1JWckVKZmhvMk1qRGpaUjVNaHdBM0lwd3F3a3A5dDZRVW1hRmc5SCtjc2JpaWlDVjA1d1pMSmJXNExpbnlrQzlNNE5UZjRGa3dJU2RlYVc0bldzZGI0enRvLzlYeVZIOFV1MU0vOGVnTEpySnZVYnpqdW9DT1c1WFpORE96UUwvZHp4MkVFNUFBbUJWT0pMc3h6bnROUHhrNjJlTFBpb0RvYVlLNGc0ZlNYREF3cnZXcVdOQWVCQXlHck1UUmRNL2FXanNsS2txY25yQ2lEelhsMHdhNnFXbCsxUHV1bVM4eVhGR0E1bFZYa3VrNlRPMFIxWkUwOVR2cENxT3V4bzFMVURtZ29GOGx4VUJrOVNmZnFYRDhXMnBpNWtNUUkwQXk2Q0VvdmNPbEVBc3dUeWlObDlKdXp1dkxIQ1VXSThDTDNabXplSjVxUXNRaStlRWE3SDdVeVVKaVRObzhhT0NpY21FME05bEdWNjBnVFpIbFpYeWJGWERHM2lzdkhCakF0K0NZOHNUaTZCOUx6WWRWT253UDVIQ3JuRVhXelZCRGRpSkQrYTRUZTRXWlAvM1JndVdvbTZ6MlJGSDhPbDkyellQdnhROUJBQjk1KzQyeUJ4UHoxMWpiNDNxbWxLd01IbXhUdVg1dUNidmhYODdFTDlHbndKS0Fhby9sYTJkMWxHOUxsVXZhMER2TWJhTTlzUEp3dHVKZTNCQjBOcVhUQ2hqMGhEWkJHUm5vS2F6RmNYdUlPOEtSY2IyTWRQbnVMM05Sa041V0tmMFNQZWZCNWdOMFJXVkYrdUdPTGJscXluYXVrNlJoeS9ocFkzQk1wVFVXOFhTOEFaRW1nenJBSUtCTDIvMERSYnhSZmZSbW1VVnc5M3hFRTMzN3VQVjB5TTdOSC9HemZDdHBCclBSMlI3RlliMmdrbW1MaHFXUkNCTVFBajZIRDdQam9JZVJXeTkzeEwzNnFuaTZkVXBkOEdIQVhZa3BuS25JQkhNRzJQNC9OYm8ycEJjaDdSVjRpUnptUlV4WkhWME0zUHR3MEFmeDZ6ZW1rUGhEMGYrckdWbnFpbDl3Y3p3azVjWFYwRHQyZnRKalkrK1pzODZnUjc0c1dBWmxWK2ZtVFc3UWNEdjR5UkxiL3k0b1k5dlFGNkRCOC9YZDUzUFNVS2RlcVgxOUpMNGs2N21mRGxlc0h0NjR5OEcxZUNocGpkMlFxa2h0MXRXNURjdit6NGFEVFRmZWFSaDlqcEE2RUh3R0hIaDNSNnF2OXpTTDhxdFZjUmhjbkduY09mK09GT1B4Q05VcU43QjUxVG5CcUNQaU51TzVsS29LZzg3bVEyaDJrZXk5OEk0dFVvUnlxeks0RGVJSVdWbXpmUmx3bE1ZSnBtTWNDZEhmaGN2Vkt0SW5TcWNqZ3RsZUhLb3Y5enZMZkZCR0lXYzM4bDl1YmR3MU04eS9tS3cyRGpmbno5Ui94YjFyZ3o1QzhBbUZ0ZUxmbWhrNWlKMlhBaXM4cDJRUnJyNC85MGRvdTFmWldzUXd2Y0UycjIrWk14VlAra1JUTVZ4S0VZc1JEL04vQmJvVXRnNG1SQzRPSGtYRzhEZldDTzZqMVgxd0plbTRPTDc2NEpIWnQzMVYrNVF0VFBXeHFvS3BBRk1rQUowNUlnSDg1SkVGSDg3c2x6RWhmYzJzdnJEV2d5Vmcrb3lqNGgrK0VyaU9GYnBsNktSbmZQZkRudXhaWkMzMzRJSUFtQ29GSWNaZlZaQW9kZk9IVnhCR3BQNHpCM3pLRVdhendERWJYd0x6RGtUNmVxRWhLT1VmSVBLVkFLSjBvWEMxeEpmMVpqbkIrNnNMckUzMTBOSUFodGdNaUg0SUM2Q25YelJtVk5TNS9RV0ZpTjNuWnFOaExUbWdnTXRJQ2lIeGNoZzl3bnBnanVrMjVmVGpWRm92WFZWODFDUUFoeU53WUYzYzlNYmxNWE9vSVdGdm5jTWUxYXlpQkFYZnB6TEJkWitHZVVJS2RDTFc5eDZRZ1FsN1owVHhIeFVreURVeTA2NWI1M2dLa25GTWltd1B3T2IvWWtMTHF6b0FvNm8wUTZnUTJkbUlMc3p4cFB5dkpZdVZRWVpkQVdxUlM0NWVzTm5NeHdtSFpZT1YzTTJUS25odWlpTS9WcFpNQ1I5UUs4WWNXQTdzMk54K2tQN1l0VUNxbEQxOTlnMVpEOVZ0SnVHK25CYUYwMlZ0cHdjZk9VVDFweU8yT285SVQ3WWhoT2VnTWI4WXhuUXZBZC8yTVJHN3hBb2QxSmJLaTlISHBhNGpHMlRsUkVGUTdvL1BYbHdrMTdENjU1K0hYUWxGQ3VlZDdIbE1pVHE1SGxMSkZJR3ZxNVdXakVNQlhjcEJDZ09EY211ZHE5eG9XTmx3RnRmR1kyMGFIZmR3YlJvNS9LeTRvWFRsS2EvdnYya3BobGxzOXRpL0I1TlBmeGk2YU1tZlJGTGx4OFBIQ3FiaG5wTFVJV0tpM3ZEMjN1Q0RyVEd2Sy9NZ1ZodGRuZUM2RVBRTHhNWTFKcUxpRVlHRHVnR3FoUFplQUZ1TCs3eFF3ZjV6WU5GTEtPQzBGcmhXSEt1Rm9pV25HaDcrcGhPd3dkWGNZTlM0K3hUUnkvMWl6T1VUSTZ2MDUycHl4ak9raWlZU1h1aTl3WVIvRTEwN1pvdUlZWndON1pRdDdzb1VBWFRiUDB4ODVlcVlpNWhHTzNDWTVOQmtWL3phMmhmclNFRGx3YndkUEpjYzVWcjlwTEo5MkNQcll3ZHU5M2hrTDBweHhqRlVsZFVWQ0ptUXJxbUZPcXlBQXY5MldCeGtmWVRMYTBzb1lKWHRiZDJEYUFsV3dLUkdQT3NqM0RSQjR6dEMwNitiR0hOWnZGL2grUGxJMnUwdGtrMHFmUVZHWkl3SGJYOWh5dG1iR1QzTlVnWHZJemRJcnZhbHloWlBuNlN5bWdpTWpRdXlTUWZCNVUxZEtlc0lncXB3OFNiY0c0Wlk4U3VSUmNFNldIUjYrSXVVUThvelJpMzEzc0R5U1B4Y0dUZUNNeFA0Q1JQbVlZeEpWRmpxc0xwMzA5ZFlZTTJzWE1vWU5mRi91MjNDQWtYMlFjV0pCai84emd6R0ZBUDJnNmxMM1JkQU1SZDBPaWhMWmpUdUp1N1hTTzhDQVRjZzJIeFpNK2N2SWJqbm00Tkl1NzZtUDIxSEN5MWZ5cHBWNzVHVHIrdllFbUFGeWZ6cENEeFlkSlRNZ09NNjY2aVJsVkFqWnhMcThiZnJ2alRWV2d3YlE3eHpNWTBUenYxd0pPVUlqTFpFWTU5SFAxQXdIdkFlY2RMRWNESG9tUjkrR01qRDZWQnRMYjAwRE90S254NjRlVEx1bHkza2RmZG9VSlArQ1MwaVhpd013dEdoY3hqYVc4ZUt1akxPU2lVNXpLSTNwNmZRSTM1Y1h2Q05UQlJkd0w2VHllWnE5Sy94K1RwejRaRGVtSXRzUFhMRWFMcER0Z0NmR2Erd1o4NnlMYlEwUGF2VmtFRTZGZnF5UGZJZE44VmZzWWJUQmFzTmFubU1KU0hKWDhVZVN5U01FeURPdDQwbG01Nkh1N3V0akdsTDYrSy82am90R3VsK1gwZ2s1Vld4OEZnT1l1Qlp2blFOSHN0L2VZaUVsbWVTQk5lL3ppOTl4MEhUY1B3TDZrUjdybkxlODN5eExuVW5mRDlUT0N4ZndPTllzeHgzaW90STZZOW54RlBIL1VCNG9XZjJHS0lsL2dkOUk4c1ZBVVArYlpKbXVaMFFUWWxFaC9NWXk3VWpYMUdTQ0JELzlXVUlOOVF0V3hwUG1OL3FrOXh0OXpJY1pManFoY1AvVEFIeE90eVRhTWxhTklMMjZUZ3RsS1ZCSXA1blVCUjRQOVM5Y2hkYzYrQXBGclZFZlpETHY5emJ1N0dBK0t3Ulp1K2dkblFFT0swSDVrT3FTWEdFUDN5WHA5YVAxdjNyamVyaTVmaDB6eXd4ZUJyVmpXNzhRYTJjZDVpR3NFSmRLWDNLeTZQc3U4aTY5UldyTFlKMDVJYkpadkRXN1hIZTZvSWJFN2R2ZG1ubHJmdzZXcjFzWVJEek9OKzVmM1R3bTFITlhScVQ1UFRYY3RkK2tXNy9aQ3l1V3BTS3Q2OTZGVXFoNk85NzgxeWxITzRBU1ZYUmgwSHYzQ3VibXhrbVRPMHh0MEhsZlg3MEZwR0E5WXUzWEd2QTdIMnY1QTN0eFJMM3lvS2xJeG9Ueis4ZkN4NU1XczE1N3JXbXI4MzlXMzlER2F6K05wT3VzRVdnaWhGaDNtQlhOb21scXo2Q0ZiOHNydE84Q0RKclQxSGlremlmV0Y3OFhaYVJRTUU0Y1FULzlGWUhWRUVOUy9YaEpNcWhNVm1KODljRENtVUsvUktPWjVyc3JFMzRlZldyUDNybWxjLzJ0WHNMNzdKRVkweGM0YzM5R2lZT01CcnRWN0lNcFBqN3YraC9NSi96MVN2VDFDcTNSZWZJc0tPRVpSSFpJUGgwa1FzWHd0SGlYNTkxbHpkV2Y0TzB4cC9EeXhQVS91NnFOVUlQcWZzUG5VRnlYZ25uczZwVHpLY3BNbUM4MFBOT3pBUjJmRGxPZkxTcjVJWjJOTTdOME05K2JTbHNWblFiN2xuSlp4dzNGV0h6RDV3cTBNL29MYlVFeUVsdEpnd3R2SHNERk53TllSZS9ud0tZOWs4Ym1hTDhieERIZ2hCT1JLRE9RK3d2ZmpPamdWTmNranJjYW1rSFV2QmNTeWhaa2lVamlmT1NqWVk2aFZHbWhTZGVWM1dLL0loQVNYaTVYK0hWR3A3eVlja244bi9zcTMrdXpGemNoOStwanNRR3VZMmxuK1RYVFBBMHNoZ2FXVHp1RnJlZDJ4SFpabkI3bzFpTVJLeUtWOFYvZmViOXJwT3BLTytLRllGdEp4SDNjNi9HVHlQblY3OVBpTmg3aTREaEZMWkZ6Z0UvdVJRdXdvUURMbHBZVGVnUVFnQjY5U2s3RXlOUXdOQTVHWGQrUU9RZEh5dmRzbXpJam92QTNMV0ZPUFpocm1wc2s2c2tDb0gvUkVlalBwcWVrY1lrU0xMcTJtdGlpb1hPdUxuVGJuU3k0d1BnRGRMTHdFTVhvUm5sRjNLYnRWeWhHWFBYUkNiT0NWczhYNkJ1d1Ezc0JlVGgrWkJ6b0N3dVN1TExSNFlpTUo5Zkx3bzV0N2RETy84cjNUcVk1WXU4Zk8reEtPNHdKNEl1SEhkVDV5SUZUOCtYNi9ENTR6ZFpDNjdJaWpoaUdJK3JwMS9ubW1MclJFTXZaT21UWHVDZ0kxWTFxN1VJMFdDRi9vVDRwY2Mra0ZzUTREMDQ3YkhkYU5GRm0wVmI2ZjRlTFYxMFJsTkZKVmcvczQ3M3RuaWNRNjRLbVBBQzFOMEVUSUxVUUMrM0x1SHN3ZDJYOENMUVZ5Mng4eWRaaHRmRldWdmorNkNMRjBqdzlzMlgrcWtKdkx1bnBnc0J3Yit3ZjZxc3c2cTk4bGx0S1NIVHNlMkxoNE9RaUVXS2RrNTByY291SmNSSmpIazc5SlkyUVMrNmJSSVM3OFp1eU9ZYVYvODhiaENrS2ZQb3pZL01QVVMvWmIzY3RheWI4d3dQSnZOTU9UcVdpcjJBM29IV3FaMDNkbU5RK3ZadmY4bDNvZ1ROdEFVSnN2UkJLc0MzbWRGRkZOdUNiU2MxOXNrclRFQUtOaEJIemJMd3JPcDNWWm1LaU1mdVc0Q04wNCtTblc2WlBZcEdlUHZUU3FGdEFGMFdjaGZ2MFlRZms4enp3M2lyYXcyNldmQ2dZMDJNQmtGSTJWc2VpQ2JFdWEwMUhLYVA1alVRU0ltTy9vdDk1QUtCYUwrcCtKcXloZFdLVVZudHdEcmphSStTdmhOYjB4OTBMZEpnMFRJT21IcGZEWUxNSWF6QXA2MHpqTENKb2lvdWdLMk8rL3lIZVRyR043Vi85WHUrc05TdVZJcENWQzJKWm40K3o3cWNjSWlnTUZSNUJIUXlTN0U5UW5hZnc3TWltZS9QeW9RM2gzV2lLdWR3cVlNSXpsYWVYRU95Q1hJMU9yYXFUWml3Rkl6SStEQVRUUnJQUUpWdzZ6SGpBdStHU2haMUJ2TS9qS25WdDF3bGxIbjl4RUd1a0pFUWtxSkRkWG9NcEsyb25wbXg1dFpMNy9QQTBBQzNwMFFqajZac0s0VG96bVFVYmhKOEd5Z3lkaVBWWFlYUzVVZlhER2M4ZkhuM25BT0RwU0xRc2VNc1pZYXhab2JHbHB5VUhoMm9BYkIwZ1o2VUlDUzNqNXNsUjk1TGl2Z2lLUjVHRG1CK1FyMXNKWGRIMDg5VVpuNUVEczVYMmFzcngxekhBRUw0YkdaV3E2dGFTLzdGQVFyWkEyRURUdUp4dmEyc3ZNSjRKTEFQL2NTZ25NMEtGazBxRW5yL0dZUTFiMk9UNHBSb2dBdWJuYUpHRG92UjlsOUN0RnRVWFBXTHVlZlcwMnB1TkdWRm1TT1gwQmFTOTF6Ri9laGNDZzNlT2J2RlV6dXBjVUMvZkVpMTAvYmxDQWg2QXBrb1VYclNST09aZitqaDlhdk9EN2lUYzg5d1duN0k0d216bHRhMnRHKzFWcXFLY0E4SlJ2WjJRZ1F4bWpkbjFRUU83UWJhUDRaY0JqUzFnSVJvcFlIeGFzYi9ueERnOENrOHpMUm5FQWFYd3FrVlRDbWdOVDJYZ3lVVlNJaWVsaENXMk5WTzlPcndISXljcGpMR2dXaGJhWm5CZ0JpdHBxMWJvcGdOU1ByQ1M0czNDbmxaRDY1WUM1bnVvYlBxY0RYU0FRN2pLMjZ3SGh3RWpVeXpsOEZpMHg1NDF3ZFdNY2FCYTJxOHZqejRaM3VtTlZrbUM1OHVicXdpZm1oOFZveHZsU200OTBlSXI2alcxYzY1ZXdKdm5NdVpscEIvZHdnVjVwU25kOC9Nd3phRFJRWnNqWjVhQXo0R2RpdEoxamJUeVlmQ0xHSFVXSEZ2aVlDKzdCS1UvL0hBeXZOems2eWI5UGpLTEV6UEF2QzlBbWMwaVRCZWx5SU5XWW1vdmdtVXVIZzczcHoxNHpaOTdxajlYS0NTVmFJR0FmcEV2aURSaFBtL3BsTGlJMVhFK1hiZ1JxeE9SQTZQNnRwdWk2cWoxQ0xxWFZrNkJSb1Nyb3ZsOWxCaDlCZ1J3ZHRUVVJEdm5xejM1bWtKbHNvNW9CRFkrSHlld0o4aWNNQ1pzMXk3QWNhUFo5OVVQRi8zWGhZMnZnc1FmWjZGcTNXbHJGcjN1bjEvV2lZZS9yUXpMU3VrRWpGcDgxUTNPQ2JKa1F0dndXS2pKV2ZJcmNNS2liYUV1VUJBRnN6YTFDaDhjbVRSazdVSjJ5R2hFZDZ1NUxXdmcwdVJJaHhEdldtd2MwSzFwZzBRdVdRdnVTcnoybmJoTjFZR21FYTR4SThERVlYTDdHQUo4aE9UV2VPRUFzMndsNmxLWTl1U3IvM0FKY2NiamZDcFg1Qjk5eENJazdiV0g2THR1ZDQvVlpxb3hJNFdJeVpEUzAvNFdKVFFJQU1YTDBja0U2MjlIQUoycUZYYUQzT1IwQnh1L00rck90bkFFTnFPQTRHQm5tOU80SkttcG8ycVk0T0VtUzc0ZVUycnppcllXelBBNHFtVDRLZk92STBzVmFheW8reFhqTzBNblphZzhUZVdNMlJPcFhBSTlzYTRpNmlsZUN1bFFGdjFrblV1L0VsckFRUXdOdUZwRTFWbklrenJvdDVHbUU0NkZubEJxOTEvZ1pQcXJvcy9abnZJUURjNURVRnhnaERGVnk4dUFidDBLY2dMaXpEM2JMeC8vTlNFbjBuK3dSRC9taS9nWW1sN1V2TnpxbWsxdmVwbElZelJMLzJQSXFlUWZiejc1ZDhzS1UyaDhoWUpuQnZQUTBTb0hiRmNVVzVCbzVLU25ndDN2N1FENlFKN3luMXV2QkpSL21xbGdUVXNEcDNqVHovMytKV3FyWDdEUjkrTXAwRytaZEdqRkZsMUI0Zk8xY3Bpcm4vUCthbzVoSnZidmZxYzlIK1RDbzE3d1J4aS8zNHNsZVdKRi9NMi9JRitmVnRFY3hCTWtXUXBZRFRaTEVab2ZPTGRwMkh3bENEak9TcGp2Y2VqV3poOGNsNUVnRG5iRzFKN1JMQTFHWEtYRVBvdE81K2V0bGtUVVM3MGk1dWNUb1N0d2NGRnJHQTJyKyttcUorL1NsWmdlOGNnbmxnVmoyeEU0Y3BOSUdudGczNnVENEV2MEIwRUZsZWdBbU80ZkphZkRrTDlqOXVqSTJ2YWVDU3ptaW9HVmpNQXU5MXhGdVE4VndRZzRJQzNoR1g4V2JZR3hNOFVybzVVVGtjMjNkQlIrVXRUb2pXZjZYMHBaRklBck9OQlh3Y3RxRGo0THB3S1NNSmxOVFl4TU9QTFdyWWk1V3dla3YyS1ZqREJxZ290TG45L1d3RkNVU3FpNXZvbkdSbGN5bDhXaHd4ZzlvTXIraWduY3dVeklvR1hXQWFWS2tLZVZKbDV3cWtVeTRPbGt0UEYwWDhKUVZYRkEzT0ZGYnZoZDd1MWdFSGFIUzlTNTBJRlE5SzNYYkJpWXJ1YzZZemZNYlhtSXhhb0hrajJNcHkyQ041RWFybmdlbmR2cU9teHhFM2Y3TjhDOWFaT3pJb1NmR2t0cFphci83Wlp6ODNZRzNFeklZRGNZRkxaN3NPbXhjeU5Xdm5QOWZpTVA1SldxbkRqSnJGT0Y5TytIUmxKbDdkU1BRTGFESU5CZGFZcWpZQVhaYkZXN04xQUNaUzFUNFNCQ0NCTFdVVEZHQS9PTk1IN1NsV21OMVl0amZTcGF6ZFo0STNDM0lBOFVMUUZHWW5WN1hZK05WZFJ0UjVwSUwxYzhTK0VPZndWbGZDMjBDRkhrRENIbVJTNjdzU1Y3aEhPOVlqRmdiaEtYbElSUndCZ0M2dz08L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_25.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQxZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVXWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxOaFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFwODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNLWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUwSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_26.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4M2IwNWQxZmUtM2I1ZC1iYTAyLWZiZjctMmM1MjVjNzNlZjU0IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDNiMDVkMWZlLTNiNWQtYmEwMi1mYmY3LTJjNTI1YzczZWY1NCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WFJ3VnY5QW9HL3FTcVVEdTVjMks5bEh3YndNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5PYXhyZmsyYzVoU3BsbVdvbGpwT2FGbG5RUVhTYW1CY2t0Tk1qY2VwUDVXWWx2WDJ5Ymw3YWEwZXc4MWV0dGp0VXlFMHltMmFudFd0endKSTRhckw1ZEdmSGZQUFFuOVhKL0N2Wkc3WUNpV1BUa2ZjNGp3cXNtOU9TM2thZnYvQTBJb0xPc2ZmQTNyRmV6dThmdUNMaXhMOTJLTmxOaFJOL2JyeUY5YTdGejdBczIwa09tcDgybUJNR3V2TC9BUEZPc3N4U2hteGIwTlJ2Q01KQ0prUkFwODM3Rkt4K3JuOFJGL1BiaUZWWmluUmZPMXFnTUVzVi9lbW5uZjZhd1l6ZDZFUHFTWVg5RlE1anNLWm42NG5YWFd5RFY5WXVBdER5bG8ya2JPL1hXRFFjVkIwOE1TZlA5WDJSV1ZURi8yclkybWMzbEUwSUVwdHIxbkw0NU1aM1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_27.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_28.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkRzOUZ4TXVJVWpiZ0hvVEtUSkw0WEk1eVlRSVpMZlRUV200dFhTaUdMN3hYdkZHc25oaFZOb2Z0K0RXbGh4b2VhdkthOVdQWXpwMHpXdEFCeWg4NitsdzIvWjVHbU9UV2VYTGVsbTI0RnFOZnNZOFV1L0s2S0I4b2UzN0lzWHNSMmZtaE1KWVF1N2JqYlVaQ04zSUNtd1lMV2g1dUNWYWI3Szl0bzdyMGFjeE1mNjFYWllDNGxzWkZENHE0ZCt5bEVtbWJ3LzhoVWlMSGgrcU9IQ3FqZlNrSEFRK1lPQlVhNlpHUU12WTVQNFpGaEpaWjFQRGZMSkUvSzkwUy9ZZDBia05vdEorREFYcjVKbzJjMHQ2RHBzNVZXNDNDMXlqQW10d1RzalRpVW5PcVJUZlFGYmdpbGJnMm0wMjFPeHBhUVphaDliMDU2aFl4YmNoQ3lwZnRiUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPisrUVRYdWZvRVpIQ2FzMVBISWY1WUhxTVpnZ3ljWVhEUjVNbWJBV2M5aXlBS0ZiNDd1d0hqdGVKeDBybUI3d1VqYndVaFlqbFp1UmtHclRRQ1JLMDVlTFJpZVlhenE3MU10WVZHVUxuV01qTUxYbVZiVDJJR2pWRE5EcVZUSnpiSE9BaUI2ZUtaZWQxbkhhTXhrc2xLZ0cxR25nY2dJdTRVd2gxanFaZEtBeWpBcWxGcnZVUWxjd3JYd1lzRjB4K3dhMk9LQUlsdFV1Z2w4dXIrL1V6ZFBMRWROUm1HWkN5YU5DODJFM2czOWpvbnhQNlZWbGdPUnBsd3NzZ1VUVEV3czFQNENhalF2NjFMcEQ4VCtSNHpCMjF0KzZTaFlBTlc4T0s2LzdRM3BiREFrc05JU2g5Sk5VZFNPQzRab3MvMkxmQXg3UnpSalVUdS9JdFJEM0ZiazdGQzVEdTJYWjRTYk9GWTB0dlR3TFVFQ1Q4RlpIdGxPeE5mYW5IRWx6WG05VDZLT0VXUHBLbzNCZ0xvODJPUE96Y0F2aXkwaG5uWDY1aXl3YWZtMm9BYzBSbTBVY0Y5Zm45d1FMVDN3R1ZTUzkrUjRvMEpuY040aVVvaHl1STV3SUNYMzBYZzF0Qk53L2ZFU21HK041YmRlMXdIMGRKY2d1RG9mOFZPdXYxemg0Ym5PdEVBbWl0Yno5ZGJKREgvWCsvdzByRHNnK0xFQXNzM25GZXNSOHJYOW55aTdiWUtyRjJ0S1RyWHFCZFpCUTVyS0gvVzNXT2dBNVc3ZHlYaUMzMGZCMEwzc3RWWDhBSSs1cGM5dlhhcVhrK2FiVXd3NmsxUnB4Q3Z0TlZoYjBGWG55ZjRIUmNScHM4RHNjOEk3V1g1dEhZVzlhQTd2ZFdPMTBIK2ZWRjhyR0srRlFSMEhsWDhpUERjYm9DQjBVMzJIdEZVbUhZT3lpRHo4QXFSUzN1MCt0Y2NtbTNyUGVKUVdWalV1KzNnWU1xWitCaVRFZi9CRUFoWmNiOWIyQ1NtelVDYmlQK3RwT1hjUmxleE9mNUhXSjBLa2pjYlVod1Q1L1RlZCtYUDhSeFAwQkNubzU5dWlLOW1kUjVsUC80Y084NnhMM2pveS81YW8wT0pCZlhQR3V3YkdnbmQzQ2lnUTVRN2l5YmhGQ2NPaHVuUU5SaC93S2RsMExPb29nUHdUcnpjb2hHTTZsc2pGWmpXM3ZjYmIrdXhsRmdzdEVZU0gxQ29Ga0hRNXV5SWRlcjh3a0g0TGh6cFpWL2F5WFF0RnRPWDVKWFBGdWptbXJnYWhRaVpLdjFQMFVWYSs5S0Zla0xOcXVyTXdPZGRjbTNSK0NRMU0xbVUwNWdEKzFBMnBFUnhGMG9BOHNKM0VPL1JSKythdjU0dlU4L3h1ak0zcGFZak5BdkpleVFPSzV4MHVxWFM0dEIrL2JTUGpEVXVBTkRtUFR2NE9xTDlrL2dQK2MzMGxPODE0NG1reFFKN0FwbGMrMHNQSmt1SS9PNmQ1TDArRjFEYm90Z0h3ZzJNVDUxVElGYWtDalN1RFMyOE5ZYkttM2lPU0VFb29vNU5zelZoclEwa3Z1OUg1enVrWWFtYzNVcTZ0cmRIVFJQQU50anJ0YzZLSG1xV0FkbzBpSklzdWJEVXptS25QR0o1Rk5jOURJbll5U2ZVOUtraEYrc2RMU3Q3WkUrSUt6bmZoaDBYWUh1cHgwT1F3a3c1WGxRQnplbFdtSTdFbUYxWEVwd2UyQ3Babm8zU0FpaEdydTBVbFZlRlJmZUFyZzgzRDl2Yk91Z3hDTDAwdGk1YzhZYWg0WHMvV1BocExwSGhwWkNtYTJLSEJVL2s0d3dNSVpUY211Rk13MmpqRFNUaGMyejIyREJvcE9JZ3ZLMTM4ZlpzMnRoWEkyekNaY0d4Y1JaSElVYlNNVjZpcmM4RW94VXRiREpTRWZ3Szh5QlBERXJ5eFU4bGVJc04zeEJ1TEpYeDUxODlsNzBBRlVLL2w2WXZjWWxTTlBGRkl6ZUxsbldPb2JSZzhJT1RWYXNOMDVjdlhHTHpRTjg0VmZXK2VTdzN6OUtudkdHVFQ5WW5WZ0NtUmJXMVpDNGZzRW5nQTBja3YzN0NHSGNwOHNXMVYzLzg5NjJCZkRBK3ZhOURSSkxsWTh1ZHh3T0JiSDgrRmkvSkQ2RjFFcEx3ZnIzRHluN0tyalJrYUNrNEpiL3E3OU1LaDB3SmN0TkdHeDdXY3ZraGJINVRWRmxwenF4b09nQXpnTy9XS29ONlFXZ2FCT29uMFhzZjZnYndENXhtNHg1RkxOZFlpY1NkTzI5WC9tK0tjejhUelN2eE00VElNdmJkaHhlUzJMTC9xNTgzc0xuaVRSa0Z1bHBBWjdiaHF2TVl3RWJsczFSNWxBMUlkMlNRZ2tGWENoL3FTeDltOFJVN1k2cWc3Z2pIYTVWdDdXNXEvYkF0Mlg2b1d1KzBqUjVuNy9nbFZWYU1KY0ptQUQxa3pOQVZwdjA2YVk1YXp5QTkxY3lSVk1Nb2t3NWpYdUVjZkE4OEJIQjd1WDVMNEVuYWFiNllvN09Ia0hteXE5NU5PSmN3ZURVNDVBK3RuTStWbHA2eUFWQ0NkWko4UVFBTFRqajlzYVB1anpVWEpkRDZ6RlNVeDM4SmxGa1duVllVMCt3WUZSeW5TaHhVbWlXUUhadnJ2VkZVVVU3bDVsNzROejFHZlhqMCszbUwwQmFJL1lBeUJyczZmSTljSGpCWVMzaERqQzZGL0NwbmFGVjhVV1grdXVqZVowRGhmRXFMM3BoUktveGtyS3grNWlBaGthMklqaG9KSDYrVnprTVI4TVYyam5UbFVNZ0R1R25BSHBYRW9kR2RNRDcxald3RlF6SjU0N3lrK1l6bDc0KzN1aVdLQ3RrZkhDNTJFVzV2VnpHZTM5TkxMMHNRU3VwQlZXM3hGK3lRN1VDSGVrT04wQ3NOL1Z0aTJDVFpGT3NOVzQraVhuYUVOdVF0eU43WFRtTEtFM2o1RDVEc2M5QkNoSHV2bzdBV2ViMGRPdDBNRXFta3QvSDV6L1RKMldWbjZHem9xcEJTZEphamNBT0VZSHp0KzVzNkdkQ2xTZ0lTRk04RHdpOXp6bVlSR2FBVkRTakRXc2p6VmdocTRjMytua3RPNWhabjd0SE54OERGTnZORVBzNnlCZjBaL1NPeDRseTlBMGRubWNrRnFiV0dKblVxOFBVTWZkQ2x2bDhTVFNtdEFkUjZpWUxySDlodjl6M2ozYi81MGQ1blZPKzJnQUl1clp2QkpsVFBOQUNYdVA0ck94ZEQ5d09kZDFjS3haMGRmdTAvMlZkam14Yi9SN1ZRdDNGaG9zcGVCQ3plRDVQWU9TUU9PV1VzQS9hM3dod0RTNWJUY3NvMHViWWdqRk5GbHRkZk1FOE1WbFIwUmZuM3ZyMG5PMDFXRGhKVGE2MW5qcXRIeFNWNFZrS0NpaC8wTnZOSWVQNEQ3em5KQm1oWEdKSFlxN2R1VUdxb0ZHTHZQSkFmd2JRUnNvZG42clkxVG0yOHJ2c1k1RWorZmZRanlRR3phS1k3ZTBuT0dPbHdJQVNVS0RnSHhzTkVCOFprK2NLRDJWcjhpUFo3cGR6ajY4YSs4aDNaYmFHQ0dCQXhOTTdlOVM1K2M1bjM0WkVGVlVnNU9lMFYyWi9JVlVGbGtRQVNzNEtzdndFWmZLdWVIeDRSK2EyUDQ5dUpxbjNBWkJqYzVDdW5sQm1iRDBwSW5SS0JqMHlNZUgvRGc5Uis1UEMrZ3dNMmNaamZRMVpWM3NXOWJTNVZ4dE9ET0JsL1prL1BRM1JHRGtBaUhZdkdsaGt6d2JNbzlsZmZ1UHp3Rk5GTllZcWFXNGd6MXRudUJhTmp4NUxuUTAwSkFvMTRZbGs2WCs3L2ppazBqd3lvRndSMElWUVRoMkVQcytKMkNicVRhNDE5L0xVNVRzRlJQTTJGZVBINk15SDE2K0tXYnkxRDJrM0xHUjJ4OHI0azRzM2w0N2V6blRQS0lMdTFFN1FISFFZMDZUZWt3eWhubTdlOTZqb0NweStRVkRpZGxYejZmekl4SWkxMG9yMzNVZDdyTzd4TzNsSEhKcmNXV284UFVobDYveFZRRHg3TVdpaFhuSkV4d0hkU1BtVjNkRXowT2k2WmJRYnZRZVU5b2tkVHV0Zk5YTmZURXNXd0E0bnNFdTNVeUlOTWhiYjRhRUo3eEdUeGcyQVFnaHpOV0o0NEtibWxKNG91TTJYemxlYnc0UjhIN0J6WkJ3WC9aK1VkMDJ1VzYrNFZJK1Fkam9uVWwySmc3RnA3cjVNbitoKzllOHBLU3JIQzZQRUsvbW1mcDNxMytLcmdtM3Q5MGh0R0NXVDRWbUxWbDJJVURSbWRkN2NhU0dDMVlWdUtnNFVjWSs0OHU2bTN4NzNaODUwS0psUmJ3VG80YW1NUjFISXlPQ0krTE8wRVd2UVk3dzVienkrU0ZiN2tIenRIWnFSRElEUkFQMDJIamlNaWZzVHFUUitDN2hFRXVwRGNoczdKeXQ3V2JVaDlTVmthU1pTbjluRG1mY01vMGVvTldVZVNuS3hmcW1yQTFGZGg3M3Vzb3dwbERsekdFeFI4TVZBY2plQ2JzMThYZ3c3K0o1NEd4M2hYLythanNUbEJuNDRiOGRNWjN2bTBOSVAzNmJtUUNzd3QrZGlhbUJsaVZjbjQrQnQ5cXVJNVNsOWJ1Rm5kZ1lEV3Urakw0LytlQkFnQWZXZWxFUDYyaTExYVYzM2loQ3ZMSFhSNk1nR1huMEN1cVlUNEJNV1p6ZVVzNEo1Y2RxbWpDQy9MWUk4ZFQ5bS8wL3FBSXhMbDVvSXcxZkN1OHdzN0p1UzlCVWpmdllFR0NOUTdBdXMvaCtscld1TjBSalhDcTZ4Q0c2RTNMR0pTU1BMa2c2RFV1aVc0SXByMUMwcEc4NmVmOFNDckNxMENncktpYm5mTmljbllhR0RtM2FGbDRYV2hLZ1NMM2JVenh0eDNvd2FUMEZCOHdlYkxjYWdjd2FmY2ErU1F3dzVGQnQ2NG43cy9yeloyVTlUZDF5dkVwMVpXTjBMMHNEanZ4bm1UK2lDRHZvVXlkRTA5QTJJKzJMREQ2M1pldTdmSjJpWUtBelVyV1RJcDFDa0FVSlNSTVlZckQ2RHNlQUMxYVVxaFRDc0g3RUd0aFpCSE1RM0ZKMUZ3RE42S3ZIZWt4MFdyWlRWR2FhbUpxcm5ZdTlLUlRzYjByK0hmMHc3eGcxdG93bXk3TU5TcjdSbGZNeG42WVYyRTRiY3M2ZzdMTUxpRElCdjdYYXFYMURPdm1ZdjJrakwrd0pGZlVFelA4VUQveHQva2pSU0k4RURuSGhYNWdDVkNNWWk3bmNLdVY3aDJHU3Z0OHo4cDdJeUtXU1BRN01iUC9WNjlDUmxBNEpBNzlmRmxkRzhMbi9YcWwydGNYZHFqSW9zMkNJdTVPM3ZPV0U3a0ZjajNpTkJkc3E3ZHBmdVdVeU5WdDB6ZU1CU1I2US9GamZwUVIwaSt1a1c0c3k4WDViWUJqQUhXY0IxRjQyTitpVnA0V3k1OFNFQ1ZydHJLVE9uVlJrM3l4TWtPRWdpektxZzAzNDYwQVE3OU5pR2JhSDNIWk83WTNOUDg2SnVUd2pDRlFUcTFKSW5rWjFMVmliQlFBY3dSSUR3angvbCtPK3k4U2YwVkxXakhyTGFxbHdIUkIzRDZldzNlYzFwaU5IWHlvYjFUU1RnRnFMREdGbTczSXYxSk5ycXhpN21vbHk1SWR1b0lIOW5Rb3NhVDhXeWk1SmgrV0dqQndmd1plMy81NnBSZmlnK1dZaGRyQnFFSUJNallDVlU1c2xzNm9JdHNJZlFNd2s2Ykx3RmdzOWNWQUtYd25zWklEQ1p5cU85M0FTUkNrU2ZnN2VBYnlIWmFzRmdhbzRiYmhGeTA4K2FFQUVTdmYzRjFvcU5xWjY3S3VzRk0vNnNwS1BGMHc1V2t0b3dKenQ3ZEdzZXlLU3M3eGZQVUVnakJpZ0p1S2EvWm02ckNlM2w4Y1pjTjJxZFlYNGo5VVhZaDVIeWxFdXBrNDRycWxzNm1pMC80YURyRFRXM0xzcWNIbzNuUFhkSk1pOFBSYkhnVndUdE5RcFRNdGRBWTBXZmRaZzdCVGdicFg5Rno5R2JCSXhBMjZqWnEraUYyTy9NemlGNFFyK00rYXllL21uVHB0eFEzcktFaE5pRFlIQUVHeHZtSkR3T0s2d2FhRjV1cmZoakh0SjVnK3FnRkVRTzJVZHhYWHJtak1OQ3prbTZuRjFHTm1QQTU4OHJaQjI5d0lOclluVjcrTmw0VnUyL1dBQkU2TkowSG5hdGtwYlBPZWxkYTJjekEyeWlRUW54c3JScEN0eXhmV0VXQjllaUZVSnlWNTNycENYMUpqa1k5cXJzb1pBWHJRTUxCOTIrZVBDVlZ1MzdYaXJaUVNCcThpYlNSUUl4YWJuZWY0TG14dUpoR1VmdkNQOUNwcnlTMmJPWW9OUG5vTXJpNkJvTGVmSlE1YklubHFFajdMbThtNzhlb2swelU5VGtKaXBoMGU2SExmTmczY3FuSERHcjViUjFqdzJtV3QwL3RZcmZaMXBEbmJQRjBBUEFmazN0TE9WTE81N0E2Nm95VjZLTEZERTlhYmUyYkNzQ3FWZzhTWHBUelU4UEpIQXhKYWpIUmE3UUNTR1dneDVtUmdxNmI0by9BV29nT2ErUTd5KzhXZ1N2SEN3RHU0RVd6RHJ2dDg3cDVvOVl1cWtSM3RjM1BoT1BDWEVrT2ZMNGRBWWs1T2E5NkhRNUptOTIyOXRVcFBCeTRqVGgraStuR1NLUXFMOHVXWEJBcHM2aEJFUUU2MmVreGdjcXQ5UWNDSjZiTWhhOEgwVk45MjhzM0VlNzd5Sk1GYXE1MytyQjhMR2RVcWR6Y0hjckM5R01OWlhKZFhoUUg1ZFhSMUNIN2hpL3BSU1FOREpxSXpzclIrTlFZWnVFQTIwSHo1Z1REallxSWVWQXI0bjdBczQrbkNuQzRwelRzbTNDbzdxSDVmV2ZReStQZzRNY3RyRTd2dklVSHhqSXpNQVFTMmJLUWJWeUFxaWNrQ1AvOFdZb1A3QXdMUE5WbWNRTE5UZUJXQU9HMEQ0WUZtUWlENVJIU3B1YlB0VzR5TUh5VkUxU1BKRk9KTjBPazYvdDJSVDRlTTNVQnVBanFVeUxzaFNTcFlZUmNsTDRyR2I2cFhyeWc3TGhZWXNlRGRNSWRyQlBFYnFFZ2dOVHErK1llTmFKRVAwMnpiblNsbmJlOXdSTmI5YkpQSlk1cGpmTWNRbEVxdkx6OHpYSkwzWnl1bnhKWnptV2F0WUhIWHZEWisveVBrZi96TTk2M0Q1d2lpUnRvYjNkckRNRWdtZjBEZ2RWZWNHN1FidHo1OTNLcFI0Um52bEhpd2xoSUxOZnpCYkhuVkpzdnVTQTJXRFd1b1g5aVFha1hlbjJkWExpalRnRFB4ZjdhM2YvSUVOQkZuWUYweEZkUldpTzB5VDlNVUo4TUYvMEFXaFgyWEE3L3FRcUpsOENMSlFtVHRPY3ArdmdXOTNxS2dVbnM5cFZhUnFFTVVseFd4bURKS3lTem9tLy9OaklkM1lqeDNzUEdvQkZXbGJnbUNteVZmQzJNOXIyWTBETmxTOGJsOGtWWUVXWEtvRmFYZHMvZ2NCNktmWU92bjlGdHQ3RWdDd2ZMZThJVDFsWWNYaEtja29vbXUrUTlTZlZhTERjN3ppRGFhakZRQ284ckw0TDh4U0h1UDFPZmkrR1Y4a3EyT1orUCs1TUIvaWhpVXdkUzZYcHl6M1BzQ2pJTmRNOG5sZ1Rua21xMzNQd2xBYk9ueWlMZlIwMDBZZk1pRGtnSkpnUWxUSW10QjRMejNCYjJCcUs0aU5jMmtTQ0dRVFBYbjRiV0JHVVN3VjB4Y1I2NmQzekx2SlhsVTBpMWZ3WlJjaDROc3oyWnRaa0xOMFBqSmpvUlRBZ2hWSWtZd2NIc0tWNWtnTVJNdmQ2VG9oamFYSm5aNUUzeFU3Sk5qeHFXMHBTaUZKS2gvTG0rcGFCaXJhdEVydjhISk9mdkZWRVpSQkszZ0ZNQjk2cnFHODZmQUh2VnluSUl1MlV1Q2tXWVJqRFFqd0VxaDF3OEd1QWVpV1FNdTFyUzF5V21QNTZlYXliKzNoQ2s5R3N1aHBSSHRxMk1aeU9tOHNDZEdnaXpFbUdZTGlNRUMxTVhoNnhXM2NSZ0pMK1BUTWh2Q0R0aS9YbkdmOVI1MW1QODRtV3BQT1BsQUNOMWRpZURsblYzSUhMVFpMWWx6UHQzZW1TZ1ZwM28rV2JidzA1RXhIU1djOFpHYUlvUytSY1M1Q1dtYkI5SzcybERSUnY0RlpXcmkzSmprMi80bVg4R1YwOFh3elpVNndFb05kRmJ3MHVRbkZpQVlob3JYNWk0YXJIOWdUcFdYWlZHTkpYYWxtWk9Yb3p5TGFkSSsrZlExTEs0VkV3NW1ZeTMzdnF3UU02QnpoNEEwSTFzbkszTDFrTHAyQ0V0Q29zZFArakxMN0hvMVRVaEJxUHd5MTBSTFNZYkczd25WbU42QmRrVjh6U1BzbGlVc2pLUUZtSU83T0RPa3lqWlpRSlNWbWIwcnRzcWdEZmRwaGh4TXVzZ3ZlQ1RoU29qbWM3bU03VU1tRGJPUmF2TzFCWitQcm0vVElWTGtCNk41MmhTTXc4QWdRZFJsRXVvU3VDZE5jNkFpclVDRkg3ckV4WWVjUk82a1J3NGFYejV6aUJIem9lQjVObDd0RmtsVEhJelEydHJpdWZUeFBsaFB2RjZHbXZYN0pMN0NLRWpPYzJaZUhMRXNRTXZxUEY1NkVGQXpHcjF1d0N0QmN5bWsxU29zL0JsL3E5cFJlcU1xMkdpRVpmbjcxbkdJdE5RTmVRaGJwSTZvcE9lMHh2NXJraktlbk04YTRUbEJmRCs3ajZseG9QWjV5MkpnZjZkUldjSnNRRDNkNCtJbnZDOVNMMlYxWTBtZVBmM3ZzRWJvNmxYRFBnMUZON0hZdVpnRDJ2eVBJelJGMEZnM25ObW5rcVBJNGxDYnlzRzdqMkd1NENaUE5ETEZXVy9iYkUvK0Zkc04vRmlaOGRyVXE2U3NGMCt4azJqcS9nL1lRbkN0Qk4vNDJsSVZFbDNjZm5hdFRzS3FWNWZ6ZHpGMUZ5R3MxQmdqZmZIeDdENzQ1dTRrYU5wOEtmV0E1VXJ5bXpnNVJjRmtaUDI1bVoyTVA3N3lET1lXNFZkQ1cvRWFudktIZ3JHVkxBZTNJMzFra2xqRWhnQ0ZsWjJ5amV4c3BDM0Rxc2U4SGEveTlmTlM3ejlUNU9oenNOT0RWN0RXaUtteHdZcDY0TG1xd3BVQko0MU1kL3BzL3V5WVl2TWYxWXZwYnN6dG5pSlZST2NucmsvU25zdmViMnJTMnNoNjNITklJN0ExUzVSMThKRDFQTVFJNVBURDhsTjVhWElHOUdCTFhzSzd4bzdHVWg4U09uT0xkNnBCOUk3YjBSOFdzUDA1ZlhmSWphUXRyQ1drekI4c2JqNXJjNEkzbFo3cm9MZXpVMnlUNjRPTjZVVXpvQ2pYWW82aURIanVXNHV4eXZ0L0MrMkRIUm51UllJdGlJcGh4MktFZW1XZWY0dlZZdkM5TWhyYWlzUWM5Ynk4RGROTVVNbDFib2RiVWo3WmxTeWdoU1hCVGNjQ29mK1d4ZXYzeWQ8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_31.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDhiMmMwMDItN2MzOS04ZDhjLTUwMmItMzQyM2ZjYzU3M2YwIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA4YjJjMDAyLTdjMzktOGQ4Yy01MDJiLTM0MjNmY2M1NzNmMCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+b3Y1RG5KM2xLY1A2MUJHU2huSUR6ODBXR3dNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5FUFJCTktLUnhpdDhCM1R2SERENktSSThMTnRBT0IwTnJiNmNXRTdZMTdXYjJzZ0dpWUxNUmtFakswRll6Z3FqWCt2LytXd0MwNllBVjZoaG12Wk9ITUdtQUpJaWFDZE40NEZlcHNid05HRGhFalhjRlpjclFSUUZON0VBOThsazY5aFVzK3dUWG85QTVGbEJqRTBBa3dBQVBTbTEwaGdqUWhaRnRKc0YwemNKMkNyZUFqR1FveTlFMFlpem1EcHBsZU5uaUdiUkxaakxLSTQyMjJSZlM1eHlicUFXS0VIdkpMMjRDa1B1eHRRT0tnOUhJSk80Zml0R1FzY0FFNDNHc1BDZEpYazNqZVZHRTlXYnVDMGRLZDNPckJRT3lhVGJhQjMrV3FXcXR3MVkyVXFuZzlLQkNHR0cvV2NXVnNyREZtRWx1ejNmNGJ5VzdJMUR2LzQrSEE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_33.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDFjMmIxM2FhLWYwY2MtNzgxMi0xYTJlLTYwZGYyMTE3ODBiZiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDFjMmIxM2FhLWYwY2MtNzgxMi0xYTJlLTYwZGYyMTE3ODBiZiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+Q0dlN0hNSWM3TGMyVnFJVk44S1l4SXVaUTk4PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5XamZNSTgrTzlnUlU2emJUbWY0ZmVyVWhsc0EwZEcwcXArNW5lcUJxOXdoSnNYZy9QKy9JMUh3cGtsQmowK0ZhRVFUak9yVkcybGVlOURvQ09ZMnUwUFM1SlFWTy85RUpiaEtuNEhYQVl4UzBjTmI4RFgrSWRMRlMvRGIzemV6Uk9UdkNUbHEySXFiQ2U2a0ErZGttVytQLys1ZlVtdWc5QWRjZFE4cGdOWUNLOVhFakRHbVgyUWlCVmt0VXl2ekJlUHB5a0lnWWxGS1BDaFU5QkRrLzRta2F6cDNrSXdSZUtxdzNlL3lXYjRzSC9oeEF6NVM0YVB6emhkaXdranVabkJZZmFCNFI2cTNzMGtuVUlmNDNWMmFjT1hRdTIvNTl0ZVZyNzEzTlcxL0hycmJ2akpnVU15QmJMbTdaRjB5Z2M5VFBIaENybGFhNG94L01vQmx1V1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_34.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YjRjMzUzMDEtN2I5Ny01NDhhLWE1YzQtNTVlY2FkYjgyNWNkIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGI0YzM1MzAxLTdiOTctNTQ4YS1hNWM0LTU1ZWNhZGI4MjVjZCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+anBQYUd1NGRpbjVQbCsway9pMzFpTm9xSkZBPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5HeGZRS1FZMGloYXJzM0loQ2k0YVVxMHgyd09aVEZ6L3kwcGhxaWZQMU94MmNsZCtNa0lselRDb3Biei9rODBVdjIwVTZONHRIOWpPOVJqT2l3b3dIWWdxVGpjSTBHaXk1OHJ4OWpyWDZUUEc3T0c2Q2puQTZ0YTF4WWQrM0M1V2JPVENTSEd3TXAyZWJXUHlqSnpKSFB3dStrelhIb3UvZGE5T0Z3Q0Y2NkM1U1FkYXJDSy9iS1daVERTVDJiTFZKYkw4MVRjYmY4U0RiNTE1eUt3YWxKdzhSK3ZHWGt5bWYrb0RUWVE1TUlib1RyZTVYckZZTk9lYTZHcit0SGdRUXVBTFpVKzI5YU5RZWVUVkE5OVQwWFRwaWVyOGZ0UDJiMEl4Wng0SlhxUlZyd000QndiU0V4NjNQais5SFUvM1p0aFIrc3RHRWlVKzdMOUY0ZlR6NlE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeGJlY2I0MGRmLTZhMDItZDE5OS00ODZlLWQzNzVlNGE0ODZlMSIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGJlY2I0MGRmLTZhMDItZDE5OS00ODZlLWQzNzVlNGE0ODZlMSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+NFAxRUd4NHhxOWRta3hRcTh1QUlZcmMvU1N3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5EZE5DRFNrc2hncmxKUWpBMTZreklVak5TQTNlbkxnNmZveWZHb2JHY0FOd2Uwb1dsTXZOMmMySEhzMU54azh2bU9QWWhsb0VkVkErSmpra2JQdHpUeTlpbXJkTUtHbEVOSGdEKzFrd2REOUtKM2wxVVAyVGVKbEw3WGZJcWd3ejE2bUFERDVONnJMSXgyL0g1R2JSYjRlanQzdnpNMy9GWHlUcUdlUXBUdVlaV0xwZTNVK3ZsTHFhYy9qYmVPbTBmWFQ4bm1lcS8wQXp0VHFITjdTMkZNN3gwM202Q0dkU1BvdVY4ak0yQmdUNUFsbkkxcUNMSExvSXhZOTFVajBsa2w2YWlBeXluZXR1MHJZV1E0RW1KME9sR20wT1FlRWRkYUNtLzZDTUJNOFBmWjNzN25sN3lsTzRKNVh5MjhSSHd0NUFoc3Jjemt1eVU3c0NzNXpIWFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_36.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkowVUduUUxKdWpjbFBEMEY4eVRpMVNSMU9oWW54SS9Tdkl5T2JqNHJYUDJCQ2hvNTU4YXh5dW9tLzViS0VsSHlRNUpwTHgwdi9kQ1NVZ0NXMW4rc01HREorM0JoRFUwaFZQaHBVTHdmWnJ5S0h1c01sQmt2eXN2ZC9PNkwxd2hQbEdnSnJUMzl0a2lCQmk2QUo4bUtlRDNmaG9nWXFwbGVGK2xrckt4akZEQmZoV1RBYnVaOHk4QzNNeDZtb3M3a2piUjVHczQ3d25yejRlWWdXK05SSjhWL055YXVDRW1wOUJBYmdyd1daL3JtZ01YWW5Sb2YrOW1TUThmMkxmcWN1SXZyM0krTE5MaHcxSUNhTnZhVVFJVjZCMEpaS1hmaWJ3azUwd0FLNEFzNkxSSXkyL09KMWVNMnJuK1MvOUtFTUVxYlZKMFNOcnRkY3pKT2hqaS9xZz09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPmcyK0g3Uk1hYkpRQmtKZmZUTVcyZFQ1ZWFJbkUyOVY3L3dIV0ZTb0NQbDIwUDhqMU1SZi9va1NwQi9SbFdrdmVyNDJLZ1RVVzdsWXE2ZndLOStMTlIyQ3ZSY1RVVk16YlZzOURqUTdWald0NFBOWHQ4eWRLdmFXZ3dGbDA5aFNJSE5lY0QxT1g2K3N0aDNVbHlGd0x4MjZpVEdvenlweFZRVlp2YXR1Ync3czQ4OHFESnY2UElYcEY3NzEwNUpoNWFEejVoRTJ5L25Xd1QwSy92S0J3RWI5elR4UGhta0NPSm1UTDI5V3ZkekREa3NuaU45VUFCZDBERlVRWk9HRDlZQ1ZLWlI5OElYdDhVUDdwOCtFVFBaamRoWmVJWFpUYjl6NkZ5RFVWenR4ck8wbGc5WURpNjFiRk1PM0QwTFVta1ZoTnUxV2VTZU1VNDdWcm1aQjNRT3NqUTE0Z3FQbCtNZklVR0JFV044WDhiRE9zVWJUU1FQd1hnSk9BR3RqdHNCbkFrcURrWGFNYnh4OTY4dDE1UzNBYzJNdGZsQU1pM29XSGpjLzA0YWloTzEyV0YrVWxnbVdBVVFsaDR0NW94a1dMdVl4Mit3eHJORXFHOVRIY1paMDIxb3ROR0lBc1JtWEFRNk9WaVpvQUxSd2VjL3MzTUl5cmV1UHFZK0FBQytPc0s1WFhYVGtaa3ZTSjVIRUoxeXlRS01HMFFFcG44dGV3MDZSaWlMd0Z0NDZ4SUFXNUprcU5vQTBqckdqdm9TbGkxeStJajA5VkEycHByVmcrKzIrdFZzazRja3ZGUGlpQ0l1ODVrMGdNM2JKTWdHOE51WERBSlREOFJaMFdyM09EWVdVY0RUL2k4ZCs2TkRZYmdtcS9YU0JCRUJIUVIxdlZDc0FISUVZMmVJSzVka2NRUXM2cUE3K082ODJFRjNJZ1lNbEVJaTV0eHFWWTd2ZEdDZjNVc29MN0FHb21oMXVITHM0SjlVMHphTHcwRkl6UUhWRlA0RUh5YVRhVkZoS1dGOXBhSkVHbk1SRk5KdEUrQ2cvRHhrbVh2OVEyN0ZvUnd3KzdxblcwUWtsWm52NWlZNjRnSVJHQThoa3gzODJOUkZEendRbHZGemVyVWNrbTRIbC8yYlpQZ0pPMUpSN21sdXlhSFl4T1JuaWQrK2RncUJGOWJVMnpzWHZwdjJFVlkrZDNRUlBnbmxGRUhycThUMGtySkNCQlY4REpZcmhDZ3lzTy9uVVQ5c3ExeDZkbTdZSUN4a3g0ZWtNTG96djdNOFRvYnZCNXF2Vkp3UERnR1REWDh3VjFPMTdqd0J1SkZKNlhzeEg1ZmFCVEM3TS9KWnluYVpKcFQzaXRscWNRY3pOUGNZclkzYko0R1h2b0hFNEZRL1BGUGZ5WFQ4aE1zUStuZXZUZ21lNU9ISGMrOHhXbzcwUTRSUEZoNkx6TVZ5anU3cG9YSmkrSVI1R1Z3cHV3M2VQV0F2K3lXblhDcWZFWXpibjA0RG91d2JUeUZwUzQ5dXgzcktjNFoxTkNYdisxN1pXaVZrY1p3WFNuUlVmZnlrSjZoT3UvVk0wQ3d0eXJaZlJpTzZUTi9rT3JUK0htV0QwREFvRGRhWjRLZXd6TVNUQ1FsdTI5bW1JTXVMRXE4YW8wLzRHejZqN09rdlBBWHI0TTl3akpKS0FtMXpHR2I5L29IVGFJU3MrOGEzeDV6ZncwdU90RTdKSkR4eW9zaHVoc09UVVBTODFCaTlmQ3VmWkZrdW9XU0RHZ3FqcGZuNUt4OG1PcGQ1cTJWMHdPTGF3aTAzc05ld1RhWmtKcThvR0FVd2QyQnFIdWxPQ3F2UjNvcU1YVk1mdTVWRkdlRjIwQVdhOUpablpXY3R4WWtPWFNqcTBzaHZMazZ5aFlERm9wTjNPdVZGSGZGWjdRd0FqOXBJdTVjUnVBYlR3bmhqNklEMDZJL2Rsa3YvYnFrWEZ0WnZFaURwbFdqYW9MYi9ITEVheVVEeEpWYVBSTS9mWVJ6dzZBcXE4bnArQWMyTGpsczlvQVJzbFBwcmV4WGl6SnIwRmVKUFdXYmtvL3d3cm5xKzgvbG5CdWhnelpCVXVwcDJWREVVeUNwNXNVVTduTDllZXhRQ0c4TjN2NlprQnBoek5XaUFjTzlCaWNQTWtndEg0S1cvV2Z6VHZ5L2dKNTFZNVR5S3J0RUhOdWJERmpYN2FteHZIa3phUEFZRmZiamJpcy93ajdCYk9vRVRhQnlVNGJKS1BTUTRuOXZQUGlsZTRJYTV1VDdBTkR5NlZFTVI4OHdudkJMVmpKS0FXMzJhUmlVQ1d1M3B2cEQxMWNZcmxib1ZyeDVGWmVaL3dDOFV5Y2VMaEJEUEVTek1KZVh2MHI1K3JyTGxuaWtZTnJ6L2VmTjFwZ3NWTURmRS8yV0E1bHhPMlR4OFZXQkJ0T1R5c0dzUXRISGt0bklsby9ORlZBVWZQeng1TzFWNVh4ajNuUkREYlFQd01RY2daaEJud2RBaUxqYnVrck1zNTYxSXo4RlpEK3B1UkZIR1BIaVc1U2grUk81Y2xIN0lpaTJIR0pZYUg5cGYwSmlqakVnZmhyaHNrbnhUa3dEd3BsTjFJbGNBOVZmQ0U4NVJkb1RZcjhUdWNONE9ZVUd1TzFPbFJhTG1sdUJFSVlEWmRSR1NQU0dWSlhOUHl2cEZwbUlWd1Q4eUQ0RUZHdGtHT0NPT1hVMmhFZXo2OEE4UFk1dTBkcU1zY3BMMllmR1BmcURmdWFad283dlZuODVTSnZKQkp5YW04bUdaakVPbi96OEVnalBUVU9ETnBXWFBBR0kvbWN1ZnBzSmlHWS94NjVYMHZ3cWVBQ09LWjFLOU83aVpWWXZBL2FlV1c0RldtQTNvZlA0U254Q2N1M0l6RHZ4Nng3NWRiMFlsbkZBTk4xZ2w4ZGhldmNkeWYwazBPc0ZiTXk1MHJQd2V0djFxeUthbVVVUUM5emR5VHJzY0FkblN2RFBGY1NNQzY4ZEpxMkcvQUgzSW5SWUdKR0ZiTW9LZkVrMWZxQm1rc0Uvakh1eCtHNzZYc1VoU3l1d1pmQnR5SHNwV3FwZ0U0b3BTS2dEN2d3alorcld5OFYvWmoxZ1dxTTBOcXhzKy91Nko5TFJPSUF0UzJJWllhMnBhOHBsRDE4dmowdEpMQytLRmY5NUEzYXBLNktId1Z2djRJcytSSzBtZ0RsdCtGNldzZmhxVVVMMkhWUVF0Wko5RXFTc1pvME9Fd2NKaU8vNHprUHA4Z0FzTG1ERURQb05SeUJLT1dtNlRLV1o0VEJ2U2lvZzRoekRTa1NvLysxbzBxTDJqd09pbUJYbThFOWxzMno1Ly9sSXV0NFNrY1pjRE04bXdiU0kwRjk5dk5kTWgzT2srV1R1aFpKWmoySDVpdDVBYjR1RnhqTEt4VzNEVVhZSXJTM2hleXJkNENGYytlc1N5UU5Lc2Z0a25jTDFyZ2Vuc0Z6OXUrNHhQTDcza0Zkd0FqNnZQcnhKbUh2VHdkQnlZdFg5dlZUMmVxU2kvd0ZOT1hZY2lPUU5IUjBrL2l5a2JPNnBJcnV1RGpmQUJER1FkYzdud2VsQmVidG84SGpnMU9JaVYrOEpjeldvblZOL1RRNzlDcEhzTGY1cU5xUHNHeHZvYW5JMHpMWVBLU1R3VVA5ZUpxZFdhYnBJYUQzYnl0d2tDb2E4c21nMGVtTHB1eUdaOGdQeVV4eFFndTFzeWVhMVVzd0dESGNMN2xZaGo2YXNvSzdLVW83NGtPd0tNTU9sRFZOTUpiNzk2TlMzOEdhcVJaeGJFSnY3RkhGRVpZRGkzeUE1M3FlN1NRT0NOTFN3d1lIZkgyYkkvTERqSDA4d1VKUEZSTDhIZzVCclpTVnM3U1FZTS85TXpEcW9TcGRTR2lQL3ozSEw5YzZQOTBjdURrcHRqQlpHK3JnTXNuVmMrRE44VDhuclhyazk4NEFOVnRuN0wyWlNtcGhoZmpqQnRIYWZXcmQvYnlxV3IvWkxTc1dsTkY4ZjhreFZnS0hhV2ZmQVJia0hTMWVtcktBYjg0N0RVV3FiUVBxWWVKeXg4UjhDbUl5VURqSkp3YksyWGg3L21pOUtmSkREMzlmZHl5Uk5EcFNLRStpck5TNkRDcWEvTWo5NDAvUTl4MUdUYm5yMHhBMnZqRWc1Q3JCMm92R3IvcC9yVnFvdkZsNHJxemZacCtrVktVN2xSQ3lkSWgvVDJUbWV5VXlNdVFWYWdjMkdSUWFDUmxxUDRwUXF1R2J5ZkZpVERjOGdoamIzVGxmY1JIRDZmK2ZWS01XVkFhcnBhbEc0VmgyNzFqNVVkSnlFVG1scGMvUXc5UE44MUpTbk9pbG1CQUtKNG55Y2tPaFZYbFJCK3VPd1d0VUg3eWxFNng5ZlNydnNJbytpcEs2UkNVQURHbHVqY1lYYWhjNnFDNU1mckZuVkRkSHFwSEtqR0pvZStYKytScGNRME1LaWxTd29wRlhIaTNRbldmMmNBRkxYM2YwclhNaGw5QXJmMVBCbzJzbjZNMlFQd0dKdHpJU2lBWUt0R2ZFRUloM254eU12OHM2bE1TcHZtTzN0WE9VVWkyR2VPUkNwMEhPWldWZlJVYWtCRElET3ZIUDRrcEZhNFFWODlobGlRRmUrSmtQV0FjclBwZ0IxRW9waWZXZDlNRjV0K2t1UU8xSmFXM2xlNEpZY1VheGpaY0NrT3lHMXY1cnl1NEFPQjU2aEVqRlFlRDV6cjRMU05RMnZKZ2ExL2V5Y3NhS1JGNWFCWGpsRVBkellMa2lQR2JtRjc0d1dONzRTVkdMRGsxVzQ3OGlMeVBnUkd6dHRYOHNReWc4OVErUmJHOTJ2RUdIOWlYMmljNGY3cG5Rc21RcEsraUFUM0VPUVdWVzFmSDRBK20wQk96Qk5hY0REYmZyY2wxN2oyMDVtTGNIZTJrdllER2FYMkhXMDJxREJvUFJES2pqejhWWXVkZlZJNStnSzRrZW5NMklDTER6dnFtUmNNTHlPZk9GQ2Z3K014THdvQUlrWXd6a0lzNWF0dUdqNzZ0S2hueEpCK0RtMkY1SGNKbjZoMlZjc2wvZ3E4RFQ3TE8vL1hreG91elJ4bm1mZTN1WUpTQ3dEZzN0OStWcmtDUzkvUDUzajFiVHFOT3VvcFlZRUhQSGlCMkpuQVU0WmtCTkpzZFd2WnpaYUZMWk83U1lORzR3cHExWjZiWVNjNXhDa0kvTUwzd2dqZnRhL2xsaVRRTTVVck9QK2pGWUVLdlpGdjNXY1hJQ21aNEJ4UWc4cEVTc1JCU1VCYnUyMk8ydFlvTm9KeUgwV2JLN0d2VU5zR0k1SHBTZVdCcUZUSDF0bEN6Zmp0SkhuN1lkU29VV3pSRDIrT1ljYXRvTkg1MUNUZDk5b0hyUksrcm1NQkFJckVqb0FaN1k0RGY2OU10NmtOK0pnUElUbU1LajZ5TnBwMFpQZzhYS3R1ZjBVdmlrZStmbEM1UmJPWitaMEEycTRaS1puOHl3K2xGcmhZSXMyanR1RGNYLzdtNlJ5RTV3cW5aZ2p2Mzl3c0hGQmx3c3RGMnJpZGxZTFo2enF5dmgvTE5uWjY2dTcwVUUzOXk5bXBlUElOT01FWk5lQVF1WVdrOUJWSnA4cHIrMEg0OVBmVUl1eWZXaFp4dHFVWW1ScE5SWG1UTTh2SWRDRjRoL3JWRzFhU2JHRm5ESUtVQm1YcHFQcjF2QVNoMDN3REh6bis0TWJHaVV5c0F1dEZTVUthalJjNGdjdkI0ZVNxTVN2OVQ2MEVua1FTMXVPYVJwNjFBVkI4eWpUcjc0dUxHN2QzRjU1cHhuajBNMEl4Zlk1RmtqMjZOamtweU5jNFlTSThMT2JRZGJuek0vWVoreWtTWU0vc1pJY2pEVHBjVnV2RDdvbnlpNk55cDFGcTRKU0gxK2lJWmpFMmlGeGNDcW1XQU8raG56OXRvZXFvWFdvUTNhcDF2K3VtcDdhSFp3a2hGR0ZUZWNMTE50N0g2SW53M2pWVkFhN3liQTBadHRxODBFNlVLWnFiS0RvL1d6djVZaHU2OHNvZ2hkZzNJQzhxOWZ4T2Q3SkxyVlRSK2swcS9HcTJEd3BWWlVNRUw3eFlRamI4c2gwdEI4ZiszSlpoY216ek5MT3VUais2MWdKQlZTWkVvczNIb1VQRnoxeUt2eDMxK1JaVXRHWlh4eHZjMW9MeSt1czVVeFNrRU16WGtlWXZxdk8wSm13NUFGc1BlbU1USVlQNzJNMkZhVWwrUDJ4dG9nNkd3eHhVSmdvUS9mN0N2Q2o5MG5qM3dCZnM1NVVaeVZNbkJ4WGV1cm9FY2d2OTBOcHJwcDNBNUlLbjFKZWNBemNrY05yTHhkeG41ekM2TjR6TUhCRUxpREx5dUU0anZ5d0FkMjFPY0puR2V0T1hTUG9wQUw0UmNnNGN1dDNtK0hZWmNuM2J5UjFkb3Fxc3ZSOGs3RmVKc0dkOHVoMzY0ZGdWTkliZmVrOWYwSWNFSWJMWjllL2p4ZE5WVUNpK3lTNEZRbkdKRndUQklNNXpwZGxRL2hBRk0vZEl2WGFlSWhacjhPQWxlN1piclFZclJ0aHRGaWNWdFoxUU9ENGd5OGdKaHJ1dEs0MCtZR1V5YXFsRmlEaGhnL004SXlkQzlxcmZNYVoxSlRvSlB1WE02OGlrMjhXN3Q0T241SVJaVlpPaGh5U0tGbFBLMzl0MjJTOHVrWDl6MVRMM3Y4bnBDT1FrS1hJTlBEbG9CTUM0QWw0L3JUNExqT01nN0JadGoyWnd2Ump4clNERk5pMmhhaXhNaHJ5em5HRHZRZFZQWi9LcHJBdWpnQnljT202Qk1pczRaeERWNUZMai9aQXhhM3NqZ2VVdWJVaUx3RGtXV2RTZUYwaWs1bk5iOEQvcFlXSUdEcllVWlpPYW5aWnZoeXE3SlhlREJSYVQxdytBU2ppVzg4VXoxUGNmejJaVjQzTXNIeXN4bWI3YWdPVkJ1YVNGZTBKYVdFVEZHWFdlV0Z0cTVkWkpweHEvV1Vsejd1czdYZGdWc1VwTGV6ZGRNV2dycEI5TWNvWm1LN1NaSkt6SVd0MW9TVWJuQklhaytXSDBOSm9SQTVlVzViZzZvam5haTlYTXF0aXZuOWs0MVcyTGdkY3hhWmIrOFFKb3NjelpFcGlmdDlrRmszZGxJQktjY0dYT1NoRFNOQnY5VWpKdFptLy9QWUcvODFvc2JET0lQTmdMaWFGNUkwaDMva0w4ZVloSzFwbGFiN2NZcGRvcjJVRG5UTEl6TjBpSG1ZQjkvZFJOVjEwanNYbFBIWmtjVzRzYjRQbnRCbU5jL3V0ODZjdnV6UTcyYWJ2ek5rN2JnYTVyRmQ3YUc4NlBiVzRKL3ducWJneEhjaHdwV3R0NjE5Zm82d21FQjRFS1hod00wbE5NakFiL0ZUdUY5a1JrbWVsclA0Nm9oSXlBQnJtblg4RGp4bHJYZTh0c2Z5S0tzZGhGbkxQNVlRQUZqUmkzL0MydzVkSlh1OGZtTGI2b0FocFlnWk84M0I0OGs5ektMVWpDdXEvbnEzclpqY3Nkc2VDRTVicllKd20rbExleXNKTUJVZ1dGQmFqMXlFVTVLcWZManJUdDBlM0Z4SkNnWkt2V3BwRUNvRkd3MWNhdnZZT3lrU3o2ZUJkVGtXOWoxWXpUekVDaGpEQndxZVNsdmEwMmFPOFdoai9BSHczZW1tayttTDRRRStUUWlSeHN2WmJTUlhxRU8zRUMwdi8rWmx0TEpGTjMrQmtOT1BLc3dGQlJZd0dOdVE0OVpTdGtaTmJJMHUvaEVMTGoyajhJeDNSQkt2NUlpb3hUNTR5dm1BQ1Q0ZnVKZnA2NHAvQWRJWVowYk9NRndPRFlwOWxnWDlSVDZ5RC84ZjUwTk44eHVzV1RaSDFKLzlWT1lhcU1nQmszV3BJMVN0VnZ6NUxMaW5YTHM1SHc2bktLUXlCTGFTYjRkUmt1MVoyZGs0NncwNlFMeXdidnFlVWhOTzIxZTV0QjFuY25ob3Zwc25aVGwyVzhjVlBFZ1FEak1LbUJtRlJSVXJrWDMwandIVW5PbDUrYTNvMjBnaUh3NVp1S3FHYVhsMXBPTjFwNVpuaVRwKzd2d3d3MUhkNTBycnk3MnBJbmVTVGFMQVNzOU5SWTgxb2tscGJTQU9HbStidk41eXRMSjFPQ2dwMmN5RTN2QTVEckloTk5rTXI2VnFWWkVyYXIzSitvK1JINkpwOGtkL2JXb21DZTZBeC9kVzMrbWkzei95RDNrZ0s5T3BoY2xXckJ2aUxNNThQUlJaK3BkRi94em8vZzNkSC9odkpIVnRlUG9YRGs5MEtGQXg2eE5obXpQR0xFZnh2ZVdWcXVwUmpKTEtXT0toRk12a0QrMVlXeWFLSEtVTzhYTnJ3RXhPbDQyMGZudkZUMlY2UysvS0w1cUlzS1g4WWFJVUNBQ1dWQUFsOGJUL1A1WXdXdDQvV3lpU1VBMm1vdHhlcmlPb01tdzVpT2s0SXlpOFNiaTlwYzh0Zi9QYkZzM0dWdXJFWVdGeitodnNqakJNK0FSMzN5U0NHbTZCOHNzdzYzM3FwUVRxNThkTlhlSU1DS1A5cFV2bi91NldMZ0lVaFFZWWFwTmNpQnhiYnBFcnNIVlg0U3oycWRiU2NtOEVKMkZXVTd6SndtazdoTU5qTlhGWXNpSkhGWEo5dG5pVTFaaGNkb1ZrN0tRY3VJTnF3VS9kN0RCbEc5TnoyZzR5RVlWN0IrNmh5YVBvTVk0WFFnZ0JZd1BPSGI3ck1vbkduTjNBMXRGak9XQitTVS9rUGVNS0xqdmJod21Oa3Zic0dob0ZhMTJLNjJvTzMxZisxOHhGWTFuUnpNWnJTSzJTc1FvdjFzTjZnMUhmaG9scnBXQmEvWWlianpEUzA4YStEUjFrRjJVS3Z0R0srMFpnNng3djdjNnQ5UEU1WTh0TnNLcGJxSjdSalhOYUEyUXJ3Qmltam1UbTJEMmZNMmNwNHk4SXkxb0kydUtVTzRzSGc5Mzh0b044ZnRiZzF6TC9MalduU1RzVG1LSytDVEpZRUorSm9VWGpZbXovNTZhRHMxWkZmZ3h3TmRaUWNpTGhkMWh5dGlSYm94WmxCcXhyNDRtYUx4c3JtWm9XQVdyclgzRmlucHhrMW5NQUZnV0F5Y0xyZmdiYnB2em83dU40eTEzUEd0UmUwVmxNVS9SUkZiM29DVVFIL05Ya3ZPUHBwcmZFOGtxZmhoNW4rZXpCZ0VYTW9XSW5HYnE3MWprN1paU2x1NTJlQVh0dnkxaUNyK1VUamFlTWZaeWNyTi9QcWRkRUJwaGJiUnhtNG1RaFNIWUdTYnZabU01ZDhTRW53TFZ0azNRd3BYRmltQzB3ZlhBM0VDdFYvSGJpWGY2NWNmQ2RtU0l6cWh2dEJ1ellvZjVjdHVrTXd3QldhUmFPdTIySTFuSjFMeGE0MXd4ZEtFMDUrWk9DWWRTNDZWODQrdEduUllTY2tJVFlMVUU2ZHhiemY4K0xTb2gyK3M5RlJBaGpzUDF2Vk1rQUlhWEF5ZVFWQXN2ekFZUkRmL0o2c09EdjFVcThvbjhLbk9BdnBybkFmeFZYTFpnWTg4aGVYbzNaV01wMjZobitrN1l6ZlNaZ0lRUkQxVjdEVU5SQ2hSYUJaZ1BBaGYvRTkwTld3VU14Z3loSUY2c1dNUmRmZ0V5NFRqS2krU01ZYXJydE9icm1KNzJJaDUzVFJlUWM8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_37.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MmEyOWFjZGMtOWNmZi00OTBiLTgyODktYTk2ZjI1Y2I4ZmY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDJhMjlhY2RjLTljZmYtNDkwYi04Mjg5LWE5NmYyNWNiOGZmOSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dDdNN2k3QlppVjZMZGh6cjZBVjVTcHpmT2ZZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5LTjhVTEF1dnpKV1RMMXdaQWxLZVZtMXh4SXdEeHdSUDdDYXprZ3RJM05OcEZiWUgwMG85YlVkeEVXZDcwdEJidlAxQ0pTa3BMbEw3ZDZxeGhEZXNnVkQxeDdNYUhkSkozRFA5c0JYeG5aVExHa1JwZEJ2Vi9zNkxHRUI5SDBXUzJvRytCYlVQVDNNTENBU0J0WGdia2ZiT1A5U0lGTUkxWTRVem9uK1BCOHcxd1ZhNGNINmFXbytsZk8venl3NThHajlGeUU5TlFmcFV4enNUdjIrNU5zTmprQ0pTZ0JPOEkwRENScERnSXNhM0RXV3FCZC91YVZES2xiMUYrOWN0bnRSTDRZY2Y0SFBYNmVhcXBGNkg5Q1NPM25TRWd6YnVjS3B4dzZOcHIrZnFMK1lEM2wvektFMnFJVndxRW1GeklGM0puUGp0dTRzQ25JUmwzR1BCcmc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkg0WUJITXBMdzBYZkZJdFVHSmhWdW93QWJmZlh1djhsZ1N3N1ZjbkhuWk5OWUF3U0M0dFU5Mndpd293c2E4dlRTWTZwWkxjK1hzRm1uY3NyS0ZQOW9helBKYnI4cEhqQmZTa3RJaFVkeEJtNkVTaWkzSUNub1YrQlp2aW9lbTkwOVdNRVlUb29HaXdBOEhqYVlFRDhqdTBlTzVrQ01QNE5veUROMXZWcmhTaXRWOHo1RHZpaXk3RWpPY1RIb3E4b0VQUUNGNHpRMVBldW9acWxQN0VDYlJQWWh1NlBSN01rT3dyZHE1aUluWm96OFB5Mk14TnhTaU9mUHl2c2s4MHM4SVBuTUVWNFk1R2dhdVMwYnZtcVM1RHluRWI5VHJPazdYMmE3ajE1eDZ3QlRMdzl5ZTRPcEdaRThWYU94YXFQZWJGV2w2QVEzYUp4dWkzZnJwakgrUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPkl6aWpyQUpTdHJFS21YSjZacGFSL1pZWkdidG1ybmVSUERqMHRPZnpkUkR0Q3BObGMyaHp4b1dpYXBVUjRQaWQ1ZnBCUENYa2d3ZDZXb21mWCtzaWlZNEdDclFCcmJ0c1lDTm92UFVYOGJxY1libFpYaldsVklucnpTc205RXkvNStEMjl1Mit1ZGI5ZlFGOVVxKzVzY0FSTy9HSG12Vml0N29yMDliZlVrd0p4VWNvOEtiWTRPUklraEpWWTRPdzBvVWZ3MzNxRDFzSFJ5c0VpTmdBNWxMRmF6RW9HUkcxcDg0dnFJOTdVRUkrUW1tcnFJU3grU1BKQTQzZ1pqNzRYci8yeUlnWEtVemhoSFRLQlhMc1l4M2hhQkNLeVk3WXFSZVlCenU4WUFtbVBGeU1OV1k3YjkxcDRBQ0RrU2daTHRIZFZTeVhKZGx3OVpjd0wyei9sbmFLNWcxOU1NYm5zMXVzOVZEU2l2V0s0SVJyY0EvYVBCQkhZMUZucW1DbVNzZ2hWTkNRbngvZkRlK3FHdW1iL3R5NGpLMGN5MllIeXdCaFVWa1dHYUVaa3h4Nm9YOTlsbi9WMSs3NlY3M2tLNGJ4UjFXMS9nVXB0MjRWV3Q4MUVwU2YrNlVHa3pMK2ZNd0VqT1hlcEtSVlM4b0hGV3NlSDVxOGVXTFRDQ1NaWld2Y3Vvb2txSUhZc2l5ZmkzSmVZclZxQ1hqbm0vaGdEV0UwOFpuemUzY3FlTGs2L2RBeDB4ZkU3enpreGJnQm1neEozSUExTElkK0Ztb1ZWSlpZSTNWTm9GQUdKQ21lWG9DVDRITnJJMWlLRjMwbVo2ejBuVDQ5bmxUemJyWVozNFVkbzF5S1dWZ3VKdWtVZS9qcFVraWp6Mk0vRE9RSkhLeUw5czdJZUtJc3pwL3VrOGxwUzl3aTdCUFk4eFozZ2lPbHFZdW1YVUEyaDNFUHpRQmhFY3lHYWk1M282WjBFNG5lc2NlQVVCOWI1UkFHZmJkYkptUkR0c1VGUGpvVGZENVJxV1NIUkxIbVJMVEQ0OHpqeUo2SXF0Qjk3aGVHazZhblJ4RWtzUEpvNHN5a1FSMEZJQldhSlBlZG5GaDhlakRhd1QwRGdTT21uTVpJVldRSlNWRmNoWlk1NUdtQjNkSkZNcTRUL0hOdEhOSmErdmJzZk1jQlhYQmZBamtmaS90WEVCdS9VSmFhNnVodXJwd29obi95YjM5YjcxZWNVaGdMdHY2VE1lcWJZRjVVTUxIbi9VNXIrU2dHUi8waTYwYUhieUo0Q1BhTHhlZnJGOFByZHI4S05hZ1FmM05EaVY2d3RZVE1tM1FZWWhZME9VMzRxcldxaWFmeXVIc0tLb04yYnN4dForaitjeS9TY0VhcGtPWlNndVJ3bzlTdTJNU0hxWUJxVExhdmp3RktsUkt5d2ZPcklzbFBTZFBsU0pHV1B4RloyWng5TnhGUGRpaTJvamFBNE0rbU9jVTlTR2duMUZ5K2srUEdoMm9PTS83ZEwrVkhEUzUwRndXN3RZekZxWHdOUFNiRFNDZ2JGUWNmVVptSjFzbDVGN25qQWxjN1BCZ21JYmRiR3JiNU05TFF0eXFEYVRFdlpDRDA2cVNKQ3Z5K1BLWEdxaGl5UUdaVTVhNzJudnRPKzRhaGd1TS9CMTgzcVduejFOOVd5SG1BWUJrUlRYMGxKdVZrd2R5RDloOHRZMWkwbERKS1dYQmVxdTJQNkhPZTBJSFp3ZzJXKzBzcWxaYU9hbGhjYWMwZ09uUHN6YStHWmcrZzdrdDhHUmR2MEpnSTZ1MkFKRW43S1lDNVAzN1NGOEUyK1YrVUtCK0NTa1FqWmV6b0JFR0FDKzRPOXpCN1VvUHZCTU9ZTlVvaGNueDF4KzNuSitFcUYyZ1JlVnZPWFc1a0NIYml3WWVKZDFmam9uUjBkY3AxQkhadUlPYUdOdnJERTJCb3NXOFo5R2NKNDl1SGZoN01MYnY5VzZ4MEVvRVNKalVhYUtQaGxPV2tYRi9oU005cW9OZUpzOCt3Q1FpK1l4RFJJbEwwc0gzN0IyK0VMN1hLOWkwR0s2SGU0WE9pUDY3OElYRU1WNjc2d3dzL2xUSllOV3h2b3pObkVDS1ZDNTlPRjZTNHN3NkhFK0VMZnhGai9BcVpMZ05vbFVNOVRENzVGTWUzV2QvdWxEN2QwTUpjaWVIcXJRUytJVnRJb0d2TkpTUHFXQUFKM0c1dWJ2enhqNmx1UWxQS05iVG4vTzV3SUJLMGtKaHhHNEhjNFdYNWEvVERocjltK0M0SXhmTmRZem4yNHJjckMvdTJTcjR6dzBZbElQM3hsTXFDTldpdThLbDY5eHczeEJrS0xmQWNtUDQ3alFqbFp1bW5vVldIMHI3TmVmbTVkYTc2ZG5kTm1nc2svbjQ5K09OL3NjdFVLWUVEN2VXWHdQcnpUK3dIUktBVC8vZGtxK1k4RGVqZ04yek9SSU1Qb2NpMFNXMUJtUnZIOXpseE1Zdkg0N1N1UkhqNi93V2pEUWFrSkQ2TXdRbGU2NHV6OENhVDFJdS9OenBCN1c5VWVFUWdETVVFOEFCMWxRNVdHR2M1cEN6YVhNM0h0SDA4K3h2NEtzTGtDUWpDV0NJclNjMll2OFlBSVB1WUlQM0hxaGNVeVBESmVjVnF5bjNrUUtzbXZxTlBrYS9lWGJVbkdsVmxOOW92OStWWjA3OGtvSUQvUE81SkNhZE1VbFRpVnZUVERkamVabUFxMTdRWTVwTGx2dE9PaktJUHF5aHROSEliQTlKbXc1YUYvcTZqREdWSlZOL3FLSzg2Z2tpTysvNW9HSGJpQkpDK2lSQUkzNUZvVjVXdExHTWVpSm9RbVJsUkRaZERSNWVDcVNtc3hZdWlXVW43RC9BdWFSN0U4elBDMEZ3RmRzQ1k4SzZNNlZsN01KcTFJK094YTdnZHRLS09IekV3ZXdVcDQ5WTNvM0RlT0ZVRjAwZy9rem9xV3gzVHB0MWZNL3hFU25RN3RZcCsrR2Y1UkNobFRQYkVZMWhNSCtiREZ5UkhHazltbGN1NXllMTRldi9aTkRoSUowZ0wxV3daQittN0xmMktBek1VY1BVU3ZzK1NyeEkvVVdwSnEvSWs1bzlpVWRlcjZET2FEd2FLLzhYREcxZWtNSXlZcXpXN3ppcHVFSmZzQWp1Ujl5ZFRhVjRGQVVUYy81dHR6TDBWd1FBUU9MQi9GNGRSNHhuSGJoOXE3K0ZFREN3K0Rjc3hvZ3BjTi9FL1FnMll0UDNPbnNZTXorczZkYmhjMys0bGlRWFBiTU82R043ait6SDczdUhNMHZTWWswL3lSV051Q2dxMVBxTVhUblN6Q0pnNldLMFhnelpHN29ieW5ycjh5ZStINXN3T1pVYnQzQ0FzaG02aXVsQk9FbXRSbkdVam4wR2o5UGxVRHBoVnd5RFZFaThTS1hKK29oaEdVdW1CQWJUR2JLMTQzbG0yU0xGMXBFbFVOMEZFcjBucU9GRzhiRDdIZlRPOHU3bitNSC9aSEFNMlpBdkk2dGJCbGJOV2NOWm5oUUcrWmFTTXVicWJNRWdBOEtFdHNWQ2pUaXluS0xWSXJBS1YzY3J4VHpJcFJQTjhTdXNpSGJUWFZCNHo2dUQycnowVTZEUjRiSGxsRzlxZzRlUnBlNjNiMXQxZnE0UWdtaUNQVkE1YTVKTzhlSGdoK3JOZ3cxL2tVTjAzWkVUeXJVVFF0N0tOc2E2TGplRno2ZUpUUEppT284ZlZ4ZFlNNzJ0cTNvRWpxRWE3Z09jRFhMeGlGWlYxYXlhSHI4VGlJQ0g3WFZVYVg3bkdXWjYyUUM3VGpNRlp5bytEemZxSHZOa1BLY0xTUncrWktuY2lCaGQzdXRSMHZsOVJVWEdZYkNTVmpuV2JuUVZZN0RTMEZyS1hqd2t2T29lK0NYKzgvTmM0MkV5TnpNZmxsaW5YdU9JV2I0OGNtZ3lPT2xCMzhBRGs4bTlvNWJsYWJVbG1FRE4xNi9YblhkaytXcksxQmJNUzdqMUZhWU95NTVSakdCRlVTVHZHaUl1V2pFQ3FtdWkzYlpDWW0zRExMdGFFUEg2Uy8wWCtTRWcwaGt0T2E0ZzRNM1FJdURCdUg3dWxYTXh6c2gzY3U4dGJSWklSQjdtdEladjBVaGJORUJodUQwQU9kWjZnbEpzc0tQSUhpRlNpUHFvVjBMelpaVTZqZFQvQlZBTlA5SE5BVDFQWTU1SUR3OFRIcmtDdDRIcWc2WU8zSjVSa3FibjJvU2h2QkcvOTNwblQ5Vy80VWE4ZG9RUXdsanl2UDFpWUw3SzFDRndHR045dGRSK25UK0ZwWWV6QjdxZEU4ZS9RNDkvc0QrYklLVTNycVRWZmUzQTZwRVNlekZJbzBsaUg3eVU0Y3BFQjFNdGhubkRhRkdINE9FaDJvckNMam5KOEhXL1NMdEVBUThnWHE4cWpqVTBHdFdITFVFejRIQmZSOGVNWjJXb1NBdUx2WUNHWW5sRUtMZmhTVTNtdUtIR0ppeDdRRzJRNktGT3liTkxqL0hGcm95MnlhQUVHY3hXeG5lWUNqVkpDZktrVkhoajBEOVo4eGFWaGk5TW8wdFdBQzV1Y0Zrc25zRzQvYjNBRVlaSHRHSFg2SUFCdmFDbERTQm02MzhsQlRtRGFnYVlTMmpxOGQ5WTdEYWQ0OU5Yb1ZxQm5yaUszOWgvUHZrNXdDcW50U2M0WDBuQ2hzb3hKS2c4Yk41cm1SSGZYbUV2azNsang0WVhhOVZxVlNnZ2k1b3M4T3R3a2tkYWlBM1BDbVNUMVR3N3JOK0hCOUM0MzYyUTN1aUlYa0d6TmljRjdCRkM4NEVQN1lpdUJVWUswVkVmL3g2eDcxT3kyVzVjdXdxem9sSm9scDhVdXAyQldWYjZXSC9VcTZnd0ZQOCtWRWREKzRyeTlvRmhQMXo0Y2RnTy95eEd3MFl3dFhhUGU2ZkdsTVJSdTNYelVZbWI3cTU1RUUveGFvcFppNEd2TGdiV215L3JQVnVuZHhIeHVLZm0vejc0WjlCbnZsN0x1WTV5RnB0Syt2Wm1WY25hejFxUXZocTBxMklEREdRQ3IxOW9UdVNwZGo1TUdwM3hDL2FSdE9lbFA4THZzYlRnS3lRRHNzTVVrM2psL0dIV2svQWRzZ0lPSko3YmxjZzcwZnB2WU04ajhsL0hxS0txenp2Wlp3emJSNFFhbGt2b01iZ0ZjQVMrcXlzV3lYR05NQUxpOFpmcWZxK3pTbHpwOEhPMGsxNWlHRnhmZTYzdW9xUUxETEt0dUJrZlBDNndGZDJqekNYZThrNFBHczZSMDdtcmM3dUIxZWZuWlRsYkxyMGhIcDhuYkpyZHRuRUN3Mi9tQ0NsVDVQUys1Yzc5VjlZaGI5ZmpyMGlNeVF5c0p5WlZ4MW56R1JnQzdxaUxnbEVHWHF4cDFqMFowZU5YcEFlOUMrVTNiQVJ5Q0dYb25JekQ2cGFTNExhalNtcU1iWmxHbHhSRTRFd2EvTWlaWHFQb2V1ZEpkWWx6OUN6VmxRTzJvU1Z5Vy9YOGpNY2pmeVlXNXI0UG91akZMc2tNMnBFWUJaZDdtUHlyR2xseEd3S0hjUjhWUndaN09iWWRibzlCd1BqY3dtNWhHSitncWJuV2MwdXFPK1NDQUQvRzVRRmVrUHFZMDlXZHBNdEhJcC93cnlOY2syK202Q0pTeDlsYUdYTTc4dW9Cc29udjNuSHBXWWdrQVVzTzNSRHczN2pOZS8rYmsyYktsPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_38.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YTY4ODkwZTUtNmE4NS1lMTBhLTk1ZTAtMjNlMGQ2ZjhlNDkzIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGE2ODg5MGU1LTZhODUtZTEwYS05NWUwLTIzZTBkNmY4ZTQ5MyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+QndpUVlDTWpqRFBDWVRwOVRtWkNBc2gyR1pZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5WOTRHRDRQOUdjNEVNRTZ5UXhXcm5tSy9ZWGg4N0d2cDY5d1FlejQwRUo2cVh1Sm5mYkc5eE9XZ2xsNnIxRjZTWnRaV2xVcjhUOWIwSnNUbE9yMFp1R2dEUzY0RzVpY01ZZlJCWUlWalkyMUdpMzNNY0lnbWJDSHJTZ0w4SENPRThTbnIxUnkxQnJQOUhoVDFRR1dJVEFybDM2Ri9EeUZCL1FGMkZlVnpDQ0tZdVNYb2ZMR0FLU1JPNm5kSjNEMHJBNjdhMUlxano4TXdVcTlVZTc1OFREYjB3MHRaVnlhc1hpelZORExUSGIxRGdZRWZiVEN3em51WjhUQVg1N2IrU0g3N1lFUS8vR3dyS0FRVlNmTkZBWndmUDZVbEwrczVNNU11NStuYlRMSHNXSUFvQVB0cG96YUwyOWxWeG9abWNrNVk5V240czUrWlhnQnZrODY3cmc9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU0rRmhDVUFiUERDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOdkp2aXA4TTBmYUNNOXdWOXVuekxBQ2NMZnZBZ1g3SDluWUFPSjlkU2xmTGpmcWFQLzhQZjRFRXl6eXBXdURqdlo5QTBVVmFmM2RqOXhCRjFzbmtLN244Z1ZkanU4R0RsZmVtUi9YWUJYczduNFo0QzNSc1BSWDdxeHRhVmJBMlU3WmJibHZZSU42SUtKYXdRR3JvclB4VVhHN2xNY3BHbjBZdzVGNDFrbFdkRmgzRENPbHdMRi9OQkRyNkhORlhod25Jdm9aYWhVUHJNQmpSN2R3M2RBSS9iYzB4RDI4R1c3MEpBUG5UcFNNakl2c0lNOGFwbzlsVXhxL1RGZ3dQQkZVc0ZzcXNYeU16TDBjc2xLYXF1ZHpVL1U1RGN0eUFHMUdiWUU4VHpWbmlxeFcrdzFqeloxSitBc2tuYWxoV2pPNTZ1eUk4alhRMEVSVnUzZDc5b3NDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3RzalM0YWhMcFJSdGptamhQdmc5bmczRnIxQThLNHZkKzdoVWJ2SFdpdVJoQmV3U29lL0JhWThkUmF5V3pzRDdadjcyM0Z2UnpLMUd4MDZTcHYxWXZoNzNTdjQyTlZEc1pUMkt4RFRCNGtYZmxuMjlhUzJjODJxL1Z6aW5Rc3hORm1MWkZNS2xjYnZpVkNTcDcvaHFrcEFBeHVwdWc0OERsd0ZXK0tNQTRXclBXSkpVaXgwLzAxWUJjUHVORjgxZkh6RVZMbXhJbVZoVFEvMXNVQVRqa0NRT2ttbG1CUHlPNloyaWYzcG02WTd2dWpOV0ZmandMTWxoc2hETnpQNjdXQU1kY2FCdzl3UkhoMnR6enRzaGtvWlVYbkd1ald0eWp5ZHJ2em5JblpnV3NpQ1hNazJZK2ZkQVl1Y2FRL09jZmRsMkZQVmlSV0MrRXhLemFnSHNvPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBT3ZwWnRKTnRRL3JNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd4TkRBeE5EZzFOMW9ZRHpJeE1UWXdNekE0TURFME9EVTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmVWxjaXdEUENKOUpYeTFOc3hLZnF5T2ZMUVhGS0tHZ05LS1JMekxBV080M0dnUVlyVjY3UWFBbnk1THZnT2E4MUtRT1g0SXZqSnkwbmQvVnJPNmpHOXBUZE1SOXZGSFQwVHUzVzFRVXN5UFBTUXFwS1h3YjJaQ1NYTmdoWUQ1Z0JyTnRtT3hBT3MxQXp4NXFtSXpCSjRGMFJrUml2Y2RiWFNmQlVCTHBDbjFNMjg1YzR0azVTRXZvUmdCZWlzTEpKREI3aG15bEExVjYvK0JOK042YjNNK1paRy8vQ1R2T2pKS2dud2tNQUx6WGJQYlFXYTBrcGJNTERNejhLcjJwT0RMS2IzckdtZGY0UDZBOWFBNDFrNkw0Y2xUc05kY0s3WndKMmZHRjc5V0d6RTZSTHlCWDJVUzNnUEhVWHQvV01RWlh5VUxPM2V4aVREc1FYV0ZmOENBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ1FRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCM2ZRWnoycU5Bby93b2hQTmFSMnVBYWtMdDI1Y0tyc2JnbjNYd08rWCtEUkg0bnFNU1prSGRMR3I4MnhEM2kzM0JMU1F3WHpGZWNFTitDQThTbHBOb0lYSHdrNkQ2VjN1RUJTaktlbVp0SkZDSnFlOGQrNXF0M0dWNTBBS210RXQyTmM3Qjk0VE44eEI1RW1abGFkblRKV2NCZ1N1dXoxaExYUVEwMmRKM2REcThGTWx5UjcwUzJEVHR1UHUwaTIvZjZLdHJsbW1Oc1UyNEFxK2ZDekVHNDNOcVNoT01lTTVyRHhMc1NKQ3RqZk1Sd0c4WWV5TmY2Y0NNU014WUFKZnJUeWorQVM4UnRaUU5HRjd0WCtleEVXSE9mMUM5Q0J6SHRLUkNsQlJMNnpEamxwUENJRHdjTUZpOE5YdmFpVmNseElxM1hkZnF4aUdCQkVsZGtoZ1o8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkowVUduUUxKdWpjbFBEMEY4eVRpMVNSMU9oWW54SS9Tdkl5T2JqNHJYUDJCQ2hvNTU4YXh5dW9tLzViS0VsSHlRNUpwTHgwdi9kQ1NVZ0NXMW4rc01HREorM0JoRFUwaFZQaHBVTHdmWnJ5S0h1c01sQmt2eXN2ZC9PNkwxd2hQbEdnSnJUMzl0a2lCQmk2QUo4bUtlRDNmaG9nWXFwbGVGK2xrckt4akZEQmZoV1RBYnVaOHk4QzNNeDZtb3M3a2piUjVHczQ3d25yejRlWWdXK05SSjhWL055YXVDRW1wOUJBYmdyd1daL3JtZ01YWW5Sb2YrOW1TUThmMkxmcWN1SXZyM0krTE5MaHcxSUNhTnZhVVFJVjZCMEpaS1hmaWJ3azUwd0FLNEFzNkxSSXkyL09KMWVNMnJuK1MvOUtFTUVxYlZKMFNOcnRkY3pKT2hqaS9xZz09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPmcyK0g3Uk1hYkpRQmtKZmZUTVcyZFQ1ZWFJbkUyOVY3L3dIV0ZTb0NQbDIwUDhqMU1SZi9va1NwQi9SbFdrdmVyNDJLZ1RVVzdsWXE2ZndLOStMTlIyQ3ZSY1RVVk16YlZzOURqUTdWald0NFBOWHQ4eWRLdmFXZ3dGbDA5aFNJSE5lY0QxT1g2K3N0aDNVbHlGd0x4MjZpVEdvenlweFZRVlp2YXR1Ync3czQ4OHFESnY2UElYcEY3NzEwNUpoNWFEejVoRTJ5L25Xd1QwSy92S0J3RWI5elR4UGhta0NPSm1UTDI5V3ZkekREa3NuaU45VUFCZDBERlVRWk9HRDlZQ1ZLWlI5OElYdDhVUDdwOCtFVFBaamRoWmVJWFpUYjl6NkZ5RFVWenR4ck8wbGc5WURpNjFiRk1PM0QwTFVta1ZoTnUxV2VTZU1VNDdWcm1aQjNRT3NqUTE0Z3FQbCtNZklVR0JFV044WDhiRE9zVWJUU1FQd1hnSk9BR3RqdHNCbkFrcURrWGFNYnh4OTY4dDE1UzNBYzJNdGZsQU1pM29XSGpjLzA0YWloTzEyV0YrVWxnbVdBVVFsaDR0NW94a1dMdVl4Mit3eHJORXFHOVRIY1paMDIxb3ROR0lBc1JtWEFRNk9WaVpvQUxSd2VjL3MzTUl5cmV1UHFZK0FBQytPc0s1WFhYVGtaa3ZTSjVIRUoxeXlRS01HMFFFcG44dGV3MDZSaWlMd0Z0NDZ4SUFXNUprcU5vQTBqckdqdm9TbGkxeStJajA5VkEycHByVmcrKzIrdFZzazRja3ZGUGlpQ0l1ODVrMGdNM2JKTWdHOE51WERBSlREOFJaMFdyM09EWVdVY0RUL2k4ZCs2TkRZYmdtcS9YU0JCRUJIUVIxdlZDc0FISUVZMmVJSzVka2NRUXM2cUE3K082ODJFRjNJZ1lNbEVJaTV0eHFWWTd2ZEdDZjNVc29MN0FHb21oMXVITHM0SjlVMHphTHcwRkl6UUhWRlA0RUh5YVRhVkZoS1dGOXBhSkVHbk1SRk5KdEUrQ2cvRHhrbVh2OVEyN0ZvUnd3KzdxblcwUWtsWm52NWlZNjRnSVJHQThoa3gzODJOUkZEendRbHZGemVyVWNrbTRIbC8yYlpQZ0pPMUpSN21sdXlhSFl4T1JuaWQrK2RncUJGOWJVMnpzWHZwdjJFVlkrZDNRUlBnbmxGRUhycThUMGtySkNCQlY4REpZcmhDZ3lzTy9uVVQ5c3ExeDZkbTdZSUN4a3g0ZWtNTG96djdNOFRvYnZCNXF2Vkp3UERnR1REWDh3VjFPMTdqd0J1SkZKNlhzeEg1ZmFCVEM3TS9KWnluYVpKcFQzaXRscWNRY3pOUGNZclkzYko0R1h2b0hFNEZRL1BGUGZ5WFQ4aE1zUStuZXZUZ21lNU9ISGMrOHhXbzcwUTRSUEZoNkx6TVZ5anU3cG9YSmkrSVI1R1Z3cHV3M2VQV0F2K3lXblhDcWZFWXpibjA0RG91d2JUeUZwUzQ5dXgzcktjNFoxTkNYdisxN1pXaVZrY1p3WFNuUlVmZnlrSjZoT3UvVk0wQ3d0eXJaZlJpTzZUTi9rT3JUK0htV0QwREFvRGRhWjRLZXd6TVNUQ1FsdTI5bW1JTXVMRXE4YW8wLzRHejZqN09rdlBBWHI0TTl3akpKS0FtMXpHR2I5L29IVGFJU3MrOGEzeDV6ZncwdU90RTdKSkR4eW9zaHVoc09UVVBTODFCaTlmQ3VmWkZrdW9XU0RHZ3FqcGZuNUt4OG1PcGQ1cTJWMHdPTGF3aTAzc05ld1RhWmtKcThvR0FVd2QyQnFIdWxPQ3F2UjNvcU1YVk1mdTVWRkdlRjIwQVdhOUpablpXY3R4WWtPWFNqcTBzaHZMazZ5aFlERm9wTjNPdVZGSGZGWjdRd0FqOXBJdTVjUnVBYlR3bmhqNklEMDZJL2Rsa3YvYnFrWEZ0WnZFaURwbFdqYW9MYi9ITEVheVVEeEpWYVBSTS9mWVJ6dzZBcXE4bnArQWMyTGpsczlvQVJzbFBwcmV4WGl6SnIwRmVKUFdXYmtvL3d3cm5xKzgvbG5CdWhnelpCVXVwcDJWREVVeUNwNXNVVTduTDllZXhRQ0c4TjN2NlprQnBoek5XaUFjTzlCaWNQTWtndEg0S1cvV2Z6VHZ5L2dKNTFZNVR5S3J0RUhOdWJERmpYN2FteHZIa3phUEFZRmZiamJpcy93ajdCYk9vRVRhQnlVNGJKS1BTUTRuOXZQUGlsZTRJYTV1VDdBTkR5NlZFTVI4OHdudkJMVmpKS0FXMzJhUmlVQ1d1M3B2cEQxMWNZcmxib1ZyeDVGWmVaL3dDOFV5Y2VMaEJEUEVTek1KZVh2MHI1K3JyTGxuaWtZTnJ6L2VmTjFwZ3NWTURmRS8yV0E1bHhPMlR4OFZXQkJ0T1R5c0dzUXRISGt0bklsby9ORlZBVWZQeng1TzFWNVh4ajNuUkREYlFQd01RY2daaEJud2RBaUxqYnVrck1zNTYxSXo4RlpEK3B1UkZIR1BIaVc1U2grUk81Y2xIN0lpaTJIR0pZYUg5cGYwSmlqakVnZmhyaHNrbnhUa3dEd3BsTjFJbGNBOVZmQ0U4NVJkb1RZcjhUdWNONE9ZVUd1TzFPbFJhTG1sdUJFSVlEWmRSR1NQU0dWSlhOUHl2cEZwbUlWd1Q4eUQ0RUZHdGtHT0NPT1hVMmhFZXo2OEE4UFk1dTBkcU1zY3BMMllmR1BmcURmdWFad283dlZuODVTSnZKQkp5YW04bUdaakVPbi96OEVnalBUVU9ETnBXWFBBR0kvbWN1ZnBzSmlHWS94NjVYMHZ3cWVBQ09LWjFLOU83aVpWWXZBL2FlV1c0RldtQTNvZlA0U254Q2N1M0l6RHZ4Nng3NWRiMFlsbkZBTk4xZ2w4ZGhldmNkeWYwazBPc0ZiTXk1MHJQd2V0djFxeUthbVVVUUM5emR5VHJzY0FkblN2RFBGY1NNQzY4ZEpxMkcvQUgzSW5SWUdKR0ZiTW9LZkVrMWZxQm1rc0Uvakh1eCtHNzZYc1VoU3l1d1pmQnR5SHNwV3FwZ0U0b3BTS2dEN2d3alorcld5OFYvWmoxZ1dxTTBOcXhzKy91Nko5TFJPSUF0UzJJWllhMnBhOHBsRDE4dmowdEpMQytLRmY5NUEzYXBLNktId1Z2djRJcytSSzBtZ0RsdCtGNldzZmhxVVVMMkhWUVF0Wko5RXFTc1pvME9Fd2NKaU8vNHprUHA4Z0FzTG1ERURQb05SeUJLT1dtNlRLV1o0VEJ2U2lvZzRoekRTa1NvLysxbzBxTDJqd09pbUJYbThFOWxzMno1Ly9sSXV0NFNrY1pjRE04bXdiU0kwRjk5dk5kTWgzT2srV1R1aFpKWmoySDVpdDVBYjR1RnhqTEt4VzNEVVhZSXJTM2hleXJkNENGYytlc1N5UU5Lc2Z0a25jTDFyZ2Vuc0Z6OXUrNHhQTDcza0Zkd0FqNnZQcnhKbUh2VHdkQnlZdFg5dlZUMmVxU2kvd0ZOT1hZY2lPUU5IUjBrL2l5a2JPNnBJcnV1RGpmQUJER1FkYzdud2VsQmVidG84SGpnMU9JaVYrOEpjeldvblZOL1RRNzlDcEhzTGY1cU5xUHNHeHZvYW5JMHpMWVBLU1R3VVA5ZUpxZFdhYnBJYUQzYnl0d2tDb2E4c21nMGVtTHB1eUdaOGdQeVV4eFFndTFzeWVhMVVzd0dESGNMN2xZaGo2YXNvSzdLVW83NGtPd0tNTU9sRFZOTUpiNzk2TlMzOEdhcVJaeGJFSnY3RkhGRVpZRGkzeUE1M3FlN1NRT0NOTFN3d1lIZkgyYkkvTERqSDA4d1VKUEZSTDhIZzVCclpTVnM3U1FZTS85TXpEcW9TcGRTR2lQL3ozSEw5YzZQOTBjdURrcHRqQlpHK3JnTXNuVmMrRE44VDhuclhyazk4NEFOVnRuN0wyWlNtcGhoZmpqQnRIYWZXcmQvYnlxV3IvWkxTc1dsTkY4ZjhreFZnS0hhV2ZmQVJia0hTMWVtcktBYjg0N0RVV3FiUVBxWWVKeXg4UjhDbUl5VURqSkp3YksyWGg3L21pOUtmSkREMzlmZHl5Uk5EcFNLRStpck5TNkRDcWEvTWo5NDAvUTl4MUdUYm5yMHhBMnZqRWc1Q3JCMm92R3IvcC9yVnFvdkZsNHJxemZacCtrVktVN2xSQ3lkSWgvVDJUbWV5VXlNdVFWYWdjMkdSUWFDUmxxUDRwUXF1R2J5ZkZpVERjOGdoamIzVGxmY1JIRDZmK2ZWS01XVkFhcnBhbEc0VmgyNzFqNVVkSnlFVG1scGMvUXc5UE44MUpTbk9pbG1CQUtKNG55Y2tPaFZYbFJCK3VPd1d0VUg3eWxFNng5ZlNydnNJbytpcEs2UkNVQURHbHVqY1lYYWhjNnFDNU1mckZuVkRkSHFwSEtqR0pvZStYKytScGNRME1LaWxTd29wRlhIaTNRbldmMmNBRkxYM2YwclhNaGw5QXJmMVBCbzJzbjZNMlFQd0dKdHpJU2lBWUt0R2ZFRUloM254eU12OHM2bE1TcHZtTzN0WE9VVWkyR2VPUkNwMEhPWldWZlJVYWtCRElET3ZIUDRrcEZhNFFWODlobGlRRmUrSmtQV0FjclBwZ0IxRW9waWZXZDlNRjV0K2t1UU8xSmFXM2xlNEpZY1VheGpaY0NrT3lHMXY1cnl1NEFPQjU2aEVqRlFlRDV6cjRMU05RMnZKZ2ExL2V5Y3NhS1JGNWFCWGpsRVBkellMa2lQR2JtRjc0d1dONzRTVkdMRGsxVzQ3OGlMeVBnUkd6dHRYOHNReWc4OVErUmJHOTJ2RUdIOWlYMmljNGY3cG5Rc21RcEsraUFUM0VPUVdWVzFmSDRBK20wQk96Qk5hY0REYmZyY2wxN2oyMDVtTGNIZTJrdllER2FYMkhXMDJxREJvUFJES2pqejhWWXVkZlZJNStnSzRrZW5NMklDTER6dnFtUmNNTHlPZk9GQ2Z3K014THdvQUlrWXd6a0lzNWF0dUdqNzZ0S2hueEpCK0RtMkY1SGNKbjZoMlZjc2wvZ3E4RFQ3TE8vL1hreG91elJ4bm1mZTN1WUpTQ3dEZzN0OStWcmtDUzkvUDUzajFiVHFOT3VvcFlZRUhQSGlCMkpuQVU0WmtCTkpzZFd2WnpaYUZMWk83U1lORzR3cHExWjZiWVNjNXhDa0kvTUwzd2dqZnRhL2xsaVRRTTVVck9QK2pGWUVLdlpGdjNXY1hJQ21aNEJ4UWc4cEVTc1JCU1VCYnUyMk8ydFlvTm9KeUgwV2JLN0d2VU5zR0k1SHBTZVdCcUZUSDF0bEN6Zmp0SkhuN1lkU29VV3pSRDIrT1ljYXRvTkg1MUNUZDk5b0hyUksrcm1NQkFJckVqb0FaN1k0RGY2OU10NmtOK0pnUElUbU1LajZ5TnBwMFpQZzhYS3R1ZjBVdmlrZStmbEM1UmJPWitaMEEycTRaS1puOHl3K2xGcmhZSXMyanR1RGNYLzdtNlJ5RTV3cW5aZ2p2Mzl3c0hGQmx3c3RGMnJpZGxZTFo2enF5dmgvTE5uWjY2dTcwVUUzOXk5bXBlUElOT01FWk5lQVF1WVdrOUJWSnA4cHIrMEg0OVBmVUl1eWZXaFp4dHFVWW1ScE5SWG1UTTh2SWRDRjRoL3JWRzFhU2JHRm5ESUtVQm1YcHFQcjF2QVNoMDN3REh6bis0TWJHaVV5c0F1dEZTVUthalJjNGdjdkI0ZVNxTVN2OVQ2MEVua1FTMXVPYVJwNjFBVkI4eWpUcjc0dUxHN2QzRjU1cHhuajBNMEl4Zlk1RmtqMjZOamtweU5jNFlTSThMT2JRZGJuek0vWVoreWtTWU0vc1pJY2pEVHBjVnV2RDdvbnlpNk55cDFGcTRKU0gxK2lJWmpFMmlGeGNDcW1XQU8raG56OXRvZXFvWFdvUTNhcDF2K3VtcDdhSFp3a2hGR0ZUZWNMTE50N0g2SW53M2pWVkFhN3liQTBadHRxODBFNlVLWnFiS0RvL1d6djVZaHU2OHNvZ2hkZzNJQzhxOWZ4T2Q3SkxyVlRSK2swcS9HcTJEd3BWWlVNRUw3eFlRamI4c2gwdEI4ZiszSlpoY216ek5MT3VUais2MWdKQlZTWkVvczNIb1VQRnoxeUt2eDMxK1JaVXRHWlh4eHZjMW9MeSt1czVVeFNrRU16WGtlWXZxdk8wSm13NUFGc1BlbU1USVlQNzJNMkZhVWwrUDJ4dG9nNkd3eHhVSmdvUS9mN0N2Q2o5MG5qM3dCZnM1NVVaeVZNbkJ4WGV1cm9FY2d2OTBOcHJwcDNBNUlLbjFKZWNBemNrY05yTHhkeG41ekM2TjR6TUhCRUxpREx5dUU0anZ5d0FkMjFPY0puR2V0T1hTUG9wQUw0UmNnNGN1dDNtK0hZWmNuM2J5UjFkb3Fxc3ZSOGs3RmVKc0dkOHVoMzY0ZGdWTkliZmVrOWYwSWNFSWJMWjllL2p4ZE5WVUNpK3lTNEZRbkdKRndUQklNNXpwZGxRL2hBRk0vZEl2WGFlSWhacjhPQWxlN1piclFZclJ0aHRGaWNWdFoxUU9ENGd5OGdKaHJ1dEs0MCtZR1V5YXFsRmlEaGhnL004SXlkQzlxcmZNYVoxSlRvSlB1WE02OGlrMjhXN3Q0T241SVJaVlpPaGh5U0tGbFBLMzl0MjJTOHVrWDl6MVRMM3Y4bnBDT1FrS1hJTlBEbG9CTUM0QWw0L3JUNExqT01nN0JadGoyWnd2Ump4clNERk5pMmhhaXhNaHJ5em5HRHZRZFZQWi9LcHJBdWpnQnljT202Qk1pczRaeERWNUZMai9aQXhhM3NqZ2VVdWJVaUx3RGtXV2RTZUYwaWs1bk5iOEQvcFlXSUdEcllVWlpPYW5aWnZoeXE3SlhlREJSYVQxdytBU2ppVzg4VXoxUGNmejJaVjQzTXNIeXN4bWI3YWdPVkJ1YVNGZTBKYVdFVEZHWFdlV0Z0cTVkWkpweHEvV1Vsejd1czdYZGdWc1VwTGV6ZGRNV2dycEI5TWNvWm1LN1NaSkt6SVd0MW9TVWJuQklhaytXSDBOSm9SQTVlVzViZzZvam5haTlYTXF0aXZuOWs0MVcyTGdkY3hhWmIrOFFKb3NjelpFcGlmdDlrRmszZGxJQktjY0dYT1NoRFNOQnY5VWpKdFptLy9QWUcvODFvc2JET0lQTmdMaWFGNUkwaDMva0w4ZVloSzFwbGFiN2NZcGRvcjJVRG5UTEl6TjBpSG1ZQjkvZFJOVjEwanNYbFBIWmtjVzRzYjRQbnRCbU5jL3V0ODZjdnV6UTcyYWJ2ek5rN2JnYTVyRmQ3YUc4NlBiVzRKL3ducWJneEhjaHdwV3R0NjE5Zm82d21FQjRFS1hod00wbE5NakFiL0ZUdUY5a1JrbWVsclA0Nm9oSXlBQnJtblg4RGp4bHJYZTh0c2Z5S0tzZGhGbkxQNVlRQUZqUmkzL0MydzVkSlh1OGZtTGI2b0FocFlnWk84M0I0OGs5ektMVWpDdXEvbnEzclpqY3Nkc2VDRTVicllKd20rbExleXNKTUJVZ1dGQmFqMXlFVTVLcWZManJUdDBlM0Z4SkNnWkt2V3BwRUNvRkd3MWNhdnZZT3lrU3o2ZUJkVGtXOWoxWXpUekVDaGpEQndxZVNsdmEwMmFPOFdoai9BSHczZW1tayttTDRRRStUUWlSeHN2WmJTUlhxRU8zRUMwdi8rWmx0TEpGTjMrQmtOT1BLc3dGQlJZd0dOdVE0OVpTdGtaTmJJMHUvaEVMTGoyajhJeDNSQkt2NUlpb3hUNTR5dm1BQ1Q0ZnVKZnA2NHAvQWRJWVowYk9NRndPRFlwOWxnWDlSVDZ5RC84ZjUwTk44eHVzV1RaSDFKLzlWT1lhcU1nQmszV3BJMVN0VnZ6NUxMaW5YTHM1SHc2bktLUXlCTGFTYjRkUmt1MVoyZGs0NncwNlFMeXdidnFlVWhOTzIxZTV0QjFuY25ob3Zwc25aVGwyVzhjVlBFZ1FEak1LbUJtRlJSVXJrWDMwandIVW5PbDUrYTNvMjBnaUh3NVp1S3FHYVhsMXBPTjFwNVpuaVRwKzd2d3d3MUhkNTBycnk3MnBJbmVTVGFMQVNzOU5SWTgxb2tscGJTQU9HbStidk41eXRMSjFPQ2dwMmN5RTN2QTVEckloTk5rTXI2VnFWWkVyYXIzSitvK1JINkpwOGtkL2JXb21DZTZBeC9kVzMrbWkzei95RDNrZ0s5T3BoY2xXckJ2aUxNNThQUlJaK3BkRi94em8vZzNkSC9odkpIVnRlUG9YRGs5MEtGQXg2eE5obXpQR0xFZnh2ZVdWcXVwUmpKTEtXT0toRk12a0QrMVlXeWFLSEtVTzhYTnJ3RXhPbDQyMGZudkZUMlY2UysvS0w1cUlzS1g4WWFJVUNBQ1dWQUFsOGJUL1A1WXdXdDQvV3lpU1VBMm1vdHhlcmlPb01tdzVpT2s0SXlpOFNiaTlwYzh0Zi9QYkZzM0dWdXJFWVdGeitodnNqakJNK0FSMzN5U0NHbTZCOHNzdzYzM3FwUVRxNThkTlhlSU1DS1A5cFV2bi91NldMZ0lVaFFZWWFwTmNpQnhiYnBFcnNIVlg0U3oycWRiU2NtOEVKMkZXVTd6SndtazdoTU5qTlhGWXNpSkhGWEo5dG5pVTFaaGNkb1ZrN0tRY3VJTnF3VS9kN0RCbEc5TnoyZzR5RVlWN0IrNmh5YVBvTVk0WFFnZ0JZd1BPSGI3ck1vbkduTjNBMXRGak9XQitTVS9rUGVNS0xqdmJod21Oa3Zic0dob0ZhMTJLNjJvTzMxZisxOHhGWTFuUnpNWnJTSzJTc1FvdjFzTjZnMUhmaG9scnBXQmEvWWlianpEUzA4YStEUjFrRjJVS3Z0R0srMFpnNng3djdjNnQ5UEU1WTh0TnNLcGJxSjdSalhOYUEyUXJ3Qmltam1UbTJEMmZNMmNwNHk4SXkxb0kydUtVTzRzSGc5Mzh0b044ZnRiZzF6TC9MalduU1RzVG1LSytDVEpZRUorSm9VWGpZbXovNTZhRHMxWkZmZ3h3TmRaUWNpTGhkMWh5dGlSYm94WmxCcXhyNDRtYUx4c3JtWm9XQVdyclgzRmlucHhrMW5NQUZnV0F5Y0xyZmdiYnB2em83dU40eTEzUEd0UmUwVmxNVS9SUkZiM29DVVFIL05Ya3ZPUHBwcmZFOGtxZmhoNW4rZXpCZ0VYTW9XSW5HYnE3MWprN1paU2x1NTJlQVh0dnkxaUNyK1VUamFlTWZaeWNyTi9QcWRkRUJwaGJiUnhtNG1RaFNIWUdTYnZabU01ZDhTRW53TFZ0azNRd3BYRmltQzB3ZlhBM0VDdFYvSGJpWGY2NWNmQ2RtU0l6cWh2dEJ1ellvZjVjdHVrTXd3QldhUmFPdTIySTFuSjFMeGE0MXd4ZEtFMDUrWk9DWWRTNDZWODQrdEduUllTY2tJVFlMVUU2ZHhiemY4K0xTb2gyK3M5RlJBaGpzUDF2Vk1rQUlhWEF5ZVFWQXN2ekFZUkRmL0o2c09EdjFVcThvbjhLbk9BdnBybkFmeFZYTFpnWTg4aGVYbzNaV01wMjZobitrN1l6ZlNaZ0lRUkQxVjdEVU5SQ2hSYUJaZ1BBaGYvRTkwTld3VU14Z3loSUY2c1dNUmRmZ0V5NFRqS2krU01ZYXJydE9icm1KNzJJaDUzVFJlUWM8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_46.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTU1kelFGWjZ2cUlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd6TURJek1UQXpObG9ZRHpJeE1UY3dPREEyTWpNeE1ETTJXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUs5bzR3djJHMW0vT3dDVll6cXNWTitQTUhia0VTM3JweERSQVBSSTAyNHZEekt4em5YV21oM1gvZjMzT3FtMmpBR3VUNzBSdzM0Qzg3OE9LSWxwY0tmV0d1b3VMWG5lWUd4VzZXWTFJQ2Zpb0V4TGxUK1ZuZ2VRSEZJelIwSzlVN0MzRkh4SmgwWEwyNGIzd3ZBY2UzTGFLRU5sRTJjZDRJNGhmVnFFUHlpVG9ncjkrbWRYSVgxKyt3NkROVVlpYnBiWXBlOFZvMTlGZTMxSGtpSWp1RFVQTFhTSDBoazZwbk02bW1JZE0rQ0JDZzdvUnIvVVlCR3F2SGc1SXRMK0UwMzZlS3dkQ2preGhPRmRkUEV4Nzgvc3NKQittcTRWL0NMUWJWUG5HbmlLWUI0UnFCWmw1NnRwMTJwRWRVVzZWbHpFUEx1Vk1NbFY1bVJMVXV3anRpVUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCeVA1TllZT0lZc1Fra2djTkpYQ1A4b0krdHVLRGZnWmZjcGdxSjRrdXo3ek9FUnBWenRnWWdVS1lvMHBtZWUrV1Q2WDNxM2ZaQ1BUdFFpQXVlbEhPSFRSL3J3bHRqUFQwT3VBejNVNTBkY09GTVh1V2lpL0ZBVWpSdzI2T3RSLzdKNnI5MGc3NVNlTkJCWFRndjZ3UnI4bjQvaUVSUWgwSmtCSmNwd0NEN1pjRGdjUndQWnFwdUJGMzFVMmpvMU5nT2hTU1ZnN1pEZ0ZaRExVZWVHZWtmYkRMZzlURCt4SXQwNmZZdGQ0cGRJcEsycmVCaUtnRTllcGtzalFPN0Z6bUp6QjR5YUFJTHJmZlNzeENXWnJIZ3dBU2FhT2UxRllQM1VnTHpodk9VL0MzMGZlbHR2RzlXV3RQV014Q29wMnEySlIwU1JHK21XaVdhdTh1WGZwbUU8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPm9INWcvenVxS2pVL1hZQ3lsOTliL2t5VHpQOG82cmhFVGFhWFNYWEdXVGNqK0JqK3RvVFZHdFlzb0RINEdnZDhVeVRvcmVNZGViZ2ozeUQrM2ZJTGtEMjZtQzNCdTJZYlVWY1NOSi84Zm4zT2JrbWtna1kydzl0bTZmbS9jUU52WHNHZW1veXRVajNZN244OHhGZHZIUGJCaEJhUER3MHJwOUc5YXNTcWgwVlpDbjNZN2N0dWV2WittQ3hDTWN2bVRGWGZRZjlqRG1Ra3YyeU55dmxvbnljSWVRVCs3TDdvV1laRHN3Smt2QkNtLzErY3FrVlpMeXpRVWtTWUNJbXlQZHVhZ0p5ZUE0dmNMYjREZFZVVXFRa1R2L295Slpkclk3ejFUMlNpazUrblVxa01pdU5Ua21KekJNZkwwUEE5MkJ1elI3UWhsQVhLa1RDaWN2Y0xDUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPk4rbGp2a2xURkhCdDNEOFJJYTJ2OW1iQkRMNDREcnhFVlFlWkxzcGpTYUY5bkVvdGh3Nm16SldnVG8wYklsdEh0bXlXR1d5VFA5aDAvaU9hcTJUaG02M0Z0Q05mcTJWRFlXQlVGZFpnb3dzNEVJejFnVitwejFNTkRFZmRMRWptNVlwMy9rcVI2U1A1cjlySjFvWGlnazJidW9oK3MvcDgxQk1WRHNCSWVpS1NWVGpGZm4wMi8vL3hJNG5TU2ltOFJySm5HbzU4YXM5bnhmYW5Wd04rQ0loK1ZxcUZRWWxYSlA4VmJmRDJOMEFPNmx3cXJkcHBVMUxCWHVHTFFWc25pNzRYTEljZkhzd21hYmZOVzRndm1OR0hWN2krSE1lb0ZWcmsraDhWU2FOVExhNFR3ZnZ5R0FIMmVETDdHMTZsRnpIVjdZbVJlZmUyTkdiZVM2MzkyUjRhdHhLelc1cExBQzBLc2JHMU0zdTJwa0UrQW5QSVZUWVl4eTVXci9yUi82allzV3d5OXIzVklvMW5YRk9pYVVWbjRYS1lIa0oyZUtSWHFpT3NNUXJvQTJOMEdVSXJFQzNWL2tDZmM3MUl4Z3dDWjRiYmlvNms5bHN3ZWkrT2xuU01EcmRaSDFwTzJPQ3ZBWklmTDFJWVFwdWlQQlBENm5vUkFnL2xsbkpDUkFqck1FVm16blJPQm81MXZUVGZkYS9rTnZTeEVJVmY1Tm1MZE5mNHJLNjcvMlhFOHJkR1p5U2tDdGZYUi9KVnZ2dkhtczlUcHJaZGpPRmxGakkvOVdSaW1mTUowZk9DL01YNkJrbDJMYUkwQTh4UDNsK2gwM3BmYTBJamRZRDVuTm1JeHFkeWFZVjRacjF2RGh1ZWliLytJeS8zNkhMY091aHE5OVc5R2wxeUpueVF1Q0JUMDQxZmNsaVNkVk04NFU5L0k2cmwzNVFQU0NFbFZlOVpONGNaaWVWQ2VCRkdTUG1GM0JIc2hadmI4ZzNtWWljRDhRT2RwNTk5RE90R0d4UzVTd3BsWmN1VEcyM2VkSU1uVTBua1VySkx4ejBoeTFPb0ZRK3NCb0lySkR1RVlkZUJlYkVnTXAyQzNLM0tFd2VNS0x0K21KcGxjd2tJVlQ2czdPMk94WklndUxYeGxOTnNQK1J4eTJ6eXV3R2loMi9CbFIrTEtXRFN5dk5KR3d1WUtlOTY5UnNsQjZFTEZsY3c5MDRWRjVRQkh2ODErckh2NExVdXVnM293SVpRbkdKNFpBSWxmQ3RwbkJsVy9ZRkdrSGtIOHlPQ3hEUmE5UDNSS0NDdElEQWtTSzV1Unc0VXdRY25KU3ZvZVp2bmJqUzhBdzFPOS84RzlnaWZ3QlJNSE04b2IzSUY4aDg2YXRTd2M0YWZEWVlJRlZUOGIwT20xZDhrWEhyby9aZitkemF3bnhxYTJsM3dMV3NibTExZjloMEd0NmRsU0VhRU9iOUFVNkJDSTVjd1NsS1VPdDRXdDBGWjNhdU14ZU81ZjVXQUxXVjA3NW9BVEkzYnNndkk0Ym1DKzFIZXdqUzlPWkI2R1hEcEJGcjZzNmhhbDlsVkZlYVl5b2FQRVVDaHNLRWhoaUc3QzhTcE5TTWQzbDlXY2RML1l0L2QwVzNlQ0RmWnJxM095Lyt4TVFTQ0h0L2t1VDBBWnZiUmFVbW1TeDhEUVVpWDd6M2dFWkxuMng0VGNlUmU1TFQvWDlHcDA1djh0L05kVXViVVQ3VDJHY09JU2V0V29tRUVRMzA2cTM3ODhxVkhidWdZcWxVVWpJUERRSHI4Vy9oMGo2dzl4V2xyTTc1RDVSelh6Y2l3cHVlQjk1ZDJ4MWRWN0ZoU0NOVnBLeDBCazI3NjBPS3ZrVWx2WHhqUmpmZFgvVzh4dUtqamc1SnBTakQyRTJCTkxCd1orLzM3RWNmQ01KbmpuWWpweFZwUXlKZ3YxNEV6czd3SHc2STBwd0N1YWVwZXhhZTE3UENjaEVXb3FXeDZ4TlBYdnVMcGZaRGdONmRGNi9ieVBzRWJoOWtYY3NubjlybkxDUS9EcWRUazhaT2tkVEYzRUNqSEF6ZitTRFo1ZjlIOUpPU08ybmc3cmdTQlZGUzBkZmJQdUNkVmpaUjNWSkpZS3pTSUMxSVRZd08xekJLWW51SHhROWJrRU1FY0toQ0YvRm1IWFZwS3kyckRVUHVCV3MxVTVoRkFpWEp2dFgrK1RZU1poWGNKWEtuY1JpOXdDYUFUc0draER3RzlxUmV3VWtWY3lZM2V5UTQ3YjFaaHZhUmNKMEkyVlVONkRoVmZ5dENqaHQ4ZUVtcHMzNUk3T1NheXF0alB6Y0NzT0J3NGlIdEcxblk0MC91aS9mbGordzdyVHBxR2p0WG5wdDhqVXU5eDZwclp0ZmhPbEprR0N5SS9WM3g3UFNyM3NIYldVcFZzMWhSTyttNmRKTHhsZ0FDMnJuRW1meWZsZWl0ZEI1N1l6SFMveGxCc1VRV2lJK1U2VzVWblg3TjByeVk2VHNpaDZCRDM4dUZtTUNINUlIcWdPOXl5VjJrNUcrbXBvekIyNHU5cFR3YzBuNXJuc1J4R01VWUlUNFI3amhjMDMvSm14dTJOT0VHZ1BmejZNRzZLa3kxeEhCTStLTExWTUtaTlpQMEQySXFsZkFSVUN1WFEzWXJJcXdZNTRGMjlzL3RneDJkU3cvYjh5QncySXBVN2tJNHd5VWxKbm1pcjRvaVc2R0gzWEVQRlpZMW9XamIraC9QRTlWNlExUGF0bjJxVlZVYjlzeFlpM3labENnZG5uL3RXVTk4SFdZUzFSVENRR3dKTUhvc0FWU2Fra0hkUDFrZU02aUZqWmROb3Y4aUV0V3o1cmFveFY2UEdMZzVMVGVTeWNVNjFOUFV5YlVGTGNBcDZJOWN2aFZhWHVvOWZGZHEyZXR2LzJQUFNYQjFsQzZHM3JTYlZ0OVpGUmo4VVc3b0RIMFppcThPNktGS29pQm9YZENoVFlBTHRHTU41SjV3bDBaUE1MZDREcXpYMFp6N1FUT2ZmQU84ZG1ZRTJvNEgwWGcwNkNvVW1FZExjZVpta3lQbkRENTk0R0s4ckNQTEVDbC91VjlObnU1UHZ2YzY1cUZOcUFucGlkRnNPWkt2a0tnbDRNV2dTZG5meTA5ZGpUK0ZZb0ExUXh4TGduUlRrYmNHcHBqUEp5MVQrM2hacDVuTzFweU5YU002ZVRwLzBERFBrb3pZZm0wczlVM0Rwa291ZVRaKy9LOEdSM1BmcDJxV0JHUmtxRnMyWW50dkg2bXZCNnZOTTBxT3hLNUhZQktuTENYb3JqZFhNZTlGWWc5ZkRUejhWbEdGUEpEcGxhTUp1ZFl6TVQyYTNmNk8zdWZzZ3R5MERYSU9aN25YYjIvK1dSZk1PT3J2d3RCampiY05kdHNocDZ4N0hRVlhPZmlIekhQWHhOWHpGNUYyNjJFRnh6VUhLcDlZZWlRYUZCV2FUelJPRHNsYjAzekFQanlUOWRDTTE4UnUydlE4R3BKWWJZRStsZ0x0N0pseklWV0QrS0p1NXFHMzRlMXFuQ1Y3UitxS2F0dE9vRlE1MWoyYkhlVEJMUDlnZGFmd3FKK2N0TE1CelhrUUpZcG9XcmFhZVlCUVVLT1RZUC9ZWGQzYzNEOEJMcmE4WEJqYTE3aTg3d0QwNTRzcXoweGZpOC92ODhTb1RWalV6TDFLcGtycGRpeDFLRGxPMzVzK2ltd2JrWFFseFhydDE1ZFN6MDVkUUNHbU1JSXhNbkt5Rlg3dzBScnJoSFlCaWhJU1Y5Z1VtVWM4TUtqSDJ3elV1Mm5aUGNJZ1ZDbFl2cEtLVE56VmwwZEZEUjQwRm1HWXp4aEFyUlc5M1hGaDZUZ1pYT3BubStUbXd2d1Jpd1hwTWxZbmVHaGVJc3o1MnlqZUtVOFRKV3JPck5uTE1JZzVKenBBaGhzWEF3TTM5M1ovV1NGc2t2bm5hRUxvbTdIUWdnTUxlQ3lHMGZYNjBCbHp0ZXZuR1l4TXJ4dDhKcHZnSFg1cTMwZkhLa2pmd1VYTXlyMHBtTmx2aUdjalF0RTE0OG93N1ZWWllpTDF3WGRuQjFzT3N2akl1eDF2NEhtYnBOcnBabmlOdTlnZnRxYndLWnFtM2loWlRYYThEb2c5Q0hFcjJXd1oyc1EySU1CVjFMZXJSUmgxSzFkQ2RyYkNzdmZMYWcvOC9VK1NZM0hWMmxCcDAyaTFOQkRpZDltakl6d01kbG9xV1JMU3dCWVZlcmxodmdNSTZjaldvRXlINHhuYmQxajR6czJFVExlUnFrbUwzQ3phM096a0JjVWtMMUViOThiY1FBV3NveEpXdVdKK0RQaEtrTW5pdHBZNXhLdEh4bzFFV05vZEVkeXNRMG1EbXJqRURsQmI5dTUwWUoxSzRPUzM1ZXBBM0h4ZlFmTTBOc0t5SGJON1lIYmlIVXA5dWxqTVcxSTRwYkQ1VlljT2FDUDh2Wm94ZWZmZUJjTkpnUWlrelMwNHY5UERTR08rNzVvdmd5VXlJbnY0SnB0Wnl1N0lLYUtMSGJNSGt2VVBXWTlSUUJYem1ZZzdlazhmWmtlZDVZOFVxVm9sS1BzU05SMERTRGVhcUZtM2JlSmdDMmlQWTV5MFAvYXk0NDUxVnlXU3Q1WUtMVDVqZTBKeCtQMm1TVVFFRWpkaVRQNHRvVHp4bm5hVGRQZTRRNXNaeWpvYTRxRndsbWZmZE8zZWppOUVkNkw3WERPSkpscU4vWDluaHNBTElpWmh5NUYrOE8yVUU3RWdNUWt1ZXRTNU80UHhPTndXS0FIWTI3T3VHMGJyRFFEM21ZZ051eXNlTE5sODRETDBhcjNheFM5ejZuUGI0K205eXNRZE13VHhWeEhtS2RJaG8rTEJHR0ltbDlNeGtnTUd3cjBxRmNOK2tNVks0L3RNNTZadWI1cFpwRVdJUlpobEpxcmZZV29lTjVIVnI0TmJyd2RndnFEN3pSUllxaVVRcVBESVhzSnlRYWFLNHZmS1lsTUNxZVlXUTV4WVNyeGU4dFFXbUwwSUh5T2pVY256TksvK2lINmJtWjJVSlVHKzcwbW1KWWpBM2VpMUw4U1p6bGFHUkxTeVFJbXQ4VlNYVndCZnAvZ281c2U3T1ZWSi92TWJtSFN6ODJOSTIxTlFqUVk3QVp1NmlpUEpKZmVOYk1jQ1l4alBLaW9vZHEwTEM4K3FDOERDSzVCKzlQMmFKWXV5eWNlMFFYamVTaVVKV3prbVZjWnUramQ0L1M1T2FVQ2JNTWw3a2ZWanhGNmRVVUpYbS9aV0w1bmpSOFRHRCtaSlp0cDhPZnNzd0lNNVdrQWZBajFNb2R2V3I4WFM5ZnNCSWNiYWc0d2JrMGc5UVYvQ2YybmE5eEZ3cG96RGF4OFlRb1Ztbld6emlLZUpWYk5FK2MyRWp5UVcrWXhsaUxIdmFIandHUkdyYkZCMU4raEFxeVFSK3lsdU1FYkR3V1FlL0ZaeVUzRkF2WldBMVZvRVAxTUZsSEVOakttMldQdXFaWEVTb25USldSbzlkNFBGTUs3ZGN1ODIxSlA4OW5YOXE2c2hWNUpPZ0hDUzNjTnM0dWdBWXJaaU5yTEEvT2p2Y1Z2eW5YY2k5MDNqZVUzUEFCejJHa2RuMmx3RFNCKy9pU1Fmc1RKbUZKb3loTGxpYmtPTG5FRjA1OVA1SFdrYWNYOTNtWUZsdEs4NjJoVi90NXBQNXA3S2ZJYWkzVms5QzhLNjFvWG9zRnZqWVJJSi90eWtiZU1TU0tNcUF5Wm1paEhuME9QY05aWjF5MGlnRmRwdXdYL2dpTk9xWEViYWJmaGFkRVpqdjZVQVJaOXI1N3hFNUx4V0dWTzMxMEV0VnAzTU9LOFo5K3JKNm43MnlRQW1ValdlSS83ZDZycy9RK2xIT0hTZHc2TFdaM2twbzR3bkt5cTA2Y0ptalJoV0dyb1JjMWo0VDREaUlRTUE2NnA0OWtKbGRjYlM4T3U0cktvb1BMakVXYWZhOCtpK3dqRkFKTFNTdDJJUTlCLytDdVV0Z00wNVNEMk80V2tTaVBoZDZJeVVCN1pmTmMwWU1vbkZOSGlUNkRBN3dkMmc1bkZXVHB2R2pCNXZLZjlsbTduczNhSUFWcXpubUZzSHl2R3huT3BLQW9waDI5OXNEYVZobkNFenRUMDNuSTB6Y3RKT0FCZDJ1RDd5SmUyRGRNUk1YSUpjeHl1dnV1dlhHaG1CZ0JUNklEUzdHS1FoNVIwUGovb04zRU1wWnZZR3Ywc2s4bnlscVJNZjVUYlV1VEVRY2ZaSmdkTjdWMlJiZmxZZVgzbDNWRWl0VWhnMGlCUWpnY3RNdjFKQWhrNDR3cy9QK0lLaWgwZ3VjVkpHZ2M1ZWkyQktSSWlaRGxKUllOQWNnUjVkTkQ5dFM5aFh1Y3ovckpRU0ZWYWxEd0JaMHMvTkJiWnZoVzl6emJhV1JNMEgyZmJucEVzeHNoUlA1MVpBc2tmLzhNdzRYVTEyRkV5eVZuaCtENjB0eWp1QWhuZGdJNkd1NUJldDVRNHVHbjhNVGJQczNzcmJrWmw0NFppdjNoNzUrRHhvMjVyZlZoSlJySThJK0puUEYrcTJnNUF5Vjd4eWY0RFpoc1YreWx1SVBNVjA0QUFTNTRhVUVVWFhERU8vYnpERVFPMWJJWERlSlQyYkIvNExsWVhySWdpdWl0MUxQMTRSVDUraHpxVTZsOVN3MGFYUjVDbWxFdTJNbWx3RitxYmdUMmllaW9NbDZoT0lzaGFGVVpPcWp1Y0JDUHNMSDBubXBiT3BxZVdqcUYrMHREOUd6NlF3Q0lmQXVaMlVwWWNNNzRGbkVKdlRjRVVUU2hibG1NOUt1TjZMOHBCRDlKdFJYU0pOSzhnY1FqS1N6dks2VVVDWXhEbUYzbityNzNNZDlKUnhYbU1kaDBlbUEwUGRMeWcrL1U0SSs4OTEzTjd3YzhWRlJ2S0pHc2hNSWNPdzdQbjA1K0cxVFc3dUhtL0V4SnZYc0pUUXpiTXZqc2twUzhsVlFGa3BsbFNsY0lCeTM5OU5vK3kraWVRMW1oOVFnTzVhUENnM2Zad0twOUJBMGt3b0V4TlBTZmhQOVo5Q0NZMWdoWFUxS2QvOERPWGlGZUs4ay9LTnNaMXBvWEJvSlY3dlBQT1FFODR6VW43d1lxNmZ2MXR1YnMrWHVaOWlzaXk4RUdPMit5aTE4b1puemNNZWtlWXhaTWpqVjNxaXg3Vy8zWUZ1Tlk3RzZKMU9uaVFLV09TVFlpamRrVXJUMEdxaktoN3d1S2xLWmNvRnQrYnYxZDlDdFlPQ29GYk14T21sVnJWVFc4MVc1SE5OOXhwbTFGYUxiamNtTzdyWHZxVUw0MThQNFdhUVpUcUtjWERlQktMZzlxa09XeS9zVklkVThwNE9lbm1qeGI2WXRObWsyRVJaSmZ0SHVYR2g1TmlWY2Q5L0ZsNXI2anVRd3haQzNKcDVtTUdwT20rUjZJbmFCYTFUSlk4ell5OXRPSmR3bERVUDFBQnpTUGFDbFpPVjd4dklTQzR5UHVEeGNPenhkbFBBNkEwOGpkTDZQSnFWN2tyT2pLWTc3R1p5c04zeGdhNld2VGhoVVBKMko0QU5qS2xtTE5aMmNmMHU3OTBoSWNNNEg5MUl2dnhUL2p4VENpZHJ5Q3FZTDZWTmR3T1U0WGpzd3lqYVJUS0N6Z2M5enowcXlpZzBiSEVJV0RTdUFjRUVxVTNSWHhPV0x4UHVXdVBLRUhwR0xxSVd2eVlkMkZ3NEc5czRJMlZqUERQTW9QYmJ3TFJVbzRvVklvODFJeFBKaGFxVFpOTGZBNGpkamRZZkJMdXBkdmt0bmRaVjdGSTA3NzVZSWlLVm1aQ1ltdUFLZ0R5VTRLQmNJZnhFS25raGE1cnA5aGFVb1JlTGNkOHkreGt4d2xlbitsUlFBSnE2RmljcVVZbHd6V2I5TGlkTUJacloxYitUTnpTRXdlcys2STVXSk9JZkEvYU9KMDFxOWIrRXlySTBXK2RXaG8yOGJOQldONmFtQWZQTzJHdHBRZGZoZWZCajFRdzFsemRJNTVNajJSTXV0L1lOV3dCTzYvUUpnTXR6bjQ5YnhyZkZiNzJNVnJ6OW1qT0ROM3FMSk9tWFlhazhpR2VVcW54N3lWNWcyQjJFU2NHYlF2cmxZbjUvZWtxYXU2eFQxRk5od3FEdUZ1T21LckZRbnRCNzBIL3VJNVMvSWtDTU9MczdwTVZjcHhtNmxuMU9DN3N0cUwvbWxlL1pIVGgzZVFMS1c2QzV3WEhBcUtOd2xPdUR6dFhrUFo3cXdPQkxOSzZ4cnRWUkJueUtGaGJCMXRaN3VXZmxDV0xvZUQrcHFDc0FRaGppR0NBbEpoZEhtTFlrc1hpalNRdTdFaWxZcXVWdnYzcE1BUnhwLy9XMDB2bVBFdEgxVmpGcWJKMTNTMWJMOWpZMEc1dnRSdnU5ZEk4VnZGNmJKbW1aTVlUWXJxd0NEdi9rTjF1OEllb3N4bXdBOEpDd0djR3ZYS3plYVZTK2RWVUhrRVI3a2l4RnB4eWgzb1hXUml5aWhCL01SczdtcUc0UEQ5M2Q3QUtBa080Y05udTN1WGFxK28rbVhPYU1kdDkwbTk0T2xQbGtEMXlZMkZTTHMzTzZYRjdlcWhVRkRuOVAxVGdkR29WYjQycExFMjlQWmJJUWVtL3hrekpqYkdYT1BOUi9LdWp4U3hDanVBcVZ3RTFBY2dSbWU3TnE3ZnJqNHhWMklRdXZRNUFxdTRjTUJlcmcrNEplMWlzWXdub1Y1cXIzRnNqSnMzUTl6YjJIZGJremdCSWZTejZxU0UxbFJ1KzF1TXZTUmFOd3p2cUEzaHNjVWc2Q1dacmFLSDFDY2pIeTgybHdsWWsvSE85d09BUkFKalhEeDB2RjEyNEhveGYxb0Fxend0UUYxNnZwMkc0ZnV2YVVNR1JyNTBJT3ppS2xRVkszY0Z0cU1PanJBRUpKN1lMcld5T09ld01NdVhBemhCbk1SYlBLWVltQitZSnE0TEZSWTlaZXFZZkpnNXZGaHA1RG5yR0RZc3NRL0xQWEczeFdzMkxZVVI5T0Q4RWcrWUl4M0YyMXMwRHJ6MGswT2NvelVvSGVnc2VENHJEOURuRHIrTFlrTWFHT1Y0UVR2c05VRTBHRzE4VHB0MXl0bGRxRUhuaXFYMHF5bFV3dWJ2NWxKYnFZVk5oL3htMStIK1c4TUppR0QrU21iUE54dmJEVDdFVkU5UlhKUWExNDQwUjF0b1U2M3RpN1NkaTZEQjhJTHhOaHUxNC9hOGUrMXF3SWhmWk5pcUNmamJHRjRkKy9SMVBmRnNhMzlqM1hleDhNWFNneUVvUHFpV3NjNm5MWTdxdE8xL3E2V01Rb3Q0d2VlWUxkdTNRcjZqTGd4Q1NqZWdPYm81dnhWalZEd2RNMGRiTDRYcHJuSU1WM2hmaHI0cmxKenR0QzI3d2FlWnBhMFdLWUozYXRwcnQ2d2RxbVVhaGtOKzJLUkFOcTJtbjRnSTVIOTY4ZnoyWmw4VXJMVGxxTXZ2WkI3RWFHcERaUU03eGJaOWs0UnAxZXVqcVJBNzJDc2svMlZ1TEdRY3VmQnNzVmlHdWFxSGQ4UlNENVFlUnBGc3RPb0IzdzBkelVtdkxiOVhIZC8raENFa2ZhemtmcG5XKzFwWitGWWNVci9XcEZheHp6aCs4UDJvMkdxZGJub0dPSVRjSExyZHR5UHRMd3M8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_47.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4YjQ4NThiZjQtZDRmZS0zZmI2LTkzNjMtOGY3YjgzODQ2OTljIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeGI0ODU4YmY0LWQ0ZmUtM2ZiNi05MzYzLThmN2I4Mzg0Njk5YyI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+b1pQSGpFN0x0b3JPVDM4M3dkZDhpR1VFYlVVPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5VNWZTVFBRRHFOYXFlOVFXdWI0MXRzSkJYSDNGZzJHZzZoNFVTVjlrQ3VNUWRKZ1o3bk5sWnRmenJXOFRNWjlCSVJrSHlJaTRSUFljVThhREtsUFMwdkJyKzlxWUhlTkpabWxaRDh5MVdQZzFNUU8xZnRzSmtQMEVmZmdwb1RzYmxyRk5Yam1wNXorR3NTMUtVU1hlc3hhTzdveG9FRDluVnFsZ3RhM29kU0NzL2E2aTdmRUdiMW5uTVZ2VTVRWURzUlB6ZnlrQXg2SWtaZHNBSEhNTTlDWUhyVFVXaEtOazVtR29aOURyUWtnVVBNMnJOVTAyRzd0UEZhb0lNeHAyNVlPaGNOS2dNbjRIdEpja1F1bEV1Z1ZZMDZ6WHo3K2lHQ3h0Ykt4SVV6YmpCMllMaTEwVStXSW8weXE1ZUFsRERlVjhXM0ZSUTdHMDVKQ0MwSnFmUFE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTU1kelFGWjZ2cUlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd6TURJek1UQXpObG9ZRHpJeE1UY3dPREEyTWpNeE1ETTJXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUs5bzR3djJHMW0vT3dDVll6cXNWTitQTUhia0VTM3JweERSQVBSSTAyNHZEekt4em5YV21oM1gvZjMzT3FtMmpBR3VUNzBSdzM0Qzg3OE9LSWxwY0tmV0d1b3VMWG5lWUd4VzZXWTFJQ2Zpb0V4TGxUK1ZuZ2VRSEZJelIwSzlVN0MzRkh4SmgwWEwyNGIzd3ZBY2UzTGFLRU5sRTJjZDRJNGhmVnFFUHlpVG9ncjkrbWRYSVgxKyt3NkROVVlpYnBiWXBlOFZvMTlGZTMxSGtpSWp1RFVQTFhTSDBoazZwbk02bW1JZE0rQ0JDZzdvUnIvVVlCR3F2SGc1SXRMK0UwMzZlS3dkQ2preGhPRmRkUEV4Nzgvc3NKQittcTRWL0NMUWJWUG5HbmlLWUI0UnFCWmw1NnRwMTJwRWRVVzZWbHpFUEx1Vk1NbFY1bVJMVXV3anRpVUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCeVA1TllZT0lZc1Fra2djTkpYQ1A4b0krdHVLRGZnWmZjcGdxSjRrdXo3ek9FUnBWenRnWWdVS1lvMHBtZWUrV1Q2WDNxM2ZaQ1BUdFFpQXVlbEhPSFRSL3J3bHRqUFQwT3VBejNVNTBkY09GTVh1V2lpL0ZBVWpSdzI2T3RSLzdKNnI5MGc3NVNlTkJCWFRndjZ3UnI4bjQvaUVSUWgwSmtCSmNwd0NEN1pjRGdjUndQWnFwdUJGMzFVMmpvMU5nT2hTU1ZnN1pEZ0ZaRExVZWVHZWtmYkRMZzlURCt4SXQwNmZZdGQ0cGRJcEsycmVCaUtnRTllcGtzalFPN0Z6bUp6QjR5YUFJTHJmZlNzeENXWnJIZ3dBU2FhT2UxRllQM1VnTHpodk9VL0MzMGZlbHR2RzlXV3RQV014Q29wMnEySlIwU1JHK21XaVdhdTh1WGZwbUU8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPkdYVGRVbUJOeHIyTzVJdkJUYURQa09NTnczUW9oWmdSZXJkV3JKZG04bzdzRDFaUXV1dGRjS3kzcnBMK1BJb1crTEdLTkZsbC8zdmRXSWJvZUtqTUYxZXJaU0Y3UmRBMnp0Nkx4Rnp6cVNGNXRQZ1BNVjJDNHRoZFNxN2xrVDh3Q1JMQ2NZNUJ5d2Y3TGpQSjdNVXpLOGNhYjlPWWMrZzlDQjdqUjRIT3lMU3NuZkRvU0lyYzhaOHZmNzN2Wk1EQVV1dXp2a1Z3QVVmTlNzb1VDVk03WXNLa1U3WWFVWlhTZmdSYlIxMVpaTWI3SHFBWjdnN3ZJNUxkaEpjeGsrWWQ3Q1A3bE9VRllOb24vTXhKWE1TQW9RRTAzYUpWZkxDNWdlbVRkRERFR0xoa0YrT1VWU0hzdjJoQ0RKRE5aeDlRb25LL2tscmtocjJUYkZ0WEZySWt6QT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPng1dGNvS05uMFhETHlUWkZXb00xQzU0NEZuREN2U3A4RkNHR2d4SjFFVVZ4ZnFDamhoMWNBZlQwblBUOXN3K29PSFR5UjZ0YzNDdjJmaDBiaGFzUUpxbHFhc2l6NDY4QWVycU5ZTFE0YWNiZS90RWRjNkxXQ3JJTk9pT1FTRVU4L253d2pWNG5yTloxQy9OYVJBRG81OHBmWVZJZEJiNk5kNWZLaGt1dUdHSDFsby9IQ09zWmRKNTBic0Rydnh2eVMxQ2RFR09WT2Z2ME8yRUR4MFg1WGtORXB6dmRXSmhiUzF4aHJEODFCRWVjTDRwa0JyRno4RHBaNVVJK2QzUTd2eGhsMFc2cTN0cTJzbE9uaU9GS2ttWjltL2ZMeXJSeVZpRkRzc2JuWk9QckV4NzMwSjBadVhNaFVFQmo4T3hrRlZOaCtvSjZmMXZsUVJCL2hpTUVGY1hqc1dxYmdYditmUGRBZTFzNjVNcm5LZUpDVU5rdk1HU3piQzEwN1FyNjQ5WHpXc25KMHVUTGlTMU9oQnRqdFZKUFV3bWhzYld0QnUzY3NOZE1qTXBUWFovTlk2d25BL3N2cG1kS3ZRYUdZSGJvcnNTNFFzNjllTlphczk2YkthS2ZzdDI4L0R1ejFoeUlnSWZPZlBVUTZKNXk4UzZBaFFhc0lZL2h4M0theWxUYjgvNTA1bkNKcXhUblNleXpzbjlWUjBvdUdIUkhZTGdxUXZDSms2UGl3MFdtWUx4U3EvMGVpZ1g2YkNQaHhrQjRzSmJMWHd0Ykd4NHFHSGVTL2JvWGU4MDJubFI1RUVVNWY2TUZ4S1RGMktjRldMb0RCYzVUaEI4a2dCNGNxejN4dXRMQS9JNjhIbmxWWDBGRWlWZHB1RUJ5K0VyT2ZNV3pvKzJaMHdSc1lWekwzLzNoVDVaOVUrMUZPdnprVHVySmlLeEU2bGNjeEZGdkhaYjZwOUJZb2RWdk9mWHN2cWYzTmNJQ3ZCOTNUcnJOQnZNdmNvS0NwTDlmZERLWk1hV1VSenBvMWwwMjF1cUdVUUN4YmtEeXlTSHp3b2J5bUJHY3AvL25wZG9Bc1YrMHpDdEwxY2xWaTA2WU0xUHZUdDZITVpSL1lYZTVVWnB2aFJrWDlyKzV2SC9PSFRMelBEQk1SUWJ2UlZ0ZFBaUTBRdSt5TzdjaG1IMDhTNzAwZElIRDkwR1ptaE8wamFNb05MeG9OZmtTUTlNMzl2WXpZcm1xV3BsOXdRMjREVm9BZlZwUmdDTUVEYzZ3SFJhcW02SXJQQ0g1OHU5SE9mRDNTYW1QWDQ3RkVkRTBZRE92UDlXKzhiRldpVi9Ic01FSXpFNHZzamxJb056cStOYmtvWnEzMThJa21SUXMyTUxZVWZFbjlPaVByaWFjZHVVNU1FUjNQcHhhSytzN2IvdVFNZGJpTXdPclRzUGR4WUp0emY1REFsT0JFWUxFTkoxVFZuWGxjTXdGQnNpMDRjazhRbmVMYit6MXVwb3JIT2p1bkVFUml2MldUeFNvdmRIQTV3VnlvSzZkRnV6YmtaNnhrdVFwZ0kycnMxRDVyc2pGOTl1OUc4OG0xVnc0bFpmRjB2YzN1S0R2UHZCS1RlTk84Ymh0aDYwQ3cwUWhhNG85RHRncENKaWdGWmhHenBHbW00azRvVjB1a2VQRExlN3pYcEhuV2FUTjdzdnVCM0lzd3VrcnBPVGM3L1JKVnJ4cytRM0R4QjdvY015REJWNEJHYlQxMW5jT1M2UzlXRm53Y1RTK2Ztdmg3M1lnLyt6SFpKSUxQb1BRdEoyUXFYUDFoS2hXaG1nOEw5S29hZ0R4blNlcnlTMGlVM2JTZ2xDVW5uOElZN0F4anZINVE5MzAxNUtCZnVZYTVjT3A5a1AyV2F3LzN6SE1YM2FQcTlWb1dFOW43Mkx6VXFNdWIvZi9YQmhha1Rocm0yenJRSG1LNFUrNnZPcWwwWG1LVm1EN2VRQ0xmZWh3TDVrNjZIaTZGWm92U01zdHR2SUtOMEYrTHU3M25VNS95azdlaWZsek1scTB0WnRBM0xwV0tkSm9HeW8yZzlEZUoxb2c5MVdWaG42NTdTSXFuSXZwODhWNXdUNFNqTmZKaHJPT0hmb0I5VEg3U3RkdjcyZ1BCUXpEazZOQUgvZjFiMjYyVmxucUhnVUxwcWRiUnhCaGUxcDU1c1NHNXJXZFdnYmJyYzRBVzc4RzlST1VwYkVHL0FQNzNRZFlkY1NjSzRQWW9wNWg0YjFtMHdScTEvMzhLSzMwcVFjSHV5YmxZZzJrZ1dFaXdJNHJaWWNPWllHMWhCd2RsT3pUR090QlNuRGVKV3E3eHJudjN1enhUUjhXa0NPVGUyMnRNUENzamI2OTZUNzJaMkFvZ09FSFBNaDNtYVVwWFd1WThVdjRTcWp0amFZb3E0VUZheTJTV0lvdmttd0laZnRUK1ZmelpQdUhKeS9zN29TNFdHa01MUUlXQ3NtcHJnYmFRblJIL2dJMGQyUHp3TE9WNVYyTmNoWlNWY21GMEQvUzh1T05CMjBHQkd5NGFTcXEzQmQ4S2xwYjJ0NHJOS3IwSlgvRmRQd1RBL2JEbittMkdQZy9CT3ArKytjc1VuUGltUnlEU0swYm9pZC81WmVhaC9yRHg4WllxQ0F6bklCa1JSOUdzWjlBNUMzRzdoNGVDOFFkcEZKbWdwTjJ6Mjd3NTN3MzZzVWZCZi94Y3Q2ZCtFMzA4WUxwOGgzbUtrUmdoUU91RnpCMGYzblBJSmVtSEcyYmhUL2FTSXN2elB3Q0N1QlErRkxSMVVIckpzOUkwRndJVFBsWllvekVXbTVDTWtBRkkzZkZweGVhVXpsUFVPSC90NnFBaHNsbTBYRGpWZkk3K2tXN1c3WWN1N2dWSWl3NmZHdlBKMCtvdFcycVdCeUR4SzljelB3cHpqQURDZ3JydndBWndYalQ2eFI0clN0YzNsd1l6bmZJenNmazFIa2NXZ1VpRHo5VUJ0L2VKTysyOFl0WHFySS9zSnJwWmR6TFV0NC85Tm5rZEk4cEFESUhHdE1aV0FTY3V2d1drMlZGVUVXVHdydXIreU9tWFFJVGRnNG1telowTzhFRmVPVFJ5aGg1OHdvM1V1UFZ6Sm5HYmg0WTdlcnBVNW1JVk1pbzdlbGpUMWlXOVo4MkRRU3pUQzI0eXJYODNUajJEUUR4dmR6dzZNK2kzajlZSWFoNXZydG13dXd1d1ZaYkNYQVFjSXFZTWxCZU55RUtHRkxITTAxMDR1d0R2WnhYcEFBNjA2TkpkK0ZtUE52M3Iwd01VZW1URkpoRDcyL1VXZDFER053WXRUdGwxWWw0TXQvMG15bnRkUFRyeU5LZXMrWWJUTGM4c1hiVmVDQ2lHcG5QNHpJRkJnWjhTT25MSjlXMWNuNUF2K1V1RmtOTDJsQWgzT2MvTWliMFh6bzVDaEVveldFTlZrdzBxbUVSY1EzZ2E3TjBKaFdrMVJjM2lhak01TFlYWmxrckMrYk5TTTVFSWt5b1JXaVZkQjNOL2U0SkY2cW9KUjZOU3ZZdmJpM2U2RHp3alVaSzJqMGZ5RTdyTWdwK3dBY1BSYUZncWdjOW8yRUw1QmRoZjR3VzNNajZMcTdTb0x4MnBsK1F2VlNkWXk2RlhRNEN1dEowWEUzdmJNMVhuZ3pUK2s2TU5wUjJ0SDE5djNxa1J2NnBSR3kwb2NZSzlydkF4bmkzVllWZHY5Qlp1NnVKNTJiU1RIRkNkbi94cndoQUZ1SU0vckdTaVY1ZnZLR3hlbk1RVjlKdjFSTVcxL2RuRGk4NEhoOUIvdnVXN2x0bVh0ZUZHblk2RExEUHIxcnhzek03YW9XZGdpeU54ME9MVVA1ZWNWM2VjOGNEcjhvejhJRDlZS0RKVjRTUG91ZmVrNDBSYmhqRHM5ZzlOb3pWaUxLRnZNcE1CYlBObGxsUmswQnBaeTRTTFpZT3gwNUY0UDEwY1FveDNvMVl6MERlTUNJWnlUWndkTlp6dUQwS1dQSlZEM3Y5NmR1TXJ1MVk5WlBRR2pWUU5IUi9mNVFkNmZSdFZBejFmS2haL09IMGJPbkV1SHJaY0JPbHFON2h1K29KTE1NOVNGc3c3eWxLUmt3d1hhbWJKVTJ3NTBxL1FjUWNVcFZEcEN6clJ0MHhmbCsrbDlBbHMwTmxTM2xxMlg1R2J0NW5DNnJXbkJGYkhrMlUrd3JsYlZCTklLdmViQlprVWZGY3RVRE5heFZBZVBtMmxwTTN4S3lISktlWklLcnhnL29sMnpmd3dsdDF5eERJNVRPT2JKM3JTaUY4VnM4WG5hL0hscWVYdVg5clhuMW8rODNXTGJoZmxqMldkNDZBbGVTZUw3VldabVRsY25SdGpSZVIzRmFRWXkyOG1JM05DUXBQUWpicHN6MDlORlEvK3JLVXJnUGUyVHdldkhtdis4c2ovNVBqQ3JRRnQ2dGYyWG1nK2tLZ1NCWUg2dm53c2ZCSE5qNmllNVJ5THIydFNDY3Q2NzlqYVREalBQZkpGL0lJNlRuKzRKbWdOKys0WEN2TzJ2d1VVL2RsMXIrLzlVbDIxNVNaYnhnQjNna3dvc2JNTkFiOGNWQnFxdDhTMENxRkpNV2ZLcFBVNEZheW42akFKeVJLU3VZZUx2VklOMlNkRUZMZjdEVERRd0laQnFaMndBdXN1YkJBUG0vZUpkeTdsWW5Hd3FIT2ZCYU1XSTFuS1o2cVczVzFCeTdNcU1udW5uTWVRaFZYL25ZWUtaUVVEemUybW9Ud1JCdGM0aXZPZmZoWXpjL2ltYk4vZndIekpaeFVGUG5LN0hkMUFNT2ZoVGhaczBQTG1RSXUvQ3BwL0J3QVlmUnp6enoxSStmUWJIVHhNTmx5cVJ6Wm5qRG9JNlFhaXppUCtyeURKSndnM1ZHNEVNYm04YWd0UTI4czMzdUwwTEtxVlRsSjVxTGtHZll4YktoTlIvQi9kQVNXRENsMGp3Q3YyOG5GT24wNjU2Vjcza3hJVmFxUFNnQXBpc0hrOVlzY1htdThOenU1dVRqNTg0UThKQXYrd01KOEZFUFNmNWZZazluOUJOYWFqMFdCME94MXA0QWI1UTJMSHlqRGlRZks1N0hidXZ4bVpMWTRyeVRhQldtd2lmd3RNMmk1S1F6Z3VGaTlKY1MwOXFYcEJUc1hqTkhNK2pUV01kMW9HL2ZnY1NZbWdjZUtRNi9JVUdCVlBJWjVxWkNMRlNYemhHYkhIMXFabytLeVY5djk4WGdidldoRnRqZmlIazg5TFNtemVmOVpLUGxLdFFlNk5EVGJoRWQrSVBqZUhrcmZLR3p5SWN2LzdQc1crRjFnZWRRWWVTYml2ZzAwYXVvQkEyZHRNeW5rUWF3aUw2YlFNT0FJODdiK044c3ZMZkV3VFlmdzJCZlIxcTg2OFdJTis0Y3FmZnRBSkFNNWtvSWlubW9aZGU5RUlCdHFSZm1veGxlVmZEOXpLR3ZWaTVRcG1HeUFSaGpnbEE5OGdHLzM3YTNzVmkyQ0xibWxybEZXNGx1WjBzaGxPZCsrYkR3MFlvZmxYcTVkK3l6WkFDTTM1WStsVEZ5bTdKbWVKbC80M21naUJhcVRSUzZCYVRBdFZ2N2lORHJFeFMwSkVQeVdsQmRwRHZUVXN0NWNkTlBrNzMzOG1Xa3BxVkFiYTFML3I5cjBDNkRoNFdVelZEZFFnRVVWL3JPQ3B5VEhUOXNHVHFqYWY4Z0NTc08renUycXMyWHg0cnZmVDBqUVBtS3NzZ1dEPC94ZW5jOkNpcGhlclZhbHVlPgogICA8L3hlbmM6Q2lwaGVyRGF0YT4KPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_48.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MzNlY2EzNjYtMjQ1MS04YWNiLWRiYjYtYjE1M2NhYTA2ODg5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDMzZWNhMzY2LTI0NTEtOGFjYi1kYmI2LWIxNTNjYWEwNjg4OSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+SG50M0FvVmdaSFdXL3puandGaTB5L3Zab1d3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5sWjlwd2VYZXlDdStvZ1FtOUw5Y05RWS82cllHOWFXQnpSdDNsQklJOUJ6UDZTWS8xdEhwRi9wM0xNUWV2WVZpektFSkNTQ0ltRkVJajN6dTlscGVCck4zcGZ4T3pBV04yWjRwVHJVRHZ5MzJyeWZpYkhwN1lsWFRZUkJqeDlsQjU5NXNRdEVnNDRyZnRkbDY5ZUM0eUZNenNnZ3Vrc1VmbWJJQ01TbXpIVjcvZ3dheTVBZVVDL0dhM1NrQS9TNmFXYVBzREsvaFdoUEtZV3BITGk5LzF1QTQwaTgwd21NTFZYeURGcU5JbllLNEw1MjdsYU5yNVNFbEhzVkdZeUkwdWtvK3pJbm5pcGdhM295VCtJdmplREFRTFIxR1RFazAwc3hEemZINGllNk00RXpZU2twV3V6dmdvc2s1NlFTeXJtM3Bscy8rMHo1YXdhTi9pY0xCZ3c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KPHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48eGVuYzpFbmNyeXB0ZWREYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiLz48ZHNpZzpLZXlJbmZvIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjx4ZW5jOkVuY3J5cHRlZEtleT48eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTU1kelFGWjZ2cUlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd6TURJek1UQXpObG9ZRHpJeE1UY3dPREEyTWpNeE1ETTJXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUs5bzR3djJHMW0vT3dDVll6cXNWTitQTUhia0VTM3JweERSQVBSSTAyNHZEekt4em5YV21oM1gvZjMzT3FtMmpBR3VUNzBSdzM0Qzg3OE9LSWxwY0tmV0d1b3VMWG5lWUd4VzZXWTFJQ2Zpb0V4TGxUK1ZuZ2VRSEZJelIwSzlVN0MzRkh4SmgwWEwyNGIzd3ZBY2UzTGFLRU5sRTJjZDRJNGhmVnFFUHlpVG9ncjkrbWRYSVgxKyt3NkROVVlpYnBiWXBlOFZvMTlGZTMxSGtpSWp1RFVQTFhTSDBoazZwbk02bW1JZE0rQ0JDZzdvUnIvVVlCR3F2SGc1SXRMK0UwMzZlS3dkQ2preGhPRmRkUEV4Nzgvc3NKQittcTRWL0NMUWJWUG5HbmlLWUI0UnFCWmw1NnRwMTJwRWRVVzZWbHpFUEx1Vk1NbFY1bVJMVXV3anRpVUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCeVA1TllZT0lZc1Fra2djTkpYQ1A4b0krdHVLRGZnWmZjcGdxSjRrdXo3ek9FUnBWenRnWWdVS1lvMHBtZWUrV1Q2WDNxM2ZaQ1BUdFFpQXVlbEhPSFRSL3J3bHRqUFQwT3VBejNVNTBkY09GTVh1V2lpL0ZBVWpSdzI2T3RSLzdKNnI5MGc3NVNlTkJCWFRndjZ3UnI4bjQvaUVSUWgwSmtCSmNwd0NEN1pjRGdjUndQWnFwdUJGMzFVMmpvMU5nT2hTU1ZnN1pEZ0ZaRExVZWVHZWtmYkRMZzlURCt4SXQwNmZZdGQ0cGRJcEsycmVCaUtnRTllcGtzalFPN0Z6bUp6QjR5YUFJTHJmZlNzeENXWnJIZ3dBU2FhT2UxRllQM1VnTHpodk9VL0MzMGZlbHR2RzlXV3RQV014Q29wMnEySlIwU1JHK21XaVdhdTh1WGZwbUU8L2RzaWc6WDUwOUNlcnRpZmljYXRlPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPm9INWcvenVxS2pVL1hZQ3lsOTliL2t5VHpQOG82cmhFVGFhWFNYWEdXVGNqK0JqK3RvVFZHdFlzb0RINEdnZDhVeVRvcmVNZGViZ2ozeUQrM2ZJTGtEMjZtQzNCdTJZYlVWY1NOSi84Zm4zT2JrbWtna1kydzl0bTZmbS9jUU52WHNHZW1veXRVajNZN244OHhGZHZIUGJCaEJhUER3MHJwOUc5YXNTcWgwVlpDbjNZN2N0dWV2WittQ3hDTWN2bVRGWGZRZjlqRG1Ra3YyeU55dmxvbnljSWVRVCs3TDdvV1laRHN3Smt2QkNtLzErY3FrVlpMeXpRVWtTWUNJbXlQZHVhZ0p5ZUE0dmNMYjREZFZVVXFRa1R2L295Slpkclk3ejFUMlNpazUrblVxa01pdU5Ua21KekJNZkwwUEE5MkJ1elI3UWhsQVhLa1RDaWN2Y0xDUT09PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWRLZXk+PC9kc2lnOktleUluZm8+CiAgIDx4ZW5jOkNpcGhlckRhdGE+CiAgICAgIDx4ZW5jOkNpcGhlclZhbHVlPk4rbGp2a2xURkhCdDNEOFJJYTJ2OW1iQkRMNDREcnhFVlFlWkxzcGpTYUY5bkVvdGh3Nm16SldnVG8wYklsdEh0bXlXR1d5VFA5aDAvaU9hcTJUaG02M0Z0Q05mcTJWRFlXQlVGZFpnb3dzNEVJejFnVitwejFNTkRFZmRMRWptNVlwMy9rcVI2U1A1cjlySjFvWGlnazJidW9oK3MvcDgxQk1WRHNCSWVpS1NWVGpGZm4wMi8vL3hJNG5TU2ltOFJySm5HbzU4YXM5bnhmYW5Wd04rQ0loK1ZxcUZRWWxYSlA4VmJmRDJOMEFPNmx3cXJkcHBVMUxCWHVHTFFWc25pNzRYTEljZkhzd21hYmZOVzRndm1OR0hWN2krSE1lb0ZWcmsraDhWU2FOVExhNFR3ZnZ5R0FIMmVETDdHMTZsRnpIVjdZbVJlZmUyTkdiZVM2MzkyUjRhdHhLelc1cExBQzBLc2JHMU0zdTJwa0UrQW5QSVZUWVl4eTVXci9yUi82allzV3d5OXIzVklvMW5YRk9pYVVWbjRYS1lIa0oyZUtSWHFpT3NNUXJvQTJOMEdVSXJFQzNWL2tDZmM3MUl4Z3dDWjRiYmlvNms5bHN3ZWkrT2xuU01EcmRaSDFwTzJPQ3ZBWklmTDFJWVFwdWlQQlBENm5vUkFnL2xsbkpDUkFqck1FVm16blJPQm81MXZUVGZkYS9rTnZTeEVJVmY1Tm1MZE5mNHJLNjcvMlhFOHJkR1p5U2tDdGZYUi9KVnZ2dkhtczlUcHJaZGpPRmxGakkvOVdSaW1mTUowZk9DL01YNkJrbDJMYUkwQTh4UDNsK2gwM3BmYTBJamRZRDVuTm1JeHFkeWFZVjRacjF2RGh1ZWliLytJeS8zNkhMY091aHE5OVc5R2wxeUpueVF1Q0JUMDQxZmNsaVNkVk04NFU5L0k2cmwzNVFQU0NFbFZlOVpONGNaaWVWQ2VCRkdTUG1GM0JIc2hadmI4ZzNtWWljRDhRT2RwNTk5RE90R0d4UzVTd3BsWmN1VEcyM2VkSU1uVTBua1VySkx4ejBoeTFPb0ZRK3NCb0lySkR1RVlkZUJlYkVnTXAyQzNLM0tFd2VNS0x0K21KcGxjd2tJVlQ2czdPMk94WklndUxYeGxOTnNQK1J4eTJ6eXV3R2loMi9CbFIrTEtXRFN5dk5KR3d1WUtlOTY5UnNsQjZFTEZsY3c5MDRWRjVRQkh2ODErckh2NExVdXVnM293SVpRbkdKNFpBSWxmQ3RwbkJsVy9ZRkdrSGtIOHlPQ3hEUmE5UDNSS0NDdElEQWtTSzV1Unc0VXdRY25KU3ZvZVp2bmJqUzhBdzFPOS84RzlnaWZ3QlJNSE04b2IzSUY4aDg2YXRTd2M0YWZEWVlJRlZUOGIwT20xZDhrWEhyby9aZitkemF3bnhxYTJsM3dMV3NibTExZjloMEd0NmRsU0VhRU9iOUFVNkJDSTVjd1NsS1VPdDRXdDBGWjNhdU14ZU81ZjVXQUxXVjA3NW9BVEkzYnNndkk0Ym1DKzFIZXdqUzlPWkI2R1hEcEJGcjZzNmhhbDlsVkZlYVl5b2FQRVVDaHNLRWhoaUc3QzhTcE5TTWQzbDlXY2RML1l0L2QwVzNlQ0RmWnJxM095Lyt4TVFTQ0h0L2t1VDBBWnZiUmFVbW1TeDhEUVVpWDd6M2dFWkxuMng0VGNlUmU1TFQvWDlHcDA1djh0L05kVXViVVQ3VDJHY09JU2V0V29tRUVRMzA2cTM3ODhxVkhidWdZcWxVVWpJUERRSHI4Vy9oMGo2dzl4V2xyTTc1RDVSelh6Y2l3cHVlQjk1ZDJ4MWRWN0ZoU0NOVnBLeDBCazI3NjBPS3ZrVWx2WHhqUmpmZFgvVzh4dUtqamc1SnBTakQyRTJCTkxCd1orLzM3RWNmQ01KbmpuWWpweFZwUXlKZ3YxNEV6czd3SHc2STBwd0N1YWVwZXhhZTE3UENjaEVXb3FXeDZ4TlBYdnVMcGZaRGdONmRGNi9ieVBzRWJoOWtYY3NubjlybkxDUS9EcWRUazhaT2tkVEYzRUNqSEF6ZitTRFo1ZjlIOUpPU08ybmc3cmdTQlZGUzBkZmJQdUNkVmpaUjNWSkpZS3pTSUMxSVRZd08xekJLWW51SHhROWJrRU1FY0toQ0YvRm1IWFZwS3kyckRVUHVCV3MxVTVoRkFpWEp2dFgrK1RZU1poWGNKWEtuY1JpOXdDYUFUc0draER3RzlxUmV3VWtWY3lZM2V5UTQ3YjFaaHZhUmNKMEkyVlVONkRoVmZ5dENqaHQ4ZUVtcHMzNUk3T1NheXF0alB6Y0NzT0J3NGlIdEcxblk0MC91aS9mbGordzdyVHBxR2p0WG5wdDhqVXU5eDZwclp0ZmhPbEprR0N5SS9WM3g3UFNyM3NIYldVcFZzMWhSTyttNmRKTHhsZ0FDMnJuRW1meWZsZWl0ZEI1N1l6SFMveGxCc1VRV2lJK1U2VzVWblg3TjByeVk2VHNpaDZCRDM4dUZtTUNINUlIcWdPOXl5VjJrNUcrbXBvekIyNHU5cFR3YzBuNXJuc1J4R01VWUlUNFI3amhjMDMvSm14dTJOT0VHZ1BmejZNRzZLa3kxeEhCTStLTExWTUtaTlpQMEQySXFsZkFSVUN1WFEzWXJJcXdZNTRGMjlzL3RneDJkU3cvYjh5QncySXBVN2tJNHd5VWxKbm1pcjRvaVc2R0gzWEVQRlpZMW9XamIraC9QRTlWNlExUGF0bjJxVlZVYjlzeFlpM3labENnZG5uL3RXVTk4SFdZUzFSVENRR3dKTUhvc0FWU2Fra0hkUDFrZU02aUZqWmROb3Y4aUV0V3o1cmFveFY2UEdMZzVMVGVTeWNVNjFOUFV5YlVGTGNBcDZJOWN2aFZhWHVvOWZGZHEyZXR2LzJQUFNYQjFsQzZHM3JTYlZ0OVpGUmo4VVc3b0RIMFppcThPNktGS29pQm9YZENoVFlBTHRHTU41SjV3bDBaUE1MZDREcXpYMFp6N1FUT2ZmQU84ZG1ZRTJvNEgwWGcwNkNvVW1FZExjZVpta3lQbkRENTk0R0s4ckNQTEVDbC91VjlObnU1UHZ2YzY1cUZOcUFucGlkRnNPWkt2a0tnbDRNV2dTZG5meTA5ZGpUK0ZZb0ExUXh4TGduUlRrYmNHcHBqUEp5MVQrM2hacDVuTzFweU5YU002ZVRwLzBERFBrb3pZZm0wczlVM0Rwa291ZVRaKy9LOEdSM1BmcDJxV0JHUmtxRnMyWW50dkg2bXZCNnZOTTBxT3hLNUhZQktuTENYb3JqZFhNZTlGWWc5ZkRUejhWbEdGUEpEcGxhTUp1ZFl6TVQyYTNmNk8zdWZzZ3R5MERYSU9aN25YYjIvK1dSZk1PT3J2d3RCampiY05kdHNocDZ4N0hRVlhPZmlIekhQWHhOWHpGNUYyNjJFRnh6VUhLcDlZZWlRYUZCV2FUelJPRHNsYjAzekFQanlUOWRDTTE4UnUydlE4R3BKWWJZRStsZ0x0N0pseklWV0QrS0p1NXFHMzRlMXFuQ1Y3UitxS2F0dE9vRlE1MWoyYkhlVEJMUDlnZGFmd3FKK2N0TE1CelhrUUpZcG9XcmFhZVlCUVVLT1RZUC9ZWGQzYzNEOEJMcmE4WEJqYTE3aTg3d0QwNTRzcXoweGZpOC92ODhTb1RWalV6TDFLcGtycGRpeDFLRGxPMzVzK2ltd2JrWFFseFhydDE1ZFN6MDVkUUNHbU1JSXhNbkt5Rlg3dzBScnJoSFlCaWhJU1Y5Z1VtVWM4TUtqSDJ3elV1Mm5aUGNJZ1ZDbFl2cEtLVE56VmwwZEZEUjQwRm1HWXp4aEFyUlc5M1hGaDZUZ1pYT3BubStUbXd2d1Jpd1hwTWxZbmVHaGVJc3o1MnlqZUtVOFRKV3JPck5uTE1JZzVKenBBaGhzWEF3TTM5M1ovV1NGc2t2bm5hRUxvbTdIUWdnTUxlQ3lHMGZYNjBCbHp0ZXZuR1l4TXJ4dDhKcHZnSFg1cTMwZkhLa2pmd1VYTXlyMHBtTmx2aUdjalF0RTE0OG93N1ZWWllpTDF3WGRuQjFzT3N2akl1eDF2NEhtYnBOcnBabmlOdTlnZnRxYndLWnFtM2loWlRYYThEb2c5Q0hFcjJXd1oyc1EySU1CVjFMZXJSUmgxSzFkQ2RyYkNzdmZMYWcvOC9VK1NZM0hWMmxCcDAyaTFOQkRpZDltakl6d01kbG9xV1JMU3dCWVZlcmxodmdNSTZjaldvRXlINHhuYmQxajR6czJFVExlUnFrbUwzQ3phM096a0JjVWtMMUViOThiY1FBV3NveEpXdVdKK0RQaEtrTW5pdHBZNXhLdEh4bzFFV05vZEVkeXNRMG1EbXJqRURsQmI5dTUwWUoxSzRPUzM1ZXBBM0h4ZlFmTTBOc0t5SGJON1lIYmlIVXA5dWxqTVcxSTRwYkQ1VlljT2FDUDh2Wm94ZWZmZUJjTkpnUWlrelMwNHY5UERTR08rNzVvdmd5VXlJbnY0SnB0Wnl1N0lLYUtMSGJNSGt2VVBXWTlSUUJYem1ZZzdlazhmWmtlZDVZOFVxVm9sS1BzU05SMERTRGVhcUZtM2JlSmdDMmlQWTV5MFAvYXk0NDUxVnlXU3Q1WUtMVDVqZTBKeCtQMm1TVVFFRWpkaVRQNHRvVHp4bm5hVGRQZTRRNXNaeWpvYTRxRndsbWZmZE8zZWppOUVkNkw3WERPSkpscU4vWDluaHNBTElpWmh5NUYrOE8yVUU3RWdNUWt1ZXRTNU80UHhPTndXS0FIWTI3T3VHMGJyRFFEM21ZZ051eXNlTE5sODRETDBhcjNheFM5ejZuUGI0K205eXNRZE13VHhWeEhtS2RJaG8rTEJHR0ltbDlNeGtnTUd3cjBxRmNOK2tNVks0L3RNNTZadWI1cFpwRVdJUlpobEpxcmZZV29lTjVIVnI0TmJyd2RndnFEN3pSUllxaVVRcVBESVhzSnlRYWFLNHZmS1lsTUNxZVlXUTV4WVNyeGU4dFFXbUwwSUh5T2pVY256TksvK2lINmJtWjJVSlVHKzcwbW1KWWpBM2VpMUw4U1p6bGFHUkxTeVFJbXQ4VlNYVndCZnAvZ281c2U3T1ZWSi92TWJtSFN6ODJOSTIxTlFqUVk3QVp1NmlpUEpKZmVOYk1jQ1l4alBLaW9vZHEwTEM4K3FDOERDSzVCKzlQMmFKWXV5eWNlMFFYamVTaVVKV3prbVZjWnUramQ0L1M1T2FVQ2JNTWw3a2ZWanhGNmRVVUpYbS9aV0w1bmpSOFRHRCtaSlp0cDhPZnNzd0lNNVdrQWZBajFNb2R2V3I4WFM5ZnNCSWNiYWc0d2JrMGc5UVYvQ2YybmE5eEZ3cG96RGF4OFlRb1Ztbld6emlLZUpWYk5FK2MyRWp5UVcrWXhsaUxIdmFIandHUkdyYkZCMU4raEFxeVFSK3lsdU1FYkR3V1FlL0ZaeVUzRkF2WldBMVZvRVAxTUZsSEVOakttMldQdXFaWEVTb25USldSbzlkNFBGTUs3ZGN1ODIxSlA4OW5YOXE2c2hWNUpPZ0hDUzNjTnM0dWdBWXJaaU5yTEEvT2p2Y1Z2eW5YY2k5MDNqZVUzUEFCejJHa2RuMmx3RFNCKy9pU1Fmc1RKbUZKb3loTGxpYmtPTG5FRjA1OVA1SFdrYWNYOTNtWUZsdEs4NjJoVi90NXBQNXA3S2ZJYWkzVms5QzhLNjFvWG9zRnZqWVJJSi90eWtiZU1TU0tNcUF5Wm1paEhuME9QY05aWjF5MGlnRmRwdXdYL2dpTk9xWEViYWJmaGFkRVpqdjZVQVJaOXI1N3hFNUx4V0dWTzMxMEV0VnAzTU9LOFo5K3JKNm43MnlRQW1ValdlSS83ZDZycy9RK2xIT0hTZHc2TFdaM2twbzR3bkt5cTA2Y0ptalJoV0dyb1JjMWo0VDREaUlRTUE2NnA0OWtKbGRjYlM4T3U0cktvb1BMakVXYWZhOCtpK3dqRkFKTFNTdDJJUTlCLytDdVV0Z00wNVNEMk80V2tTaVBoZDZJeVVCN1pmTmMwWU1vbkZOSGlUNkRBN3dkMmc1bkZXVHB2R2pCNXZLZjlsbTduczNhSUFWcXpubUZzSHl2R3huT3BLQW9waDI5OXNEYVZobkNFenRUMDNuSTB6Y3RKT0FCZDJ1RDd5SmUyRGRNUk1YSUpjeHl1dnV1dlhHaG1CZ0JUNklEUzdHS1FoNVIwUGovb04zRU1wWnZZR3Ywc2s4bnlscVJNZjVUYlV1VEVRY2ZaSmdkTjdWMlJiZmxZZVgzbDNWRWl0VWhnMGlCUWpnY3RNdjFKQWhrNDR3cy9QK0lLaWgwZ3VjVkpHZ2M1ZWkyQktSSWlaRGxKUllOQWNnUjVkTkQ5dFM5aFh1Y3ovckpRU0ZWYWxEd0JaMHMvTkJiWnZoVzl6emJhV1JNMEgyZmJucEVzeHNoUlA1MVpBc2tmLzhNdzRYVTEyRkV5eVZuaCtENjB0eWp1QWhuZGdJNkd1NUJldDVRNHVHbjhNVGJQczNzcmJrWmw0NFppdjNoNzUrRHhvMjVyZlZoSlJySThJK0puUEYrcTJnNUF5Vjd4eWY0RFpoc1YreWx1SVBNVjA0QUFTNTRhVUVVWFhERU8vYnpERVFPMWJJWERlSlQyYkIvNExsWVhySWdpdWl0MUxQMTRSVDUraHpxVTZsOVN3MGFYUjVDbWxFdTJNbWx3RitxYmdUMmllaW9NbDZoT0lzaGFGVVpPcWp1Y0JDUHNMSDBubXBiT3BxZVdqcUYrMHREOUd6NlF3Q0lmQXVaMlVwWWNNNzRGbkVKdlRjRVVUU2hibG1NOUt1TjZMOHBCRDlKdFJYU0pOSzhnY1FqS1N6dks2VVVDWXhEbUYzbityNzNNZDlKUnhYbU1kaDBlbUEwUGRMeWcrL1U0SSs4OTEzTjd3YzhWRlJ2S0pHc2hNSWNPdzdQbjA1K0cxVFc3dUhtL0V4SnZYc0pUUXpiTXZqc2twUzhsVlFGa3BsbFNsY0lCeTM5OU5vK3kraWVRMW1oOVFnTzVhUENnM2Zad0twOUJBMGt3b0V4TlBTZmhQOVo5Q0NZMWdoWFUxS2QvOERPWGlGZUs4ay9LTnNaMXBvWEJvSlY3dlBQT1FFODR6VW43d1lxNmZ2MXR1YnMrWHVaOWlzaXk4RUdPMit5aTE4b1puemNNZWtlWXhaTWpqVjNxaXg3Vy8zWUZ1Tlk3RzZKMU9uaVFLV09TVFlpamRrVXJUMEdxaktoN3d1S2xLWmNvRnQrYnYxZDlDdFlPQ29GYk14T21sVnJWVFc4MVc1SE5OOXhwbTFGYUxiamNtTzdyWHZxVUw0MThQNFdhUVpUcUtjWERlQktMZzlxa09XeS9zVklkVThwNE9lbm1qeGI2WXRObWsyRVJaSmZ0SHVYR2g1TmlWY2Q5L0ZsNXI2anVRd3haQzNKcDVtTUdwT20rUjZJbmFCYTFUSlk4ell5OXRPSmR3bERVUDFBQnpTUGFDbFpPVjd4dklTQzR5UHVEeGNPenhkbFBBNkEwOGpkTDZQSnFWN2tyT2pLWTc3R1p5c04zeGdhNld2VGhoVVBKMko0QU5qS2xtTE5aMmNmMHU3OTBoSWNNNEg5MUl2dnhUL2p4VENpZHJ5Q3FZTDZWTmR3T1U0WGpzd3lqYVJUS0N6Z2M5enowcXlpZzBiSEVJV0RTdUFjRUVxVTNSWHhPV0x4UHVXdVBLRUhwR0xxSVd2eVlkMkZ3NEc5czRJMlZqUERQTW9QYmJ3TFJVbzRvVklvODFJeFBKaGFxVFpOTGZBNGpkamRZZkJMdXBkdmt0bmRaVjdGSTA3NzVZSWlLVm1aQ1ltdUFLZ0R5VTRLQmNJZnhFS25raGE1cnA5aGFVb1JlTGNkOHkreGt4d2xlbitsUlFBSnE2RmljcVVZbHd6V2I5TGlkTUJacloxYitUTnpTRXdlcys2STVXSk9JZkEvYU9KMDFxOWIrRXlySTBXK2RXaG8yOGJOQldONmFtQWZQTzJHdHBRZGZoZWZCajFRdzFsemRJNTVNajJSTXV0L1lOV3dCTzYvUUpnTXR6bjQ5YnhyZkZiNzJNVnJ6OW1qT0ROM3FMSk9tWFlhazhpR2VVcW54N3lWNWcyQjJFU2NHYlF2cmxZbjUvZWtxYXU2eFQxRk5od3FEdUZ1T21LckZRbnRCNzBIL3VJNVMvSWtDTU9MczdwTVZjcHhtNmxuMU9DN3N0cUwvbWxlL1pIVGgzZVFMS1c2QzV3WEhBcUtOd2xPdUR6dFhrUFo3cXdPQkxOSzZ4cnRWUkJueUtGaGJCMXRaN3VXZmxDV0xvZUQrcHFDc0FRaGppR0NBbEpoZEhtTFlrc1hpalNRdTdFaWxZcXVWdnYzcE1BUnhwLy9XMDB2bVBFdEgxVmpGcWJKMTNTMWJMOWpZMEc1dnRSdnU5ZEk4VnZGNmJKbW1aTVlUWXJxd0NEdi9rTjF1OEllb3N4bXdBOEpDd0djR3ZYS3plYVZTK2RWVUhrRVI3a2l4RnB4eWgzb1hXUml5aWhCL01SczdtcUc0UEQ5M2Q3QUtBa080Y05udTN1WGFxK28rbVhPYU1kdDkwbTk0T2xQbGtEMXlZMkZTTHMzTzZYRjdlcWhVRkRuOVAxVGdkR29WYjQycExFMjlQWmJJUWVtL3hrekpqYkdYT1BOUi9LdWp4U3hDanVBcVZ3RTFBY2dSbWU3TnE3ZnJqNHhWMklRdXZRNUFxdTRjTUJlcmcrNEplMWlzWXdub1Y1cXIzRnNqSnMzUTl6YjJIZGJremdCSWZTejZxU0UxbFJ1KzF1TXZTUmFOd3p2cUEzaHNjVWc2Q1dacmFLSDFDY2pIeTgybHdsWWsvSE85d09BUkFKalhEeDB2RjEyNEhveGYxb0Fxend0UUYxNnZwMkc0ZnV2YVVNR1JyNTBJT3ppS2xRVkszY0Z0cU1PanJBRUpKN1lMcld5T09ld01NdVhBemhCbk1SYlBLWVltQitZSnE0TEZSWTlaZXFZZkpnNXZGaHA1RG5yR0RZc3NRL0xQWEczeFdzMkxZVVI5T0Q4RWcrWUl4M0YyMXMwRHJ6MGswT2NvelVvSGVnc2VENHJEOURuRHIrTFlrTWFHT1Y0UVR2c05VRTBHRzE4VHB0MXl0bGRxRUhuaXFYMHF5bFV3dWJ2NWxKYnFZVk5oL3htMStIK1c4TUppR0QrU21iUE54dmJEVDdFVkU5UlhKUWExNDQwUjF0b1U2M3RpN1NkaTZEQjhJTHhOaHUxNC9hOGUrMXF3SWhmWk5pcUNmamJHRjRkKy9SMVBmRnNhMzlqM1hleDhNWFNneUVvUHFpV3NjNm5MWTdxdE8xL3E2V01Rb3Q0d2VlWUxkdTNRcjZqTGd4Q1NqZWdPYm81dnhWalZEd2RNMGRiTDRYcHJuSU1WM2hmaHI0cmxKenR0QzI3d2FlWnBhMFdLWUozYXRwcnQ2d2RxbVVhaGtOKzJLUkFOcTJtbjRnSTVIOTY4ZnoyWmw4VXJMVGxxTXZ2WkI3RWFHcERaUU03eGJaOWs0UnAxZXVqcVJBNzJDc2svMlZ1TEdRY3VmQnNzVmlHdWFxSGQ4UlNENVFlUnBGc3RPb0IzdzBkelVtdkxiOVhIZC8raENFa2ZhemtmcG5XKzFwWitGWWNVci9XcEZheHp6aCs4UDJvMkdxZGJub0dPSVRjSExyZHR5UHRMd3M8L3hlbmM6Q2lwaGVyVmFsdWU+CiAgIDwveGVuYzpDaXBoZXJEYXRhPgo8L3hlbmM6RW5jcnlwdGVkRGF0YT48L3NhbWwyOkVuY3J5cHRlZEFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_50.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJwZng0NDAwYjhjYi1kYjIyLWJlZWEtMTc4Ny05Y2ZlNWQ3MjBlNGUiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NDQwMGI4Y2ItZGIyMi1iZWVhLTE3ODctOWNmZTVkNzIwZTRlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5EeEFua09vWVBWcnppd1Q5UlA1TDFDTnkvR1U9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnFad3laZ1hXSnQvMENyR0ZGTEwwZ2I3K3Q0and2cFNzcnhKbWcwSUEwRHk2YTRDZ2RUeFRrOXNYY3ZNSklZeFBtQjhCYklReWF6anR2NktyWG1lWWpURE5Na1kvM3p3WXgvQkk4T2tjNFdiSFVBSThwUDBtUEkwd0djZG1iQ2lnOVVVcmhaNzZESzBqcTl4Z3NFZzlqNTJzNVArT1VIVmVFRWJPK1V1Nk9pRzFhOUFHYlp1cDc5WGoxc3ozTW11c0lJUVJtV0U1NXcxTXZHUW80YUZpcXhMRHd6UDJ3K1gxa3pUQ09aVk1yNW9lNkFneXhzV3NFbEEvZHN0L0c3QVd3VmZQU0JJRTRxYmtzMEs2VE1WTE9NeVRsQTVTdmxBSUVkZnNrWTg0OEpkUTEwemc5NlVBZEFYQU5xWE0yTjg1MEZlbVp6Yzh4TUZOLzE5TnRuTm1JUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_51.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9pbmNvcnJlY3QiIElEPSJwZnhjZjk4YWIzMC03YTNlLWZkZjQtODE4ZS1jOGE4ODk0ZTBiYzMiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4Y2Y5OGFiMzAtN2EzZS1mZGY0LTgxOGUtYzhhODg5NGUwYmMzIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5uUmlYLzdWREJzNkp1VXhidWc3OXpyeWo1YlU9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkNKd0JwenU0N0Y2T1pyVUsvRzY4R29FYzZoSXp4M2hXTm5NaWJ5N3VQY3RGNTY1WlhHZldNVW11L0hJUUVhRGtaMmRHRnAySGJ4TVVHRm03bFQ0azFFVTdNR0RNbmFUUmEybWwySi9RV1JmeG5iWkpYYytreWxRQ2prZGtKaVZZS0tGYU42RUREanIzeEpEaHQyWlB0Sk5Jb1QyMVNKS29jZ1B3TG5pbGcwaEozQUZoTmZkQ2t4UUxQL1p6NExIRk9VcE5zVk5PU0pDOXliVU1ZNFREWDd6WlVVRGxqRGN2MnU1M09SRVFlTkxlSzI5bzQvbzkrdHgrOW5hQlA5TGpvdlROZUhVRk1NbG5vMkkrVXR3Sytnb3RHdGNDN3NFaXRjZWJZV0VDMmdycHluKzhrV2pDeVJOUGFhZTdya3VaZTdhd2ZuVTIrMGNUSDVUR2ZsbDFxUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_52.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4N2RkYTYwMzMtNzkzMy00YjNkLTg2ZmMtOTllZDA1ZWVlNDNhIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4N2RkYTYwMzMtNzkzMy00YjNkLTg2ZmMtOTllZDA1ZWVlNDNhIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5vYXFObnRkUnBHTGJTY1ZycXNQZG82T3EwUVk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlJyOWRWcldnVnJTQ05GaXJrTmZ6czQ1a3dWQUF4bVJRVmZGN2lCQ3N5d2JKTFVwUVl4Y3Z5cmYwUU41RDdVYVhpVC9jMVYxZmp2citrb2tjWVhjaWJZZlhhMmxPVHc0YjZMT2VHMUUraUNKSzZjaHpKYWY0M3VVcG1PVzlyZ3d1VzlKdGQvZnNzZ2lQdFIyWU1ZeUgxdmpoQ0dyRXF6Rm9iRGhENlIzVzBhbnR4WVZCci9VZzJUWmRPMkRwQTZVOWp4clg3ZHlnR3FmSXpUOTU3aWk4cCtuRWVtYnNnc25rUzE3UFIyS3hwdzRtQ3Y2UFNacUNHTE5uSmZRdW5oL1RWN1lhb1FtRGM0emtVbHhDa0xYb2lmamsrTzljNEZwSDFwbkdMTFFSNW8xUWdMYXpUM2k2S3Axbi9UdDZLV1VOSVRQWmZOVFBBeEhrZWZRSnFUOFRTUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_53.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4MDZhOThkOWEtM2IxMy01ZDI1LTViZTEtNmZmNTBmOWNjNjMwIiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDA2YTk4ZDlhLTNiMTMtNWQyNS01YmUxLTZmZjUwZjljYzYzMCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+RHJ5ekVxRVJ1SEFxYjBqT3BDTUlEOVJNTitrPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT53OG02MFcwd1F0c3dyblFOSnJqbzBlUjc2V3lWVzQ3MER6alVSTGNLRHNzOFlKdkRlblNRd0JyZHVtbXRyNHlWclFDNkJLNzl1ZytXT3hINFFjZ3ZVWlNFMytWalMyMWkzOEU1SkhINllYM2JBVWZ3SmhhVy93SS9QRFJTZmxxY2pWeERWVk15bzBnVDJqUXRIY3FaVWF1WTY0b04rSHR1RGxVTDdha29lNmNjcGZQamJqWlBQQmh6dzVlNUpMa0hlMVo0ZEhsSFpwTG9lOHpkdnRQeGhCc1NkRWJVRys1UmcvV3NHaTZDbWIwQ0wwZGI4SkhLcWxxL3FxV3hwS2tWNUpnTCtvc2M4ay9kZHlsRVp2YWk4eXF2bFdNcjVlVmxaYTlrQkY4MjZDdmlnYkxYcUVrTDBGN24zeWpNNVdrSFFTaWxNZjc2Q0poZjZIR1RrclRkdVE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIiBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgTm90QmVmb3JlPSIyMDE3LTA4LTMwVDIzOjA5OjQxLjM3OVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL2luY29ycmVjdDwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_54.b64",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzYW1sMnA6UmVzcG9uc2UgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIERlc3RpbmF0aW9uPSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6IiBJRD0icGZ4NGIyMjI4MzYtYjIwMS1lYzQ2LTUxMDYtZGEwZmY1OTc3MmY2IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDRiMjIyODM2LWIyMDEtZWM0Ni01MTA2LWRhMGZmNTk3NzJmNiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+ZXFVb0N2bnhJbzk3Yml1WFdEQXZNampRSDVNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5rVHdqRUkzcGUvdDRLYjUzKzNNWG9La0pNNm96U2t2RGR0MExvSWQxR2p1ZzdQOThnd1ZTZmRxVTZOMlJMaFBndHRqRmtIUS9kQkw0ZWg4bXFXUU9vVGsxTXFRdEdMV05RR09URDVOQ2xMV2RDeVFOdXA3N1Q2aGg1YVltSVQ5S3dMNlhCVDNKS3ZoVVk1WWhzeDdRYWNsTWxRdEtKRmlTNnFQdGI4UUxNcjZ5SlpIaldPUEN1TE12V0Qvd2cya1VzTnptc2tNOUZSR1hPSERzNHNxeURuQXQwWHpyUHVDOVRpYjJOZUY0WWdJTVhuTUd5SXdXNmZzcEQweWdKZzlWMEIyNG4xNmpobml6bWdHK25pS2hadnRRSHp0UkdTZTBFNU1IWlBoc0ZPeVN4eWpzNUFOSDJIZ2lrclJiSS93Zzlab1pxd0MzOXBXNXR4cjdGN0wvUkE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9ImlkNzA5MzgyOTUzNzU0Njc2NzEzMTgzODc3MjAiIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaW5jb3JyZWN0PC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+CiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwyOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3Ij4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9Imdyb3VwIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJlZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_55.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgSUQ9ImlkNzA5MzgyOTUzNzUwMjI1NzIxNDI4NzU0NjkiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODNlNzkyMDgtOWYzYi1hMzMyLWMxNWYtNTI5YjhhYjVhMDIyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5FcEZMNm4rWTVPRmZudzNjQUZ2d01ZQzNWR1U9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkVSYm9WRERKSEc3QVdJVHZka2ZWYlF1UmVzYkt3UmZPWGZ3OHZnMVlsd2FnejNLNkJXQUNQV2JJUkgzYVp0L0FaNVVEZ2dHMHpzS0Zrd2FaREpaZTRGQm14d3dRSVk2TEU0Z3ZRYlBiTS9VTWViL0p4ak52Z2gxcHEvdkxQTk5YT21QVW5McC9aT3YvV0dKNjl2WWs2YmR4MFZ0UVRCV21sd2lBNkltSFFIWExXZmFrM1FZdk5nV3dFb3dueHMxMmxxeU9kT2c1bVdiNHo5cjV0VGgvRkZuSHdMbGVPZFZxMUR4dExaNUZpRkVNemM0YnZEd1RsNEFSenU4bGJnK09pRGJPVUIxVjJ3bmtUaStpaEdobzdxbEt0dWM3ZzRkQUJpYUhSVGZWOTRUK3dlMkpFN1FJemZZejJBMXBMajJ2dTRkc3dTSkF1QUh3Z0lxOE4xYmxkZz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_56.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL2luY29ycmVjdCIgSUQ9ImlkNzA5MzgyOTUzNzUwMjI1NzIxNDI4NzU0NjkiIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4Zjg2OTIwNWUtZWIwNS0wMjYzLWFkNzMtZDMxMTBkMGM3NTk4Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5XOWcvRkM4ZUFGQ1k3K3FuWm1BL1lidjdXTTg9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPklrRnRiYS96cUhkNkduN0xWM256a0M0RVM1ZVJadkZWY0NSSXgwN0JlUjBFWXVpcUNzcVVxalYvNitkRzkzdXAxalZ4RXE4SzRRdHdKSzdsVTIrbUhtOHpiWHFETitEYXFIYXJkaW1VUjRQU2dhdUErQmdNNTBvRVN6L2JVN0ZSMEd6TzA5Y3Z1bXBBcG1aYjJvMklvVDJNT2dzNmNRRkFDeEd1MUlsSSs3QTVZbXozdlFBL0VtdXRiRGN2TEtTUDdOazJqUEhBMXkraUhPYldjNU40bnd2bnh1U2JDUy9ic3BnUHpSQkprdXByQllSN0hqcVlVelhOYUZtVy9GckZLejZsQTZYeEl6QkVLSisxcFhBZklhRXN2Y3dvMzlYWkNNY3ZKYXNmUUpDcjRFUE9kUVA0dUVZbFQ4cmNyeXFvZlVJOWI5V3puZC80KzVxYXBoZkxkQT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_57.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIgVmVyc2lvbj0iMi4wIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4ODc5YjE2MzEtY2JjNS1iZTNjLTMxM2EtYzkwNWE2NzM4MWFlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5kbmtjUk9Hb3JmYUx4M3hpazYrbE9aNmZVamc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkg0b1Ixa1h3aC94QUJTdExEcGhyOC91ZHYzSDVVb2o4MmQwSUU3bjdsQTVKVk9HS1M2bXZvdWZnd1NSMXVpdkhvenRBZjZsM2xyMmZMNmpjdVdhVUs0b1JYZk1hc3RwYkluckxqQmtocktOUlVtQzV2Y3dIK2V2czZZM295VEw1Wis5ZWlHUzdpYXVQSGpqWXFHY0R6ZjAzRWYyZ0xsc0xZNHRBNnpib0NpOE1SRHJKSFp6RFo5bnRUTVlQTHlOeHR1Rk9NaldHZm96a3ZSbmJ2R05jcUdocG5RNVFBQlVjNHQyRi9YbXdJTlRKYjRKMElqb3kySFJVelJBTzVVWER5YjVraWFFazlxQ1JiaDNOM29TdTUwcGk5S2EzSlJhSzZpRXhwT3owUDBvOG5QNGJJNjJZeXFNeE0wdzZFTmVCN1J2K0hnMUlVM3RoMFJkbFp1YUdRdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_58.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KICA8ZHM6UmVmZXJlbmNlIFVSST0iI3BmeDAwNjM0ZGFjLTdiZTMtYTkxZC01MDQ4LTU2YmU2Y2Q0MWY4NiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dXN5MGRuU0EwZzBUVWY4RHFhV0tPNi81YkEwPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5vVURoc01ydHlWa3pIM1dFRDFheGI1bFluMkNaK2NlQW1uMUt1N3l4bW9RMkwrd3QycnVCN0FaN3dnRnM3MkJOVFZzNVcya1BPS29zWHBzbDlDQWM0WVp5c294R3pMdzN2dWVEL1FLaExVbmN6OEFUaUc3NDJNQlhkL2lzS1A1dHg2NGZGN1FaTFBoMjVidTlSWklHa0hzL2NQOGhPa1Y2NjBXQnpJK05aZXY1VWx4L3B3aVY4V25pQThjdHRtbm54R1dQUlJwdWRhUmluWXhNRmJncEFFbUJNOUp6SEtvVEtVSEtOTGNINWNvc1VWQzdIeS9OcE5CU1lLSVJzd0Y2TFdUY1FUckowaTZzZlhkN0xwd0lWWS9PUWlEQ1kvT01pRkVsVldzQlVUTEJFVStMMkprSUl3M0c4Q1lDN0VsMzQ2Rm93SDlpQUVDcTd3Qm52UlFLL2c9PTwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnd09ERTNOREl5TjFvWUR6SXhNVGN3TnpFMU1UYzBNakkzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2N2RXRldRR25GeVdMUXlhQXFjbytoYXJnSE5xNURXVGlRTTVFRzFHRUx0NVFxVzdYUUp3Z3dmSUhpYzd6TUJEVTEzRjZJVXJoMzEwZ05tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YwRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMdE1WTUVOUUI2bHYzZElyZG1RcVBHSjEyMHhPNmRtSHFMVGordE5Tamhrem5TS1hCREhULzd2R3QzUmEzOFA2bUdDS3JEQWxvQXoyWGRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltYTdjaDZkcTR6VkVyRk13a244cU03UEQxa25LL1A4U1p1VVBDM0xUSDNFVEgrYmViMWxNOU5JQ09JdGtodTdSSXd3d3doQVpLUDUyL1d3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW1NY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyWDV3bmtvVWI2OENxWWZVclJqaHBiUFlJTEd1OTZhbEk2K2VMZUl3WktwS1NiTWo0PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIgTm90T25PckFmdGVyPSIyMDE3LTA4LTMwVDIzOjE5OjQxLjM3OVoiPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvaW5jb3JyZWN0PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_59.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDU2MTlhMmU3LTI2ZTktOGQxMi1kZTc2LWQ3ODRiNGI3YzRhMiIgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFZlcnNpb249IjIuMCI+CiAgICAgICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICA8ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgogICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4NTYxOWEyZTctMjZlOS04ZDEyLWRlNzYtZDc4NGI0YjdjNGEyIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5mRTdydGlRSElVMHRHcUs4ZE5vMkg3NVNhVlE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPm1Fc0QxYThaRlQyZUtPMEZQVkZVNm42ZktuMFZzb2lIdDBVdDVLSlBRV08rQ0FjaTYrSklKaEE2ZE81K1JGTGVqRHJUYW9XVUcxL0dBWXBjMTJRcktyb1YrbklwR3NJTjBVbWJGQmtHTjVPYmNoMDZ3MXUvUXhFOVRBNVVxNTBRWWI2TDg3MFF0T0w4UCswZS9hQ2xYNGY2Vmg3MXkvZkFtOGVDN2IrNVBiSEthQm1BQy9sVjNZTWlzTmZDMElLZTNtZGxqWUsrNmxlZ2tSdWtwdnFGdkpiQlB3TzI0K3F5dGRKSy9Wc0lNU3NwZVRqdUF5dnFkbXpuMUx5R1JOeEV2SS83Q1lFVWxCMTBGdHRrUUJtWnFuWGxhd1NrVm04SU82d05FUDh5NmxmUGVtbVJlWWFnWVlVZnRkSldnd1ZwaDg4Uk9DWUR2SjdtS3FCSjJsamdDdz09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SZ3dGZ1lEVlFRS0V3OVRRVTFNSUZSbGMzUWdUbTl3WlM0eEZ6QVZCZ05WQkFNVERuTmhiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRFZRUURFdzV6WVcxc0xuUmxjM1F1Ym05d1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU93VlZYRTY3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRjBFTXQ1WHFKblcyb3FKcnZUZFllR29pN0NrcGc5Sjk4NlhNcUxNcDQ4R2Q5L0FUbzgzR0hzTzd3K05LczBtQXhCL1RmZmg2aHJiSUx0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUTJQOWFVQmFNMWtDMFhKRjg2QTRhWWtxUlZ1eXNwSlQ2K0RPWUEvcGNpZlozemhwWFBlMitUWTJnS3NHa3FmWW1hN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbU1jam8vZklhdWt2MS8ydEtYbmlsU0RoUVMxMTYxeWlYN29vRmREK3k1NUthR0Y1TzUwSy85RFczMEU5WmdyU0RsdEQvNmFHdDE3VnJYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQ8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIgUmVjaXBpZW50PSJodHRwczovL3NhbWwuc3Aubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ycTVqd2t2Yjh6Ii8+CiAgICAgICAgICAgIDwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj4KICAgICAgICA8L3NhbWwyOlN1YmplY3Q+CiAgICAgICAgPHNhbWwyOkNvbmRpdGlvbnMgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEF1dGhuSW5zdGFudD0iMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIiBTZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6QXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_81.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw\nLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ\nRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv\nbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg\nICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTExVDAxOjA1OjAwWiIKICAgICAgICAg\nICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu\nOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y\nbWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0\ndHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw\nOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv\nbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6\nU0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s\nMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl\ncnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3\nNzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMTFUMDE6MDU6\nMDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg\nICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg\nPHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt\nZm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln\na2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy\nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh\nbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y\nbWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg\nICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u\nZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh\nZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgTm90T25PckFmdGVyPSIyMDE3LTA4LTExVDAxOjEwOjAwWiIKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z\ncC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z\nYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg\nICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMTFUMDE6MDA6MDBaIgogICAg\nICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0xMVQwMToxMDowMFoi\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj\ndGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w\nZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+\nCiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy\nOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i\nMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT\nZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt\nZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4\ndD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6\nbmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv\nc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250\nZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp\nYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz\nc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg\nPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9\nImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s\nMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h\ndDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s\nbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y\nTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp\nczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg\nICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y\nZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4\nbWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl\nZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl\nVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl\nPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v\nd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh\nbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0\ndHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6\nQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_82.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw\nLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ\nRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv\nbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg\nICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMTE2LTAzLTA4VDIzOjA1OjAwWiIKICAgICAgICAg\nICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu\nOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y\nbWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0\ndHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw\nOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv\nbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6\nU0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s\nMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl\ncnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3\nNzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIxMTYtMDMtMDhUMjM6MDU6\nMDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg\nICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg\nPHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt\nZm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln\na2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy\nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh\nbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y\nbWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg\nICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u\nZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh\nZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgTm90T25PckFmdGVyPSIyMTE2LTAzLTA4VDIzOjEwOjAwWiIKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z\ncC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z\nYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg\nICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIxMTYtMDMtMDhUMjM6MDA6MDBaIgogICAg\nICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjExNi0wMy0wOFQyMzoxMDowMFoi\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj\ndGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w\nZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+\nCiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy\nOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i\nMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT\nZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt\nZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4\ndD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6\nbmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv\nc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250\nZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp\nYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz\nc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg\nPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9\nImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s\nMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h\ndDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s\nbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y\nTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp\nczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg\nICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y\nZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4\nbWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl\nZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl\nVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl\nPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v\nd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh\nbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0\ndHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6\nQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_83.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0xMVQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4MjRjNWU1OTctYWNmMS1mOWNlLTM3ZjAtNDQ1OGU5N2M1MTIzIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMTFUMDE6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZngyNGM1ZTU5Ny1hY2YxLWY5Y2UtMzdmMC00NDU4ZTk3YzUxMjMiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkxBOFQ4WHh3dWMvOFNISnRtQ2hXMlBxTlVHTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+RGd3NXBCVittVzh2ZkZkNFRyQ0dSRC9ScExpMFVhd244S1d1aE5oQ1dNU29jUWZWT3hpRVR5Yk9UNmdaZjBBWFpwRzdBL1JpUk1WTWNDa0hPRS9IUEExOGJSTjVsWmw3NG9WS3JhRURMNytRN0JYWlJtK1Vod2Evd2loN0RJNmhWTmtsN1pJVVQzNEU4ZGVCUnJtUHE4QXdLOUJ5RlU4bGpRQktwTjZnUFZJVXVUWk5NQWx2STg1c0ZaOFdnU1k1NDJIK3AwVDFoNzJaT3Y2RDRaU3g4MG5qT0l5YWZtd3NEemcrdmR5UGVoNFZ1ckFVSVhlMENkakNLNVVvUDJoampYYUJScWsrakV6bDhjbldMc0V1b1dKc3FpZ1hlSm9nV28vRmVNQklIN3daWmZja1lBNEdsV1UzYTZOM3Z0WXZ0NnBZZ3M0UG9rL2N0TVhYVjk2TERnPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0xMVQwMToxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMTFUMDE6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMTFUMDE6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_84.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNi0wMy0wOFQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4NTg0MzJhZGQtMDM2OC1jNTQ3LTFmMDAtZmYyNzlmNWFhNTUwIiBJc3N1ZUluc3RhbnQ9IjIxMTYtMDMtMDhUMjM6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZng1ODQzMmFkZC0wMzY4LWM1NDctMWYwMC1mZjI3OWY1YWE1NTAiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPmV4LytnME5ZcU9rZ2ttNjc0S0xjQklKcXRwMD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+ZGprckQrM051aXVpVGlGK0NEdElDSlJRVmxiZlNQeENEbnhrYUpEODNURHJ1b0owblNwLzNyYkExSWtCY0ZVRzlnR0h4WHYvWWF5alpOMmlGNVcyOWhGS1NjTjYvam8rL3hrS0NDdXo1WHBSd0lYeHZic3o5RWxhWjM5M1YyUzl4VWVseVBpNUluVGZmR1NzcVhYYk9rZWZ1WTNSdU9tZDZNRDdEdHJYa2tEY0J4bC9JUlpzRzNlM1JxWTVHckdqdzNEV1E1RnBjeFJkdC82bCtRTjA4R0NuWXJHb3lBK2N1VE0rdWJNeFNJZmhGK2pEL05uczRHRG0xYTN5bWJpaWFkYyt4YmhhWExaVmZzRWIvaXJrMGl1N2F2blhJS1JUZTdKTDJOVVg1M3gybElRSzZJY0gwSEVYZjRRMFZNY2NQZWlsbjFzOHNlU05nWWtCa0pQSUhnPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjExNi0wMy0wOFQyMzoxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIxMTYtMDMtMDhUMjM6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIxMTYtMDMtMDhUMjM6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_85.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2Yjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAgICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4KICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJnaXZlbk5hbWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_86.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaW5jb3JyZWN0IgogICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IgogICAgICAgICAgICAgICAgIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIgogICAgICAgICAgICAgICAgICAgICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_87.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaW5jb3JyZWN0PC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3NzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIgogICAgICAgICAgICAgICAgICAgICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_88.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlEPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6MDk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9pbmNvcnJlY3Q8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_89.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMxODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4KICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAubm9wZS9pbmNvcnJlY3Q8L3NhbWwyOklzc3Vlcj4KICAgICAgICA8c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnVzZXJAc2FtbC5zcC5ub3BlPC9zYW1sMjpOYW1lSUQ+CiAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+CiAgICAgICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgSW5SZXNwb25zZVRvPSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wOC0zMFQyMzowOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0zMFQyMzoxOTo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDgtMzBUMjM6MTQ6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbkluZGV4PSJpZC01MzFiMmJmMDJhZTBhNTg4YzMwMjM0MTYzYWRiZmQ5ZDZiYmYwNzQ3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPmdyZWVuPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ibHVlPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ+CiAgICA8L3NhbWwyOkFzc2VydGlvbj4KPC9zYW1sMnA6UmVzcG9uc2U+Cg=="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_91.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw\nLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ\nRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv\nbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg\nICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTA4VDAxOjA1OjAwWiIKICAgICAgICAg\nICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu\nOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y\nbWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0\ndHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw\nOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv\nbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6\nU0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s\nMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl\ncnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3\nNzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMDhUMDE6MDU6\nMDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg\nICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg\nPHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt\nZm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln\na2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy\nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh\nbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y\nbWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg\nICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u\nZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh\nZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgTm90T25PckFmdGVyPSIyMDE3LTA4LTA4VDAxOjEwOjAwWiIKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z\ncC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z\nYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg\nICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMDhUMDE6MDA6MDBaIgogICAg\nICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0wOFQwMToxMDowMFoi\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj\ndGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w\nZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+\nCiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy\nOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i\nMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT\nZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt\nZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4\ndD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6\nbmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv\nc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250\nZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp\nYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz\nc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg\nPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9\nImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s\nMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h\ndDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s\nbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y\nTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp\nczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg\nICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y\nZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4\nbWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl\nZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl\nVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl\nPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v\nd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh\nbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0\ndHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6\nQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_92.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw\nLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ\nRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv\nbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg\nICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMTE3LTA3LTE1VDIzOjA1OjAwWiIKICAgICAgICAg\nICAgICAgICBWZXJzaW9uPSIyLjAiPgogICAgPHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJu\nOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIKICAgICAgICAgICAgICAgICAgRm9y\nbWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0\ndHBzOi8vc2FtbC5pZHAubm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICA8c2FtbDJw\nOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2Nv\nbCI+CiAgICAgICAgPHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6\nU0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4KICAgIDwvc2FtbDJwOlN0YXR1cz4KICAgIDxzYW1s\nMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3Nl\ncnRpb24iCiAgICAgICAgICAgICAgICAgICAgIElEPSJpZDcwOTM4Mjk1Mzc1NDY3NjcxMzE4Mzg3\nNzIwIgogICAgICAgICAgICAgICAgICAgICBJc3N1ZUluc3RhbnQ9IjIxMTctMDctMTVUMjM6MDU6\nMDBaIgogICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiCiAgICAgICAgICAgICAgICAg\nICAgIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+CiAgICAgICAg\nPHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQt\nZm9ybWF0OmVudGl0eSIKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2Fz\naXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDln\na2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwy\nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNh\nbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9y\nbWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAg\nICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6\ndGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29u\nZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNh\nZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgTm90T25PckFmdGVyPSIyMTE3LTA3LTE1VDIzOjEwOjAwWiIKICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC5z\ncC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAgICAgICAgICAgPC9z\nYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3ViamVjdD4KICAgICAg\nICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIxMTctMDctMTVUMjM6MDA6MDBaIgogICAg\nICAgICAgICAgICAgICAgICAgICAgIE5vdE9uT3JBZnRlcj0iMjExNy0wNy0xNVQyMzoxMDowMFoi\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2VSZXN0cmlj\ndGlvbj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdWRpZW5jZT5odHRwczovL3NhbWwuc3Aubm9w\nZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvcnE1andrdmI4ejwvc2FtbDI6QXVkaWVuY2U+\nCiAgICAgICAgICAgIDwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj4KICAgICAgICA8L3NhbWwy\nOkNvbmRpdGlvbnM+CiAgICAgICAgPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0i\nMjAxNy0wOC0zMFQyMzoxNDo0MS4zNzlaIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT\nZXNzaW9uSW5kZXg9ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDci\nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFt\nZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4\ndD4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6\nbmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwv\nc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+CiAgICAgICAgICAgIDwvc2FtbDI6QXV0aG5Db250\nZXh0PgogICAgICAgIDwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+CiAgICAgICAgPHNhbWwyOkF0dHJp\nYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFz\nc2VydGlvbiI+CiAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ2l2ZW5OYW1lIgog\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0\nYzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAgICAgICAgICAg\nPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN\nTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9\nImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPkZpcnN0PC9zYW1s\nMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0ic24iCiAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1h\ndDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1s\nbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9Y\nTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\neHNpOnR5cGU9InhzOnN0cmluZyI+TGFzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAg\nICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9\nImdyb3VwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtYXQ9InVybjpvYXNp\nczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPgogICAgICAg\nICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9y\nZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4\nbWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgogICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpzdHJpbmciPnJl\nZDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRl\nVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5v\ncmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVl\nPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8v\nd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3Rh\nbmNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzaTp0eXBlPSJ4czpz\ndHJpbmciPmJsdWU8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0\ndHJpYnV0ZT4KICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD4KICAgIDwvc2FtbDI6\nQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K\n"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_93.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjAxNy0wOC0wOFQwMTowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4NGEyY2Q2ZDEtY2RkZC1kNDdkLTU5ZTgtNzg1MzdhZTU2YzNiIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDgtMDhUMDE6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZng0YTJjZDZkMS1jZGRkLWQ0N2QtNTllOC03ODUzN2FlNTZjM2IiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPitZT3dnWjNJS0xEenRKbkRJYTlGcUkxU3phdz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+YWI5czZlV1FOS0pVNTBmMTBMaWFCTUpkeUgwck03UG4rVkFCaWRrSTFRZWNXdWVDeWNlaHRlWEY3UFJSN0J2VnF6dkU1ZUNxamQ2Z3VWa2JkekFTOXF3cDRYSEVWVFlyS3lkbjJOcVppb1hMdmhWclZhdTRSTXI4amQ3L0NWYzcrVlBBWW5hU056TkZBd1Rrc3FrbVk0ejNtUElsTkxqMkNWaFlSVlRrZ0ZZTDNJdUFIUmZrQU4ybnVocnVVRzJmV3ZYZWFnYk1HMlZzakU4TmZTdXd2NUpnOC96bFpCN1paT3Bya3BRRHdJRHl5Q3JYYjRaYmJOc1M1YVZ3VDRFdk02N1lrL0RRMzN6SHFQbzZnS2x3R1h3QnZOWnhFSitEUzdvMVhYQmpidnVFNVpGL1o0OFNmeGVZTTN4VWlEVTB5UEdtTWtnL3AxbE01KysyMUJXVVRRPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjAxNy0wOC0wOFQwMToxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIwMTctMDgtMDhUMDE6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMDhUMDE6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_94.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiIElEPSJpZDcwOTM4Mjk1Mzc1MDIyNTcyMTQyODc1NDY5IiBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIElzc3VlSW5zdGFudD0iMjExNy0wNy0xNVQyMzowNTowMFoiIFZlcnNpb249IjIuMCI+CiAgICA8c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSI+aHR0cHM6Ly9zYW1sLmlkcC5ub3BlL2g5Z2tqenZiM2U8L3NhbWwyOklzc3Vlcj4KICAgIDxzYW1sMnA6U3RhdHVzIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj4KICAgICAgICA8c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPgogICAgPC9zYW1sMnA6U3RhdHVzPgogICAgPHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBJRD0icGZ4OGQxMmU1ZjMtMmUwYS00NTMxLTRjYTQtMTEzNzYxYzNhNzdmIiBJc3N1ZUluc3RhbnQ9IjIxMTctMDctMTVUMjM6MDU6MDBaIiBWZXJzaW9uPSIyLjAiPgogICAgICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNwZng4ZDEyZTVmMy0yZTBhLTQ1MzEtNGNhNC0xMTM3NjFjM2E3N2YiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPndvU1V3RE1SMy9BQjV6VVQrRUZLNk5LSVpuMD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+Z1dPdDBWM0JTUXJ1YUl3SkZrdmNqTDdNTmlnaEYzcWxSWk9PNGVvbHpUd1BUcDc2SmpsVVZhUU9HZm05K3BaQ2pRTnZjOUJrMzV1dndMZ2NqN0Z0WHBqanlOVUlldEtVN3Nhd1BQQnp0VTNHKzFyT1BEcEgzTnkrR2JnSXNlQW9zWmlkaFdmS1VBN0xPaFJlV1RURUFYWWorMGhaSEE2TGRuUGp0eUl1cTFaWG1qOVFPTm9MUmphQkY5WEhnNEJ5YXdpdkRtdmpHQXQrTm53WlhON2FjMi9pcXorbVRjWFlYMlRFRWFDbnBQcVRnZHVrMWF6SmlTS0paUWRNOEZIcVBJNjJyZGhnZXRPSFR0c3h6VUVNWlpCUDJabldjR3o5NEEzVEpaaTJxME4wQ2ozOU5xem91V0ovNFMrMlEvdkVQSDRnNjM2WWtONE5iV3RBWUZmL2xRPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUGpDQ0FpYWdBd0lCQWdJSkFNUWVXbkRKVmFUeU1BMEdDU3FHU0liM0RRRUJDd1VBTUZVeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaGJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVlNQllHQTFVRUNoTVBVMEZOVENCVVpYTjBJRTV2Y0dVdU1SY3dGUVlEVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGdObTBOeWdnN0RXRVJFQk5adlRkamc5OTlwYlJ5dDVJZ2VpaEtoNU5Fd3BIOVRHWG5ib3c4UWpJNzlBcXNCOUlybjBmRXVMS2IxS09GMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTHRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlhkWEpjZGlZNTdQeGVRdmMwendSdEp0T3hwaEE1V0hNQ0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnZUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbWE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi9XdzBGNTlQQ3YxU1BaSjFOa0Y4WFdhazREZjhsNHVuNHhzWDFqY0ZrRmxVeENEaDZzaW1kRk9LM2liTUhVWnh5R2J2Sy9Nd0pmS1FtTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWclg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPgogICAgICAgIDxzYW1sMjpTdWJqZWN0IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+dXNlckBzYW1sLnNwLm5vcGU8L3NhbWwyOk5hbWVJRD4KICAgICAgICAgICAgPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciIE5vdE9uT3JBZnRlcj0iMjExNy0wNy0xNVQyMzoxMDowMFoiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIvPgogICAgICAgICAgICA8L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+CiAgICAgICAgPC9zYW1sMjpTdWJqZWN0PgogICAgICAgIDxzYW1sMjpDb25kaXRpb25zIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBOb3RCZWZvcmU9IjIxMTctMDctMTVUMjM6MDA6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIxMTctMDctMTVUMjM6MTA6MDBaIj4KICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL3JxNWp3a3ZiOHo8L3NhbWwyOkF1ZGllbmNlPgogICAgICAgICAgICA8L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+CiAgICAgICAgPC9zYW1sMjpDb25kaXRpb25zPgogICAgICAgIDxzYW1sMjpBdXRoblN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyI+CiAgICAgICAgICAgIDxzYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPgogICAgICAgICAgICA8L3NhbWwyOkF1dGhuQ29udGV4dD4KICAgICAgICA8L3NhbWwyOkF1dGhuU3RhdGVtZW50PgogICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9ImdpdmVuTmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5GaXJzdDwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlIE5hbWU9InNuIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxhc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwyOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5yZWQ8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Z3JlZW48L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3RhdGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo="
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_97.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CjxzYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHhlbmM6RW5jcnlwdGVkRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+PGRzaWc6S2V5SW5mbyB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48eGVuYzpFbmNyeXB0ZWRLZXk+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjwveGVuYzpFbmNyeXB0aW9uTWV0aG9kPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU1NZHpRRlo2dnFJTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURnek1ESXpNVEF6TmxvWUR6SXhNVGN3T0RBMk1qTXhNRE0yV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLOW80d3YyRzFtL093Q1ZZenFzVk4rUE1IYmtFUzNycHhEUkFQUkkwMjR2RHpLeHpuWFdtaDNYL2YzM09xbTJqQUd1VDcwUnczNEM4NzhPS0lscGNLZldHdW91TFhuZVlHeFc2V1kxSUNmaW9FeExsVCtWbmdlUUhGSXpSMEs5VTdDM0ZIeEpoMFhMMjRiM3d2QWNlM0xhS0VObEUyY2Q0STRoZlZxRVB5aVRvZ3I5K21kWElYMSsrdzZETlVZaWJwYllwZThWbzE5RmUzMUhraUlqdURVUExYU0gwaGs2cG5NNm1tSWRNK0NCQ2c3b1JyL1VZQkdxdkhnNUl0TCtFMDM2ZUt3ZENqa3hoT0ZkZFBFeDc4L3NzSkIrbXE0Vi9DTFFiVlBuR25pS1lCNFJxQlpsNTZ0cDEycEVkVVc2Vmx6RVBMdVZNTWxWNW1STFV1d2p0aVVDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQnlQNU5ZWU9JWXNRa2tnY05KWENQOG9JK3R1S0RmZ1pmY3BncUo0a3V6N3pPRVJwVnp0Z1lnVUtZbzBwbWVlK1dUNlgzcTNmWkNQVHRRaUF1ZWxIT0hUUi9yd2x0alBUME91QXozVTUwZGNPRk1YdVdpaS9GQVVqUncyNk90Ui83SjZyOTBnNzVTZU5CQlhUZ3Y2d1JyOG40L2lFUlFoMEprQkpjcHdDRDdaY0RnY1J3UFpxcHVCRjMxVTJqbzFOZ09oU1NWZzdaRGdGWkRMVWVlR2VrZmJETGc5VEQreEl0MDZmWXRkNHBkSXBLMnJlQmlLZ0U5ZXBrc2pRTzdGem1KekI0eWFBSUxyZmZTc3hDV1pySGd3QVNhYU9lMUZZUDNVZ0x6aHZPVS9DMzBmZWx0dkc5V1d0UFdNeENvcDJxMkpSMFNSRyttV2lXYXU4dVhmcG1FPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5HWFRkVW1CTnhyMk81SXZCVGFEUGtPTU53M1FvaFpnUmVyZFdySmRtOG83c0QxWlF1dXRkY0t5M3JwTCtQSW9XK0xHS05GbGwvM3ZkV0lib2VLak1GMWVyWlNGN1JkQTJ6dDZMeEZ6enFTRjV0UGdQTVYyQzR0aGRTcTdsa1Q4d0NSTENjWTVCeXdmN0xqUEo3TVV6SzhjYWI5T1ljK2c5Q0I3alI0SE95TFNzbmZEb1NJcmM4Wjh2ZjczdlpNREFVdXV6dmtWd0FVZk5Tc29VQ1ZNN1lzS2tVN1lhVVpYU2ZnUmJSMTFaWk1iN0hxQVo3Zzd2STVMZGhKY3hrK1lkN0NQN2xPVUZZTm9uL014SlhNU0FvUUUwM2FKVmZMQzVnZW1UZERERUdMaGtGK09VVlNIc3YyaENESkROWng5UW9uSy9rbHJraHIyVGJGdFhGcklrekE9PTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkS2V5PjwvZHNpZzpLZXlJbmZvPgogICA8eGVuYzpDaXBoZXJEYXRhPgogICAgICA8eGVuYzpDaXBoZXJWYWx1ZT54NXRjb0tObjBYREx5VFpGV29NMUM1NDRGbkRDdlNwOEZDR0dneEoxRVVWeGZxQ2poaDFjQWZUMG5QVDlzdytvT0hUeVI2dGMzQ3YyZmgwYmhhc1FKcWxxYXNpejQ2OEFlcnFOWUxRNGFjYmUvdEVkYzZMV0NySU5PaU9RU0VVOC9ud3dqVjRuck5aMUMvTmFSQURvNThwZllWSWRCYjZOZDVmS2hrdXVHR0gxbG8vSENPc1pkSjUwYnNEcnZ4dnlTMUNkRUdPVk9mdjBPMkVEeDBYNVhrTkVwenZkV0poYlMxeGhyRDgxQkVlY0w0cGtCckZ6OERwWjVVSStkM1E3dnhobDBXNnEzdHEyc2xPbmlPRktrbVo5bS9mTHlyUnlWaUZEc3NiblpPUHJFeDczMEowWnVYTWhVRUJqOE94a0ZWTmgrb0o2ZjF2bFFSQi9oaU1FRmNYanNXcWJnWHYrZlBkQWUxczY1TXJuS2VKQ1VOa3ZNR1N6YkMxMDdRcjY0OVh6V3NuSjB1VExpUzFPaEJ0anRWSlBVd21oc2JXdEJ1M2NzTmRNak1wVFhaL05ZNnduQS9zdnBtZEt2UWFHWUhib3JzUzRRczY5ZU5aYXM5NmJLYUtmc3QyOC9EdXoxaHlJZ0lmT2ZQVVE2SjV5OFM2QWhRYXNJWS9oeDNLYXlsVGI4LzUwNW5DSnF4VG5TZXl6c245VlIwb3VHSFJIWUxncVF2Q0prNlBpdzBXbVlMeFNxLzBlaWdYNmJDUGh4a0I0c0piTFh3dGJHeDRxR0hlUy9ib1hlODAybmxSNUVFVTVmNk1GeEtURjJLY0ZXTG9EQmM1VGhCOGtnQjRjcXozeHV0TEEvSTY4SG5sVlgwRkVpVmRwdUVCeStFck9mTVd6bysyWjB3UnNZVnpMMy8zaFQ1WjlVKzFGT3Z6a1R1ckppS3hFNmxjY3hGRnZIWmI2cDlCWW9kVnZPZlhzdnFmM05jSUN2QjkzVHJyTkJ2TXZjb0tDcEw5ZmRES1pNYVdVUnpwbzFsMDIxdXFHVVFDeGJrRHl5U0h6d29ieW1CR2NwLy9ucGRvQXNWKzB6Q3RMMWNsVmkwNllNMVB2VHQ2SE1aUi9ZWGU1VVpwdmhSa1g5cis1dkgvT0hUTHpQREJNUlFidlJWdGRQWlEwUXUreU83Y2htSDA4UzcwMGRJSEQ5MEdabWhPMGphTW9OTHhvTmZrU1E5TTM5dll6WXJtcVdwbDl3UTI0RFZvQWZWcFJnQ01FRGM2d0hSYXFtNklyUENINTh1OUhPZkQzU2FtUFg0N0ZFZEUwWURPdlA5Vys4YkZXaVYvSHNNRUl6RTR2c2psSW9OenErTmJrb1pxMzE4SWttUlFzMk1MWVVmRW45T2lQcmlhY2R1VTVNRVIzUHB4YUsrczdiL3VRTWRiaU13T3JUc1BkeFlKdHpmNURBbE9CRVlMRU5KMVRWblhsY013RkJzaTA0Y2s4UW5lTGIrejF1cG9ySE9qdW5FRVJpdjJXVHhTb3ZkSEE1d1Z5b0s2ZEZ1emJrWjZ4a3VRcGdJMnJzMUQ1cnNqRjk5dTlHODhtMVZ3NGxaZkYwdmMzdUtEdlB2QktUZU5POGJodGg2MEN3MFFoYTRvOUR0Z3BDSmlnRlpoR3pwR21tNGs0b1YwdWtlUERMZTd6WHBIbldhVE43c3Z1QjNJc3d1a3JwT1RjNy9SSlZyeHMrUTNEeEI3b2NNeURCVjRCR2JUMTFuY09TNlM5V0Zud2NUUytmbXZoNzNZZy8rekhaSklMUG9QUXRKMlFxWFAxaEtoV2htZzhMOUtvYWdEeG5TZXJ5UzBpVTNiU2dsQ1VubjhJWTdBeGp2SDVROTMwMTVLQmZ1WWE1Y09wOWtQMldhdy8zekhNWDNhUHE5Vm9XRTluNzJMelVxTXViL2YvWEJoYWtUaHJtMnpyUUhtSzRVKzZ2T3FsMFhtS1ZtRDdlUUNMZmVod0w1azY2SGk2RlpvdlNNc3R0dklLTjBGK0x1NzNuVTUveWs3ZWlmbHpNbHEwdFp0QTNMcFdLZEpvR3lvMmc5RGVKMW9nOTFXVmhuNjU3U0lxbkl2cDg4VjV3VDRTak5mSmhyT09IZm9COVRIN1N0ZHY3MmdQQlF6RGs2TkFIL2YxYjI2MlZsbnFIZ1VMcHFkYlJ4QmhlMXA1NXNTRzVyV2RXZ2JicmM0QVc3OEc5Uk9VcGJFRy9BUDczUWRZZGNTY0s0UFlvcDVoNGIxbTB3UnExLzM4S0szMHFRY0h1eWJsWWcya2dXRWl3STRyWlljT1pZRzFoQndkbE96VEdPdEJTbkRlSldxN3hybnYzdXp4VFI4V2tDT1RlMjJ0TVBDc2piNjk2VDcyWjJBb2dPRUhQTWgzbWFVcFhXdVk4VXY0U3FqdGphWW9xNFVGYXkyU1dJb3ZrbXdJWmZ0VCtWZnpaUHVISnkvczdvUzRXR2tNTFFJV0NzbXByZ2JhUW5SSC9nSTBkMlB6d0xPVjVWMk5jaFpTVmNtRjBEL1M4dU9OQjIwR0JHeTRhU3FxM0JkOEtscGIydDRyTktyMEpYL0ZkUHdUQS9iRG4rbTJHUGcvQk9wKysrY3NVblBpbVJ5RFNLMGJvaWQvNVplYWgvckR4OFpZcUNBem5JQmtSUjlHc1o5QTVDM0c3aDRlQzhRZHBGSm1ncE4yejI3dzUzdzM2c1VmQmYveGN0NmQrRTMwOFlMcDhoM21La1JnaFFPdUZ6QjBmM25QSUplbUhHMmJoVC9hU0lzdnpQd0NDdUJRK0ZMUjFVSHJKczlJMEZ3SVRQbFpZb3pFV201Q01rQUZJM2ZGcHhlYVV6bFBVT0gvdDZxQWhzbG0wWERqVmZJNytrVzdXN1ljdTdnVklpdzZmR3ZQSjArb3RXMnFXQnlEeEs5Y3pQd3B6akFEQ2dycnZ3QVp3WGpUNnhSNHJTdGMzbHdZem5mSXpzZmsxSGtjV2dVaUR6OVVCdC9lSk8rMjhZdFhxckkvc0pycFpkekxVdDQvOU5ua2RJOHBBRElIR3RNWldBU2N1dndXazJWRlVFV1R3cnVyK3lPbVhRSVRkZzRtbXpaME84RUZlT1RSeWhoNTh3bzNVdVBWekpuR2JoNFk3ZXJwVTVtSVZNaW83ZWxqVDFpVzlaODJEUVN6VEMyNHlyWDgzVGoyRFFEeHZkenc2TStpM2o5WUlhaDV2cnRtd3V3dXdWWmJDWEFRY0lxWU1sQmVOeUVLR0ZMSE0wMTA0dXdEdlp4WHBBQTYwNk5KZCtGbVBOdjNyMHdNVWVtVEZKaEQ3Mi9VV2QxREdOd1l0VHRsMVlsNE10LzBteW50ZFBUcnlOS2VzK1liVExjOHNYYlZlQ0NpR3BuUDR6SUZCZ1o4U09uTEo5VzFjbjVBditVdUZrTkwybEFoM09jL01pYjBYem81Q2hFb3pXRU5Wa3cwcW1FUmNRM2dhN04wSmhXazFSYzNpYWpNNUxZWFpsa3JDK2JOU001RUlreW9SV2lWZEIzTi9lNEpGNnFvSlI2TlN2WXZiaTNlNkR6d2pVWksyajBmeUU3ck1ncCt3QWNQUmFGZ3FnYzlvMkVMNUJkaGY0d1czTWo2THE3U29MeDJwbCtRdlZTZFl5NkZYUTRDdXRKMFhFM3ZiTTFYbmd6VCtrNk1OcFIydEgxOXYzcWtSdjZwUkd5MG9jWUs5cnZBeG5pM1ZZVmR2OUJadTZ1SjUyYlNUSEZDZG4veHJ3aEFGdUlNL3JHU2lWNWZ2S0d4ZW5NUVY5SnYxUk1XMS9kbkRpODRIaDlCL3Z1VzdsdG1YdGVGR25ZNkRMRFByMXJ4c3pNN2FvV2RnaXlOeDBPTFVQNWVjVjNlYzhjRHI4b3o4SUQ5WUtESlY0U1BvdWZlazQwUmJoakRzOWc5Tm96VmlMS0Z2TXBNQmJQTmxsbFJrMEJwWnk0U0xaWU94MDVGNFAxMGNRb3gzbzFZejBEZU1DSVp5VFp3ZE5aenVEMEtXUEpWRDN2OTZkdU1ydTFZOVpQUUdqVlFOSFIvZjVRZDZmUnRWQXoxZktoWi9PSDBiT25FdUhyWmNCT2xxTjdodStvSkxNTTlTRnN3N3lsS1Jrd3dYYW1iSlUydzUwcS9RY1FjVXBWRHBDenJSdDB4ZmwrK2w5QWxzME5sUzNscTJYNUdidDVuQzZyV25CRmJIazJVK3dybGJWQk5JS3ZlYkJaa1VmRmN0VUROYXhWQWVQbTJscE0zeEt5SEpLZVpJS3J4Zy9vbDJ6Znd3bHQxeXhESTVUT09iSjNyU2lGOFZzOFhuYS9IbHFlWHVYOXJYbjFvKzgzV0xiaGZsajJXZDQ2QWxlU2VMN1ZXWm1UbGNuUnRqUmVSM0ZhUVl5MjhtSTNOQ1FwUFFqYnBzejA5TkZRLytyS1VyZ1BlMlR3ZXZIbXYrOHNqLzVQakNyUUZ0NnRmMlhtZytrS2dTQllINnZud3NmQkhOajZpZTVSeUxyMnRTQ2N0Njc5amFURGpQUGZKRi9JSTZUbis0Sm1nTisrNFhDdk8ydndVVS9kbDFyKy85VWwyMTVTWmJ4Z0IzZ2t3b3NiTU5BYjhjVkJxcXQ4UzBDcUZKTVdmS3BQVTRGYXluNmpBSnlSS1N1WWVMdlZJTjJTZEVGTGY3RFREUXdJWkJxWjJ3QXVzdWJCQVBtL2VKZHk3bFluR3dxSE9mQmFNV0kxbktaNnFXM1cxQnk3TXFNbnVubk1lUWhWWC9uWVlLWlFVRHplMm1vVHdSQnRjNGl2T2ZmaFl6Yy9pbWJOL2Z3SHpKWnhVRlBuSzdIZDFBTU9maFRoWnMwUExtUUl1L0NwcC9Cd0FZZlJ6enp6MUkrZlFiSFR4TU5seXFSelpuakRvSTZRYWl6aVArcnlESkp3ZzNWRzRFTWJtOGFndFEyOHMzM3VMMExLcVZUbEo1cUxrR2ZZeGJLaE5SL0IvZEFTV0RDbDBqd0N2MjhuRk9uMDY1NlY3M2t4SVZhcVBTZ0FwaXNIazlZc2NYbXU4Tnp1NXVUajU4NFE4SkF2K3dNSjhGRVBTZjVmWWs5bjlCTmFhajBXQjBPeDFwNEFiNVEyTEh5akRpUWZLNTdIYnV2eG1aTFk0cnlUYUJXbXdpZnd0TTJpNUtRemd1Rmk5SmNTMDlxWHBCVHNYak5ITStqVFdNZDFvRy9mZ2NTWW1nY2VLUTYvSVVHQlZQSVo1cVpDTEZTWHpoR2JISDFxWm8rS3lWOXY5OFhnYnZXaEZ0amZpSGs4OUxTbXplZjlaS1BsS3RRZTZORFRiaEVkK0lQamVIa3JmS0d6eUljdi83UHNXK0YxZ2VkUVllU2JpdmcwMGF1b0JBMmR0TXlua1Fhd2lMNmJRTU9BSTg3YitOOHN2TGZFd1RZZncyQmZSMXE4NjhXSU4rNGNxZmZ0QUpBTTVrb0lpbm1vWmRlOUVJQnRxUmZtb3hsZVZmRDl6S0d2Vmk1UXBtR3lBUmhqZ2xBOThnRy8zN2Ezc1ZpMkNMYm1scmxGVzRsdVowc2hsT2QrK2JEdzBZb2ZsWHE1ZCt5elpBQ00zNVkrbFRGeW03Sm1lSmwvNDNtZ2lCYXFUUlM2QmFUQXRWdjdpTkRyRXhTMEpFUHlXbEJkcER2VFVzdDVjZE5QazczMzhtV2twcVZBYmExTC9yOXIwQzZEaDRXVXpWRGRRZ0VVVi9yT0NweVRIVDlzR1RxamFmOGdDU3NPK3p1MnFzMlh4NHJ2ZlQwalFQbUtzc2dXRDwveGVuYzpDaXBoZXJWYWx1ZT4KICAgPC94ZW5jOkNpcGhlckRhdGE+CjwveGVuYzpFbmNyeXB0ZWREYXRhPjwvc2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_98.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNwLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3BvbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAgIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CjxzYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHhlbmM6RW5jcnlwdGVkRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+PGRzaWc6S2V5SW5mbyB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48eGVuYzpFbmNyeXB0ZWRLZXk+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjwveGVuYzpFbmNyeXB0aW9uTWV0aG9kPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSURQakNDQWlhZ0F3SUJBZ0lKQU92cFp0Sk50US9yTUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oYld3dWRHVnpkQzV1YjNCbE1DQVhEVEUzTURneE5EQXhORGcxTjFvWUR6SXhNVFl3TXpBNE1ERTBPRFUzV2pCVk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWURWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLZlVsY2l3RFBDSjlKWHkxTnN4S2ZxeU9mTFFYRktLR2dOS0tSTHpMQVdPNDNHZ1FZclY2N1FhQW55NUx2Z09hODFLUU9YNEl2akp5MG5kL1ZyTzZqRzlwVGRNUjl2RkhUMFR1M1cxUVVzeVBQU1FxcEtYd2IyWkNTWE5naFlENWdCck50bU94QU9zMUF6eDVxbUl6Qko0RjBSa1JpdmNkYlhTZkJVQkxwQ24xTTI4NWM0dGs1U0V2b1JnQmVpc0xKSkRCN2hteWxBMVY2LytCTitONmIzTStaWkcvL0NUdk9qSktnbndrTUFMelhiUGJRV2Ewa3BiTUxETXo4S3IycE9ETEtiM3JHbWRmNFA2QTlhQTQxazZMNGNsVHNOZGNLN1p3SjJmR0Y3OVdHekU2Ukx5QlgyVVMzZ1BIVVh0L1dNUVpYeVVMTzNleGlURHNRWFdGZjhDQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdRUU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQjNmUVp6MnFOQW8vd29oUE5hUjJ1QWFrTHQyNWNLcnNiZ24zWHdPK1grRFJING5xTVNaa0hkTEdyODJ4RDNpMzNCTFNRd1h6RmVjRU4rQ0E4U2xwTm9JWEh3azZENlYzdUVCU2pLZW1adEpGQ0pxZThkKzVxdDNHVjUwQUttdEV0Mk5jN0I5NFROOHhCNUVtWmxhZG5USldjQmdTdXV6MWhMWFFRMDJkSjNkRHE4Rk1seVI3MFMyRFR0dVB1MGkyL2Y2S3RybG1tTnNVMjRBcStmQ3pFRzQzTnFTaE9NZU01ckR4THNTSkN0amZNUndHOFlleU5mNmNDTVNNeFlBSmZyVHlqK0FTOFJ0WlFOR0Y3dFgrZXhFV0hPZjFDOUNCekh0S1JDbEJSTDZ6RGpscFBDSUR3Y01GaThOWHZhaVZjbHhJcTNYZGZxeGlHQkJFbGRraGdaPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5INFlCSE1wTHcwWGZGSXRVR0poVnVvd0FiZmZYdXY4bGdTdzdWY25IblpOTllBd1NDNHRVOTJ3aXdvd3NhOHZUU1k2cFpMYytYc0ZtbmNzcktGUDlvYXpQSmJyOHBIakJmU2t0SWhVZHhCbTZFU2lpM0lDbm9WK0JadmlvZW05MDlXTUVZVG9vR2l3QThIamFZRUQ4anUwZU81a0NNUDROb3lETjF2VnJoU2l0Vjh6NUR2aWl5N0VqT2NUSG9xOG9FUFFDRjR6UTFQZXVvWnFsUDdFQ2JSUFlodTZQUjdNa093cmRxNWlJblpvejhQeTJNeE54U2lPZlB5dnNrODBzOElQbk1FVjRZNUdnYXVTMGJ2bXFTNUR5bkViOVRyT2s3WDJhN2oxNXg2d0JUTHc5eWU0T3BHWkU4VmFPeGFxUGViRldsNkFRM2FKeHVpM2ZycGpIK1E9PTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkS2V5PjwvZHNpZzpLZXlJbmZvPgogICA8eGVuYzpDaXBoZXJEYXRhPgogICAgICA8eGVuYzpDaXBoZXJWYWx1ZT5JemlqckFKU3RyRUttWEo2WnBhUi9aWVpHYnRtcm5lUlBEajB0T2Z6ZFJEdENwTmxjMmh6eG9XaWFwVVI0UGlkNWZwQlBDWGtnd2Q2V29tZlgrc2lpWTRHQ3JRQnJidHNZQ05vdlBVWDhicWNZYmxaWGpXbFZJbnJ6U3NtOUV5LzUrRDI5dTIrdWRiOWZRRjlVcSs1c2NBUk8vR0htdlZpdDdvcjA5YmZVa3dKeFVjbzhLYlk0T1JJa2hKVlk0T3cwb1VmdzMzcUQxc0hSeXNFaU5nQTVsTEZhekVvR1JHMXA4NHZxSTk3VUVJK1FtbXJxSVN4K1NQSkE0M2daajc0WHIvMnlJZ1hLVXpoaEhUS0JYTHNZeDNoYUJDS3lZN1lxUmVZQnp1OFlBbW1QRnlNTldZN2I5MXA0QUNEa1NnWkx0SGRWU3lYSmRsdzlaY3dMMnovbG5hSzVnMTlNTWJuczF1czlWRFNpdldLNElScmNBL2FQQkJIWTFGbnFtQ21Tc2doVk5DUW54L2ZEZStxR3VtYi90eTRqSzBjeTJZSHl3QmhVVmtXR2FFWmt4eDZvWDk5bG4vVjErNzZWNzNrSzRieFIxVzEvZ1VwdDI0Vld0ODFFcFNmKzZVR2t6TCtmTXdFak9YZXBLUlZTOG9IRldzZUg1cThlV0xUQ0NTWlpXdmN1b29rcUlIWXNpeWZpM0plWXJWcUNYam5tL2hnRFdFMDhabnplM2NxZUxrNi9kQXgweGZFN3p6a3hiZ0JtZ3hKM0lBMUxJZCtGbW9WVkpaWUkzVk5vRkFHSkNtZVhvQ1Q0SE5ySTFpS0YzMG1aNnowblQ0OW5sVHpicllaMzRVZG8xeUtXVmd1SnVrVWUvanBVa2lqejJNL0RPUUpIS3lMOXM3SWVLSXN6cC91azhscFM5d2k3QlBZOHhaM2dpT2xxWXVtWFVBMmgzRVB6UUJoRWN5R2FpNTNvNlowRTRuZXNjZUFVQjliNVJBR2ZiZGJKbVJEdHNVRlBqb1RmRDVScVdTSFJMSG1STFRENDh6anlKNklxdEI5N2hlR2s2YW5SeEVrc1BKbzRzeWtRUjBGSUJXYUpQZWRuRmg4ZWpEYXdUMERnU09tbk1aSVZXUUpTVkZjaFpZNTVHbUIzZEpGTXE0VC9ITnRITkphK3Zic2ZNY0JYWEJmQWprZmkvdFhFQnUvVUphYTZ1aHVycHdvaG4veWIzOWI3MWVjVWhnTHR2NlRNZXFiWUY1VU1MSG4vVTVyK1NnR1IvMGk2MGFIYnlKNENQYUx4ZWZyRjhQcmRyOEtOYWdRZjNORGlWNnd0WVRNbTNRWVloWTBPVTM0cXJXcWlhZnl1SHNLS29OMmJzeHRaK2orY3kvU2NFYXBrT1pTZ3VSd285U3UyTVNIcVlCcVRMYXZqd0ZLbFJLeXdmT3JJc2xQU2RQbFNKR1dQeEZaMlp4OU54RlBkaWkyb2phQTRNK21PY1U5U0dnbjFGeStrK1BHaDJvT00vN2RMK1ZIRFM1MEZ3Vzd0WXpGcVh3TlBTYkRTQ2diRlFjZlVabUoxc2w1RjduakFsYzdQQmdtSWJkYkdyYjVNOUxRdHlxRGFURXZaQ0QwNnFTSkN2eStQS1hHcWhpeVFHWlU1YTcybnZ0Tys0YWhndU0vQjE4M3FXbnoxTjlXeUhtQVlCa1JUWDBsSnVWa3dkeUQ5aDh0WTFpMGxESktXWEJlcXUyUDZIT2UwSUhad2cyVyswc3FsWmFPYWxoY2FjMGdPblBzemErR1pnK2c3a3Q4R1JkdjBKZ0k2dTJBSkVuN0tZQzVQMzdTRjhFMitWK1VLQitDU2tRalplem9CRUdBQys0Tzl6QjdVb1B2Qk1PWU5Vb2hjbngxeCszbkorRXFGMmdSZVZ2T1hXNWtDSGJpd1llSmQxZmpvblIwZGNwMUJIWnVJT2FHTnZyREUyQm9zVzhaOUdjSjQ5dUhmaDdNTGJ2OVc2eDBFb0VTSmpVYWFLUGhsT1drWEYvaFNNOXFvTmVKczgrd0NRaStZeERSSWxMMHNIMzdCMitFTDdYSzlpMEdLNkhlNFhPaVA2NzhJWEVNVjY3Nnd3cy9sVEpZTld4dm96Tm5FQ0tWQzU5T0Y2UzRzdzZIRStFTGZ4RmovQXFaTGdOb2xVTTlURDc1Rk1lM1dkL3VsRDdkME1KY2llSHFyUVMrSVZ0SW9Hdk5KU1BxV0FBSjNHNXVidnp4ajZsdVFsUEtOYlRuL081d0lCSzBrSmh4RzRIYzRXWDVhL1REaHI5bStDNEl4Zk5kWXpuMjRyY3JDL3UyU3I0encwWWxJUDN4bE1xQ05XaXU4S2w2OXh3M3hCa0tMZkFjbVA0N2pRamxadW1ub1ZXSDByN05lZm01ZGE3NmRuZE5tZ3NrL240OStPTi9zY3RVS1lFRDdlV1h3UHJ6VCt3SFJLQVQvL2RrcStZOERlamdOMnpPUklNUG9jaTBTVzFCbVJ2SDl6bHhNWXZINDdTdVJIajYvd1dqRFFha0pENk13UWxlNjR1ejhDYVQxSXUvTnpwQjdXOVVlRVFnRE1VRThBQjFsUTVXR0djNXBDemFYTTNIdEgwOCt4djRLc0xrQ1FqQ1dDSXJTYzJZdjhZQUlQdVlJUDNIcWhjVXlQREplY1ZxeW4za1FLc212cU5Qa2EvZVhiVW5HbFZsTjlvdjkrVlowNzhrb0lEL1BPNUpDYWRNVWxUaVZ2VFREZGplWm1BcTE3UVk1cExsdnRPT2pLSVBxeWh0TkhJYkE5Sm13NWFGL3E2akRHVkpWTi9xS0s4NmdraU8rLzVvR0hiaUJKQytpUkFJMzVGb1Y1V3RMR01laUpvUW1SbFJEWmREUjVlQ3FTbXN4WXVpV1VuN0QvQXVhUjdFOHpQQzBGd0Zkc0NZOEs2TTZWbDdNSnExSStPeGE3Z2R0S0tPSHpFd2V3VXA0OVkzbzNEZU9GVUYwMGcva3pvcVd4M1RwdDFmTS94RVNuUTd0WXArK0dmNVJDaGxUUGJFWTFoTUgrYkRGeVJIR2s5bWxjdTV5ZTE0ZXYvWk5EaElKMGdMMVd3WkIrbTdMZjJLQXpNVWNQVVN2cytTcnhJL1VXcEpxL0lrNW85aVVkZXI2RE9hRHdhSy84WERHMWVrTUl5WXF6Vzd6aXB1RUpmc0FqdVI5eWRUYVY0RkFVVGMvNXR0ekwwVndRQVFPTEIvRjRkUjR4bkhiaDlxNytGRURDdytEY3N4b2dwY04vRS9RZzJZdFAzT25zWU16K3M2ZGJoYzMrNGxpUVhQYk1PNkdON2orekg3M3VITTB2U1lrMC95UldOdUNncTFQcU1YVG5TekNKZzZXSzBYZ3paRzdvYnlucnI4eWUrSDVzd09aVWJ0M0NBc2htNml1bEJPRW10Um5HVWpuMEdqOVBsVURwaFZ3eURWRWk4U0tYSitvaGhHVXVtQkFiVEdiSzE0M2xtMlNMRjFwRWxVTjBGRXIwbnFPRkc4YkQ3SGZUTzh1N24rTUgvWkhBTTJaQXZJNnRiQmxiTldjTlpuaFFHK1phU011YnFiTUVnQThLRXRzVkNqVGl5bktMVklyQUtWM2NyeFR6SXBSUE44U3VzaUhiVFhWQjR6NnVEMnJ6MFU2RFI0YkhsbEc5cWc0ZVJwZTYzYjF0MWZxNFFnbWlDUFZBNWE1Sk84ZUhnaCtyTmd3MS9rVU4wM1pFVHlyVVRRdDdLTnNhNkxqZUZ6NmVKVFBKaU9vOGZWeGRZTTcydHEzb0VqcUVhN2dPY0RYTHhpRlpWMWF5YUhyOFRpSUNIN1hWVWFYN25HV1o2MlFDN1RqTUZaeW8rRHpmcUh2TmtQS2NMU1J3K1pLbmNpQmhkM3V0UjB2bDlSVVhHWWJDU1ZqbldiblFWWTdEUzBGcktYandrdk9vZStDWCs4L05jNDJFeU56TWZsbGluWHVPSVdiNDhjbWd5T09sQjM4QURrOG05bzVibGFiVWxtRUROMTYvWG5YZGsrV3JLMUJiTVM3ajFGYVlPeTU1UmpHQkZVU1R2R2lJdVdqRUNxbXVpM2JaQ1ltM0RMTHRhRVBINlMvMFgrU0VnMGhrdE9hNGc0TTNRSXVEQnVIN3VsWE14enNoM2N1OHRiUlpJUkI3bXRJWnYwVWhiTkVCaHVEMEFPZFo2Z2xKc3NLUElIaUZTaVBxb1YwTHpaWlU2amRUL0JWQU5QOUhOQVQxUFk1NUlEdzhUSHJrQ3Q0SHFnNllPM0o1UmtxYm4yb1NodkJHLzkzcG5UOVcvNFVhOGRvUVF3bGp5dlAxaVlMN0sxQ0Z3R0dOOXRkUituVCtGcFllekI3cWRFOGUvUTQ5L3NEK2JJS1UzcnFUVmZlM0E2cEVTZXpGSW8wbGlIN3lVNGNwRUIxTXRobm5EYUZHSDRPRWgyb3JDTGpuSjhIVy9TTHRFQVE4Z1hxOHFqalUwR3RXSExVRXo0SEJmUjhlTVoyV29TQXVMdllDR1lubEVLTGZoU1UzbXVLSEdKaXg3UUcyUTZLRk95Yk5Mai9IRnJveTJ5YUFFR2N4V3huZVlDalZKQ2ZLa1ZIaGowRDlaOHhhVmhpOU1vMHRXQUM1dWNGa3Nuc0c0L2IzQUVZWkh0R0hYNklBQnZhQ2xEU0JtNjM4bEJUbURhZ2FZUzJqcThkOVk3RGFkNDlOWG9WcUJucmlLMzloL1B2azV3Q3FudFNjNFgwbkNoc294SktnOGJONXJtUkhmWG1FdmszbGp4NFlYYTlWcVZTZ2dpNW9zOE90d2trZGFpQTNQQ21TVDFUdzdyTitIQjlDNDM2MlEzdWlJWGtHek5pY0Y3QkZDODRFUDdZaXVCVVlLMFZFZi94Nng3MU95Mlc1Y3V3cXpvbEpvbHA4VXVwMkJXVmI2V0gvVXE2Z3dGUDgrVkVkRCs0cnk5b0ZoUDF6NGNkZ08veXhHdzBZd3RYYVBlNmZHbE1SUnUzWHpVWW1iN3E1NUVFL3hhb3BaaTRHdkxnYldteS9yUFZ1bmR4SHh1S2ZtL3o3NFo5Qm52bDdMdVk1eUZwdEsrdlptVmNuYXoxcVF2aHEwcTJJRERHUUNyMTlvVHVTcGRqNU1HcDN4Qy9hUnRPZWxQOEx2c2JUZ0t5UURzc01VazNqbC9HSFdrL0Fkc2dJT0pKN2JsY2c3MGZwdllNOGo4bC9IcUtLcXp6dlpad3piUjRRYWxrdm9NYmdGY0FTK3F5c1d5WEdOTUFMaThaZnFmcSt6U2x6cDhITzBrMTVpR0Z4ZmU2M3VvcVFMRExLdHVCa2ZQQzZ3RmQyanpDWGU4azRQR3M2UjA3bXJjN3VCMWVmblpUbGJMcjBoSHA4bmJKcmR0bkVDdzIvbUNDbFQ1UFMrNWM3OVY5WWhiOWZqcjBpTXlReXNKeVpWeDFuekdSZ0M3cWlMZ2xFR1hxeHAxajBaMGVOWHBBZTlDK1UzYkFSeUNHWG9uSXpENnBhUzRMYWpTbXFNYlpsR2x4UkU0RXdhL01pWlhxUG9ldWRKZFlsejlDelZsUU8yb1NWeVcvWDhqTWNqZnlZVzVyNFBvdWpGTHNrTTJwRVlCWmQ3bVB5ckdsbHhHd0tIY1I4VlJ3WjdPYllkYm85QndQamN3bTVoR0orZ3FibldjMHVxTytTQ0FEL0c1UUZla1BxWTA5V2RwTXRISXAvd3J5TmNrMittNkNKU3g5bGFHWE03OHVvQnNvbnYzbkhwV1lna0FVc08zUkR3MzdqTmUvK2JrMmJLbDwveGVuYzpDaXBoZXJWYWx1ZT4KICAgPC94ZW5jOkNpcGhlckRhdGE+CjwveGVuYzpFbmNyeXB0ZWREYXRhPjwvc2FtbDI6RW5jcnlwdGVkQXNzZXJ0aW9uPgo8L3NhbWwycDpSZXNwb25zZT4K"
  },
  {
    "path": "providertests/testdata/onelogin/olgn09_response_99.b64",
    "content": "PHNhbWwycDpSZXNwb25zZSB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu\nMDpwcm90b2NvbCIKICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sLnNw\nLm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvcnE1andrdmI4eiIKICAgICAgICAgICAgICAgICBJ\nRD0iaWQ3MDkzODI5NTM3NTAyMjU3MjE0Mjg3NTQ2OSIKICAgICAgICAgICAgICAgICBJblJlc3Bv\nbnNlVG89ImlkLTUzMWIyYmYwMmFlMGE1ODhjMzAyMzQxNjNhZGJmZDlkNmJiZjA3NDciCiAgICAg\nICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAg\nICAgICAgICAgICAgVmVyc2lvbj0iMi4wIj4KICAgIDxzYW1sMjpJc3N1ZXIgeG1sbnM6c2FtbDI9\nInVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iCiAgICAgICAgICAgICAgICAg\nIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5\nIj5odHRwczovL3NhbWwuaWRwLm5vcGUvaDlna2p6dmIzZTwvc2FtbDI6SXNzdWVyPgogICAgPHNh\nbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJv\ndG9jb2wiPgogICAgICAgIDxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVz\nOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+CiAgICA8L3NhbWwycDpTdGF0dXM+CiAgICA8\nc2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6\nYXNzZXJ0aW9uIgogICAgICAgICAgICAgICAgICAgICBJRD0iaWQ3MDkzODI5NTM3NTQ2NzY3MTMx\nODM4NzcyMCIKICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDE3LTA4LTMwVDIz\nOjE0OjQxLjM3OVoiCiAgICAgICAgICAgICAgICAgICAgIFZlcnNpb249IjIuMCIKICAgICAgICAg\nICAgICAgICAgICAgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4K\nICAgICAgICA8c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4w\nOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IgogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbDI9\nInVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC5pZHAu\nbm9wZS9oOWdranp2YjNlPC9zYW1sMjpJc3N1ZXI+CiAgICAgICAgPHNhbWwyOlN1YmplY3QgeG1s\nbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAg\nICAgICA8c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5h\nbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQHNhbWwuc3Aubm9wZTwvc2FtbDI6TmFtZUlE\nPgogICAgICAgICAgICA8c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNp\nczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPgogICAgICAgICAgICAgICAgPHNhbWwyOlN1\nYmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iaWQtNTMxYjJiZjAyYWUwYTU4OGMz\nMDIzNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTctMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGllbnQ9Imh0\ndHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvYWNzL3JxNWp3a3ZiOHoiLz4KICAg\nICAgICAgICAgPC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPgogICAgICAgIDwvc2FtbDI6U3Vi\namVjdD4KICAgICAgICA8c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDgtMzBUMjM6\nMDk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RPbk9yQWZ0ZXI9IjIwMTct\nMDgtMzBUMjM6MTk6NDEuMzc5WiIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpzYW1s\nMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+CiAgICAgICAgICAgIDxz\nYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgPHNhbWwyOkF1ZGllbmNl\nPmh0dHBzOi8vc2FtbC5zcC5ub3BlL3Nlc3Npb24vc3NvL3NhbWwvc3BlbnRpdHlpZC9ycTVqd2t2\nYjh6PC9zYW1sMjpBdWRpZW5jZT4KICAgICAgICAgICAgPC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0\naW9uPgogICAgICAgIDwvc2FtbDI6Q29uZGl0aW9ucz4KICAgICAgICA8c2FtbDI6QXV0aG5TdGF0\nZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA4LTMwVDIzOjE0OjQxLjM3OVoiCiAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIFNlc3Npb25JbmRleD0iaWQtNTMxYjJiZjAyYWUwYTU4OGMzMDIz\nNDE2M2FkYmZkOWQ2YmJmMDc0NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6\nc2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPgogICAgICAgICAg\nICA8c2FtbDI6QXV0aG5Db250ZXh0PgogICAgICAgICAgICAgICAgPHNhbWwyOkF1dGhuQ29udGV4\ndENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3Jk\nUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj4KICAgICAgICAg\nICAgPC9zYW1sMjpBdXRobkNvbnRleHQ+CiAgICAgICAgPC9zYW1sMjpBdXRoblN0YXRlbWVudD4K\nICAgICAgICA8c2FtbDI6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6\nbmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0\nZSBOYW1lPSJnaXZlbk5hbWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm1h\ndD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmll\nZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6\nLy93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5z\ndGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNpOnR5cGU9Inhz\nOnN0cmluZyI+Rmlyc3Q8L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPgogICAgICAgICAgICA8L3NhbWwy\nOkF0dHJpYnV0ZT4KICAgICAgICAgICAgPHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJzbiIKICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FN\nTDoyLjA6YXR0cm5hbWUtZm9ybWF0OnVuc3BlY2lmaWVkIj4KICAgICAgICAgICAgICAgIDxzYW1s\nMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hl\nbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRw\nOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5MYXN0PC9zYW1sMjpBdHRy\naWJ1dGVWYWx1ZT4KICAgICAgICAgICAgPC9zYW1sMjpBdHRyaWJ1dGU+CiAgICAgICAgICAgIDxz\nYW1sMjpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1\nbnNwZWNpZmllZCI+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFsdWUgeG1sbnM6\neHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAgICAgICAgICAg\nICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT\nY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNp\nOnR5cGU9InhzOnN0cmluZyI+cmVkPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT4KICAgICAgICAgICAg\nICAgIDxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAw\nMS9YTUxTY2hlbWEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6\neHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ncmVlbjwv\nc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAgICAgICAgICAgICAgICA8c2FtbDI6QXR0cmlidXRlVmFs\ndWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIgogICAgICAgICAg\nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcv\nMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgeHNpOnR5cGU9InhzOnN0cmluZyI+Ymx1ZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+CiAg\nICAgICAgICAgIDwvc2FtbDI6QXR0cmlidXRlPgogICAgICAgIDwvc2FtbDI6QXR0cmlidXRlU3Rh\ndGVtZW50PgogICAgPC9zYW1sMjpBc3NlcnRpb24+Cjwvc2FtbDJwOlJlc3BvbnNlPgo=\n"
  },
  {
    "path": "providertests/testdata/onelogin/sp.encryption.cert",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAOvpZtJNtQ/rMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgxNDAxNDg1N1oY\nDzIxMTYwMzA4MDE0ODU3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfUlciwDPCJ\n9JXy1NsxKfqyOfLQXFKKGgNKKRLzLAWO43GgQYrV67QaAny5LvgOa81KQOX4IvjJ\ny0nd/VrO6jG9pTdMR9vFHT0Tu3W1QUsyPPSQqpKXwb2ZCSXNghYD5gBrNtmOxAOs\n1Azx5qmIzBJ4F0RkRivcdbXSfBUBLpCn1M285c4tk5SEvoRgBeisLJJDB7hmylA1\nV6/+BN+N6b3M+ZZG//CTvOjJKgnwkMALzXbPbQWa0kpbMLDMz8Kr2pODLKb3rGmd\nf4P6A9aA41k6L4clTsNdcK7ZwJ2fGF79WGzE6RLyBX2US3gPHUXt/WMQZXyULO3e\nxiTDsQXWFf8CAwEAAaMPMA0wCwYDVR0PBAQDAgQQMA0GCSqGSIb3DQEBCwUAA4IB\nAQB3fQZz2qNAo/wohPNaR2uAakLt25cKrsbgn3XwO+X+DRH4nqMSZkHdLGr82xD3\ni33BLSQwXzFecEN+CA8SlpNoIXHwk6D6V3uEBSjKemZtJFCJqe8d+5qt3GV50AKm\ntEt2Nc7B94TN8xB5EmZladnTJWcBgSuuz1hLXQQ02dJ3dDq8FMlyR70S2DTtuPu0\ni2/f6KtrlmmNsU24Aq+fCzEG43NqShOMeM5rDxLsSJCtjfMRwG8YeyNf6cCMSMxY\nAJfrTyj+AS8RtZQNGF7tX+exEWHOf1C9CBzHtKRClBRL6zDjlpPCIDwcMFi8NXva\niVclxIq3XdfqxiGBBEldkhgZ\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/onelogin/sp.encryption.key",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn1JXIsAzwifSV\n8tTbMSn6sjny0FxSihoDSikS8ywFjuNxoEGK1eu0GgJ8uS74DmvNSkDl+CL4yctJ\n3f1azuoxvaU3TEfbxR09E7t1tUFLMjz0kKqSl8G9mQklzYIWA+YAazbZjsQDrNQM\n8eapiMwSeBdEZEYr3HW10nwVAS6Qp9TNvOXOLZOUhL6EYAXorCySQwe4ZspQNVev\n/gTfjem9zPmWRv/wk7zoySoJ8JDAC812z20FmtJKWzCwzM/Cq9qTgyym96xpnX+D\n+gPWgONZOi+HJU7DXXCu2cCdnxhe/VhsxOkS8gV9lEt4Dx1F7f1jEGV8lCzt3sYk\nw7EF1hX/AgMBAAECggEATD8qZWiGGGm0csNFrOdjGQALj6LVrrILK19v1aogX84Q\nyrhxzm9ti/8dDijbi9qRY0zOuyvGR5z1/HMb/Ttv7nUoMD05kEC3Dd5/FfTo2w7R\n3pIyzDKh1E9IdqIs7W+L+Li8zI4twzWriM4FaxQ5ElL4zxt3PcoEuDwOH0TQMOsy\nP2gLEhzzkFp7TRoKzR87sM6lXoERsGKh7XNWjjS15/w+XHMaDverOOALwWDbv32N\nUCdVSAGBx4Ic4mZuJv+e3MH2SAja0J6NLMzCMtrzmfcgVECykMnELi1XftZYbgD+\nKulSvHuamygS4KJppnAdly8950C8CxI7fp9QJV/8UQKBgQDUaT68z9e203L/XATr\nsa9CgZodWvjrLH7a2e5EvUPq8slmg2VqEYNjHzP4rCoOcLul6TwrlNInxqTIkIPR\nmRxBSrG24azfGRrOs34IMTXgqfMVVxbcSVK8OijHs94NTwYrRjMXeaAOnKjPH484\nDALrEoEGcrjXmDDKBV9rb+a5XQKBgQDKRVkUvCoILjsA3jG6qaKBwKSZBFla2o6x\nYxgOZdeSG2NEuMt74yRHjgV6iogpvw9i/FSY9TAaZsoX0L3I5LWRtwEi3iXtEC9X\nqFlS9EPr9encpdd2vu1O6aWXW4IlUWbu3ecdb5UAxu44ObUQS6HiXEfcK8vufF5l\nWyilXNerCwKBgAMYYYSo1rDgVe2orp2soiwq7U7+M2Bh7ptLz7AKvgGfdhXbVk/8\nX1jDbKN0BszdEa7yPiE4cvOHboFJsdINFB9TclGC6lz55a0banu+E9XpRBSMh1XA\nb8c0ZcG7OkIhY6qfxEDUUePEnqUeBZ1Ad45rX5vzcgQaQKPA/kn3gHo1AoGAU/05\nwSdk2KLBs1mQEq9PoEsqzbMFm3k3WScJnSjiu3ON48JMFDQ8I04wrjKJ2bPRIswe\nIKlnAP9/mSX/OETntArmeOD/pJFc5ywrcwukjH0/T3S5pEAhb+wK629++hn0AOm5\nhvqHR5xS3JvxuEN/g+vHlv/EnVGdLL8OgKOtlgMCgYBU/5WF/7dr89uYzjiBvedh\nHQCgwd+8aSs+raY5eTzJrJgqVbEMoxhco1GWzWYUjDVw88Y63k+fqIf1DQJFkWFi\n9T1nppVDeofoLDLTrh/2oTAHIM2QL6kWwoHiD7b/scF5z/rC21KqobqroAh2R0CP\nJ2waRoJgqT+P15Lq3PEcSA==\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "providertests/testdata/onelogin/sp.signing.cert",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAKHPtM2MqZxXMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY\nDzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWw8EP/dSG0\nyy7cL2sQvcRqiTrsVCWzQ5SGgZNGbFJXq36pshZ21H7gFPI/K2n6m4I3vNMCQtRJ\nJwfjyrPbuXpVaTMcmg8J3PGUVzaab+dZ28EQ7V9HEnzcVbEgu87xY/SB6SCiJbdI\nCOZWlsgLUkgZS9CFkw5q6i29nL6nSZw/MmNr1hjJWvVvs1KwnGjB2aF6wYBQKKsY\nGxfZTJqKKBGXwIB5qnaWpVQgP6+H/84YCHLUEKk1hgh9AnR1xNVE6e64clcAE+O/\nHWDS6QW658TJsw18TapzVbiUGou4TlxJZqEuJv3BfPX3EMsnp0uRurMtwgyzI/ZP\nCCHxSMJs4xECAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB\nAQBRwSaE1AnhZU/GzMngLSG6WsOp1NksoEHZsJoIKxUJWdMj9s0Pb/QSGg/W/2UU\nCREt6xBd9rh3jv17AwH6+IAvq/zQn36UtOE0/0v85Tp/I6t8v96cTjkEgDHBWSqw\nqfPvnrokKUpDRv1cxCL0qh4oW7selKkI0VpZOgpKm87oi6POQJ/KOMfcewlH+DXt\nzN3Es8Xp8BAfRRIEk7i3PqZSrhWUguQgCOAOvkb0tGuPDsFLLJJBML7B7aYrS1Kw\nEyuowZiDCDSk49KpGOmKYv2ocIG65gr7+am/l2NN+6cxuCf/o9H8UL8qm0LUJdgh\n5sVa0DJzIcuOjWsp2QxqTjr/\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/onelogin/sp.signing.key",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1sPBD/3UhtMsu\n3C9rEL3Eaok67FQls0OUhoGTRmxSV6t+qbIWdtR+4BTyPytp+puCN7zTAkLUSScH\n48qz27l6VWkzHJoPCdzxlFc2mm/nWdvBEO1fRxJ83FWxILvO8WP0gekgoiW3SAjm\nVpbIC1JIGUvQhZMOauotvZy+p0mcPzJja9YYyVr1b7NSsJxowdmhesGAUCirGBsX\n2UyaiigRl8CAeap2lqVUID+vh//OGAhy1BCpNYYIfQJ0dcTVROnuuHJXABPjvx1g\n0ukFuufEybMNfE2qc1W4lBqLuE5cSWahLib9wXz19xDLJ6dLkbqzLcIMsyP2Twgh\n8UjCbOMRAgMBAAECggEAA/py2FpQm0NVK5qAo0yDizh19sdT9FtfgHINhkcFeiwX\nQje/AYTqlDid3MwLTE/Dde94f/pNsk5Dv4V6W8PU5NvX6NmYefnST6va2QQ6rQsn\np6uSNwLcYcWFTtKTqi1Y7fKmQyOpxcCbCUgeFxVAYPnE0jUKikdHB2dedkI9d2FV\nZMSBAlNp5NQQTTojjdvfa3yxFqB/5Gh+tZZnnXm0BmtSHjWvXnpi62Nz8LHtKwtO\nqzS6650vhbC8GyuILeBkEa0Zvw2aUhRI0grCjWsbXJT66FrV+pIElOAQvyHP6hlX\nzC43ODdXSiFogVkF07umlqmopv4gDLgst8fjY61VfQKBgQDpVytmVrNXI9A2uDv/\n0RhCZpmBMgz8o3OQY0KRtZqupeVUGCTKk0zNqxsvUg31fa+DLYu+fYUDRVy58ST7\nvTiXjKYllWY5LAacsqtA/1E4BghOuYfU12tGJcOUM1TZNkQ/s2to/fDL0HTjYX6T\nSTqxoyg9zCnSYpF+u7gj91QuywKBgQDHVcUGiL69Tws3J6riKvFBtqrqcJaRu5OS\nt/U+kqM1m5/GOaBpZyropeusQgb/nZHIE/lEur7CHYcTi8PKF2lGxnqWOn31LVrc\nrM11r2pweDpCBBQqytNoE9vUzgfueXbPPgl+l1pTDA02u6EE45IHC1bPPbjDx29/\nxhfAykD+EwKBgQCrVA3Rvqc/vFQNWYj0dJrTZnIfophWh806nycpxaYlxjl0XaXl\n9/HUsWXsgNsu/XH5Z1/MJm2b0TocbSsyi+UZoXP89I1yPRk9xRJpTw5bjFJdO2y4\notNpViEcl/Qc6PODskGTfaFohU7OBa/ihUpLU/kgJuAuUaFy5HJ4NgnhsQKBgQCm\nq/K4SfKiu8r27TYXMizT83bp3AYqCJuWHDb1gQryshNgXaLhPyBDsyhhuju70/an\nQvw0GamTCbl+AGlPO1ANm7u4jWPwc2H8DoklE+196SldNaffOASYi7JON4+uOOW8\n13R84vTlZ7hMwYobWmUperO1STiKiuGSBwKpcvPw/QKBgBgqByvETHwewxnYoIsp\nyn3Fz1KM7MMnRil2sXVTdpS6lpF+iGs7iXc8sBnWKxFFQWnvvx6VvhXw6lCCnEQX\n3LH177jH+s0jVQgD+YZLnYDBF347tU7W/dPz5Df7hgmuQhOU/UV9ihm4udutRFbR\n4fd3j6wIcv2MZ0iDUVJ0UFYr\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "providertests/testdata/onelogin_cert.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIEJjCCAw6gAwIBAgIUOHrykO4ce1TbjvGgXXVVnR4NsqMwDQYJKoZIhvcNAQEF\nBQAwXTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDExhdW5jaERhcmtseTEVMBMGA1UE\nCwwMT25lTG9naW4gSWRQMSAwHgYDVQQDDBdPbmVMb2dpbiBBY2NvdW50IDEwMjEy\nNzAeFw0xNzAzMDYwMjQ2NTNaFw0yMjAzMDcwMjQ2NTNaMF0xCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEg\nMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjcwggEiMA0GCSqGSIb3DQEB\nAQUAA4IBDwAwggEKAoIBAQCaJ02AnJe5vq+zzkmrIHhRy8V/UxJogbJGEJW6nqrE\nmO7Q4sXO7dLIKxGccCEz0KAavGKWzSX9uhVvKpazpD4bW80wPQIgFxN3CjiA3qlY\nIfhhh4emSZo2AnaTuG4BPVGFNPx0jxXGAhh/3xkpIsqARJFPB6njT2+MwFctm3fo\nckx3Yp4e1xoUD8qQR0f/8oq1LjrYd2Vlckmmw7qrzSqS8POHW/I1jx9Y/vAjTPWD\nKXmbmLcTe3188PDrthSyoBuaAGBRVTP9WTuYMh4kGvmfX6sNvIDGejUcUCq6IObR\nr4xLSZiGy5uoyqsQc9agAhQm+26Gpq0R3NSvN91JdbZHAgMBAAGjgd0wgdowDAYD\nVR0TAQH/BAIwADAdBgNVHQ4EFgQUnbxBsHgNVq3OSXEuG5EkR0Jd1UswgZoGA1Ud\nIwSBkjCBj4AUnbxBsHgNVq3OSXEuG5EkR0Jd1UuhYaRfMF0xCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEg\nMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjeCFDh68pDuHHtU247xoF11\nVZ0eDbKjMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAL/6j2qpM\nCrnolwKT7mfPEpA6btbtl0R0t6zSwYUVU9T3PK0/P3LKXvbjSySov0E4R9d5qlOc\nyj5CbYiuqAO2aON3xy82s0dN3FHRiO6kcjoRPwVIIF0S8x7tpzcPKa42zSPfBqMR\nw4ezUEzTijFriepkSWST1Btr3QeK2Cxhr0fC1xmw/YK82BV0/oVRslGL27ro+v3/\ndNY0A0r32Xe2+THomrY/YaZaDCPCjHo8dlxrX3D/mPfoiiKSkm2mGagQXT0giTHV\no3oIq+u+KdrBcQn65EBcjfFKDIeFCdiVmO0xPl9mmWskVRLy2/wpuDIp6hnAphl9\nlj5DY48eBsrEXQ==\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/onelogin_response.xml",
    "content": "<samlp:Response xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" ID=\"R060bff490336a09324ed664f6e8b03fa12dc1994\" Version=\"2.0\" IssueInstant=\"2017-03-08T07:53:39Z\" Destination=\"http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81\"><saml:Issuer>https://app.onelogin.com/saml/metadata/634027</saml:Issuer><samlp:Status><samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></samlp:Status><saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Version=\"2.0\" ID=\"pfx63cf6dc4-c309-ff5e-6049-84c34f0c0061\" IssueInstant=\"2017-03-08T07:53:39Z\"><saml:Issuer>https://app.onelogin.com/saml/metadata/634027</saml:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><ds:Reference URI=\"#pfx63cf6dc4-c309-ff5e-6049-84c34f0c0061\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><ds:DigestValue>gd5V090n/m4JRrtpo5WgrwPyyy0=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>SLzvdNM+1R1+3XsXpC+/RIvb5L4Lhy7Eb7caPG2CLMPYhzbKLAwIiT7/0fEMO/xL7rdIgEShbcU9iu5PX4hGYBhirsFIZvdHytns5+JKHnlVBmHm4TsSU1z+dGMXBa//L0KFSrvdgBUpsr5vs50SuYnnVp61VN+zCLMqO221CQfP95QyMcSQ+fiyq4GOmWLwQy1m1+NV3U8zlapp6FIH5stW/dp4OqpRdafV96rVwmmR4yeUw7VAzbJuMrPgkXO9nUbHeMUTgQxkQ4ThzG5jt6fT+Ro1NOYS4zpVtzqlQwGzqWxQVRLEqXIf500/Qi0NuFQOW42ZAUiXDgdLENTVGA==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIEJjCCAw6gAwIBAgIUOHrykO4ce1TbjvGgXXVVnR4NsqMwDQYJKoZIhvcNAQEFBQAwXTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDExhdW5jaERhcmtseTEVMBMGA1UECwwMT25lTG9naW4gSWRQMSAwHgYDVQQDDBdPbmVMb2dpbiBBY2NvdW50IDEwMjEyNzAeFw0xNzAzMDYwMjQ2NTNaFw0yMjAzMDcwMjQ2NTNaMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaJ02AnJe5vq+zzkmrIHhRy8V/UxJogbJGEJW6nqrEmO7Q4sXO7dLIKxGccCEz0KAavGKWzSX9uhVvKpazpD4bW80wPQIgFxN3CjiA3qlYIfhhh4emSZo2AnaTuG4BPVGFNPx0jxXGAhh/3xkpIsqARJFPB6njT2+MwFctm3fockx3Yp4e1xoUD8qQR0f/8oq1LjrYd2Vlckmmw7qrzSqS8POHW/I1jx9Y/vAjTPWDKXmbmLcTe3188PDrthSyoBuaAGBRVTP9WTuYMh4kGvmfX6sNvIDGejUcUCq6IObRr4xLSZiGy5uoyqsQc9agAhQm+26Gpq0R3NSvN91JdbZHAgMBAAGjgd0wgdowDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUnbxBsHgNVq3OSXEuG5EkR0Jd1UswgZoGA1UdIwSBkjCBj4AUnbxBsHgNVq3OSXEuG5EkR0Jd1UuhYaRfMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjeCFDh68pDuHHtU247xoF11VZ0eDbKjMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAL/6j2qpMCrnolwKT7mfPEpA6btbtl0R0t6zSwYUVU9T3PK0/P3LKXvbjSySov0E4R9d5qlOcyj5CbYiuqAO2aON3xy82s0dN3FHRiO6kcjoRPwVIIF0S8x7tpzcPKa42zSPfBqMRw4ezUEzTijFriepkSWST1Btr3QeK2Cxhr0fC1xmw/YK82BV0/oVRslGL27ro+v3/dNY0A0r32Xe2+THomrY/YaZaDCPCjHo8dlxrX3D/mPfoiiKSkm2mGagQXT0giTHVo3oIq+u+KdrBcQn65EBcjfFKDIeFCdiVmO0xPl9mmWskVRLy2/wpuDIp6hnAphl9lj5DY48eBsrEXQ==</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml:Subject><saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">arun@launchdarkly.com</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData NotOnOrAfter=\"2017-03-08T07:56:39Z\" Recipient=\"http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81\"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2017-03-08T07:50:39Z\" NotOnOrAfter=\"2017-03-08T07:56:39Z\"><saml:AudienceRestriction><saml:Audience>{audience}</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2017-03-08T07:53:38Z\" SessionNotOnOrAfter=\"2017-03-09T07:53:39Z\" SessionIndex=\"_d5fe4830-e601-0134-4e06-0af7aa36d0f9\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion></samlp:Response>"
  },
  {
    "path": "providertests/testdata/pingfed/idp.signing.cert",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAMQeWnDJVaTyMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY\nDzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOwVVXE67dWF\nWQGnFyWLQyaAqco+hargHNq5DWTiQM5EG1GELt5QqW7XQJwgwfIHic7zMBDU13F6\nIUrh310gNm0Nygg7DWEREBNZvTdjg999pbRyt5IgeihKh5NEwpH9TGXnbow8QjI7\n9AqsB9Irn0fEuLKb1KOF0EMt5XqJnW2oqJrvTdYeGoi7Ckpg9J986XMqLMp48Gd9\n/ATo83GHsO7w+NKs0mAxB/Tffh6hrbILtMVMENQB6lv3dIrdmQqPGJ120xO6dmHq\nLTj+tNSjhkznSKXBDHT/7vGt3Ra38P6mGCKrDAloAz2XdXJcdiY57PxeQvc0zwRt\nJtOxphA5WHMCAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB\nAQAQ2P9aUBaM1kC0XJF86A4aYkqRVuyspJT6+DOYA/pcifZ3zhpXPe2+TY2gKsGk\nqfYma7ch6dq4zVErFMwkn8qM7PD1knK/P8SZuUPC3LTH3ETH+beb1lM9NICOItkh\nu7RIwwwwhAZKP52/Ww0F59PCv1SPZJ1NkF8XWak4Df8l4un4xsX1jcFkFlUxCDh6\nsimdFOK3ibMHUZxyGbvK/MwJfKQmMcjo/fIaukv1/2tKXnilSDhQS1161yiX7ooF\ndD+y55KaGF5O50K/9DW30E9ZgrSDltD/6aGt17VrX5wnkoUb68CqYfUrRjhpbPYI\nLGu96alI6+eLeIwZKpKSbMj4\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/pingfed/pfed11_response_01.b64",
    "content": "PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9Ik95RHVjOFZPX1Y2UGZlLUMuNHlYQzJoS0xRMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAyVDAwOjEyOjA2LjUwNVoiIEluUmVzcG9uc2VUbz0iXzI3MjQyYTI3LTlhZWEtNDBkNi1iNjAzLWMxZDZkYWExOThkNCIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CjxkczpTaWduZWRJbmZvPgo8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPgo8ZHM6UmVmZXJlbmNlIFVSST0iI095RHVjOFZPX1Y2UGZlLUMuNHlYQzJoS0xRMCI+CjxkczpUcmFuc2Zvcm1zPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8L2RzOlRyYW5zZm9ybXM+CjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KPGRzOkRpZ2VzdFZhbHVlPnhOWFB0dHJ4VGxRWU8waHdRaFIvTHA2dUl1Y1cvc3p2WnNzb2VSTGpLdGM9PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgpQaDI3bVhCbGlWa0pLMTBGVUFtQ0pPZmpuRVpnVWQ1WVdzcFdnSXdBNEVweUVuRzNhS2VTZFR2aHc3M3VVblVsNnVRM2JOMkRwT3JOCjV3OVV6aG9FQnF1SjI4WG0yVVpGb2gwaklMK2craW53TnRPR21tRHRVWkhuL3ZWVUl0QXk3RCtlVjJKY0tpaG1PalRNNHoybUVvYlUKakdTQWJLZmpUMCt5MXJDODZGdmZlNUwrZWpuZkNxYm8vQndqV2pzdi8xUHRNLzlJdTR2OEYxYVY2OFJqRUxQbHRzVkt0QUU5RHlycgpUYjhxSmV3QXFwUVUyUmZSY2FQdXYvSUFNRzdWZUxzU2xuK1p0NjZxUS9VN3l2S0ZYOGhvNFJiZndsMFZEelZvaWhJWk9SVjNYRjd5CmxKcUhuZklFYUo2Y3JHak5aYktoNmVLUmFXZHRFcXZLTFpiSzFBPT0KPC9kczpTaWduYXR1cmVWYWx1ZT4KPC9kczpTaWduYXR1cmU+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJ2aC1TSGtrZVBqcVplRzduNkpDZEhPMG96RVQiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0wMlQwMDoxMjowNi41MTZaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL3NhbWwudGVzdC5ub3BlOjkwMzEvZWlkL3N4cG1yaGJrem48L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5maXJzdGxhc3RAc2FtbC50ZXN0Lm5vcGU8L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgTm90T25PckFmdGVyPSIyMDE3LTA5LTAyVDAwOjE3OjA2LjUxNloiIEluUmVzcG9uc2VUbz0iXzI3MjQyYTI3LTlhZWEtNDBkNi1iNjAzLWMxZDZkYWExOThkNCIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA5LTAyVDAwOjA3OjA2LjUxNloiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOS0wMlQwMDoxNzowNi41MTZaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL2hwMjRkcW5wdnE8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgU2Vzc2lvbkluZGV4PSJ2aC1TSGtrZVBqcVplRzduNkpDZEhPMG96RVQiIEF1dGhuSW5zdGFudD0iMjAxNy0wOS0wMlQwMDoxMjowNi4wMDBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJmaXJzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Rmlyc3Q8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+cmVkLGdyZWVuLGJsdWU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibGFzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+TGFzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==\n"
  },
  {
    "path": "providertests/testdata/pingfed/pfed11_response_02.b64",
    "content": "PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9Im9vTWpNTUpMTTl2RDZPSTRGbG4xejh5X3lodSIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAyVDIzOjUwOjA4LjQ2NVoiIEluUmVzcG9uc2VUbz0iXzMxNWFiMTczLTk5MmEtNGMxYi1iOTlhLWZhY2NmZDhlY2VhMCIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJpXy5uS3hPR1I1LWp0RjF2UFpwVDVjZnNpMWMiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0wMlQyMzo1MDowOC40NjlaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL3NhbWwudGVzdC5ub3BlOjkwMzEvZWlkL3N4cG1yaGJrem48L3NhbWw6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8ZHM6U2lnbmVkSW5mbz4KPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz4KPGRzOlJlZmVyZW5jZSBVUkk9IiNpXy5uS3hPR1I1LWp0RjF2UFpwVDVjZnNpMWMiPgo8ZHM6VHJhbnNmb3Jtcz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPC9kczpUcmFuc2Zvcm1zPgo8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+CjxkczpEaWdlc3RWYWx1ZT5XdytiMy9jbXQvYW1tTk8yaVhpd3BJTU5EbFVXN0NRZzZJVUJraW5pcTZBPTwvZHM6RGlnZXN0VmFsdWU+CjwvZHM6UmVmZXJlbmNlPgo8L2RzOlNpZ25lZEluZm8+CjxkczpTaWduYXR1cmVWYWx1ZT4KSjR6UFNsb3hudkR2QjJYelduNXZ1dXpoejRFbUVxcU9sMlI5ODc4dXowMW5kNTJqOCsxMjhqdzRaSDVnUzJFTCtLSFVRQXlTZlNFMQoybnhoR3UzOHpkVHE1NkE1RTRYU2R0azlaSWVrcDduOEVJMFRwYTR1bHpHalNaTy92N1crYkVNL2hDMk4veGhUaVhFWnF0N2p6WVI1ClhXdTNkbUtnNEphVVNZQTBDU3VMb25NRG5uM1ozQVpRQVF3VWpOaDVYU3FXaFBwYW9xRmtVcHRKSnFWa2srT2xEcXpvQUNFY0M3cXEKUUJBZzdUaFpvQ1cyVDBlR2lLdjNuaXc1c0psU2FuQytuajlaWExYa21JTllxWTMva3E4Q1U5ZU44NmxYNWlDbTQvYlZzNHdMNndWMQpTZTUxb1VaZDh5RDlYOENuaVBKT1FWdnBDK1pnTldkWVExMGlEZz09CjwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPgo8ZHM6WDUwOURhdGE+CjxkczpYNTA5Q2VydGlmaWNhdGU+Ck1JSURQakNDQWlhZ0F3SUJBZ0lKQU1RZVduREpWYVR5TUEwR0NTcUdTSWIzRFFFQkN3VUFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1STXcKRVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJnd0ZnWURWUVFLRXc5VFFVMU1JRlJsYzNRZ1RtOXdaUzR4RnpBVkJnTlZCQU1URG5OaApiV3d1ZEdWemRDNXViM0JsTUNBWERURTNNRGd3T0RFM05ESXlOMW9ZRHpJeE1UY3dOekUxTVRjME1qSTNXakJWTVFzd0NRWURWUVFHCkV3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFWU1CWUdBMVVFQ2hNUFUwRk5UQ0JVWlhOMElFNXZjR1V1TVJjd0ZRWUQKVlFRREV3NXpZVzFzTG5SbGMzUXVibTl3WlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dWVlhFNgo3ZFdGV1FHbkZ5V0xReWFBcWNvK2hhcmdITnE1RFdUaVFNNUVHMUdFTHQ1UXFXN1hRSndnd2ZJSGljN3pNQkRVMTNGNklVcmgzMTBnCk5tME55Z2c3RFdFUkVCTlp2VGRqZzk5OXBiUnl0NUlnZWloS2g1TkV3cEg5VEdYbmJvdzhRakk3OUFxc0I5SXJuMGZFdUxLYjFLT0YKMEVNdDVYcUpuVzJvcUpydlRkWWVHb2k3Q2twZzlKOTg2WE1xTE1wNDhHZDkvQVRvODNHSHNPN3crTktzMG1BeEIvVGZmaDZocmJJTAp0TVZNRU5RQjZsdjNkSXJkbVFxUEdKMTIweE82ZG1IcUxUait0TlNqaGt6blNLWEJESFQvN3ZHdDNSYTM4UDZtR0NLckRBbG9BejJYCmRYSmNkaVk1N1B4ZVF2YzB6d1J0SnRPeHBoQTVXSE1DQXdFQUFhTVBNQTB3Q3dZRFZSMFBCQVFEQWdlQU1BMEdDU3FHU0liM0RRRUIKQ3dVQUE0SUJBUUFRMlA5YVVCYU0xa0MwWEpGODZBNGFZa3FSVnV5c3BKVDYrRE9ZQS9wY2lmWjN6aHBYUGUyK1RZMmdLc0drcWZZbQphN2NoNmRxNHpWRXJGTXdrbjhxTTdQRDFrbksvUDhTWnVVUEMzTFRIM0VUSCtiZWIxbE05TklDT0l0a2h1N1JJd3d3d2hBWktQNTIvCld3MEY1OVBDdjFTUFpKMU5rRjhYV2FrNERmOGw0dW40eHNYMWpjRmtGbFV4Q0RoNnNpbWRGT0szaWJNSFVaeHlHYnZLL013SmZLUW0KTWNqby9mSWF1a3YxLzJ0S1huaWxTRGhRUzExNjF5aVg3b29GZEQreTU1S2FHRjVPNTBLLzlEVzMwRTlaZ3JTRGx0RC82YUd0MTdWcgpYNXdua29VYjY4Q3FZZlVyUmpocGJQWUlMR3U5NmFsSTYrZUxlSXdaS3BLU2JNajQKPC9kczpYNTA5Q2VydGlmaWNhdGU+CjwvZHM6WDUwOURhdGE+CjwvZHM6S2V5SW5mbz4KPC9kczpTaWduYXR1cmU+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPmZpcnN0bGFzdEBzYW1sLnRlc3Qubm9wZTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL2Fjcy9ocDI0ZHFucHZxIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDktMDJUMjM6NTU6MDguNDY5WiIgSW5SZXNwb25zZVRvPSJfMzE1YWIxNzMtOTkyYS00YzFiLWI5OWEtZmFjY2ZkOGVjZWEwIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDktMDJUMjM6NDU6MDguNDY5WiIgTm90T25PckFmdGVyPSIyMDE3LTA5LTAyVDIzOjU1OjA4LjQ2OVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cHM6Ly9zYW1sLnRlc3Qubm9wZS9zZXNzaW9uL3Nzby9zYW1sL3NwZW50aXR5aWQvaHAyNGRxbnB2cTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBTZXNzaW9uSW5kZXg9ImlfLm5LeE9HUjUtanRGMXZQWnBUNWNmc2kxYyIgQXV0aG5JbnN0YW50PSIyMDE3LTA5LTAyVDIzOjUwOjA4LjAwMFoiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlIE5hbWU9ImZpcnN0bmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj5GaXJzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJncm91cCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj5yZWQsZ3JlZW4sYmx1ZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJsYXN0bmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj5MYXN0PC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+\n"
  },
  {
    "path": "providertests/testdata/pingfed/pfed11_response_03.b64",
    "content": "PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9IlZfbGJUdjVhbUJOM1dSeFU1c2ZDLl9RT0F1ViIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAxVDIxOjI0OjQ2LjI2OFoiIEluUmVzcG9uc2VUbz0iXzVmZjRlZDIzLWJmMjItNDI4Ny04NWEzLThiNjQ5NDhhZDlmMCIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJYOXl4Y1NETFlneDktWnVicThkcEJRV2NlLWIiIElzc3VlSW5zdGFudD0iMjAxNy0wOS0wMVQyMToyNDo0Ni4yOThaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL3NhbWwudGVzdC5ub3BlOjkwMzEvZWlkL3N4cG1yaGJrem48L3NhbWw6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8ZHM6U2lnbmVkSW5mbz4KPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz4KPGRzOlJlZmVyZW5jZSBVUkk9IiNYOXl4Y1NETFlneDktWnVicThkcEJRV2NlLWIiPgo8ZHM6VHJhbnNmb3Jtcz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPC9kczpUcmFuc2Zvcm1zPgo8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+CjxkczpEaWdlc3RWYWx1ZT55eVA1d214WitGODZ2dUdnOUdPZzRqeGNFYWUzSW1RclFZOGxWb3BaajNJPTwvZHM6RGlnZXN0VmFsdWU+CjwvZHM6UmVmZXJlbmNlPgo8L2RzOlNpZ25lZEluZm8+CjxkczpTaWduYXR1cmVWYWx1ZT4KNElPdVpzYlEyYlNXa2Z4cXRDTEs5a1M0a1NGOGFiYTJZc1YrZ3JobGJ6NU1MeC85OWczREF0cHVleFFlZ0NGWWxXOEJIWStsaE1DVwp5cXkyTENwY1lDdzBLRnZwa0hybjZPaVVTWCtoOVhCM3dQZ29LRU5OOXBOMmo5c0ZkSWNPWkNBT0JadWI5eUVZRHhLWEUrOXNzTVY5CnZMcWl6bWxmbDFza1lqUVJKYUhEdEhldGN2UkM2VFdod1hLSmwxdWIwbHgyRmhtaUZidGZlOEcxTkNoWmNGSDNCejJKWTJjUXk0d2wKOCtjejAvUmpPVWVIMDhBT1VJdnBWVVRBSnZZM0s2dTdRekNEelU2czdrT1F4UE54K0tnZk9uQ1hETURwaEpNd3RDQkdmSGs4ZG4wTApHOUxSYmlZamwrUDcyUndtTm9Kd3NjRlE4RlErVjhiWmNDZ1Q3QT09CjwvZHM6U2lnbmF0dXJlVmFsdWU+CjwvZHM6U2lnbmF0dXJlPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5maXJzdGxhc3RAc2FtbC50ZXN0Lm5vcGU8L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBSZWNpcGllbnQ9Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgTm90T25PckFmdGVyPSIyMDE3LTA5LTAxVDIxOjI5OjQ2LjMwMVoiIEluUmVzcG9uc2VUbz0iXzVmZjRlZDIzLWJmMjItNDI4Ny04NWEzLThiNjQ5NDhhZDlmMCIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA5LTAxVDIxOjE5OjQ2LjMwMVoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wOS0wMVQyMToyOTo0Ni4zMDFaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9zcGVudGl0eWlkL2hwMjRkcW5wdnE8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgU2Vzc2lvbkluZGV4PSJYOXl4Y1NETFlneDktWnVicThkcEJRV2NlLWIiIEF1dGhuSW5zdGFudD0iMjAxNy0wOS0wMVQyMToyNDo0Ni4wMDBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJmaXJzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+Rmlyc3Q8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iZ3JvdXAiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+cmVkLGdyZWVuLGJsdWU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibGFzdG5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+TGFzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==\n"
  },
  {
    "path": "providertests/testdata/pingfed/pfed11_response_05.b64",
    "content": "PHNhbWxwOlJlc3BvbnNlIFZlcnNpb249IjIuMCIgSUQ9IlZlRHIxRlRIZDZtdEZUSmlmUFN1SDRZSlRQRiIgSXNzdWVJbnN0YW50PSIyMDE3LTA5LTAzVDAxOjIyOjU3LjU5NFoiIEluUmVzcG9uc2VUbz0iX2Y3NmMwZWVkLTUwMjMtNGQ4Mi05YzJlLTNiYjc2MDk5N2ZkMSIgRGVzdGluYXRpb249Imh0dHBzOi8vc2FtbC50ZXN0Lm5vcGUvc2Vzc2lvbi9zc28vc2FtbC9hY3MvaHAyNGRxbnB2cSIgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHBzOi8vc2FtbC50ZXN0Lm5vcGU6OTAzMS9laWQvc3hwbXJoYmt6bjwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CjxkczpTaWduZWRJbmZvPgo8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPgo8ZHM6UmVmZXJlbmNlIFVSST0iI1ZlRHIxRlRIZDZtdEZUSmlmUFN1SDRZSlRQRiI+CjxkczpUcmFuc2Zvcm1zPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8L2RzOlRyYW5zZm9ybXM+CjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KPGRzOkRpZ2VzdFZhbHVlPklLeGZPdUwzTW1ja1VpMXRYUU5YRmp3cDhNOWR0WlNPUE44cWtmLzJKeXc9PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgp6dW94cjFscnFDL01VMUo0OEFEV1EzV3huY1NCMmFqRGlyME9WQUpYZGx1MVl6MWQvMEkzc1JKK2JSc2pWWUdkTGhUYUNGdEY3T09XCms2RUs5SVl2M3BJZU5mZHJNRnFDVU1rZkU2cTFDZzRUTGl1NjBjQ2xsZERZQlp0cTQrc0tPQkIwWnVZSkpaRy9WaUtHS2FYUWtMdjcKT0NrOUprQkJmVE5USjFyK1E0ajJ3NWY4eWJScjZ4VG9wUUppeVkwRmNCZm9sRVNiVkdOT29yVTRDMHZGdU52QTVDeUUrenpPTW85NApqd29XcTlTVURQRlV6QWo4R2tlUWhXYVZPS3lXUkZ4Rm5sNG9iRnpnREtZcVZXWkUwYUNqdzVmNFZWSUMyYU4ySHFwVjUzVTYrcWNjCk1kY1VXRDM1WmRjNG4xSGdra0hvQUJWNEl6OFZGRFJCL0FsM0dBPT0KPC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+CjxkczpYNTA5RGF0YT4KPGRzOlg1MDlDZXJ0aWZpY2F0ZT4KTUlJRFBqQ0NBaWFnQXdJQkFnSUpBTVFlV25ESlZhVHlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GVXhDekFKQmdOVkJBWVRBbFZUTVJNdwpFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUmd3RmdZRFZRUUtFdzlUUVUxTUlGUmxjM1FnVG05d1pTNHhGekFWQmdOVkJBTVREbk5oCmJXd3VkR1Z6ZEM1dWIzQmxNQ0FYRFRFM01EZ3dPREUzTkRJeU4xb1lEekl4TVRjd056RTFNVGMwTWpJM1dqQlZNUXN3Q1FZRFZRUUcKRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVZTUJZR0ExVUVDaE1QVTBGTlRDQlVaWE4wSUU1dmNHVXVNUmN3RlFZRApWUVFERXc1ellXMXNMblJsYzNRdWJtOXdaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPd1ZWWEU2CjdkV0ZXUUduRnlXTFF5YUFxY28raGFyZ0hOcTVEV1RpUU01RUcxR0VMdDVRcVc3WFFKd2d3ZklIaWM3ek1CRFUxM0Y2SVVyaDMxMGcKTm0wTnlnZzdEV0VSRUJOWnZUZGpnOTk5cGJSeXQ1SWdlaWhLaDVORXdwSDlUR1huYm93OFFqSTc5QXFzQjlJcm4wZkV1TEtiMUtPRgowRU10NVhxSm5XMm9xSnJ2VGRZZUdvaTdDa3BnOUo5ODZYTXFMTXA0OEdkOS9BVG84M0dIc083dytOS3MwbUF4Qi9UZmZoNmhyYklMCnRNVk1FTlFCNmx2M2RJcmRtUXFQR0oxMjB4TzZkbUhxTFRqK3ROU2poa3puU0tYQkRIVC83dkd0M1JhMzhQNm1HQ0tyREFsb0F6MlgKZFhKY2RpWTU3UHhlUXZjMHp3UnRKdE94cGhBNVdITUNBd0VBQWFNUE1BMHdDd1lEVlIwUEJBUURBZ2VBTUEwR0NTcUdTSWIzRFFFQgpDd1VBQTRJQkFRQVEyUDlhVUJhTTFrQzBYSkY4NkE0YVlrcVJWdXlzcEpUNitET1lBL3BjaWZaM3pocFhQZTIrVFkyZ0tzR2txZlltCmE3Y2g2ZHE0elZFckZNd2tuOHFNN1BEMWtuSy9QOFNadVVQQzNMVEgzRVRIK2JlYjFsTTlOSUNPSXRraHU3Ukl3d3d3aEFaS1A1Mi8KV3cwRjU5UEN2MVNQWkoxTmtGOFhXYWs0RGY4bDR1bjR4c1gxamNGa0ZsVXhDRGg2c2ltZEZPSzNpYk1IVVp4eUdidksvTXdKZktRbQpNY2pvL2ZJYXVrdjEvMnRLWG5pbFNEaFFTMTE2MXlpWDdvb0ZkRCt5NTVLYUdGNU81MEsvOURXMzBFOVpnclNEbHRELzZhR3QxN1ZyClg1d25rb1ViNjhDcVlmVXJSamhwYlBZSUxHdTk2YWxJNitlTGVJd1pLcEtTYk1qNAo8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KPC9kczpYNTA5RGF0YT4KPC9kczpLZXlJbmZvPgo8L2RzOlNpZ25hdHVyZT48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpFbmNyeXB0ZWRBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHhlbmM6RW5jcnlwdGVkRGF0YSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+PGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8eGVuYzpFbmNyeXB0ZWRLZXk+PHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIi8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5LZzNNaEVZaVBsN1l4TnU4N3BIbEVBM3RFUlFGQ0dIVC9HYmpYaU5RV2gvc2EyNkxFSGNiazBOVURMNkpNaVAvRjhEK3EwMkUyWEhyCmIzU0pxTWNtZmxodGVhK1lFemZpQmZ2d0w1aFZrQ2xBd1AvVDhrSnlGZmtJakhnUDNiQ1BWNWZFOVZZNWpWQWFLTlJxSjFXbVZERmMKaldNVHFrQm5jOFdCNGhkUEk5TnYwWHhpaXBjVS95WG1maUpjOFBGT0doNmJ4LzBaU1ZQeTJ3SE92R1JKTnArUXljUG5UVWNVNU1ZQgorMStxSkJVRldueFdEMzlxZGRsVEVCdkVZdC9YTlJ2VmdPOFMxdEN1bk9wcVhhNkc1UkE3ZWhLZ3psM0VkdDIxRDZnc1RnRmFLRVhpCnBtYlZWUytxMGZMbnlGNVI5YzNxU2FzL3B2RlZGN1Z5NmkxM3h3PT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZEtleT48L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT53WDF0UTY4SndFaXJsTXo3Y0xka0pnbjI5NXFoSFNrOHMvWGlaV0FlRHpGRndQejI5cXcwRkN4SDZTYm9rNEJQcThnWG9LRWpDdnB6CkxBUzNTNUZ2TSs0dDVJVDhENmZUYWZRcVZVcHFwTzZIbktmbDM1R0h1VnpZWW1JSUwzeFprRC95SVh1bGV4QW1sUUZreUszalY1cm0KbXdMclp6T2I4Y2hvNW1YOHQ5WENKZUdJTG5vUlVhT0Y5WEJzbTYvbkk0dEoydktzMmdWeEZBM0JiekRISkl6T3loanFEOHdmeDFzaAo5ckc3L251VS9oU1JVbGxOdnBiZjRPQW5ZcTduRXhOQk5NbTVCZUhlVnY1eEtuS1VOaVVqNk04WnA4elkyT3lISWxKTUZXc21sTWNLCkk0Z3BMQVRsOTR6blQyQUlKemc0cXpDYXBkM1pGa2V2ajBNN09jNWQzK3paRjg5eU5SUTRxeVg0MlFSbFZoUDV4UHhRd3BUNHFJVVoKNHo1Q0ludGI3azN6SGF5aUxUbXBGSjc4K3ovREZrWDFYT2NLNCtlZHZaSWVJQWFiZFBRZWNCaS9CWXJlbVVQTFdRZjNLZkFkcGw2KwpzdlhKVHRQcU9JRTVKMWd1THpUZXRjQ1ZNelc0cXMwcDRwM2dKVVh3eWYvK1VncFRLbUpKYlQwWUVxR2VobSt0d2p4Y3l6VXJlZ1FsCnMzN3J3d3JFaVRhaE0vVTNlSitDeXU0SWRMeWpncktiWS9NVSt4Z013T2VwMEoxOUVhSUt0QVdPb3JydUJZamF1T2M1OWw4SEtBNncKTENWQzJVdTFYY2F4dlN0U2ZYbXpXNWU5SkwvTmdOTXU4dklrMldpdHNaK01jVDdjZTdQU0t6eTdSNTU1akg0UlRGWTcvUHpqbDFnVgpwZTh0bXAwTnl0aFNLZTZwYUxwVzQ3VGJKZXdYVS9wQVFuMHZuaDhjWFd5cFdrN25uTkVqSHFFNitQNzlaczBXeGJVRjVkY0t5bW5BCnVCK0h5V3JDQjVUNnpiVTRwV0F5c0tOTWZLRUZNTEdiblJoU1g2S2JmTFJEZDRUR0VGVnRYNk9FK21peFBUNHRNUHpiOU4wa1lWY2sKcHpsTGU0dEI3UGtlNnZRbXV3TG9FUmZVckxoWXV4MFBkZlNHYW5Va3pJZmc0MjVMRVdHd1AwUjJIdnVmTWsvamQ5MEZwbXAwY3FrSgpERXl2bnU0Z0s3K2U2SXo4Q0pQMVI2WVBibnhXQjArOW1kSmhXTXZwRzVRcmNpeW5PWXRsdWRKcjVWVTg3T3JkVkFEZjI1azVkYUh3CmFCVzdCZnZ2S0pIK3NNUXJCRUNWK0dJUlh4RXpsS2JFbUpTQVBtQmxvdVJVb3d5ZmlzL0dHV3ZXMnFJRXNrNlJ1eFdpbVc4VWFqbzMKMStlWUd2SFZBTlNFeEQ1dXFrYXdVWFBPNVNuNEVPT0VOM1dTMDJpbU9lcXRQb1dtKy80TEc2R3liU2l0Y2tuT3JaMUlZSW1MOUxTcQorZFpkOFA5MElEdlIxZkJnOEtUYUVzeW9GYUpCVGpTSWdlNlRnNWVYMzZzeldhRDdVcjFGVWhqTzJKK21YWHRXekE0V1lhMlhYUjUxCnRlTEZJT0pBTkZ2NUN3UE0zdzJMQ092eFhwZjgxZE1WUEQ1WFBVVEUyMW80RXkxZjBtaXhtK2tGb0M1RmZGZDBDWnJGbDZNd1h2U04KQkhqMzVQUENHak94eVljWk9vL2Jxb01RNFhNNExMSXRvUGJ2UUYyNGZ1akcxek5rQVdhbDBhc0JTRzdSdmZvUk9wVGx5UHA4RGppZwpGUVFhK3NFY0FIZUZubFR5VC9zUi8zL0k0UEF3c0lGRUhyTjA3QnM1L284K3RhSW1vazBIZ2I2MERWR0FRSVg5M05STTdwVmZDbmc0CkVsSStxdnFRenBIb05CVllQTW1aSnN0MHlReTMrbTdZSFRKNFNZUG92Y1dqRzN1WW5rSGx3OVR0ZzRkTW5JcmY4Z3JxWU9LbW1tVE4KSEtmS0VNY1hpSXBQWnI3N2haYnp1REtJVWxJZHZBM05KZUVELzh3aGRaRnlsVWNHeXlYS215Tm9YY1BpMGtYcGl6dFFsZjBLZnhpOQo0MUpnRTh2K0NLRVhsK1VBKzk3TjhWYUJhWmluTVdYSk1SL2NTNkJSQ3RDRkNMcGp5TjI4RGhwdXpwNkNGTzdhc01aZms1aTNLTWszClpYN1pJUWEzZEkxSEtqdWQwWHF0bWZmVWNiNFhtdVVxL0pGSHBmN0hMZ3NwRCtBaW5oNm12T1ZPckErNjk3QXRQdDdRbzhYNUo3S1AKTVlFY24wTlk3Qno0MHdzai90OHJrdDdwWXh0WmdqcVhNcDlYQXhzczBiMFhYRTdpRWc1eVNwVHZGUElOcUlMWDdVa1FyU0VBZVNCVwpCdWFjMjd6emsxbnJsMDcrL3FabmJmS0dwaHRidFB1cjFaREpESmY5dEViWjRTb1c5bXJidGhUQnFZVGJqZ1RVb3ZNL3puOE41ZExnClE5eEtHcVp3ZHVOL2FmeXlWV0JIbDNudEpWSW5JRVdVSDBjNkMyUm9GTTdrN2Znb0Zqb0JzUFZ4dXdaNlNoRHRic2hpWmo0aFpTWEsKcmJhRUNLajd1Z2Vjck5xTDM0SUp6TGR0eVZEZktRdjJidGZveEFoK2ZlVk04WnZKcXIzY254QU1IUHdLWHRXclVwVnJNcDFubUdMVQpjeCtONGkzTmZnMkY4bmJnTnpGUmlMNUsrNkVOVXN4Qit4ZjVZSnJqaHdqSE10d0VaRVFueVZ2UWJ4bHZRbkJKN1FNdjBiOWFRN0hIClJIWWxscXVsaGJpZG5ZTlZvQ1M1TjVYK3BJWkh0ZGx1R01wSGpzaUdueTVOODk1R2hUUlNKaytrOTlsUGZOaDA4SGdJVlFWVm8reE4KblRuZU10dTJ4NWV2dFVQV3p4U3NnaTRZb0FndVl0MTVKOVFQM3Q0dFF0TnB1b2FwMVdhRVlScS9jTjRFemlZbGVsT0RtSVNaMG15VwpUekRaYVl0YjZOLzlYb3lLOUtUeDJVNkhyeG83OHVZTGhDT2tNSjNqQ0dUZENDZk44SGpqNzQwS3BwZ1BVVG9yOHg4YXA5SzB4UHhXCjV4U0NxZ2lmUGNORkZBemNINzBrOTZsYnpENEdNanVZTit6TFRIL1dRSktWLzVFcDJXbnF1ck52Uk5OdUszQ2M4aWtNcGRDZ0s0ZzkKL3FNN0ZiczF6ZHZkSHVNNzFSZ1FVcnFTNGp1TWt4THVmeEFBZ2ZGcGVHOFhTYS9LZHk4dHNsM2VJbzYzSG9MaXhCMjVXZnRTRkpTZApnWW9oYXZ3aWdKa1RVUmEwYWtnako2OC9VTElnYVdsZGhZMXZUYzEyRERjWU1tUXY0eEpqSmtGWUVIV3VzV1paczBJODlmUVF3b0xRCitkeUdLYTk1RW0wU29QRU11RjQzNkQ4VjhKOVV0TSszeFdTanRJYkZVZ1VXT1Fad2hRNVl1YnFYUlUwUFNxKzF6aC8zUVJ1N0JzRUUKTVY1OXBHajQwYkpmdWJVdVZEL0d3anBvSkpMRVJUWlJpUjZWTkl3M0VCYVkza0FBV2ErZzZKdVpEUFZ4V0lLOENWRjY3U2pQVTduYwpRTW5IcmdyMHBHdllRcTllNWRjTSt3MHFhSjJ6OGw5NDRib3I3OTBqSjduRzJaeFIrek9JMnhUUlJjanJSd0Z5blkxZjZuYTIxNkd0CmtMRkVpaXN0MGF6QXpkdXVTOTA3MGRVYlo5ZVNXRzhUaXlVM0cvZDVGR0QvdkN5SUJjWExaWjMvOFIybWMzUUNjd2pmYnRYRXB6MG8KQjBCNDVOem14cVZEL092elltYnB3QytTblN3OG5rb1cxbWtOSlRGdWlVWGxjbVUwYWdGdnFXOU05cVAwNXY0Z0NLMkU4VE9tdFI2bApJU2lUSHpkQVpZNHJFd09LVFczTGFQYjR0SnZ0cFZNTnZzd041MnRzMVF6eGFrWE94VnlRZ2pGWW41T3hKc3dqaUUyMitOZktkbDBtCmNHb2ZLaEpCMDhQUEN2bUEwZWpnS1VGbUhrQk1xU0RpOEFscnhLWjlBZ2tmUHZMSkFMVUp6YUNHNWgrcG5BdHRWaEo4dzhOUmRKUnAKRVhyNWNpcS9ESy83SVhZeHMydzlvQkN0b1NRS3NOcTdTN2gzSUl6SkNmZ0UzSWdVVW9WV2dOSWRUWmZZcWZzQUpsSnZuMjIrYVp6dgorNWFBcnU0K3BMY09aV2tvTG1ncVQ0WkFhUXdVekJlR3doQ0huRHJYZ2ZyWG13TnB2U2cySlN6TVdMTjVhVTl2ay96UjlMQzJxZTlPCkQzNnRiSFV4VUlma09ib2tIM1FQWiswdlFhejMydXovelJ5Snp2dERRR3U3eE16OHdvQUtnZWlWblNwdCtsbXV1ZlVYY2dBc3RUOWgKZnFZV0diUkFZcDJQZ2NQbzR2OFJLR2o0MHlXaEQ3d0d6L2pmL1BSYy9XWmJIQjQxb1N5Z2RzWXFhYVVBY1NFdGFMM2tvUGs1RjJPWAoydnEvT213WGlRV1pmYy81RmU5N0FjQzZwaEhjdVRscEg2eEhOVGdqamZId0FvOE5oZGQzakdPMzYyei9xRWpaZE1BVlE1U0VOSlNRCkZUKzNLMkN5empTWHpjaVcvb21rbk44NVJLRXMxWW1hWXF5WHJqM1JiZWdKMHRRY3dRd2VQWTVVeDFsdkZDNGdsSHB3Y29LK3JnUGMKY2ZUbXpCU2hrQ0hyN3VJcHEvcW5RcnNVMjR2cUtIc2ttaXptczRoNzVUZnNYYkpiWXhoa0dOMVI2OXlBZHFyUVI3YytLYjRna3dtcwpZZUk3R3BnMGljODNhSzZsOXY1bTFiZDA5ZVBsZmk1eWd1SmN2TTlVUUpBckg5YzNhYXFtUUN2UU1hMy9Fb0hpdGpZdWl1Q1VuTFJtCjlYN3gvaHc5K1lFdndoWVRBdVJlVE91WjZRdDlLQnlZOEloZVVBYTlYS09tZTMydWw2TndKZXRtdHl2NklSSEpXdFNDWUtYT0VydmQKWjNUSnlzek5ySloxUjlsZmZBSEVOaHJkK2tXc1FoSDZNeUQrbU1USnlPYm15OFBCc1lVTjBPN3ZUWHd5aTZmbkpMWlMxekhhZ1VZRwpReVZBTy82TzJVMGo0QnQrMlRncHk0Sk1EZExxU0Fsa1ZiNlJPbitKRi9hN3FyU3JtL1dOYlVsbnk4Z1BhcHBxTEZIdEgreTFheEtWCjBwdTRScmF0dWJyWTNxS2FMaTVNUUcwc0g1NmVOUzJHQXNRc2E5dXZFNlN5RnF3M3NVcUhxT2o2c1pLVkdacEdKbm5nbGcwRVBnMnEKVm9jOUExTHU0dEFOaCt0TWpuUnlrM1lKR3RMOUc3WkptRFRnL1pmOE5kQ0l6QjJWNzBOWDl1RXJjRGJKL1FmM28xb0ZXRGoyT2YzZgpkMnpVM041QWdtWTIzL09LazQ1b0VkTEdxTVpHZktzbG95L1daUGdyQjdVWkwzbjZTTzdxcjVRbTVldVp0VjhtRTdGcEg2NmZSZEhjCmd1QWhxR2FtZTJETGx2bXk5cnNKSHZQa0xXTklFOHgyTm5oSnB2cW1HanR6WDk4bGt1VWVmTU5jVUpyeXBJZS81b0dMNlJZRC9yRGsKNU9NRko5Z3RsQWFVa3lybmQrZ2hFSXZNYTREOWM0bm9rNEQrYnhWUEVRTCt3VGJzbk1qazljY0lUUnRrc0hLb0duNFgrZnJoMlAwUApHQitobUMwbXlCeUt3TGQ4YkMyNExXL1BHcHV3d2NUTCttRE5OblI1M1cvV1c4YUZ4ZXhJRk1ScGZDbi9OSnZ3MythM3BuSEVaZXhlCnpCNkxCZTFEVWxFdkd2VkxFeXJkc3FkNTVRanVUN1diQ2tpR0lUSzJRTkcycUxCbXg4alh2bjlSTmV0NDNpaTJtVFpVRzdoWE9TbEgKR1paZ2hJN0trZ0dFS1Z0WG1CRWpRM1o1dUx4Nm9RcDMyRjZ3TVVqeUtXOHBtVXVuOEI4blJ2Z3VQdjRVTy9GNzZLWXNrZDdtazY2MQorZWJaSVRGVUxoWFlFZnFUejFGU1pvWE9LQ3M2ZnVCVTFrS2dXT2NXNVZkZ2xCL0VISUF1TU1say9EaXYzTjRHaklUVU5jZ1FnQlZkCmlBcXFtVDJad3UzcG1tMGhXbmM2N0Z3K004Ylc5SVk1OSt2R2lNSjlpOVJWb2o3eTcwUG5lNW9QK2FBRldwSEJ2aWRqcmJxV1IvWHQKajJHVVVkbElUUnVaTURSRW9HMnZhbXBJYjR6ajVRdW9FTitXWUJjdTZNUmNWV1B1QnI1UVlmaUpleHZaN25kZS9tamxEY2pkdVlQcgpUbGx4bEtleWgxcVluSkdTa1NYb0ZKbWlPRHVjcDEyZHJyc1FHNnJyZkwxVjB6QWJNVGdQNVFRdmtkcWM2cDAxRzZCWXZtUnlTekNKCjRCdnBwSFhTS0VYdXVOMjA0UHhPYlNIZExrRnk3RnhHdUM0OTFzY1RiWUZDeGdkbGpwS2IzS1NhNTExSEplMW9SRkUzWVRNc3R6QUUKZmRRUU4zWWJKcG9zUFlmODkvMzR3S1NSZGlCR01URi9nM1dJdW9IdXZMS29xNEo2MStsMjJ0WVZhVnBqdU5wZkFRdlNQTjd6dVFNRgoyc3dybzVhTzJocGpKb2gwUWluS0h1MHN2VmlDazNhMWhReTR4NklkeVZlUWRTcVg3eUVLZW9ZOUU1ZTBKTlBqMmNCMXhTTEdLWVl0CldGVmJ5czVuSGxXVW5yNUswVDNkS1J1UGE3ekpSdXpTN0xNR2dQTjVWZ0FocHpqZ29DeUlZdFF0Mnk4ZE5JRDlIeFZpbkZRQ0xYNDgKc0t3eWpYYU0vWmJON2NYZUcxRjg3TUI3NHpucVhacEpZaU85SndqcVluQzc2WVJhZ1dFek1ud3p2azM3MFozWGVreDJXZ2RRalFHNgpwZWVkeEkyYjlVTXpqbzl5dzd3Ny9VbTkrWVlLWG5SM3d0UlRIQjd3cGd5bjB2MEVramE2SVUyYnIvZG5Xckc2eXFKVWFDNWFLZnVOCk9nNTB0ZDRneG5pdTA1b25HUWhrQytLMEJHL2RhTGxTOHlVWjhydVJHVUgyRkNuQ2cyQUZrL0Q5ZDhFdU5xUHZ4VmhpNm5CMzZoZ04KQ2JySElKaDZ3QlBsZHoydnllTm9YUDlzQ0I5NnVaMmRkbFZidW4yYVIxNzBiSWRTbmJoQmg2czVDWEFxcXZoNUN5d0tNb20yamxocQpDQUFySTZNVnBoUmlRSWtDcVJKaDFwYjFVQ2d0dHhPWVZzaFlmNDJjZkdGZ05jLzZMTm9mMkVqWjkvSWl5WkJKRmRVMElUdkdVWmtNCk1hdzJZUytTTHR1V29RTDdhVy84Y2d4aG9XdkdXTmZiYit5cmJrZ2ZGbXo2M3RiVDRhaG1tSnY2UWhTL29uZk5LYk5zOW04VWJ3TkYKc0pRV3g4enZVYkM4Tk1MMjA5Nmh5MVpPbk1QU3A0NHIyNkpjOXJlbHBKRnVxdCtxMCtncWR2cll5cnFXMjIreENCbk5mTVRJbXlZUwp6L1ZGUWxnMXFDb3NNRzJ0Uk1ya0xmZWpQT0tsOEs2Ym5PblNjVnVNOFZ6b0NiVytIRnAraUZoSkN5YWhRYmZDTUwvclVHVUZ0bEhwCmRZSWNpRFJXOTVFR0hXN2FERUVMVWtIL1cydzJQS1VGQnN5NDhJenQ3dWo0N0k1Uy9vQlNZTUE2ak1PNzFBdldWbzErMGtUR0g2UkcKWkUxR2hHV0p1U2YvMEZML0drdHlCZFVuZ2g3b1lYdktRUlpveXVPSFVIRHpoNjJoRFJyTEU4ZzgrWDRsM2cxcDQ1eEVSbXZKVkIvTwpobWhqU216U1NzV1Z3djFaUXlPT2xONVNUaks1OFE2a09VblBhKzZ3TXE5cytlUURuaXdKTjN4NDNIdGNuZmdxbWhHZENZaTVEazhxClI1RVN2RmRoM3Y1WlQ0ckxoRHZQZ0F1R2ZjVnhiMEswOGpnc2hIaFpFTHV3VThSb1JiSXZFWHc9PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPjwveGVuYzpFbmNyeXB0ZWREYXRhPjwvc2FtbDpFbmNyeXB0ZWRBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4=\n"
  },
  {
    "path": "providertests/testdata/pingfed/sp.encryption.cert",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAOvpZtJNtQ/rMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgxNDAxNDg1N1oY\nDzIxMTYwMzA4MDE0ODU3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfUlciwDPCJ\n9JXy1NsxKfqyOfLQXFKKGgNKKRLzLAWO43GgQYrV67QaAny5LvgOa81KQOX4IvjJ\ny0nd/VrO6jG9pTdMR9vFHT0Tu3W1QUsyPPSQqpKXwb2ZCSXNghYD5gBrNtmOxAOs\n1Azx5qmIzBJ4F0RkRivcdbXSfBUBLpCn1M285c4tk5SEvoRgBeisLJJDB7hmylA1\nV6/+BN+N6b3M+ZZG//CTvOjJKgnwkMALzXbPbQWa0kpbMLDMz8Kr2pODLKb3rGmd\nf4P6A9aA41k6L4clTsNdcK7ZwJ2fGF79WGzE6RLyBX2US3gPHUXt/WMQZXyULO3e\nxiTDsQXWFf8CAwEAAaMPMA0wCwYDVR0PBAQDAgQQMA0GCSqGSIb3DQEBCwUAA4IB\nAQB3fQZz2qNAo/wohPNaR2uAakLt25cKrsbgn3XwO+X+DRH4nqMSZkHdLGr82xD3\ni33BLSQwXzFecEN+CA8SlpNoIXHwk6D6V3uEBSjKemZtJFCJqe8d+5qt3GV50AKm\ntEt2Nc7B94TN8xB5EmZladnTJWcBgSuuz1hLXQQ02dJ3dDq8FMlyR70S2DTtuPu0\ni2/f6KtrlmmNsU24Aq+fCzEG43NqShOMeM5rDxLsSJCtjfMRwG8YeyNf6cCMSMxY\nAJfrTyj+AS8RtZQNGF7tX+exEWHOf1C9CBzHtKRClBRL6zDjlpPCIDwcMFi8NXva\niVclxIq3XdfqxiGBBEldkhgZ\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/pingfed/sp.encryption.key",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCn1JXIsAzwifSV\n8tTbMSn6sjny0FxSihoDSikS8ywFjuNxoEGK1eu0GgJ8uS74DmvNSkDl+CL4yctJ\n3f1azuoxvaU3TEfbxR09E7t1tUFLMjz0kKqSl8G9mQklzYIWA+YAazbZjsQDrNQM\n8eapiMwSeBdEZEYr3HW10nwVAS6Qp9TNvOXOLZOUhL6EYAXorCySQwe4ZspQNVev\n/gTfjem9zPmWRv/wk7zoySoJ8JDAC812z20FmtJKWzCwzM/Cq9qTgyym96xpnX+D\n+gPWgONZOi+HJU7DXXCu2cCdnxhe/VhsxOkS8gV9lEt4Dx1F7f1jEGV8lCzt3sYk\nw7EF1hX/AgMBAAECggEATD8qZWiGGGm0csNFrOdjGQALj6LVrrILK19v1aogX84Q\nyrhxzm9ti/8dDijbi9qRY0zOuyvGR5z1/HMb/Ttv7nUoMD05kEC3Dd5/FfTo2w7R\n3pIyzDKh1E9IdqIs7W+L+Li8zI4twzWriM4FaxQ5ElL4zxt3PcoEuDwOH0TQMOsy\nP2gLEhzzkFp7TRoKzR87sM6lXoERsGKh7XNWjjS15/w+XHMaDverOOALwWDbv32N\nUCdVSAGBx4Ic4mZuJv+e3MH2SAja0J6NLMzCMtrzmfcgVECykMnELi1XftZYbgD+\nKulSvHuamygS4KJppnAdly8950C8CxI7fp9QJV/8UQKBgQDUaT68z9e203L/XATr\nsa9CgZodWvjrLH7a2e5EvUPq8slmg2VqEYNjHzP4rCoOcLul6TwrlNInxqTIkIPR\nmRxBSrG24azfGRrOs34IMTXgqfMVVxbcSVK8OijHs94NTwYrRjMXeaAOnKjPH484\nDALrEoEGcrjXmDDKBV9rb+a5XQKBgQDKRVkUvCoILjsA3jG6qaKBwKSZBFla2o6x\nYxgOZdeSG2NEuMt74yRHjgV6iogpvw9i/FSY9TAaZsoX0L3I5LWRtwEi3iXtEC9X\nqFlS9EPr9encpdd2vu1O6aWXW4IlUWbu3ecdb5UAxu44ObUQS6HiXEfcK8vufF5l\nWyilXNerCwKBgAMYYYSo1rDgVe2orp2soiwq7U7+M2Bh7ptLz7AKvgGfdhXbVk/8\nX1jDbKN0BszdEa7yPiE4cvOHboFJsdINFB9TclGC6lz55a0banu+E9XpRBSMh1XA\nb8c0ZcG7OkIhY6qfxEDUUePEnqUeBZ1Ad45rX5vzcgQaQKPA/kn3gHo1AoGAU/05\nwSdk2KLBs1mQEq9PoEsqzbMFm3k3WScJnSjiu3ON48JMFDQ8I04wrjKJ2bPRIswe\nIKlnAP9/mSX/OETntArmeOD/pJFc5ywrcwukjH0/T3S5pEAhb+wK629++hn0AOm5\nhvqHR5xS3JvxuEN/g+vHlv/EnVGdLL8OgKOtlgMCgYBU/5WF/7dr89uYzjiBvedh\nHQCgwd+8aSs+raY5eTzJrJgqVbEMoxhco1GWzWYUjDVw88Y63k+fqIf1DQJFkWFi\n9T1nppVDeofoLDLTrh/2oTAHIM2QL6kWwoHiD7b/scF5z/rC21KqobqroAh2R0CP\nJ2waRoJgqT+P15Lq3PEcSA==\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "providertests/testdata/pingfed/sp.signing.cert",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPjCCAiagAwIBAgIJAKHPtM2MqZxXMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRgwFgYDVQQKEw9TQU1MIFRlc3Qg\nTm9wZS4xFzAVBgNVBAMTDnNhbWwudGVzdC5ub3BlMCAXDTE3MDgwODE3NDIyN1oY\nDzIxMTcwNzE1MTc0MjI3WjBVMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\ncm5pYTEYMBYGA1UEChMPU0FNTCBUZXN0IE5vcGUuMRcwFQYDVQQDEw5zYW1sLnRl\nc3Qubm9wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWw8EP/dSG0\nyy7cL2sQvcRqiTrsVCWzQ5SGgZNGbFJXq36pshZ21H7gFPI/K2n6m4I3vNMCQtRJ\nJwfjyrPbuXpVaTMcmg8J3PGUVzaab+dZ28EQ7V9HEnzcVbEgu87xY/SB6SCiJbdI\nCOZWlsgLUkgZS9CFkw5q6i29nL6nSZw/MmNr1hjJWvVvs1KwnGjB2aF6wYBQKKsY\nGxfZTJqKKBGXwIB5qnaWpVQgP6+H/84YCHLUEKk1hgh9AnR1xNVE6e64clcAE+O/\nHWDS6QW658TJsw18TapzVbiUGou4TlxJZqEuJv3BfPX3EMsnp0uRurMtwgyzI/ZP\nCCHxSMJs4xECAwEAAaMPMA0wCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IB\nAQBRwSaE1AnhZU/GzMngLSG6WsOp1NksoEHZsJoIKxUJWdMj9s0Pb/QSGg/W/2UU\nCREt6xBd9rh3jv17AwH6+IAvq/zQn36UtOE0/0v85Tp/I6t8v96cTjkEgDHBWSqw\nqfPvnrokKUpDRv1cxCL0qh4oW7selKkI0VpZOgpKm87oi6POQJ/KOMfcewlH+DXt\nzN3Es8Xp8BAfRRIEk7i3PqZSrhWUguQgCOAOvkb0tGuPDsFLLJJBML7B7aYrS1Kw\nEyuowZiDCDSk49KpGOmKYv2ocIG65gr7+am/l2NN+6cxuCf/o9H8UL8qm0LUJdgh\n5sVa0DJzIcuOjWsp2QxqTjr/\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "providertests/testdata/pingfed/sp.signing.key",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1sPBD/3UhtMsu\n3C9rEL3Eaok67FQls0OUhoGTRmxSV6t+qbIWdtR+4BTyPytp+puCN7zTAkLUSScH\n48qz27l6VWkzHJoPCdzxlFc2mm/nWdvBEO1fRxJ83FWxILvO8WP0gekgoiW3SAjm\nVpbIC1JIGUvQhZMOauotvZy+p0mcPzJja9YYyVr1b7NSsJxowdmhesGAUCirGBsX\n2UyaiigRl8CAeap2lqVUID+vh//OGAhy1BCpNYYIfQJ0dcTVROnuuHJXABPjvx1g\n0ukFuufEybMNfE2qc1W4lBqLuE5cSWahLib9wXz19xDLJ6dLkbqzLcIMsyP2Twgh\n8UjCbOMRAgMBAAECggEAA/py2FpQm0NVK5qAo0yDizh19sdT9FtfgHINhkcFeiwX\nQje/AYTqlDid3MwLTE/Dde94f/pNsk5Dv4V6W8PU5NvX6NmYefnST6va2QQ6rQsn\np6uSNwLcYcWFTtKTqi1Y7fKmQyOpxcCbCUgeFxVAYPnE0jUKikdHB2dedkI9d2FV\nZMSBAlNp5NQQTTojjdvfa3yxFqB/5Gh+tZZnnXm0BmtSHjWvXnpi62Nz8LHtKwtO\nqzS6650vhbC8GyuILeBkEa0Zvw2aUhRI0grCjWsbXJT66FrV+pIElOAQvyHP6hlX\nzC43ODdXSiFogVkF07umlqmopv4gDLgst8fjY61VfQKBgQDpVytmVrNXI9A2uDv/\n0RhCZpmBMgz8o3OQY0KRtZqupeVUGCTKk0zNqxsvUg31fa+DLYu+fYUDRVy58ST7\nvTiXjKYllWY5LAacsqtA/1E4BghOuYfU12tGJcOUM1TZNkQ/s2to/fDL0HTjYX6T\nSTqxoyg9zCnSYpF+u7gj91QuywKBgQDHVcUGiL69Tws3J6riKvFBtqrqcJaRu5OS\nt/U+kqM1m5/GOaBpZyropeusQgb/nZHIE/lEur7CHYcTi8PKF2lGxnqWOn31LVrc\nrM11r2pweDpCBBQqytNoE9vUzgfueXbPPgl+l1pTDA02u6EE45IHC1bPPbjDx29/\nxhfAykD+EwKBgQCrVA3Rvqc/vFQNWYj0dJrTZnIfophWh806nycpxaYlxjl0XaXl\n9/HUsWXsgNsu/XH5Z1/MJm2b0TocbSsyi+UZoXP89I1yPRk9xRJpTw5bjFJdO2y4\notNpViEcl/Qc6PODskGTfaFohU7OBa/ihUpLU/kgJuAuUaFy5HJ4NgnhsQKBgQCm\nq/K4SfKiu8r27TYXMizT83bp3AYqCJuWHDb1gQryshNgXaLhPyBDsyhhuju70/an\nQvw0GamTCbl+AGlPO1ANm7u4jWPwc2H8DoklE+196SldNaffOASYi7JON4+uOOW8\n13R84vTlZ7hMwYobWmUperO1STiKiuGSBwKpcvPw/QKBgBgqByvETHwewxnYoIsp\nyn3Fz1KM7MMnRil2sXVTdpS6lpF+iGs7iXc8sBnWKxFFQWnvvx6VvhXw6lCCnEQX\n3LH177jH+s0jVQgD+YZLnYDBF347tU7W/dPz5Df7hgmuQhOU/UV9ihm4udutRFbR\n4fd3j6wIcv2MZ0iDUVJ0UFYr\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/oktadev.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDPDCCAiQCCQDydJgOlszqbzANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJV\nUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEQ\nMA4GA1UEChMHSmFua3lDbzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDMxMjE5\nNDYzM1oXDTI3MTExOTE5NDYzM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh\nbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB0phbmt5\nQ28xEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMGvJpRTTasRUSPqcbqCG+ZnTAurnu0vVpIG9lzExnh11o/BGmzu7lB+\nyLHcEdwrKBBmpepDBPCYxpVajvuEhZdKFx/Fdy6j5mH3rrW0Bh/zd36CoUNjbbhH\nyTjeM7FN2yF3u9lcyubuvOzr3B3gX66IwJlU46+wzcQVhSOlMk2tXR+fIKQExFrO\nuK9tbX3JIBUqItpI+HnAow509CnM134svw8PTFLkR6/CcMqnDfDK1m993PyoC1Y+\nN4X9XkhSmEQoAlAHPI5LHrvuujM13nvtoVYvKYoj7ScgumkpWNEvX652LfXOnKYl\nkB8ZybuxmFfIkzedQrbJsyOhfL03cMECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA\neHwzqwnzGEkxjzSD47imXaTqtYyETZow7XwBc0ZaFS50qRFJUgKTAmKS1xQBP/qH\npStsROT35DUxJAE6NY1Kbq3ZbCuhGoSlY0L7VzVT5tpu4EY8+Dq/u2EjRmmhoL7U\nkskvIZ2n1DdERtd+YUMTeqYl9co43csZwDno/IKomeN5qaPc39IZjikJ+nUC6kPF\nKeu/3j9rgHNlRtocI6S1FdtFz9OZMQlpr0JbUt2T3xS/YoQJn6coDmJL5GTiiKM6\ncOe+Ur1VwzS1JEDbSS2TWWhzq8ojLdrotYLGd9JOsoQhElmz+tMfCFQUFLExinPA\nyy7YHlSiVX13QH2XTu/iQQ==\n-----END CERTIFICATE-----"
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_0",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZDczMWM3YTQ2NGMwODZmMDJjNzEiICBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMloiICBEZXN0aW5hdGlvbj0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIj48c2FtbDpJc3N1ZXIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfRXBmS2RGYjlzTHJlRGVld2JMdzBCUDRsbzZYV1h2cDgiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMi4xNzFaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjX0VwZktkRmI5c0xyZURlZXdiTHcwQlA0bG82WFdYdnA4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT4zS245NjlUam9taldsWm5MQ3pWeDc2Yk1jTjA9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkp2ZlJLU0ZmaTc3WDdzalZsbGZRYWtOQmJ6NDJWZHErdzk0YzA4OVd0OUFDdWhyZWZ4Q094TTNtN08xOTlOSisrMnZyd2FIZHd4TmtDNVdTWk5JZVRSMWg0VWZGamhKSkFWL3N4ak5jZU5CTDZybFFITVZlNlV1aU95L0Z6S21XTEZObmd2TjRJdXpuN3B0ZTNhcVBIeE9mSC8ycjhsTnBBNm9hOWhJRm1uNzJDL2FteVlSVWF1a3EzT1NOOE1SUTNBaGowZ1U3U1kzdzNXWkp1anlpaGphNHloMitEZnd5bjBUdGx6ZEJMK2dGMzFGOXBSUlZucW1UbTcwM3pRNTM1RGRGSjE4RjJXcU1yR3B0MjUxZEVIYUFidG1GVm0yOGNocElnZStBa0VpL0lMSVlKbXF3dEN6amMyY21GS0QvdEg4a3lTMnpwb0U1WEFVd0xlTENVUT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvWDUwOUNlcnRpZmljYXRlPjwvWDUwOURhdGE+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEyLjE3MVoiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTIuMTcxWiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEyLjE3MVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEyLjE3MVoiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+"
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_1",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfYjUyYjhhMjdhMmUwMWJiYTIyMzEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEyWiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX3czdWNOM3h4bTJEc3BEQkh5c1phQVNkVkRRREZxREJuIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTIuOTQ3WiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxMi45NDdaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjEyLjk0N1oiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxMi45NDdaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMi45NDdaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_10",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZTNlYjNjODQ4NjFhY2JjYjhiZmYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjFpTVhWS01QNUJKUEpFTWQzK2piY0NMZFV4aG1YeUNpZHJFeWIvL0E3MW89PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlpIK1NZQUNnY2dhSVdVbk9XanI1TU54SjZHRlM1UFdyQ1FybWMyQkxORDZDRXBHcTlCbDVIVHdZcXI2WjZyemszNzJsZmIzaWxydTloZ3dVZmZ5dDEwTlk0bC9WbEtKSFhYdjl4b081UFVKbmQwa1owTjZaQ3RXV2xsNTRlbEszNDllT0h5RFk4NnRUVXZGYUd6UlpIMkZyTXFhMWJKUWtGbXRpaXZkN29RRVMrMy9ZWXhEUGlnTXd5OVZ2RkxpeEw1R05UdTFaL3lWMnFxRU5oelVhY2g0RUVLdXRwc1NTZzFYVURTbWRBMm9BcW5FMlI2SXlPeUsrQVU2bDRrNjM2R01aczNYMU5INmdCcnUrWjMrYjBOdCtQRzAxMENjdVFPUlhUaEN1eWlxWUF1dERKeklGQXAwL1BVQ0xCR3pWR0ZtRTZJenRZVDM5Sk1WS21JT2t4dz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfSzA3ZDFyYklOVmVoS2NzRHBsMHFROHA2ODRzMFF2MVoiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy4wMzJaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE3LjAzMloiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucz48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy4wMzJaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_11",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNWUxNWJkYWI0OGZlNzFlODc4ZGUiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPmNXL1NxbkdQZElHdG12WTRxbUlxaWlMaFdHdzZ6RUpXWStFY0VrbG5QVGM9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkt3RHE3dEFid1ZWSEQrSzRNV2FadHJHYlUvdVZvZjdPWmxWQ29yeGZqVUl6ZE9HdnpJNmxzayt1M0NmR295Mi9yMzFCWXVNN0dUVytMdlF5WmJWcUlia0JuZjlwZThQbE15dHJuOG1oT0p5b2JwNnMwVWw2S0dFZllXRkVMS0FxK0dESzRyeldhOWc5Z1Nqb3pzZ3NOSHY3SVVzRjNrUnFkOHdZcy9pbUhQTkY5TEg5aGs4cHNzT1R6dXFnVE5MTUpvVTZBWVVveVNiL3RqOGh2djlDSGZXc2Zra2QxM0hDK3FmQ0tXZldyZ3lOS1AxZzRDSTRKOThNenlPRWs0MzJ6Uzh2ZFFvSk9NeEwwR3cra0NOeW9rRHhhdWs1aEx0Y2k5SmpWWWdkTGJRajNSTXg1Wnl0clZpNWlVUUhVVTdWNUZxU3B0ZC9xWHhuOENOL1RYNUZkZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfem5zVFU5dTVMQ0MxUnhGTEprdEVPazNzWnhtanRvSHciIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy4yMjlaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE3LjIyOVoiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjE5OTctMDktMjlUMDY6MTQ6MDAuMDAwWiIgTm90T25PckFmdGVyPSIyMDA0LTA3LTI1VDIyOjE4OjAwLjAwMFoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3LjIyOVoiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+"
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_12",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZGNiZDcyZmEwZjc2M2YyNWEwYTQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuNDEwWiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5hZG1pbkBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy40MTBaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE3LjQxMFoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy40MTBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy40MTBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_13",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZTZhMWFlZjE1N2ViMzQ0YjQzYjUiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX0YyWnZiaGxqV0tYdWpuYmx1c0Q3dXJZM0lrM1RqWWE1IiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuNTkyWiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI19GMlp2YmhsaldLWHVqbmJsdXNEN3VyWTNJazNUallhNSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+em5BcjNuUkk3aUtGckViQi81UTJjdWl4a1hBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5KRFkrVmp2RHF6dCtHTk85RjVHNGdpcC9hQXBPbEZidEM2S3NiNWhob3hDc2VGY0NobmM0OExiem5ZWCtpY09TZEthWHNvdElzdEh6K1p3T2pWU0FpS3dnN0N0emUwSyt6WE1ldDdFOVlveGlFNXdJZlV4Z3lVU1MyNjU3dGl0cjlodE1QVURNeUtMOGUrdHpKZWxScWVWa1Rld1RoQXlzYko1VWd4MjVNTFNmOVVLUmJmcUpGdHh6aDIzRGhGTjZEQzVnUnhrZlRPVGtsaW56Z1AzdVNyRHVQblUrN3BsOFVWNUFDR293eTJ5c3FKaXhJdGdFV1FYSldVRXVBamhUaUs0Z0s1YkxqZnd0cEF5YW1PYm14YklpeWhlaTNMR3JUVDFVaGRyUXdWVnVORmVJQ3l4ank2UVJ0TGR6c1lYRzhsakRnWVdtWXYzc2YxVVhqNUN5d0E9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5Q2VydGlmaWNhdGU+TUlJRFBEQ0NBaVFDQ1FEeWRKZ09sc3pxYnpBTkJna3Foa2lHOXcwQkFRVUZBREJnTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVFNQTRHQTFVRUNoTUhTbUZ1YTNsRGJ6RVNNQkFHQTFVRUF4TUpiRzlqWVd4b2IzTjBNQjRYRFRFME1ETXhNakU1TkRZek0xb1hEVEkzTVRFeE9URTVORFl6TTFvd1lERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RURBT0JnTlZCQW9UQjBwaGJtdDVRMjh4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUd2SnBSVFRhc1JVU1BxY2JxQ0crWm5UQXVybnUwdlZwSUc5bHpFeG5oMTFvL0JHbXp1N2xCK3lMSGNFZHdyS0JCbXBlcERCUENZeHBWYWp2dUVoWmRLRngvRmR5Nmo1bUgzcnJXMEJoL3pkMzZDb1VOamJiaEh5VGplTTdGTjJ5RjN1OWxjeXVidXZPenIzQjNnWDY2SXdKbFU0Nit3emNRVmhTT2xNazJ0WFIrZklLUUV4RnJPdUs5dGJYM0pJQlVxSXRwSStIbkFvdzUwOUNuTTEzNHN2dzhQVEZMa1I2L0NjTXFuRGZESzFtOTkzUHlvQzFZK040WDlYa2hTbUVRb0FsQUhQSTVMSHJ2dXVqTTEzbnZ0b1ZZdktZb2o3U2NndW1rcFdORXZYNjUyTGZYT25LWWxrQjhaeWJ1eG1GZklremVkUXJiSnN5T2hmTDAzY01FQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBZUh3enF3bnpHRWt4anpTRDQ3aW1YYVRxdFl5RVRab3c3WHdCYzBaYUZTNTBxUkZKVWdLVEFtS1MxeFFCUC9xSHBTdHNST1QzNURVeEpBRTZOWTFLYnEzWmJDdWhHb1NsWTBMN1Z6VlQ1dHB1NEVZOCtEcS91MkVqUm1taG9MN1Vrc2t2SVoybjFEZEVSdGQrWVVNVGVxWWw5Y280M2NzWndEbm8vSUtvbWVONXFhUGMzOUlaamlrSituVUM2a1BGS2V1LzNqOXJnSE5sUnRvY0k2UzFGZHRGejlPWk1RbHByMEpiVXQyVDN4Uy9Zb1FKbjZjb0RtSkw1R1RpaUtNNmNPZStVcjFWd3pTMUpFRGJTUzJUV1doenE4b2pMZHJvdFlMR2Q5Sk9zb1FoRWxteit0TWZDRlFVRkxFeGluUEF5eTdZSGxTaVZYMTNRSDJYVHUvaVFRPT08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5hZG1pbkBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy41OTJaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE3LjU5MloiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy41OTJaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy41OTJaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_14",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNzNlNTQzY2FkMjJkZGI0YWJjMDQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjRtaVNzZmxlbWlQbTJwOVd2M1VRTVR1aTl5YVhRUEpWaFlLNWEvVHJURzQ9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnZVbDh3YWNsc1daY2NnV292ZTl4OU5mRktWWFpkRUEwZ1JPcnEwb2ViVFNnKzhHUmQ2U0JXalhBaTd3N3pSem5SeUJHdDVZTkloSWsxd3JCTVkvZTBhWmdmYmUzNWpzUlZaMnlzK0piTXpteDlnYWlFaEpEWTR0djhqWVYyMXRDTHFwRE54Ti9CTEVFMEVlaTBBek4zUE1IVnU1TE1sZHZmYzQrOWtkbkNiSFZrSDU4a3VsZm9tZmJGY1VSREJ0eXlGZkJjeHE1eXg5NVFRMFFnSlRJbWZzUlJwdk82NVRQU01USjkrYXBVMzdxQ0dRc0VSaUx5ckZMMWJ3WlBVVjd1ZTdCV3A2OXpJMVJ1MG11MXA2TWt4RFVxRHNROEVLbGh3MEhnOEltZkJ5b1Era1lpQXhHQmZFVUdDa0ZudWxkQ1A5ZEo1RjlxaDNRZDRCL0VPdk1FQT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9IkZhaWx1cmUiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX2c4d0tOOWxFV1VnSElZNXlpb05hcldrNnFQMmY2TEFSIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuNzU4WiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy43NThaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE3Ljc1OFoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNy43NThaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNy43NThaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_15",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNGNhNTMwMTMzZWRiYzExZDc4ZTEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPmVuVi9KSllkdzd5cGJ3N1IwQU5oTmRzZ1lQUmJGYTd2Q3lTWmtKUDVNOGc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlNEemVZVmQxVU9jWUZrbEQwSE5EWStSc1JaVzNQdlJMQ2MwNW0xQ05XMWc2WHllWEk5QVNSN0hyMGxOZEt6dHRzclJQSUcxLytDVnE4OEZZdDYwZ0FSMVQrblZDaHVFVXI5VEdIdEQ1RE9QQm5DcWI4S3BBcFN5Y1JpVEFDeGdHVGw3Uy85OTIyRklOVmpodUhweXBLdWdqcm9KTFdFR1BVRkxLWDB0Ry91Z2sxOHcySmhhdDhFdGFXS29naVAzbTh4VUpCdkdLaU96ZWNMSWFMSkl0Z2NZSWpLdnJjckg2R1hHOVZVekwreXhiMWRLUUtodlJ6aEFBN1RpQlJqNEo1WHcweWJ6UVYrMExxUXFsODcxMkpqc3BPMVhqMG1HaTk3ODY5aHNLaVJBaWlCUkRoYkoxNmZJUHBCMkxtUjJwME82Y21MWHZxbDJEaFZsR1kxNWFZUT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6UmVxdWVzdGVyIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIFZlcnNpb249IjIuMCIgSUQ9Il9xcDNYYmk3cVZBRFJrRlBpQW8wVjdWVk5UTXNLc1pwMiIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE3Ljk0NFoiPjxzYW1sOklzc3Vlcj5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpJc3N1ZXI+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTcuOTQ0WiIgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNy45NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTcuOTQ0WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTcuOTQ0WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_16",
    "content": "xVhZc6rKFv4rlvvRSgARFStJXSYVARXBAV92MbTMNDLLr7+gSU6SSnKy9324VT50r/Hr1aubr31I9TCIJxuQxjBKQacKgyidXIWP3TyJJlBP3XQS6SFIJ5k5UShJnPTv0UmcwAyaMOh2ePax+3s4wABq9PvE6DQmRgNzCPpGt7MDSerC6LHbeDSGaZoDPkozPcoaEYqN7tBB81Ox4YQYTLDxsdthQZq5kZ5dvZwsiycIYhk6qRMn8z6yE+jfuxApMOR3i/G3qQeBoZt+9+mhnU+uKZI3q/h+EXqagqTN1X16zgUqPYwDcG/CEGn9Ed1MX4QPyJsct4TxRMn0LE/fzxhogc5OD3Lwffr0aj1RctMEadpFnm4Z3gedUC8g/2JZH3eg3SpMGohGwKtaQWiHTXIOgW2t0+XUS7xFUHjEDzbqHkNHx/c1/4sCKq7d7HSePHfd636XZXlf4vcwsZE+iqIISiKNgZW69q/uzQtYfHSCTw+MHsHIbZrAra8tI4HMgVaHCmyYuJkTfhESQzC0DXkHKvPOxAbRr7b2r3B+GOUdsCTV71JHx9pAG3ACCYhM0Nlu+Mfur3+v+NODmuhReoJJmL4Z/xkEEBUggDGw7tKXlbRofh7t87Igb6Gxrt0c0L8p0EtxbhGuh+Oph+IIoMKCrBxxNx6Nh6lwMPZ+mKHy4wPy1vIBeS1qM37bAq+7djNkKn5T9CtsXgB8jTOoPqPnlUMYdbhHfXzBBrAw1oR3FjChtHGxYIZHXJUym1jPWeUILcI5jLz5OBz7RDI6OVYfMQdjPteyoYuKq5QW5sfY66XbpAiMc6CMEstmbQfTqrPAHOaOl4dMqGYs7ZISObKWyQ7tb/wicLzejsLtZTbIKW7sL1kSS6sxpY6UmQxmpUhl3qlK1ocoQ/d93EuT0p6ufVu54KWMeLwjc4TL4J5zcJg9rEUkoHeRcHJUtU7sw5mhJCw/HtHABKrOg92OjIrpcYPM+zEt+NxePA2kkBtKkSaNTMLnK2RBM/KAxMfFMBqqJh7T9CxbizXCOP6lgMedgqtLjdnWcSFcTor9+Hgr+ptCPwjgctuBA4GSrJ7ptxHT3jyn5kxm4EnieXbNMgzlygwjsxdrYa+CtD4bNbWkbf/s+O6MLFGakrdTiqVtSU5LRtbYnSzPuHKx29acKtHcjMK2HENLgtyfpvr+WJghEWsqt5do+aqjK2m57U9znjtetD3h6YelZ9ScLFGDm68jzZVwmut4wDZyRaKpq5yqpIUxIz1tX0EDX6ISPTiwKodKrFRJHkcsWa2WMNjIeFxSuWqlvspKjeVEifJv+R2J2e2kiqupDW0vdzRlq4y/dIxZEBr4Itf3XDX1qO1NZ6rsrtG59MxsMGn9oNb644pjqdVND1UajR0jzAi5lXuUfJNLKrOvCq2twYysrbauCl+ysrYQ4JF3CnNJyRxNyxRr29yaavUyZJpx4zorFvFGVfV0s1XWZ9M4M7PeMVKp5iuSo8Uu5mdkUHNV5GAYROhZWOejgO5dxLnJWWUi0HQYg5il14xWxTvdK3LOOVrCtEKm1mXoEeEcT5I9SjtIbeFDBm6b+hvO/KJ6QBpNl/3LFM/JwLzkRl6s6gSncfswHPLlItgOhr2yNuWdo6wCye9nh03vxAtyU7BklQtkZhzwBU9vz3wW8715RMGybbJIwvBBWpTjtToV/c0QYUzpHLEnVsBCksTXF8hgWm85OJAH31FCToZUQM3XPCHOkyLPvcY9KjK40wpBg95IMe089OP9kisOQ6Ivng6rSNACnx4fL0ZehdMT79fAkhNjkV5WzklEcVPiGKrkKEr9pJepVVN7jgLzsj6XUT3j/MqrFXYwcsODrp4z7cKpR1iODiVtokd9qhDoeTNdbG1BpUJBwSqZXiPneaxk6Wal4gS7rRYUN1xqmGCc8aPB5M4MKoGGiqNdvVOJLM4HnDbusWck73PeJgwdKI62fuoX/LEfYazFbTKrp20lFZy1gDThADfTY8lGEOEFGIIlcdbXJk7yR8/1F71oywz99VQAOYJ7ZGLPl8GmYXv8UMGmVjatydVRkoM4QRfGNuureKUgGpQX0dCEbLgQiZnquoI0NFegt02wXVkr2IJjDUXpq/u9U5/H0BOthkBq4swiF6sUyg4XhHUvk07MtCmgyFVutKYul5E2DxR3d8Bwed4/qDniynJ7GX28aW6S2y2EvN5M/9xZz1RFyQ0PmNnzbNkQJ57tTJtPm559zaiwe+wqca2709V0kkdpDMwmN7C6T54egXsLgv+8YT7PROeW4H1uBkYnt43SErrbh/R7MmeGEwPoCUi6XwdqF95ZwmwVrRLqlIHkPWsbvWVtnU0DPXZBS+3+gGC/kNPP0n9QPeNsLCy3VactNBo0xQPfsMmf4n9hxbnltnSgeblkiWveYLzT/AEjfXX5MH8XHPmwqpd0WWNi5BloSTsIm7o+8/TqK0aLIQdJVEwHhHr31db9d+M790rJTdD9mLrTdtqfdHATzQ0oy0rad8fHaNcPfKeBNMkucRO2Sid6dFGb8bfd/t7/6aP0C8xci+T/C2HqJmnWDv8IxqKB8T+lFfW/yMrCHydFvmjP12OSOdE/PXud/vjNd7VujkIGquwTERM0T9CGsT99+0o1J2Zr14jfXKivJ/CTaJ/o3sneLBF5/3R+fVm//NHx9F8="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_2",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfMDg2Y2ZjMWVlMGJkYThhMDAzMTciIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEzWiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPkdyVG1tTGdZZ1Q3cVlSc2RoZlJsY1BhZ1RuMXZuUWsvYVdJaGd1elhEVzA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPko2dmZUSE4vQXN1MDljUFpSaEhjV09XdlBsbmZGeXFKcnpyWGZWUTJ2eThhZjlwUWpFaVB6L3JUOVVFcWc3TDlHZXB5Sk5xVmNpa3hROHpTUzlkTFhBWDB0WE1CcjJxQUNRQnZJbHRKSmxOeG1xYUtzQmYvdkpHU3kzNEIyVVB2WWhQVUNpMzBpMWcyNm04dEE0dXNaUFFlVFRzYlVIbyt2Rnh6Q1RCR0kzWTAzSTl5WEladHJPTlhna1F2Rk1oMldZc3VnUVpMR0cyRnZ4SlpaZDcraHFGUE1nT0V1ZWVqVUMvNk42MFBuaXc0K2Y3di9ZRjRyR01qZnVsT2J0YXI2Vk54YTkvZlRtUXRwZGxWSWhkWGdoN3dEcDdobzdvY1ExWk5VcDZTamdSNjRFYjNuVFVBR2JHY09PT0pNRWluWFlxV2xRazR3VGwzdzdVOW1kS0ZwQT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfcEZJRWo5U3hRZDFqSFdycHlwd1F2ZFNRSDFiYzFzSUUiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxMy4yMDdaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEzLjIwN1oiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTMuMjA3WiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjEzLjIwN1oiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjEzLjIwN1oiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+"
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_3",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfNjEzOGY0ODBjODRlNmUzZGZlZDEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPk5ZSmw3VUtJaHUyN01lbG5jZkZYQmJXM09lZm04L2pGZ2VLOUIrYzZzLzA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmpBbjlyME5PMHd3eUI4L0cwU2JyNlJIYkdXT2NrOGtESEFoeGJMN0E5bkxVS2ZmUGcwT2ZnZmVwbTkxUk5YdmpwRlptaTk4YjZZN1lNWEdUUDZFL3JUR0hCMVR0bEFOTmJvRzFlQ2ZhVVFFWDdBT2p1dGZER1FTdmtQajJENE1IK2xibWxhMlRaa3hPd015MElEMGJJRGQxaE5GcTFvbk1MUGVNdko0aDNVZ240TmE4QnBLL1RLNHpqekpab0tMakFUQ3cxZUtuTkxaREFVOXJaM1A4OTJSdHNDSHoxZDZISC9qQ1hidXJoV1FNZ2FZTzNkRFc1UVNWSnZQU3EzblpSVUFPS1dOWGMxeGlkeWhOZmpSMkp2KzU3Smt6WFBkd1BmS1Q0UnpIb2R1TElHVU95anFkYy94MDhySWROWC9Jdyt4U013cXJhaXFyMHlpRERaVjh3QT09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEdFRDQ0FwMmdBd0lCQWdJSkFKNjVWb3ZzM2JpUE1BMEdDU3FHU0liM0RRRUJCUVVBTUVVeEN6QUpCZ05WQkFZVEFrRlZNUk13RVFZRFZRUUlFd3BUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLRXhoSmJuUmxjbTVsZENCWGFXUm5hWFJ6SUZCMGVTQk1kR1F3SGhjTk1UVXdOREl5TURBME9URTVXaGNOTVRZd01URXlNREEwT1RFNVdqQkZNUXN3Q1FZRFZRUUdFd0pCVlRFVE1CRUdBMVVFQ0JNS1UyOXRaUzFUZEdGMFpURWhNQjhHQTFVRUNoTVlTVzUwWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeFpZNzFhSlVPbUtzV25HL1hYTmhOVFRERUIvTXoyT0RHS2YraGNKVVo2MlZBRmZlTENWMnFucGJWL2tQbmF0cVpEd21qSVBZQ1lIUitCb3NNSkVhRWVHeVlrUlk2Z0xJNFZhSEVFZkRiTEJWNWR3TXhYWSt4cFFJYkdEQm82L3lZeTRyRHdDNVFKaXZjSW1HVUt0M2FpODNBTnRpbnFKZGU4d1h6TFA2U2x1V3FmT3FiYUtxVHRIYmo2MGYrOE5yUzd2eDM3ZFF3WHZzS041TDlXSmlpZ0V1aTdrOWJLOFBwYmNHaDZoK0dJQmZFTUM0OGJYWi9uN2RnK04waFM2VDQwaTdlVmF3U0ppNmZabXFwdTNYbXo0RGd3ZjdLVk1EUFNUWWxzakVkS1dqeWQzbitKc0FpTUFMMGNHbG10dTB5aVNuYmF5OFBXYTRTblZVM1pjM3FRSURBUUFCbzRHbk1JR2tNQjBHQTFVZERnUVdCQlMwMy9kUjF6OWEzS084K3owUjhBRUZyNkJvempCMUJnTlZIU01FYmpCc2dCUzAzL2RSMXo5YTNLTzgrejBSOEFFRnI2Qm96cUZKcEVjd1JURUxNQWtHQTFVRUJoTUNRVlV4RXpBUkJnTlZCQWdUQ2xOdmJXVXRVM1JoZEdVeElUQWZCZ05WQkFvVEdFbHVkR1Z5Ym1WMElGZHBaR2RwZEhNZ1VIUjVJRXgwWklJSkFKNjVWb3ZzM2JpUE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUZyQWFqbmwwNHprTVd1Q2YyaWpNWjJUYXdoaTR5OWFuN1RIeVdybXVQYUVhWVYxbzFWSHFnMGIwTUM5S2pFd0c5ZnlZK01JazNBOE5BbG8wUnBFUmFJUHU2c1JxTUVqUDI0eXZZbEsvQ1F0NU1Id1YyZkRHa2xLWkVzTUY5a2t3ZGErSThaQk94bmVYeDFhdTdDWTZwaFB4S2ltMDd4UmNJZXBNVW9DSk9JUHFQWHoxQ2xZZlFmNXJyM0pxL1hCQkxhTnVMSHloMkQ3Q1MzVDFYenFCZlNYR1FxK0RwWWtmMG9RU0VCeXd1TG1ISTF0aGpSeVNjQ0RjWGxYd3JWa3IwMit2TzE0dW5EWG9YWU1RS01LdWN3MTFzYWRsUSsyMFF3WHVHQ0Fick9OY1BJQmd3bFF6aXRNcXpCSWs3TCsxbnBzRDRkVmRmV3hzeHFKSzZNWjNpQT08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX1hVYTREbVhUVFFEM2lyb01ab21YdVRSQWNVUmZDRDQwIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTUuNDcwWiI+PHNhbWw6SXNzdWVyPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNS40NzBaIiBSZWNpcGllbnQ9Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE3LTA0LTA0VDE2OjU0OjE1LjQ3MFoiIE5vdE9uT3JBZnRlcj0iMjAxNy0wNC0wNFQxNzo1NDoxNS40NzBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNS40NzBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_4",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfOGM1ZjQ0NDMyNmMwZjM3N2YzNzYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1WiIgRGVzdGluYXRpb249ImZha2UuaWRlbnRpZmllci5leGFtcGxlLmNvbSI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjFXTjBHQkFKVnVoTTE1dUdrWHZNMzg4Q0NKckwxWjcxSG0vNW9YVWdnTGs9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmprUkxSM0pJTlJGb3g1TldJYWRKN0dLR2tXMlprbTd3R0toQ1dFYWtUc2Y1M0NRcU9GVHNNQzMxVk9DcWtJdUIvYkpFdEo3UjFXaktmdTNuRkVlV3NHK3NKQkl4K1NzcUVCeDlWUmYxdEZiL0RIcGc4eWFKMlVUU0swRGpTZldpYy9oS0ZNQWZvVEpLdS8zZmppSlJIOW9hbUNlOUlEMjRLQWNGRlB0dWt6WEgyaElJTFZNdnJwKzBGREVVSFhuTW1RZlVnTmtxV2tCK0I2VS9EVjZLck44YVJiQ3duV2FMaTUzR09ldUx4Ykx3OWFSd0pTeFJFeHk3U1padkRhY2cwN0h3UWJkTCtKcFRSaTNoLzY3SGVoR1p1SVRGSUdjdnIydGpIdnUrRnRkRnQvU3U0UENjcVo1eGU3SVF4WFUvcjZqQjdkTmNhQmFYcWt4UExhRmNnZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfSnp4RDZzSkFpREx1cE9uRmVDT2lRWXJDMWhDUWt4SFciIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNS43NjNaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE1Ljc2M1oiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTUuNzYzWiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE1Ljc2M1oiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50IHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmlyc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+SmFuZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkRvZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1Ljc2M1oiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+"
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_5",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfODE0ZDRiYmNlMThmODQ4ODNjZjciIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE1WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmZha2UuaWRlbnRpZmllci5leGFtcGxlLmNvbTwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT5DUzZnZXc4UFlidjJiOXpwMWE0clJmOWVpVGVwYXRjZ2JlRDF0QmRNcEdnPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5oZ1FSbklkOURLelEwWWVTSE8wSE5BRmNXNjhJOWp6VUFnQnV5RkJXaXJrOEVsenVUREhJUmtpdW1YWUZ3THdsVjgzZ2dsdDFsM25ST3NydmRxb0YvWHk3dnp4QXpIK0ZQSjVtSVdLWlNkN0JSL0paeWJ6MGs2ektmSXlHZ2MyN0E2Nkd4b3docEZucURIMjFQWDBpVGhYVUFCMzNsSHNBVGprVlpzWjNJNitIT1RtWUwxaWZXQWQ2OTdMdnJ2bUExU1JQaG9vQkc5Slh1RWRTSE4rVDhBUlJpbmFGRkFxS2w4eis1RnlOZkdYR2tiT0V4RzRwV2NsK01FcVpTMS9yR2FvQ2Vrc1JhU3R5aU0zRTdjUzdNWnZDVEVPSTNuUkJHMHQzeCtqejhQaE9ta2krQVR2NHZwTGp3cGhTaWNpL1Y5UFFnRWsrbFc5TGpqa1hicjhGY1E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBEQ0NBaVFDQ1FEeWRKZ09sc3pxYnpBTkJna3Foa2lHOXcwQkFRVUZBREJnTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVFNQTRHQTFVRUNoTUhTbUZ1YTNsRGJ6RVNNQkFHQTFVRUF4TUpiRzlqWVd4b2IzTjBNQjRYRFRFME1ETXhNakU1TkRZek0xb1hEVEkzTVRFeE9URTVORFl6TTFvd1lERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RURBT0JnTlZCQW9UQjBwaGJtdDVRMjh4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUd2SnBSVFRhc1JVU1BxY2JxQ0crWm5UQXVybnUwdlZwSUc5bHpFeG5oMTFvL0JHbXp1N2xCK3lMSGNFZHdyS0JCbXBlcERCUENZeHBWYWp2dUVoWmRLRngvRmR5Nmo1bUgzcnJXMEJoL3pkMzZDb1VOamJiaEh5VGplTTdGTjJ5RjN1OWxjeXVidXZPenIzQjNnWDY2SXdKbFU0Nit3emNRVmhTT2xNazJ0WFIrZklLUUV4RnJPdUs5dGJYM0pJQlVxSXRwSStIbkFvdzUwOUNuTTEzNHN2dzhQVEZMa1I2L0NjTXFuRGZESzFtOTkzUHlvQzFZK040WDlYa2hTbUVRb0FsQUhQSTVMSHJ2dXVqTTEzbnZ0b1ZZdktZb2o3U2NndW1rcFdORXZYNjUyTGZYT25LWWxrQjhaeWJ1eG1GZklremVkUXJiSnN5T2hmTDAzY01FQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBZUh3enF3bnpHRWt4anpTRDQ3aW1YYVRxdFl5RVRab3c3WHdCYzBaYUZTNTBxUkZKVWdLVEFtS1MxeFFCUC9xSHBTdHNST1QzNURVeEpBRTZOWTFLYnEzWmJDdWhHb1NsWTBMN1Z6VlQ1dHB1NEVZOCtEcS91MkVqUm1taG9MN1Vrc2t2SVoybjFEZEVSdGQrWVVNVGVxWWw5Y280M2NzWndEbm8vSUtvbWVONXFhUGMzOUlaamlrSituVUM2a1BGS2V1LzNqOXJnSE5sUnRvY0k2UzFGZHRGejlPWk1RbHByMEpiVXQyVDN4Uy9Zb1FKbjZjb0RtSkw1R1RpaUtNNmNPZStVcjFWd3pTMUpFRGJTUzJUV1doenE4b2pMZHJvdFlMR2Q5Sk9zb1FoRWxteit0TWZDRlFVRkxFeGluUEF5eTdZSGxTaVZYMTNRSDJYVHUvaVFRPT08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbHA6U3RhdHVzPjxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWxwOlN0YXR1cz48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX2pRb1ExUDFlQlY5ZXdPVFZxRER0Z1V0VHlxU0R6SENyIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTUuOTUxWiI+PHNhbWw6SXNzdWVyPmZha2UuaWRlbnRpZmllci5leGFtcGxlLmNvbTwvc2FtbDpJc3N1ZXI+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTUuOTUxWiIgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNS45NTFaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTUuOTUxWiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTUuOTUxWiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_6",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfMzFmMmM3NmY0ZDhlNTRmZTRmNTYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPldBRnowNDF4dGc4OGk0M1o3U3BadFl0SWovWCtsc2xzbjBQNWxxMXlYMUk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlhBUTZlYmxtYlBEM1pua3huTUkwdldlbUt2a0VyZGd1UXN3T2V0OEpxZko1OW0zMUpqN3lYUGZFVHEvb1o2WlR1eTlSOGtOZzR3WGhYUDk1a2gzU2VqK3RzUUs1MVhlVlNjNHEwSkRTZzE1S2VKK2dHUEcyMTVvOFVnNUlUVlhkMlc1dVNZL3VhY2w4RU82TmZXVTk2ZTVtWXpsS2FkaU9VaU5BbnFHRHh5VzltZGlpY21PWVpMcDB6SHFzSTNqeE90Slp4c0VOaW5HaWJpZ2RwSjFwdEc5S0ExUzYvSndLa09BRnlaRXQvRkJVSGhOc0NtcW9lL01uYm1FeDZhT1dRM0FnRDRwdTk0M3BlVWIzS01QdERkVmI0eGNnT1hLRkl6d091YlpzdncvbGlibXZMb3pFaG1wVEJLZFluVEdjWUd6ZnVQc0hNK1hWdk5aY1ZUN1htZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfdUI1Tjd2WThQRHRiTGNmNU40QzdpTkhWbEdhcEI2dnMiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi4xODBaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE2LjE4MFoiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTYuMTgwWiIgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE2LjE4MFoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+ZmFrZS5pZGVudGlmaWVyLmV4YW1wbGUuY29tPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbCI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOmFueVR5cGUiPkphbmU8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iTGFzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5Eb2U8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi4xODBaIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6dW5zcGVjaWZpZWQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg=="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_7",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfZThhMTdkMWYyNzEwM2Y1OGQ1ZjYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkczpEaWdlc3RWYWx1ZT5KQjI5R1l2QjBIazhuQ0tLTm9oVDlHQXVyVld0S1BWZkdUMHdSNWlDYWxFPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5uY0dTTm9GVTBuTXpLdWF0RXZBT1Y5TWtkMGFHTXZobmFSS3dHRG1mRFg1UjMwNkcxVjhJZ0lsSHlWeWlGbTN6L0Frc004aHFIZEZuWUxvTDEwYldUZ2FmcEw3M2RwUnB6VFRPb2N0ZExjTE04L0QycVB1MWluR1FraE9WMVBBWlVpaC9FcGJaTWp4ZHNqV2JKd1pnVVNKaFdLVVZxUXRYWUJrWlV2WWhtdG9vZG5Cb3V0WDBSeWQ5eEhCcHZiU08zdkVmTm8wK1UzbXgvYjhYejZZQS9CdkZFU21QYWMzcTQzWDgzeW1TczRsNXgxVm4yNTVTMzhUZEJMbnUrdXJncGlUUXlLMlFMOXBhUTR2NUk2cm44WWliazQ1MGdMb1pUSHgvOTZRbFp6MytsYjJxdStkZ3k5a2FzbElEV0xlTkc0M2dObzZ5RlM2ZlY0c2svaGd6a0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFBEQ0NBaVFDQ1FEeWRKZ09sc3pxYnpBTkJna3Foa2lHOXcwQkFRVUZBREJnTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVFNQTRHQTFVRUNoTUhTbUZ1YTNsRGJ6RVNNQkFHQTFVRUF4TUpiRzlqWVd4b2IzTjBNQjRYRFRFME1ETXhNakU1TkRZek0xb1hEVEkzTVRFeE9URTVORFl6TTFvd1lERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHpZMjh4RURBT0JnTlZCQW9UQjBwaGJtdDVRMjh4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUd2SnBSVFRhc1JVU1BxY2JxQ0crWm5UQXVybnUwdlZwSUc5bHpFeG5oMTFvL0JHbXp1N2xCK3lMSGNFZHdyS0JCbXBlcERCUENZeHBWYWp2dUVoWmRLRngvRmR5Nmo1bUgzcnJXMEJoL3pkMzZDb1VOamJiaEh5VGplTTdGTjJ5RjN1OWxjeXVidXZPenIzQjNnWDY2SXdKbFU0Nit3emNRVmhTT2xNazJ0WFIrZklLUUV4RnJPdUs5dGJYM0pJQlVxSXRwSStIbkFvdzUwOUNuTTEzNHN2dzhQVEZMa1I2L0NjTXFuRGZESzFtOTkzUHlvQzFZK040WDlYa2hTbUVRb0FsQUhQSTVMSHJ2dXVqTTEzbnZ0b1ZZdktZb2o3U2NndW1rcFdORXZYNjUyTGZYT25LWWxrQjhaeWJ1eG1GZklremVkUXJiSnN5T2hmTDAzY01FQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBZUh3enF3bnpHRWt4anpTRDQ3aW1YYVRxdFl5RVRab3c3WHdCYzBaYUZTNTBxUkZKVWdLVEFtS1MxeFFCUC9xSHBTdHNST1QzNURVeEpBRTZOWTFLYnEzWmJDdWhHb1NsWTBMN1Z6VlQ1dHB1NEVZOCtEcS91MkVqUm1taG9MN1Vrc2t2SVoybjFEZEVSdGQrWVVNVGVxWWw5Y280M2NzWndEbm8vSUtvbWVONXFhUGMzOUlaamlrSituVUM2a1BGS2V1LzNqOXJnSE5sUnRvY0k2UzFGZHRGejlPWk1RbHByMEpiVXQyVDN4Uy9Zb1FKbjZjb0RtSkw1R1RpaUtNNmNPZStVcjFWd3pTMUpFRGJTUzJUV1doenE4b2pMZHJvdFlMR2Q5Sk9zb1FoRWxteit0TWZDRlFVRkxFeGluUEF5eTdZSGxTaVZYMTNRSDJYVHUvaVFRPT08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDpBc3NlcnRpb24geG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgVmVyc2lvbj0iMi4wIiBJRD0iX0xRYlRIc0R0bHRPa1hSS3Q2YWRZTTJJUnk0a1h0b2JTIiBJc3N1ZUluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuMzk5WiI+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTYuMzk5WiIgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNi4zOTlaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTYuMzk5WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuMzk5WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_8",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfN2I4ZmUwMWNmNjhhNTczMjBiMzIiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPjdGVncxRG5jTnBTR2pWNHhYeDhCWm9aNnNQREo0NWUxYjNRUU1iOWtseVE9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmF1cHFxL0d2Z0crZlBwczF0eGVGbzkrT1FURDdST08yRDVVbXh0KzFFem5FNkFodGFWLzZXWFViMjJCS0VpaCtuRVQ0Mm1GZWhXTWhoSDZ6SFMxMW9qZ2RQVjFwTDR0UUNJUGh4RXVrTFE2T1hYWU9XR0I1N2ZCY01tUlAyYzN1Z1FTZ3dCVkxGU0VYUzZLS0NNSmtDMmxSRGdFcktXb1ZldXZWekVaOWZyanV5cWNZekVuOXZzNHVJcUVXcHBSRW1HNTlZNHdZeDQ0cksrSXhmb0oycmhwalRPT2N3Q1lzUXRMVkQxZTJHdXd5S050RWEvQWF5SzljbnNCZ3hZYTU4YnpVaU9yeGdkWlE1TUdWNWR4cWlrbGNEeWRyaFRwYlQxY042OExmbVRCdm5TOWREclY2endyaklzbHlzZlF4bUZZWTR4TklaM1g2WFNNZ1A2enlYdz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfeVJ1N2dSWFN2UXJra2JlZXZreldUdTIzVGFrY2hGQzciIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi42MzZaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgUmVjaXBpZW50PSJodHRwOi8vZGJhOWE1ZmMubmdyb2suaW8vdjEvX3NhbWxfY2FsbGJhY2siLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNy0wNC0wNFQxNjo1NDoxNi42MzZaIiBOb3RPbk9yQWZ0ZXI9IjIwMTctMDQtMDRUMTc6NTQ6MTYuNjM2WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuNjM2WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4="
  },
  {
    "path": "providertests/testdata/saml.oktadev.com/response_9",
    "content": "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfMmQ4MDM0NmQyZmU4MGEzZjdjNDIiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE3LTA0LTA0VDE2OjU0OjE2WiIgRGVzdGluYXRpb249Imh0dHA6Ly9kYmE5YTVmYy5uZ3Jvay5pby92MS9fc2FtbF9jYWxsYmFjayI+PHNhbWw6SXNzdWVyIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly9leGFtcGxlLmNvbS9zYW1sL2Fjcy9leGFtcGxlPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPmpqM1ZOb2pRbzRoQnhFZVhiQW81ZG5EVU5GSjdieVNIYmpjK1Zwa1BDREk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkJFVVBxb3JZNGFPNG5wRExFYklYMmFNaytWOGZ6U0UxeWdSSFMzc2pJRVI3eUJkNURDNjQzY055V2RYa2FabDBUVTRjQXU4d1NuQlJxeVl1bVE0V3dtbXRDR3dueXhyS0RMaE81QXVNRjdHMjZpQ1Ftcm55ZE90a1BoeDRBNjhUNDRHL0FWWE91NWJLa1pMbEdZODRXYThEWVVFMFkrQlNBYzFNRnJ2eFp1cXpCSmhnVnFFd2FqQ0ljb3RYMStacFpTbWRVM2RjUE4zMU5yVmpOZ0MrTnBkTzJOdmFtYTU3QlVWWmZtY1g4RWNGa01Xb3d6blZnQ2VmVmQwRktydThTNldBZHhHdXFHZjV3VHdLa3RqKzZqWTIycURtUGlBdEU1eElTeHpFcDZKcnMrWU92RVNKYU0yVW9HMjdrMitxU0JrRHNEUHYrdnhSUU43UnlkMUNjZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEUERDQ0FpUUNDUUR5ZEpnT2xzenFiekFOQmdrcWhraUc5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFUU1BNEdBMVVFQ2hNSFNtRnVhM2xEYnpFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1CNFhEVEUwTURNeE1qRTVORFl6TTFvWERUSTNNVEV4T1RFNU5EWXpNMW93WURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJselkyOHhFREFPQmdOVkJBb1RCMHBoYm10NVEyOHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNR3ZKcFJUVGFzUlVTUHFjYnFDRytablRBdXJudTB2VnBJRzlsekV4bmgxMW8vQkdtenU3bEIreUxIY0Vkd3JLQkJtcGVwREJQQ1l4cFZhanZ1RWhaZEtGeC9GZHk2ajVtSDNyclcwQmgvemQzNkNvVU5qYmJoSHlUamVNN0ZOMnlGM3U5bGN5dWJ1dk96cjNCM2dYNjZJd0psVTQ2K3d6Y1FWaFNPbE1rMnRYUitmSUtRRXhGck91Szl0YlgzSklCVXFJdHBJK0huQW93NTA5Q25NMTM0c3Z3OFBURkxrUjYvQ2NNcW5EZkRLMW05OTNQeW9DMVkrTjRYOVhraFNtRVFvQWxBSFBJNUxIcnZ1dWpNMTNudnRvVll2S1lvajdTY2d1bWtwV05Fdlg2NTJMZlhPbktZbGtCOFp5YnV4bUZmSWt6ZWRRcmJKc3lPaGZMMDNjTUVDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFlSHd6cXduekdFa3hqelNENDdpbVhhVHF0WXlFVFpvdzdYd0JjMFphRlM1MHFSRkpVZ0tUQW1LUzF4UUJQL3FIcFN0c1JPVDM1RFV4SkFFNk5ZMUticTNaYkN1aEdvU2xZMEw3VnpWVDV0cHU0RVk4K0RxL3UyRWpSbW1ob0w3VWtza3ZJWjJuMURkRVJ0ZCtZVU1UZXFZbDljbzQzY3Nad0Ruby9JS29tZU41cWFQYzM5SVpqaWtKK25VQzZrUEZLZXUvM2o5cmdITmxSdG9jSTZTMUZkdEZ6OU9aTVFscHIwSmJVdDJUM3hTL1lvUUpuNmNvRG1KTDVHVGlpS002Y09lK1VyMVZ3elMxSkVEYlNTMlRXV2h6cThvakxkcm90WUxHZDlKT3NvUWhFbG16K3RNZkNGUVVGTEV4aW5QQXl5N1lIbFNpVlgxM1FIMlhUdS9pUVE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjwvZHM6U2lnbmF0dXJlPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczpzYW1sPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBWZXJzaW9uPSIyLjAiIElEPSJfS2NDYURJalV2VHlaWWFMOHZrbnM3VGRVbjgzckJZZ0QiIElzc3VlSW5zdGFudD0iMjAxNy0wNC0wNFQxNjo1NDoxNi44NTdaIj48c2FtbDpJc3N1ZXI+aHR0cDovL2V4YW1wbGUuY29tL3NhbWwvYWNzL2V4YW1wbGU8L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQiPmphbmUuZG9lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE3LTA0LTA0VDE3OjU0OjE2Ljg1N1oiIFJlY2lwaWVudD0iaHR0cDovL2RiYTlhNWZjLm5ncm9rLmlvL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTctMDQtMDRUMTY6NTQ6MTYuODU3WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwOi8vZXhhbXBsZS5jb20vc2FtbC9hY3MvZXhhbXBsZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48c2FtbDpBdHRyaWJ1dGUgTmFtZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+amFuZS5kb2VAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5qYW5lLmRvZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czphbnlUeXBlIj5KYW5lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9Ikxhc3ROYW1lIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6YW55VHlwZSI+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTctMDQtMDRUMTY6NTQ6MTYuODU3WiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOnVuc3BlY2lmaWVkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4="
  },
  {
    "path": "providertests/utils.go",
    "content": "// Copyright 2016 Russell Haering et al.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     https://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage providertests\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"encoding/pem\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/jonboulle/clockwork\"\n\t\"github.com/russellhaering/gosaml2\"\n\t\"github.com/russellhaering/gosaml2/types\"\n\t\"github.com/russellhaering/goxmldsig\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc scenarioIndexes(errs map[int]string, warns map[int]scenarioWarnings) (idxs []int) {\n\tfor idx, _ := range errs {\n\t\tidxs = append(idxs, idx)\n\t}\n\tfor idx, _ := range warns {\n\t\tidxs = append(idxs, idx)\n\t}\n\tsort.Ints(idxs)\n\treturn\n}\n\ntype scenarioWarnings struct {\n\tInvalidTime   bool\n\tNotInAudience bool\n}\n\nfunc scenarioErrorChecker(i int, scenarioErrors map[int]string) func(*testing.T, error) {\n\treturn func(t *testing.T, err error) {\n\t\tif msg, ok := scenarioErrors[i]; ok && msg != \"\" {\n\t\t\trequire.EqualError(t, err, msg, \"Expected error message\")\n\t\t} else {\n\t\t\trequire.NoError(t, err)\n\t\t}\n\t}\n}\n\nfunc scenarioWarningChecker(i int, scenarioWarns map[int]scenarioWarnings) func(*testing.T, *saml2.WarningInfo) {\n\treturn func(t *testing.T, warningInfo *saml2.WarningInfo) {\n\t\texpectedWarnings := scenarioWarns[i]\n\t\trequire.Equal(t, expectedWarnings.InvalidTime, warningInfo.InvalidTime, \"InvalidTime mismatch\")\n\t\trequire.Equal(t, expectedWarnings.NotInAudience, warningInfo.NotInAudience, \"NotInAudience mismatch\")\n\t}\n}\n\nfunc LoadXMLResponse(path string) string {\n\txml, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn base64.StdEncoding.EncodeToString(xml)\n}\n\nfunc LoadRawResponse(path string) string {\n\tdata, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn string(data)\n}\n\nfunc LoadKeyStore(certPath, keyPath string) (ks dsig.TLSCertKeyStore) {\n\tif certBytes, err := ioutil.ReadFile(certPath); err != nil {\n\t\tpanic(fmt.Errorf(\"%v: cannot read: %v\", certPath, err))\n\t} else if keyBytes, err := ioutil.ReadFile(keyPath); err != nil {\n\t\tpanic(fmt.Errorf(\"%v: cannot read: %v\", keyPath, err))\n\t} else if cert, err := tls.X509KeyPair(certBytes, keyBytes); err != nil {\n\t\tpanic(fmt.Errorf(\"%v/%v: cannot create key pair: %v\", certPath, keyPath, err))\n\t} else {\n\t\tks = dsig.TLSCertKeyStore(cert)\n\t}\n\treturn\n}\n\nfunc LoadCertificateStore(path string) dsig.X509CertificateStore {\n\tencoded, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tblock, _ := pem.Decode(encoded)\n\tif block == nil {\n\t\tpanic(\"no certificate block found\")\n\t}\n\n\tcert, err := x509.ParseCertificate(block.Bytes)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &dsig.MemoryX509CertificateStore{\n\t\tRoots: []*x509.Certificate{cert},\n\t}\n}\n\ntype ProviderTestScenario struct {\n\tScenarioName     string\n\tResponse         string\n\tServiceProvider  *saml2.SAMLServiceProvider\n\tCheckError       func(*testing.T, error)\n\tCheckWarningInfo func(*testing.T, *saml2.WarningInfo)\n}\n\nfunc getAtTime(idx int, scenarioAtTimes map[int]string) (atTime time.Time) {\n\tif strAtTime, ok := scenarioAtTimes[idx]; ok && strAtTime != \"\" {\n\t\tif atm, err := time.Parse(time.RFC3339, strAtTime); err == nil {\n\t\t\treturn atm\n\t\t}\n\t}\n\treturn // zero time\n}\n\nfunc spAtTime(template *saml2.SAMLServiceProvider, atTime time.Time, rawResp string) *saml2.SAMLServiceProvider {\n\tresp := &types.Response{}\n\tif rawResp == \"\" {\n\t\tpanic(fmt.Errorf(\"empty rawResp\"))\n\t}\n\tvar respBytes []byte\n\tvar err error\n\tif respBytes, err = base64.StdEncoding.DecodeString(rawResp); err != nil {\n\t\trespBytes = []byte(rawResp)\n\t}\n\tif err := xml.Unmarshal(respBytes, resp); err != nil {\n\t\tpanic(fmt.Errorf(\"cannot parse Response XML: %v\", err))\n\t}\n\n\tvar sp saml2.SAMLServiceProvider\n\tsp = *template // copy most fields template, we only set the clock below\n\tif atTime.IsZero() {\n\t\t// Prefer more official Assertion IssueInstant over Response IssueIntant\n\t\t// (Assertion will be signed, either individually or as part of Response)\n\t\tif len(resp.Assertions) > 0 && !resp.Assertions[0].IssueInstant.IsZero() {\n\t\t\tatTime = resp.Assertions[0].IssueInstant\n\t\t} else if !resp.IssueInstant.IsZero() {\n\t\t\tatTime = resp.IssueInstant\n\t\t} else {\n\t\t\tpanic(fmt.Errorf(\"could not determine atTime\"))\n\t\t}\n\t}\n\tsp.Clock = dsig.NewFakeClock(clockwork.NewFakeClockAt(atTime))\n\treturn &sp\n}\n"
  },
  {
    "path": "retrieve_assertion.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport \"fmt\"\n\n//ErrMissingElement is the error type that indicates an element and/or attribute is\n//missing. It provides a structured error that can be more appropriately acted\n//upon.\ntype ErrMissingElement struct {\n\tTag, Attribute string\n}\n\ntype ErrVerification struct {\n\tCause error\n}\n\nfunc (e ErrVerification) Error() string {\n\treturn fmt.Sprintf(\"error validating response: %s\", e.Cause.Error())\n}\n\n//ErrMissingAssertion indicates that an appropriate assertion element could not\n//be found in the SAML Response\nvar (\n\tErrMissingAssertion = ErrMissingElement{Tag: AssertionTag}\n)\n\nfunc (e ErrMissingElement) Error() string {\n\tif e.Attribute != \"\" {\n\t\treturn fmt.Sprintf(\"missing %s attribute on %s element\", e.Attribute, e.Tag)\n\t}\n\treturn fmt.Sprintf(\"missing %s element\", e.Tag)\n}\n\n//RetrieveAssertionInfo takes an encoded response and returns the AssertionInfo\n//contained, or an error message if an error has been encountered.\nfunc (sp *SAMLServiceProvider) RetrieveAssertionInfo(encodedResponse string) (*AssertionInfo, error) {\n\tassertionInfo := &AssertionInfo{\n\t\tValues: make(Values),\n\t}\n\n\tresponse, err := sp.ValidateEncodedResponse(encodedResponse)\n\tif err != nil {\n\t\treturn nil, ErrVerification{Cause: err}\n\t}\n\n\t// TODO: Support multiple assertions\n\tif len(response.Assertions) == 0 {\n\t\treturn nil, ErrMissingAssertion\n\t}\n\n\tassertion := response.Assertions[0]\n\tassertionInfo.Assertions = response.Assertions\n\tassertionInfo.ResponseSignatureValidated = response.SignatureValidated\n\n\twarningInfo, err := sp.VerifyAssertionConditions(&assertion)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t//Get the NameID\n\tsubject := assertion.Subject\n\tif subject == nil {\n\t\treturn nil, ErrMissingElement{Tag: SubjectTag}\n\t}\n\n\tnameID := subject.NameID\n\tif nameID == nil {\n\t\treturn nil, ErrMissingElement{Tag: NameIdTag}\n\t}\n\n\tassertionInfo.NameID = nameID.Value\n\n\t//Get the actual assertion attributes\n\tattributeStatement := assertion.AttributeStatement\n\tif attributeStatement == nil && !sp.AllowMissingAttributes {\n\t\treturn nil, ErrMissingElement{Tag: AttributeStatementTag}\n\t}\n\n\tif attributeStatement != nil {\n\t\tfor _, attribute := range attributeStatement.Attributes {\n\t\t\tassertionInfo.Values[attribute.Name] = attribute\n\t\t}\n\t}\n\n\tif assertion.AuthnStatement != nil {\n\t\tif assertion.AuthnStatement.AuthnInstant != nil {\n\t\t\tassertionInfo.AuthnInstant = assertion.AuthnStatement.AuthnInstant\n\t\t}\n\t\tif assertion.AuthnStatement.SessionNotOnOrAfter != nil {\n\t\t\tassertionInfo.SessionNotOnOrAfter = assertion.AuthnStatement.SessionNotOnOrAfter\n\t\t}\n\n\t\tassertionInfo.SessionIndex = assertion.AuthnStatement.SessionIndex\n\t}\n\n\tassertionInfo.WarningInfo = warningInfo\n\treturn assertionInfo, nil\n}\n"
  },
  {
    "path": "run_test.sh",
    "content": "#!/bin/bash\ncd `dirname $0`\nDIRS=`git grep -l 'func Test' | xargs dirname | sort -u`\nfor DIR in $DIRS\ndo\n\techo\n\techo \"dir: $DIR\"\n\techo \"======================================\"\n\tpushd $DIR >/dev/null\n\tgo test -v || exit 1\n\tpopd >/dev/null\ndone\n"
  },
  {
    "path": "s2example/demo.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"io/ioutil\"\n\n\t\"encoding/base64\"\n\t\"encoding/xml\"\n\n\tsaml2 \"github.com/russellhaering/gosaml2\"\n\t\"github.com/russellhaering/gosaml2/types\"\n\tdsig \"github.com/russellhaering/goxmldsig\"\n)\n\nfunc main() {\n\tres, err := http.Get(\"http://idp.oktadev.com/metadata\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\trawMetadata, err := ioutil.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tmetadata := &types.EntityDescriptor{}\n\terr = xml.Unmarshal(rawMetadata, metadata)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tcertStore := dsig.MemoryX509CertificateStore{\n\t\tRoots: []*x509.Certificate{},\n\t}\n\n\tfor _, kd := range metadata.IDPSSODescriptor.KeyDescriptors {\n\t\tfor idx, xcert := range kd.KeyInfo.X509Data.X509Certificates {\n\t\t\tif xcert.Data == \"\" {\n\t\t\t\tpanic(fmt.Errorf(\"metadata certificate(%d) must not be empty\", idx))\n\t\t\t}\n\t\t\tcertData, err := base64.StdEncoding.DecodeString(xcert.Data)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\n\t\t\tidpCert, err := x509.ParseCertificate(certData)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\n\t\t\tcertStore.Roots = append(certStore.Roots, idpCert)\n\t\t}\n\t}\n\n\t// We sign the AuthnRequest with a random key because Okta doesn't seem\n\t// to verify these.\n\trandomKeyStore := dsig.RandomKeyStoreForTest()\n\n\tsp := &saml2.SAMLServiceProvider{\n\t\tIdentityProviderSSOURL:      metadata.IDPSSODescriptor.SingleSignOnServices[0].Location,\n\t\tIdentityProviderIssuer:      metadata.EntityID,\n\t\tServiceProviderIssuer:       \"http://example.com/saml/acs/example\",\n\t\tAssertionConsumerServiceURL: \"http://localhost:8080/v1/_saml_callback\",\n\t\tSignAuthnRequests:           true,\n\t\tAudienceURI:                 \"http://example.com/saml/acs/example\",\n\t\tIDPCertificateStore:         &certStore,\n\t\tSPKeyStore:                  randomKeyStore,\n\t}\n\n\thttp.HandleFunc(\"/v1/_saml_callback\", func(rw http.ResponseWriter, req *http.Request) {\n\t\terr := req.ParseForm()\n\t\tif err != nil {\n\t\t\trw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tassertionInfo, err := sp.RetrieveAssertionInfo(req.FormValue(\"SAMLResponse\"))\n\t\tif err != nil {\n\t\t\trw.WriteHeader(http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tif assertionInfo.WarningInfo.InvalidTime {\n\t\t\trw.WriteHeader(http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tif assertionInfo.WarningInfo.NotInAudience {\n\t\t\trw.WriteHeader(http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tfmt.Fprintf(rw, \"NameID: %s\\n\", assertionInfo.NameID)\n\n\t\tfmt.Fprintf(rw, \"Assertions:\\n\")\n\n\t\tfor key, val := range assertionInfo.Values {\n\t\t\tfmt.Fprintf(rw, \"  %s: %+v\\n\", key, val)\n\t\t}\n\n\t\tfmt.Fprintf(rw, \"\\n\")\n\n\t\tfmt.Fprintf(rw, \"Warnings:\\n\")\n\t\tfmt.Fprintf(rw, \"%+v\\n\", assertionInfo.WarningInfo)\n\t})\n\n\tprintln(\"Visit this URL To Authenticate:\")\n\tauthURL, err := sp.BuildAuthURL(\"\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tprintln(authURL)\n\n\tprintln(\"Supply:\")\n\tfmt.Printf(\"  SP ACS URL      : %s\\n\", sp.AssertionConsumerServiceURL)\n\n\terr = http.ListenAndServe(\":8080\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": "saml.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"crypto\"\n\t\"encoding/base64\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/russellhaering/gosaml2/types\"\n\tdsig \"github.com/russellhaering/goxmldsig\"\n\tdsigtypes \"github.com/russellhaering/goxmldsig/types\"\n)\n\ntype ErrSaml struct {\n\tMessage string\n\tSystem  error\n}\n\nfunc (serr ErrSaml) Error() string {\n\tif serr.Message != \"\" {\n\t\treturn serr.Message\n\t}\n\treturn \"SAML error\"\n}\n\ntype SAMLServiceProvider struct {\n\tIdentityProviderSSOURL     string\n\tIdentityProviderSSOBinding string\n\tIdentityProviderSLOURL     string\n\tIdentityProviderSLOBinding string\n\tIdentityProviderIssuer     string\n\n\tAssertionConsumerServiceURL string\n\tServiceProviderSLOURL       string\n\tServiceProviderIssuer       string\n\n\tSignAuthnRequests              bool\n\tSignAuthnRequestsAlgorithm     string\n\tSignAuthnRequestsCanonicalizer dsig.Canonicalizer\n\n\t// ForceAuthn attribute in authentication request forces the identity provider to\n\t// re-authenticate the presenter directly rather than rely on a previous security context.\n\t// NOTE: If both ForceAuthn and IsPassive are \"true\", the identity provider MUST NOT freshly\n\t// authenticate the presenter unless the constraints of IsPassive can be met.\n\tForceAuthn bool\n\t// IsPassive attribute in authentication request requires that the identity provider and the\n\t// user agent itself MUST NOT visibly take control of the user interface from the requester\n\t// and interact with the presenter in a noticeable fashion.\n\tIsPassive bool\n\t// RequestedAuthnContext allows service providers to require that the identity\n\t// provider use specific authentication mechanisms. Leaving this unset will\n\t// permit the identity provider to choose the auth method. To maximize compatibility\n\t// with identity providers it is recommended to leave this unset.\n\tRequestedAuthnContext   *RequestedAuthnContext\n\tAudienceURI             string\n\tIDPCertificateStore     dsig.X509CertificateStore\n\tNameIdFormat            string\n\tValidateEncryptionCert  bool\n\tSkipSignatureValidation bool\n\tAllowMissingAttributes  bool\n\tClock                   *dsig.Clock\n\n\t// Required encryption key and default signing key.\n\t// Deprecated: Use SetSPKeyStore instead of setting or reading this field.\n\tSPKeyStore dsig.X509KeyStore\n\n\t// Optional signing key.\n\t// Deprecated: Use SetSPSigningKeyStore instead of setting or reading this field.\n\tSPSigningKeyStore dsig.X509KeyStore\n\n\tspKeyStoreOverride        *KeyStore // When set via SetSPKeyStore, this field is used instead of SPKeyStore\n\tspSigningKeyStoreOverride *KeyStore // When set via SetSPSigningKeyStore, this field is used instead of SPSigningKeyStore\n\n\t// MaximumDecompressedBodySize is the maximum size to which a compressed\n\t// SAML document will be decompressed. If a compresed document is exceeds\n\t// this size during decompression an error will be returned.\n\tMaximumDecompressedBodySize int64\n\n\tsigningContextMu sync.RWMutex\n\tsigningContext   *dsig.SigningContext\n}\n\n// SetSPKeyStore sets the encryption key to be used.\n// It is required to either call this method (recommended) or\n// set SPKeyStore directly (deprecated).\nfunc (sp *SAMLServiceProvider) SetSPKeyStore(ks *KeyStore) error {\n\tif ks != nil && ks.Signer == nil {\n\t\treturn ErrSaml{Message: \"SP key store signer can't be nil\"}\n\t}\n\tsp.spKeyStoreOverride = ks\n\treturn nil\n}\n\n// SetSPSigningKeyStore sets the signing key to be used.\nfunc (sp *SAMLServiceProvider) SetSPSigningKeyStore(ks *KeyStore) error {\n\tif ks != nil && ks.Signer == nil {\n\t\treturn ErrSaml{Message: \"SP signing key store signer can't be nil\"}\n\t}\n\tsp.spSigningKeyStoreOverride = ks\n\treturn nil\n}\n\ntype KeyStore struct {\n\tSigner crypto.Signer\n\tCert   []byte\n}\n\n// RequestedAuthnContext controls which authentication mechanisms are requested of\n// the identity provider. It is generally sufficient to omit this and let the\n// identity provider select an authentication mechansim.\ntype RequestedAuthnContext struct {\n\t// The RequestedAuthnContext comparison policy to use. See the section 3.3.2.2.1\n\t// of the SAML 2.0 specification for details. Constants named AuthnPolicyMatch*\n\t// contain standardized values.\n\tComparison string\n\n\t// Contexts will be passed as AuthnContextClassRefs. For example, to force password\n\t// authentication on some identity providers, Contexts should have a value of\n\t// []string{AuthnContextPasswordProtectedTransport}, and Comparison should have a\n\t// value of AuthnPolicyMatchExact.\n\tContexts []string\n}\n\nfunc (sp *SAMLServiceProvider) Metadata() (*types.EntityDescriptor, error) {\n\tkeyDescriptors := make([]types.KeyDescriptor, 0, 2)\n\tif sp.GetSigningKey() != nil {\n\t\tsigningCertBytes, err := sp.GetSigningCertBytes()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tkeyDescriptors = append(keyDescriptors, types.KeyDescriptor{\n\t\t\tUse: \"signing\",\n\t\t\tKeyInfo: dsigtypes.KeyInfo{\n\t\t\t\tX509Data: dsigtypes.X509Data{\n\t\t\t\t\tX509Certificates: []dsigtypes.X509Certificate{dsigtypes.X509Certificate{\n\t\t\t\t\t\tData: base64.StdEncoding.EncodeToString(signingCertBytes),\n\t\t\t\t\t}},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n\n\tencryptionCertBytes, err := sp.GetEncryptionCertBytes()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif encryptionCertBytes != nil {\n\t\tkeyDescriptors = append(keyDescriptors, types.KeyDescriptor{\n\t\t\tUse: \"encryption\",\n\t\t\tKeyInfo: dsigtypes.KeyInfo{\n\t\t\t\tX509Data: dsigtypes.X509Data{\n\t\t\t\t\tX509Certificates: []dsigtypes.X509Certificate{{\n\t\t\t\t\t\tData: base64.StdEncoding.EncodeToString(encryptionCertBytes),\n\t\t\t\t\t}},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionMethods: []types.EncryptionMethod{\n\t\t\t\t{Algorithm: types.MethodAES128GCM},\n\t\t\t\t{Algorithm: types.MethodAES192GCM},\n\t\t\t\t{Algorithm: types.MethodAES256GCM},\n\t\t\t\t{Algorithm: types.MethodAES128CBC},\n\t\t\t\t{Algorithm: types.MethodAES256CBC},\n\t\t\t},\n\t\t})\n\t}\n\treturn &types.EntityDescriptor{\n\t\tValidUntil: sp.Clock.Now().UTC().Add(time.Hour * 24 * 7), // 7 days\n\t\tEntityID:   sp.ServiceProviderIssuer,\n\t\tSPSSODescriptor: &types.SPSSODescriptor{\n\t\t\tAuthnRequestsSigned:        sp.SignAuthnRequests,\n\t\t\tWantAssertionsSigned:       !sp.SkipSignatureValidation,\n\t\t\tProtocolSupportEnumeration: SAMLProtocolNamespace,\n\t\t\tKeyDescriptors:             keyDescriptors,\n\t\t\tAssertionConsumerServices: []types.IndexedEndpoint{{\n\t\t\t\tBinding:  BindingHttpPost,\n\t\t\t\tLocation: sp.AssertionConsumerServiceURL,\n\t\t\t\tIndex:    1,\n\t\t\t}},\n\t\t},\n\t}, nil\n}\n\nfunc (sp *SAMLServiceProvider) MetadataWithSLO(validityHours int64) (*types.EntityDescriptor, error) {\n\tsigningCertBytes, err := sp.GetSigningCertBytes()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tencryptionCertBytes, err := sp.GetEncryptionCertBytes()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif validityHours <= 0 {\n\t\t// By default let's keep it to 7 days.\n\t\tvalidityHours = int64(time.Hour * 24 * 7)\n\t}\n\n\treturn &types.EntityDescriptor{\n\t\tValidUntil: sp.Clock.Now().UTC().Add(time.Duration(validityHours)), // default 7 days\n\t\tEntityID:   sp.ServiceProviderIssuer,\n\t\tSPSSODescriptor: &types.SPSSODescriptor{\n\t\t\tAuthnRequestsSigned:        sp.SignAuthnRequests,\n\t\t\tWantAssertionsSigned:       !sp.SkipSignatureValidation,\n\t\t\tProtocolSupportEnumeration: SAMLProtocolNamespace,\n\t\t\tKeyDescriptors: []types.KeyDescriptor{\n\t\t\t\t{\n\t\t\t\t\tUse: \"signing\",\n\t\t\t\t\tKeyInfo: dsigtypes.KeyInfo{\n\t\t\t\t\t\tX509Data: dsigtypes.X509Data{\n\t\t\t\t\t\t\tX509Certificates: []dsigtypes.X509Certificate{{\n\t\t\t\t\t\t\t\tData: base64.StdEncoding.EncodeToString(signingCertBytes),\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tUse: \"encryption\",\n\t\t\t\t\tKeyInfo: dsigtypes.KeyInfo{\n\t\t\t\t\t\tX509Data: dsigtypes.X509Data{\n\t\t\t\t\t\t\tX509Certificates: []dsigtypes.X509Certificate{{\n\t\t\t\t\t\t\t\tData: base64.StdEncoding.EncodeToString(encryptionCertBytes),\n\t\t\t\t\t\t\t}},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tEncryptionMethods: []types.EncryptionMethod{\n\t\t\t\t\t\t{Algorithm: types.MethodAES128GCM, DigestMethod: nil},\n\t\t\t\t\t\t{Algorithm: types.MethodAES192GCM, DigestMethod: nil},\n\t\t\t\t\t\t{Algorithm: types.MethodAES256GCM, DigestMethod: nil},\n\t\t\t\t\t\t{Algorithm: types.MethodAES128CBC, DigestMethod: nil},\n\t\t\t\t\t\t{Algorithm: types.MethodAES256CBC, DigestMethod: nil},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAssertionConsumerServices: []types.IndexedEndpoint{{\n\t\t\t\tBinding:  BindingHttpPost,\n\t\t\t\tLocation: sp.AssertionConsumerServiceURL,\n\t\t\t\tIndex:    1,\n\t\t\t}},\n\t\t\tSingleLogoutServices: []types.Endpoint{{\n\t\t\t\tBinding:  BindingHttpPost,\n\t\t\t\tLocation: sp.ServiceProviderSLOURL,\n\t\t\t}},\n\t\t},\n\t}, nil\n}\n\n// Deprecated: This method won't return the correct value if SetSPKeyStore is used.\nfunc (sp *SAMLServiceProvider) GetEncryptionKey() dsig.X509KeyStore {\n\treturn sp.SPKeyStore\n}\n\n// Deprecated: This method won't return the correct value if SetSPSigningKeyStore is used.\nfunc (sp *SAMLServiceProvider) GetSigningKey() dsig.X509KeyStore {\n\tif sp.SPSigningKeyStore == nil {\n\t\treturn sp.GetEncryptionKey() // Default is signing key is same as encryption key\n\t}\n\treturn sp.SPSigningKeyStore\n}\n\nfunc (sp *SAMLServiceProvider) getEncryptionCert() ([]byte, error) {\n\tif sp.spKeyStoreOverride != nil {\n\t\treturn sp.spKeyStoreOverride.Cert, nil\n\t}\n\tif sp.SPKeyStore != nil {\n\t\t_, cert, err := sp.SPKeyStore.GetKeyPair()\n\t\treturn cert, err\n\t}\n\treturn nil, nil\n}\n\nfunc (sp *SAMLServiceProvider) GetEncryptionCertBytes() ([]byte, error) {\n\tcert, err := sp.getEncryptionCert()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(cert) < 1 {\n\t\treturn nil, ErrSaml{Message: \"empty SP encryption certificate\"}\n\t}\n\treturn cert, nil\n}\n\nfunc (sp *SAMLServiceProvider) getSigningCert() ([]byte, error) {\n\tif sp.spSigningKeyStoreOverride != nil {\n\t\treturn sp.spSigningKeyStoreOverride.Cert, nil\n\t}\n\tif sp.SPSigningKeyStore != nil {\n\t\t_, cert, err := sp.SPSigningKeyStore.GetKeyPair()\n\t\treturn cert, err\n\t}\n\treturn sp.getEncryptionCert()\n}\n\nfunc (sp *SAMLServiceProvider) GetSigningCertBytes() ([]byte, error) {\n\tcert, err := sp.getSigningCert()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(cert) < 1 {\n\t\treturn nil, ErrSaml{Message: \"empty SP signing certificate\"}\n\t}\n\treturn cert, nil\n}\n\nfunc (sp *SAMLServiceProvider) getSignerCert() (crypto.Signer, []byte, error) {\n\tif s := sp.spSigningKeyStoreOverride; s != nil {\n\t\treturn s.Signer, s.Cert, nil\n\t}\n\tif s := sp.SPSigningKeyStore; s != nil {\n\t\treturn s.GetKeyPair()\n\t}\n\treturn nil, nil, nil\n}\n\nfunc (sp *SAMLServiceProvider) SigningContext() *dsig.SigningContext {\n\tsp.signingContextMu.RLock()\n\tsigningContext := sp.signingContext\n\tsp.signingContextMu.RUnlock()\n\n\tif signingContext != nil {\n\t\treturn signingContext\n\t}\n\n\tsp.signingContextMu.Lock()\n\tdefer sp.signingContextMu.Unlock()\n\n\tsigning := sp.spSigningKeyStoreOverride\n\tif signing == nil {\n\t\tsigning = sp.spKeyStoreOverride\n\t}\n\tvar err error\n\tif signing != nil {\n\t\tsp.signingContext, err = dsig.NewSigningContext(signing.Signer, [][]byte{signing.Cert})\n\t\tif err != nil {\n\t\t\t// Ideally this function should return the error, but updating the function\n\t\t\t// signature would be backward incompatible. Returning nil avoids the previous\n\t\t\t// panic while preserving the existing API contract. In practice, this error\n\t\t\t// should never happen because NewSigningContext only errors when passed a nil\n\t\t\t// signer, and sp.spSigningKeyStoreOverride only gets set after checking to\n\t\t\t// ensure the signer is not nil.\n\t\t\treturn nil\n\t\t}\n\t} else {\n\t\tsp.signingContext = dsig.NewDefaultSigningContext(sp.GetSigningKey())\n\t}\n\tsp.signingContext.SetSignatureMethod(sp.SignAuthnRequestsAlgorithm)\n\tif sp.SignAuthnRequestsCanonicalizer != nil {\n\t\tsp.signingContext.Canonicalizer = sp.SignAuthnRequestsCanonicalizer\n\t}\n\n\treturn sp.signingContext\n}\n\ntype ProxyRestriction struct {\n\tCount    int\n\tAudience []string\n}\n\ntype WarningInfo struct {\n\tOneTimeUse       bool\n\tProxyRestriction *ProxyRestriction\n\tNotInAudience    bool\n\tInvalidTime      bool\n}\n\ntype AssertionInfo struct {\n\tNameID                     string\n\tValues                     Values\n\tWarningInfo                *WarningInfo\n\tSessionIndex               string\n\tAuthnInstant               *time.Time\n\tSessionNotOnOrAfter        *time.Time\n\tAssertions                 []types.Assertion\n\tResponseSignatureValidated bool\n}\n"
  },
  {
    "path": "saml_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"bytes\"\n\t\"compress/flate\"\n\t\"crypto\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"encoding/pem\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"math/big\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/beevik/etree\"\n\t\"github.com/jonboulle/clockwork\"\n\t\"github.com/russellhaering/gosaml2/types\"\n\tdsig \"github.com/russellhaering/goxmldsig\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nvar cert tls.Certificate\nvar pk crypto.PrivateKey\n\nfunc init() {\n\tvar err error\n\tpfx := \"./testdata/test\"\n\tcert, err = tls.LoadX509KeyPair(fmt.Sprintf(\"%s.crt\", pfx), fmt.Sprintf(\"%s.key\", pfx))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tpk = cert.PrivateKey\n}\n\nfunc TestDecode(t *testing.T) {\n\tf, err := ioutil.ReadFile(\"./testdata/saml.post\")\n\tif err != nil {\n\t\tt.Fatalf(\"could not open test file: %v\\n\", err)\n\t}\n\tdecoded := make([]byte, len(f))\n\n\tbase64.StdEncoding.Decode(decoded, f)\n\tresponse := &types.Response{}\n\n\terr = xml.Unmarshal(decoded, response)\n\tif err != nil {\n\t\tt.Fatalf(\"error decoding test saml: %v\", err)\n\t}\n\n\tea := response.EncryptedAssertions[0]\n\n\tk, err := ea.EncryptedKey.DecryptSymmetricKey(&cert)\n\tif err != nil {\n\t\tt.Fatalf(\"could not get symmetric key: %v\\n\", err)\n\t}\n\n\tif k == nil {\n\t\tt.Fatalf(\"no symmetric key\")\n\t}\n\n\tassertion, err := ea.Decrypt(&cert)\n\tif err != nil {\n\t\tt.Fatalf(\"error decrypting saml data: %v\\n\", err)\n\t}\n\n\tf2, err := ioutil.ReadFile(\"./testdata/saml.xml\")\n\tif err != nil {\n\t\tt.Fatalf(\"could not read expected output\")\n\t}\n\n\texpected := &types.Assertion{}\n\terr = xml.Unmarshal(f2, expected)\n\n\trequire.EqualValues(t, expected, assertion, \"decrypted assertion did not match expectation\")\n}\n\ntype testKeyStoreImpl struct {\n\tkey  *rsa.PrivateKey\n\tcert []byte\n}\n\nfunc (ks *testKeyStoreImpl) GetKeyPair() (*rsa.PrivateKey, []byte, error) {\n\treturn ks.key, ks.cert, nil\n}\n\n// testKeyStore generates an RSA key pair with a certificate valid at the given\n// time, suitable for use with a fake clock in tests.\nfunc testKeyStore(t *testing.T, validAt time.Time) dsig.X509KeyStore {\n\tt.Helper()\n\tkey, err := rsa.GenerateKey(rand.Reader, 1024)\n\trequire.NoError(t, err)\n\n\ttemplate := &x509.Certificate{\n\t\tSerialNumber:          big.NewInt(0),\n\t\tNotBefore:             validAt.Add(-time.Hour),\n\t\tNotAfter:              validAt.Add(365 * 24 * time.Hour),\n\t\tKeyUsage:              x509.KeyUsageDigitalSignature,\n\t\tBasicConstraintsValid: true,\n\t}\n\n\tcertBytes, err := x509.CreateCertificate(rand.Reader, template, template, &key.PublicKey, key)\n\trequire.NoError(t, err)\n\n\treturn &testKeyStoreImpl{key: key, cert: certBytes}\n}\n\nfunc signResponse(t *testing.T, resp string, sp *SAMLServiceProvider) string {\n\tdoc := etree.NewDocument()\n\terr := doc.ReadFromBytes([]byte(resp))\n\trequire.NoError(t, err)\n\n\tel := doc.Root()\n\n\t// Strip existing signatures\n\tsignatures := el.FindElements(\"//Signature\")\n\tfor _, sig := range signatures {\n\t\tparent := sig.Parent()\n\t\tparent.RemoveChild(sig)\n\t}\n\n\tel, err = sp.SigningContext().SignEnveloped(el)\n\trequire.NoError(t, err)\n\n\tdoc0 := etree.NewDocument()\n\tdoc0.SetRoot(el)\n\tdoc0.WriteSettings = etree.WriteSettings{\n\t\tCanonicalAttrVal: true,\n\t\tCanonicalEndTags: true,\n\t\tCanonicalText:    true,\n\t}\n\n\tstr, err := doc0.WriteToString()\n\trequire.NoError(t, err)\n\treturn str\n}\n\n// getSAMLServiceProvider returns a SAMLServiceProvider that needs to either\n// set SPKeyStore or call SetSPKeyStore.\nfunc getSAMLServiceProvider(t *testing.T, _cert []byte) *SAMLServiceProvider {\n\tt.Helper()\n\n\tblock, _ := pem.Decode([]byte(idpCertificate))\n\trequire.NotEmpty(t, block)\n\tcert, err := x509.ParseCertificate(block.Bytes)\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, cert)\n\n\tcert0, err := x509.ParseCertificate(_cert)\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, cert0)\n\n\tcertStore := dsig.MemoryX509CertificateStore{\n\t\tRoots: []*x509.Certificate{cert, cert0},\n\t}\n\n\treturn &SAMLServiceProvider{\n\t\tIdentityProviderSSOURL:      \"https://dev-116807.oktapreview.com/app/scaleftdev116807_scaleft_1/exk5zt0r12Edi4rD20h7/sso/saml\",\n\t\tIdentityProviderIssuer:      \"http://www.okta.com/exk5zt0r12Edi4rD20h7\",\n\t\tAssertionConsumerServiceURL: \"http://localhost:8080/v1/_saml_callback\",\n\t\tSignAuthnRequests:           true,\n\t\tAudienceURI:                 \"123\",\n\t\tIDPCertificateStore:         &certStore,\n\t\tNameIdFormat:                NameIdFormatPersistent,\n\t\tClock:                       dsig.NewFakeClock(clockwork.NewFakeClockAt(time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC))),\n\t}\n}\n\nfunc TestSAML(t *testing.T) {\n\tks := testKeyStore(t, time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC))\n\t_, _cert, err := ks.GetKeyPair()\n\trequire.NoError(t, err)\n\n\tsp := getSAMLServiceProvider(t, _cert)\n\tsp.SPKeyStore = ks\n\ttestSAMLServiceProvider(t, sp)\n}\n\nfunc TestSAMLUsingSetSPKeyStore(t *testing.T) {\n\tks := testKeyStore(t, time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC))\n\tprivateKey, _cert, err := ks.GetKeyPair()\n\trequire.NoError(t, err)\n\n\tsp := getSAMLServiceProvider(t, _cert)\n\tsp.SetSPKeyStore(&KeyStore{\n\t\tCert:   _cert,\n\t\tSigner: privateKey,\n\t})\n\ttestSAMLServiceProvider(t, sp)\n}\n\nfunc testSAMLServiceProvider(t *testing.T, sp *SAMLServiceProvider) {\n\tt.Helper()\n\n\tauthRequestURL, err := sp.BuildAuthURL(\"/some/link/here\")\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, authRequestURL)\n\n\tauthRequestString, err := sp.BuildAuthRequest()\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, authRequestString)\n\n\t// Note (Phoebe): The sample responses we acquired expired fairly quickly, meaning that our validation will fail\n\t// because we check the expiration time;\n\t// I've modified them to expire in ~100 years and removed their signatures, since those hash values are no longer\n\t// valid. We have to re-sign them here before validating them\n\traw := signResponse(t, rawResponse, sp)\n\n\tel, err := sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(raw)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, el)\n\n\tassertionInfo, err := sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(raw)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.NotNil(t, assertionInfo.WarningInfo) // always set when err == nil\n\trequire.False(t, assertionInfo.WarningInfo.OneTimeUse)\n\trequire.False(t, assertionInfo.WarningInfo.NotInAudience)\n\trequire.False(t, assertionInfo.WarningInfo.InvalidTime)\n\trequire.Nil(t, assertionInfo.WarningInfo.ProxyRestriction)\n\n\trequire.Equal(t, \"phoebe.simon@scaleft.com\", assertionInfo.NameID)\n\trequire.Equal(t, \"phoebe.simon@scaleft.com\", assertionInfo.Values.Get(\"Email\"))\n\trequire.Equal(t, \"Phoebe\", assertionInfo.Values.Get(\"FirstName\"))\n\trequire.Equal(t, \"Simon\", assertionInfo.Values.Get(\"LastName\"))\n\trequire.Equal(t, \"phoebesimon\", assertionInfo.Values.Get(\"Login\"))\n\n\tassertionInfoModifiedAudience := signResponse(t, assertionInfoModifiedAudienceResponse, sp)\n\n\tassertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoModifiedAudience)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.True(t, assertionInfo.WarningInfo.NotInAudience)\n\n\tassertionInfoOneTimeUse := signResponse(t, assertionInfoOneTimeUseResponse, sp)\n\n\tassertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoOneTimeUse)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.True(t, assertionInfo.WarningInfo.OneTimeUse)\n\n\tassertionInfoProxyRestriction := signResponse(t, assertionInfoProxyRestrictionResponse, sp)\n\n\tassertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoProxyRestriction)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.NotEmpty(t, assertionInfo.WarningInfo.ProxyRestriction)\n\trequire.Equal(t, 3, assertionInfo.WarningInfo.ProxyRestriction.Count)\n\trequire.Equal(t, []string{\"123\"}, assertionInfo.WarningInfo.ProxyRestriction.Audience)\n\n\tassertionInfoProxyRestrictionNoCount := signResponse(t, assertionInfoProxyRestrictionNoCountResponse, sp)\n\n\tassertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoProxyRestrictionNoCount)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.NotEmpty(t, assertionInfo.WarningInfo.ProxyRestriction)\n\trequire.Equal(t, 0, assertionInfo.WarningInfo.ProxyRestriction.Count)\n\trequire.Equal(t, []string{\"123\"}, assertionInfo.WarningInfo.ProxyRestriction.Audience)\n\n\tassertionInfoProxyRestrictionNoAudience := signResponse(t, assertionInfoProxyRestrictionNoAudienceResponse, sp)\n\n\tassertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoProxyRestrictionNoAudience)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.NotEmpty(t, assertionInfo.WarningInfo.ProxyRestriction)\n\trequire.Equal(t, 3, assertionInfo.WarningInfo.ProxyRestriction.Count)\n\trequire.Equal(t, []string{}, assertionInfo.WarningInfo.ProxyRestriction.Audience)\n\n\tassertionInfoResp := signResponse(t, assertionInfoResponse, sp)\n\n\tassertionInfo, err = sp.RetrieveAssertionInfo(base64.StdEncoding.EncodeToString([]byte(assertionInfoResp)))\n\trequire.NoError(t, err)\n\trequire.NotEmpty(t, assertionInfo)\n\trequire.NotEmpty(t, assertionInfo.Values)\n\trequire.Equal(t, \"phoebe.simon@scaleft.com\", assertionInfo.Values.Get(\"Email\"))\n\trequire.Equal(t, \"Phoebe\", assertionInfo.Values.Get(\"FirstName\"))\n\trequire.Equal(t, \"Simon\", assertionInfo.Values.Get(\"LastName\"))\n\trequire.Equal(t, \"phoebe.simon@scaleft.com\", assertionInfo.Values.Get(\"Login\"))\n\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(manInTheMiddledResponse)))\n\trequire.Error(t, err)\n\trequire.Equal(t, \"Signature could not be verified\", err.Error())\n\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredReferenceURIResponse)))\n\trequire.Error(t, err)\n\t// require.IsType(t, ErrInvalidValue{}, err, err.Error())\n\trequire.Equal(t, \"Could not verify certificate against trusted certs\", err.Error())\n\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredSignedInfoResponse)))\n\trequire.Error(t, err)\n\trequire.Equal(t, \"Could not verify certificate against trusted certs\", err.Error())\n\n\talteredRecipient := signResponse(t, alteredRecipientResponse, sp)\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredRecipient)))\n\trequire.Error(t, err)\n\trequire.IsType(t, err, ErrInvalidValue{})\n\trequire.Contains(t, err.Error(), \"Recipient\")\n\n\talteredDestination := signResponse(t, alteredDestinationResponse, sp)\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredDestination)))\n\trequire.Error(t, err)\n\trequire.IsType(t, err, ErrInvalidValue{})\n\trequire.Equal(t, err.(ErrInvalidValue).Key, \"Destination\")\n\n\talteredSubjectConfirmationMethod := signResponse(t, alteredSubjectConfirmationMethodResponse, sp)\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredSubjectConfirmationMethod)))\n\trequire.Error(t, err)\n\trequire.IsType(t, err, ErrInvalidValue{})\n\trequire.Equal(t, err.(ErrInvalidValue).Reason, ReasonUnsupported)\n\trequire.Equal(t, err.(ErrInvalidValue).Key, SubjectConfirmationTag)\n\n\talteredVersion := signResponse(t, alteredVersionResponse, sp)\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(alteredVersion)))\n\trequire.Error(t, err)\n\trequire.IsType(t, err, ErrInvalidValue{})\n\trequire.Equal(t, err.(ErrInvalidValue).Reason, ReasonUnsupported)\n\trequire.Equal(t, err.(ErrInvalidValue).Key, \"SAML version\")\n\trequire.Contains(t, err.Error(), \"Unsupported SAML version\")\n\n\t_, err = sp.ValidateEncodedResponse(base64.StdEncoding.EncodeToString([]byte(missingIDResponse)))\n\trequire.Error(t, err)\n\trequire.Equal(t, \"Signature could not be verified\", err.Error())\n}\n\nfunc TestInvalidResponseBadBase64(t *testing.T) {\n\tsp := &SAMLServiceProvider{}\n\n\tresponse, err := sp.ValidateEncodedResponse(\"invalid-base64\")\n\trequire.EqualError(t, err, \"illegal base64 data at input byte 7\")\n\trequire.Nil(t, response)\n}\n\nfunc TestInvalidResponseBadCompression(t *testing.T) {\n\tsp := &SAMLServiceProvider{}\n\n\t// Value from: https://github.com/golang/go/blob/23416315060bf7601e5779c3a6a2529d4d604584/src/compress/flate/flate_test.go#L219\n\trawResponse, err := hex.DecodeString(\"33180700\")\n\trequire.NoError(t, err)\n\n\tb64Response := base64.StdEncoding.EncodeToString(rawResponse)\n\n\tresponse, err := sp.ValidateEncodedResponse(b64Response)\n\trequire.EqualError(t, err, \"flate: corrupt input before offset 3\")\n\trequire.Nil(t, response)\n}\n\nfunc TestInvalidResponseBadXML(t *testing.T) {\n\tsp := &SAMLServiceProvider{}\n\n\tcompressed := &bytes.Buffer{}\n\n\tcompressor, err := flate.NewWriter(compressed, flate.BestCompression)\n\trequire.NoError(t, err)\n\n\tcompressor.Write([]byte(\">Definitely&Invalid XML\"))\n\tcompressor.Close()\n\n\tb64Response := base64.StdEncoding.EncodeToString(compressed.Bytes())\n\n\tresponse, err := sp.ValidateEncodedResponse(b64Response)\n\trequire.EqualError(t, err, \"XML syntax error on line 1: invalid character entity &Invalid (no semicolon)\")\n\trequire.Nil(t, response)\n}\n\nfunc TestInvalidResponseNoElement(t *testing.T) {\n\tsp := &SAMLServiceProvider{}\n\n\tb64Response := base64.StdEncoding.EncodeToString([]byte(\"no-element-here\"))\n\n\tresponse, err := sp.ValidateEncodedResponse(b64Response)\n\trequire.EqualError(t, err, \"unable to parse response\")\n\trequire.Nil(t, response)\n}\nfunc TestSAMLCommentInjection(t *testing.T) {\n\t/*\n\t\tExplanation:\n\n\t\tSee: https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations\n\n\t\tThe TLDR is that XML canonicalization may result in a different value being signed from the one being retrieved.\n\t\tThe target of this is the NameID in the Subject of the SAMLResponse Assertion\n\n\t\tExample:\n\t\t\t The following Subject\n\t\t\t ```<Subject>\n\t\t\t\t<NameID>user@user.com<!---->.evil.com</NameID>\n\t\t\t</Subject>```\n\t\t\twould get canonicalized to\n\t\t\t```\n\t\t\t<Subject>\n\t\t\t\t<NameID>user@user.com.evil.com</NameID>\n\t\t\t</Subject>\n\t\t\t```\n\t\t\tMany XML parsers have a behavior where they pull the first text element, so in the example with the comment, a vulnerable XML parser would return `user@user.com`, ignoring the text after the comment.\n\t\t\tKnowing this, a user (user@user.com.evil.com) can attack a vulnerable SP by manipulating their signed SAMLResponse with a comment that turns their username into another one.\n\t*/\n\n\t// To show that we are not vulnerable, we want to prove that we get the canonicalized value using our parser\n\t_, el, err := parseResponse([]byte(commentInjectionAttackResponse), 0)\n\trequire.NoError(t, err)\n\tdecodedResponse := &types.Response{}\n\terr = xmlUnmarshalElement(el, decodedResponse)\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"phoebe.simon@scaleft.com.evil.com\", decodedResponse.Assertions[0].Subject.NameID.Value, \"The full, canonacalized NameID should be returned.\")\n}\n"
  },
  {
    "path": "test_constants.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nvar idpCertificate = `\n-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a\n-----END CERTIFICATE-----\n`\n\nconst rawResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebesimon</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst manInTheMiddledResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id1619705532971228558789260\" InResponseTo=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" IssueInstant=\"2016-03-22T19:22:57.054Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id1619705532971228558789260\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>ijTqmVmDy7ssK+rvmJaCQ6AQaFaXz+HIN/r6O37B0eQ=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>G09fAYXGDLK+/jAekHsNL0RLo40Xm6+VwXmUj0IDIrvIIv/mJU5VD6ylOLnPezLDBVY9BJst1YCz+8krdvmQ8Stkd6qiN2bN/5KpCdika111YGpeNdMmg/E57ZG3S895hTNJQYOfCwhPFUtQuXLkspOaw81pcqOTr+bVSofJ8uQP7cVQa/ANxbjKAj0fhAuxAvZfiqPms5Stv4sNGpzULUDJl87CoEleHExGmpTsI7Qt3EvGToPMZXPHF4MGvuC0Z2ZD4iI6Pr7xk98t54PJtAX2qJu1tZqBJmL0Qcq5spl9W3yC1tAZuDeFLm1C4/T9crO2Q5WILP/tkw/yJ+ZttQ==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id16197055330485751495860275\" IssueInstant=\"2016-03-22T19:22:57.054Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id16197055330485751495860275\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>zln6sheEO2JBdanrT5mZtJZ192tGHavuBpCFHQsJFVg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>dHh6TWbnjtImyrfjPTX5QzE/6Vm/HsRWVvWWlvFAddf/CvhO4Kc5j8C7hvQoYMLhYuZMFFSReGysuDy5IscOJwTGhhcvb238qHSGGs6q8OUBCsmLSDAbIaGA++LV/tkUZ2ridGIi0yT81UOl1oT1batlHsK3eMyxkpnFmvBzIm4tGTzRkOPpYRLeiM9bxbKI+DM/623DCXyBCLYBzJo1O6QE02aLajwRMi/vmiV4LSiGlFcY9TtDCafdVJRv0tIQ25BQoT4feuHdr6S8xOSpGgRYH5ECamVOt4e079XdEkVUiSzQokiUkgDlTXEyerPLOVsOk4PW5nRs86sXIiGL5w==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiH9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" NotOnOrAfter=\"2116-03-22T19:27:57.054Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-22T19:17:57.054Z\" NotOnOrAfter=\"2116-03-22T19:27:57.054Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-22T19:22:57.054Z\" SessionIndex=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst alteredReferenceURIResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id16197055330485751495860275\" InResponseTo=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" IssueInstant=\"2016-03-22T19:22:57.054Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id1619705532971228558789260\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>ijTqmVmDy7ssK+rvmJaCQ6AQaFaXz+HIN/r6O37B0eQ=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>G09fAYXGDLK+/jAekHsNL0RLo40Xm6+VwXmUj0IDIrvIIv/mJU5VD6ylOLnPezLDBVY9BJst1YCz+8krdvmQ8Stkd6qiN2bN/5KpCdika111YGpeNdMmg/E57ZG3S895hTNJQYOfCwhPFUtQuXLkspOaw81pcqOTr+bVSofJ8uQP7cVQa/ANxbjKAj0fhAuxAvZfiqPms5Stv4sNGpzULUDJl87CoEleHExGmpTsI7Qt3EvGToPMZXPHF4MGvuC0Z2ZD4iI6Pr7xk98t54PJtAX2qJu1tZqBJmL0Qcq5spl9W3yC1tAZuDeFLm1C4/T9crO2Q5WILP/tkw/yJ+ZttQ==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id16197055330485751495860275\" IssueInstant=\"2016-03-22T19:22:57.054Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id16197055330485751495860275\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>zln6sheEO2JBdanrT5mZtJZ192tGHavuBpCFHQsJFVg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>dHh6TWbnjtImyrfjPTX5QzE/6Vm/HsRWVvWWlvFAddf/CvhO4Kc5j8C7hvQoYMLhYuZMFFSReGysuDy5IscOJwTGhhcvb238qHSGGs6q8OUBCsmLSDAbIaGA++LV/tkUZ2ridGIi0yT81UOl1oT1batlHsK3eMyxkpnFmvBzIm4tGTzRkOPpYRLeiM9bxbKI+DM/623DCXyBCLYBzJo1O6QE02aLajwRMi/vmiV4LSiGlFcY9TtDCafdVJRv0tIQ25BQoT4feuHdr6S8xOSpGgRYH5ECamVOt4e079XdEkVUiSzQokiUkgDlTXEyerPLOVsOk4PW5nRs86sXIiGL5w==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiH9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" NotOnOrAfter=\"2116-03-22T19:27:57.054Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-22T19:17:57.054Z\" NotOnOrAfter=\"2116-03-22T19:27:57.054Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-22T19:22:57.054Z\" SessionIndex=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst alteredSignedInfoResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id16197055330485751495860275\" InResponseTo=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" IssueInstant=\"2016-03-22T19:22:57.054Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id1619705532971228558789260\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>ijTqmVmDy7ssK+rvmJaCQ6AQaFaXz+HIN/r6O37B0eQ=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>G09fAYXGDLK+/jAekHsNL0RLo40Xm6+VwXmUj0IDIrvIIv/mJU5VD6ylOLnPezLDBVY9BJst1YCz+8krdvmQ8Stkd6qiN2bN/5KpCdika111YGpeNdMmg/E57ZG3S895hTNJQYOfCwhPFUtQuXLkspOaw81pcqOTr+bVSofJ8uQP7cVQa/ANxbjKAj0fhAuxAvZfiqPms5Stv4sNGpzULUDJl87CoEleHExGmpTsI7Qt3EvGToPMZXPHF4MGvuC0Z2ZD4iI6Pr7xk98t54PJtAX2qJu1tZqBJmL0Qcq5spl9W3yC1tAZuDeFLm1C4/T9crO2Q5WILP/tkw/yJ+ZttQ==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEV\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id16197055330485751495860275\" IssueInstant=\"2016-03-22T19:22:57.054Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id16197055330485751495860275\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>zln6sheEO2JBdanrT5mZtJZ192tGHavuBpCFHQsJFVg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>dHh6TWbnjtImyrfjPTX5QzE/6Vm/HsRWVvWWlvFAddf/CvhO4Kc5j8C7hvQoYMLhYuZMFFSReGysuDy5IscOJwTGhhcvb238qHSGGs6q8OUBCsmLSDAbIaGA++LV/tkUZ2ridGIi0yT81UOl1oT1batlHsK3eMyxkpnFmvBzIm4tGTzRkOPpYRLeiM9bxbKI+DM/623DCXyBCLYBzJo1O6QE02aLajwRMi/vmiV4LSiGlFcY9TtDCafdVJRv0tIQ25BQoT4feuHdr6S8xOSpGgRYH5ECamVOt4e079XdEkVUiSzQokiUkgDlTXEyerPLOVsOk4PW5nRs86sXIiGL5w==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiH9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" NotOnOrAfter=\"2116-03-22T19:27:57.054Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-22T19:17:57.054Z\" NotOnOrAfter=\"2116-03-22T19:27:57.054Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-22T19:22:57.054Z\" SessionIndex=\"_213843b4-0693-47b8-b2f6-c41e316015cc\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst alteredRecipientResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8081/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst alteredSubjectConfirmationMethodResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bear\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst alteredDestinationResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8081/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst alteredVersionResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"1.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst missingIDResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id2128248929510670834559185\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>mj+xyS5DtKVNbbFq4caWhGcrirqNzv7mIHNzHQH/f60=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>GA1URoMOE5EFfkHYimGXm7Ecph/m0s135VyF9Wut6NSpuZdQ2crM1IslvKCRjkE09rZgagQQMAThUcOFuX35dZPz9J4Ihpt1juhfGv1AV8I8jiOKFETj65MiPabDEi8+P6YWf4qNujAJXHKJIa/MFXBqoKR/imLQT8eu1nhVBQGYqWwZePddfXO2JYk2ce7mtnyMT0dUVb+o+tlEDYa7ri9fj4JL/z1XX7yrbVZxn2mdKPJtSSP8uHNOWSM6j1vp4oK+KSDviBfiVLlVA58noz5GyFtp642h+LV2quKbncMFfnfB1kfHLK/xaz9UaDBy+bHK4oGzSpVhZqcOzzliKA==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst assertionInfoResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst assertionInfoModifiedAudienceResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>124</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst assertionInfoOneTimeUseResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction><saml2:OneTimeUse /></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst assertionInfoProxyRestrictionResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction><saml2:ProxyRestriction Count=\"3\"><saml2:Audience>123</saml2:Audience></saml2:ProxyRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst assertionInfoProxyRestrictionNoCountResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction><saml2:ProxyRestriction><saml2:Audience>123</saml2:Audience></saml2:ProxyRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst assertionInfoProxyRestrictionNoAudienceResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction><saml2:ProxyRestriction Count=\"3\"></saml2:ProxyRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\nconst exampleBase64 = `PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL19zYW1sX2NhbGxiYWNrIiBJRD0iaWQxMDM1MzI4MDQ2NDc3ODc5NzUzODEzMjUiIEluUmVzcG9uc2VUbz0iXzg2OTljNjU1LWM0ODItNDUxYS05YjdmLTYxNjY4ZjE0MGI0NyIgSXNzdWVJbnN0YW50PSIyMDE2LTAzLTE2VDAxOjAyOjU3LjY4MloiIFZlcnNpb249IjIuMCI+PHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHA6Ly93d3cub2t0YS5jb20vZXhrNXp0MHIxMkVkaTRyRDIwaDc8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiNpZDEwMzUzMjgwNDY0Nzc4Nzk3NTM4MTMyNSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPm5wVEFsNmtyYWtzQmxDUmx1bmJ5RDZuSUNUY2ZzRGFIalBYVnhvRFBydzA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlNiQjAzZkkxVFZzdEo3cTFCNlh4OFlSR2tEcE5ROGFyNHpGM3AzYWlra2NxOFRUUzBlUjI4Rm9RdU4xSFg3MlBuMnJjY0U0T05pellOUzYvcnZybHlWL1NsWFhtQzltaFRMUlBlSno1bXJ4anFPNVFZRDFZM0l6bW5rZlE2S3V0dWtrY0dPSkVwYTN2WWVzZjVKS1JTKzBXR1J0ek9TNHdKRjE4b0dJWitiYThQNmd4bU1yeUE4eEIvZUpneHBmcm1VYkJqUEhMU2ZsamViaDg4RWlOSUQwODhYdVNHeWQrM0RtcFc1QjUyRFFCOGNBeXlPQlJrUlJjcUxGSWd4aWJtdnRJaWVxdVUwYTJuY29qcHUwKzRvamwrNHdEQ1dkR09FeXF0Sm9UUVhDNHNLUmFVNzlGSzVJRmZFaVlNcXZpRkQwb2F1NHNQajBnbkZDRUY1Rmw0dz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEcERDQ0FveWdBd0lCQWdJR0FWTElCaEF3TUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdTTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHCkExVUVDQXdLUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnd3TlUyRnVJRVp5WVc1amFYTmpiekVOTUFzR0ExVUVDZ3dFVDJ0MFlURVUKTUJJR0ExVUVDd3dMVTFOUFVISnZkbWxrWlhJeEV6QVJCZ05WQkFNTUNtUmxkaTB4TVRZNE1EY3hIREFhQmdrcWhraUc5dzBCQ1FFVwpEV2x1Wm05QWIydDBZUzVqYjIwd0hoY05NVFl3TWpBNU1qRTFNakEyV2hjTk1qWXdNakE1TWpFMU16QTJXakNCa2pFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURWTmhiaUJHY21GdVkybHpZMjh4RFRBTEJnTlYKQkFvTUJFOXJkR0V4RkRBU0JnTlZCQXNNQzFOVFQxQnliM1pwWkdWeU1STXdFUVlEVlFRRERBcGtaWFl0TVRFMk9EQTNNUnd3R2dZSgpLb1pJaHZjTkFRa0JGZzFwYm1adlFHOXJkR0V1WTI5dE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBCm10akJPWjhNbWhVeWk4Y0drNGRVWTZGajFNRkR0L3EzRkZpYVFwTHp1My9xNWxSVlVOVUJiQXRxUVd3WTEwZHpmWmd1SE91dkE1cDUKUXlpVkR2VWhlK1hrVndOMlIyV2ZBclFKUlRQbkljT2FIcnhxUWYzbzVjQ0lHMjFadHlzRkhKU284Y2xQU09lKzBWc29SZ2NKMWFGNAoyck9Ed2dxUlJaZE85V2gzNTAyWGxKNzk5REpRMjNJQzdYYXNLRXNHS3pKcWhsUnJmZC9GeUl1WlQwc0ZIREtSejVzblNKaG05Z3BOCnVRbENtazdPTloxc1hxdHQrbkJJZldJcWVvWVF1YlBXN3BUNUdUYzd3b3VXcTRUQ2pISmlLOWsySGl5TnhXMEUzSlgwOHN3RVppMisKTFZEamdMek5jNGx3alNZSWozQU90UFpzOHM2MDZvQmRJQm5pNHdJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJNeFNrSgpUeGtYeHNvS05XMGF3Sk5wV1JiVTgxUXBoZU1GZkVOSXpMYW00SXRjLzVrU1pBYVN5LzllMlFLZm80akJvL01NYkNxMnZNOVR5ZUpRCkRKcFJhaW9VVGQybEdoNFRMVXhBeEN4dFVrL3Bhc2NMKzNObjkzNkxGbVVDTHhheG5iZUd6UE9YQWhzY0N0VTFIMG5Gc1hSbkt4NWEKY1BYWVNLRlpaWmt0aWVTa3d3Mk9pOGRnMkRZYVFoR1FNU0ZNVnFnVmZ3RXU0YnZDUkJ2ZFNpTlhkV0dDWlFtRlZ6QlpaLzlyT0x6UApwdlRGVFBucGthdkptODFGTGxVaGlFL29GZ0tsQ0RMV0RrblNwWEFJMHVaR0VSY3dQY2E2eHZJTWg4NkxqUUtqYlZjaTlGWURTdFhDCnFSbnFRK1RjY1N1L0I2dU9ORnNERW5nR2NYU0tmQithPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWwycDpTdGF0dXMgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPjxzYW1sMnA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1sMnA6U3RhdHVzPjxzYW1sMjpBc3NlcnRpb24geG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJpZDEwMzUzMjgwNDY1MjY1ODg5MDAwODk0MjQiIElzc3VlSW5zdGFudD0iMjAxNi0wMy0xNlQwMTowMjo1Ny42ODJaIiBWZXJzaW9uPSIyLjAiPjxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vd3d3Lm9rdGEuY29tL2V4azV6dDByMTJFZGk0ckQyMGg3PC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIjaWQxMDM1MzI4MDQ2NTI2NTg4OTAwMDg5NDI0Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+Tm8xVnlRbGs4WGlmNEZpSitoYVZpd0VReVNJekJhMTRsR3kwY29DbjBjOD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+VlNWOFZ3NDdxN24vWFp3YVFPUFdRZUtJNVpBNjlmbkdaeUVGaGV4NHh1YUlmQytMT1luZmQ4cThxY1pzbTFNNmt2NDdIL2RSNllYUklNalBLWFpleVgvTUtjbUdQQ2FkcVdGVDdFV0Z2enVPL3V5L0FCL0NMNVpDUWlZOUgvYU9oRHlzTzhnbHNlMVMrWTJLMEN3dnNvUndNZkZpTzJYT1loVk9zbmdVU2tDQmRMSUI2T3E0Zitac0swcncvRTc5bjlRVWQ4b3dEcTNkVkMxOFNGWVlkY0lWRGhRcHBnbHl1QkVaZnUydEcwNmdEOWpsczdaRTh2amNNZkhtaHVIdHhsSDNvdk5MQjM1TkZPL1ZyQ05kRnFtRDc2R25FQTk4Zm9pSnhDWDh2ek5IRjRyUFVGWEFFZGlTNE9kUUF4YjdqTk5Wb0tWWXVhZHVuTHlneXNaR1NnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURwRENDQW95Z0F3SUJBZ0lHQVZMSUJoQXdNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JR1NNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUcKQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCd3dOVTJGdUlFWnlZVzVqYVhOamJ6RU5NQXNHQTFVRUNnd0VUMnQwWVRFVQpNQklHQTFVRUN3d0xVMU5QVUhKdmRtbGtaWEl4RXpBUkJnTlZCQU1NQ21SbGRpMHhNVFk0TURjeEhEQWFCZ2txaGtpRzl3MEJDUUVXCkRXbHVabTlBYjJ0MFlTNWpiMjB3SGhjTk1UWXdNakE1TWpFMU1qQTJXaGNOTWpZd01qQTVNakUxTXpBMldqQ0JrakVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNNRFZOaGJpQkdjbUZ1WTJselkyOHhEVEFMQmdOVgpCQW9NQkU5cmRHRXhGREFTQmdOVkJBc01DMU5UVDFCeWIzWnBaR1Z5TVJNd0VRWURWUVFEREFwa1pYWXRNVEUyT0RBM01Sd3dHZ1lKCktvWklodmNOQVFrQkZnMXBibVp2UUc5cmRHRXVZMjl0TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKbXRqQk9aOE1taFV5aThjR2s0ZFVZNkZqMU1GRHQvcTNGRmlhUXBMenUzL3E1bFJWVU5VQmJBdHFRV3dZMTBkemZaZ3VIT3V2QTVwNQpReWlWRHZVaGUrWGtWd04yUjJXZkFyUUpSVFBuSWNPYUhyeHFRZjNvNWNDSUcyMVp0eXNGSEpTbzhjbFBTT2UrMFZzb1JnY0oxYUY0CjJyT0R3Z3FSUlpkTzlXaDM1MDJYbEo3OTlESlEyM0lDN1hhc0tFc0dLekpxaGxScmZkL0Z5SXVaVDBzRkhES1J6NXNuU0pobTlncE4KdVFsQ21rN09OWjFzWHF0dCtuQklmV0lxZW9ZUXViUFc3cFQ1R1RjN3dvdVdxNFRDakhKaUs5azJIaXlOeFcwRTNKWDA4c3dFWmkyKwpMVkRqZ0x6TmM0bHdqU1lJajNBT3RQWnM4czYwNm9CZElCbmk0d0lEQVFBQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQk14U2tKClR4a1h4c29LTlcwYXdKTnBXUmJVODFRcGhlTUZmRU5JekxhbTRJdGMvNWtTWkFhU3kvOWUyUUtmbzRqQm8vTU1iQ3Eydk05VHllSlEKREpwUmFpb1VUZDJsR2g0VExVeEF4Q3h0VWsvcGFzY0wrM05uOTM2TEZtVUNMeGF4bmJlR3pQT1hBaHNjQ3RVMUgwbkZzWFJuS3g1YQpjUFhZU0tGWlpaa3RpZVNrd3cyT2k4ZGcyRFlhUWhHUU1TRk1WcWdWZndFdTRidkNSQnZkU2lOWGRXR0NaUW1GVnpCWlovOXJPTHpQCnB2VEZUUG5wa2F2Sm04MUZMbFVoaUUvb0ZnS2xDRExXRGtuU3BYQUkwdVpHRVJjd1BjYTZ4dklNaDg2TGpRS2piVmNpOUZZRFN0WEMKcVJucVErVGNjU3UvQjZ1T05Gc0RFbmdHY1hTS2ZCK2E8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDI6U3ViamVjdCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIj5ydXNzZWxsLmhhZXJpbmdAc2NhbGVmdC5jb208L3NhbWwyOk5hbWVJRD48c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBJblJlc3BvbnNlVG89Il84Njk5YzY1NS1jNDgyLTQ1MWEtOWI3Zi02MTY2OGYxNDBiNDciIE5vdE9uT3JBZnRlcj0iMjAxNi0wMy0xNlQwMTowNzo1Ny42ODJaIiBSZWNpcGllbnQ9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92MS9fc2FtbF9jYWxsYmFjayIvPjwvc2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWwyOlN1YmplY3Q+PHNhbWwyOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE2LTAzLTE2VDAwOjU3OjU3LjY4MloiIE5vdE9uT3JBZnRlcj0iMjAxNi0wMy0xNlQwMTowNzo1Ny42ODJaIiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWwyOkF1ZGllbmNlPjEyMzwvc2FtbDI6QXVkaWVuY2U+PC9zYW1sMjpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDI6Q29uZGl0aW9ucz48c2FtbDI6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE2LTAzLTE2VDAxOjAyOjU3LjY4MloiIFNlc3Npb25JbmRleD0iXzg2OTljNjU1LWM0ODItNDUxYS05YjdmLTYxNjY4ZjE0MGI0NyIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sMjpBdXRobkNvbnRleHQ+PHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0PC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWwyOkF1dGhuQ29udGV4dD48L3NhbWwyOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDI6QXNzZXJ0aW9uPjwvc2FtbDJwOlJlc3BvbnNlPg==`\n\nconst exampleBase64_2 = `PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL19zYW1sX2NhbGxiYWNrIiBJRD0iaWQyMTI4MjQ4OTI5NTEwNjcwODM0NTU5MTg1IiBJblJlc3BvbnNlVG89Il9kYTIxM2RmOC1lZjk1LTQxZDAtYjliZi03MWQyNzE3MzVjZDciIElzc3VlSW5zdGFudD0iMjAxNi0wMy0yOFQxNjozODoxOC41NjVaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiPmh0dHA6Ly93d3cub2t0YS5jb20vZXhrNXp0MHIxMkVkaTRyRDIwaDc8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiNpZDIxMjgyNDg5Mjk1MTA2NzA4MzQ1NTkxODUiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjxlYzpJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zOmVjPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9InhzIi8+PC9kczpUcmFuc2Zvcm0+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+V3ZnVy9KZlA0bWpVKy8xd3R5WDA2RTlFR3hZTnNvQ1UrcmJTWm5Bdmoycz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+R0ExVVJvTU9FNUVGZmtIWWltR1htN0VjcGgvbTBzMTM1VnlGOVd1dDZOU3B1WmRRMmNyTTFJc2x2S0NSamtFMDlyWmdhZ1FRTUFUaFVjT0Z1WDM1ZFpQejlKNElocHQxanVoZkd2MUFWOEk4amlPS0ZFVGo2NU1pUGFiREVpOCtQNllXZjRxTnVqQUpYSEtKSWEvTUZYQnFvS1IvaW1MUVQ4ZXUxbmhWQlFHWXFXd1plUGRkZlhPMkpZazJjZTdtdG55TVQwZFVWYitvK3RsRURZYTdyaTlmajRKTC96MVhYN3lyYlZaeG4ybWRLUEp0U1NQOHVITk9XU002ajF2cDRvSytLU0R2aUJmaVZMbFZBNThub3o1R3lGdHA2NDJoK0xWMnF1S2JuY01GZm5mQjFrZkhMSy94YXo5VWFEQnkrYkhLNG9HelNwVmhacWNPenpsaUtBPT08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURwRENDQW95Z0F3SUJBZ0lHQVZMSUJoQXdNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JR1NNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUcKQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCd3dOVTJGdUlFWnlZVzVqYVhOamJ6RU5NQXNHQTFVRUNnd0VUMnQwWVRFVQpNQklHQTFVRUN3d0xVMU5QVUhKdmRtbGtaWEl4RXpBUkJnTlZCQU1NQ21SbGRpMHhNVFk0TURjeEhEQWFCZ2txaGtpRzl3MEJDUUVXCkRXbHVabTlBYjJ0MFlTNWpiMjB3SGhjTk1UWXdNakE1TWpFMU1qQTJXaGNOTWpZd01qQTVNakUxTXpBMldqQ0JrakVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNNRFZOaGJpQkdjbUZ1WTJselkyOHhEVEFMQmdOVgpCQW9NQkU5cmRHRXhGREFTQmdOVkJBc01DMU5UVDFCeWIzWnBaR1Z5TVJNd0VRWURWUVFEREFwa1pYWXRNVEUyT0RBM01Sd3dHZ1lKCktvWklodmNOQVFrQkZnMXBibVp2UUc5cmRHRXVZMjl0TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEKbXRqQk9aOE1taFV5aThjR2s0ZFVZNkZqMU1GRHQvcTNGRmlhUXBMenUzL3E1bFJWVU5VQmJBdHFRV3dZMTBkemZaZ3VIT3V2QTVwNQpReWlWRHZVaGUrWGtWd04yUjJXZkFyUUpSVFBuSWNPYUhyeHFRZjNvNWNDSUcyMVp0eXNGSEpTbzhjbFBTT2UrMFZzb1JnY0oxYUY0CjJyT0R3Z3FSUlpkTzlXaDM1MDJYbEo3OTlESlEyM0lDN1hhc0tFc0dLekpxaGxScmZkL0Z5SXVaVDBzRkhES1J6NXNuU0pobTlncE4KdVFsQ21rN09OWjFzWHF0dCtuQklmV0lxZW9ZUXViUFc3cFQ1R1RjN3dvdVdxNFRDakhKaUs5azJIaXlOeFcwRTNKWDA4c3dFWmkyKwpMVkRqZ0x6TmM0bHdqU1lJajNBT3RQWnM4czYwNm9CZElCbmk0d0lEQVFBQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQk14U2tKClR4a1h4c29LTlcwYXdKTnBXUmJVODFRcGhlTUZmRU5JekxhbTRJdGMvNWtTWkFhU3kvOWUyUUtmbzRqQm8vTU1iQ3Eydk05VHllSlEKREpwUmFpb1VUZDJsR2g0VExVeEF4Q3h0VWsvcGFzY0wrM05uOTM2TEZtVUNMeGF4bmJlR3pQT1hBaHNjQ3RVMUgwbkZzWFJuS3g1YQpjUFhZU0tGWlpaa3RpZVNrd3cyT2k4ZGcyRFlhUWhHUU1TRk1WcWdWZndFdTRidkNSQnZkU2lOWGRXR0NaUW1GVnpCWlovOXJPTHpQCnB2VEZUUG5wa2F2Sm04MUZMbFVoaUUvb0ZnS2xDRExXRGtuU3BYQUkwdVpHRVJjd1BjYTZ4dklNaDg2TGpRS2piVmNpOUZZRFN0WEMKcVJucVErVGNjU3UvQjZ1T05Gc0RFbmdHY1hTS2ZCK2E8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDJwOlN0YXR1cyB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWwycDpTdGF0dXM+PHNhbWwyOkFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9ImlkMjEyODI0ODkyOTU3NzY3ODIxMjY0NjgzMTkiIElzc3VlSW5zdGFudD0iMjAxNi0wMy0yOFQxNjozODoxOC41NjVaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+PHNhbWwyOklzc3VlciBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OmVudGl0eSIgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPmh0dHA6Ly93d3cub2t0YS5jb20vZXhrNXp0MHIxMkVkaTRyRDIwaDc8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzOlJlZmVyZW5jZSBVUkk9IiNpZDIxMjgyNDg5Mjk1Nzc2NzgyMTI2NDY4MzE5Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48ZWM6SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxuczplYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSJ4cyIvPjwvZHM6VHJhbnNmb3JtPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzOkRpZ2VzdFZhbHVlPkZzV0dDQkMrdC9MYVZrVUtVdlJRcHp5WlRtbHhVenc0UjlGT3pYUFBKUnc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmhTNTBXZ1lzL2NuM3V4bWhyemEvMC8wUVczSDdid2RqUFoyaFFtRzdJZVNkN2F3VE9naEJxZHJqdmFQZlE3dFJXK1VLNmV3TWdJQlZLRzZqVjNxWUFXZVcyVTcwaE1iN2hFOXFKcUJLeVl5aW1taFZXVUx4MUhCMlltbFUxd21pc3B5d29QbFhRNmdqMGlXYUwyUkZJODN2VXA3WDUwZVo2ZEVMcW9KVlpwelFJMDY1VHQwVEc3VXVLVVcxZmxZc2JpUzlOYVhudXcrbWNyQlcyNVpBOUY1Q0xlUEhraTAxWnpVdytYdE5tS3RoRWI3U1IzMG16UG9qMDhEamkyMmRhWXZHdTgySVIwMXdJWlBvUUpQQ0dNVDZ5MnhDL3BRUHFHbGpBZy92VWErZ2FZZ2FNYUFWWXhoay9oZmdNVUJsT2VLQUNCYUdUbXlnYWIxTno1S3ZQZz09PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEcERDQ0FveWdBd0lCQWdJR0FWTElCaEF3TUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdTTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHCkExVUVDQXdLUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnd3TlUyRnVJRVp5WVc1amFYTmpiekVOTUFzR0ExVUVDZ3dFVDJ0MFlURVUKTUJJR0ExVUVDd3dMVTFOUFVISnZkbWxrWlhJeEV6QVJCZ05WQkFNTUNtUmxkaTB4TVRZNE1EY3hIREFhQmdrcWhraUc5dzBCQ1FFVwpEV2x1Wm05QWIydDBZUzVqYjIwd0hoY05NVFl3TWpBNU1qRTFNakEyV2hjTk1qWXdNakE1TWpFMU16QTJXakNCa2pFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURWTmhiaUJHY21GdVkybHpZMjh4RFRBTEJnTlYKQkFvTUJFOXJkR0V4RkRBU0JnTlZCQXNNQzFOVFQxQnliM1pwWkdWeU1STXdFUVlEVlFRRERBcGtaWFl0TVRFMk9EQTNNUnd3R2dZSgpLb1pJaHZjTkFRa0JGZzFwYm1adlFHOXJkR0V1WTI5dE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBCm10akJPWjhNbWhVeWk4Y0drNGRVWTZGajFNRkR0L3EzRkZpYVFwTHp1My9xNWxSVlVOVUJiQXRxUVd3WTEwZHpmWmd1SE91dkE1cDUKUXlpVkR2VWhlK1hrVndOMlIyV2ZBclFKUlRQbkljT2FIcnhxUWYzbzVjQ0lHMjFadHlzRkhKU284Y2xQU09lKzBWc29SZ2NKMWFGNAoyck9Ed2dxUlJaZE85V2gzNTAyWGxKNzk5REpRMjNJQzdYYXNLRXNHS3pKcWhsUnJmZC9GeUl1WlQwc0ZIREtSejVzblNKaG05Z3BOCnVRbENtazdPTloxc1hxdHQrbkJJZldJcWVvWVF1YlBXN3BUNUdUYzd3b3VXcTRUQ2pISmlLOWsySGl5TnhXMEUzSlgwOHN3RVppMisKTFZEamdMek5jNGx3alNZSWozQU90UFpzOHM2MDZvQmRJQm5pNHdJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJNeFNrSgpUeGtYeHNvS05XMGF3Sk5wV1JiVTgxUXBoZU1GZkVOSXpMYW00SXRjLzVrU1pBYVN5LzllMlFLZm80akJvL01NYkNxMnZNOVR5ZUpRCkRKcFJhaW9VVGQybEdoNFRMVXhBeEN4dFVrL3Bhc2NMKzNObjkzNkxGbVVDTHhheG5iZUd6UE9YQWhzY0N0VTFIMG5Gc1hSbkt4NWEKY1BYWVNLRlpaWmt0aWVTa3d3Mk9pOGRnMkRZYVFoR1FNU0ZNVnFnVmZ3RXU0YnZDUkJ2ZFNpTlhkV0dDWlFtRlZ6QlpaLzlyT0x6UApwdlRGVFBucGthdkptODFGTGxVaGlFL29GZ0tsQ0RMV0RrblNwWEFJMHVaR0VSY3dQY2E2eHZJTWg4NkxqUUtqYlZjaTlGWURTdFhDCnFSbnFRK1RjY1N1L0I2dU9ORnNERW5nR2NYU0tmQithPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWwyOlN1YmplY3QgeG1sbnM6c2FtbDI9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnBob2ViZS5zaW1vbkBzY2FsZWZ0LmNvbTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2RhMjEzZGY4LWVmOTUtNDFkMC1iOWJmLTcxZDI3MTczNWNkNyIgTm90T25PckFmdGVyPSIyMDE2LTAzLTI4VDE2OjQzOjE4LjU2NVoiIFJlY2lwaWVudD0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxL19zYW1sX2NhbGxiYWNrIi8+PC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDI6U3ViamVjdD48c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTYtMDMtMjhUMTY6MzM6MTguNTY1WiIgTm90T25PckFmdGVyPSIyMDE2LTAzLTI4VDE2OjQzOjE4LjU2NVoiIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj48c2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDI6QXVkaWVuY2U+MTIzPC9zYW1sMjpBdWRpZW5jZT48L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sMjpDb25kaXRpb25zPjxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTYtMDMtMjhUMTY6Mzg6MTguNTY1WiIgU2Vzc2lvbkluZGV4PSJfZGEyMTNkZjgtZWY5NS00MWQwLWI5YmYtNzFkMjcxNzM1Y2Q3IiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ+PHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudCB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJGaXJzdE5hbWUiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlBob2ViZTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+PC9zYW1sMjpBdHRyaWJ1dGU+PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U2ltb248L3NhbWwyOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDI6QXR0cmlidXRlPjxzYW1sMjpBdHRyaWJ1dGUgTmFtZT0iRW1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6dW5zcGVjaWZpZWQiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPnBob2ViZS5zaW1vbkBzY2FsZWZ0LmNvbTwvc2FtbDI6QXR0cmlidXRlVmFsdWU+PC9zYW1sMjpBdHRyaWJ1dGU+PHNhbWwyOkF0dHJpYnV0ZSBOYW1lPSJMb2dpbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDp1bnNwZWNpZmllZCI+PHNhbWwyOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+cGhvZWJlLnNpbW9uQHNjYWxlZnQuY29tPC9zYW1sMjpBdHRyaWJ1dGVWYWx1ZT48L3NhbWwyOkF0dHJpYnV0ZT48L3NhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWwyOkFzc2VydGlvbj48L3NhbWwycDpSZXNwb25zZT4=`\n\nconst commentInjectionAttackResponse = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><saml2p:Response xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\" Destination=\"http://localhost:8080/v1/_saml_callback\" ID=\"id2128248929510670834559185\" InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><saml2p:Status xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml2p:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></saml2p:Status><saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"id21282489295776782126468319\" IssueInstant=\"2016-03-28T16:38:18.565Z\" Version=\"2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><saml2:Issuer Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:entity\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://www.okta.com/exk5zt0r12Edi4rD20h7</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/><ds:Reference URI=\"#id21282489295776782126468319\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xs\"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/><ds:DigestValue>FsWGCBC+t/LaVkUKUvRQpzyZTmlxUzw4R9FOzXPPJRw=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>hS50WgYs/cn3uxmhrza/0/0QW3H7bwdjPZ2hQmG7IeSd7awTOghBqdrjvaPfQ7tRW+UK6ewMgIBVKG6jV3qYAWeW2U70hMb7hE9qJqBKyYyimmhVWULx1HB2YmlU1wmispywoPlXQ6gj0iWaL2RFI83vUp7X50eZ6dELqoJVZpzQI065Tt0TG7UuKUW1flYsbiS9NaXnuw+mcrBW25ZA9F5CLePHki01ZzUw+XtNmKthEb7SR30mzPoj08Dji22daYvGu82IR01wIZPoQJPCGMT6y2xC/pQPqGljAg/vUa+gaYgaMaAVYxhk/hfgMUBlOeKACBaGTmygab1Nz5KvPg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDpDCCAoygAwIBAgIGAVLIBhAwMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi0xMTY4MDcxHDAaBgkqhkiG9w0BCQEW\nDWluZm9Ab2t0YS5jb20wHhcNMTYwMjA5MjE1MjA2WhcNMjYwMjA5MjE1MzA2WjCBkjELMAkGA1UE\nBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNV\nBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtMTE2ODA3MRwwGgYJ\nKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nmtjBOZ8MmhUyi8cGk4dUY6Fj1MFDt/q3FFiaQpLzu3/q5lRVUNUBbAtqQWwY10dzfZguHOuvA5p5\nQyiVDvUhe+XkVwN2R2WfArQJRTPnIcOaHrxqQf3o5cCIG21ZtysFHJSo8clPSOe+0VsoRgcJ1aF4\n2rODwgqRRZdO9Wh3502XlJ799DJQ23IC7XasKEsGKzJqhlRrfd/FyIuZT0sFHDKRz5snSJhm9gpN\nuQlCmk7ONZ1sXqtt+nBIfWIqeoYQubPW7pT5GTc7wouWq4TCjHJiK9k2HiyNxW0E3JX08swEZi2+\nLVDjgLzNc4lwjSYIj3AOtPZs8s606oBdIBni4wIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBMxSkJ\nTxkXxsoKNW0awJNpWRbU81QpheMFfENIzLam4Itc/5kSZAaSy/9e2QKfo4jBo/MMbCq2vM9TyeJQ\nDJpRaioUTd2lGh4TLUxAxCxtUk/pascL+3Nn936LFmUCLxaxnbeGzPOXAhscCtU1H0nFsXRnKx5a\ncPXYSKFZZZktieSkww2Oi8dg2DYaQhGQMSFMVqgVfwEu4bvCRBvdSiNXdWGCZQmFVzBZZ/9rOLzP\npvTFTPnpkavJm81FLlUhiE/oFgKlCDLWDknSpXAI0uZGERcwPca6xvIMh86LjQKjbVci9FYDStXC\nqRnqQ+TccSu/B6uONFsDEngGcXSKfB+a</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">phoebe.simon@scaleft.com<!---->.evil.com</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData InResponseTo=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" Recipient=\"http://localhost:8080/v1/_saml_callback\"/></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-03-28T16:33:18.565Z\" NotOnOrAfter=\"2116-03-28T16:43:18.565Z\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AudienceRestriction><saml2:Audience>123</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-03-28T16:38:18.565Z\" SessionIndex=\"_da213df8-ef95-41d0-b9bf-71d271735cd7\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"><saml2:Attribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Phoebe</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">Simon</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebe.simon@scaleft.com</saml2:AttributeValue></saml2:Attribute><saml2:Attribute Name=\"Login\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified\"><saml2:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">phoebesimon</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion></saml2p:Response>`\n\n\nconst doubleColonAssertionInjectionAttackResponse = `\n<samlp:Response xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" ID=\"R060bff490336a09324ed664f6e8b03fa12dc1994\" Version=\"2.0\" IssueInstant=\"2017-03-08T07:53:39Z\" Destination=\"http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81\">\n<saml:Issuer>https://app.onelogin.com/saml/metadata/634027</saml:Issuer>\n<samlp:Status><samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></samlp:Status>\n<::Assertion xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Version=\"2.0\" ID=\"x\" IssueInstant=\"2017-03-08T07:53:39Z\"><saml:Issuer>https://app.onelogin.com/saml/metadata/634027</saml:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><ds:Reference URI=\"#x\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><ds:DigestValue>gd5V090n/m4JRrtpo5WgrwPyyy0=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue></ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate></ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml:Subject><saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">what@launchdarkly.com</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData NotOnOrAfter=\"2017-03-08T07:56:39Z\" Recipient=\"http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81\"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2017-03-08T07:50:39Z\" NotOnOrAfter=\"2017-03-08T07:56:39Z\"><saml:AudienceRestriction><saml:Audience>{audience}</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2017-03-08T07:53:38Z\" SessionNotOnOrAfter=\"2017-03-09T07:53:39Z\" SessionIndex=\"_d5fe4830-e601-0134-4e06-0af7aa36d0f9\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></::Assertion>\n<saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Version=\"2.0\" ID=\"pfx63cf6dc4-c309-ff5e-6049-84c34f0c0061\" IssueInstant=\"2017-03-08T07:53:39Z\"><saml:Issuer>https://app.onelogin.com/saml/metadata/634027</saml:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><ds:Reference URI=\"#pfx63cf6dc4-c309-ff5e-6049-84c34f0c0061\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><ds:DigestValue>gd5V090n/m4JRrtpo5WgrwPyyy0=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>SLzvdNM+1R1+3XsXpC+/RIvb5L4Lhy7Eb7caPG2CLMPYhzbKLAwIiT7/0fEMO/xL7rdIgEShbcU9iu5PX4hGYBhirsFIZvdHytns5+JKHnlVBmHm4TsSU1z+dGMXBa//L0KFSrvdgBUpsr5vs50SuYnnVp61VN+zCLMqO221CQfP95QyMcSQ+fiyq4GOmWLwQy1m1+NV3U8zlapp6FIH5stW/dp4OqpRdafV96rVwmmR4yeUw7VAzbJuMrPgkXO9nUbHeMUTgQxkQ4ThzG5jt6fT+Ro1NOYS4zpVtzqlQwGzqWxQVRLEqXIf500/Qi0NuFQOW42ZAUiXDgdLENTVGA==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIEJjCCAw6gAwIBAgIUOHrykO4ce1TbjvGgXXVVnR4NsqMwDQYJKoZIhvcNAQEFBQAwXTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDExhdW5jaERhcmtseTEVMBMGA1UECwwMT25lTG9naW4gSWRQMSAwHgYDVQQDDBdPbmVMb2dpbiBBY2NvdW50IDEwMjEyNzAeFw0xNzAzMDYwMjQ2NTNaFw0yMjAzMDcwMjQ2NTNaMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaJ02AnJe5vq+zzkmrIHhRy8V/UxJogbJGEJW6nqrEmO7Q4sXO7dLIKxGccCEz0KAavGKWzSX9uhVvKpazpD4bW80wPQIgFxN3CjiA3qlYIfhhh4emSZo2AnaTuG4BPVGFNPx0jxXGAhh/3xkpIsqARJFPB6njT2+MwFctm3fockx3Yp4e1xoUD8qQR0f/8oq1LjrYd2Vlckmmw7qrzSqS8POHW/I1jx9Y/vAjTPWDKXmbmLcTe3188PDrthSyoBuaAGBRVTP9WTuYMh4kGvmfX6sNvIDGejUcUCq6IObRr4xLSZiGy5uoyqsQc9agAhQm+26Gpq0R3NSvN91JdbZHAgMBAAGjgd0wgdowDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUnbxBsHgNVq3OSXEuG5EkR0Jd1UswgZoGA1UdIwSBkjCBj4AUnbxBsHgNVq3OSXEuG5EkR0Jd1UuhYaRfMF0xCzAJBgNVBAYTAlVTMRUwEwYDVQQKDAxMYXVuY2hEYXJrbHkxFTATBgNVBAsMDE9uZUxvZ2luIElkUDEgMB4GA1UEAwwXT25lTG9naW4gQWNjb3VudCAxMDIxMjeCFDh68pDuHHtU247xoF11VZ0eDbKjMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQUFAAOCAQEAL/6j2qpMCrnolwKT7mfPEpA6btbtl0R0t6zSwYUVU9T3PK0/P3LKXvbjSySov0E4R9d5qlOcyj5CbYiuqAO2aON3xy82s0dN3FHRiO6kcjoRPwVIIF0S8x7tpzcPKa42zSPfBqMRw4ezUEzTijFriepkSWST1Btr3QeK2Cxhr0fC1xmw/YK82BV0/oVRslGL27ro+v3/dNY0A0r32Xe2+THomrY/YaZaDCPCjHo8dlxrX3D/mPfoiiKSkm2mGagQXT0giTHVo3oIq+u+KdrBcQn65EBcjfFKDIeFCdiVmO0xPl9mmWskVRLy2/wpuDIp6hnAphl9lj5DY48eBsrEXQ==</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml:Subject><saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">arun@launchdarkly.com</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData NotOnOrAfter=\"2017-03-08T07:56:39Z\" Recipient=\"http://884d40bf.ngrok.io/api/sso/saml2/acs/58af624473d4f375b8e70d81\"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2017-03-08T07:50:39Z\" NotOnOrAfter=\"2017-03-08T07:56:39Z\"><saml:AudienceRestriction><saml:Audience>{audience}</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2017-03-08T07:53:38Z\" SessionNotOnOrAfter=\"2017-03-09T07:53:39Z\" SessionIndex=\"_d5fe4830-e601-0134-4e06-0af7aa36d0f9\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion>\n</samlp:Response>\n`"
  },
  {
    "path": "testdata/assertion.xml",
    "content": "<saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"_e665af85bf88de41ef9886c0718ecdd0\" IssueInstant=\"2015-10-25T22:20:57.021Z\" Version=\"2.0\">\n  <saml2:Issuer>\n    https://idp.astuart.co/idp/shibboleth\n  </saml2:Issuer>\n  <saml2:Subject>\n    <saml2:NameID Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\" NameQualifier=\"https://idp.astuart.co/idp/shibboleth\" SPNameQualifier=\"oauth.astuart.co\">\n      AAdzZWNyZXQx6UL9kX1rPkSRwv/pFpk49idUCREsqJRkBQvfzT1Fd2ZsVQbw+QXIzXhBUhmPdydrqqXIC0NEMBWriN5zl1A+q761LIFNcElBcPKrolxyzuPt\n    </saml2:NameID>\n    <saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\">\n      <saml2:SubjectConfirmationData Address=\"172.17.42.1\" NotOnOrAfter=\"2015-10-25T22:25:57.083Z\" Recipient=\"https://oauth.astuart.co/saml\">\n      </saml2:SubjectConfirmationData>\n    </saml2:SubjectConfirmation>\n  </saml2:Subject>\n  <saml2:Conditions NotBefore=\"2015-10-25T22:20:57.021Z\" NotOnOrAfter=\"2015-10-25T22:25:57.021Z\">\n    <saml2:AudienceRestriction>\n      <saml2:Audience>\n        oauth.astuart.co\n      </saml2:Audience>\n    </saml2:AudienceRestriction>\n  </saml2:Conditions>\n  <saml2:AuthnStatement AuthnInstant=\"2015-10-25T21:25:54.423Z\" SessionIndex=\"_490202a68c08c6826cb589b1b501800d\">\n    <saml2:SubjectLocality Address=\"172.17.42.1\">\n    </saml2:SubjectLocality>\n    <saml2:AuthnContext>\n      <saml2:AuthnContextClassRef>\n        urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport\n      </saml2:AuthnContextClassRef>\n    </saml2:AuthnContext>\n  </saml2:AuthnStatement>\n  <saml2:AttributeStatement>\n    <saml2:Attribute FriendlyName=\"uid\" Name=\"urn:oid:0.9.2342.19200300.100.1.1\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\">\n      <saml2:AttributeValue>\n        astuart\n      </saml2:AttributeValue>\n    </saml2:Attribute>\n    <saml2:Attribute FriendlyName=\"eduPersonScopedAffiliation\" Name=\"urn:oid:1.3.6.1.4.1.5923.1.1.1.9\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\">\n      <saml2:AttributeValue>\n        member\n      </saml2:AttributeValue>\n    </saml2:Attribute>\n    <saml2:Attribute FriendlyName=\"mail\" Name=\"urn:oid:0.9.2342.19200300.100.1.3\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\">\n      <saml2:AttributeValue>\n        andrew.stuart2@gmail.com\n      </saml2:AttributeValue>\n    </saml2:Attribute>\n  </saml2:AttributeStatement>\n</saml2:Assertion>\n"
  },
  {
    "path": "testdata/idp.crt",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDODCCAiCgAwIBAgIUDPz+OwougAXSuQmKDyAEL46KlPgwDQYJKoZIhvcNAQEL\nBQAwHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MB4XDTE1MDYwNDIyMTA0\nNFoXDTM1MDYwNDIyMTA0NFowHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApa0K3OtkHwOnBKSJ7PxT\n7zry+p8kpu20d+whJs9mHW8w+DikLQ2orLPDZA34Xor0QdR6Y6+gqezIJqqpvuaj\nYTneQQtXD3neCGD9pPemyF4efEnl21YHryt6Juy6VXIcB6ytHGhmaWg41btdxweD\nli0b6M7Z6KAW5FjJUoqA+GqFY8rvdm0HZQN+ko4KRK7zTft6ZaPOSbQd7vMtU8bj\nMsh2XGLWx9G10jvCOFDUbsCNQ3xeFkV30rlUgjb6p2eRUSDWcVPs2Q/FG3t8TVfJ\ndDtRYps7QW0GDaCPM5hYnlSm+gXwkS8V0j8bGPjv7TfxxK3VMx6okIVsKga7swuZ\n4QIDAQABo3AwbjAdBgNVHQ4EFgQUT56D4cLSoNxs17FBY+evwXvL2jowTQYDVR0R\nBEYwRIISY29sbGVnZS5jY2N0Y2EuZWR1hi5odHRwczovL2NvbGxlZ2UuY2NjdGNh\nLmVkdTo4NDQzL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IBAQBiG0Nw\nKxslU74tcgjK8CBVahTs5s9Nh2s/En9lP6iWqS2wOHotZ19qqp+AJoIG0pJJpQ6o\nfRSHdWD2uHmF0F7Uzu1XBxxbV3oG8DmbhzUw2TAOsn0Czt8V30Tfn9U+auNW2XSb\nz27FACHplll7/T+pycCW6vUcw+boDJIG92TxqIMzlBQOzDGGOTGf/OaKXLb48rWT\nkEfMv//2Kh735TytX0bJsPmmCLlI9kLcrBNKgHGPNB7oeQNGnYOu+ALxSIugZ7MW\nLRx2jHND7RSVTetgfEEkkSzsebCxNKMdhIL62Z8VZgYUGD07EeV/3RZ0eV0q5Yf8\nBhBA6Owk2P264O4R\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "testdata/saml.post",
    "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNhbWwycDpSZXNwb25zZSBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zYW1sMi50ZXN0LmFzdHVhcnQuY28vc3NvL3NhbWwyIiBJRD0iX2I5ZThlNmJkZGIxZjYwNDgzODAyYzdhZTRhYTkyMmE2IiBJc3N1ZUluc3RhbnQ9IjIwMTYtMDQtMjhUMjI6NDE6NDkuNjU1WiIgVmVyc2lvbj0iMi4wIiB4bWxuczpzYW1sMnA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCI+PHNhbWwyOklzc3VlciB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+aHR0cHM6Ly9pZHAuYXN0dWFydC5jby9pZHAvc2hpYmJvbGV0aDwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgo8ZHM6U2lnbmVkSW5mbz4KPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz4KPGRzOlJlZmVyZW5jZSBVUkk9IiNfYjllOGU2YmRkYjFmNjA0ODM4MDJjN2FlNGFhOTIyYTYiPgo8ZHM6VHJhbnNmb3Jtcz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KPC9kczpUcmFuc2Zvcm1zPgo8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+CjxkczpEaWdlc3RWYWx1ZT4wYkZ5Q1IxdVdiNnQydW91RzJIbXFzaEtzclI1cVNOVmZOaml4WFBzdmxzPTwvZHM6RGlnZXN0VmFsdWU+CjwvZHM6UmVmZXJlbmNlPgo8L2RzOlNpZ25lZEluZm8+CjxkczpTaWduYXR1cmVWYWx1ZT4KRThjRnVlOXp3eithTjVIZU9JNmJLWnd2QkJEY3lhOGFhYUFvNkNRbjF4SzMyQjhhbFdCaEkzOFdTMDZqc2NEOEhOdlFDUTIrZ0ZIegoza3ZmM0hjR2o1TkxzZUhnV2xMbVpCOEtlb3dadE4vbkhGNlVSL2I4czFWaUx3YTFEcVF4VVkra29lR3NrL1JTSjVFaVY5L3JQOHdGCkFCQ2hOQ1dvSWlJWHM3Y0s1U2VlbmJWWmNJUVBHMEZNOERUaVVuTHVzS2szdVlodzFNZUpKTEVjSWdoRWxQT0lldlVEYjA1dktRYi8KTC83Vk1MZTFJN280RW5CV1lSSGdpZ1R5a2RwdDNNTzJVYTdvVi9oOW1IWmxUMWZPWENKM2d4QzM3cHVKN1pvMHZjcmVnZE5iSUoxUQowN0RYSjBCMEo0MS9jRERQZHNSRjRRVFN0ZFFuTjJyNkVjQlp0UT09CjwvZHM6U2lnbmF0dXJlVmFsdWU+CjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURPRENDQWlDZ0F3SUJBZ0lVUUg1NGt5eWVhY1U2OUoyaXd6OWJ6ZUxtTWFzd0RRWUpLb1pJaHZjTkFRRUxCUUF3SFRFYk1Ca0cKQTFVRUF3d1NZMjlzYkdWblpTNWpZMk4wWTJFdVpXUjFNQjRYRFRFMU1EWXdOREl5TVRBek1Wb1hEVE0xTURZd05ESXlNVEF6TVZvdwpIVEViTUJrR0ExVUVBd3dTWTI5c2JHVm5aUzVqWTJOMFkyRXVaV1IxTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCCkNnS0NBUUVBbEpoTjIwbmcyVk4vY1RyV3RxVUlOYVVzckhDa1lYYm0yeTFQVE40YjZmSkk1aGJ2Y3YrTFdDdUxrTGkzK2lQR2xCcGMKSEhmcmRKY3lobUJIUkhROVNvczNSSUg1THNuMUlnaldlM2h4UVFtVmVFaTV4VnhudzJZWkdIYWVYNFluSTFURUJKd2h0Sm15aXRrNwo0TEh5YlBHRXFPSmRBcFVuTHo1NEw3SSsyNTJHL2NPZkVxVUhNYnh4dG1IU2MvOWNoRjhiQnhROE96SWJKc0J5SG5xaWF3UUh3dHN0CnRyZTduMzI4Z1ZxbWYxVkhFMjdjZkFZaVNqdUs1cENzeC8xa3VKTUJOK2tnLzNHZzlvaTZhUjUwV1gxVlVGM0lCY25URGVpQVhSejMKUGdzVDhGbFZab3U2SWs5TlQvWTVJSE9aVkdrNjRTUkRhRzhGdUd4TGV4WHJzd0lEQVFBQm8zQXdiakFkQmdOVkhRNEVGZ1FValF3YQpBb1kzdS9pVG9JRTNBRGVORVcrVXUzNHdUUVlEVlIwUkJFWXdSSUlTWTI5c2JHVm5aUzVqWTJOMFkyRXVaV1IxaGk1b2RIUndjem92CkwyTnZiR3hsWjJVdVkyTmpkR05oTG1Wa2RUbzRORFF6TDJsa2NDOXphR2xpWW05c1pYUm9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUIKQVFCMjZyZHhwaE4xWUthZDN5RGhMZzZZMVp3Ym1BamMrbDRRQjFLU0wrY0xxaERuNWlNeTRWZFdoOEhwU0tScUN3b2ZMdGx3M3FPdwpvc3BqK21KYWd1WFJNcGpZT0RSUWFLUmtUckNHeEpodU5yUXhEWEwvYjZGT0VJSm5VWWVuYlBldnVOZ1JKYzFWblJFaFdVVVhUNDRLCk41WVV6OUZFaUcwQnNCSzhlY0NQS0J6VFEvaHdhY3pocHF3NnVxVk1xeEphVEdjbmxDVUhKQWhWSGlBOGxXSjd2YU5Qc0o4NnhCRnMKL0Y3NkV3eUZYSUtRYXJ1dmN2Q2hVN0dOTlNZZE5KQmE2SE85OVFXZEdicjVhTlE0ZGl1bm5CUWRyZGpnYlFJd3loS1RmYkZXYTJsNQp2YnFFS0RjMGR3dVBhNmMyNWw4cnVxeHFDUTFDRjhaRERKMFhWNkFiPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWwycDpTdGF0dXM+PHNhbWwycDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz48L3NhbWwycDpTdGF0dXM+PHNhbWwyOkVuY3J5cHRlZEFzc2VydGlvbiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+PHhlbmM6RW5jcnlwdGVkRGF0YSBJZD0iX2Q2ZWEzNDRkMGIzMGFkN2Y3OWU1MDZjY2EwNjczZDJmIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxMjgtY2JjIiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiLz48ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PHhlbmM6RW5jcnlwdGVkS2V5IElkPSJfZGYxNTllZTY1ZTI1ZDkyNDk1ZmQ4YTMzY2MyMDVkMjUiIFJlY2lwaWVudD0iaHR0cHM6Ly9zYW1sMi50ZXN0LmFzdHVhcnQuY28vc3NvL3NhbWwyIiB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCIgeG1sbnM6eGVuYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIi8+PC94ZW5jOkVuY3J5cHRpb25NZXRob2Q+PGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRDJ6Q0NBc09nQXdJQkFnSUpBTmZEMmh5alc3MmxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0RNUXN3Q1FZRFZRUUdFd0phV2pFVQpNQklHQTFVRUNBd0xWSEpoYm5GMWFXeHBkSGt4SVRBZkJnTlZCQW9NR0VsdWRHVnlibVYwSUZkcFpHZHBkSE1nVUhSNUlFeDBaREVTCk1CQUdBMVVFQXd3SmMyRnRiQzUwWlhOME1TY3dKUVlKS29aSWh2Y05BUWtCRmhoaGJtUnlaWGN1YzNSMVlYSjBNa0JuYldGcGJDNWoKYjIwd0hoY05NVFl3TkRJNE1qSXpPREU1V2hjTk1UWXdOVEk0TWpJek9ERTVXakNCZ3pFTE1Ba0dBMVVFQmhNQ1dsb3hGREFTQmdOVgpCQWdNQzFSeVlXNXhkV2xzYVhSNU1TRXdId1lEVlFRS0RCaEpiblJsY201bGRDQlhhV1JuYVhSeklGQjBlU0JNZEdReEVqQVFCZ05WCkJBTU1DWE5oYld3dWRHVnpkREVuTUNVR0NTcUdTSWIzRFFFSkFSWVlZVzVrY21WM0xuTjBkV0Z5ZERKQVoyMWhhV3d1WTI5dE1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXB3dGc5MWZHbTdOWkJBU3JBZEFTbUs4Nk5zaDFmTkZzNnB6NApGRmZDd3lVSHVsSlRLQ2s2UGgwVG9HUmNPRmhWZ1BXdFBZa0N3TDZpVW1KVFB6ajV1b0IwWTNlRjJNTSt0a2l4OGY0UlVyV3pwcXlNCmhFQ3RzdjRyekY3THBaWENXZEpIbk45WjZ6d0ZkTHh1YjZWMDFQR21JaHRHeWY5bUVxWjJxb25TSVBBem9SQnpaU3RQdTRTSmtKekkKTjNCdHR2SFZSVkYrRTVBS3hZTHZrQlR0bDVKekNzaXZzK2hUcnJEZy96d2lxN3lYT3dvWmh6UHJBSHJpWVBPTG0vc1B1d1RJQnhBSAptS3dwMGloREhwRUM1ZU5BWHZDaGtVWWNHOERkRE5wU3hqcEg2dWZ5Vkx4ZktXdEhVY0huSkNHbncvTFVnSTFTMWJkbGpleVplS0ZCCk13SURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVpdWNlWnVYZkZ1azFhQy9KMVJRVllRdHpsejR3SHdZRFZSMGpCQmd3Rm9BVWl1Y2UKWnVYZkZ1azFhQy9KMVJRVllRdHpsejR3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFuM1NoWFZVbApjYU04Ym10bHBGNnN0R0IwMGJOaW5WZmtHUTFPV1lWYjhKN2wzUVBiMnBLMGFvY2NiNk15RGhtdGhZWWVTTmNMVlVLNkoweUhDUVVDCjJjRmEveTdqd1pIaG5iNVJvTUxqWWFuMDcxMEZaeTI3WThMWVZOcGR0VDNSS3hQSHpXSVc4RUVMc1NoSFExVWZHTlBRbytPeGRWbGoKelFHcERqak5QaUZLSkZSdDdBNFhVUkhmUzQzZDVtTWo2em5HSGNzUDRYcGNRTFpYcFF3Rit1N1R5SHRBWHdLT0lhblJ1R3J3b0J0QQpXdlpCZ0VKMDQ3S2RIWkd5eGE0MnlXSUxGVytmcmFLNFZ4NndvNTZMTGx3b1RFSEI4WUx1SEF1b0Z0WXhxNGZPL09SSlBseEVOc3pUCnhwaFhhWVVvcnlSeVBDaXVNT0tvNzcwd2ErNEQrZz09PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPjx4ZW5jOkNpcGhlclZhbHVlPmJLSUpoUC95MW9weFlENGlOWGJOSCt3RVFFdnBFZjhrM1ZsTjBaQnRydit3VGh3U0JoRjBvcEdsaWhZb3lvNXdZMUhQTjR6cXpRTVUKQUJ3OHpLRDVwVmYyeURIbEJ1VWljbUFVeU5LOS9OTFQwOHk0elUxMk9ES0k2U0tuaFY5UVRwZTBRdmRnUk90TUdGZUp2T2JGWnBIKwp4TmNHUHpzSjgvQmhZczQwK2JUVUk2ZVRNQkVjaTM2MGJOc0ZONHlBT3g1S0dTejVpQis4cFphLytCVlltSkd3RjBxenlhQ3haL1RKCnZEVDhML0dEc0QxT1J2OXFjSjR3SEUvaTNZUTBiRnBRNFZrbEFZb0s1enkrRjAxczFqTU9vWjZ3N3VXZmdQMkRZSGcyQi9ndm9SN3UKdERTbkY4R1V3NG1WSkRZSEVQalBNNXE5R0hXTzErWlY1UzIvcGc9PTwveGVuYzpDaXBoZXJWYWx1ZT48L3hlbmM6Q2lwaGVyRGF0YT48L3hlbmM6RW5jcnlwdGVkS2V5PjwvZHM6S2V5SW5mbz48eGVuYzpDaXBoZXJEYXRhIHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+PHhlbmM6Q2lwaGVyVmFsdWU+anpFU2tPWjg0TFQzK2d6bktCT1NiQ2g2bTF3d2w1emVSYzZCS2xSMnpldzlaMXo2NFY5RngzbEFzbFZNcTJ4VmtRaTlTNWI3bTI5VAppSDZPejVCNXdqL1NCaU4vcmlnSUp1eFltRGtJSHZoaURVdXhxSkFyT09aZlVuL0JUOXJsbHRiZ01UcDlNUWVEcGo3cTA0K1o0aDlUCjdYaTlnMzh2V2t5cDg3V011SHFkcUxTQzdJZmlhL25iNUcwbE1hRTZnUi9zSm1oTWYycFFzcnR2YlpET1hIWVRlRDc1YjhVZE5oQTYKakhZV25jOTFNd1dISkREZXdKRVdnWDAzdzJ0N2pZSDBUdDM2dXBzSGFFaUxEYzBBa1hFRVpCMVY0SlBUTTBLT211MWt1blFEaWpSRgpjSXA2bk5WbWxRamFaaEJ0ODh5R1BvNWxwUUtXRkpUeEM1WENtWllnbi9GRm50RDhCUld4WGt5WDV1eVZTTmlxckhENkltRTNYclEvCkp6VC9NM2M5SU9KMm9LUVJzWEhwK1JrOHdOVHNaT0c0a0ZYMUhjMmZROFJWNlZSc1pydnFTbzJKZGt2Vnp5d0NWY1dRWjBvNXQ1UjUKT1RqUDQ3MlpzTzVZdnRKd1l3djlXNGFzcm1WNmlpZjRGcHJZUTdjOThDRXNaaFBSTERoSERRdzVJcVc3VTI1VGRyLy9YQ0RnV2JrVQpSd1A0VTF2emM5ZnpSOWpjdzlrZjBEc2x1M0JSRDZTRzI2QU1Ec3BJaG5ycXZ5Q25hc2ZvRm9KZVlJRnRCYnRlak4xN3NWVXp1cWtXCkc3Y0lYWWtOYUFNcWlMbFNYV3pIU25DTjRhc2RyUHFFVDgxLzd0YTZXeTVVOHNnbkdXRnd5Mk9OUUFBTmRiZC9KVHVRcFpteTBhdHIKVmViQUpEbmc5MUJ2Rmc5Z0FiUWQ5cVNZZHpRVlFnekpSY1NiYWwzZ284R0FQU2FKTmNFMXExZU53VjdmVWU3VDRrbGR6RXZ1Mks0RAp0YzBpaG1kSnFYMXRNUXd2Tk9BTzZKdDQxdVIrZ2NDMkhMQzIwMVJjN3R5NDdyY0ZIdlNOMnJnQjRwVTluZm9LSDhWL2REWXdYY0JTClgrMlp4TG80d3B0NmtFL3JOSWtzTjBFMzFzN3dzakRYODlNL0pJTFNPL1A0ZHhpVU1aU3VDOUJ5T2NVNURLR1pRUDBGSXBWeFJOT3cKQ1IyK0RjNjJsa0JBbHVFdXJ4V0RvdVZxUXZOOEJPN252dUR0Ylg2ZzFseXpvVWNwb3h5MEcyZjU3Y1E1RzRHZGhMTHZoNmlMSDVLRgpoankxbWVNNktuYktqYW8xVm4yZ3B2ZkszaUpuaDQ0WTBaNENMVlo0UnRhZ3ZYd1VmY2ZmWHg2QXJ5UEJabnpPdjY3c01NdkJyVzFECmN1Y1VKdjNCUXBXZkU2TG44K3ZtRHVCSUJmWllsMWhreDB0akFSTE9odklkekVRcGRuV2lkak9sRWZ1MUcrV2F5QjBEM2xmUHhVeGEKT3o0ZFN3ZDJHV1Z1UTdocTgwcElaYmtUMGVxR3NmdDJNYVpRTTdZb3JnOWd3MExuY0d6V1FTaE9SWG93UitkSnVmQ3NKc2hrM3JNRApoNXhuOFkwSXpSZFRyQTZIMG5vTmhhdkIxUlpkd0dRMHJ3T0R0eC9Qekk0ZzZMN1NVdDVlNGFSUmwrK3F1QkdYU2dhWWNqb2taemdjCmVQUndQWlRyNGZRYTFNdlNYenBIcUl6emRBc2lmczZMRFZBdU5hZkt4T1h5Qjd3YzlTTkk3b2RrcGxNeDNiMFdhNngzdjZ0emY2OFMKeEVJWlBVL09ZdE0xSnFTMElIbVREQ2tHb21IYkd6WXFmV3FhUG5meUV2S0VEc2krWC93ZWtMdVNoYllvdVkzejQ1bEd5R1VKVmRGcwpLOVhieUxaS3A0WlZtV1g1anV1eGgrcWF1QlUyc0Z6R2phcVUxS0hXRmNFSGo0Nmo5OVpXajR1RlZXZ0ZFbVpsZXFKUThhTTM1UzA5ClBlaVk1aU9vWW00SnlDbXdRcFlaNzlnZGpzN2J5bGN4RmFmOUp3dHlYakhQUEt2TDRkYy9zN2djaDFoQk1yaU5NTWsybGcxN0wzamUKTjg2WitNMy9OQWgwZXhiUUI2QXRrOHhDcGhWR0hsd1lQSU5UWCtod0d3cmZWaTM0NmEwZG93VUh1ckxSUlBOWUpTVTBZOUoxS3MwMApXSlBSQnZpUlppQUJDYTJqOGpDb3gxejgweE9HOHduOGhCZGJyUFBzUjF3SDZzR3Q3dzJPalROam14eGZWSmVzWTZqeTlzaE5FUUJiClhvSlREY1BaS21tVGxadjI3eDdpTWNIa1cxVHZXemlKTndoTjFiMW1pTnJkU3JuQ3QrREV0Uy9wa3FaNVdzMUxtM1p5NlFlYmVaSUQKOThCNjI0cXZZMU5idFBkRlIyR3JLMTZrUEdCNjlVU0pRWk9NT3pNc3MvQmM3L3YwWTYvU0NnYkxBbTJCT21xWGt1RVlvWmhBYVNtUQpaRkhrWHFVVTJlZ21HMEtIQ2hLd21rd0ZZdG0wanVkbTJQL3kzaUtFSzBEMmhwSXhZSVErWktta1drS2ZaMkdJTGZkSkI3UWN5ZDZrCjNiV1hWdHdMeXA1ZWdSRlYxT1U3Ti9kQ2lUWEdtSG12b1ZTSjhHN0xkY0RoMGNwQityd1ZGYXRSbStVLzVldmVOQXF3ZkV4dnlaZVkKQ3NmOFNXWVVVaERUK3FTaW4yck5aREJnWnVncHBYUFVFOGwra1JKSGJKR3hiZWpuKzlxRWl1Q0hhN1FzNW43VnpFL1RnR2ZXSDVtUQo3eDZKZFh6a1IzeUVCaHFpOU1OQkF3QUxQQm04SFlSVzRaUFZtcVU0R0ZGY1ZJbDdHVVJybkViUU90VlE5TWFyS0JSMWpUYkcrbWduCmdBVGR1eGVTMWcwZnowYzA2ckZaQVZ5bU5GS0s2OExsWG9CQ2tVdTl6SmIyeEVFL1IwSDd4RC9OVExSL1I0cXNMUXVRbHFnZmYxS2MKdzlRd05IWlBDVWwreTV0VDNzL3lrMitwTnU0c25oREpza0ZmSTZiNTNtSEU4OEV5V2ljQUthS3FjdnNGSVh5ME1QbE51Y0REUHhPMApsVksyNzJneHl6WEgyYWwva0paaU5kclRZZWphV2c2TFdpeGpxSzFxYWZIVXVmb2xWOUhsbUNTOXdmWlpJU3FHQ1BpcUM0ZGh3NXFxCnppSTlYalB1L0t5RmYwUk1WWlQ1K08xMjhhKytaSVkrWnhxS05lSG1ZazJTeTN4Y3hVQzBtUEtvcVQ1eHhNRUE1N21ueWdhMjdpOWMKVGwyYUlveXB4YjFzNVI5V3AzT2k5cEltcVBwT2ZmTmFVbXZlMGp4TXl0RXdMbWJWeXE0R2FpUjBnV0JEVjh5dXRaY0NRQU9EZmI2WgpTMjAraG53T0JmYWhkZWRZOU9pNUtnWHJSd2NZN3RwalkvNXYra21jb0UzamVFNHhoNGxySmo5UzVMWkppcEQ2OUhraTlmNzdiTzAxCnVjcWN1Z3RwS1dLUGowNUtQdXB4QjFwaEZYRWZSemJDczhqZXczd3d5YzRGVnlVQnN6OFE1RjJYTTcweFVLK0duekNzWko3T3JEQ3YKNnowMjNXZjFyMHJvQytycUEwaUdsMlYzR3pIeG42RDVQL3JIekhJTGxhZTdSMnVDMGNHL1dJYkExRUpYMlU2a01OVmxidVM3cG84UgoxWEdLbExSTHlmT1QrcHNBWHREVHErU28vM21HV0VMUHA2TXRMeVlSM0pRR2I2OVJGUEhTS09SMDJ5M2h5b3d6MjV1eUNNNThCdU9oCldrWkxWVUJSaUhFZTJabC9DZWhLL0VtMnRmTFV2UnJSaDllRGZlWU9qeVFPVWNidjlsOHkvZC85S2NjbU16UnJFN0JUQUNiakFlYmQKdE1kL2QycWtxWE9LTFBvTzdNdlRnRW4rYXZEREoyM1BPZlhVSmdzeXRRYkUwdjNiM0pnRXVkOUoxT0t3cnUxOWlhdXkwM3FHdTRpSgpZUlVTR1JwazB3Z1djRWo5YlZTeldhLzVtYUlLU2Jmd3ZJc3hJdEpuS2xPV2pvVElYczY4WG9uRFJUSXc1c0ZsV3M3R2NXdTBsTnVsClhCRm9saHlHU3ZzamE1dklHQ05PRGM5cmJwS25OR0ZicnRVTzBTSGZUalM0M0lOQm00akY3UVBmZGVPWW1tNE44QVdoWUIzS2o4dmoKSTN0bWZLbGtYOWprTzM2blA0cTdJMTJBaTVjRGNEempydzBrazN0UE85MGhUdmozSGh4WVdZSHE4b3BTcExnR0tqVS93Uk0wcnptagpvdUJsbm5tVGdUcitMUnNvQWZudlFSb0x4UWc3d2laMlpsR3p5TjZUa3JEcFRSUEJSQmNhcFpZVnZVRWNTRENUQW4xYWpHT3dKMy9OCmxISGtrZGUzQlRWYStUdWpxUTF3bGgzUEhXeXRQdHpqcFRXQWsrT1QwL1lIQ0tUOVBOd05JcXNXN3IwbzFEckVFaVhtaE9XNG9XV3gKOEJ1VEJtaWZ6RWl5ZTlUMGsydndmRXpEZ0o5U04wWWZqVnNUSWJ6dXArci8yNFM1bnFKUkc4ckFSc09Kem9xMkVOcU5KNU9XQ3podwpNR1pQRXVLZ0tLc0JYaHJjL1VqRWF4dHJEWFpqcytJTldOUVU5alRDMUo4TnVtaXhDZXNaZ05aaExzcWxMcTFkRUowVHVUZkRiYTI3ClkrR0Y3OGZSMDRuc0FTbEVSN2JFdlgzSHAwdGdpaUcra2UyWVArVCtDRmIzS2FvTVpVTUY1RXhOOG9wZk1JY0NxTU9vcm0vZkFyRk0KMGlDMVNwZ3Fnb2RsK2U4c3RhSzBkYm1hU3laY0lIVnYxTFZyUXhrd2hiYk9LSFd4d0JZYmFkVW9ZeWFXeXplNGFkZGp2cGtPdGMxTgoyVU1kNnozaEtvU1c5RzhGMGRBbldldE9mMXRxUXU3cXh5YmkxU3AvdjZsK2E2Q1RTMVdJZUdIbnEvWTRDc0Q2L0luV2V2cEhyR1N5CkU1VjBBSFQ1WE4xZ243dTlkYUo4cWxWMzVLWnRvdXYrTFk2NEhTbEhoUmtlQ1RsZ1FHTmNqYjdRWm1GWFg0VlQzUWlnQmMxQlJJSzQKb090NFhBN0ZaRnp2SS9SR1Y1djRPRDJUbXVPeHlmYWlvbGtLT25kTC9aUmFKdHZ0MmtWc3NMemR6d2RlSURBTEkzNGp1bEZDRFZvbApHejhiczEzUUxBZVRNKzdRSXJZOEFhK09UN2dPMkVweHdXbHo4M3cxLzU5VnpGbDVJNDRkWGZnUmY2cFVPOTRDYkxES0tLamVXa0o2CnRRVjJZYUIrY1U3aHVGdGUzazdOejRXbVg2WStIS1l4dzR3MGFxa1VvMEV4aGVBVEZHOW5MVCtxb2xCSXNrOHMvR1VUdTNZRGl6cWIKMm4wVlpoSnZ4SnBOc3dIWUN5Y0JGRFptRHlrbFBoa0poM3I0U2hSSllnS2g1OTZtdjVZMlhXUjlBdmN4NDd2NlNJL1E3S2pxYWlxLwo1NkFUR2JiWUVTQ2pkcDZUVmtFUnVGbEczeUdrbnlBVkRydHJPaFdQT095VTk5eVJlQnBxQjZ0Qm0rUHIrbGREUlpxM0htcHlKWVFDClY2cm9pNmNRQXk1OHp5TThkUlRoNUZwMnpIK3BDNGpQY0x4dTVmSUMrMGRrSFJpT2RaOVFsNFBDUGJHSmM3T0dZUHR2ci9GTHQxYlgKTXNnTEtmNS9TZm1oUGhFMnVlMkMrcGxwSmtWNkZkU09OWXpMek9Lb282USt6OXE1QTB5am5TbWpMak84Uk1oMmlYa0k4Y0J3SkJTcQpVWGtWL0c5WmhiT09ySjFrT003ZFN2R1UxSFQvVE5jeUFLK2laajRuQTRMa2xxUndWZnU5U2xhNUJualRRUjQySEtsV2JydDg5dDhUCituN2RxdjV2SmVxLytEZ3MzbytOVENhTUd2Y2RnR0FKd2h3RVhiWjlONnBaME5BMXhBYXFsYkpIcVIxTlJCRFpTc1Q5VlNPT3lBNkMKbFhweGVtaXZ1MEFVcE44dTlPd0U1S0FxZEkrMVM1UlNLSGtWU1kyYng2MFAwVllPd0VmVG1hOGx2YzFkQXl4YUtkVU9JUnN0QnlXMApvZGdrSUxtMEZkb0RjREhKenc1dGY4V1dHcFlaMUZaL0VZeExFeUNKVzgxQ1lhVG9ZUXF3amRBYzZDQ0lrcjhtYitac3UyTEF5VUJQCldGTVowTkFzWk5HWG1WMVBrZFdmbG8zdGhLOHd4VWVZNkVUSTdRcFpSYlJPdk1mR2IyV1d4ckpvaFIrZVBZSm5aYWIwZ29PdTFpeEYKaHd4SHUwdVBWL1VhSEloTUtXS0VYWnhqT2pXVTFCQjd6MGtWU0d0MjJiTGFVcDlFNDkyKzJBSmJmNG1jZjFPSXVVTFBaSzVSYlBsbQpVZy9rOGRCeEVHSzFBajFiYWZBOUFSMld5b0YwTlkvc3hMYTg1Q01uRmlxM3dSaHN3dm05WnZrdlZTRU9vZlV5OHgzVGZtMkxYQVpuClNPUE9icHNKL0E0c2lCbllicCs3TVlOSUZUbEljRm9MbzZwS29CenpoSlF0WStpVytSVHRnK251NmNWTVJXdWRtb3hEVkFGQUx2TVcKaEZCMWxNbElBdVNzNXVTK2NGekp3MTBabUZKR1BtVTk4STVHM1daYURlMGhPSktRZWpEV05nczljOFJZYzJRY0prRlY0WEJlNUlFMQpTSlhQVDd3cXI4RGVnZlNKRnFqU0tSVlRmZzRubDczWm0wV21tdFNldUx3YW9NTGluR29xRXo1M0xGZ0RlaUFKVkV3cnJIcWZLeEFpClRPNzdmTUlQTXh0MkJ1Yk50YzVHc3B4UlFoajdxSmhUTlFPdHJySEJaSENPL1JRZVQvdHdxTCtkSXJxbnpPZ29Fa0tZSTd5RFVPcmoKTmQwT01SMzVUT0dLMW9qSU9EUWpQYi8rTVJoYnJHdWF2MitpbVRLaEtlZFR6dm0yTnhZcTI5ZnlyZHFxbytEeS9yTXh0NGcxV3Z4RQpJdEI0OGRMcmVvaCs3b2diVnp6MjEwVkVjRVlkRTZQZEV0bDFEWjNXUUlYb0hrTDlGREtYcU1ETDlZOGFHSHQ0Ukl0TVN2M0FLRUF5CnM2V3E3WmlHNmpaazA0U1IwZndWR1I1dmV3aldsbnZVRG1lMDQrejU3Mi9VNTJ5TkJuMXJSY05QemsvMlo3MklQN3cvcm9lNEVWM08KcDk2UmoyemhLOW1Fdi9jMGJ6SWc4ampHLzd0SmRackhDcTl6QzNvdDN1alRwMTJCR2dxUThNcTJ1bEdxSnBvOGh4aFlvR05relNYMAoyTWpjVWZxdnBtbDk0Y2lHQU4xMzRtZWN2NlI3UXF2eVdFanVSU0E0TDhUVHBiZ2JxWmNlaTlEa1lrV1hJbW5OeDFxVWdjTWVoUmdYCjZFTHJOUFkyMENmYmtXVGl3UW1lNGJTZ3ZjK3RDbDVqRjFucXVYa2RUcGoxUFdTREwyUDNUam4zeitma3NUcUZIODJaaE5pbzhuN2kKdVpxM3NzOFdPTWlML2tEUVFsUDkxVS9EWkE1VFRDaVpTcE12RnNpZExFSzZFMGFjajArNXdoK1lkdHBhVSt0cXhLRmZkWEttcytYSQppRXdLcW1aT1VGVzZBQy9WOGVacyt0K0pzY0tWNXR6SjNUanh1d0d5UENTWnk0YmFDdkxTb1htTE5FUk84S3hCNnBLdWw1L24zQlN0CjJJOGpWRmoxUFdCYy96Z1NvZ1RUMVcva1NScEVNMC9OL2N5ZC9sVFBCd0xxck03MitDL1YwYXp1ak42OFRpWk5wN1NsMEJEY0ZQVDAKdy9uNjcrZVV0V2F4Ymc0anVaVERyZ0p5R2VZdlpHRFByMm5LWXZVcFFZVWJVOTk4MzY5UUNSU0YrUlNvckJzdjluWFJOT1psWGFtcApXOTZpdUtKU3JaOCs4SURialNadFIvY2ZaYUtqRmFGbGNvRFp5OUJBK2sxU1BJWU45aG5wQm0vMThUR2lSSDRBMktSblgrVTN3ZS9TCkVRcCtIb1lMaTNCS3piVmlVYmZnSHM2N2thUnVWOTJNa09pSXJqV01HSGdFMWV1MjRTcHZqajNCcWx3L29RWjJyZjQ5bEwrQ2dCdUcKWWdWazdackpVOWVNZ3Y2U2NTSVF6RUI4OEpQK3NmTE1aanFUeWgrL1MzdXloZkMwZlRWVHNURmk3ellaVGVwTEVvWThRTTliT3NnNgpPdDhLOFpZcDJDMGhoV1NVdFVkU3dVUzVOSjhOQnFKVzFmREZ4WG9talRMbGxGRVpvQk4wMjFDVWVjUWhGOVZyeE9kbldyemEydUJVCldqRHk5YUZWaHZLRTJWS3VzSzk1MnlOQkt3amxDWmJCd1AvdXk4OWJBbk1LNW5DbEEyUjgrWnRyMzRZYnJqV1NibE1MT1lFM3U0NXAKTmlUTktVcEM2a0pQQ1RzMUVnbGNFVm5NdGRPMXFXMEFUVm9hVjdPNzNKOHhPbFVoVWdJV0tjbnp5dXJ4NFhGZUh4dHJ0TmdLVVJyTgp3c1VLOUlnR3d4dXpqUksrWE12NDdtaUZOMUoxb1JHdHRaang3WlJURVhOL0lGLy92T0hQdnlseTZhWnlzeDZrWE0zbkphdHBDT3hSCkM0OGRTK25rWENPRmE1T1FGQUxQdkVnamJXQXlMMi8xV2lyNHEvbXV0QXUxN0d4MDlFK2tZMWovemR0ajVIOTNmSmZXTy9Jd0tpeXMKYVl0TUVpdHJ6aHlOOXVCem54SHUzVHFVSGxMN1kyL1c2enE3SmRkdm1qOHdqS2dvdW5KeUJHclNVSGhvcGR4eFA3c0tKSnNqQ0lRbApVdndoa1BidXhmeTg0SlE4R2dOaUtqQzhweE9sc0RXSVNSZ1Q0UEJSekF4N3U0YXc1U3pLbk5KVUMrVmRMZDFNT1hyTlBUM1M0S2IwClJWT09kNlJzVGlYcWNndGd6QnN2bzdaL1hCRkY2QUE1ZklzWG1wejZ0RkFoWThRUk1NcDR1NG5vNVpZN1g2RHMyc1QvVU1xSTZ0YnoKdlB3b1BvczBnNzIwelNYQlBneFhUWkRweHRLZHVnVFNUVGpHbG1RVzVxeWJoQ1N4aC80T1AxWFBiTVNvVk9yT21yWEhnZXYvY0lRcQp4ZGpFZVFMTFlMSzFpRkd4MkF1bkhJNUw5dzZQT1ZveFM3ejAvTWt3VUJGNGNlVkNWbFJLbVZ0WU9pbDFWV0VUSmloZnRlOG0zd2VzCjlrb01pQVFlcnJPc3lueElEVEs3bk5ySTZZOWwxQzJ4MURPbElZYnNJTkVVRWxraUdGQVhXc1Vrem15ZDNFZE1tTkF3NDk1b3hrM2oKaDQ2enBnay9WUmkwUjNrdlFidk1pU2VSM091ZTV6eGRYaHJZTWlpMm9vWmFCaklGZ3pKY0ZJN0kyU1AvZ1plcUJMVGQxY25yK1hGZAppR0FjS1RSNTYzNHhzMkFJMlNJVTJyVkhBVzN0dVlPaVNtalVKOG82VnpaREZmemhOYVR1UmpsbUE2Rm9jTUlNb3RyK25GZThsWlRLClp0VEphWVlnSHVUamZZNDFwQW1UQlpSaHZsWitHVVZ2bTFnSm1SNzBTcmFPL1NRSzFpYkVzM1RjOGFzcVJVWTBiUCt1UlNjanJaVysKZ1h1U0Y4eGFUY2dVUlhTaEx5bGtQSDI2WmZlQ09Od2creEh5SVl2SkdvU3ZPQUxxTm9YbWhGdGVMRjJlVnZMTldYa0ZEdzdTTWFoNgppMFZseElCdVgxVEJwV05HRWE0TWs3Qnh4Z0xlSGN1NFpib2FRZWxCK01CMGtPVEtqZG5ZaTJ4ajM0TVFGV2pidlZETzdNd1dPazVyCmdhRkZqdlVmY1NHUG9lNFN1cFV2ZzU5NnRzUHprUEJ4TVBEMjBueWx6RktGSWhoaVFqbXVwdERsNHl3dG1wdnEzM1lUdWIwRVpWc3EKRXpzRjkxUkxWVFN4dHhUOVlJSEVFNVJkWTUyeEQ1Q0V3amtoVllWMEo0aUF2bGlVem55U3FvUlZyenBqeW50aCtJc1pjM2lNTVlZWQplRFNjcWpRNkpKeDN3UmVLL2phTEpqR1FKemNvYVgrMGh1SEhGRlg5OUphNFN5RlE1QlhKaGxGd3E0alkvN1liUiswcVVxRm96NDFPCkV5WGpWV0VsR3drQUFrSlk4NXZtMENCc1U3ZE9mdC9LUDUvK3l2ZGJuUkwyRENGZEJJWmUzWFdEazlZVGs0NDE5MkYveVVqUHI0N0YKQ21XcEp2dTFWTzREMGFoclpJZnphdE5WcDJzYjV1cnRZWVVOSWMzWDB3ekFFdVNCZkRNMHZQQTYyaUhVVW5rNGdLL3h4Q2ZKYzRMbwpDQm8xalZ5TkFvaUUrY1lCN285K1FLSHRRTmt5aXNxaG9EUFdxNDUrUnpNUW1VZkFVVHg4ZmN2bVlWN1pWSm1HVW9DTFB1MnQ4UmVmCkdiVlUzV2lSTElOODgxS3dhZWNWdFlEQW1HVWNIMkdDWllLQ0JCMnYyTHpYN2JBSUlHMTloVGJRRUFHNVROYm8zbHZNaXloUWZQb2wKdFlBSVhXbWcwYWdkWEVGQ1k1cWt6RzR2QjMzYkdEU2xjNFZ4NXFpaDhOQjVlUWNydFJUSVRPaDAvcTVlU1ZQcUt3Ly9QamZCVHNpSgphVlVKQWJWRkhqVnFKalRoY2NkYWdudHJOY2lybWt0QmQ0NEtia3pJM3N5YTh0WjhKRU9LUmhPekJZUEY5eWxqcm5icnBIL085aTY2ClBYY002N09LMVA4dng2ajNzTVZJMnBwTVVXVlpJc2NXa1o4S0JQSmV4QldRQkJ5Y2dBTlZFbldKczlCUnU0a3lEeVd6YjlMTjR3Y04KTFh1YUJ4UXlWZEttZm5DcFd5V0JFM1dCUU1LUkNxZzJiL2NLczdBamdlUk5waGRCYmY3K3Q4bU0vUkZzVUhSb0dEeUlEbXA3SDBLVgpHVHovSGxDRi9GU2ZLdElnOHdrTmk0TnJBbFFrb1B0NEkrcUlqYlB5d2grL05IQVk1L3NzWFZnWEM4Zk01MEdQd1BQdUkxU1BwMFN6Ci85R3hIOHdFVm5TVy9lcEkrdXhsSHA4dEpKZ3hrVjFENERwK0YyRHFYL1RkSHVadDJUSUR3T1FEUkJHT084SG9xWnJMSng2V3BOK2wKSXlLdUR3TitlenBZdlZlVlFmOGFEN0VHQ2VHc3Q5NnlXM05kNW40NEExVkdlb0ZHckNFTTdIWm1QZEpsUE45YW9YL29UMHZsYUwyYwo0c2tCMnhmZW9ueE16N2dOU0dFY1p4SVhlTDhmRWE2cVI4Kyt3OTdLQXExQ29laHduS3NxZ0dPTmJzeTdLZEU5elJvbEcwZG5nTzIzCnBKUFkzejdnaGtnNk01Nk1FbmlkR3Fic3d4S0lqek1EbWlDTlRrZkYxbmpuKzFlck9zN3ZtOWtaZmF4Z3Z4Q0xyenVKS1c4SUZ4YWgKVitkRjNJV1BoQXNUU0N4S2tSRT08L3hlbmM6Q2lwaGVyVmFsdWU+PC94ZW5jOkNpcGhlckRhdGE+PC94ZW5jOkVuY3J5cHRlZERhdGE+PC9zYW1sMjpFbmNyeXB0ZWRBc3NlcnRpb24+PC9zYW1sMnA6UmVzcG9uc2U+\n"
  },
  {
    "path": "testdata/saml.xml",
    "content": "<saml2:Assertion xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" ID=\"_c0c84b03960d4845b3931e7e429fe7fa\" IssueInstant=\"2016-04-28T22:41:49.655Z\" Version=\"2.0\"><saml2:Issuer>https://idp.astuart.co/idp/shibboleth</saml2:Issuer><ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n<ds:SignedInfo>\n<ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"></ds:CanonicalizationMethod>\n<ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"></ds:SignatureMethod>\n<ds:Reference URI=\"#_c0c84b03960d4845b3931e7e429fe7fa\">\n<ds:Transforms>\n<ds:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"></ds:Transform>\n<ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"xsd\"></ec:InclusiveNamespaces></ds:Transform>\n</ds:Transforms>\n<ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"></ds:DigestMethod>\n<ds:DigestValue>njFuiDnD41G6xI2DUPqLG24GWBYuzrYurVWNH6CXHlA=</ds:DigestValue>\n</ds:Reference>\n</ds:SignedInfo>\n<ds:SignatureValue>\nTUg7S7GdqWUYm7EkdBkH/k3CnqUm78c4IQxyB1MPMpcMAswjHQnUOY4f3P4EssYZRkTvk5Xazi2O\nr7DcN3f9U7FXtWAVD0HzBkbVKNM+jPCSKxd66zRUUFINJbYi/WJePiIveuSaUiK/8JJgFXr5z9GR\nEQtCuJTBAIf4JNUv0lhLWTACwrEYirtsrKrJMT0qd3Ff1iNuw9ufcMXuUJCiWGa3x3hTbV6XFmGY\naMDv43aKAI64ytRd4URtJtKR1L6zt85ncF3FVwMdE9XVTzzKhaqDKafa4H8obZsIUwUDsY/k4qlc\nwt2/lVq6JE8I2v2oXPY817b2v0aP/Z8SyImgCQ==\n</ds:SignatureValue>\n<ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDODCCAiCgAwIBAgIUQH54kyyeacU69J2iwz9bzeLmMaswDQYJKoZIhvcNAQELBQAwHTEbMBkG\nA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MB4XDTE1MDYwNDIyMTAzMVoXDTM1MDYwNDIyMTAzMVow\nHTEbMBkGA1UEAwwSY29sbGVnZS5jY2N0Y2EuZWR1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAlJhN20ng2VN/cTrWtqUINaUsrHCkYXbm2y1PTN4b6fJI5hbvcv+LWCuLkLi3+iPGlBpc\nHHfrdJcyhmBHRHQ9Sos3RIH5Lsn1IgjWe3hxQQmVeEi5xVxnw2YZGHaeX4YnI1TEBJwhtJmyitk7\n4LHybPGEqOJdApUnLz54L7I+252G/cOfEqUHMbxxtmHSc/9chF8bBxQ8OzIbJsByHnqiawQHwtst\ntre7n328gVqmf1VHE27cfAYiSjuK5pCsx/1kuJMBN+kg/3Gg9oi6aR50WX1VUF3IBcnTDeiAXRz3\nPgsT8FlVZou6Ik9NT/Y5IHOZVGk64SRDaG8FuGxLexXrswIDAQABo3AwbjAdBgNVHQ4EFgQUjQwa\nAoY3u/iToIE3ADeNEW+Uu34wTQYDVR0RBEYwRIISY29sbGVnZS5jY2N0Y2EuZWR1hi5odHRwczov\nL2NvbGxlZ2UuY2NjdGNhLmVkdTo4NDQzL2lkcC9zaGliYm9sZXRoMA0GCSqGSIb3DQEBCwUAA4IB\nAQB26rdxphN1YKad3yDhLg6Y1ZwbmAjc+l4QB1KSL+cLqhDn5iMy4VdWh8HpSKRqCwofLtlw3qOw\nospj+mJaguXRMpjYODRQaKRkTrCGxJhuNrQxDXL/b6FOEIJnUYenbPevuNgRJc1VnREhWUUXT44K\nN5YUz9FEiG0BsBK8ecCPKBzTQ/hwaczhpqw6uqVMqxJaTGcnlCUHJAhVHiA8lWJ7vaNPsJ86xBFs\n/F76EwyFXIKQaruvcvChU7GNNSYdNJBa6HO99QWdGbr5aNQ4diunnBQdrdjgbQIwyhKTfbFWa2l5\nvbqEKDc0dwuPa6c25l8ruqxqCQ1CF8ZDDJ0XV6Ab</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature><saml2:Subject><saml2:NameID Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\" NameQualifier=\"https://idp.astuart.co/idp/shibboleth\" SPNameQualifier=\"https://saml2.test.astuart.co/sso/saml2\">AAdzZWNyZXQxAVyT8pMdokSCQIwZcewBdiLGv/UGZX4UNVpUI5QqkXPxy/s2H7BHxnT9AnVoDdLcKVhMcZrqHsnx6rB7YHOCQFymgctznZPosV/kNb85pM6ptKly1SqxBOw9iicrUwVrBOlbqZpRJufAGG8/dT0Q</saml2:NameID><saml2:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml2:SubjectConfirmationData Address=\"10.255.63.0\" NotOnOrAfter=\"2016-04-28T22:46:49.719Z\" Recipient=\"https://saml2.test.astuart.co/sso/saml2\"></saml2:SubjectConfirmationData></saml2:SubjectConfirmation></saml2:Subject><saml2:Conditions NotBefore=\"2016-04-28T22:41:49.655Z\" NotOnOrAfter=\"2016-04-28T22:46:49.655Z\"><saml2:AudienceRestriction><saml2:Audience>https://saml2.test.astuart.co/sso/saml2</saml2:Audience></saml2:AudienceRestriction></saml2:Conditions><saml2:AuthnStatement AuthnInstant=\"2016-04-28T22:41:49.530Z\" SessionIndex=\"_9bc060c924a6e97b1a8a828ea36d0c28\"><saml2:SubjectLocality Address=\"10.255.63.0\"></saml2:SubjectLocality><saml2:AuthnContext><saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef></saml2:AuthnContext></saml2:AuthnStatement><saml2:AttributeStatement><saml2:Attribute FriendlyName=\"uid\" Name=\"urn:oid:0.9.2342.19200300.100.1.1\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">pcollegeadmin</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"eduPersonPrimaryAffiliation\" Name=\"urn:oid:1.3.6.1.4.1.5923.1.1.1.5\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">portalCollegeAdmin</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"cccMisCode\" Name=\"urn:oid:1.3.6.1.4.1.9924.1.1.1.2\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">000</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"eduPersonAffiliation\" Name=\"urn:oid:1.3.6.1.4.1.5923.1.1.1.1\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">portalCollegeAdmin</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"sn\" Name=\"urn:oid:2.5.4.4\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">Collegeadmin</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"displayName\" Name=\"urn:oid:2.16.840.1.113730.3.1.241\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">Peter Collegeadmin</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"givenName\" Name=\"urn:oid:2.5.4.42\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">Peter</saml2:AttributeValue></saml2:Attribute><saml2:Attribute FriendlyName=\"eduPersonPrincipalName\" Name=\"urn:oid:1.3.6.1.4.1.5923.1.1.1.6\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><saml2:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xsd:string\">pcollegeadmin@democollege.edu</saml2:AttributeValue></saml2:Attribute></saml2:AttributeStatement></saml2:Assertion>"
  },
  {
    "path": "testdata/saml_compressed.post",
    "content": "zVhbd6q6Gv0rDtejo+Um3kbbcbgqKiICKr6cwSXKPQhBkV+/QVt329O1dtc65+G8xS9fZmZmvoQZn3IrjtLRCuQpTHLQKuMoyUfX4HO7yJIRtHI/HyVWDPIRckYaI89H5CM+SjOIoAOjdkvin9v/pvs4TeH7AT6gBi5JE65LgXZrDbLch8lzux5RJ+Z5AaQkR1aC6hBO9B9w6oHo6yQ1IvsjnNi1WzzIkZ9Y6DrKQyjNRxi2J/YNovOYHDIYPvoQs1Ify3OINURJzHJyjB441t7F6T7ldvdUn7YHoI+DAWi/PDVJo+vk2bv1/Xp5Vp6DrGHRfrGesHcIN7h0pCELFfnHXxx0QWttRQX4NXh+zR5pheOAPG9jL7cZPoKOmDcKf0D6s/LNFqnbgotSOPARH5KkrOoLQeF8NhqKprpGZfCNDXqkaXL3UdH/kEfzD/X+FdlrLd12sd7E8/n8eKYeYXbASBzHMXyI1Qlu7h9+tG+jgCsle/jyxFkJTHzHivzqWggyQB50W0x0gJmPvPgnkARG4A3kAyidB4foJj8aZe90vonygViWWw+5ZxEN0ArsQQYSB7SMlfTc/vHPer486ZmV5HuYxfm79u9RAMkJRDAF7kP+tpKGzffRvpYFe0+N9w/1sfsTgd7EuSFcS/9FcdD8QEmmsDfkgUdpWsGMu0wn4/fS8xP2PvMJu4tat9+XwH3Xbon8kmGoUFQohUV2eoEskBTg4qqidzppuNpivR5eZrnDp8o6C/go2okXOKEvqc+tF0Waj217GVSLYiPiw2LClia8aB65rm+wowh9MzA3PkzTcQ/jdpMOl9IrUuuS2xm/wBRZpXGX8jiyNNCK2FQ2M6WXfH0iVLGDyqrEQ2JWeqaBlNMkcZbjcSpS0czp6Zyyuez6+2CG7YFhSDDMMZ4xEDjZm60278Il5ZcSczylHX/b2YS7oCK3dmzI/WCykgs5vgwk17M3kJiLYZIKk4XoTZerE7J7M6nSCkqy8T019wOF7hxwdYkHWCfaOauCDuwVEuzZYLpWgkMx1MMQHebOaU4k+8W6r1HLIcTVYhgfnp9vor8T+mkGLrcd2NL4kLeQdWtxzb2yr88kAi+yJPFLnuMYX+U4lb+404MS5dXRrpgFewiPXuiPh2ecZVRDZHj2IKv5mVNNfq2qY+E8XRuVoMusMGYIQ+BYeaaSYm5tdicnplNTFzYyq1772FJeGKRYSMLuYm7owNouArsSVJnp3sZ68kSLxcKiIr6OazLLXONMKU/t8bDe1BLa1AKX2e6W1wVc5uVSDgR6wZuVTMA6JlGyLpSKfo+dTV6Yy0x4m9+TufVaLoWKWbGHxZplDjoXLjx7HMU2NS2sjVCKAWPc+hydX9d9Pjt2ak4mGVUmOSgFnlFu/VBn8dSzY0SrTTxg1Ftc1rlNeTIbDcbDym101aQzr5rTGdxJ3slZMKrAsirDHw7Ckmn6VcjV7Xro+DRNV7pu5StDWx4d+8iNO7tEZ+pvRIGf1qk0HkaVUCYeQUCMHcdV0Y/YzmU+cQT3nM1YNk5ByrNLzizTtRWcCsHbuTOxxET30gvoeEJl2QZnPaxyqR4HjVp/25tc9ADIfXFBXkSqGEbOpbCLk1JlFEsdtr2edJ5GRrfXOVeOuvY0JZJDEm1Xnb00U2vBMqWYDZG9paYSaxwllEqdScLAc1NkiUxQ3fx0Hix1cR6u6uPoyMeE3/MzIh4OqeUFcoTZWXS3w23oabGgQiZiJkuJnk+yU1EE9fDkhODaPM1MGPQ151DEYbpZCKdtjybn+62SzMwoZAe7i12UsbiXwgq4amZP84vi7ec45cgCx5wFhtG/qGVGqbUXGDA5V8dzUo2FsAwqje/2/Xhr6UdkXgR9B8/97Zl18J0lajR+XIlT4zDTmXimEaXKLrHjJNVQvlJ0iuaNcsoIvYVJzOwjtbO5whtDLTLxeX9drXUapUVXMAcd/ogVpBCs4tiD874R5uFJ2pEJwbvCCrkd05B1cDSjoQO7lJPvznwCMWkGY7Cgj9bSoYbSLvDDaScxuF64FGegwKhgmB0mi2hVezippxGii8RqqOxkNUozfGobiNSpUsNMqE6TngP5eDqnx7rvz+Seo4COkRHrc6URU4G3NY3UNxuvOg5gMHdrW2jOx+5wquRQ9YQorjpI3nNiLeBcKP1kyVwufXMSaf56S1DqhNzqBearanMZfb5pbpHbLYTdb6a/76xXI6IVdgAc9PprUdsiiW+J9afNQj/3S8QjcY347sP+mjoqkjwFTj03cGvTlxVJB4bI+ldkFYnjuVYWRpdHB8avduc2zUcGHEz2foPVmLbb5/TXhs2JRzawMpC1fw7ULL+1gEhJlIzZI5C9c2YDHcffO7PWql5A6oPGvv1PzPObNf2K2Keu1xXUGa7fdOcNaRbU4oJfeMnvruzNExeu39iF+r2CMt+50fjQ82K/0roHPv3+MBT7xPkNDNUpdoFAY8hBXOv56sHLn/lZAtvKc83xQGy177n+Pyc/+Fe77dzfKfepW02F/U791mh+xLhu1rwpPqNdP++tmtIIXdIatsxHVnLR6/Y3av0jysvn6E+YCw2f/wciop/lqGn+FhmmJvNfTTu3/mBW1rOiyPruvNhPqvV+JpCX/F3C15/fft5ds+uTgUCJvghxUf3arO37yy8fpM7IafLq8Lvb9X4gv0D7ou9D7N0SsY+v5Psj+u2/jJe/AA==\n"
  },
  {
    "path": "testdata/test.crt",
    "content": "-----BEGIN CERTIFICATE-----\nMIID2zCCAsOgAwIBAgIJANfD2hyjW72lMA0GCSqGSIb3DQEBCwUAMIGDMQswCQYD\nVQQGEwJaWjEUMBIGA1UECAwLVHJhbnF1aWxpdHkxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJc2FtbC50ZXN0MScwJQYJKoZIhvcN\nAQkBFhhhbmRyZXcuc3R1YXJ0MkBnbWFpbC5jb20wHhcNMTYwNDI4MjIzODE5WhcN\nMTYwNTI4MjIzODE5WjCBgzELMAkGA1UEBhMCWloxFDASBgNVBAgMC1RyYW5xdWls\naXR5MSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMM\nCXNhbWwudGVzdDEnMCUGCSqGSIb3DQEJARYYYW5kcmV3LnN0dWFydDJAZ21haWwu\nY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApwtg91fGm7NZBASr\nAdASmK86Nsh1fNFs6pz4FFfCwyUHulJTKCk6Ph0ToGRcOFhVgPWtPYkCwL6iUmJT\nPzj5uoB0Y3eF2MM+tkix8f4RUrWzpqyMhECtsv4rzF7LpZXCWdJHnN9Z6zwFdLxu\nb6V01PGmIhtGyf9mEqZ2qonSIPAzoRBzZStPu4SJkJzIN3BttvHVRVF+E5AKxYLv\nkBTtl5JzCsivs+hTrrDg/zwiq7yXOwoZhzPrAHriYPOLm/sPuwTIBxAHmKwp0ihD\nHpEC5eNAXvChkUYcG8DdDNpSxjpH6ufyVLxfKWtHUcHnJCGnw/LUgI1S1bdljeyZ\neKFBMwIDAQABo1AwTjAdBgNVHQ4EFgQUiuceZuXfFuk1aC/J1RQVYQtzlz4wHwYD\nVR0jBBgwFoAUiuceZuXfFuk1aC/J1RQVYQtzlz4wDAYDVR0TBAUwAwEB/zANBgkq\nhkiG9w0BAQsFAAOCAQEAn3ShXVUlcaM8bmtlpF6stGB00bNinVfkGQ1OWYVb8J7l\n3QPb2pK0aoccb6MyDhmthYYeSNcLVUK6J0yHCQUC2cFa/y7jwZHhnb5RoMLjYan0\n710FZy27Y8LYVNpdtT3RKxPHzWIW8EELsShHQ1UfGNPQo+OxdVljzQGpDjjNPiFK\nJFRt7A4XURHfS43d5mMj6znGHcsP4XpcQLZXpQwF+u7TyHtAXwKOIanRuGrwoBtA\nWvZBgEJ047KdHZGyxa42yWILFW+fraK4Vx6wo56LLlwoTEHB8YLuHAuoFtYxq4fO\n/ORJPlxENszTxphXaYUoryRyPCiuMOKo770wa+4D+g==\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "testdata/test.key",
    "content": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCnC2D3V8abs1kE\nBKsB0BKYrzo2yHV80WzqnPgUV8LDJQe6UlMoKTo+HROgZFw4WFWA9a09iQLAvqJS\nYlM/OPm6gHRjd4XYwz62SLHx/hFStbOmrIyEQK2y/ivMXsullcJZ0kec31nrPAV0\nvG5vpXTU8aYiG0bJ/2YSpnaqidIg8DOhEHNlK0+7hImQnMg3cG228dVFUX4TkArF\ngu+QFO2XknMKyK+z6FOusOD/PCKrvJc7ChmHM+sAeuJg84ub+w+7BMgHEAeYrCnS\nKEMekQLl40Be8KGRRhwbwN0M2lLGOkfq5/JUvF8pa0dRweckIafD8tSAjVLVt2WN\n7Jl4oUEzAgMBAAECggEANODrPyEwI9WwVg9MOvStDlxZ50Gpv2tkORibh4UIiFHO\nknLBFDOI1mTJ87oRX1zHJF2hC5u1nWI7bCzoAVl95EYJkfsiCa40yetVOS+eODqA\ntkBk8vCui7zeDIHtoWs47MoeFVC23DpR19RWeU09ILOmTaGo1QTeQQUlB3M9a2Nb\nLZcJmxqQyFg5G0oDs/Xo3rlGw/MWm1gsRuBEW42xuAUKyBcUEHvIAPozXBfEnwAv\ncf0+VLoxGsHwY8Rbz2R886ex0/sKnSD673dM3LRQv8S2i/5UtLBYX0BqDKzuLO4K\nJS/uDJtPDmErjgA4p74ytqJFYmSnGnmluKR0OE9KgQKBgQDbXa4oEcdoGN15FoTb\ng3hiy5zi4xw2NQrofKmHeFOFfgDOF0RxRQVCIiKFu619oalVJE5wqq0vt61W3mQ7\n/OikHdlwXipcZ8LKEIeViT6KNrU4UTXL7aR2YiMTkBnbfDLhiMDOyKwyySmF7+hD\nWR7gq1CuJXmjFsPlw9RwIAoVIQKBgQDC8NprSK1ggQ0riBj5PY/JUD6LTp1MO223\nwU2OvjfA7L3cK33GpPx7fRRcnh3sv5UqUgEtfTuCu2bD+u/cvdfzUxLXk89mh9zD\nFe4E+SLSd5Vo6Wpe8W7LamK2i3Lc/rRdby7GM+qEQ22vhkegyFW+klDOXYULo2ZO\nOsEB+Q/30wKBgQCKfMPb7A11fG0lasAJTSCNTnoHCtXeqvHt//WO3rnrxrZ/ZVUC\nJU7Ch4Y/41INxCeA5uDWZAnd3BmEg/XHoUzFf0qsk+YuXBsvMexGzVQ8MXmKykoq\nKibvzdjTGuAYHnqIw6rlYO7FSRX7xo9dJUBHGiBfMK1v9olJ3q2Y88EpwQKBgQCE\nqRGKxuet78S9ph2Qp9NM5X3aoYIsGZk93p9gD5Szhqhhx3sNjsN/agxMRxIIRgxF\nw46nnTy9Z7i0j/VhnBP0s8jzydPva2/Rlv/mhICtB9I2lfncaKLEbT6GCXn+aJrn\npr0HBteGcLiZJWFjSlIHoVy6QyxCUk1R2Wv1Yr/6HwKBgD4IrY33kSHCpElzLY2Q\nq4ysjYF1XfWvji+SOhwM97KMXz0U+Pk4GIik0WZVZbvyU48EQaKf+hupPou8EdMR\nYD5XYh7Owjg2FY354XX5kl2SzI+00EDnZiEC6mLPsVEsIayty1QxozFzkCZgmb59\n9Nqhywrrbsnv7kDX3QBxZMkn\n-----END PRIVATE KEY-----\n"
  },
  {
    "path": "types/encrypted_assertion.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"bytes\"\n\t\"crypto/cipher\"\n\t\"crypto/tls\"\n\t\"encoding/base64\"\n\t\"encoding/xml\"\n\t\"fmt\"\n)\n\ntype EncryptedAssertion struct {\n\tXMLName          xml.Name         `xml:\"urn:oasis:names:tc:SAML:2.0:assertion EncryptedAssertion\"`\n\tEncryptionMethod EncryptionMethod `xml:\"EncryptedData>EncryptionMethod\"`\n\tEncryptedKey     EncryptedKey     `xml:\"EncryptedData>KeyInfo>EncryptedKey\"`\n\tDetEncryptedKey  EncryptedKey     `xml:\"EncryptedKey\"` // detached EncryptedKey element\n\tCipherValue      string           `xml:\"EncryptedData>CipherData>CipherValue\"`\n}\n\nfunc (ea *EncryptedAssertion) DecryptBytes(cert *tls.Certificate) ([]byte, error) {\n\tdata, err := base64.StdEncoding.DecodeString(ea.CipherValue)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// EncryptedKey must include CipherValue.  EncryptedKey may be part of EncryptedData.\n\tek := &ea.EncryptedKey\n\tif ek.CipherValue == \"\" {\n\t\t// Use detached EncryptedKey element (sibling of EncryptedData).  See:\n\t\t// https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Extensions-to-KeyInfo\n\t\tek = &ea.DetEncryptedKey\n\t}\n\tk, err := ek.DecryptSymmetricKey(cert)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot decrypt, error retrieving private key: %s\", err)\n\t}\n\n\tswitch ea.EncryptionMethod.Algorithm {\n\tcase MethodAES128GCM, MethodAES192GCM, MethodAES256GCM:\n\t\tc, err := cipher.NewGCM(k)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"cannot create AES-GCM: %s\", err)\n\t\t}\n\n\t\tnonce, data := data[:c.NonceSize()], data[c.NonceSize():]\n\t\tplainText, err := c.Open(nil, nonce, data, nil)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"cannot open AES-GCM: %s\", err)\n\t\t}\n\t\treturn plainText, nil\n\tcase MethodAES128CBC, MethodAES256CBC, MethodTripleDESCBC:\n\t\tif len(data)%k.BlockSize() != 0 {\n\t\t\treturn nil, fmt.Errorf(\"encrypted data is not a multiple of the expected CBC block size %d: actual size %d\", k.BlockSize(), len(data))\n\t\t}\n\t\tnonce, data := data[:k.BlockSize()], data[k.BlockSize():]\n\t\tc := cipher.NewCBCDecrypter(k, nonce)\n\t\tc.CryptBlocks(data, data)\n\n\t\t// Remove zero bytes\n\t\tdata = bytes.TrimRight(data, \"\\x00\")\n\n\t\tif len(data) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"CBC decrypted data is empty after trimming zero bytes\")\n\t\t}\n\n\t\t// Validate and remove padding. The pad length byte indicates\n\t\t// how many bytes to strip. Bounds-check to prevent panics from\n\t\t// crafted ciphertext.\n\t\tpadLength := int(data[len(data)-1])\n\t\tif padLength == 0 || padLength > len(data) || padLength > k.BlockSize() {\n\t\t\treturn nil, fmt.Errorf(\"invalid CBC padding length: %d (data length: %d, block size: %d)\", padLength, len(data), k.BlockSize())\n\t\t}\n\n\t\treturn data[:len(data)-padLength], nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unknown symmetric encryption method %#v\", ea.EncryptionMethod.Algorithm)\n\t}\n}\n\n// Decrypt decrypts and unmarshals the EncryptedAssertion.\nfunc (ea *EncryptedAssertion) Decrypt(cert *tls.Certificate) (*Assertion, error) {\n\tplaintext, err := ea.DecryptBytes(cert)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error decrypting assertion: %v\", err)\n\t}\n\n\tassertion := &Assertion{}\n\n\terr = xml.Unmarshal(plaintext, assertion)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Error unmarshaling assertion: %v\", err)\n\t}\n\n\treturn assertion, nil\n}\n"
  },
  {
    "path": "types/encrypted_key.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"bytes\"\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/sha1\"\n\t\"crypto/sha256\"\n\t\"crypto/sha512\"\n\t\"crypto/tls\"\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"hash\"\n\t\"strings\"\n)\n\n//EncryptedKey contains the decryption key data from the saml2 core and xmlenc\n//standards.\ntype EncryptedKey struct {\n\t// EncryptionMethod string `xml:\"EncryptionMethod>Algorithm\"`\n\tX509Data         string `xml:\"KeyInfo>X509Data>X509Certificate\"`\n\tCipherValue      string `xml:\"CipherData>CipherValue\"`\n\tEncryptionMethod EncryptionMethod\n}\n\n//EncryptionMethod specifies the type of encryption that was used.\ntype EncryptionMethod struct {\n\tAlgorithm string `xml:\",attr,omitempty\"`\n\t//Digest method is present for algorithms like RSA-OAEP.\n\t//See https://www.w3.org/TR/xmlenc-core1/.\n\t//To convey the digest methods an entity supports,\n\t//DigestMethod in extensions element is used.\n\t//See http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-algsupport.html.\n\tDigestMethod *DigestMethod `xml:\",omitempty\"`\n}\n\n//DigestMethod is a digest type specification\ntype DigestMethod struct {\n\tAlgorithm string `xml:\",attr,omitempty\"`\n}\n\n//Well-known public-key encryption methods\nconst (\n\tMethodRSAOAEP  = \"http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p\"\n\tMethodRSAOAEP2 = \"http://www.w3.org/2009/xmlenc11#rsa-oaep\"\n\tMethodRSAv1_5  = \"http://www.w3.org/2001/04/xmlenc#rsa-1_5\"\n)\n\n//Well-known private key encryption methods\nconst (\n\tMethodAES128GCM    = \"http://www.w3.org/2009/xmlenc11#aes128-gcm\"\n\tMethodAES192GCM    = \"http://www.w3.org/2009/xmlenc11#aes192-gcm\"\n\tMethodAES256GCM    = \"http://www.w3.org/2009/xmlenc11#aes256-gcm\"\n\tMethodAES128CBC    = \"http://www.w3.org/2001/04/xmlenc#aes128-cbc\"\n\tMethodAES256CBC    = \"http://www.w3.org/2001/04/xmlenc#aes256-cbc\"\n\tMethodTripleDESCBC = \"http://www.w3.org/2001/04/xmlenc#tripledes-cbc\"\n)\n\n//Well-known hash methods\nconst (\n\tMethodSHA1   = \"http://www.w3.org/2000/09/xmldsig#sha1\"\n\tMethodSHA256 = \"http://www.w3.org/2000/09/xmldsig#sha256\"\n\tMethodSHA512 = \"http://www.w3.org/2000/09/xmldsig#sha512\"\n)\n\n//SHA-1 is commonly used for certificate fingerprints (openssl -fingerprint and ADFS thumbprint).\n//SHA-1 is sufficient for our purposes here (error message).\nfunc debugKeyFp(keyBytes []byte) string {\n\tif len(keyBytes) < 1 {\n\t\treturn \"\"\n\t}\n\thashFunc := sha1.New()\n\thashFunc.Write(keyBytes)\n\tsum := strings.ToLower(hex.EncodeToString(hashFunc.Sum(nil)))\n\tvar ret string\n\tfor idx := 0; idx+1 < len(sum); idx += 2 {\n\t\tif idx == 0 {\n\t\t\tret += sum[idx : idx+2]\n\t\t} else {\n\t\t\tret += \":\" + sum[idx:idx+2]\n\t\t}\n\t}\n\treturn ret\n}\n\n//DecryptSymmetricKey returns the private key contained in the EncryptedKey document\nfunc (ek *EncryptedKey) DecryptSymmetricKey(cert *tls.Certificate) (cipher.Block, error) {\n\tif len(cert.Certificate) < 1 {\n\t\treturn nil, fmt.Errorf(\"decryption tls.Certificate has no public certs attached\")\n\t}\n\n\t// The EncryptedKey may or may not include X509Data (certificate).\n\t// If included, the EncryptedKey certificate:\n\t// - is FYI only (fail if it does not match the SP certificate)\n\t// - is NOT used to decrypt CipherData\n\tif ek.X509Data != \"\" {\n\t\tif encCert, err := base64.StdEncoding.DecodeString(ek.X509Data); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error decoding EncryptedKey certificate: %v\", err)\n\t\t} else if !bytes.Equal(cert.Certificate[0], encCert) {\n\t\t\treturn nil, fmt.Errorf(\"key decryption attempted with mismatched cert, SP cert(%.11s), assertion cert(%.11s)\",\n\t\t\t\tdebugKeyFp(cert.Certificate[0]), debugKeyFp(encCert))\n\t\t}\n\t}\n\n\tcipherText, err := base64.StdEncoding.DecodeString(ek.CipherValue)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch pk := cert.PrivateKey.(type) {\n\tcase *rsa.PrivateKey:\n\t\tvar h hash.Hash\n\n\t\tif ek.EncryptionMethod.DigestMethod == nil {\n\t\t\t//if digest method is not present lets set default method to SHA1.\n\t\t\t//Digest method is used by methods like RSA-OAEP.\n\t\t\th = sha1.New()\n\t\t} else {\n\t\t\tswitch ek.EncryptionMethod.DigestMethod.Algorithm {\n\t\t\tcase \"\", MethodSHA1:\n\t\t\t\th = sha1.New() // default\n\t\t\tcase MethodSHA256:\n\t\t\t\th = sha256.New()\n\t\t\tcase MethodSHA512:\n\t\t\t\th = sha512.New()\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(\"unsupported digest algorithm: %v\",\n\t\t\t\t\tek.EncryptionMethod.DigestMethod.Algorithm)\n\t\t\t}\n\t\t}\n\n\t\tswitch ek.EncryptionMethod.Algorithm {\n\t\tcase \"\":\n\t\t\treturn nil, fmt.Errorf(\"missing encryption algorithm\")\n\t\tcase MethodRSAOAEP, MethodRSAOAEP2:\n\t\t\tpt, err := rsa.DecryptOAEP(h, rand.Reader, pk, cipherText, nil)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"rsa internal error: %v\", err)\n\t\t\t}\n\n\t\t\tb, err := aes.NewCipher(pt)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\tcase MethodRSAv1_5:\n\t\t\tpt, err := rsa.DecryptPKCS1v15(rand.Reader, pk, cipherText)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"rsa internal error: %v\", err)\n\t\t\t}\n\n\t\t\t//From https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf the xml encryption\n\t\t\t//methods to be supported are from http://www.w3.org/2001/04/xmlenc#Element.\n\t\t\t//https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#Element.\n\t\t\t//https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/#sec-Algorithms\n\t\t\t//Sec 5.4 Key Transport:\n\t\t\t//The RSA v1.5 Key Transport algorithm given below are those used in conjunction with TRIPLEDES\n\t\t\t//Please also see https://www.w3.org/TR/xmlenc-core/#sec-Algorithms and\n\t\t\t//https://www.w3.org/TR/xmlenc-core/#rsav15note.\n\t\t\tb, err := aes.NewCipher(pt)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn b, nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported encryption algorithm: %s\", ek.EncryptionMethod.Algorithm)\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"no cipher for decoding symmetric key\")\n}\n"
  },
  {
    "path": "types/metadata.go",
    "content": "// Copyright 2016 Russell Haering et al.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     https://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"encoding/xml\"\n\t\"time\"\n\n\tdsigtypes \"github.com/russellhaering/goxmldsig/types\"\n)\n\ntype EntityDescriptor struct {\n\tXMLName    xml.Name  `xml:\"urn:oasis:names:tc:SAML:2.0:metadata EntityDescriptor\"`\n\tValidUntil time.Time `xml:\"validUntil,attr\"`\n\t// SAML 2.0 8.3.6 Entity Identifier could be used to represent issuer\n\tEntityID         string            `xml:\"entityID,attr\"`\n\tSPSSODescriptor  *SPSSODescriptor  `xml:\"SPSSODescriptor,omitempty\"`\n\tIDPSSODescriptor *IDPSSODescriptor `xml:\"IDPSSODescriptor,omitempty\"`\n    Extensions       *Extensions       `xml:\"Extensions,omitempty\"`\n}\n\ntype Endpoint struct {\n\tBinding          string `xml:\"Binding,attr\"`\n\tLocation         string `xml:\"Location,attr\"`\n\tResponseLocation string `xml:\"ResponseLocation,attr,omitempty\"`\n}\n\ntype IndexedEndpoint struct {\n\tBinding  string `xml:\"Binding,attr\"`\n\tLocation string `xml:\"Location,attr\"`\n\tIndex    int    `xml:\"index,attr\"`\n}\n\ntype SPSSODescriptor struct {\n\tXMLName                    xml.Name          `xml:\"urn:oasis:names:tc:SAML:2.0:metadata SPSSODescriptor\"`\n\tAuthnRequestsSigned        bool              `xml:\"AuthnRequestsSigned,attr\"`\n\tWantAssertionsSigned       bool              `xml:\"WantAssertionsSigned,attr\"`\n\tProtocolSupportEnumeration string            `xml:\"protocolSupportEnumeration,attr\"`\n\tKeyDescriptors             []KeyDescriptor   `xml:\"KeyDescriptor\"`\n\tSingleLogoutServices       []Endpoint        `xml:\"SingleLogoutService\"`\n\tNameIDFormats              []string          `xml:\"NameIDFormat\"`\n\tAssertionConsumerServices  []IndexedEndpoint `xml:\"AssertionConsumerService\"`\n    Extensions                 *Extensions       `xml:\"Extensions,omitempty\"`\n}\n\ntype IDPSSODescriptor struct {\n\tXMLName                 xml.Name              `xml:\"urn:oasis:names:tc:SAML:2.0:metadata IDPSSODescriptor\"`\n\tWantAuthnRequestsSigned bool                  `xml:\"WantAuthnRequestsSigned,attr\"`\n\tKeyDescriptors          []KeyDescriptor       `xml:\"KeyDescriptor\"`\n\tNameIDFormats           []NameIDFormat        `xml:\"NameIDFormat\"`\n\tSingleSignOnServices    []SingleSignOnService `xml:\"SingleSignOnService\"`\n    SingleLogoutServices    []SingleLogoutService `xml:\"SingleLogoutService\"`\n\tAttributes              []Attribute           `xml:\"Attribute\"`\n    Extensions              *Extensions           `xml:\"Extensions,omitempty\"`\n}\n\ntype KeyDescriptor struct {\n\tXMLName           xml.Name           `xml:\"urn:oasis:names:tc:SAML:2.0:metadata KeyDescriptor\"`\n\tUse               string             `xml:\"use,attr\"`\n\tKeyInfo           dsigtypes.KeyInfo  `xml:\"KeyInfo\"`\n\tEncryptionMethods []EncryptionMethod `xml:\"EncryptionMethod\"`\n}\n\ntype NameIDFormat struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:metadata NameIDFormat\"`\n\tValue   string   `xml:\",chardata\"`\n}\n\ntype SingleSignOnService struct {\n\tXMLName  xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:metadata SingleSignOnService\"`\n\tBinding  string   `xml:\"Binding,attr\"`\n\tLocation string   `xml:\"Location,attr\"`\n}\n\ntype SingleLogoutService struct {\n\tXMLName  xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:metadata SingleLogoutService\"`\n\tBinding  string   `xml:\"Binding,attr\"`\n\tLocation string   `xml:\"Location,attr\"`\n}\n\ntype SigningMethod struct {\n    Algorithm           string       `xml:\",attr\"`\n    MinKeySize          string       `xml:\"MinKeySize,attr,omitempty\"`\n    MaxKeySize          string       `xml:\"MaxKeySize,attr,omitempty\"`\n}\n\ntype Extensions struct {\n    DigestMethod        *DigestMethod   `xml:\",omitempty\"`\n    SigningMethod       *SigningMethod  `xml:\",omitempty\"`\n}\n"
  },
  {
    "path": "types/response.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage types\n\nimport (\n\t\"encoding/xml\"\n\t\"time\"\n)\n\n// UnverifiedBaseResponse extracts several basic attributes of a SAML Response\n// which may be useful in deciding how to validate the Response. An UnverifiedBaseResponse\n// is parsed by this library prior to any validation of the Response, so the\n// values it contains may have been supplied by an attacker and should not be\n// trusted as authoritative from the IdP.\ntype UnverifiedBaseResponse struct {\n\tXMLName      xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:protocol Response\"`\n\tID           string   `xml:\"ID,attr\"`\n\tInResponseTo string   `xml:\"InResponseTo,attr\"`\n\tDestination  string   `xml:\"Destination,attr\"`\n\tVersion      string   `xml:\"Version,attr\"`\n\tIssuer       *Issuer  `xml:\"Issuer\"`\n}\n\ntype Response struct {\n\tXMLName             xml.Name             `xml:\"urn:oasis:names:tc:SAML:2.0:protocol Response\"`\n\tID                  string               `xml:\"ID,attr\"`\n\tInResponseTo        string               `xml:\"InResponseTo,attr\"`\n\tDestination         string               `xml:\"Destination,attr\"`\n\tVersion             string               `xml:\"Version,attr\"`\n\tIssueInstant        time.Time            `xml:\"IssueInstant,attr\"`\n\tStatus              *Status              `xml:\"Status\"`\n\tIssuer              *Issuer              `xml:\"Issuer\"`\n\tAssertions          []Assertion          `xml:\"Assertion\"`\n\tEncryptedAssertions []EncryptedAssertion `xml:\"EncryptedAssertion\"`\n\tSignatureValidated  bool                 `xml:\"-\"` // not read, not dumped\n}\n\ntype LogoutResponse struct {\n\tXMLName            xml.Name  `xml:\"urn:oasis:names:tc:SAML:2.0:protocol LogoutResponse\"`\n\tID                 string    `xml:\"ID,attr\"`\n\tInResponseTo       string    `xml:\"InResponseTo,attr\"`\n\tDestination        string    `xml:\"Destination,attr\"`\n\tVersion            string    `xml:\"Version,attr\"`\n\tIssueInstant       time.Time `xml:\"IssueInstant,attr\"`\n\tStatus             *Status   `xml:\"Status\"`\n\tIssuer             *Issuer   `xml:\"Issuer\"`\n\tSignatureValidated bool      `xml:\"-\"` // not read, not dumped\n}\n\ntype Status struct {\n\tXMLName    xml.Name    `xml:\"urn:oasis:names:tc:SAML:2.0:protocol Status\"`\n\tStatusCode *StatusCode `xml:\"StatusCode\"`\n}\n\ntype StatusCode struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:protocol StatusCode\"`\n\tValue   string   `xml:\"Value,attr\"`\n}\n\ntype Issuer struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion Issuer\"`\n\tValue   string   `xml:\",chardata\"`\n}\n\ntype Signature struct {\n\tSignatureDocument []byte `xml:\",innerxml\"`\n}\n\ntype Assertion struct {\n\tXMLName            xml.Name            `xml:\"urn:oasis:names:tc:SAML:2.0:assertion Assertion\"`\n\tVersion            string              `xml:\"Version,attr\"`\n\tID                 string              `xml:\"ID,attr\"`\n\tIssueInstant       time.Time           `xml:\"IssueInstant,attr\"`\n\tIssuer             *Issuer             `xml:\"Issuer\"`\n\tSignature          *Signature          `xml:\"Signature\"`\n\tSubject            *Subject            `xml:\"Subject\"`\n\tConditions         *Conditions         `xml:\"Conditions\"`\n\tAttributeStatement *AttributeStatement `xml:\"AttributeStatement\"`\n\tAuthnStatement     *AuthnStatement     `xml:\"AuthnStatement\"`\n\tSignatureValidated bool                `xml:\"-\"` // not read, not dumped\n}\n\ntype Subject struct {\n\tXMLName             xml.Name             `xml:\"urn:oasis:names:tc:SAML:2.0:assertion Subject\"`\n\tNameID              *NameID              `xml:\"NameID\"`\n\tSubjectConfirmation *SubjectConfirmation `xml:\"SubjectConfirmation\"`\n}\n\ntype AuthnContext struct {\n\tXMLName              xml.Name              `xml:\"urn:oasis:names:tc:SAML:2.0:assertion AuthnContext\"`\n\tAuthnContextClassRef *AuthnContextClassRef `xml:\"AuthnContextClassRef\"`\n}\n\ntype AuthnContextClassRef struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion AuthnContextClassRef\"`\n\tValue   string   `xml:\",chardata\"`\n}\n\ntype NameID struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion NameID\"`\n\tValue   string   `xml:\",chardata\"`\n}\n\ntype SubjectConfirmation struct {\n\tXMLName                 xml.Name                 `xml:\"urn:oasis:names:tc:SAML:2.0:assertion SubjectConfirmation\"`\n\tMethod                  string                   `xml:\"Method,attr\"`\n\tSubjectConfirmationData *SubjectConfirmationData `xml:\"SubjectConfirmationData\"`\n}\n\ntype SubjectConfirmationData struct {\n\tXMLName      xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion SubjectConfirmationData\"`\n\tNotOnOrAfter string   `xml:\"NotOnOrAfter,attr\"`\n\tRecipient    string   `xml:\"Recipient,attr\"`\n\tInResponseTo string   `xml:\"InResponseTo,attr\"`\n}\n\ntype Conditions struct {\n\tXMLName              xml.Name              `xml:\"urn:oasis:names:tc:SAML:2.0:assertion Conditions\"`\n\tNotBefore            string                `xml:\"NotBefore,attr\"`\n\tNotOnOrAfter         string                `xml:\"NotOnOrAfter,attr\"`\n\tAudienceRestrictions []AudienceRestriction `xml:\"AudienceRestriction\"`\n\tOneTimeUse           *OneTimeUse           `xml:\"OneTimeUse\"`\n\tProxyRestriction     *ProxyRestriction     `xml:\"ProxyRestriction\"`\n}\n\ntype AudienceRestriction struct {\n\tXMLName   xml.Name   `xml:\"urn:oasis:names:tc:SAML:2.0:assertion AudienceRestriction\"`\n\tAudiences []Audience `xml:\"Audience\"`\n}\n\ntype Audience struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion Audience\"`\n\tValue   string   `xml:\",chardata\"`\n}\n\ntype OneTimeUse struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion OneTimeUse\"`\n}\n\ntype ProxyRestriction struct {\n\tXMLName  xml.Name   `xml:\"urn:oasis:names:tc:SAML:2.0:assertion ProxyRestriction\"`\n\tCount    int        `xml:\"Count,attr\"`\n\tAudience []Audience `xml:\"Audience\"`\n}\n\ntype AttributeStatement struct {\n\tXMLName    xml.Name    `xml:\"urn:oasis:names:tc:SAML:2.0:assertion AttributeStatement\"`\n\tAttributes []Attribute `xml:\"Attribute\"`\n}\n\ntype Attribute struct {\n\tXMLName      xml.Name         `xml:\"urn:oasis:names:tc:SAML:2.0:assertion Attribute\"`\n\tFriendlyName string           `xml:\"FriendlyName,attr\"`\n\tName         string           `xml:\"Name,attr\"`\n\tNameFormat   string           `xml:\"NameFormat,attr\"`\n\tValues       []AttributeValue `xml:\"AttributeValue\"`\n}\n\ntype AttributeValue struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion AttributeValue\"`\n\tType    string   `xml:\"xsi:type,attr\"`\n\tValue   string   `xml:\",chardata\"`\n}\n\ntype AuthnStatement struct {\n\tXMLName xml.Name `xml:\"urn:oasis:names:tc:SAML:2.0:assertion AuthnStatement\"`\n\t//Section 4.1.4.2 - https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf\n\t//If the identity provider supports the Single Logout profile, defined in Section 4.4\n\t//, any such authentication statements MUST include a SessionIndex attribute to enable\n\t//per-session logout requests by the service provider.\n\tSessionIndex        string        `xml:\"SessionIndex,attr,omitempty\"`\n\tAuthnInstant        *time.Time    `xml:\"AuthnInstant,attr,omitempty\"`\n\tSessionNotOnOrAfter *time.Time    `xml:\"SessionNotOnOrAfter,attr,omitempty\"`\n\tAuthnContext        *AuthnContext `xml:\"AuthnContext\"`\n}\n"
  },
  {
    "path": "uuid/uuid.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage uuid\n\n// relevant bits from https://github.com/abneptis/GoUUID/blob/master/uuid.go\n\nimport (\n\t\"crypto/rand\"\n\t\"fmt\"\n)\n\ntype UUID [16]byte\n\n// NewV4 returns random generated UUID.\nfunc NewV4() *UUID {\n\tu := &UUID{}\n\t_, err := rand.Read(u[:16])\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tu[8] = (u[8] | 0x80) & 0xBf\n\tu[6] = (u[6] | 0x40) & 0x4f\n\treturn u\n}\n\nfunc (u *UUID) String() string {\n\treturn fmt.Sprintf(\"%x-%x-%x-%x-%x\", u[:4], u[4:6], u[6:8], u[8:10], u[10:])\n}\n"
  },
  {
    "path": "uuid/uuid_test.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage uuid\n\nimport (\n\t\"testing\"\n)\n\nfunc TestUUID(t *testing.T) {\n\ts := NewV4()\n\ts2 := NewV4()\n\tif len(s) != 16 {\n\t\tt.Errorf(\"Expecting len of 16, got %d\\n\", len(s))\n\t}\n\tif len(s.String()) != 36 {\n\t\tt.Errorf(\"Expecting uuid hex string len of 36, got %d\\n\", len(s.String()))\n\t}\n\tif s == s2 {\n\t\tt.Errorf(\"Expecting different UUIDs to be different, but they are the same.\\n\")\n\t}\n}\n"
  },
  {
    "path": "validate.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/russellhaering/gosaml2/types\"\n)\n\n//ErrParsing indicates that the value present in an assertion could not be\n//parsed. It can be inspected for the specific tag name, the contents, and the\n//intended type.\ntype ErrParsing struct {\n\tTag, Value, Type string\n}\n\nfunc (ep ErrParsing) Error() string {\n\treturn fmt.Sprintf(\"Error parsing %s tag value as type %s\", ep.Tag, ep.Value)\n}\n\n//Oft-used messages\nconst (\n\tReasonUnsupported = \"Unsupported\"\n\tReasonExpired     = \"Expired\"\n)\n\n//ErrInvalidValue indicates that the expected value did not match the received\n//value.\ntype ErrInvalidValue struct {\n\tKey, Expected, Actual string\n\tReason                string\n}\n\nfunc (e ErrInvalidValue) Error() string {\n\tif e.Reason == \"\" {\n\t\te.Reason = \"Unrecognized\"\n\t}\n\treturn fmt.Sprintf(\"%s %s value, Expected: %s, Actual: %s\", e.Reason, e.Key, e.Expected, e.Actual)\n}\n\n//Well-known methods of subject confirmation\nconst (\n\tSubjMethodBearer = \"urn:oasis:names:tc:SAML:2.0:cm:bearer\"\n)\n\n//VerifyAssertionConditions inspects an assertion element and makes sure that\n//all SAML2 contracts are upheld.\nfunc (sp *SAMLServiceProvider) VerifyAssertionConditions(assertion *types.Assertion) (*WarningInfo, error) {\n\twarningInfo := &WarningInfo{}\n\tnow := sp.Clock.Now()\n\n\tconditions := assertion.Conditions\n\tif conditions == nil {\n\t\treturn nil, ErrMissingElement{Tag: ConditionsTag}\n\t}\n\n\tif conditions.NotBefore == \"\" {\n\t\treturn nil, ErrMissingElement{Tag: ConditionsTag, Attribute: NotBeforeAttr}\n\t}\n\n\tnotBefore, err := time.Parse(time.RFC3339, conditions.NotBefore)\n\tif err != nil {\n\t\treturn nil, ErrParsing{Tag: NotBeforeAttr, Value: conditions.NotBefore, Type: \"time.RFC3339\"}\n\t}\n\n\tif now.Before(notBefore) {\n\t\twarningInfo.InvalidTime = true\n\t}\n\n\tif conditions.NotOnOrAfter == \"\" {\n\t\treturn nil, ErrMissingElement{Tag: ConditionsTag, Attribute: NotOnOrAfterAttr}\n\t}\n\n\tnotOnOrAfter, err := time.Parse(time.RFC3339, conditions.NotOnOrAfter)\n\tif err != nil {\n\t\treturn nil, ErrParsing{Tag: NotOnOrAfterAttr, Value: conditions.NotOnOrAfter, Type: \"time.RFC3339\"}\n\t}\n\n\tif now.After(notOnOrAfter) {\n\t\twarningInfo.InvalidTime = true\n\t}\n\n\tfor _, audienceRestriction := range conditions.AudienceRestrictions {\n\t\tmatched := false\n\n\t\tfor _, audience := range audienceRestriction.Audiences {\n\t\t\tif audience.Value == sp.AudienceURI {\n\t\t\t\tmatched = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif !matched {\n\t\t\twarningInfo.NotInAudience = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif conditions.OneTimeUse != nil {\n\t\twarningInfo.OneTimeUse = true\n\t}\n\n\tproxyRestriction := conditions.ProxyRestriction\n\tif proxyRestriction != nil {\n\t\tproxyRestrictionInfo := &ProxyRestriction{\n\t\t\tCount:    proxyRestriction.Count,\n\t\t\tAudience: []string{},\n\t\t}\n\n\t\tfor _, audience := range proxyRestriction.Audience {\n\t\t\tproxyRestrictionInfo.Audience = append(proxyRestrictionInfo.Audience, audience.Value)\n\t\t}\n\n\t\twarningInfo.ProxyRestriction = proxyRestrictionInfo\n\t}\n\n\treturn warningInfo, nil\n}\n\n//Validate ensures that the assertion passed is valid for the current Service\n//Provider.\nfunc (sp *SAMLServiceProvider) Validate(response *types.Response) error {\n\terr := sp.validateResponseAttributes(response)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(response.Assertions) == 0 {\n\t\treturn ErrMissingAssertion\n\t}\n\n\tissuer := response.Issuer\n\tif issuer == nil {\n\t\t// FIXME?: SAML Core 2.0 Section 3.2.2 has Response.Issuer as [Optional]\n\t\treturn ErrMissingElement{Tag: IssuerTag}\n\t}\n\n\tif sp.IdentityProviderIssuer != \"\" && response.Issuer.Value != sp.IdentityProviderIssuer {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      IssuerTag,\n\t\t\tExpected: sp.IdentityProviderIssuer,\n\t\t\tActual:   response.Issuer.Value,\n\t\t}\n\t}\n\n\tstatus := response.Status\n\tif status == nil {\n\t\treturn ErrMissingElement{Tag: StatusTag}\n\t}\n\n\tstatusCode := status.StatusCode\n\tif statusCode == nil {\n\t\treturn ErrMissingElement{Tag: StatusCodeTag}\n\t}\n\n\tif statusCode.Value != StatusCodeSuccess {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      StatusCodeTag,\n\t\t\tExpected: StatusCodeSuccess,\n\t\t\tActual:   statusCode.Value,\n\t\t}\n\t}\n\n\tfor _, assertion := range response.Assertions {\n\t\tissuer = assertion.Issuer\n\t\tif issuer == nil {\n\t\t\treturn ErrMissingElement{Tag: IssuerTag}\n\t\t}\n\t\tif sp.IdentityProviderIssuer != \"\" && assertion.Issuer.Value != sp.IdentityProviderIssuer {\n\t\t\treturn ErrInvalidValue{\n\t\t\t\tKey:      IssuerTag,\n\t\t\t\tExpected: sp.IdentityProviderIssuer,\n\t\t\t\tActual:   issuer.Value,\n\t\t\t}\n\t\t}\n\n\t\tsubject := assertion.Subject\n\t\tif subject == nil {\n\t\t\treturn ErrMissingElement{Tag: SubjectTag}\n\t\t}\n\n\t\tsubjectConfirmation := subject.SubjectConfirmation\n\t\tif subjectConfirmation == nil {\n\t\t\treturn ErrMissingElement{Tag: SubjectConfirmationTag}\n\t\t}\n\n\t\tif subjectConfirmation.Method != SubjMethodBearer {\n\t\t\treturn ErrInvalidValue{\n\t\t\t\tReason:   ReasonUnsupported,\n\t\t\t\tKey:      SubjectConfirmationTag,\n\t\t\t\tExpected: SubjMethodBearer,\n\t\t\t\tActual:   subjectConfirmation.Method,\n\t\t\t}\n\t\t}\n\n\t\tsubjectConfirmationData := subjectConfirmation.SubjectConfirmationData\n\t\tif subjectConfirmationData == nil {\n\t\t\treturn ErrMissingElement{Tag: SubjectConfirmationDataTag}\n\t\t}\n\n\t\tif subjectConfirmationData.Recipient != sp.AssertionConsumerServiceURL {\n\t\t\treturn ErrInvalidValue{\n\t\t\t\tKey:      RecipientAttr,\n\t\t\t\tExpected: sp.AssertionConsumerServiceURL,\n\t\t\t\tActual:   subjectConfirmationData.Recipient,\n\t\t\t}\n\t\t}\n\n\t\tif subjectConfirmationData.NotOnOrAfter == \"\" {\n\t\t\treturn ErrMissingElement{Tag: SubjectConfirmationDataTag, Attribute: NotOnOrAfterAttr}\n\t\t}\n\n\t\tnotOnOrAfter, err := time.Parse(time.RFC3339, subjectConfirmationData.NotOnOrAfter)\n\t\tif err != nil {\n\t\t\treturn ErrParsing{Tag: NotOnOrAfterAttr, Value: subjectConfirmationData.NotOnOrAfter, Type: \"time.RFC3339\"}\n\t\t}\n\n\t\tnow := sp.Clock.Now()\n\t\tif now.After(notOnOrAfter) {\n\t\t\treturn ErrInvalidValue{\n\t\t\t\tReason:   ReasonExpired,\n\t\t\t\tKey:      NotOnOrAfterAttr,\n\t\t\t\tExpected: now.Format(time.RFC3339),\n\t\t\t\tActual:   subjectConfirmationData.NotOnOrAfter,\n\t\t\t}\n\t\t}\n\n\t}\n\n\treturn nil\n}\n\nfunc (sp *SAMLServiceProvider) ValidateDecodedLogoutResponse(response *types.LogoutResponse) error {\n\terr := sp.validateLogoutResponseAttributes(response)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tissuer := response.Issuer\n\tif issuer == nil {\n\t\t// FIXME?: SAML Core 2.0 Section 3.2.2 has Response.Issuer as [Optional]\n\t\treturn ErrMissingElement{Tag: IssuerTag}\n\t}\n\n\tif sp.IdentityProviderIssuer != \"\" && response.Issuer.Value != sp.IdentityProviderIssuer {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      IssuerTag,\n\t\t\tExpected: sp.IdentityProviderIssuer,\n\t\t\tActual:   response.Issuer.Value,\n\t\t}\n\t}\n\n\tstatus := response.Status\n\tif status == nil {\n\t\treturn ErrMissingElement{Tag: StatusTag}\n\t}\n\n\tstatusCode := status.StatusCode\n\tif statusCode == nil {\n\t\treturn ErrMissingElement{Tag: StatusCodeTag}\n\t}\n\n\tif statusCode.Value != StatusCodeSuccess {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      StatusCodeTag,\n\t\t\tExpected: StatusCodeSuccess,\n\t\t\tActual:   statusCode.Value,\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (sp *SAMLServiceProvider) ValidateDecodedLogoutRequest(request *LogoutRequest) error {\n\terr := sp.validateLogoutRequestAttributes(request)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tissuer := request.Issuer\n\tif issuer == nil {\n\t\t// FIXME?: SAML Core 2.0 Section 3.2.2 has Response.Issuer as [Optional]\n\t\treturn ErrMissingElement{Tag: IssuerTag}\n\t}\n\n\tif sp.IdentityProviderIssuer != \"\" && request.Issuer.Value != sp.IdentityProviderIssuer {\n\t\treturn ErrInvalidValue{\n\t\t\tKey:      IssuerTag,\n\t\t\tExpected: sp.IdentityProviderIssuer,\n\t\t\tActual:   request.Issuer.Value,\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "xml_constants.go",
    "content": "// Copyright 2016 Russell Haering et al.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage saml2\n\nconst (\n\tResponseTag                = \"Response\"\n\tAssertionTag               = \"Assertion\"\n\tEncryptedAssertionTag      = \"EncryptedAssertion\"\n\tSubjectTag                 = \"Subject\"\n\tNameIdTag                  = \"NameID\"\n\tSubjectConfirmationTag     = \"SubjectConfirmation\"\n\tSubjectConfirmationDataTag = \"SubjectConfirmationData\"\n\tAttributeStatementTag      = \"AttributeStatement\"\n\tAttributeValueTag          = \"AttributeValue\"\n\tConditionsTag              = \"Conditions\"\n\tAudienceRestrictionTag     = \"AudienceRestriction\"\n\tAudienceTag                = \"Audience\"\n\tOneTimeUseTag              = \"OneTimeUse\"\n\tProxyRestrictionTag        = \"ProxyRestriction\"\n\tIssuerTag                  = \"Issuer\"\n\tStatusTag                  = \"Status\"\n\tStatusCodeTag              = \"StatusCode\"\n)\n\nconst (\n\tDestinationAttr  = \"Destination\"\n\tVersionAttr      = \"Version\"\n\tIdAttr           = \"ID\"\n\tMethodAttr       = \"Method\"\n\tRecipientAttr    = \"Recipient\"\n\tNameAttr         = \"Name\"\n\tNotBeforeAttr    = \"NotBefore\"\n\tNotOnOrAfterAttr = \"NotOnOrAfter\"\n\tCountAttr        = \"Count\"\n)\n\nconst (\n\tNameIdFormatPersistent      = \"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\"\n\tNameIdFormatTransient       = \"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\"\n\tNameIdFormatEmailAddress    = \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\"\n\tNameIdFormatUnspecified     = \"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\"\n\tNameIdFormatX509SubjectName = \"urn:oasis:names:tc:SAML:1.1:nameid-format:x509SubjectName\"\n\n\tAuthnContextPasswordProtectedTransport = \"urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport\"\n\n\tAuthnPolicyMatchExact   = \"exact\"\n\tAuthnPolicyMatchMinimum = \"minimum\"\n\tAuthnPolicyMatchMaximum = \"maximum\"\n\tAuthnPolicyMatchBetter  = \"better\"\n\n\tStatusCodeSuccess          = \"urn:oasis:names:tc:SAML:2.0:status:Success\"\n\tStatusCodePartialLogout    = \"urn:oasis:names:tc:SAML:2.0:status:PartialLogout\"\n\tStatusCodeUnknownPrincipal = \"urn:oasis:names:tc:SAML:2.0:status:UnknownPrincipal\"\n\n\tBindingHttpPost     = \"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\"\n\tBindingHttpRedirect = \"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\"\n)\n\nconst (\n\tSAMLAssertionNamespace = \"urn:oasis:names:tc:SAML:2.0:assertion\"\n\tSAMLProtocolNamespace  = \"urn:oasis:names:tc:SAML:2.0:protocol\"\n)\n"
  }
]