Topics on this page

Create and manage deliverables

BriteCore’s document functionality manages deliverables—documents that are generated during the quote/policy/claim lifecycle. BriteCore has standard deliverables that a carrier can use and then add their logo and other carrier-specific fields to. Documents are static rendered files, typically delivered in PDF format, though other formats such as HTML or .docx can be used.

Generated documents and uploaded files are stored in Attachments. Deliverables generated by BriteCore are stored here automatically. Other files can be uploaded by policyholders, agents, and carrier users, and stored in this module.

BriteCore includes numerous stock deliverables and enables custom deliverables that have the same look and feel as stock deliverables, but include the ability to add custom content with HTML/Jinja. Fully customized documents are possible as well.

All deliverables are specific to states. Therefore, customizations made in one state won’t be reflected on the same deliverable under another state.

Types of deliverables in BriteCore

Stock deliverables

  • Available out of the box.
  • Cover basic policy lifecycle.
  • Some deliverables have fixed components.
  • Allow minor customization and the addition of paragraphs and signatures.

Custom deliverables

Custom deliverables allow a user to create documents that cover use cases not covered by the stock deliverables using HTML/Jinja. Jinja is an open source templating language used to build custom and render.py deliverables.

Render.py deliverables

Written in HTML/CSS/Jinja, these documents are completely customizable.

BriteDocs

BriteDocs is responsible for create, read, update, and delete (CRUD) operations on deliverable templates, which define the content and presentation of a document. BriteDocs serves as a deliverable rendering engine for the BriteCore ecosystem and can create/manage the following deliverable types:

  • HTML/Jinja templates
  • Static PDF forms
  • Dynamic PDF forms
  • Image assets (.png/.jpeg)

BriteDocs Integrates seamlessly with the BriteCore ecosystem as well as third-party data sources and solutions, and:

  • Supports HTML, PDF, and visual drag-and-drop editor interfaces.
  • Enables quick building of custom documents and easy single-source template changes by using reusable components.
  • Maps and recognizes data fields in uploaded PDFs from third-party document systems.
  • Empowers insurer development teams to build templates using HTML, CSS, and Jinja2.
  • Customizes documents with insurer assets, including logos and signatures.
  • Offers insurers easy editing and customization of document templates.
  • Automates the form update process, which minimizes manual inputs and saves time and effort.
  • Provides an elevated customer experience through fully branded document deliverables.

This tutorial will guide you through some BriteDocs APIs to:

  • List your imported documents.
  • List your imported document versions.
  • Query your document fields.
  • Generate a PDF of your imported document.

We will also cover key concepts, the BriteDocs process flow, and an overview of the relevant BriteDocs endpoints, their sample requests, and their responses.

Key concepts

  • Association for Cooperative Operations Research and Development (ACORD): ACORD is the global standards-setting body for the insurance and related financial services industries (non-profit, industry-owned organization).
  • Asset: Assets are CSS and image files that a user can import into a deliverable for customization.
  • Data point: A data point is information generated by other systems that a user can use on a deliverable, such as a recipient, policy number, etc.
  • Deliverable: A deliverable is any document produced by BriteCore.
  • Draft version: All deliverables created in BriteDocs have draft versions. They’re intended to give the person building it the ability to preview the deliverable without changing the one in place in production.
  • Effective date: When someone sets an effective date into a draft version BriteDocs freezes its contents—no changes can be made to it. From that date forward, this specific version will be used to render deliverables.

Note: Deliverables’ effective dates in BriteDocs are independent from other products.

  • Effective version: The effective version is the version your clients will receive, print, etc. Effective versions can’t be changed and are defined by effective dates, enabling the ability to generate different deliverables at different points in time.
  • Form: Forms are PDF files attached to some deliverables (mainly declarations) that outline which is an insured, the insuring conditions, what type of loss(es) are covered, and what type of loss(es) are excluded. In BriteDocs, users can fill PDF forms with data points as well and they’re also versioned.
  • Imported documents: Users can import dynamic PDF forms (such as ACORD) into BriteCore and integrate them into their workflow.
  • Rendering: The rendering engine accepts the document template along with any form data, generates the rendered output, and returns the location of the rendered file.
  • Rendering Location: Rendered documents are stored in an S3 bucket. S3 buckets are organized using a logical hierarchy to ensure that content is discoverable by any service that interacts directly with S3.
  • Template: A Jinja template.

