PageSourceSearch

https://embedded-workflow-builder.netlify.app/assets/js/3c04ae03.96f13256.js

js embedded-workflow-builder.netlify.app collected 2026-10-03 10:45:59 UTC 21,614 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkembedded_workflow_builder_docs=self.webpackChunkembedded_workflow_builder_docs||[]).push([["8381"],{21512(e,n,t){t.r(n),t.d(n,{metadata:()=>s,default:()=>a,frontMatter:()=>o,contentTitle:()=>d,toc:()=>l,assets:()=>c});var s=JSON.parse('{"id":"connectors/google-docs","title":"Google Docs Connector","description":"Create, retrieve, and update Google Docs documents.","source":"@site/docs/connectors/google-docs.md","sourceDirName":"connectors","slug":"/connectors/google-docs","permalink":"/connectors/google-docs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Google Docs Connector","sidebar_label":"Google Docs","description":"Create, retrieve, and update Google Docs documents."},"sidebar":"docs","previous":{"title":"Google Cloud Storage","permalink":"/connectors/google-cloud-storage"},"next":{"title":"Google Drive","permalink":"/connectors/google-drive"}}'),r=t(74848),i=t(28453);let o={title:"Google Docs Connector",sidebar_label:"Google Docs",description:"Create, retrieve, and update Google Docs documents."},d,c={},l=[{value:"API Documentation",id:"api-documentation",level:2},{value:"Connections",id:"connections",level:2},{value:"OAuth 2.0",id:"googledocsoauth2",level:3},{value:"Prerequisites",id:"prerequisites",level:4},{value:"Setup Steps",id:"setup-steps",level:4},{value:"Configure the Connection",id:"configure-the-connection",level:4},{value:"App Verification",id:"app-verification",level:4},{value:"Publishing the App",id:"publishing-the-app",level:4},{value:"Requesting Verification",id:"requesting-verification",level:4},{value:"Actions",id:"actions",level:2},{value:"Batch Update Documents",id:"batchupdatedocuments",level:3},{value:"Create Document",id:"createdocument",level:3},{value:"Get Document",id:"getdocument",level:3},{value:"Raw Request",id:"rawrequest",level:3}];function h(e){let n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.img,{alt:"Google Docs",src:t(7434).A+"#connector-icon",width:"32",height:"32"}),"\n",(0,r.jsx)(n.a,{href:"https://workspace.google.com/products/docs/",children:"Google Docs"})," is an online word processor included as part of the free, web-based Google Docs Editors suite.\nThis component allows creating, retrieving, updating, and collaborating on online documents."]}),"\n",(0,r.jsx)(n.h2,{id:"api-documentation",children:"API Documentation"}),"\n",(0,r.jsxs)(n.p,{children:["This component was built using the ",(0,r.jsx)(n.a,{href:"https://developers.google.com/workspace/docs",children:"Google Docs API Documentation"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"connections",children:"Connections"}),"\n",(0,r.jsx)(n.h3,{id:"googledocsoauth2",children:"OAuth 2.0"}),"\n",(0,r.jsx)(n.p,{children:"Authenticate using OAuth 2.0"}),"\n",(0,r.jsx)(n.p,{children:"All requests to the Google Docs API must be authorized by an authenticated user."}),"\n",(0,r.jsx)(n.p,{children:'The details of the authorization process, or "flow," for OAuth 2.0 vary somewhat depending on the kind of application being built. The following general process applies to all application types.'}),"\n",(0,r.jsx)(n.h4,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["A ",(0,r.jsx)(n.a,{href:"https://console.cloud.google.com/",children:"Google Cloud"})," account with access to create projects and credentials"]}),"\n",(0,r.jsx)(n.li,{children:"Permission to enable APIs and configure the OAuth consent screen"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"setup-steps",children:"Setup Steps"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Register the application in the ",(0,r.jsx)(n.a,{href:"https://console.cloud.google.com/",children:"Google API Console"}),". Google then provides values needed later, such as a client ID and a client secret."]}),"\n",(0,r.jsxs)(n.li,{children:["From ",(0,r.jsx)(n.strong,{children:"APIs & Services > Library"}),", enable the ",(0,r.jsx)(n.strong,{children:"Google Docs API"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["To create API credentials, navigate to ",(0,r.jsx)(n.strong,{children:"Enabled APIs & Services > Credentials"}),":\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Select ",(0,r.jsx)(n.strong,{children:"Create Credentials > OAuth Client ID"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Set the application type to ",(0,r.jsx)(n.strong,{children:"Web Application"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Fill out the OAuth consent screen with an app name (a company or product name), support email, app logo, domain, etc."}),"\n",(0,r.jsxs)(n.li,{children:["Select ",(0,r.jsx)(n.strong,{children:"Add Or Remove Scopes"})," and check the boxes for the scopes the integration requires (see the ",(0,r.jsx)(n.a,{href:"https://developers.google.com/workspace/docs/api/auth",children:"Google Docs API authorization documentation"})," for available scopes)."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Under ",(0,r.jsx)(n.strong,{children:"Authorized redirect URIs"}),", enter the OAuth 2.0 callback URL: ",(0,r.jsx)(n.code,{children:"https://oauth2.integrations.acme.com/callback"})]}),"\n",(0,r.jsxs)(n.li,{children:["Take note of the ",(0,r.jsx)(n.strong,{children:"Client ID"})," and ",(0,r.jsx)(n.strong,{children:"Client Secret"})," that are generated, as they are entered during authentication."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"configure-the-connection",children:"Configure the Connection"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Enter the ",(0,r.jsx)(n.strong,{children:"Client ID"})," and ",(0,r.jsx)(n.strong,{children:"Client Secret"})," from the generated OAuth credentials."]}),"\n",(0,r.jsxs)(n.li,{children:["For ",(0,r.jsx)(n.strong,{children:"Scopes"}),", enter a space-delimited list of the required scopes. The default value is:\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"https://www.googleapis.com/auth/documents\n"})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Refer to the ",(0,r.jsx)(n.a,{href:"https://developers.google.com/workspace/docs/api/auth",children:"Google Docs API authorization documentation"})," for additional scope information."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"app-verification",children:"App Verification"}),"\n",(0,r.jsx)(n.p,{children:"Google requires OAuth apps that request access to user data to pass a verification review before being deployed at scale. This process ensures the app complies with Google's API Services 
1User Data Policy, accurately represents its functionality, and handles user data responsibly."}),"\n",(0,r.jsx)(n.p,{children:"Google OAuth apps pass through three stages before they are ready for production use."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Testing (unpublished):"})," The app is only accessible to users manually added as test users in the OAuth consent screen. Up to 100 test users are allowed. All other users receive an error. This is the expected state during initial development."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Published, unverified:"})," After publishing the app, all Google users can authenticate. However, for sensitive or restricted scopes, users see a ",(0,r.jsx)(n.strong,{children:'"This app isn\'t verified"'})," warning. Users can proceed by clicking ",(0,r.jsx)(n.strong,{children:"Advanced"})," \u2192 ",(0,r.jsx)(n.strong,{children:"Go to [app name] (unsafe)"}),", but this warning reduces trust and may be blocked by organizations with strict Google Workspace policies."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Verified:"})," Google has reviewed and approved the app. No warning is shown. Verification is required before deploying to production users."]}),"\n",(0,r.jsx)(n.h4,{id:"publishing-the-app",children:"Publishing the App"}),"\n",(0,r.jsx)(n.p,{children:"Publishing is required before any users outside the test list can authenticate:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["In the ",(0,r.jsx)(n.a,{href:"https://console.cloud.google.com/",children:"Google Cloud Console"}),", navigate to ",(0,r.jsx)(n.strong,{children:"APIs & Services"})," \u2192 ",(0,r.jsx)(n.strong,{children:"OAuth consent screen"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Click ",(0,r.jsx)(n.strong,{children:"PUBLISH APP"})," and confirm."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"requesting-verification",children:"Requesting Verification"}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"https://www.googleapis.com/auth/documents"})," scope is a ",(0,r.jsx)(n.strong,{children:"sensitive scope"})," and requires verification. If the integration also requests ",(0,r.jsx)(n.strong,{children:"restricted scopes"})," (such as ",(0,r.jsx)(n.code,{children:"https://www.googleapis.com/auth/drive"}),"), a security assessment is required in addition to standard sensitive scope verification:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["On the ",(0,r.jsx)(n.strong,{children:"OAuth consent screen"}),", click ",(0,r.jsx)(n.strong,{children:"Prepare for verification"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Provide a privacy policy URL, authorized domain, and app logo."}),"\n",(0,r.jsxs)(n.li,{children:["For restricted scopes, arrange a ",(0,r.jsx)(n.strong,{children:"security assessment"})," with a ",(0,r.jsx)(n.a,{href:"https://support.google.com/cloud/answer/10311615",children:"Google-approved assessor"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Submit for review. Restricted scope reviews can take longer than sensitive scope reviews."}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Refer to ",(0,r.jsx)(n.a,{href:"https://support.google.com/cloud/answer/10311615",children:"Google's OAuth consent screen documentation"})," for the full verification requirements."]}),"\n",(0,r.jsxs)(n.p,{children:["This connection uses OAuth 2.0, a common authentication mechanism for integrations.\nRead about how OAuth 2.0 works ",(0,r.jsx)(n.a,{href:"/oauth2",children:"here"}),"."]}),"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Input"}),(0,r.jsx)(n.th,{children:"Comments"}),(0,r.jsx)(n.th,{children:"Default"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Scopes"}),(0,r.jsxs)(n.td,{children:["Space delimited listing of scopes. See ",(0,r.jsx)(n.a,{href:"https://developers.google.com/docs/api/auth#scopes",children:"Google Docs API documentation"})," for available scopes."]}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"https://www.googleapis.com/auth/documents",children:"https://www.googleapis.com/auth/documents"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Client ID"}),(0,r.jsx)(n.td,{children:"The Client ID for the Google Docs OAuth 2.0 application."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Client Secret"}),(0,r.jsx)(n.td,{children:"The Client Secret for the Google Docs OAuth 2.0 application."}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"actions",children:"Actions"}),"\n",(0,r.jsx)(n.h3,{id:"batchupdatedocuments",children:"Batch Update Documents"}),"\n",(0,r.jsx)(n.p,{children:"Applies one or more updates to the document."}),"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Input"}),(0,r.jsx)(n.th,{children:"Comments"}),(0,r.jsx)(n.th,{children:"Default"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Connection"}),(0,r.jsx)(n.td,{children:"The Google Docs connection to use."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Document ID"}),(0,r.jsx)(n.td,{children:"The unique identifier for the document to update."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Requests"}),(0,r.jsxs)(n.td,{children:["A JSON array of updates to apply to the document. See the ",(0,r.jsx)(n.a,{href:"https://developers.google.com/docs/api/reference/rest/v1/documents/request#request",children:"Request object reference"})," for available request types."]}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:'[{"insertText":{"location":{"index":1},"text":"Example text"}}]'})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Required Revision ID"}),(0,r.jsxs)(n.td,{children:["The revision ID the write request is applied to. If this is not the latest revision of the document, the request is not processed and returns a 400 bad request error. See the ",(0,r.jsx)(n.a,{href:"https://developers.google.com/docs/api/reference/rest/v1/documents/batchUpdate#writecontrol",children:"WriteControl reference"}),"."]}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Target Revision ID"}),(0,r.jsxs)(n.td,{children:["The target revision ID the write request is applied to, merging changes against any collaborator edits made after the document was read. See the ",(0,r.jsx)(n.a,{href:"https://developers.google.com/docs/api/reference/rest/v1/documents/batchUpdate#writecontrol",children:"WriteControl reference"}),"."]}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"createdocument",children:"Create Document"}),"\n",(0,r.jsx)(n.p,{children:"Creates a blank document using the title given in the request."}),"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Input"}),(0,r.jsx)(n.th,{children:"Comments"}),(0,r.jsx)(n.th,{children:"Default"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Connection"}),(0,r.jsx)(n.td,{children:"The Google Docs connection to use."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Title"}),(0,r.jsx)(n.td,{children:"The display name for the new document."}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"getdocument",children:"Get Document"}),"\n",(0,r.jsx)(n.p,{children:"Gets the latest version of the specified document."}),"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Input"}),(0,r.jsx)(n.th,{children:"Comments"}),(0,r.jsx)(n.th,{children:"Default"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Connection"}),(0,r.jsx)(n.td,{children:"The Google Docs connection to use."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Document ID"}),(0,r.jsx)(n.td,{children:"The unique identifier for the document to retrieve."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Suggestions View Mode"}
1),(0,r.jsx)(n.td,{children:"The mode that controls how suggested edits are rendered in the returned document."}),(0,r.jsx)(n.td,{children:"DEFAULT_FOR_CURRENT_ACCESS"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"rawrequest",children:"Raw Request"}),"\n",(0,r.jsx)(n.p,{children:"Send raw HTTP request to Google Docs"}),"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Input"}),(0,r.jsx)(n.th,{children:"Comments"}),(0,r.jsx)(n.th,{children:"Default"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Connection"}),(0,r.jsx)(n.td,{children:"The Google Docs connection to use."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"URL"}),(0,r.jsxs)(n.td,{children:["The path to append to the base URL. Enter the path only (for example, /v1/documents/{documentId}); the base URL (",(0,r.jsx)(n.a,{href:"https://docs.googleapis.com",children:"https://docs.googleapis.com"}),") is added automatically."]}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Method"}),(0,r.jsx)(n.td,{children:"The HTTP method to use."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Data"}),(0,r.jsx)(n.td,{children:"The HTTP body payload to send to the URL."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Form Data"}),(0,r.jsx)(n.td,{children:"The Form Data to be sent as a multipart form upload."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"File Data"}),(0,r.jsx)(n.td,{children:"File Data to be sent as a multipart form upload."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"File Data File Names"}),(0,r.jsx)(n.td,{children:"File names to apply to the file data inputs. Keys must match the file data keys above."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Query Parameter"}),(0,r.jsx)(n.td,{children:"A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Header"}),(0,r.jsx)(n.td,{children:"A list of headers to send with the request."}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Response Type"}),(0,r.jsx)(n.td,{children:"The type of data you expect in the response. You can request json, text, or binary data."}),(0,r.jsx)(n.td,{children:"json"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Timeout"}),(0,r.jsx)(n.td,{children:"The maximum time that a client will await a response to its request"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Debug Request"}),(0,r.jsx)(n.td,{children:"Enabling this flag will log out the current request."}),(0,r.jsx)(n.td,{children:"false"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Retry Delay (ms)"}),(0,r.jsx)(n.td,{children:"The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled."}),(0,r.jsx)(n.td,{children:"0"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Retry On All Errors"}),(0,r.jsx)(n.td,{children:"If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors."}),(0,r.jsx)(n.td,{children:"false"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Max Retry Count"}),(0,r.jsx)(n.td,{children:"The maximum number of retries to attempt. Specify 0 for no retries."}),(0,r.jsx)(n.td,{children:"0"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Use Exponential Backoff"}),(0,r.jsx)(n.td,{children:"Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored."}),(0,r.jsx)(n.td,{children:"false"})]})]})]})]})}function a(e={}){let{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},7434(e,n,t){t.d(n,{A:()=>s});let s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsSAAALEgHS3X78AAAFDUlEQVRYha2X23MTVRzHWxX5p9SQNvcmadI0hULQBxUdH2R8A1FC0uay2SRNk7ZMho5jC9Mp5SKMIA/KcLOIUhgVQUFeWrAwtIQm52xJSHa/ztndNAliJ5eemc+ctN3u93N+53d2sm1t6w60N8aGDrS3eb2v1X010M7YWAWgffg7aXM9eIHXNkgC8g28M3jzvYNCun9EmN+WFP7elhLuM/qSFdwJ4X7vsHCvL7n6MHgqfxi4t1n+Xy/qrtx/hnsGr7P53XTe7hkH+lJFyT1SAqOXkSrBlSqhJ1mCM1mCY7gEW7woHrwMnJorTu9Kz21qA9qbltB4L7whiwwXdvaNiuhN0KIrQcWeMkNUdA5R0RFX6I5T0RqlIn/mefHcHWBqtjidTs9tQrMSGlWgN766Y+uYBBbqSgjoYQwpOBhxAd0qtqiA6Nk8jv1cKJ76DZi+2oKERhVwJYjHPQY45ZVXBJxq+JpATIC1LHDtBY7MFoqnfwemrr6QJRreDo0q4IgRj3sUYOUur9xZJdBdJdDFC4ieyePkL0VMzb5g4cXTt4Cpa8Xp9Bw2yTeu93RoXiHgXCeczZaIgI/HBUxcyuPIlQIOXylg8kq+ePJXYPLS88Nu94zc2HU9rDRVAr2jgIM1HAuPvyI8JsAeU3rAwgvo4TNwBx7ANfgAPYMLknNgvtTPZ9Dtf2CpPmF1C7hGANbla6GvCC8LsD7o4p/DMJCBdu8CtuxdgHbPvLTl80Vo9zy0ywLuBgRsMeLpGQHs1QIvBVeHW3mV2CrMoWcw7F+EYf8/ktG3BN0XqsBMowIpwB6jYjm4LLImEBVgUyVsvFqFiLIdpuAK9AceS4aBZ9B5l1oTsKuBbIWs4cwqpjKcgjHMZgpzRMEUWpGMgVzzAo4UYGMCbIVRAX1JAZ4xATtGK2wfUeiXZwrXEFUkOHmWzJE8dP5MEwIR4nEMA+wxy8KNnICzNwgIyeHxcg5PntbyaDkHSnI49hOBNkBhYRXgiGSOFmDkso0LWCLE0z0MdEXZs15AV1TAzjEBH41T7Dqk8GEVH7DfjVNsT1GYwkoVjGEimfkWBaw8FVmDsT0eP09x/R7B5dsEP95RuZ2TufxHDtfv5jByjqAjoGwBEzDxBeiaFbCzCvBUZI9aMyfAd5xi4iLBoR8Ixs/Xcuh7gq8vEOybptCFlCoYygLBZgWGwPZSVPaTYvcEReAbCt8JCr8Mge+4woFjBIMnCD75ikIXZKunMISIZIo0KWCKEI91SII5QmQBfYji6CzF/COCP+dzuLuQw181ZLH4JIuJizloBimM3AYJmCJElM81pxyx/hTF1mSFPhUrzwJZ2VXY5yCRjE0LhIjHGpdg5oho4ZSyfns9h2wui8WlLB4vKzxayuJpJot9Rwne8ql7H1Iqpg8RycC1INAVl2DkiMj2n63q/TTFZ5MEn04Q7FaRP08SuBKKZCWc/UwkPVeAthkBA0d2WGIi62SRNRSDHS/NQIV3yrOfojPwcjhFZ5BIOq6AjpBga1jAyK3uNEdL0IdJUR8mIsPAEZFVxBiuxaD+XRdU6AwSsYMRICVdOA8dV6y/Am71ok5/xtqVAMwxUWIi5qhYg6kKo4qBV9DLlCQDL8HAl9Dhy7wt33vtm9H6o718cad3OaobWLml86/c0A2s3Kwlc7OD4augreWG1vfs1pYvl/z1hP7/YNYNIK+ymtZeTtH8K5Y6WnpNWxNpifXHv+PNNxfdcZW+AAAAAElFTkSuQmCC"},28453(e,n,t){t.d(n,{R:()=>o,x:()=>d});var s=t(96540);let r={},i=s.createContext(r);function o(e){let n=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.