BriteDocs process flow

BriteDocs relies on other services to request documents. All business logic, workflow, triggers, printing, and imaging are managed in other services.

Figure 1: BriteDocs process flow.

Transactions and deliverables in BriteCore

Table 1 summarizes a sample of transactions and corresponding deliverables available in BriteCore.

Table 1: Transactions and deliverables.

Policy TransactionDefinitionRelated Documents
QuoteAgent/underwriter initiates an inquiry about a risk.Quote Summary / Policy Application
New businessIssued businessDeclaration, Billing Statements, ID Cards (auto)
EndorsementChange to the contract(Amended) Declaration, Endorsement Summary
Cancellation PendingIncrease in risk / failure to pay on timeNotice of Cancellation Non-Payment of Premium, Notice of Cancellation (NOIC)
RescissionRescind a cancellation pendingContinuation of Coverage - NonPay, Continuation of Coverage
CancellationCoverage no longer in effectConfirmation of Cancellation, Return Premium Notice
ReinstatementPreviously canceled coverage now back in effectNotice of Reinstatement
RenewalOffer to extend coverage for another term(Renewal) Declaration, Renewal Offer, ID Cards (auto)
Non-RenewalNo offer to extend coverage for another termNotice of Non-Renewal
ExpirationEnd of term without a renewal offerConfirmation of Cancellation
RewriteNew policy contract copied from a previous contractConfirmation of Cancellation, Declaration

Use BriteDocs API endpoints

Note: Blocks of code are hidden by default to make the page more navigable. Select View code and Hide code to view or hide these sections as needed.

Step 1: Get a security token

You will need to request anID and Secret to use OAuth 2.0.

For more information, refer to How do I get started?

Step 2: List your documents

Use the listImportedDocuments endpoint (/documents/imported-documents/) to retrieve a list of documents.

Sample request

View code

curl --request GET \ --url {url}/documents/imported-documents/ \ --header 'authorization: '

Sample response

View code

{

"data": {

"count": 9,

"next": null,

"previous": null,

"results": [

{

"id": "b48cf1cf-1502-4edc-b892-3c3bbe897f8a",

"folder": "323b8839-d981-43d3-ba3d-5a70e8b786b6",

"name": "Contract Address Page",

"description": "Address page for contract delivery",

"type": "imported_document"

},

{

"id": "8726be60-1bdd-416a-b2d0-fac4b30e18cd",

"folder": "f647c7f2-9231-48e4-a988-1daae1cf1bcc",

"name": "ICC16 LE1 TIR ADB",

"description": "Terminal Illness Rider",

"type": "imported_document"

},

{

"id": "348c639d-f0b2-4b34-a869-13ee86826880",

"folder": "f647c7f2-9231-48e4-a988-1daae1cf1bcc",

"name": "LCC20_LC_page1",

"description": "Cover Page",

"type": "imported_document"

},

{

"id": "e3182fd6-ed0b-4f8d-9120-81faa27effe0",

"folder": "f647c7f2-9231-48e4-a988-1daae1cf1bcc",

"name": "LCC20_LC_page2",

"description": "Policy Detail",

"type": "imported_document"

},

{

"id": "f4ca2675-9c2e-4f7f-a3c5-3b48c131af11",

"folder": "f647c7f2-9231-48e4-a988-1daae1cf1bcc",

"name": "LCC20_LC_page3",

"description": "Annual Premium Amounts",

"type": "imported_document"

},

{

"id": "06ea63af-8839-4c08-b6f5-91cbc15b7716",

"folder": "f647c7f2-9231-48e4-a988-1daae1cf1bcc",

"name": "LCC20_LC_pages_4-11",

"description": "Static Policy Information",

"type": "imported_document"

},

{

"id": "4d673f4e-7063-4136-aca8-4dbaa9fe5489",

"folder": "f647c7f2-9231-48e4-a988-1daae1cf1bcc",

"name": "LU - 997.1 TI Rider Disclosure",

"description": "Terminal Illness Rider - Disclosure Statement",

"type": "imported_document"

},

{

"id": "0ce06d01-8018-4eba-b308-be36a00c77fd",

"folder": "760bf768-a91c-431f-ae98-6782479c90d5",

"name": "Symetra Application",

"description": "Term Life Insurance Application",

"type": "imported_document"

},

{

"id": "d8b5f10b-e867-406b-8333-9833cc0c4c24",

"folder": "760bf768-a91c-431f-ae98-6782479c90d5",

"name": "Test Page 1",

"description": "A test PDF",

"type": "imported_document"

}

]

}

}

Step 3: Get a list of your document versions

The listDocumentVersions endpoint (/documents/versions) retrieves a list of all your documents and their versions.

Sample request

View code

curl --request GET \
--url {{url}}/documents/versions/ \
--header 'authorization: '

Sample response

View code
{
"data": {
"count": 42,
"next": null,
"previous": null,
"results": [
{
"id": "246b8d68-8703-4104-ad19-85d7df529b03",
"archived_date": null,
"effective_date": null,
"description": "",
"name": null,
"parent": null,
"document": "8426c1e4-602b-4746-ba8d-276ca9fcfd48",
"path": "<amazon url path>"
},
{
"id": "4f6a0e8b-01d8-41c0-aa2d-e491722efbcb",
"archived_date": null,
"effective_date": null,
"description": "",
"name": null,
"parent": null,
"document": "655d01ff-fa26-4a67-accb-74a67579b388",
"path": "<amazon url path>"
},
{
"id": "59894d3f-a19b-42d0-a633-fa59127804a9",
"archived_date": null,
"effective_date": null,
"description": "",
"name": null,
"parent": null,
"document": "bb5e1786-9beb-4f5f-9708-b3635ffb1955",
"path": "<amazon url path>"
},
{
"id": "fb468c7f-277c-45e4-82c4-791faab252b0",
"archived_date": null,
"effective_date": null,
"description": "",
"name": null,
"parent": null,
"document": "afc32faa-4f95-49c5-a63e-4e3d8b2357ff",
"path": "<amazon url path>"
}

Step 4: Retrieve a specific document version

Using the getDocumentVersion endpoint (/documents/versions/{id}/) will give you the version of a specific document. You must pass a specific version_id from Step 3.

In the sample response below, we have only one version of the document requested.

Sample request

View code
 
curl --request GET \
--url {{url}}/documents/versions/246b8d68-8703-4104-ad19-85d7df529b03/ \
--header 'authorization: '

Sample response

View code

{
"data": [
{
"id": "af67a4a7-bc8b-47fd-aab6-268a01324960",
"archived_date": null,
"effective_date": null,
"description": "",
"name": null,
"parent": null,
"document": "0ce06d01-8018-4eba-b308-be36a00c77fd",
"path": "<amazon url path>"

Step 5: Query form fields

Use the listFormFields endpoint (/documents/form-fields/) to display all the fields and the corresponding data in a form. You must pass version_id.

Sample request

View code
curl --location --request 
GET 'https://<client url>/api/documents/imported-documents/
0ce06d01-8018-4eba-b308-be36a00c77fd/document-data/?version_id=af67a4a7-bc8b-47fd-aab6-268a01324960'

Sample response

View code

{“data”:

“Document data”:

"document_fields": [
{
"id": "007c32dc-8842-4bff-bac7-404432670c31",
"name": "Policy_BankName",
"mapping": null,
"version": "af67a4a7-bc8b-47fd-aab6-268a01324960",
"is_manual": false
},
{
"id": "00fe13d6-6d47-4a66-976a-8d937f2462e7",
"name": "LifeParticipant_SSN_1",
"mapping": null,
"version": "af67a4a7-bc8b-47fd-aab6-268a01324960",
"is_manual": false
},
{
"id": "01a58d30-164f-4fc6-ba66-eee9170d2007",
"name": "26",
"mapping": null,
"version": "af67a4a7-bc8b-47fd-aab6-268a01324960",
"is_manual": false
},
{
"id": "02816a19-d1ff-44ef-b7c9-13de8cedc04c",
"name": "3_SignatureInfo_SignatureCity",
"mapping": null,
"version": "af67a4a7-bc8b-47fd-aab6-268a01324960",
"is_manual": false
}

Step 6: Generate a PDF document

The endpoint generateImportedDocument (/documents/imported-documents/{id}/generate-document/) will return a Base64 encoded payload of your PDF. You need to pass the version ID, version name, effective date, and name of your document. You can get this information from the response in Step 3.

Sample request

View code

curl --location --request 
POST '<client url>/documents/imported-documents/
a7e7cde1-1335-4535-b98a-6b44b17a7773/generate-document/' \
--header 'Authorization: \
--header 'Content-Type: text/plain' \
--data-raw '{
"name": "Insurance test",
"folder": "f38f50c1-2ace-4035-83df-0c48d010a782",
"description": "test",
"type": "imported_document",
"effective_date": null,
"version_name": "draft",
"version_description": null,
"user_id": "",
"user_name": "",
"version_id": ""
}'

Sample response

View code

"data": "JVBERi0xLjMKMSAwIG9iago8PAovVHlwZSAvUGFnZXMKL0NvdW50IDAKL0tpZHMgWyBdCj4+CmVuZG9iagoyIDAgb2JqCjw8Ci9Qcm9kdWNlciAoUHlQREYyKQo+Pgpl
bmRvYmoKMyAwIG9iago8PAovT3V0bGluZXMgNCAwIFIKL1BhZ2VNb2RlIC9Vc2VOb25lCi9QYWdlcyA1IDAgUgovVHlwZSAvQ2F0YWxvZwo+PgplbmRvYmoKNCAwIG9iago8PAov
Q291bnQgMAovVHlwZSAvT3V0bGluZXMKPj4KZW5kb2JqCjUgMCBvYmoKPDwKL0NvdW50IDIKL0tpZHMgWyA2IDAgUiAxNCAwIFIgXQovVHlwZSAvUGFnZXMKPj4KZW5kb2JqCjY
gMCBvYmoKPDwKL0NvbnRlbnRzIDcgMCBSCi9NZWRpYUJveCBbIDAgMCA2MTIgNzkyIF0KL1BhcmVudCA1IDAgUgovUmVzb3VyY2VzIDw8Ci9Gb250IDggMCBSCi9Qcm9jU2V0IFsgL1
BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9YT2JqZWN0IDw8Ci9Gb3JtWG9iLjU4ZDM0ZjZhOGQ1ZGU3NTQzZWM0MmJkZjAxYTFiN2IxIDEzIDAgUgo+Pgo+PgovUm9
0YXRlIDAKL1RyYW5zIDw8Cj4+Ci9UeXBlIC9QYWdlCj4+CmVuZG9iago3IDAgb2JqCjw8Ci9GaWx0ZXIgWyAvQVNDSUk4NURlY29kZSAvRmxhdGVEZWNvZGUgXQovTGVuZ3RoIDIyMjEKP
j4Kc3RyZWFtCkdhdWBVOTJqUzkmQUQpXkohYFM1YzUlSklIVWNkYTBGT2lrKjM9aDwoKUxCZTpoISgjZmFfRz9yViI9YGI2WjNqYUpKcV46VWQ0dUNPT1tcNGVkYkolbyM3LjFQQ2
NuZTJzQFsxP0A6OS5eMjIrNCNDcE5wXG1hNWt1cUBgYmJhNTtDI1dPZjguSVNeJ0dPPkJLWWg9YWwyRyNYLGA2NWE3NW4+OyNvQyhuMUQ7ZT0yLClxaCJoVTJYJydkamBJNylEJV
sobD5ZcSgzSEwkM1BHY0ZxZGZRKlVvOClZJmFpWTFGLmdtTllNIT1TS24zbCx1PlM+S0hyZVAqVTdVZzFxTjYhNltzUWtLUm1TJGVPUHNpZj8hb0JPU106PExhPz9PZDVkOFJ
pRk1wTlFxbVNeRlMscXA3MExqbFxWI1VSZXVCXkspaStpIl9UPVhHVF0tZyU8ZEFxN151KWZvaD90XTA1NyRGcyo2ZipyWCF0JGVrSCVYIl1ON3RHYl0nNyRISiUqX09nKHVr
LG43akI7Wz4nLUsrMyRIMkRkanQxamk7YU1lM0pMTlE+XVtEJ1hIVUNfYUJZJ0tddEZxcV82bEU/RTA5Xl0iP0ZddVFOXzAkbjlabW5dNkorL0xaM2EyP1taLWU7Lz4wVzM/Si5DYm
NAYHVvVXRCbl9oSCwmc21LP1VAPklIYUcsMUhGcEsjUSxLbj87Q1xuRi5ORWRDcylAKEg3WytCWzRfZjslMF8sb1dAO19xXjlZbW05KC9oOGQ5PCNTTDAyOFpbVlRkWD46KEYlNTBSY0UmY
SVuZjxHLS4qOk9gQDxWQElBN2U6b2FiJk0xc0pJK1oyZHJfWzdJUTxfMiNkRGJtLVdbJSVCKiwzUj9Aa2Y3YWRoKVclYD9HRmRKJ2ItQ2g0YjUhdTtVV0JSRWddOE1POiVPT1QzaGxbQ2
FGVmZIbW9JVyNNb0FMcFttSjltLWhiRilZUUNmJilPcDNvXUM3N3I6L1U5QE81aG1MUWsmWFVUL14qPUQudUlFLS5bTEc/Ry03QGE5cmlhPXA7ZGU/VUUoNTVVU2ldalFgUWtjanU4Lz5
VUXFEXGksaHAjY1xzSDg/WSYrZExtWj1nbVdtVSdOZ0tHRj9SbjUndWZOSyQ4MzchXnJEUlUsRz9mODUnbD1hVXBCQStHODkzR1JyKG9jcmk+OGByPiYxMVZcQ3AjMGtvZDUiKTwySio
0a1svb3RfXG0iLEdYczYhWmdvcjRtPmtELyo8LlE6RUEyIktccV86WUNDclw2YWRCbEo5VzdaMlpgLiUyZmBFI2lhZThNN1EyaWllLUFZVC4sVD9SKmZVQS5Namc6YWIqMS8jSjhYKGQ
+UyQ4KmNkSTkiNC9dJEZqQSkyOElcOmk1W1cxXEBxUlVNcjs0LlAwQC9DJG1MJkI4V3JaRzlSMDBCVklQY0dkUWNYMS5xdFU2bGdMU1BtKFFkZzYjSkNKVCxPWmtqR1chcG5MXVIxNzF
iMHQ1aj0xLUQ8KkA6ImFJI2w+UG1xOmJzUmhJbWREbS8xU2ItLUZdK0Y9JSJdZkZeInFgZWA8OGVySG48dDpfYzhqdVsmMUY1USZUP1lVYVRQTiREZUFrQzYiUkFXXTQ/RFtWOyFvVldTa
j04TzU/VWdKbi9QMUtTRHBfQFdmLig2b2knWGI2ZysuLXN0QFdNWVlsXXMkcyhLZj5PdWhBZ1FEJ10nJjBkKUVcWl1eWmldaFpYQSg+SCRDW0ZNNzRCZDZmTFQnXFt1bUpwVUlkWklKI1
5GOms2K18iNUh1PCgxWTheOW50Ylo9RVdiK007TCpic1dLWkRpdXRtOTs4TmdDaG9nVGk3JEFYaHImb2hXOickTnFyUjFhTzE0XzE+O0tqajB1Ym41ckdHUl86ajVCKlI/M28yQ2heJjJLX
l4mQ1EuKDVdYklKPSZSSEBfbU9zSSJcQkQyMlQsZjopYFZvImc2UDcvKi5LY1NwTV1UOS9JIlNxMSxraFpQY29QTkRIY0k6bmZgWlcwbGEoUT8nSTAiLU8kZCdGTkI9Sm4/UVo2aT46L2ZjKDJ0
YiUtQGM4JTo5T1BrW2RqaDRIX1AoWkcoTmA5XzY3VylOOmFPW1U6JDklVCVhYGFvSFs6KG1eTnVNMDRzZCUvM2siVTEkWiZwazRvcWUxcTpXZ1tiXVppY0JwcW5RLTFtXG9pIz00aSM2MnJnT
2FEKS46J1E+Sk5rTUFnPytOOyNUSDJWMyFHS0QsbSVfbE9HSGJlclReWVc6VmVyOVkxQHRjLGElPmc1KE4wN1kqcjJQcyk1PjlOU1VkUjRWYXQpIVIlaWk1KCIjMV04azBvWFU6Y2UwTlRSOml
UQiozWDtzVVhOIVMpP2JrJUEnKkVAcC1RKS05WDRFS187UlAkakk1L2RjQm5mI2tAU2ZuRSRtUU9GWyFbM1UqXUo/TyJPcCZUcms5YEk2IjlcUWxAOjohRl1eUU4zMk47cSwuOi5iLVxMMU1s
dV1obDUwKkQrOD5DOGtnLjs7LlVQTlRQXjphXV1SMyQnTXVQaUg/Sm5UbEJIbVpES1EmPjlrdVYvPGEtO1pwYzI5U1UnUkdWNlNwQ2BWcnFmZVRZZkthaCdGP2M7KHJtVG83Q2MvZTJOPDxDdV
NmUGtkOkRCQiloIkFFLlgiTkMsWGdOUGtHLzNFbjhPNSVROEByKUIsMjdZdENFXjlkL2U4JlpsSnBoJEFlRlk7Y1QtRU9IIm9LJj1yZVl1biI5czdMW1piPz9VPyE4MU4wYCtKalhQWUlOZ2g+WUB
kRF4sXFwjNjhtR19fO1sqRzFsUk1ZYmpLWzc+UkprQ18yayJdLypTWEZfL2xOaFkwN3E+KUxxWCxlI1tVaTY2WS1mUl8hJEtgWUFTXGRZMjhYIj9lU1k6OGpfZixiRGBWKDI6biwzTGlENXUrfj4KZ
W5kc3RyZWFtCmVuZG9iago4IDAgb2JqCjw8Ci9GMSA5IDAgUgovRjIgMTAgMCBSCi9GMyAxMSAwIFIKL0Y0IDEyIDAgUgo+PgplbmRvYmoKOSAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYQov
RW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwovTmFtZSAvRjEKL1N1YnR5cGUgL1R5cGUxCi9UeXBlIC9Gb250Cj4+CmVuZG9iagoxMCAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xkCi
9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCi9OYW1lIC9GMgovU3VidHlwZSAvVHlwZTEKL1R5cGUgL0ZvbnQKPj4KZW5kb2JqCjExIDAgb2JqCjw8Ci9CYXNlRm9udCAvSGVsdmV0aWNhLU9ibGl
xdWUKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL05hbWUgL0YzCi9TdWJ0eXBlIC9UeXBlMQovVHlwZSAvRm9udAo+PgplbmRvYmoKMTIgMCBvYmoKPDwKL0Jhc2VGb250IC9UaW1lcy1Cb2xk
Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCi9OYW1lIC9GNAovU3VidHlwZSAvVHlwZTEKL1R5cGUgL0ZvbnQKPj4KZW5kb2JqCjEzIDAgb2JqCjw8Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0
NvbG9yU3BhY2UgL0RldmljZVJHQgovRmlsdGVyIFsgL0FTQ0lJODVEZWNvZGUgL0ZsYXRlRGVjb2RlIF0KL0hlaWdodCA1NAovU3VidHlwZSAvSW1hZ2UKL1R5cGUgL1hPYmplY3QKL1dpZHRo
IDE4OQovTGVuZ3RoIDE5ODEKPj4Kc3RyZWFtCkdiIi9saGVObS4nWl40aT9bVkZoLWMkJHA3LjxWSmQyKilwcVZtLGtMXjU0KFcxWltNVWAnZFAuXF1maihAI0w7RyJaJm5END5fJzoiK
m9uUClZR20pQiwqNFVlMTFUOCwoY25vZkM7QmRxTzlUU05GTSxMMmM7O2JlN1hNQj9pTG5cTUtlZ0U4YmtWbW9IIjBpU2NmJS5UU0YuO0YpR1AjW0UxbiNtMSlrZlRFUlAhV2EnayNXTnN
jRSJFJGY4ZkRaK2FlXCtJVVxSUUwodGcyaC4rLDpTR1FnOUZNX2EzXXE9PE9hTjVcLT45WCUjUG9ZPkhKOE5nNkxAUk1AYF51KiFyNlpjPTkpQSFlRS5XZVxoJkBZSUtfZWZzOj10aVdYP
TplS2oxWVUjVW9hSVsuMzJBWilaWlxBQWtSVUY5KjRWOzFJcCNAdTUmZjRdcTVsbihPPGBbMipCWXJrInJucW5ORnAyVD9rPnREcVxOcixnVmE1WzQrOiZVZVtyY1E6cnFQTzA1O1okX
zRUUC9qJHB0IWxWZGFEaF4tUk1YbmYmIXM3PkUiJV88SEkvMXU3QDQ6KUsra1ZISmExWHA8WSkzT1hpZyJPNGRLbTVePDRoXWhFMEglUmEtMVBsUGpEbF1ZXTlsLmVeS04kPjFyZUhRbnA
pXTQ/KjghJ2JnNzNoIUNvYTcmckc8Lyw2I1kzVjo0YS87ZlRGP1szN2FobyMoalFVNVwhJU8lKjdrVSxOPy9SP2ElM1VZYSZMQGNCZDlTLEZmIUVuLDJ1VGVZQCprNlQ+W0UjVSVqVlAsY
zAoOTQyRF1WbmwxWVZyO3BAJk0vOlMkZCFyWzM6dUg/NHVePEM6K3NxJzNeMSdKMFFgTDdQOVAqSkV0UjxjKSthbzRzK1JoOVQnMzQ8JDw7aXJWLXNaZHE/KGNdajw4O09WKFlqTzgpLz1IXk
gtSWJ1Y09VJWoxIk0rVm8uVl07TlFWcT1YRGRbQDc5SVBmLydDNHJrVV9nZW1JbnEiVzo+PktUM3EjbUFXQ0hocF1iXEMjcCVqVGM7PWklbVBZLykwUXNNXGkoO1UlJ11NK3VsYDNgQltC
TWpgV3VyJFouMEY4cC5ZXSohJ14zYC8xXGRoQFZhaU4/Vi5VZStFRC82Yi9gLzgval5RKylhKVVEQ1k7cS9tZnFnN242KENQP186Yz9YWSZxZSJHYTZJXCJWUVFWNiQ9bSNjMURpSFJSa0dxWSF
cQSZqVj9EVm4yPy9uLnVPbTEkXldoK1NKc2FDbkoqO0M0MkZsNGVQWFcvbzprUShjWy5CPSgkaWFSRGNoPkFpIU8mbEQxWlNXR190UjFcRTZrOiVXR05tKyhaXltnWSkoJ244Ul4yMFsna15kWm1OdX
AlUjMzcFYubWVjYitLOFRZL2g3SzxuSE4xXlEpS19YT0BVWy40XnVrRUYpWGdJUlFtNHRMaFteX29wKXUxRF1yQSg5QjZsInQqXitoNmtXaFcscTdhKGAqY2MlMyVKP0VPJFQmLjlLUlVnVlRzSjU7Sl
xwS2lQUTBGT1gqKFYpTUo1XUJoW1VfKnBYcT5TUl47WkNqbiRCRjM7O0E2ZkYkNyFocmoxTSIkUltoNk8yXic+WUNudGtmaUk6JVMiTFlSWjUwKWpwM3JdKl1XKWE+JU5dUFRjcDZaV0Y5aDAjVz10ZDY8L1
pncHRRaWluWXQkSVQwJnQ7PVVCMkNXTk4hTyQ/cWwxLFZFcU1yM0NoUG9cJFMhN1cyWWtpakVQb0FTO1xXaGEuaCduK1BcXilSQXIxKVBDO1ZbQSsyWE9Wc2ZbQUpEajQ2JiNeViVTaVFUMVZAV0ooKTQ/QVlzP
yspbmhUIUNrNzY0ZmorbDwscGxFPUpNPUM4KS5xaEc9T1xNNnItTCJTMFZAXkkxPSw4LU0jOS42bUFuS0NTSEdgakg+TWlpa0AiSmZQRWs/PCopRDRXbmZpUWdMV3VlP1U0NjItZScyOiY6MXQuU0lfS0orVXFqPTYra
yUsLyxtJlgzZl1ORDM5XkIoNjEuKyE2NiokIzxhZ0pqKSIsTD5ASkpeXWRsJjxDYSpvQWFAQj5Waz02YEMqJVkpMyMuWyklJUZqaVVMSSZyXjZpbi4oLV4ocjdzMkdMO0Y2JjVLUT48WDo4VDNiXGthXTZFSTtOQSNQUThI
ZzYmNDdxRFAiYldUTissRipYP21JZW00bF1AUmdnLVtTY15eMUpaNnU5PSYmJTwtLSxpTl1pSUpYZTpOM3NnRjkmYGAwbUhzNWdFbW4/ZiFrY1YpZGonOFNVSFtuMFUiNi09LCtoJTIpL2RwaVZlIVZdYWZfZEUpNmxfZ
ihDS0RtVSIxUz0iKW0kMTtebS1MZ1RyL3I6O2ljQk80KF8pR2ZGNFdscyU0LS9POC8nZ2krVCpScmZxNidVKSxaKDtdXlYmcCtaWmNkTCgtKkxVLWFFXy1bQFRhIiYhSlddMzw7LzgwWkZqUCUxWENzVWFCWzlMbycoZ
GpUYDgkSVNcP1knL11oMWpJSF5oVFMmIy9YMCZmTHJvPlFIIXFNPGM4YjRLJS9lb1VKW0gmMjskXl5MSVUxSm4tOV5yNz1dS2IwKTlXazVQRzFkPzBJfj4KZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PAovQ29udGV
udHMgMTUgMCBSCi9NZWRpYUJveCBbIDAgMCA2MTIgNzkyIF0KL1BhcmVudCA1IDAgUgovUmVzb3VyY2VzIDw8Ci9Gb250IDggMCBSCi9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCj4+
Ci9Sb3RhdGUgMAovVHJhbnMgPDwKPj4KL1R5cGUgL1BhZ2UKPj4KZW5kb2JqCjE1IDAgb2JqCjw8Ci9GaWx0ZXIgWyAvQVNDSUk4NURlY29kZSAvRmxhdGVEZWNvZGUgXQovTGVuZ3RoIDYxCj4+CnN0cmVhbQpHYXBRaDBFPUY
sMFVcSDNUXHBOWVReUUtrP3RjPklQLDtXI1UxXjIzaWhQRU1fVFNka2I2N21dIzcrS34+CmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDE2CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAw
MDYyIDAwMDAwIG4gCjAwMDAwMDAxMDIgMDAwMDAgbiAKMDAwMDAwMDE4NiAwMDAwMCBuIAowMDAwMDAwMjMyIDAwMDAwIG4gCjAwMDAwMDAyOTggMDAwMDAgbiAKMDAwMDAwMDU1MSAwMDAwMCBuIAowMDAwMDAyODY0IDAwMDAw
IG4gCjAwMDAwMDI5MjggMDAwMDAgbiAKMDAwMDAwMzAzNSAwMDAwMCBuIAowMDAwMDAzMTQ4IDAwMDAwIG4gCjAwMDAwMDMyNjQgMDAwMDAgbiAKMDAwMDAwMzM3MyAwMDAwMCBuIAowMDAwMDA1NTQzIDAwMDAwIG4gCjAwMD
AwMDU3MzQgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxNgovUm9vdCAzIDAgUgovSW5mbyAyIDAgUgo+PgpzdGFydHhyZWYKNTg4NgolJUVPRgo="
}

You can pass the Base64 encoded data above to a free converter like Base64 Guru to decode it and preview the PDF.

You have successfully created and managed a deliverable.