@trautonen/cdk-dns-validated-certificate 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii
CHANGED
|
@@ -3465,7 +3465,7 @@
|
|
|
3465
3465
|
"stability": "stable"
|
|
3466
3466
|
},
|
|
3467
3467
|
"homepage": "https://github.com/trautonen/cdk-dns-validated-certificate.git",
|
|
3468
|
-
"jsiiVersion": "5.
|
|
3468
|
+
"jsiiVersion": "5.4.31 (build 9643ee9)",
|
|
3469
3469
|
"keywords": [
|
|
3470
3470
|
"aws",
|
|
3471
3471
|
"cdk",
|
|
@@ -3906,6 +3906,6 @@
|
|
|
3906
3906
|
"symbolId": "src/dns-validated-certificate:ValidationHostedZone"
|
|
3907
3907
|
}
|
|
3908
3908
|
},
|
|
3909
|
-
"version": "0.1.
|
|
3910
|
-
"fingerprint": "
|
|
3909
|
+
"version": "0.1.5",
|
|
3910
|
+
"fingerprint": "OuZzkgieEowJdbuR9Sqg44OYixJ0Ci/cFQ8IinrGhZs="
|
|
3911
3911
|
}
|
|
@@ -47,8 +47,7 @@ var objectToString = (value) => {
|
|
|
47
47
|
return JSON.stringify(value, void 0, 2);
|
|
48
48
|
};
|
|
49
49
|
var containsSame = (array1, array2) => {
|
|
50
|
-
if (array1.length !== array2.length)
|
|
51
|
-
return false;
|
|
50
|
+
if (array1.length !== array2.length) return false;
|
|
52
51
|
return array1.every((v1) => array2.includes(v1));
|
|
53
52
|
};
|
|
54
53
|
var orderBySignificance = (domains) => {
|
|
@@ -276,20 +275,13 @@ var addTags = async (acm, certificateArn, tags) => {
|
|
|
276
275
|
var shouldRequestNew = (oldProperties, newProperties) => {
|
|
277
276
|
const oldHostedZoneIds = Object.values(oldProperties.ValidationHostedZones ?? {}).map((zone) => zone.HostedZoneId);
|
|
278
277
|
const newHostedZoneIds = Object.values(newProperties.ValidationHostedZones ?? {}).map((zone) => zone.HostedZoneId);
|
|
279
|
-
if (!containsSame(oldHostedZoneIds, newHostedZoneIds))
|
|
280
|
-
|
|
281
|
-
if (oldProperties.
|
|
282
|
-
|
|
283
|
-
if (
|
|
284
|
-
|
|
285
|
-
if (oldProperties.
|
|
286
|
-
return true;
|
|
287
|
-
if (oldProperties.CleanupValidationRecords !== newProperties.CleanupValidationRecords)
|
|
288
|
-
return true;
|
|
289
|
-
if (oldProperties.TransparencyLoggingEnabled !== newProperties.TransparencyLoggingEnabled)
|
|
290
|
-
return true;
|
|
291
|
-
if (oldProperties.RemovalPolicy !== newProperties.RemovalPolicy)
|
|
292
|
-
return true;
|
|
278
|
+
if (!containsSame(oldHostedZoneIds, newHostedZoneIds)) return true;
|
|
279
|
+
if (oldProperties.DomainName !== newProperties.DomainName) return true;
|
|
280
|
+
if (!containsSame(oldProperties.AlternativeDomainNames ?? [], newProperties.AlternativeDomainNames ?? [])) return true;
|
|
281
|
+
if (oldProperties.CertificateRegion !== newProperties.CertificateRegion) return true;
|
|
282
|
+
if (oldProperties.CleanupValidationRecords !== newProperties.CleanupValidationRecords) return true;
|
|
283
|
+
if (oldProperties.TransparencyLoggingEnabled !== newProperties.TransparencyLoggingEnabled) return true;
|
|
284
|
+
if (oldProperties.RemovalPolicy !== newProperties.RemovalPolicy) return true;
|
|
293
285
|
return false;
|
|
294
286
|
};
|
|
295
287
|
var assumeRole = (roleArn, externalId) => {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/certificate-requestor.lambda.ts", "../../src/utils.ts"],
|
|
4
4
|
"sourcesContent": ["import * as crypto from 'crypto'\nimport {\n ACMClient,\n AddTagsToCertificateCommand,\n AddTagsToCertificateCommandInput,\n CertificateDetail,\n DeleteCertificateCommand,\n DeleteCertificateCommandInput,\n DescribeCertificateCommand,\n DescribeCertificateCommandInput,\n RequestCertificateCommand,\n RequestCertificateCommandInput,\n waitUntilCertificateValidated,\n} from '@aws-sdk/client-acm'\nimport {\n ChangeAction,\n ChangeResourceRecordSetsCommand,\n ChangeResourceRecordSetsCommandInput,\n InvalidChangeBatch,\n ResourceRecordSet,\n Route53Client,\n waitUntilResourceRecordSetsChanged,\n} from '@aws-sdk/client-route-53'\nimport { AssumeRoleCommand, AssumeRoleCommandInput, STSClient } from '@aws-sdk/client-sts'\nimport type { AwsCredentialIdentity, Provider } from '@aws-sdk/types'\nimport type { CloudFormationCustomResourceEvent } from 'aws-lambda'\nimport {\n cleanChangeId,\n cleanDomainName,\n containsSame,\n objectToString,\n orderBySignificance,\n stringToBoolean,\n tryFor,\n} from './utils'\n\nexport type ValidationHostedZoneProperties = {\n DomainName: string\n HostedZoneId: string\n ValidationRoleArn?: string\n ValidationExternalId?: string\n}\n\nexport type Properties = {\n DomainName: string\n AlternativeDomainNames?: string[]\n ValidationHostedZones: Record<string, ValidationHostedZoneProperties>\n CertificateRegion: string\n CleanupValidationRecords: string\n TransparencyLoggingEnabled: string\n Tags?: Record<string, string>\n RemovalPolicy: string\n}\n\ntype Route53Factory = (roleArn: string | undefined, externalId: string | undefined) => Route53Client\n\nconst parseProperties = (properties: Record<string, any>): Properties => {\n // maybe should actually parse and not just assume\n return properties as unknown as Properties\n}\n\nconst parseDomainValidationRecords = (certificate: CertificateDetail): ResourceRecordSet[] | null => {\n const options = certificate.DomainValidationOptions ?? []\n if (options.length > 0 && options.every((opt) => opt.ResourceRecord?.Name)) {\n const uniqueRecords = [...new Map(options.map((opt) => [opt.ResourceRecord?.Name!, opt.ResourceRecord!])).values()]\n return uniqueRecords.map((record) => {\n return {\n Name: record.Name,\n Type: record.Type,\n TTL: 30,\n ResourceRecords: [\n {\n Value: record.Value,\n },\n ],\n }\n })\n }\n return null\n}\n\nconst changeRecordSets = async (\n route53: Route53Client,\n action: ChangeAction,\n records: ResourceRecordSet[],\n hostedZoneId: string\n): Promise<void> => {\n const changeRecordSetsInput: ChangeResourceRecordSetsCommandInput = {\n HostedZoneId: hostedZoneId,\n ChangeBatch: {\n Changes: records.map((record) => ({\n Action: action,\n ResourceRecordSet: record,\n })),\n },\n }\n try {\n const { ChangeInfo } = await route53.send(new ChangeResourceRecordSetsCommand(changeRecordSetsInput))\n const changeId = ChangeInfo?.Id!\n const result = await waitUntilResourceRecordSetsChanged({ client: route53, maxWaitTime: 180 }, { Id: changeId })\n if (result.state !== 'SUCCESS') {\n throw new Error(\n `Validation records never changed for hosted zone ${hostedZoneId}: [${result.state}] ${result.reason ?? ''}`\n )\n }\n const operation = action === 'CREATE' || action === 'UPSERT' ? 'changed' : 'deleted'\n const change = cleanChangeId(changeId)\n console.log(`Validation records succesfully ${operation} for hosted zone ${hostedZoneId} with change id ${change}`)\n } catch (error: unknown) {\n if (action === 'DELETE' && error instanceof InvalidChangeBatch && error.message.includes('not found')) {\n // there's a deletion race condition where some other certificate has already deleted the records\n console.log(`All validation records have already been removed by some other certificate`)\n } else {\n throw error\n }\n }\n}\n\nconst getRecordsForZoneNames = (\n records: ResourceRecordSet[],\n zoneNames: string[],\n result?: Record<string, ResourceRecordSet[]>\n): Record<string, ResourceRecordSet[]> => {\n const [zoneName, ...restZoneNames] = zoneNames\n if (!zoneName) {\n return result ?? {}\n }\n const matchingRecords: ResourceRecordSet[] = []\n const unmatchingRecords: ResourceRecordSet[] = []\n for (const record of records) {\n const normalizedRecordName = cleanDomainName(record.Name!)\n if (normalizedRecordName.endsWith(zoneName)) {\n matchingRecords.push(record)\n } else {\n unmatchingRecords.push(record)\n }\n }\n return getRecordsForZoneNames(unmatchingRecords, restZoneNames, {\n ...(result ?? {}),\n [zoneName]: matchingRecords,\n })\n}\n\nconst requestCertificate = async (\n acm: ACMClient,\n route53: Route53Factory,\n requestId: string,\n properties: Properties\n): Promise<string> => {\n const { DomainName, AlternativeDomainNames, TransparencyLoggingEnabled } = properties\n\n console.log(`Requesting certificate for ${DomainName}`)\n\n const requestCertificateInput: RequestCertificateCommandInput = {\n DomainName,\n SubjectAlternativeNames: AlternativeDomainNames,\n IdempotencyToken: crypto.createHash('sha256').update(requestId).digest('hex').slice(0, 32),\n ValidationMethod: 'DNS',\n Options: {\n CertificateTransparencyLoggingPreference: TransparencyLoggingEnabled ? 'ENABLED' : 'DISABLED',\n },\n }\n const { CertificateArn } = await acm.send(new RequestCertificateCommand(requestCertificateInput))\n\n console.log(`Certificate ${CertificateArn} requested`)\n\n const validationMaxSeconds = 180\n const validationTimeoutError = `Domain validation options were not found in ${validationMaxSeconds} seconds`\n const validationRecords = await tryFor(validationMaxSeconds, validationTimeoutError, async () => {\n const describeCertificateInput: DescribeCertificateCommandInput = {\n CertificateArn,\n }\n const { Certificate } = await acm.send(new DescribeCertificateCommand(describeCertificateInput))\n return parseDomainValidationRecords(Certificate!)\n })\n\n const hostedZones = Object.values(properties.ValidationHostedZones)\n const hostedZoneIds = hostedZones.map((zone) => zone.HostedZoneId)\n\n console.log(\n `Upserting ${validationRecords.length} validation record(s) into hosted zone(s) ${hostedZoneIds.join(', ')}:`\n )\n validationRecords.forEach((record) =>\n console.log(`${record.Name} ${record.Type} ${record.ResourceRecords?.map((rr) => rr.Value).join(',')}`)\n )\n\n const recordsForZoneNames = getRecordsForZoneNames(\n validationRecords,\n orderBySignificance(Object.keys(properties.ValidationHostedZones))\n )\n for (const hostedZone of hostedZones) {\n const records = recordsForZoneNames[hostedZone.DomainName]\n if (records.length > 0) {\n await changeRecordSets(\n route53(hostedZone.ValidationRoleArn, hostedZone.ValidationExternalId),\n 'UPSERT',\n records,\n hostedZone.HostedZoneId\n )\n }\n }\n\n console.log(`Waiting for certificate ${CertificateArn} to validate`)\n const result = await waitUntilCertificateValidated({ client: acm, maxWaitTime: 300 }, { CertificateArn })\n if (result.state !== 'SUCCESS') {\n throw new Error(`Certificate failed ${CertificateArn} to validate: [${result.state}] ${result.reason ?? ''}`)\n }\n console.log(`Certificate ${CertificateArn} successfully validated`)\n return CertificateArn!\n}\n\nconst deleteCertificate = async (\n acm: ACMClient,\n route53: Route53Factory,\n certificateArn: string,\n properties: Properties\n): Promise<void> => {\n console.log(`Waiting for certificate ${certificateArn} usage to drain before deletion`)\n\n const waitUsageMaxSeconds = 600\n const waitUsageTimeoutError = `Certificate was still in use after ${waitUsageMaxSeconds} seconds`\n const certificate = await tryFor(waitUsageMaxSeconds, waitUsageTimeoutError, async () => {\n const describeCertificateInput: DescribeCertificateCommandInput = {\n CertificateArn: certificateArn,\n }\n const { Certificate } = await acm.send(new DescribeCertificateCommand(describeCertificateInput))\n const inUseBy = Certificate?.InUseBy ?? []\n if (inUseBy.length > 0) {\n return null\n }\n return Certificate!\n })\n console.log('Certificate is unused and will be deleted')\n\n const validationRecords = parseDomainValidationRecords(certificate)\n if (validationRecords && stringToBoolean(properties.CleanupValidationRecords)) {\n const hostedZones = Object.values(properties.ValidationHostedZones)\n const hostedZoneIds = hostedZones.map((zone) => zone.HostedZoneId)\n\n console.log(\n `Deleting ${validationRecords.length} validation record(s) from hosted zone(s) ${hostedZoneIds.join(', ')}`\n )\n\n const recordsForZoneNames = getRecordsForZoneNames(\n validationRecords,\n orderBySignificance(Object.keys(properties.ValidationHostedZones))\n )\n for (const hostedZone of hostedZones) {\n const records = recordsForZoneNames[hostedZone.DomainName]\n if (records.length > 0) {\n await changeRecordSets(\n route53(hostedZone.ValidationRoleArn, hostedZone.ValidationExternalId),\n 'DELETE',\n records,\n hostedZone.HostedZoneId\n )\n }\n }\n }\n\n console.log(`Deleting certificate ${certificateArn} from ACM`)\n const deleteCertificateInput: DeleteCertificateCommandInput = {\n CertificateArn: certificateArn,\n }\n await acm.send(new DeleteCertificateCommand(deleteCertificateInput))\n console.log(`Certificate ${certificateArn} successfully deleted`)\n}\n\nconst addTags = async (acm: ACMClient, certificateArn: string, tags: Record<string, string>) => {\n const tagList = Array.from(Object.entries(tags).map(([Key, Value]) => ({ Key, Value })))\n const addTagsInput: AddTagsToCertificateCommandInput = {\n CertificateArn: certificateArn,\n Tags: tagList,\n }\n\n console.log(`Adding ${tagList.length} tags to certificate ${certificateArn}`)\n await acm.send(new AddTagsToCertificateCommand(addTagsInput))\n console.log(`All tags successfully added to certificate ${certificateArn}`)\n}\n\nconst shouldRequestNew = (oldProperties: Properties, newProperties: Properties): boolean => {\n const oldHostedZoneIds = Object.values(oldProperties.ValidationHostedZones ?? {}).map((zone) => zone.HostedZoneId)\n const newHostedZoneIds = Object.values(newProperties.ValidationHostedZones ?? {}).map((zone) => zone.HostedZoneId)\n if (!containsSame(oldHostedZoneIds, newHostedZoneIds)) return true\n if (oldProperties.DomainName !== newProperties.DomainName) return true\n if (!containsSame(oldProperties.AlternativeDomainNames ?? [], newProperties.AlternativeDomainNames ?? [])) return true\n if (oldProperties.CertificateRegion !== newProperties.CertificateRegion) return true\n if (oldProperties.CleanupValidationRecords !== newProperties.CleanupValidationRecords) return true\n if (oldProperties.TransparencyLoggingEnabled !== newProperties.TransparencyLoggingEnabled) return true\n if (oldProperties.RemovalPolicy !== newProperties.RemovalPolicy) return true\n return false\n}\n\nconst assumeRole = (\n roleArn: string | undefined,\n externalId: string | undefined\n): Provider<AwsCredentialIdentity> | undefined => {\n if (!roleArn) {\n return undefined\n }\n return async () => {\n const sts = new STSClient({ retryMode: 'adaptive' })\n const assumeRoleInput: AssumeRoleCommandInput = {\n RoleArn: roleArn,\n RoleSessionName: 'CertificateRequestor',\n ExternalId: externalId,\n }\n const { Credentials } = await sts.send(new AssumeRoleCommand(assumeRoleInput))\n return {\n accessKeyId: Credentials?.AccessKeyId!,\n secretAccessKey: Credentials?.SecretAccessKey!,\n sessionToken: Credentials?.SessionToken!,\n expiration: Credentials?.Expiration,\n }\n }\n}\n\nexport const handler = async (event: CloudFormationCustomResourceEvent) => {\n const properties = parseProperties(event.ResourceProperties)\n\n const acm = new ACMClient({ region: properties.CertificateRegion, retryMode: 'adaptive' })\n const route53 = (roleArn: string | undefined, externalId: string | undefined): Route53Client => {\n return new Route53Client({\n retryMode: 'adaptive',\n credentials: assumeRole(roleArn, externalId),\n })\n }\n\n switch (event.RequestType) {\n case 'Create': {\n console.log(`Requesting new certificate:\\n${objectToString(properties)}`)\n const certificateArn = await requestCertificate(acm, route53, event.RequestId, properties)\n if (properties.Tags && Object.entries(properties.Tags).length > 0) {\n await addTags(acm, certificateArn, properties.Tags)\n }\n return {\n PhysicalResourceId: certificateArn,\n Data: {\n Arn: certificateArn,\n },\n }\n }\n case 'Update': {\n let certificateArn = event.PhysicalResourceId\n if (shouldRequestNew(parseProperties(event.OldResourceProperties), properties)) {\n console.log(`Requesting new certificate due to change of properties:\\n${objectToString(properties)}`)\n certificateArn = await requestCertificate(acm, route53, event.RequestId, properties)\n }\n if (properties.Tags && Object.entries(properties.Tags).length > 0) {\n await addTags(acm, certificateArn, properties.Tags)\n }\n return {\n PhysicalResourceId: certificateArn,\n Data: {\n Arn: certificateArn,\n },\n }\n }\n case 'Delete': {\n const certificateArn = event.PhysicalResourceId\n if (properties.RemovalPolicy === 'destroy') {\n console.log(`Deleting old certificate as per removal policy:\\n${objectToString(properties)}`)\n await deleteCertificate(acm, route53, certificateArn, properties)\n }\n return {\n PhysicalResourceId: certificateArn,\n Data: {\n Arn: certificateArn,\n },\n }\n }\n }\n throw new Error(`Invalid request type`)\n}\n", "export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n\nexport const booleanToString = (value: boolean): string => {\n return value ? 'true' : 'false'\n}\n\nexport const stringToBoolean = (value: string): boolean => {\n return value === 'true' ? true : false\n}\n\nexport const objectToString = (value: object): string => {\n return JSON.stringify(value, undefined, 2)\n}\n\nexport const containsSame = <T>(array1: T[], array2: T[]): boolean => {\n if (array1.length !== array2.length) return false\n return array1.every((v1) => array2.includes(v1))\n}\n\nexport const orderBySignificance = (domains: string[]): string[] => {\n const copy = [...domains]\n copy.sort((a, b) => {\n const ac = cleanDomainName(a).split('.').length\n const bc = cleanDomainName(b).split('.').length\n if (ac > bc) {\n return -1\n }\n if (ac < bc) {\n return 1\n }\n return 0\n })\n return copy\n}\n\nexport const cleanDomainName = (domainName: string): string => {\n if (domainName.endsWith('.')) {\n return domainName.slice(0, -1)\n }\n return domainName\n}\n\nexport const cleanHostedZoneId = (hostedZoneId: string): string => {\n return hostedZoneId.replace(/^\\/hostedzone\\//, '')\n}\n\nexport const cleanChangeId = (changeId: string): string => {\n return changeId.replace('/change/', '')\n}\n\nexport const matchNamesToZones = <T>(\n zoneNames: string[],\n records: T[],\n name: (record: T) => string\n): Record<string, T[]> => {\n const orderedZoneNames = orderBySignificance(zoneNames)\n const matcher = (zones: string[], items: T[], result: Record<string, T[]>): Record<string, T[]> => {\n const [firstZone, ...restZones] = zones\n if (!firstZone) {\n return result\n }\n const matchingItems: T[] = []\n const unmatchingItems: T[] = []\n for (const item of items) {\n const normalizedRecordName = cleanDomainName(name(item))\n if (normalizedRecordName.endsWith(cleanDomainName(firstZone))) {\n matchingItems.push(item)\n } else {\n unmatchingItems.push(item)\n }\n }\n return matcher(restZones, unmatchingItems, {\n ...result,\n [firstZone]: matchingItems,\n })\n }\n return matcher(orderedZoneNames, records, {})\n}\n\nexport const tryFor = async <T>(maxSeconds: number, timeoutError: string, fn: () => Promise<T | null>): Promise<T> => {\n const startTime = Date.now()\n // eslint-disable-next-line no-constant-condition\n for (let i = 0; true; i++) {\n if (Date.now() > startTime + maxSeconds * 1000) {\n throw new Error(timeoutError)\n }\n const result = await fn()\n if (result !== null) {\n return result\n }\n const base = Math.pow(2, i)\n await sleep(Math.random() * base * 50 + base * 150)\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAwB;AACxB,wBAYO;AACP,6BAQO;AACP,wBAAqE;;;ACvB9D,IAAM,QAAQ,CAAC,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAM9E,IAAM,kBAAkB,CAAC,UAA2B;AACzD,SAAO,UAAU,SAAS,OAAO;AACnC;AAEO,IAAM,iBAAiB,CAAC,UAA0B;AACvD,SAAO,KAAK,UAAU,OAAO,QAAW,CAAC;AAC3C;AAEO,IAAM,eAAe,CAAI,QAAa,WAAyB;AACpE,MAAI,OAAO,WAAW,OAAO
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -264,4 +264,4 @@ const handler = async (event) => {
|
|
|
264
264
|
throw new Error(`Invalid request type`);
|
|
265
265
|
};
|
|
266
266
|
exports.handler = handler;
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFnQztBQUNoQyxvREFZNEI7QUFDNUIsOERBUWlDO0FBQ2pDLG9EQUEwRjtBQUcxRixtQ0FRZ0I7QUFzQmhCLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBK0IsRUFBYyxFQUFFO0lBQ3RFLGtEQUFrRDtJQUNsRCxPQUFPLFVBQW1DLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFdBQThCLEVBQThCLEVBQUU7SUFDbEcsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQTtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDMUUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ25ILE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xDLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLEdBQUcsRUFBRSxFQUFFO2dCQUNQLGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxLQUFLLEVBQUUsTUFBTSxDQUFD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QkFDckcsY0FBYyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO2FBQ3JGO1lBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pFLE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO2FBQ3BEO1lBQ0QsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxjQUFjO2dCQUNsQyxJQUFJLEVBQUU7b0JBQ0osR0FBRyxFQUFFLGNBQWM7aUJBQ3BCO2FBQ0YsQ0FBQTtTQUNGO1FBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUNiLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQTtZQUMvQyxJQUFJLFVBQVUsQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO2dCQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9EQUFvRCxJQUFBLHNCQUFjLEVBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUM3RixNQUFNLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFBO2FBQ2xFO1lBQ0QsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxjQUFjO2dCQUNsQyxJQUFJLEVBQUU7b0JBQ0osR0FBRyxFQUFFLGNBQWM7aUJBQ3BCO2FBQ0YsQ0FBQTtTQUNGO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7QUFDekMsQ0FBQyxDQUFBO0FBeERZLFFBQUEsT0FBTyxXQXdEbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJ1xuaW1wb3J0IHtcbiAgQUNNQ2xpZW50LFxuICBBZGRUYWdzVG9DZXJ0aWZpY2F0ZUNvbW1hbmQsXG4gIEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZElucHV0LFxuICBDZXJ0aWZpY2F0ZURldGFpbCxcbiAgRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kLFxuICBEZWxldGVDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmQsXG4gIERlc2NyaWJlQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIFJlcXVlc3RDZXJ0aWZpY2F0ZUNvbW1hbmQsXG4gIFJlcXVlc3RDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgd2FpdFVudGlsQ2VydGlmaWNhdGVWYWxpZGF0ZWQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hY20nXG5pbXBvcnQge1xuICBDaGFuZ2VBY3Rpb24sXG4gIENoYW5nZVJlc291cmNlUmVjb3JkU2V0c0NvbW1hbmQsXG4gIENoYW5nZVJlc291cmNlUmVjb3JkU2V0c0NvbW1hbmRJbnB1dCxcbiAgSW52YWxpZENoYW5nZUJhdGNoLFxuICBSZXNvdXJjZVJlY29yZFNldCxcbiAgUm91dGU1M0NsaWVudCxcbiAgd2FpdFVudGlsUmVzb3VyY2VSZWNvcmRTZXRzQ2hhbmdlZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJvdXRlLTUzJ1xuaW1wb3J0IHsgQXNzdW1lUm9sZUNvbW1hbmQsIEFzc3VtZVJvbGVDb21tYW5kSW5wdXQsIFNUU0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnXG5pbXBvcnQgdHlwZSB7IEF3c0NyZWRlbnRpYWxJZGVudGl0eSwgUHJvdmlkZXIgfSBmcm9tICdAYXdzLXNkay90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50IH0gZnJvbSAnYXdzLWxhbWJkYSdcbmltcG9ydCB7XG4gIGNsZWFuQ2hhbmdlSWQsXG4gIGNsZWFuRG9tYWluTmFtZSxcbiAgY29udGFpbnNTYW1lLFxuICBvYmplY3RUb1N0cmluZyxcbiAgb3JkZXJCeVNpZ25pZmljYW5jZSxcbiAgc3RyaW5nVG9Cb29sZWFuLFxuICB0cnlGb3IsXG59IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25Ib3N0ZWRab25lUHJvcGVydGllcyA9IHtcbiAgRG9tYWluTmFtZTogc3RyaW5nXG4gIEhvc3RlZFpvbmVJZDogc3RyaW5nXG4gIFZhbGlkYXRpb25Sb2xlQXJuPzogc3RyaW5nXG4gIFZhbGlkYXRpb25FeHRlcm5hbElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnRpZXMgPSB7XG4gIERvbWFpbk5hbWU6IHN0cmluZ1xuICBBbHRlcm5hdGl2ZURvbWFpbk5hbWVzPzogc3RyaW5nW11cbiAgVmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBSZWNvcmQ8c3RyaW5nLCBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXM+XG4gIENlcnRpZmljYXRlUmVnaW9uOiBzdHJpbmdcbiAgQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzOiBzdHJpbmdcbiAgVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQ6IHN0cmluZ1xuICBUYWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBSZW1vdmFsUG9saWN5OiBzdHJpbmdcbn1cblxudHlwZSBSb3V0ZTUzRmFjdG9yeSA9IChyb2xlQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIGV4dGVybmFsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gUm91dGU1M0NsaWVudFxuXG5jb25zdCBwYXJzZVByb3BlcnRpZXMgPSAocHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb3BlcnRpZXMgPT4ge1xuICAvLyBtYXliZSBzaG91bGQgYWN0dWFsbHkgcGFyc2UgYW5kIG5vdCBqdXN0IGFzc3VtZVxuICByZXR1cm4gcHJvcGVydGllcyBhcyB1bmtub3duIGFzIFByb3BlcnRpZXNcbn1cblxuY29uc3QgcGFyc2VEb21haW5WYWxpZGF0aW9uUmVjb3JkcyA9IChjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGVEZXRhaWwpOiBSZXNvdXJjZVJlY29yZFNldFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBjZXJ0aWZpY2F0ZS5Eb21haW5WYWxpZGF0aW9uT3B0aW9ucyA/PyBbXVxuICBpZiAob3B0aW9ucy5sZW5ndGggPiAwICYmIG9wdGlvbnMuZXZlcnkoKG9wdCkgPT4gb3B0LlJlc291cmNlUmVjb3JkPy5OYW1lKSkge1xuICAgIGNvbnN0IHVuaXF1ZVJlY29yZHMgPSBbLi4ubmV3IE1hcChvcHRpb25zLm1hcCgob3B0KSA9PiBbb3B0LlJlc291cmNlUmVjb3JkPy5OYW1lISwgb3B0LlJlc291cmNlUmVjb3JkIV0pKS52YWx1ZXMoKV1cbiAgICByZXR1cm4gdW5pcXVlUmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgTmFtZTogcmVjb3JkLk5hbWUsXG4gICAgICAgIFR5cGU6IHJlY29yZC5UeXBlLFxuICAgICAgICBUVEw6IDMwLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBWYWx1ZTogcmVjb3JkLlZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSlcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBjaGFuZ2VSZWNvcmRTZXRzID0gYXN5bmMgKFxuICByb3V0ZTUzOiBSb3V0ZTUzQ2xpZW50LFxuICBhY3Rpb246IENoYW5nZUFjdGlvbixcbiAgcmVjb3JkczogUmVzb3VyY2VSZWNvcmRTZXRbXSxcbiAgaG9zdGVkWm9uZUlkOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBjaGFuZ2VSZWNvcmRTZXRzSW5wdXQ6IENoYW5nZVJlc291cmNlUmVjb3JkU2V0c0NvbW1hbmRJbnB1dCA9IHtcbiAgICBIb3N0ZWRab25lSWQ6IGhvc3RlZFpvbmVJZCxcbiAgICBDaGFuZ2VCYXRjaDoge1xuICAgICAgQ2hhbmdlczogcmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gKHtcbiAgICAgICAgQWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIFJlc291cmNlUmVjb3JkU2V0OiByZWNvcmQsXG4gICAgICB9KSksXG4gICAgfSxcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgQ2hhbmdlSW5mbyB9ID0gYXdhaXQgcm91dGU1My5zZW5kKG5ldyBDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNDb21tYW5kKGNoYW5nZVJlY29yZFNldHNJbnB1dCkpXG4gICAgY29uc3QgY2hhbmdlSWQgPSBDaGFuZ2VJbmZvPy5JZCFcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWl0VW50aWxSZXNvdXJjZVJlY29yZFNldHNDaGFuZ2VkKHsgY2xpZW50OiByb3V0ZTUzLCBtYXhXYWl0VGltZTogMTgwIH0sIHsgSWQ6IGNoYW5nZUlkIH0pXG4gICAgaWYgKHJlc3VsdC5zdGF0ZSAhPT0gJ1NVQ0NFU1MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBWYWxpZGF0aW9uIHJlY29yZHMgbmV2ZXIgY2hhbmdlZCBmb3IgaG9zdGVkIHpvbmUgJHtob3N0ZWRab25lSWR9OiBbJHtyZXN1bHQuc3RhdGV9XSAke3Jlc3VsdC5yZWFzb24gPz8gJyd9YFxuICAgICAgKVxuICAgIH1cbiAgICBjb25zdCBvcGVyYXRpb24gPSBhY3Rpb24gPT09ICdDUkVBVEUnIHx8IGFjdGlvbiA9PT0gJ1VQU0VSVCcgPyAnY2hhbmdlZCcgOiAnZGVsZXRlZCdcbiAgICBjb25zdCBjaGFuZ2UgPSBjbGVhbkNoYW5nZUlkKGNoYW5nZUlkKVxuICAgIGNvbnNvbGUubG9nKGBWYWxpZGF0aW9uIHJlY29yZHMgc3VjY2VzZnVsbHkgJHtvcGVyYXRpb259IGZvciBob3N0ZWQgem9uZSAke2hvc3RlZFpvbmVJZH0gd2l0aCBjaGFuZ2UgaWQgJHtjaGFuZ2V9YClcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBpZiAoYWN0aW9uID09PSAnREVMRVRFJyAmJiBlcnJvciBpbnN0YW5jZW9mIEludmFsaWRDaGFuZ2VCYXRjaCAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdub3QgZm91bmQnKSkge1xuICAgICAgLy8gdGhlcmUncyBhIGRlbGV0aW9uIHJhY2UgY29uZGl0aW9uIHdoZXJlIHNvbWUgb3RoZXIgY2VydGlmaWNhdGUgaGFzIGFscmVhZHkgZGVsZXRlZCB0aGUgcmVjb3Jkc1xuICAgICAgY29uc29sZS5sb2coYEFsbCB2YWxpZGF0aW9uIHJlY29yZHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBieSBzb21lIG90aGVyIGNlcnRpZmljYXRlYClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgZ2V0UmVjb3Jkc0ZvclpvbmVOYW1lcyA9IChcbiAgcmVjb3JkczogUmVzb3VyY2VSZWNvcmRTZXRbXSxcbiAgem9uZU5hbWVzOiBzdHJpbmdbXSxcbiAgcmVzdWx0PzogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VSZWNvcmRTZXRbXT5cbik6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlUmVjb3JkU2V0W10+ID0+IHtcbiAgY29uc3QgW3pvbmVOYW1lLCAuLi5yZXN0Wm9uZU5hbWVzXSA9IHpvbmVOYW1lc1xuICBpZiAoIXpvbmVOYW1lKSB7XG4gICAgcmV0dXJuIHJlc3VsdCA/PyB7fVxuICB9XG4gIGNvbnN0IG1hdGNoaW5nUmVjb3JkczogUmVzb3VyY2VSZWNvcmRTZXRbXSA9IFtdXG4gIGNvbnN0IHVubWF0Y2hpbmdSZWNvcmRzOiBSZXNvdXJjZVJlY29yZFNldFtdID0gW11cbiAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRSZWNvcmROYW1lID0gY2xlYW5Eb21haW5OYW1lKHJlY29yZC5OYW1lISlcbiAgICBpZiAobm9ybWFsaXplZFJlY29yZE5hbWUuZW5kc1dpdGgoem9uZU5hbWUpKSB7XG4gICAgICBtYXRjaGluZ1JlY29yZHMucHVzaChyZWNvcmQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHVubWF0Y2hpbmdSZWNvcmRzLnB1c2gocmVjb3JkKVxuICAgIH1cbiAgfVxuICByZXR1cm4gZ2V0UmVjb3Jkc0ZvclpvbmVOYW1lcyh1bm1hdGNoaW5nUmVjb3JkcywgcmVzdFpvbmVOYW1lcywge1xuICAgIC4uLihyZXN1bHQgPz8ge30pLFxuICAgIFt6b25lTmFtZV06IG1hdGNoaW5nUmVjb3JkcyxcbiAgfSlcbn1cblxuY29uc3QgcmVxdWVzdENlcnRpZmljYXRlID0gYXN5bmMgKFxuICBhY206IEFDTUNsaWVudCxcbiAgcm91dGU1MzogUm91dGU1M0ZhY3RvcnksXG4gIHJlcXVlc3RJZDogc3RyaW5nLFxuICBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IERvbWFpbk5hbWUsIEFsdGVybmF0aXZlRG9tYWluTmFtZXMsIFRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkIH0gPSBwcm9wZXJ0aWVzXG5cbiAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgY2VydGlmaWNhdGUgZm9yICR7RG9tYWluTmFtZX1gKVxuXG4gIGNvbnN0IHJlcXVlc3RDZXJ0aWZpY2F0ZUlucHV0OiBSZXF1ZXN0Q2VydGlmaWNhdGVDb21tYW5kSW5wdXQgPSB7XG4gICAgRG9tYWluTmFtZSxcbiAgICBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczogQWx0ZXJuYXRpdmVEb21haW5OYW1lcyxcbiAgICBJZGVtcG90ZW5jeVRva2VuOiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHJlcXVlc3RJZCkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAzMiksXG4gICAgVmFsaWRhdGlvbk1ldGhvZDogJ0ROUycsXG4gICAgT3B0aW9uczoge1xuICAgICAgQ2VydGlmaWNhdGVUcmFuc3BhcmVuY3lMb2dnaW5nUHJlZmVyZW5jZTogVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgPyAnRU5BQkxFRCcgOiAnRElTQUJMRUQnLFxuICAgIH0sXG4gIH1cbiAgY29uc3QgeyBDZXJ0aWZpY2F0ZUFybiB9ID0gYXdhaXQgYWNtLnNlbmQobmV3IFJlcXVlc3RDZXJ0aWZpY2F0ZUNvbW1hbmQocmVxdWVzdENlcnRpZmljYXRlSW5wdXQpKVxuXG4gIGNvbnNvbGUubG9nKGBDZXJ0aWZpY2F0ZSAke0NlcnRpZmljYXRlQXJufSByZXF1ZXN0ZWRgKVxuXG4gIGNvbnN0IHZhbGlkYXRpb25NYXhTZWNvbmRzID0gMTgwXG4gIGNvbnN0IHZhbGlkYXRpb25UaW1lb3V0RXJyb3IgPSBgRG9tYWluIHZhbGlkYXRpb24gb3B0aW9ucyB3ZXJlIG5vdCBmb3VuZCBpbiAke3ZhbGlkYXRpb25NYXhTZWNvbmRzfSBzZWNvbmRzYFxuICBjb25zdCB2YWxpZGF0aW9uUmVjb3JkcyA9IGF3YWl0IHRyeUZvcih2YWxpZGF0aW9uTWF4U2Vjb25kcywgdmFsaWRhdGlvblRpbWVvdXRFcnJvciwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaWJlQ2VydGlmaWNhdGVJbnB1dDogRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCA9IHtcbiAgICAgIENlcnRpZmljYXRlQXJuLFxuICAgIH1cbiAgICBjb25zdCB7IENlcnRpZmljYXRlIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0KSlcbiAgICByZXR1cm4gcGFyc2VEb21haW5WYWxpZGF0aW9uUmVjb3JkcyhDZXJ0aWZpY2F0ZSEpXG4gIH0pXG5cbiAgY29uc3QgaG9zdGVkWm9uZXMgPSBPYmplY3QudmFsdWVzKHByb3BlcnRpZXMuVmFsaWRhdGlvbkhvc3RlZFpvbmVzKVxuICBjb25zdCBob3N0ZWRab25lSWRzID0gaG9zdGVkWm9uZXMubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcblxuICBjb25zb2xlLmxvZyhcbiAgICBgVXBzZXJ0aW5nICR7dmFsaWRhdGlvblJlY29yZHMubGVuZ3RofSB2YWxpZGF0aW9uIHJlY29yZChzKSBpbnRvIGhvc3RlZCB6b25lKHMpICR7aG9zdGVkWm9uZUlkcy5qb2luKCcsICcpfTpgXG4gIClcbiAgdmFsaWRhdGlvblJlY29yZHMuZm9yRWFjaCgocmVjb3JkKSA9PlxuICAgIGNvbnNvbGUubG9nKGAke3JlY29yZC5OYW1lfSAke3JlY29yZC5UeXBlfSAke3JlY29yZC5SZXNvdXJjZVJlY29yZHM/Lm1hcCgocnIpID0+IHJyLlZhbHVlKS5qb2luKCcsJyl9YClcbiAgKVxuXG4gIGNvbnN0IHJlY29yZHNGb3Jab25lTmFtZXMgPSBnZXRSZWNvcmRzRm9yWm9uZU5hbWVzKFxuICAgIHZhbGlkYXRpb25SZWNvcmRzLFxuICAgIG9yZGVyQnlTaWduaWZpY2FuY2UoT2JqZWN0LmtleXMocHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMpKVxuICApXG4gIGZvciAoY29uc3QgaG9zdGVkWm9uZSBvZiBob3N0ZWRab25lcykge1xuICAgIGNvbnN0IHJlY29yZHMgPSByZWNvcmRzRm9yWm9uZU5hbWVzW2hvc3RlZFpvbmUuRG9tYWluTmFtZV1cbiAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBjaGFuZ2VSZWNvcmRTZXRzKFxuICAgICAgICByb3V0ZTUzKGhvc3RlZFpvbmUuVmFsaWRhdGlvblJvbGVBcm4sIGhvc3RlZFpvbmUuVmFsaWRhdGlvbkV4dGVybmFsSWQpLFxuICAgICAgICAnVVBTRVJUJyxcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgaG9zdGVkWm9uZS5Ib3N0ZWRab25lSWRcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgY2VydGlmaWNhdGUgJHtDZXJ0aWZpY2F0ZUFybn0gdG8gdmFsaWRhdGVgKVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCB3YWl0VW50aWxDZXJ0aWZpY2F0ZVZhbGlkYXRlZCh7IGNsaWVudDogYWNtLCBtYXhXYWl0VGltZTogMzAwIH0sIHsgQ2VydGlmaWNhdGVBcm4gfSlcbiAgaWYgKHJlc3VsdC5zdGF0ZSAhPT0gJ1NVQ0NFU1MnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDZXJ0aWZpY2F0ZSBmYWlsZWQgJHtDZXJ0aWZpY2F0ZUFybn0gdG8gdmFsaWRhdGU6IFske3Jlc3VsdC5zdGF0ZX1dICR7cmVzdWx0LnJlYXNvbiA/PyAnJ31gKVxuICB9XG4gIGNvbnNvbGUubG9nKGBDZXJ0aWZpY2F0ZSAke0NlcnRpZmljYXRlQXJufSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkYClcbiAgcmV0dXJuIENlcnRpZmljYXRlQXJuIVxufVxuXG5jb25zdCBkZWxldGVDZXJ0aWZpY2F0ZSA9IGFzeW5jIChcbiAgYWNtOiBBQ01DbGllbnQsXG4gIHJvdXRlNTM6IFJvdXRlNTNGYWN0b3J5LFxuICBjZXJ0aWZpY2F0ZUFybjogc3RyaW5nLFxuICBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc29sZS5sb2coYFdhaXRpbmcgZm9yIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59IHVzYWdlIHRvIGRyYWluIGJlZm9yZSBkZWxldGlvbmApXG5cbiAgY29uc3Qgd2FpdFVzYWdlTWF4U2Vjb25kcyA9IDYwMFxuICBjb25zdCB3YWl0VXNhZ2VUaW1lb3V0RXJyb3IgPSBgQ2VydGlmaWNhdGUgd2FzIHN0aWxsIGluIHVzZSBhZnRlciAke3dhaXRVc2FnZU1heFNlY29uZHN9IHNlY29uZHNgXG4gIGNvbnN0IGNlcnRpZmljYXRlID0gYXdhaXQgdHJ5Rm9yKHdhaXRVc2FnZU1heFNlY29uZHMsIHdhaXRVc2FnZVRpbWVvdXRFcnJvciwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaWJlQ2VydGlmaWNhdGVJbnB1dDogRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCA9IHtcbiAgICAgIENlcnRpZmljYXRlQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICB9XG4gICAgY29uc3QgeyBDZXJ0aWZpY2F0ZSB9ID0gYXdhaXQgYWNtLnNlbmQobmV3IERlc2NyaWJlQ2VydGlmaWNhdGVDb21tYW5kKGRlc2NyaWJlQ2VydGlmaWNhdGVJbnB1dCkpXG4gICAgY29uc3QgaW5Vc2VCeSA9IENlcnRpZmljYXRlPy5JblVzZUJ5ID8/IFtdXG4gICAgaWYgKGluVXNlQnkubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIENlcnRpZmljYXRlIVxuICB9KVxuICBjb25zb2xlLmxvZygnQ2VydGlmaWNhdGUgaXMgdW51c2VkIGFuZCB3aWxsIGJlIGRlbGV0ZWQnKVxuXG4gIGNvbnN0IHZhbGlkYXRpb25SZWNvcmRzID0gcGFyc2VEb21haW5WYWxpZGF0aW9uUmVjb3JkcyhjZXJ0aWZpY2F0ZSlcbiAgaWYgKHZhbGlkYXRpb25SZWNvcmRzICYmIHN0cmluZ1RvQm9vbGVhbihwcm9wZXJ0aWVzLkNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcykpIHtcbiAgICBjb25zdCBob3N0ZWRab25lcyA9IE9iamVjdC52YWx1ZXMocHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMpXG4gICAgY29uc3QgaG9zdGVkWm9uZUlkcyA9IGhvc3RlZFpvbmVzLm1hcCgoem9uZSkgPT4gem9uZS5Ib3N0ZWRab25lSWQpXG5cbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBEZWxldGluZyAke3ZhbGlkYXRpb25SZWNvcmRzLmxlbmd0aH0gdmFsaWRhdGlvbiByZWNvcmQocykgZnJvbSBob3N0ZWQgem9uZShzKSAke2hvc3RlZFpvbmVJZHMuam9pbignLCAnKX1gXG4gICAgKVxuXG4gICAgY29uc3QgcmVjb3Jkc0ZvclpvbmVOYW1lcyA9IGdldFJlY29yZHNGb3Jab25lTmFtZXMoXG4gICAgICB2YWxpZGF0aW9uUmVjb3JkcyxcbiAgICAgIG9yZGVyQnlTaWduaWZpY2FuY2UoT2JqZWN0LmtleXMocHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMpKVxuICAgIClcbiAgICBmb3IgKGNvbnN0IGhvc3RlZFpvbmUgb2YgaG9zdGVkWm9uZXMpIHtcbiAgICAgIGNvbnN0IHJlY29yZHMgPSByZWNvcmRzRm9yWm9uZU5hbWVzW2hvc3RlZFpvbmUuRG9tYWluTmFtZV1cbiAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgY2hhbmdlUmVjb3JkU2V0cyhcbiAgICAgICAgICByb3V0ZTUzKGhvc3RlZFpvbmUuVmFsaWRhdGlvblJvbGVBcm4sIGhvc3RlZFpvbmUuVmFsaWRhdGlvbkV4dGVybmFsSWQpLFxuICAgICAgICAgICdERUxFVEUnLFxuICAgICAgICAgIHJlY29yZHMsXG4gICAgICAgICAgaG9zdGVkWm9uZS5Ib3N0ZWRab25lSWRcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBEZWxldGluZyBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlQXJufSBmcm9tIEFDTWApXG4gIGNvbnN0IGRlbGV0ZUNlcnRpZmljYXRlSW5wdXQ6IERlbGV0ZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgIENlcnRpZmljYXRlQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgfVxuICBhd2FpdCBhY20uc2VuZChuZXcgRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kKGRlbGV0ZUNlcnRpZmljYXRlSW5wdXQpKVxuICBjb25zb2xlLmxvZyhgQ2VydGlmaWNhdGUgJHtjZXJ0aWZpY2F0ZUFybn0gc3VjY2Vzc2Z1bGx5IGRlbGV0ZWRgKVxufVxuXG5jb25zdCBhZGRUYWdzID0gYXN5bmMgKGFjbTogQUNNQ2xpZW50LCBjZXJ0aWZpY2F0ZUFybjogc3RyaW5nLCB0YWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gIGNvbnN0IHRhZ0xpc3QgPSBBcnJheS5mcm9tKE9iamVjdC5lbnRyaWVzKHRhZ3MpLm1hcCgoW0tleSwgVmFsdWVdKSA9PiAoeyBLZXksIFZhbHVlIH0pKSlcbiAgY29uc3QgYWRkVGFnc0lucHV0OiBBZGRUYWdzVG9DZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCA9IHtcbiAgICBDZXJ0aWZpY2F0ZUFybjogY2VydGlmaWNhdGVBcm4sXG4gICAgVGFnczogdGFnTGlzdCxcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBBZGRpbmcgJHt0YWdMaXN0Lmxlbmd0aH0gdGFncyB0byBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlQXJufWApXG4gIGF3YWl0IGFjbS5zZW5kKG5ldyBBZGRUYWdzVG9DZXJ0aWZpY2F0ZUNvbW1hbmQoYWRkVGFnc0lucHV0KSlcbiAgY29uc29sZS5sb2coYEFsbCB0YWdzIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlQXJufWApXG59XG5cbmNvbnN0IHNob3VsZFJlcXVlc3ROZXcgPSAob2xkUHJvcGVydGllczogUHJvcGVydGllcywgbmV3UHJvcGVydGllczogUHJvcGVydGllcyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBvbGRIb3N0ZWRab25lSWRzID0gT2JqZWN0LnZhbHVlcyhvbGRQcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcyA/PyB7fSkubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcbiAgY29uc3QgbmV3SG9zdGVkWm9uZUlkcyA9IE9iamVjdC52YWx1ZXMobmV3UHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMgPz8ge30pLm1hcCgoem9uZSkgPT4gem9uZS5Ib3N0ZWRab25lSWQpXG4gIGlmICghY29udGFpbnNTYW1lKG9sZEhvc3RlZFpvbmVJZHMsIG5ld0hvc3RlZFpvbmVJZHMpKSByZXR1cm4gdHJ1ZVxuICBpZiAob2xkUHJvcGVydGllcy5Eb21haW5OYW1lICE9PSBuZXdQcm9wZXJ0aWVzLkRvbWFpbk5hbWUpIHJldHVybiB0cnVlXG4gIGlmICghY29udGFpbnNTYW1lKG9sZFByb3BlcnRpZXMuQWx0ZXJuYXRpdmVEb21haW5OYW1lcyA/PyBbXSwgbmV3UHJvcGVydGllcy5BbHRlcm5hdGl2ZURvbWFpbk5hbWVzID8/IFtdKSkgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuQ2VydGlmaWNhdGVSZWdpb24gIT09IG5ld1Byb3BlcnRpZXMuQ2VydGlmaWNhdGVSZWdpb24pIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLkNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcyAhPT0gbmV3UHJvcGVydGllcy5DbGVhbnVwVmFsaWRhdGlvblJlY29yZHMpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLlRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkICE9PSBuZXdQcm9wZXJ0aWVzLlRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkKSByZXR1cm4gdHJ1ZVxuICBpZiAob2xkUHJvcGVydGllcy5SZW1vdmFsUG9saWN5ICE9PSBuZXdQcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kpIHJldHVybiB0cnVlXG4gIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBhc3N1bWVSb2xlID0gKFxuICByb2xlQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGV4dGVybmFsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogUHJvdmlkZXI8QXdzQ3JlZGVudGlhbElkZW50aXR5PiB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghcm9sZUFybikge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHN0cyA9IG5ldyBTVFNDbGllbnQoeyByZXRyeU1vZGU6ICdhZGFwdGl2ZScgfSlcbiAgICBjb25zdCBhc3N1bWVSb2xlSW5wdXQ6IEFzc3VtZVJvbGVDb21tYW5kSW5wdXQgPSB7XG4gICAgICBSb2xlQXJuOiByb2xlQXJuLFxuICAgICAgUm9sZVNlc3Npb25OYW1lOiAnQ2VydGlmaWNhdGVSZXF1ZXN0b3InLFxuICAgICAgRXh0ZXJuYWxJZDogZXh0ZXJuYWxJZCxcbiAgICB9XG4gICAgY29uc3QgeyBDcmVkZW50aWFscyB9ID0gYXdhaXQgc3RzLnNlbmQobmV3IEFzc3VtZVJvbGVDb21tYW5kKGFzc3VtZVJvbGVJbnB1dCkpXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY2Vzc0tleUlkOiBDcmVkZW50aWFscz8uQWNjZXNzS2V5SWQhLFxuICAgICAgc2VjcmV0QWNjZXNzS2V5OiBDcmVkZW50aWFscz8uU2VjcmV0QWNjZXNzS2V5ISxcbiAgICAgIHNlc3Npb25Ub2tlbjogQ3JlZGVudGlhbHM/LlNlc3Npb25Ub2tlbiEsXG4gICAgICBleHBpcmF0aW9uOiBDcmVkZW50aWFscz8uRXhwaXJhdGlvbixcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoZXZlbnQ6IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCkgPT4ge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gcGFyc2VQcm9wZXJ0aWVzKGV2ZW50LlJlc291cmNlUHJvcGVydGllcylcblxuICBjb25zdCBhY20gPSBuZXcgQUNNQ2xpZW50KHsgcmVnaW9uOiBwcm9wZXJ0aWVzLkNlcnRpZmljYXRlUmVnaW9uLCByZXRyeU1vZGU6ICdhZGFwdGl2ZScgfSlcbiAgY29uc3Qgcm91dGU1MyA9IChyb2xlQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIGV4dGVybmFsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFJvdXRlNTNDbGllbnQgPT4ge1xuICAgIHJldHVybiBuZXcgUm91dGU1M0NsaWVudCh7XG4gICAgICByZXRyeU1vZGU6ICdhZGFwdGl2ZScsXG4gICAgICBjcmVkZW50aWFsczogYXNzdW1lUm9sZShyb2xlQXJuLCBleHRlcm5hbElkKSxcbiAgICB9KVxuICB9XG5cbiAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgJ0NyZWF0ZSc6IHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZXF1ZXN0aW5nIG5ldyBjZXJ0aWZpY2F0ZTpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICBjb25zdCBjZXJ0aWZpY2F0ZUFybiA9IGF3YWl0IHJlcXVlc3RDZXJ0aWZpY2F0ZShhY20sIHJvdXRlNTMsIGV2ZW50LlJlcXVlc3RJZCwgcHJvcGVydGllcylcbiAgICAgIGlmIChwcm9wZXJ0aWVzLlRhZ3MgJiYgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcy5UYWdzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IGFkZFRhZ3MoYWNtLCBjZXJ0aWZpY2F0ZUFybiwgcHJvcGVydGllcy5UYWdzKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgRGF0YToge1xuICAgICAgICAgIEFybjogY2VydGlmaWNhdGVBcm4sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGNhc2UgJ1VwZGF0ZSc6IHtcbiAgICAgIGxldCBjZXJ0aWZpY2F0ZUFybiA9IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZFxuICAgICAgaWYgKHNob3VsZFJlcXVlc3ROZXcocGFyc2VQcm9wZXJ0aWVzKGV2ZW50Lk9sZFJlc291cmNlUHJvcGVydGllcyksIHByb3BlcnRpZXMpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZXF1ZXN0aW5nIG5ldyBjZXJ0aWZpY2F0ZSBkdWUgdG8gY2hhbmdlIG9mIHByb3BlcnRpZXM6XFxuJHtvYmplY3RUb1N0cmluZyhwcm9wZXJ0aWVzKX1gKVxuICAgICAgICBjZXJ0aWZpY2F0ZUFybiA9IGF3YWl0IHJlcXVlc3RDZXJ0aWZpY2F0ZShhY20sIHJvdXRlNTMsIGV2ZW50LlJlcXVlc3RJZCwgcHJvcGVydGllcylcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wZXJ0aWVzLlRhZ3MgJiYgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcy5UYWdzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IGFkZFRhZ3MoYWNtLCBjZXJ0aWZpY2F0ZUFybiwgcHJvcGVydGllcy5UYWdzKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgRGF0YToge1xuICAgICAgICAgIEFybjogY2VydGlmaWNhdGVBcm4sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGNhc2UgJ0RlbGV0ZSc6IHtcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlQXJuID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgICBpZiAocHJvcGVydGllcy5SZW1vdmFsUG9saWN5ID09PSAnZGVzdHJveScpIHtcbiAgICAgICAgY29uc29sZS5sb2coYERlbGV0aW5nIG9sZCBjZXJ0aWZpY2F0ZSBhcyBwZXIgcmVtb3ZhbCBwb2xpY3k6XFxuJHtvYmplY3RUb1N0cmluZyhwcm9wZXJ0aWVzKX1gKVxuICAgICAgICBhd2FpdCBkZWxldGVDZXJ0aWZpY2F0ZShhY20sIHJvdXRlNTMsIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgRGF0YToge1xuICAgICAgICAgIEFybjogY2VydGlmaWNhdGVBcm4sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXF1ZXN0IHR5cGVgKVxufVxuIl19
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtcmVxdWVzdG9yLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3IubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFnQztBQUNoQyxvREFZNEI7QUFDNUIsOERBUWlDO0FBQ2pDLG9EQUEwRjtBQUcxRixtQ0FRZ0I7QUFzQmhCLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBK0IsRUFBYyxFQUFFO0lBQ3RFLGtEQUFrRDtJQUNsRCxPQUFPLFVBQW1DLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFdBQThCLEVBQThCLEVBQUU7SUFDbEcsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQTtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUssRUFBRSxHQUFHLENBQUMsY0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbkgsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsR0FBRyxFQUFFLEVBQUU7Z0JBQ1AsZUFBZSxFQUFFO29CQUNmO3dCQUNFLEtBQUssRUFBRSxNQUFN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bEMsSUFBSSxFQUFFO29CQUNKLEdBQUcsRUFBRSxjQUFjO2lCQUNwQjthQUNGLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUN6QyxDQUFDLENBQUE7QUF4RFksUUFBQSxPQUFPLFdBd0RuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nXG5pbXBvcnQge1xuICBBQ01DbGllbnQsXG4gIEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZCxcbiAgQWRkVGFnc1RvQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIENlcnRpZmljYXRlRGV0YWlsLFxuICBEZWxldGVDZXJ0aWZpY2F0ZUNvbW1hbmQsXG4gIERlbGV0ZUNlcnRpZmljYXRlQ29tbWFuZElucHV0LFxuICBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZCxcbiAgRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgUmVxdWVzdENlcnRpZmljYXRlQ29tbWFuZCxcbiAgUmVxdWVzdENlcnRpZmljYXRlQ29tbWFuZElucHV0LFxuICB3YWl0VW50aWxDZXJ0aWZpY2F0ZVZhbGlkYXRlZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWFjbSdcbmltcG9ydCB7XG4gIENoYW5nZUFjdGlvbixcbiAgQ2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzQ29tbWFuZCxcbiAgQ2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzQ29tbWFuZElucHV0LFxuICBJbnZhbGlkQ2hhbmdlQmF0Y2gsXG4gIFJlc291cmNlUmVjb3JkU2V0LFxuICBSb3V0ZTUzQ2xpZW50LFxuICB3YWl0VW50aWxSZXNvdXJjZVJlY29yZFNldHNDaGFuZ2VkLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtcm91dGUtNTMnXG5pbXBvcnQgeyBBc3N1bWVSb2xlQ29tbWFuZCwgQXNzdW1lUm9sZUNvbW1hbmRJbnB1dCwgU1RTQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXN0cydcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBQcm92aWRlciB9IGZyb20gJ0Bhd3Mtc2RrL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQgfSBmcm9tICdhd3MtbGFtYmRhJ1xuaW1wb3J0IHtcbiAgY2xlYW5DaGFuZ2VJZCxcbiAgY2xlYW5Eb21haW5OYW1lLFxuICBjb250YWluc1NhbWUsXG4gIG9iamVjdFRvU3RyaW5nLFxuICBvcmRlckJ5U2lnbmlmaWNhbmNlLFxuICBzdHJpbmdUb0Jvb2xlYW4sXG4gIHRyeUZvcixcbn0gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzID0ge1xuICBEb21haW5OYW1lOiBzdHJpbmdcbiAgSG9zdGVkWm9uZUlkOiBzdHJpbmdcbiAgVmFsaWRhdGlvblJvbGVBcm4/OiBzdHJpbmdcbiAgVmFsaWRhdGlvbkV4dGVybmFsSWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgUHJvcGVydGllcyA9IHtcbiAgRG9tYWluTmFtZTogc3RyaW5nXG4gIEFsdGVybmF0aXZlRG9tYWluTmFtZXM/OiBzdHJpbmdbXVxuICBWYWxpZGF0aW9uSG9zdGVkWm9uZXM6IFJlY29yZDxzdHJpbmcsIFZhbGlkYXRpb25Ib3N0ZWRab25lUHJvcGVydGllcz5cbiAgQ2VydGlmaWNhdGVSZWdpb246IHN0cmluZ1xuICBDbGVhbnVwVmFsaWRhdGlvblJlY29yZHM6IHN0cmluZ1xuICBUcmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZDogc3RyaW5nXG4gIFRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIFJlbW92YWxQb2xpY3k6IHN0cmluZ1xufVxuXG50eXBlIFJvdXRlNTNGYWN0b3J5ID0gKHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCwgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiBSb3V0ZTUzQ2xpZW50XG5cbmNvbnN0IHBhcnNlUHJvcGVydGllcyA9IChwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvcGVydGllcyA9PiB7XG4gIC8vIG1heWJlIHNob3VsZCBhY3R1YWxseSBwYXJzZSBhbmQgbm90IGp1c3QgYXNzdW1lXG4gIHJldHVybiBwcm9wZXJ0aWVzIGFzIHVua25vd24gYXMgUHJvcGVydGllc1xufVxuXG5jb25zdCBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzID0gKGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZURldGFpbCk6IFJlc291cmNlUmVjb3JkU2V0W10gfCBudWxsID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGNlcnRpZmljYXRlLkRvbWFpblZhbGlkYXRpb25PcHRpb25zID8/IFtdXG4gIGlmIChvcHRpb25zLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5ldmVyeSgob3B0KSA9PiBvcHQuUmVzb3VyY2VSZWNvcmQ/Lk5hbWUpKSB7XG4gICAgY29uc3QgdW5pcXVlUmVjb3JkcyA9IFsuLi5uZXcgTWFwKG9wdGlvbnMubWFwKChvcHQpID0+IFtvcHQuUmVzb3VyY2VSZWNvcmQ/Lk5hbWUhLCBvcHQuUmVzb3VyY2VSZWNvcmQhXSkpLnZhbHVlcygpXVxuICAgIHJldHVybiB1bmlxdWVSZWNvcmRzLm1hcCgocmVjb3JkKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBOYW1lOiByZWNvcmQuTmFtZSxcbiAgICAgICAgVHlwZTogcmVjb3JkLlR5cGUsXG4gICAgICAgIFRUTDogMzAsXG4gICAgICAgIFJlc291cmNlUmVjb3JkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFZhbHVlOiByZWNvcmQuVmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmNvbnN0IGNoYW5nZVJlY29yZFNldHMgPSBhc3luYyAoXG4gIHJvdXRlNTM6IFJvdXRlNTNDbGllbnQsXG4gIGFjdGlvbjogQ2hhbmdlQWN0aW9uLFxuICByZWNvcmRzOiBSZXNvdXJjZVJlY29yZFNldFtdLFxuICBob3N0ZWRab25lSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGNoYW5nZVJlY29yZFNldHNJbnB1dDogQ2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzQ29tbWFuZElucHV0ID0ge1xuICAgIEhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgIENoYW5nZUJhdGNoOiB7XG4gICAgICBDaGFuZ2VzOiByZWNvcmRzLm1hcCgocmVjb3JkKSA9PiAoe1xuICAgICAgICBBY3Rpb246IGFjdGlvbixcbiAgICAgICAgUmVzb3VyY2VSZWNvcmRTZXQ6IHJlY29yZCxcbiAgICAgIH0pKSxcbiAgICB9LFxuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgeyBDaGFuZ2VJbmZvIH0gPSBhd2FpdCByb3V0ZTUzLnNlbmQobmV3IENoYW5nZVJlc291cmNlUmVjb3JkU2V0c0NvbW1hbmQoY2hhbmdlUmVjb3JkU2V0c0lucHV0KSlcbiAgICBjb25zdCBjaGFuZ2VJZCA9IENoYW5nZUluZm8/LklkIVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhaXRVbnRpbFJlc291cmNlUmVjb3JkU2V0c0NoYW5nZWQoeyBjbGllbnQ6IHJvdXRlNTMsIG1heFdhaXRUaW1lOiAxODAgfSwgeyBJZDogY2hhbmdlSWQgfSlcbiAgICBpZiAocmVzdWx0LnN0YXRlICE9PSAnU1VDQ0VTUycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFZhbGlkYXRpb24gcmVjb3JkcyBuZXZlciBjaGFuZ2VkIGZvciBob3N0ZWQgem9uZSAke2hvc3RlZFpvbmVJZH06IFske3Jlc3VsdC5zdGF0ZX1dICR7cmVzdWx0LnJlYXNvbiA/PyAnJ31gXG4gICAgICApXG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGFjdGlvbiA9PT0gJ0NSRUFURScgfHwgYWN0aW9uID09PSAnVVBTRVJUJyA/ICdjaGFuZ2VkJyA6ICdkZWxldGVkJ1xuICAgIGNvbnN0IGNoYW5nZSA9IGNsZWFuQ2hhbmdlSWQoY2hhbmdlSWQpXG4gICAgY29uc29sZS5sb2coYFZhbGlkYXRpb24gcmVjb3JkcyBzdWNjZXNmdWxseSAke29wZXJhdGlvbn0gZm9yIGhvc3RlZCB6b25lICR7aG9zdGVkWm9uZUlkfSB3aXRoIGNoYW5nZSBpZCAke2NoYW5nZX1gKVxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGlmIChhY3Rpb24gPT09ICdERUxFVEUnICYmIGVycm9yIGluc3RhbmNlb2YgSW52YWxpZENoYW5nZUJhdGNoICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ25vdCBmb3VuZCcpKSB7XG4gICAgICAvLyB0aGVyZSdzIGEgZGVsZXRpb24gcmFjZSBjb25kaXRpb24gd2hlcmUgc29tZSBvdGhlciBjZXJ0aWZpY2F0ZSBoYXMgYWxyZWFkeSBkZWxldGVkIHRoZSByZWNvcmRzXG4gICAgICBjb25zb2xlLmxvZyhgQWxsIHZhbGlkYXRpb24gcmVjb3JkcyBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWUgb3RoZXIgY2VydGlmaWNhdGVgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBnZXRSZWNvcmRzRm9yWm9uZU5hbWVzID0gKFxuICByZWNvcmRzOiBSZXNvdXJjZVJlY29yZFNldFtdLFxuICB6b25lTmFtZXM6IHN0cmluZ1tdLFxuICByZXN1bHQ/OiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZVJlY29yZFNldFtdPlxuKTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VSZWNvcmRTZXRbXT4gPT4ge1xuICBjb25zdCBbem9uZU5hbWUsIC4uLnJlc3Rab25lTmFtZXNdID0gem9uZU5hbWVzXG4gIGlmICghem9uZU5hbWUpIHtcbiAgICByZXR1cm4gcmVzdWx0ID8/IHt9XG4gIH1cbiAgY29uc3QgbWF0Y2hpbmdSZWNvcmRzOiBSZXNvdXJjZVJlY29yZFNldFtdID0gW11cbiAgY29uc3QgdW5tYXRjaGluZ1JlY29yZHM6IFJlc291cmNlUmVjb3JkU2V0W10gPSBbXVxuICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFJlY29yZE5hbWUgPSBjbGVhbkRvbWFpbk5hbWUocmVjb3JkLk5hbWUhKVxuICAgIGlmIChub3JtYWxpemVkUmVjb3JkTmFtZS5lbmRzV2l0aCh6b25lTmFtZSkpIHtcbiAgICAgIG1hdGNoaW5nUmVjb3Jkcy5wdXNoKHJlY29yZClcbiAgICB9IGVsc2Uge1xuICAgICAgdW5tYXRjaGluZ1JlY29yZHMucHVzaChyZWNvcmQpXG4gICAgfVxuICB9XG4gIHJldHVybiBnZXRSZWNvcmRzRm9yWm9uZU5hbWVzKHVubWF0Y2hpbmdSZWNvcmRzLCByZXN0Wm9uZU5hbWVzLCB7XG4gICAgLi4uKHJlc3VsdCA/PyB7fSksXG4gICAgW3pvbmVOYW1lXTogbWF0Y2hpbmdSZWNvcmRzLFxuICB9KVxufVxuXG5jb25zdCByZXF1ZXN0Q2VydGlmaWNhdGUgPSBhc3luYyAoXG4gIGFjbTogQUNNQ2xpZW50LFxuICByb3V0ZTUzOiBSb3V0ZTUzRmFjdG9yeSxcbiAgcmVxdWVzdElkOiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IFByb3BlcnRpZXNcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHsgRG9tYWluTmFtZSwgQWx0ZXJuYXRpdmVEb21haW5OYW1lcywgVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgfSA9IHByb3BlcnRpZXNcblxuICBjb25zb2xlLmxvZyhgUmVxdWVzdGluZyBjZXJ0aWZpY2F0ZSBmb3IgJHtEb21haW5OYW1lfWApXG5cbiAgY29uc3QgcmVxdWVzdENlcnRpZmljYXRlSW5wdXQ6IFJlcXVlc3RDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCA9IHtcbiAgICBEb21haW5OYW1lLFxuICAgIFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBBbHRlcm5hdGl2ZURvbWFpbk5hbWVzLFxuICAgIElkZW1wb3RlbmN5VG9rZW46IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUocmVxdWVzdElkKS5kaWdlc3QoJ2hleCcpLnNsaWNlKDAsIDMyKSxcbiAgICBWYWxpZGF0aW9uTWV0aG9kOiAnRE5TJyxcbiAgICBPcHRpb25zOiB7XG4gICAgICBDZXJ0aWZpY2F0ZVRyYW5zcGFyZW5jeUxvZ2dpbmdQcmVmZXJlbmNlOiBUcmFuc3BhcmVuY3lMb2dnaW5nRW5hYmxlZCA/ICdFTkFCTEVEJyA6ICdESVNBQkxFRCcsXG4gICAgfSxcbiAgfVxuICBjb25zdCB7IENlcnRpZmljYXRlQXJuIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgUmVxdWVzdENlcnRpZmljYXRlQ29tbWFuZChyZXF1ZXN0Q2VydGlmaWNhdGVJbnB1dCkpXG5cbiAgY29uc29sZS5sb2coYENlcnRpZmljYXRlICR7Q2VydGlmaWNhdGVBcm59IHJlcXVlc3RlZGApXG5cbiAgY29uc3QgdmFsaWRhdGlvbk1heFNlY29uZHMgPSAxODBcbiAgY29uc3QgdmFsaWRhdGlvblRpbWVvdXRFcnJvciA9IGBEb21haW4gdmFsaWRhdGlvbiBvcHRpb25zIHdlcmUgbm90IGZvdW5kIGluICR7dmFsaWRhdGlvbk1heFNlY29uZHN9IHNlY29uZHNgXG4gIGNvbnN0IHZhbGlkYXRpb25SZWNvcmRzID0gYXdhaXQgdHJ5Rm9yKHZhbGlkYXRpb25NYXhTZWNvbmRzLCB2YWxpZGF0aW9uVGltZW91dEVycm9yLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0OiBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgICAgQ2VydGlmaWNhdGVBcm4sXG4gICAgfVxuICAgIGNvbnN0IHsgQ2VydGlmaWNhdGUgfSA9IGF3YWl0IGFjbS5zZW5kKG5ldyBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZChkZXNjcmliZUNlcnRpZmljYXRlSW5wdXQpKVxuICAgIHJldHVybiBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzKENlcnRpZmljYXRlISlcbiAgfSlcblxuICBjb25zdCBob3N0ZWRab25lcyA9IE9iamVjdC52YWx1ZXMocHJvcGVydGllcy5WYWxpZGF0aW9uSG9zdGVkWm9uZXMpXG4gIGNvbnN0IGhvc3RlZFpvbmVJZHMgPSBob3N0ZWRab25lcy5tYXAoKHpvbmUpID0+IHpvbmUuSG9zdGVkWm9uZUlkKVxuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBVcHNlcnRpbmcgJHt2YWxpZGF0aW9uUmVjb3Jkcy5sZW5ndGh9IHZhbGlkYXRpb24gcmVjb3JkKHMpIGludG8gaG9zdGVkIHpvbmUocykgJHtob3N0ZWRab25lSWRzLmpvaW4oJywgJyl9OmBcbiAgKVxuICB2YWxpZGF0aW9uUmVjb3Jkcy5mb3JFYWNoKChyZWNvcmQpID0+XG4gICAgY29uc29sZS5sb2coYCR7cmVjb3JkLk5hbWV9ICR7cmVjb3JkLlR5cGV9ICR7cmVjb3JkLlJlc291cmNlUmVjb3Jkcz8ubWFwKChycikgPT4gcnIuVmFsdWUpLmpvaW4oJywnKX1gKVxuICApXG5cbiAgY29uc3QgcmVjb3Jkc0ZvclpvbmVOYW1lcyA9IGdldFJlY29yZHNGb3Jab25lTmFtZXMoXG4gICAgdmFsaWRhdGlvblJlY29yZHMsXG4gICAgb3JkZXJCeVNpZ25pZmljYW5jZShPYmplY3Qua2V5cyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcykpXG4gIClcbiAgZm9yIChjb25zdCBob3N0ZWRab25lIG9mIGhvc3RlZFpvbmVzKSB7XG4gICAgY29uc3QgcmVjb3JkcyA9IHJlY29yZHNGb3Jab25lTmFtZXNbaG9zdGVkWm9uZS5Eb21haW5OYW1lXVxuICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGNoYW5nZVJlY29yZFNldHMoXG4gICAgICAgIHJvdXRlNTMoaG9zdGVkWm9uZS5WYWxpZGF0aW9uUm9sZUFybiwgaG9zdGVkWm9uZS5WYWxpZGF0aW9uRXh0ZXJuYWxJZCksXG4gICAgICAgICdVUFNFUlQnLFxuICAgICAgICByZWNvcmRzLFxuICAgICAgICBob3N0ZWRab25lLkhvc3RlZFpvbmVJZFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBXYWl0aW5nIGZvciBjZXJ0aWZpY2F0ZSAke0NlcnRpZmljYXRlQXJufSB0byB2YWxpZGF0ZWApXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhaXRVbnRpbENlcnRpZmljYXRlVmFsaWRhdGVkKHsgY2xpZW50OiBhY20sIG1heFdhaXRUaW1lOiAzMDAgfSwgeyBDZXJ0aWZpY2F0ZUFybiB9KVxuICBpZiAocmVzdWx0LnN0YXRlICE9PSAnU1VDQ0VTUycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENlcnRpZmljYXRlIGZhaWxlZCAke0NlcnRpZmljYXRlQXJufSB0byB2YWxpZGF0ZTogWyR7cmVzdWx0LnN0YXRlfV0gJHtyZXN1bHQucmVhc29uID8/ICcnfWApXG4gIH1cbiAgY29uc29sZS5sb2coYENlcnRpZmljYXRlICR7Q2VydGlmaWNhdGVBcm59IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWRgKVxuICByZXR1cm4gQ2VydGlmaWNhdGVBcm4hXG59XG5cbmNvbnN0IGRlbGV0ZUNlcnRpZmljYXRlID0gYXN5bmMgKFxuICBhY206IEFDTUNsaWVudCxcbiAgcm91dGU1MzogUm91dGU1M0ZhY3RvcnksXG4gIGNlcnRpZmljYXRlQXJuOiBzdHJpbmcsXG4gIHByb3BlcnRpZXM6IFByb3BlcnRpZXNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgY2VydGlmaWNhdGUgJHtjZXJ0aWZpY2F0ZUFybn0gdXNhZ2UgdG8gZHJhaW4gYmVmb3JlIGRlbGV0aW9uYClcblxuICBjb25zdCB3YWl0VXNhZ2VNYXhTZWNvbmRzID0gNjAwXG4gIGNvbnN0IHdhaXRVc2FnZVRpbWVvdXRFcnJvciA9IGBDZXJ0aWZpY2F0ZSB3YXMgc3RpbGwgaW4gdXNlIGFmdGVyICR7d2FpdFVzYWdlTWF4U2Vjb25kc30gc2Vjb25kc2BcbiAgY29uc3QgY2VydGlmaWNhdGUgPSBhd2FpdCB0cnlGb3Iod2FpdFVzYWdlTWF4U2Vjb25kcywgd2FpdFVzYWdlVGltZW91dEVycm9yLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0OiBEZXNjcmliZUNlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgICAgQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlQXJuLFxuICAgIH1cbiAgICBjb25zdCB7IENlcnRpZmljYXRlIH0gPSBhd2FpdCBhY20uc2VuZChuZXcgRGVzY3JpYmVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVzY3JpYmVDZXJ0aWZpY2F0ZUlucHV0KSlcbiAgICBjb25zdCBpblVzZUJ5ID0gQ2VydGlmaWNhdGU/LkluVXNlQnkgPz8gW11cbiAgICBpZiAoaW5Vc2VCeS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gQ2VydGlmaWNhdGUhXG4gIH0pXG4gIGNvbnNvbGUubG9nKCdDZXJ0aWZpY2F0ZSBpcyB1bnVzZWQgYW5kIHdpbGwgYmUgZGVsZXRlZCcpXG5cbiAgY29uc3QgdmFsaWRhdGlvblJlY29yZHMgPSBwYXJzZURvbWFpblZhbGlkYXRpb25SZWNvcmRzKGNlcnRpZmljYXRlKVxuICBpZiAodmFsaWRhdGlvblJlY29yZHMgJiYgc3RyaW5nVG9Cb29sZWFuKHByb3BlcnRpZXMuQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzKSkge1xuICAgIGNvbnN0IGhvc3RlZFpvbmVzID0gT2JqZWN0LnZhbHVlcyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcylcbiAgICBjb25zdCBob3N0ZWRab25lSWRzID0gaG9zdGVkWm9uZXMubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYERlbGV0aW5nICR7dmFsaWRhdGlvblJlY29yZHMubGVuZ3RofSB2YWxpZGF0aW9uIHJlY29yZChzKSBmcm9tIGhvc3RlZCB6b25lKHMpICR7aG9zdGVkWm9uZUlkcy5qb2luKCcsICcpfWBcbiAgICApXG5cbiAgICBjb25zdCByZWNvcmRzRm9yWm9uZU5hbWVzID0gZ2V0UmVjb3Jkc0ZvclpvbmVOYW1lcyhcbiAgICAgIHZhbGlkYXRpb25SZWNvcmRzLFxuICAgICAgb3JkZXJCeVNpZ25pZmljYW5jZShPYmplY3Qua2V5cyhwcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcykpXG4gICAgKVxuICAgIGZvciAoY29uc3QgaG9zdGVkWm9uZSBvZiBob3N0ZWRab25lcykge1xuICAgICAgY29uc3QgcmVjb3JkcyA9IHJlY29yZHNGb3Jab25lTmFtZXNbaG9zdGVkWm9uZS5Eb21haW5OYW1lXVxuICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCBjaGFuZ2VSZWNvcmRTZXRzKFxuICAgICAgICAgIHJvdXRlNTMoaG9zdGVkWm9uZS5WYWxpZGF0aW9uUm9sZUFybiwgaG9zdGVkWm9uZS5WYWxpZGF0aW9uRXh0ZXJuYWxJZCksXG4gICAgICAgICAgJ0RFTEVURScsXG4gICAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgICBob3N0ZWRab25lLkhvc3RlZFpvbmVJZFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coYERlbGV0aW5nIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59IGZyb20gQUNNYClcbiAgY29uc3QgZGVsZXRlQ2VydGlmaWNhdGVJbnB1dDogRGVsZXRlQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQgPSB7XG4gICAgQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlQXJuLFxuICB9XG4gIGF3YWl0IGFjbS5zZW5kKG5ldyBEZWxldGVDZXJ0aWZpY2F0ZUNvbW1hbmQoZGVsZXRlQ2VydGlmaWNhdGVJbnB1dCkpXG4gIGNvbnNvbGUubG9nKGBDZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlQXJufSBzdWNjZXNzZnVsbHkgZGVsZXRlZGApXG59XG5cbmNvbnN0IGFkZFRhZ3MgPSBhc3luYyAoYWNtOiBBQ01DbGllbnQsIGNlcnRpZmljYXRlQXJuOiBzdHJpbmcsIHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHtcbiAgY29uc3QgdGFnTGlzdCA9IEFycmF5LmZyb20oT2JqZWN0LmVudHJpZXModGFncykubWFwKChbS2V5LCBWYWx1ZV0pID0+ICh7IEtleSwgVmFsdWUgfSkpKVxuICBjb25zdCBhZGRUYWdzSW5wdXQ6IEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZElucHV0ID0ge1xuICAgIENlcnRpZmljYXRlQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICBUYWdzOiB0YWdMaXN0LFxuICB9XG5cbiAgY29uc29sZS5sb2coYEFkZGluZyAke3RhZ0xpc3QubGVuZ3RofSB0YWdzIHRvIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59YClcbiAgYXdhaXQgYWNtLnNlbmQobmV3IEFkZFRhZ3NUb0NlcnRpZmljYXRlQ29tbWFuZChhZGRUYWdzSW5wdXQpKVxuICBjb25zb2xlLmxvZyhgQWxsIHRhZ3Mgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIGNlcnRpZmljYXRlICR7Y2VydGlmaWNhdGVBcm59YClcbn1cblxuY29uc3Qgc2hvdWxkUmVxdWVzdE5ldyA9IChvbGRQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG9sZEhvc3RlZFpvbmVJZHMgPSBPYmplY3QudmFsdWVzKG9sZFByb3BlcnRpZXMuVmFsaWRhdGlvbkhvc3RlZFpvbmVzID8/IHt9KS5tYXAoKHpvbmUpID0+IHpvbmUuSG9zdGVkWm9uZUlkKVxuICBjb25zdCBuZXdIb3N0ZWRab25lSWRzID0gT2JqZWN0LnZhbHVlcyhuZXdQcm9wZXJ0aWVzLlZhbGlkYXRpb25Ib3N0ZWRab25lcyA/PyB7fSkubWFwKCh6b25lKSA9PiB6b25lLkhvc3RlZFpvbmVJZClcbiAgaWYgKCFjb250YWluc1NhbWUob2xkSG9zdGVkWm9uZUlkcywgbmV3SG9zdGVkWm9uZUlkcykpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLkRvbWFpbk5hbWUgIT09IG5ld1Byb3BlcnRpZXMuRG9tYWluTmFtZSkgcmV0dXJuIHRydWVcbiAgaWYgKCFjb250YWluc1NhbWUob2xkUHJvcGVydGllcy5BbHRlcm5hdGl2ZURvbWFpbk5hbWVzID8/IFtdLCBuZXdQcm9wZXJ0aWVzLkFsdGVybmF0aXZlRG9tYWluTmFtZXMgPz8gW10pKSByZXR1cm4gdHJ1ZVxuICBpZiAob2xkUHJvcGVydGllcy5DZXJ0aWZpY2F0ZVJlZ2lvbiAhPT0gbmV3UHJvcGVydGllcy5DZXJ0aWZpY2F0ZVJlZ2lvbikgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuQ2xlYW51cFZhbGlkYXRpb25SZWNvcmRzICE9PSBuZXdQcm9wZXJ0aWVzLkNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcykgcmV0dXJuIHRydWVcbiAgaWYgKG9sZFByb3BlcnRpZXMuVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgIT09IG5ld1Byb3BlcnRpZXMuVHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQpIHJldHVybiB0cnVlXG4gIGlmIChvbGRQcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kgIT09IG5ld1Byb3BlcnRpZXMuUmVtb3ZhbFBvbGljeSkgcmV0dXJuIHRydWVcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGFzc3VtZVJvbGUgPSAoXG4gIHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm92aWRlcjxBd3NDcmVkZW50aWFsSWRlbnRpdHk+IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCFyb2xlQXJuKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RzID0gbmV3IFNUU0NsaWVudCh7IHJldHJ5TW9kZTogJ2FkYXB0aXZlJyB9KVxuICAgIGNvbnN0IGFzc3VtZVJvbGVJbnB1dDogQXNzdW1lUm9sZUNvbW1hbmRJbnB1dCA9IHtcbiAgICAgIFJvbGVBcm46IHJvbGVBcm4sXG4gICAgICBSb2xlU2Vzc2lvbk5hbWU6ICdDZXJ0aWZpY2F0ZVJlcXVlc3RvcicsXG4gICAgICBFeHRlcm5hbElkOiBleHRlcm5hbElkLFxuICAgIH1cbiAgICBjb25zdCB7IENyZWRlbnRpYWxzIH0gPSBhd2FpdCBzdHMuc2VuZChuZXcgQXNzdW1lUm9sZUNvbW1hbmQoYXNzdW1lUm9sZUlucHV0KSlcbiAgICByZXR1cm4ge1xuICAgICAgYWNjZXNzS2V5SWQ6IENyZWRlbnRpYWxzPy5BY2Nlc3NLZXlJZCEsXG4gICAgICBzZWNyZXRBY2Nlc3NLZXk6IENyZWRlbnRpYWxzPy5TZWNyZXRBY2Nlc3NLZXkhLFxuICAgICAgc2Vzc2lvblRva2VuOiBDcmVkZW50aWFscz8uU2Vzc2lvblRva2VuISxcbiAgICAgIGV4cGlyYXRpb246IENyZWRlbnRpYWxzPy5FeHBpcmF0aW9uLFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChldmVudDogQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50KSA9PiB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBwYXJzZVByb3BlcnRpZXMoZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzKVxuXG4gIGNvbnN0IGFjbSA9IG5ldyBBQ01DbGllbnQoeyByZWdpb246IHByb3BlcnRpZXMuQ2VydGlmaWNhdGVSZWdpb24sIHJldHJ5TW9kZTogJ2FkYXB0aXZlJyB9KVxuICBjb25zdCByb3V0ZTUzID0gKHJvbGVBcm46IHN0cmluZyB8IHVuZGVmaW5lZCwgZXh0ZXJuYWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogUm91dGU1M0NsaWVudCA9PiB7XG4gICAgcmV0dXJuIG5ldyBSb3V0ZTUzQ2xpZW50KHtcbiAgICAgIHJldHJ5TW9kZTogJ2FkYXB0aXZlJyxcbiAgICAgIGNyZWRlbnRpYWxzOiBhc3N1bWVSb2xlKHJvbGVBcm4sIGV4dGVybmFsSWQpLFxuICAgIH0pXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSAnQ3JlYXRlJzoge1xuICAgICAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgbmV3IGNlcnRpZmljYXRlOlxcbiR7b2JqZWN0VG9TdHJpbmcocHJvcGVydGllcyl9YClcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlQXJuID0gYXdhaXQgcmVxdWVzdENlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgZXZlbnQuUmVxdWVzdElkLCBwcm9wZXJ0aWVzKVxuICAgICAgaWYgKHByb3BlcnRpZXMuVGFncyAmJiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzLlRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgYWRkVGFncyhhY20sIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzLlRhZ3MpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSAnVXBkYXRlJzoge1xuICAgICAgbGV0IGNlcnRpZmljYXRlQXJuID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkXG4gICAgICBpZiAoc2hvdWxkUmVxdWVzdE5ldyhwYXJzZVByb3BlcnRpZXMoZXZlbnQuT2xkUmVzb3VyY2VQcm9wZXJ0aWVzKSwgcHJvcGVydGllcykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlcXVlc3RpbmcgbmV3IGNlcnRpZmljYXRlIGR1ZSB0byBjaGFuZ2Ugb2YgcHJvcGVydGllczpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICAgIGNlcnRpZmljYXRlQXJuID0gYXdhaXQgcmVxdWVzdENlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgZXZlbnQuUmVxdWVzdElkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnRpZXMuVGFncyAmJiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzLlRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgYWRkVGFncyhhY20sIGNlcnRpZmljYXRlQXJuLCBwcm9wZXJ0aWVzLlRhZ3MpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSAnRGVsZXRlJzoge1xuICAgICAgY29uc3QgY2VydGlmaWNhdGVBcm4gPSBldmVudC5QaHlzaWNhbFJlc291cmNlSWRcbiAgICAgIGlmIChwcm9wZXJ0aWVzLlJlbW92YWxQb2xpY3kgPT09ICdkZXN0cm95Jykge1xuICAgICAgICBjb25zb2xlLmxvZyhgRGVsZXRpbmcgb2xkIGNlcnRpZmljYXRlIGFzIHBlciByZW1vdmFsIHBvbGljeTpcXG4ke29iamVjdFRvU3RyaW5nKHByb3BlcnRpZXMpfWApXG4gICAgICAgIGF3YWl0IGRlbGV0ZUNlcnRpZmljYXRlKGFjbSwgcm91dGU1MywgY2VydGlmaWNhdGVBcm4sIHByb3BlcnRpZXMpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGNlcnRpZmljYXRlQXJuLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgQXJuOiBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlcXVlc3QgdHlwZWApXG59XG4iXX0=
|
|
@@ -221,7 +221,7 @@ class DnsValidatedCertificate extends cdk.Resource {
|
|
|
221
221
|
return errors;
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
225
|
-
DnsValidatedCertificate[_a] = { fqn: "@trautonen/cdk-dns-validated-certificate.DnsValidatedCertificate", version: "0.1.3" };
|
|
226
224
|
exports.DnsValidatedCertificate = DnsValidatedCertificate;
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXZhbGlkYXRlZC1jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kbnMtdmFsaWRhdGVkLWNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHlEQUF3RDtBQUN4RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBRWhELGlFQUFnRTtBQUVoRSxxRkFBK0U7QUFFL0UsbUNBQWdHO0FBaUhoRyxNQUFNLDhCQUE4QixHQUFHLGlDQUFpQyxDQUFBO0FBQ3hFLE1BQU0sMEJBQTBCLEdBQUcsc0NBQXNDLENBQUE7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUVHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQWF2RDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM3RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQ3pGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUNoRCxDQUFBO1FBQ0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFbEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUNyRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FB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QVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN2RCxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztTQUMvQyxDQUFDLENBQUE7UUFDRixPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMzRixDQUFDO0lBRU8sNEJBQTRCLENBQUMsV0FBcUIsRUFBRSxTQUFtQjtRQUM3RSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUE7UUFDM0IsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7WUFDcEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQzNGLElBQUksb0JBQW9CLElBQUksbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9HLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxVQUFVLGlEQUFpRCxDQUFDLENBQUE7YUFDbkY7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzs7OztBQTlMVSwwREFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInXG5pbXBvcnQgKiBhcyBjZXJ0aWZpY2F0ZW1hbmFnZXIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlcidcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSdcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJ1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1MydcbmltcG9ydCAqIGFzIGN1c3RvbV9yZXNvdXJjZXMgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcydcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnXG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZVJlcXVlc3RvckZ1bmN0aW9uIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3ItZnVuY3Rpb24nXG5pbXBvcnQgeyBQcm9wZXJ0aWVzLCBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXMgfSBmcm9tICcuL2NlcnRpZmljYXRlLXJlcXVlc3Rvci5sYW1iZGEnXG5pbXBvcnQgeyBib29sZWFuVG9TdHJpbmcsIGNsZWFuRG9tYWluTmFtZSwgY2xlYW5Ib3N0ZWRab25lSWQsIG1hdGNoTmFtZXNUb1pvbmVzIH0gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uSG9zdGVkWm9uZSB7XG4gIC8qKlxuICAgKiBIb3N0ZWQgem9uZSB0byB1c2UgZm9yIEROUyB2YWxpZGF0aW9uLiBUaGUgem9uZSBuYW1lIGlzIG1hdGNoZWQgdG8gZG9tYWluIG5hbWUgdG8gdXNlIHRoZSByaWdodFxuICAgKiBob3N0ZWQgem9uZSBmb3IgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogSWYgdGhlIGhvc3RlZCB6b25lIGlzIG5vdCBtYW5hZ2VkIGJ5IHRoZSBDREsgYXBwbGljYXRpb24sIGl0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIHZpYVxuICAgKiBgYEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKClgYC5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmU6IHJvdXRlNTMuSUhvc3RlZFpvbmVcblxuICAvKipcbiAgICogVGhlIHJvbGUgdGhhdCBpcyBhc3N1bWVkIGZvciBETlMgcmVjb3JkIGNoYW5nZXMgZm9yIGNlcnRpZmljYXRlIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIFRoaXMgcm9sZSBzaG91bGQgZXhpc3QgaW4gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgaG9zdGVkIHpvbmUgYW5kIGluY2x1ZGUgcGVybWlzc2lvbnMgdG8gY2hhbmdlIHRoZSBETlMgcmVjb3Jkc1xuICAgKiBmb3IgdGhlIGdpdmVuIGBgaG9zdGVkWm9uZWBgLiBUaGUgYGBjdXN0b21SZXNvdXJjZVJvbGVgYCBvciB0aGUgZGVmYXVsdCBleGVjdXRpb24gcm9sZSBpcyBnaXZlbiBwZXJtaXNzaW9uIHRvXG4gICAqIGFzc3VtZSB0aGlzIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2VwYXJhdGUgcm9sZSBmb3IgRE5TIHJlY29yZCBjaGFuZ2VzLiBUaGUgZ2l2ZW4gY3VzdG9tUmVzb3VyY2VSb2xlIG9yIHRoZSBkZWZhdWx0IHJvbGUgaXMgdXNlZFxuICAgKiBmb3IgRE5TIHJlY29yZCBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvblJvbGU/OiBpYW0uSVJvbGVcblxuICAvKipcbiAgICogRXh0ZXJuYWwgaWQgZm9yIGBgdmFsaWRhdGlvblJvbGVgYCByb2xlIGFzc3VtZSB2ZXJpZmljYXRpb24uXG4gICAqXG4gICAqIFRoaXMgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIGBgdmFsaWRhdGlvblJvbGVgYCBpcyBnaXZlbiBhbmQgdGhlIHJvbGUgZXhwZWN0cyBhbiBleHRlcm5hbCBpZCBwcm92aWRlZCBvbiBhc3N1bWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZXh0ZXJuYWwgaWQgcHJvdmlkZWQgZHVyaW5nIGFzc3VtZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb25FeHRlcm5hbElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGVQcm9wcyB7XG4gIC8qKlxuICAgKiBGdWxseS1xdWFsaWZpZWQgZG9tYWluIG5hbWUgdG8gcmVxdWVzdCBhIGNlcnRpZmljYXRlIGZvci5cbiAgICpcbiAgICogTWF5IGNvbnRhaW4gd2lsZGNhcmRzLCBzdWNoIGFzIGBgKi5kb21haW4uY29tYGAuXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogRnVsbHktcXVhbGlmaWVkIGFsdGVybmF0aXZlIGRvbWFpbiBuYW1lcyB0byByZXF1ZXN0IGEgY2VydGlmaWNhdGUgZm9yLlxuICAgKlxuICAgKiBNYXkgY29udGFpbiB3aWxkY2FyZHMsIHN1Y2ggYXMgYGAqLm90aGVyZG9tYWluLmNvbWBgLlxuICAgKi9cbiAgcmVhZG9ubHkgYWx0ZXJuYXRpdmVEb21haW5OYW1lcz86IHN0cmluZ1tdXG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgaG9zdGVkIHpvbmVzIHRvIHVzZSBmb3IgdmFsaWRhdGlvbi4gSG9zdGVkIHpvbmVzIGFyZSBtYXBwZWQgdG8gZG9tYWluIG5hbWVzIGJ5IHRoZSB6b25lIG5hbWUuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uSG9zdGVkWm9uZXM6IFZhbGlkYXRpb25Ib3N0ZWRab25lW11cblxuICAvKipcbiAgICogQVdTIHJlZ2lvbiB3aGVyZSB0aGUgY2VydGlmaWNhdGUgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIFlvdSBzaG91bGQgdXNlIHRoZSBkZWZhdWx0IGBgQ2VydGlmaWNhdGVgYCBjb25zdHJ1Y3QgaW5zdGVhZCBpZiB0aGUgcmVnaW9uIGlzIHNhbWUgYXMgdGhlIHN0YWNrJ3MgYW5kIHRoZSBob3N0ZWRcbiAgICogem9uZSBpcyBpbiB0aGUgc2FtZSBhY2NvdW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNhbWUgcmVnaW9uIGFzIHRoZSBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlUmVnaW9uPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgaXMgdXNlZCBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBMYW1iZGEgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBUaGUgcm9sZSBpcyBnaXZlbiBwZXJtaXNzaW9ucyB0byByZXF1ZXN0IGNlcnRpZmljYXRlcyBmcm9tIEFDTS4gSWYgdGhlcmUgYXJlIGFueSBgYHZhbGlkYXRpb25Sb2xlYGBzIHByb3ZpZGVkLFxuICAgKiB0aGlzIHJvbGUgaXMgYWxzbyBnaXZlbiBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgYGB2YWxpZGF0aW9uUm9sZWBgLiBPdGhlcndpc2UgaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBob3N0ZWQgem9uZVxuICAgKiBpcyBpbiBzYW1lIGFjY291bnQgYW5kIHRoZSBleGVjdXRpb24gcm9sZSBpcyBnaXZlbiBwZXJtaXNzaW9ucyB0byBjaGFuZ2UgRE5TIHJlY29yZHMgZm9yIHRoZSBnaXZlbiBgYGRvbWFpbk5hbWVgYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBMYW1iZGEgY3JlYXRlcyBhIGRlZmF1bHQgZXhlY3V0aW9uIHJvbGUuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21SZXNvdXJjZVJvbGU/OiBpYW0uSVJvbGVcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgY2xlYW5pbmcgb2YgdmFsaWRhdGlvbiBETlMgcmVjb3JkcyBmcm9tIHRoZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogSWYgdGhlcmUncyBtdWx0aXBsZSBjZXJ0aWZpY2F0ZXMgY3JlYXRlZCBmb3Igc2FtZSBkb21haW4sIGl0IGlzIHBvc3NpYmxlIHRvIGVuY291dGVyIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgc29tZVxuICAgKiBjZXJ0aWZpY2F0ZSBpcyByZW1vdmVkIGFuZCBhbm90aGVyIGNlcnRpZmljYXRlIHdvdWxkIG5lZWQgdGhlIHNhbWUgdmFsaWRhdGlvbiByZWNvcmQuIFByZWZlciBzaW5nbGUgY2VydGlmaWNhdGVcbiAgICogZm9yIGEgZG9tYWluIG9yIHNldCB0aGlzIHRvIGZhbHNlIGFuZCBjbGVhbnVwIHJlY29yZHMgbWFudWFsbHkgd2hlbiBub3QgbmVlZGVkIGFueW1vcmUuIElmIHlvdSBjaGFuZ2UgdGhpc1xuICAgKiBwcm9wZXJ0eSBhZnRlciBjcmVhdGlvbiwgYSBuZXcgY2VydGlmaWNhdGUgd2lsbCBiZSByZXF1ZXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBWYWxpZGF0aW9uUmVjb3Jkcz86IGJvb2xlYW5cblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgdHJhbnNwYXJlbmN5IGxvZ2dpbmcgZm9yIHRoaXMgY2VydGlmaWNhdGUuXG4gICAqXG4gICAqIE9uY2UgYSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBsb2dnZWQsIGl0IGNhbm5vdCBiZSByZW1vdmVkIGZyb20gdGhlIGxvZy4gT3B0aW5nIG91dCBhdCB0aGF0IHBvaW50IHdpbGwgaGF2ZSBub1xuICAgKiBlZmZlY3QuIElmIHlvdSBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBjcmVhdGlvbiwgYSBuZXcgY2VydGlmaWNhdGUgd2lsbCBiZSByZXF1ZXN0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FjbS9sYXRlc3QvdXNlcmd1aWRlL2FjbS1iZXN0cHJhY3RpY2VzLmh0bWwjYmVzdC1wcmFjdGljZXMtdHJhbnNwYXJlbmN5XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGUgZ2l2ZW4gcmVtb3ZhbCBwb2xpY3kgdG8gdGhpcyByZXNvdXJjZS5cbiAgICpcbiAgICogVGhlIHJlbW92YWwgcG9saWN5IGNvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHJlc291cmNlIHdoZW4gaXQgc3RvcHMgYmVpbmcgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiwgZWl0aGVyXG4gICAqIGJlY2F1c2UgeW91J3ZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgQ0RLIGFwcGxpY2F0aW9uIG9yIGJlY2F1c2UgeW91J3ZlIG1hZGUgYSBjaGFuZ2UgdGhhdCByZXF1aXJlcyB0aGUgcmVzb3VyY2UgdG9cbiAgICogYmUgcmVwbGFjZWQuIFRoZSByZXNvdXJjZSBjYW4gYmUgZGVsZXRlZCAoYGBSZW1vdmFsUG9saWN5LkRFU1RST1lgYCksIG9yIGxlZnQgaW4geW91ciBBV1MgYWNjb3VudCBmb3IgZGF0YVxuICAgKiByZWNvdmVyeSBhbmQgY2xlYW51cCBsYXRlciAoYGBSZW1vdmFsUG9saWN5LlJFVEFJTmBgKS4gSWYgeW91IGNoYW5nZSB0aGlzIHByb3BlcnR5IGFmdGVyIGNyZWF0aW9uLCBhIG5ld1xuICAgKiBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHJlcXVlc3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3lcbn1cblxuY29uc3QgRE5TX1ZBTElEQVRFRF9DRVJUSUZJQ0FURV9UWVBFID0gJ0N1c3RvbTo6RG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUnXG5jb25zdCBDRVJUVElGSUNBVEVfUkVTT1VSQ0VfVFlQRSA9ICdBV1M6OkNlcnRpZmljYXRlTWFuYWdlcjo6Q2VydGlmaWNhdGUnXG5cbi8qKlxuICogQSBjZXJ0aWZpY2F0ZSBtYW5hZ2VkIGJ5IEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyLiBXaWxsIGJlIGF1dG9tYXRpY2FsbHkgdmFsaWRhdGVkIHVzaW5nIEROUyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlXG4gKiBzcGVjaWZpZWQgUm91dGUgNTMgaG9zdGVkIHpvbmUuIFRoaXMgY29uc3RydWN0IHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIGNyb3NzLXJlZ2lvbiBvciBjcm9zcy1hY2NvdW50IGNlcnRpZmljYXRlXG4gKiB2YWxpZGF0aW9ucy4gVGhlIGRlZmF1bHQgYGBDZXJ0aWZpY2F0ZWBgIGNvbnN0cnVjdCBpcyBiZXR0ZXIgaW4gY2FzZXMgd2hlcmUgZXZlcnl0aGluZyBpcyBtYW5hZ2VkIGJ5IHRoZSBDREtcbiAqIGFwcGxpY2F0aW9uLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgZG9lcyBub3Qgc3VwcG9ydCBhbHRlcm5hdGl2ZSBuYW1lcyB5ZXQgYXMgaXQgd291bGQgcmVxdWlyZSBkb21haW4gdG8gcm9sZSBtYXBwaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyAjIyMgQ3Jvc3MtcmVnaW9uIGNlcnRpZmljYXRlIHZhbGlkYXRpb25cbiAqIC8vIGhvc3RlZCB6b25lIG1hbmFnZWQgYnkgdGhlIENESyBhcHBsaWNhdGlvblxuICogY29uc3QgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZSA9IC4uLlxuICogLy8gbm8gc2VwYXJhdGUgdmFsaWRhdGlvbiByb2xlIGlzIG5lZWRlZFxuICogY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ0Nyb3NzUmVnaW9uQ2VydGlmaWNhdGUnLCB7XG4gKiAgIGRvbWFpbk5hbWU6ICdleGFtcGxlLmNvbScsICAgICAvLyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaG9zdGVkIHpvbmVcbiAqICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBbeyAgICAgIC8vIGhvc3RlZCB6b25lIHVzZWQgd2l0aCB0aGUgZXhlY3V0aW9uIHJvbGUncyBwZXJtaXNzaW9uc1xuICogICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmVcbiAqICAgfV0sXG4gKiAgIGNlcnRpZmljYXRlUmVnaW9uOiAndXMtZWFzdC0xJyAvLyB1c2VkIGJ5IGZvciBleGFtcGxlIENsb3VkRnJvbnRcbiAqIH0pXG4gKiAvLyAjIyMgQ3Jvc3MtYWNjb3VudCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uXG4gKiAvLyBleHRlcm5hbCBob3N0ZWQgem9uZVxuICogY29uc3QgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZSA9XG4gKiAgIHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXModGhpcywgJ0hvc3RlZFpvbmUnLCB7XG4gKiAgICAgaG9zdGVkWm9uZUlkOiAnWjUzMkRHREVERlMxMjM0NTY3ODknLFxuICogICAgIHpvbmVOYW1lOiAnZXhhbXBsZS5jb20nXG4gKiAgIH0pXG4gKiAvLyB2YWxpZGF0aW9uIHJvbGUgaW4gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgaG9zdGVkIHpvbmVcbiAqIGNvbnN0IHJvbGVBcm4gPSAnYXJuOmF3czppYW06OjEyMzQ1Njc4OTpyb2xlL0NoYW5nZURuc1JlY29yZHNSb2xlJ1xuICogY29uc3QgZXh0ZXJuYWxJZCA9ICdkb21haW4tYXNzdW1lJ1xuICogY29uc3QgdmFsaWRhdGlvblJvbGU6IGlhbS5JUm9sZSA9XG4gKiAgIGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdWYWxpZGF0aW9uUm9sZScsIHJvbGVBcm4pXG4gKiBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ3Jvc3NBY2NvdW50Q2VydGlmaWNhdGUnLCB7XG4gKiAgIGRvbWFpbk5hbWU6ICdleGFtcGxlLmNvbScsXG4gKiAgIHZhbGlkYXRpb25Ib3N0ZWRab25lczogW3tcbiAqICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICogICAgIHZhbGlkYXRpb25Sb2xlOiB2YWxpZGF0aW9uUm9sZSxcbiAqICAgICB2YWxpZGF0aW9uRXh0ZXJuYWxJZDogZXh0ZXJuYWxJZFxuICogICB9XVxuICogfSlcbiAqIC8vICMjIyBDcm9zcy1hY2NvdW50IGFsdGVybmF0aXZlIG5hbWUgdmFsaWRhdGlvblxuICogLy8gZXhhbXBsZS5jb20gaXMgdmFsaWRhdGVkIG9uIHNhbWUgYWNjb3VudCBhZ2FpbnN0IG1hbmFnZWQgaG9zdGVkIHpvbmVcbiAqIC8vIGFuZCBzZWNvbmRhcnkuY29tIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IGV4dGVybmFsIGhvc3RlZCB6b25lIG9uIG90aGVyIGFjY291bnRcbiAqIGNvbnN0IGhvc3RlZFpvbmVGb3JNYWluOiByb3V0ZTUzLklIb3N0ZWRab25lID0gLi4uXG4gKiBjb25zdCBob3N0ZWRab25lRm9yQWx0ZXJuYXRpdmU6IHJvdXRlNTMuSUhvc3RlZFpvbmUgPVxuICogICByb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsICdTZWNvbmRhcnlIb3N0ZWRab25lJywge1xuICogICAgIGhvc3RlZFpvbmVJZDogJ1o1MzJER0RFREZTMTIzNDU2Nzg5JyxcbiAqICAgICB6b25lTmFtZTogJ3NlY29uZGFyeS5jb20nXG4gKiAgIH0pXG4gKiBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ3Jvc3NBY2NvdW50Q2VydGlmaWNhdGUnLCB7XG4gKiAgIGRvbWFpbk5hbWU6ICdleGFtcGxlLmNvbScsXG4gKiAgIGFsdGVybmF0aXZlRG9tYWluTmFtZXM6IFsnc2Vjb25kYXJ5LmNvbSddLFxuICogICB2YWxpZGF0aW9uSG9zdGVkWm9uZXM6IFt7XG4gKiAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZUZvck1haW5cbiAqICAgfSx7XG4gKiAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZUZvckFsdGVybmF0aXZlLFxuICogICAgIHZhbGlkYXRpb25Sb2xlOiBpYW0uUm9sZS5mcm9tUm9sZUFybihcbiAqICAgICAgIHRoaXMsICdTZWNvbmRhcnlWYWxpZGF0aW9uUm9sZScsICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5OnJvbGUvQ2hhbmdlRG5zUmVjb3Jkc1JvbGUnXG4gKiAgICAgKSxcbiAqICAgICB2YWxpZGF0aW9uRXh0ZXJuYWxJZDogJ2RvbWFpbi1hc3N1bWUnXG4gKiAgIH1dXG4gKiB9KVxuICpcbiAqIEByZXNvdXJjZSBDdXN0b206OkRuc1ZhbGlkYXRlZENlcnRpZmljYXRlXG4gKiBAcmVzb3VyY2UgQVdTOjpDZXJ0aWZpY2F0ZU1hbmFnZXI6OkNlcnRpZmljYXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGUsIGNkay5JVGFnZ2FibGUge1xuICAvKiogVGhlIGNlcnRpZmljYXRlJ3MgQVJOICovXG4gIHB1YmxpYyByZWFkb25seSBjZXJ0aWZpY2F0ZUFybjogc3RyaW5nXG5cbiAgLyoqIFRoZSByZWdpb24gd2hlcmUgdGhlIGNlcnRpZmljYXRlIGlzIGRlcGxveWVkIHRvICovXG4gIHB1YmxpYyByZWFkb25seSBjZXJ0aWZpY2F0ZVJlZ2lvbjogc3RyaW5nXG5cbiAgLyoqIFRoZSB0YWcgbWFuYWdlciB0byBzZXQsIHJlbW92ZSBhbmQgZm9ybWF0IHRhZ3MgZm9yIHRoZSBjZXJ0aWZpY2F0ZSAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhZ3M6IGNkay5UYWdNYW5hZ2VyXG5cbiAgLyoqIFRoZSByZW1vdmFsIHBvbGljeSBmb3IgdGhlIGNlcnRpZmljYXRlICovXG4gIHByaXZhdGUgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3lcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBjb25zdHJ1Y3QgaG9zdGluZyB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgY29uc3RydWN0J3MgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gcHJvcHMgcHJvcGVydGllcyBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gdGhpcy5ub3JtYWxpemVEb21haW5OYW1lKHByb3BzLmRvbWFpbk5hbWUpXG4gICAgY29uc3QgYWx0ZXJuYXRpdmVEb21haW5OYW1lcyA9IHByb3BzLmFsdGVybmF0aXZlRG9tYWluTmFtZXM/Lm1hcCgoYWx0ZXJuYXRpdmVEb21haW5OYW1lKSA9PlxuICAgICAgdGhpcy5ub3JtYWxpemVEb21haW5OYW1lKGFsdGVybmF0aXZlRG9tYWluTmFtZSlcbiAgICApXG4gICAgY29uc3QgYWxsRG9tYWlucyA9IFtkb21haW5OYW1lLCAuLi4oYWx0ZXJuYXRpdmVEb21haW5OYW1lcyA/PyBbXSldXG5cbiAgICB0aGlzLmNlcnRpZmljYXRlUmVnaW9uID0gcHJvcHMuY2VydGlmaWNhdGVSZWdpb24gPz8gdGhpcy5zdGFjay5yZWdpb25cbiAgICB0aGlzLnRhZ3MgPSBuZXcgY2RrLlRhZ01hbmFnZXIoY2RrLlRhZ1R5cGUuTUFQLCBDRVJUVElGSUNBVEVfUkVTT1VSQ0VfVFlQRSlcbiAgICB0aGlzLnJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1lcblxuICAgIGNvbnN0IHJlcXVlc3RvckZ1bmN0aW9uID0gbmV3IENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb24odGhpcywgJ1JlcXVlc3RvckZ1bmN0aW9uJywge1xuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDE0KSxcbiAgICAgIHJvbGU6IHByb3BzLmN1c3RvbVJlc291cmNlUm9sZSxcbiAgICB9KVxuXG4gICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnYWNtOlJlcXVlc3RDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgJ2FjbTpEZXNjcmliZUNlcnRpZmljYXRlJyxcbiAgICAgICAgICAnYWNtOkRlbGV0ZUNlcnRpZmljYXRlJyxcbiAgICAgICAgICAnYWNtOkFkZFRhZ3NUb0NlcnRpZmljYXRlJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgY29uc3QgZG9tYWluc1RvWm9uZXMgPSBtYXRjaE5hbWVzVG9ab25lcyhcbiAgICAgIHByb3BzLnZhbGlkYXRpb25Ib3N0ZWRab25lcy5tYXAoKHpvbmUpID0+IHpvbmUuaG9zdGVkWm9uZS56b25lTmFtZSksXG4gICAgICBhbGxEb21haW5zLFxuICAgICAgKGRvbWFpbikgPT4gZG9tYWluXG4gICAgKVxuICAgIGNvbnN0IGhvc3RlZFpvbmVzV2l0aFJvbGUgPSBwcm9wcy52YWxpZGF0aW9uSG9zdGVkWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLnZhbGlkYXRpb25Sb2xlICE9PSB1bmRlZmluZWQpXG4gICAgY29uc3QgaG9zdGVkWm9uZXNXaXRob3V0Um9sZSA9IHByb3BzLnZhbGlkYXRpb25Ib3N0ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUudmFsaWRhdGlvblJvbGUgPT09IHVuZGVmaW5lZClcblxuICAgIGhvc3RlZFpvbmVzV2l0aFJvbGUuZm9yRWFjaCgoem9uZSkgPT4ge1xuICAgICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnc3RzOkFzc3VtZVJvbGUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFt6b25lLnZhbGlkYXRpb25Sb2xlIS5yb2xlQXJuXSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9KVxuXG4gICAgaG9zdGVkWm9uZXNXaXRob3V0Um9sZS5mb3JFYWNoKCh6b25lKSA9PiB7XG4gICAgICByZXF1ZXN0b3JGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ3JvdXRlNTM6R2V0Q2hhbmdlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIGNvbnN0IGRvbWFpbk5hbWVzID0gZG9tYWluc1RvWm9uZXNbem9uZS5ob3N0ZWRab25lLnpvbmVOYW1lXVxuICAgICAgaWYgKGRvbWFpbk5hbWVzICYmIGRvbWFpbk5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsncm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHMnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ub3JtYWxpemVIb3N0ZWRab25lSWQoem9uZS5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCl9YF0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICdGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzJzoge1xuICAgICAgICAgICAgICAgICdyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1JlY29yZFR5cGVzJzogWydDTkFNRSddLFxuICAgICAgICAgICAgICAgICdyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c0FjdGlvbnMnOiBbJ1VQU0VSVCcsICdERUxFVEUnXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ0ZvckFsbFZhbHVlczpTdHJpbmdMaWtlJzoge1xuICAgICAgICAgICAgICAgICdyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c05vcm1hbGl6ZWRSZWNvcmROYW1lcyc6IGRvbWFpbk5hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndpbGRjYXJkRG9tYWluTmFtZShgRG9tYWluV2lsZGNhcmQke3pvbmUuaG9zdGVkWm9uZS5ub2RlLmlkfSR7aW5kZXh9YCwgbmFtZSlcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCByZXF1ZXN0b3JQcm92aWRlciA9IG5ldyBjdXN0b21fcmVzb3VyY2VzLlByb3ZpZGVyKHRoaXMsICdSZXF1ZXN0b3JQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiByZXF1ZXN0b3JGdW5jdGlvbixcbiAgICB9KVxuXG4gICAgY29uc3QgdmFsaWRhdGlvbkhvc3RlZFpvbmVzID0gcHJvcHMudmFsaWRhdGlvbkhvc3RlZFpvbmVzLm1hcDxbc3RyaW5nLCBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXNdPigoem9uZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllczogVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzID0ge1xuICAgICAgICBEb21haW5OYW1lOiB0aGlzLm5vcm1hbGl6ZURvbWFpbk5hbWUoem9uZS5ob3N0ZWRab25lLnpvbmVOYW1lKSxcbiAgICAgICAgSG9zdGVkWm9uZUlkOiB0aGlzLm5vcm1hbGl6ZUhvc3RlZFpvbmVJZCh6b25lLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkKSxcbiAgICAgICAgVmFsaWRhdGlvblJvbGVBcm46IHpvbmUudmFsaWRhdGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICAgIFZhbGlkYXRpb25FeHRlcm5hbElkOiB6b25lLnZhbGlkYXRpb25FeHRlcm5hbElkLFxuICAgICAgfVxuICAgICAgcmV0dXJuIFtwcm9wZXJ0aWVzLkRvbWFpbk5hbWUsIHByb3BlcnRpZXNdXG4gICAgfSlcblxuICAgIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnRpZXMgPSB7XG4gICAgICBEb21haW5OYW1lOiBkb21haW5OYW1lLFxuICAgICAgQWx0ZXJuYXRpdmVEb21haW5OYW1lczogYWx0ZXJuYXRpdmVEb21haW5OYW1lcyxcbiAgICAgIFZhbGlkYXRpb25Ib3N0ZWRab25lczogT2JqZWN0LmZyb21FbnRyaWVzKHZhbGlkYXRpb25Ib3N0ZWRab25lcyksXG4gICAgICBDZXJ0aWZpY2F0ZVJlZ2lvbjogdGhpcy5jZXJ0aWZpY2F0ZVJlZ2lvbixcbiAgICAgIENsZWFudXBWYWxpZGF0aW9uUmVjb3JkczogYm9vbGVhblRvU3RyaW5nKHByb3BzLmNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcyA/PyB0cnVlKSxcbiAgICAgIFRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkOiBib29sZWFuVG9TdHJpbmcocHJvcHMudHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgPz8gdHJ1ZSksXG4gICAgICBUYWdzOiBjZGsuTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnRhZ3MucmVuZGVyVGFncygpIH0pIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICAgIFJlbW92YWxQb2xpY3k6IGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHRoaXMucmVtb3ZhbFBvbGljeSB9KSxcbiAgICB9XG5cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1JlcXVlc3RvclJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiByZXF1ZXN0b3JQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IEROU19WQUxJREFURURfQ0VSVElGSUNBVEVfVFlQRSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgfSlcblxuICAgIHRoaXMuY2VydGlmaWNhdGVBcm4gPSBjZXJ0aWZpY2F0ZS5nZXRBdHRTdHJpbmcoJ0FybicpXG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT5cbiAgICAgICAgdGhpcy52YWxpZGF0ZURvbWFpbnNUb0hvc3RlZFpvbmVzKFxuICAgICAgICAgIGFsbERvbWFpbnMsXG4gICAgICAgICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzLm1hcCgoW3pvbmVOYW1lLCBfXSkgPT4gem9uZU5hbWUpXG4gICAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIG1ldHJpY0RheXNUb0V4cGlyeShwcm9wcz86IGNkay5hd3NfY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zIHwgdW5kZWZpbmVkKTogY2RrLmF3c19jbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENlcnRpZmljYXRlQXJuOiB0aGlzLmNlcnRpZmljYXRlQXJuIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRGF5c1RvRXhwaXJ5JyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9DZXJ0aWZpY2F0ZU1hbmFnZXInLFxuICAgICAgcmVnaW9uOiB0aGlzLmNlcnRpZmljYXRlUmVnaW9uLFxuICAgICAgc3RhdGlzdGljOiBjbG91ZHdhdGNoLlN0YXRzLk1JTklNVU0sXG4gICAgfSlcbiAgfVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5KTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmFsUG9saWN5ID0gcG9saWN5XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZURvbWFpbk5hbWUoZG9tYWluTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZChkb21haW5OYW1lKSkge1xuICAgICAgcmV0dXJuIGRvbWFpbk5hbWVcbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuRG9tYWluTmFtZShkb21haW5OYW1lKVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVIb3N0ZWRab25lSWQoaG9zdGVkWm9uZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGhvc3RlZFpvbmVJZCkpIHtcbiAgICAgIHJldHVybiBob3N0ZWRab25lSWRcbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuSG9zdGVkWm9uZUlkKGhvc3RlZFpvbmVJZClcbiAgfVxuXG4gIHByaXZhdGUgd2lsZGNhcmREb21haW5OYW1lKGlkOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBjZGsuRm4uc3BsaXQoJy4nLCBkb21haW5OYW1lKVxuICAgIGNvbnN0IGZpcnN0ID0gY2RrLkZuLnNlbGVjdCgwLCBwYXJ0cylcbiAgICBjb25zdCBpc1dpbGRjYXJkID0gbmV3IGNkay5DZm5Db25kaXRpb24odGhpcywgYElzJHtpZH1gLCB7XG4gICAgICBleHByZXNzaW9uOiBjZGsuRm4uY29uZGl0aW9uRXF1YWxzKGZpcnN0LCAnKicpLFxuICAgIH0pXG4gICAgcmV0dXJuIGNkay5Gbi5jb25kaXRpb25JZihpc1dpbGRjYXJkLmxvZ2ljYWxJZCwgZG9tYWluTmFtZSwgYCouJHtkb21haW5OYW1lfWApLnRvU3RyaW5nKClcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEb21haW5zVG9Ib3N0ZWRab25lcyhkb21haW5OYW1lczogc3RyaW5nW10sIHpvbmVOYW1lczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBkb21haW5OYW1lIG9mIGRvbWFpbk5hbWVzKSB7XG4gICAgICBjb25zdCByZXNvbHZhYmxlRG9tYWluTmFtZSA9ICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGRvbWFpbk5hbWUpXG4gICAgICBjb25zdCByZXNvbHZhYmxlWm9uZU5hbWVzID0gIXpvbmVOYW1lcy5zb21lKCh6b25lTmFtZSkgPT4gY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh6b25lTmFtZSkpXG4gICAgICBpZiAocmVzb2x2YWJsZURvbWFpbk5hbWUgJiYgcmVzb2x2YWJsZVpvbmVOYW1lcyAmJiAhem9uZU5hbWVzLnNvbWUoKHpvbmVOYW1lKSA9PiBkb21haW5OYW1lLmVuZHNXaXRoKHpvbmVOYW1lKSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goYERvbWFpbiAke2RvbWFpbk5hbWV9IGlzIG5vdCBwcm92aWRlZCB3aXRoIGF1dGhvcml0YXRpdmUgaG9zdGVkIHpvbmVgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3JzXG4gIH1cbn1cbiJdfQ==
|
|
225
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
226
|
+
DnsValidatedCertificate[_a] = { fqn: "@trautonen/cdk-dns-validated-certificate.DnsValidatedCertificate", version: "0.1.5" };
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXZhbGlkYXRlZC1jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kbnMtdmFsaWRhdGVkLWNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBRWxDLHlEQUF3RDtBQUN4RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBRWhELGlFQUFnRTtBQUVoRSxxRkFBK0U7QUFFL0UsbUNBQWdHO0FBaUhoRyxNQUFNLDhCQUE4QixHQUFHLGlDQUFpQyxDQUFBO0FBQ3hFLE1BQU0sMEJBQTBCLEdBQUcsc0NBQXNDLENBQUE7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUVHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQWF2RDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM3RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQ3pGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUNoRCxDQUFBO1FBQ0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFbEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUNyRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQyxDQUFBO1FBQzNFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQTtRQUVyRSxNQUFNLGlCQUFpQixHQUFHLElBQUksNkRBQTRCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ3BGLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDeEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtTQUMvQixDQUFDLENBQUE7UUFFRixpQkFBaUIsQ0FBQyxlQUFlLENBQy9CLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLE9BQU8sRUFBRTtnQkFDUCx3QkFBd0I7Z0JBQ3hCLHlCQUF5QjtnQkFDekIsdUJBQXVCO2dCQUN2QiwwQkFBMEI7YUFDM0I7WUFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDakIsQ0FBQyxDQUNILENBQUE7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFBLHlCQUFpQixFQUN0QyxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUNuRSxVQUFVLEVBQ1YsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FDbkIsQ0FBQTtRQUNELE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQTtRQUMzRyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUE7UUFFOUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkMsaUJBQWlCLENBQUMsZUFBZSxDQUMvQixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQ3hCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUMzQixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBZSxDQUFDLE9BQU8sQ0FBQzthQUMxQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsaUJBQWlCLENBQUMsZUFBZSxDQUMvQixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUM5QixTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDakIsQ0FBQyxDQUNILENBQUE7WUFDRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUM1RCxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxpQkFBaUIsQ0FBQyxlQUFlLENBQy9CLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztvQkFDdEIsT0FBTyxFQUFFLENBQUMsa0NBQWtDLENBQUM7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUN2RyxVQUFVLEVBQUU7d0JBQ1YsMkJBQTJCLEVBQUU7NEJBQzNCLDZDQUE2QyxFQUFFLENBQUMsT0FBTyxDQUFDOzRCQUN4RCx5Q0FBeUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7eUJBQ2hFO3dCQUNELHlCQUF5QixFQUFFOzRCQUN6Qix1REFBdUQsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dDQUN2RixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBOzRCQUMxRixDQUFDLENBQUM7eUJBQ0g7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUNILENBQUE7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLGlCQUFpQixHQUFHLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNqRixjQUFjLEVBQUUsaUJBQWlCO1NBQ2xDLENBQUMsQ0FBQTtRQUVGLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBMkMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvRyxNQUFNLFVBQVUsR0FBbUM7Z0JBQ2pELFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzlELFlBQVksRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTztnQkFDL0Msb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUNoRCxDQUFBO1lBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDNUMsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLFVBQVUsR0FBZTtZQUM3QixVQUFVLEVBQUUsVUFBVTtZQUN0QixzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQztZQUNoRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3pDLHdCQUF3QixFQUFFLElBQUEsdUJBQWUsRUFBQyxLQUFLLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDO1lBQ2pGLDBCQUEwQixFQUFFLElBQUEsdUJBQWUsRUFBQyxLQUFLLENBQUMsMEJBQTBCLElBQUksSUFBSSxDQUFDO1lBQ3JGLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQXNDO1lBQ2xHLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEUsQ0FBQTtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDcEUsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVk7WUFDNUMsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxVQUFVO1NBQ1gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXJELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FDYixJQUFJLENBQUMsNEJBQTRCLENBQy9CLFVBQVUsRUFDVixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3ZEO1NBQ0osQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQW9EO1FBQ3JFLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzNCLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUIsR0FBRyxLQUFLO1lBQ1IsYUFBYSxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEQsVUFBVSxFQUFFLGNBQWM7WUFDMUIsU0FBUyxFQUFFLHdCQUF3QjtZQUNuQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUM5QixTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPO1NBQ3BDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUF5QjtRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQTtJQUM3QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsVUFBa0I7UUFDNUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sVUFBVSxDQUFBO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUEsdUJBQWUsRUFBQyxVQUFVLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRU8scUJBQXFCLENBQUMsWUFBb0I7UUFDaEQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sWUFBWSxDQUFBO1FBQ3JCLENBQUM7UUFDRCxPQUFPLElBQUEseUJBQWlCLEVBQUMsWUFBWSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxVQUFrQjtRQUN2RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDM0MsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUN2RCxVQUFVLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztTQUMvQyxDQUFDLENBQUE7UUFDRixPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMzRixDQUFDO0lBRU8sNEJBQTRCLENBQUMsV0FBcUIsRUFBRSxTQUFtQjtRQUM3RSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUE7UUFDM0IsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDaEUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7WUFDM0YsSUFBSSxvQkFBb0IsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoSCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsVUFBVSxpREFBaUQsQ0FBQyxDQUFBO1lBQ3BGLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOztBQTlMSCwwREErTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInXG5pbXBvcnQgKiBhcyBjZXJ0aWZpY2F0ZW1hbmFnZXIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlcidcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSdcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJ1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1MydcbmltcG9ydCAqIGFzIGN1c3RvbV9yZXNvdXJjZXMgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcydcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnXG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZVJlcXVlc3RvckZ1bmN0aW9uIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZS1yZXF1ZXN0b3ItZnVuY3Rpb24nXG5pbXBvcnQgeyBQcm9wZXJ0aWVzLCBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXMgfSBmcm9tICcuL2NlcnRpZmljYXRlLXJlcXVlc3Rvci5sYW1iZGEnXG5pbXBvcnQgeyBib29sZWFuVG9TdHJpbmcsIGNsZWFuRG9tYWluTmFtZSwgY2xlYW5Ib3N0ZWRab25lSWQsIG1hdGNoTmFtZXNUb1pvbmVzIH0gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uSG9zdGVkWm9uZSB7XG4gIC8qKlxuICAgKiBIb3N0ZWQgem9uZSB0byB1c2UgZm9yIEROUyB2YWxpZGF0aW9uLiBUaGUgem9uZSBuYW1lIGlzIG1hdGNoZWQgdG8gZG9tYWluIG5hbWUgdG8gdXNlIHRoZSByaWdodFxuICAgKiBob3N0ZWQgem9uZSBmb3IgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogSWYgdGhlIGhvc3RlZCB6b25lIGlzIG5vdCBtYW5hZ2VkIGJ5IHRoZSBDREsgYXBwbGljYXRpb24sIGl0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIHZpYVxuICAgKiBgYEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKClgYC5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmU6IHJvdXRlNTMuSUhvc3RlZFpvbmVcblxuICAvKipcbiAgICogVGhlIHJvbGUgdGhhdCBpcyBhc3N1bWVkIGZvciBETlMgcmVjb3JkIGNoYW5nZXMgZm9yIGNlcnRpZmljYXRlIHZhbGlkYXRpb24uXG4gICAqXG4gICAqIFRoaXMgcm9sZSBzaG91bGQgZXhpc3QgaW4gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgaG9zdGVkIHpvbmUgYW5kIGluY2x1ZGUgcGVybWlzc2lvbnMgdG8gY2hhbmdlIHRoZSBETlMgcmVjb3Jkc1xuICAgKiBmb3IgdGhlIGdpdmVuIGBgaG9zdGVkWm9uZWBgLiBUaGUgYGBjdXN0b21SZXNvdXJjZVJvbGVgYCBvciB0aGUgZGVmYXVsdCBleGVjdXRpb24gcm9sZSBpcyBnaXZlbiBwZXJtaXNzaW9uIHRvXG4gICAqIGFzc3VtZSB0aGlzIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2VwYXJhdGUgcm9sZSBmb3IgRE5TIHJlY29yZCBjaGFuZ2VzLiBUaGUgZ2l2ZW4gY3VzdG9tUmVzb3VyY2VSb2xlIG9yIHRoZSBkZWZhdWx0IHJvbGUgaXMgdXNlZFxuICAgKiBmb3IgRE5TIHJlY29yZCBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvblJvbGU/OiBpYW0uSVJvbGVcblxuICAvKipcbiAgICogRXh0ZXJuYWwgaWQgZm9yIGBgdmFsaWRhdGlvblJvbGVgYCByb2xlIGFzc3VtZSB2ZXJpZmljYXRpb24uXG4gICAqXG4gICAqIFRoaXMgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIGBgdmFsaWRhdGlvblJvbGVgYCBpcyBnaXZlbiBhbmQgdGhlIHJvbGUgZXhwZWN0cyBhbiBleHRlcm5hbCBpZCBwcm92aWRlZCBvbiBhc3N1bWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZXh0ZXJuYWwgaWQgcHJvdmlkZWQgZHVyaW5nIGFzc3VtZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb25FeHRlcm5hbElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGVQcm9wcyB7XG4gIC8qKlxuICAgKiBGdWxseS1xdWFsaWZpZWQgZG9tYWluIG5hbWUgdG8gcmVxdWVzdCBhIGNlcnRpZmljYXRlIGZvci5cbiAgICpcbiAgICogTWF5IGNvbnRhaW4gd2lsZGNhcmRzLCBzdWNoIGFzIGBgKi5kb21haW4uY29tYGAuXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogRnVsbHktcXVhbGlmaWVkIGFsdGVybmF0aXZlIGRvbWFpbiBuYW1lcyB0byByZXF1ZXN0IGEgY2VydGlmaWNhdGUgZm9yLlxuICAgKlxuICAgKiBNYXkgY29udGFpbiB3aWxkY2FyZHMsIHN1Y2ggYXMgYGAqLm90aGVyZG9tYWluLmNvbWBgLlxuICAgKi9cbiAgcmVhZG9ubHkgYWx0ZXJuYXRpdmVEb21haW5OYW1lcz86IHN0cmluZ1tdXG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgaG9zdGVkIHpvbmVzIHRvIHVzZSBmb3IgdmFsaWRhdGlvbi4gSG9zdGVkIHpvbmVzIGFyZSBtYXBwZWQgdG8gZG9tYWluIG5hbWVzIGJ5IHRoZSB6b25lIG5hbWUuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uSG9zdGVkWm9uZXM6IFZhbGlkYXRpb25Ib3N0ZWRab25lW11cblxuICAvKipcbiAgICogQVdTIHJlZ2lvbiB3aGVyZSB0aGUgY2VydGlmaWNhdGUgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIFlvdSBzaG91bGQgdXNlIHRoZSBkZWZhdWx0IGBgQ2VydGlmaWNhdGVgYCBjb25zdHJ1Y3QgaW5zdGVhZCBpZiB0aGUgcmVnaW9uIGlzIHNhbWUgYXMgdGhlIHN0YWNrJ3MgYW5kIHRoZSBob3N0ZWRcbiAgICogem9uZSBpcyBpbiB0aGUgc2FtZSBhY2NvdW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNhbWUgcmVnaW9uIGFzIHRoZSBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlUmVnaW9uPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgaXMgdXNlZCBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBMYW1iZGEgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBUaGUgcm9sZSBpcyBnaXZlbiBwZXJtaXNzaW9ucyB0byByZXF1ZXN0IGNlcnRpZmljYXRlcyBmcm9tIEFDTS4gSWYgdGhlcmUgYXJlIGFueSBgYHZhbGlkYXRpb25Sb2xlYGBzIHByb3ZpZGVkLFxuICAgKiB0aGlzIHJvbGUgaXMgYWxzbyBnaXZlbiBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgYGB2YWxpZGF0aW9uUm9sZWBgLiBPdGhlcndpc2UgaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBob3N0ZWQgem9uZVxuICAgKiBpcyBpbiBzYW1lIGFjY291bnQgYW5kIHRoZSBleGVjdXRpb24gcm9sZSBpcyBnaXZlbiBwZXJtaXNzaW9ucyB0byBjaGFuZ2UgRE5TIHJlY29yZHMgZm9yIHRoZSBnaXZlbiBgYGRvbWFpbk5hbWVgYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBMYW1iZGEgY3JlYXRlcyBhIGRlZmF1bHQgZXhlY3V0aW9uIHJvbGUuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21SZXNvdXJjZVJvbGU/OiBpYW0uSVJvbGVcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgY2xlYW5pbmcgb2YgdmFsaWRhdGlvbiBETlMgcmVjb3JkcyBmcm9tIHRoZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogSWYgdGhlcmUncyBtdWx0aXBsZSBjZXJ0aWZpY2F0ZXMgY3JlYXRlZCBmb3Igc2FtZSBkb21haW4sIGl0IGlzIHBvc3NpYmxlIHRvIGVuY291dGVyIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgc29tZVxuICAgKiBjZXJ0aWZpY2F0ZSBpcyByZW1vdmVkIGFuZCBhbm90aGVyIGNlcnRpZmljYXRlIHdvdWxkIG5lZWQgdGhlIHNhbWUgdmFsaWRhdGlvbiByZWNvcmQuIFByZWZlciBzaW5nbGUgY2VydGlmaWNhdGVcbiAgICogZm9yIGEgZG9tYWluIG9yIHNldCB0aGlzIHRvIGZhbHNlIGFuZCBjbGVhbnVwIHJlY29yZHMgbWFudWFsbHkgd2hlbiBub3QgbmVlZGVkIGFueW1vcmUuIElmIHlvdSBjaGFuZ2UgdGhpc1xuICAgKiBwcm9wZXJ0eSBhZnRlciBjcmVhdGlvbiwgYSBuZXcgY2VydGlmaWNhdGUgd2lsbCBiZSByZXF1ZXN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBWYWxpZGF0aW9uUmVjb3Jkcz86IGJvb2xlYW5cblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgdHJhbnNwYXJlbmN5IGxvZ2dpbmcgZm9yIHRoaXMgY2VydGlmaWNhdGUuXG4gICAqXG4gICAqIE9uY2UgYSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBsb2dnZWQsIGl0IGNhbm5vdCBiZSByZW1vdmVkIGZyb20gdGhlIGxvZy4gT3B0aW5nIG91dCBhdCB0aGF0IHBvaW50IHdpbGwgaGF2ZSBub1xuICAgKiBlZmZlY3QuIElmIHlvdSBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBjcmVhdGlvbiwgYSBuZXcgY2VydGlmaWNhdGUgd2lsbCBiZSByZXF1ZXN0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FjbS9sYXRlc3QvdXNlcmd1aWRlL2FjbS1iZXN0cHJhY3RpY2VzLmh0bWwjYmVzdC1wcmFjdGljZXMtdHJhbnNwYXJlbmN5XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGUgZ2l2ZW4gcmVtb3ZhbCBwb2xpY3kgdG8gdGhpcyByZXNvdXJjZS5cbiAgICpcbiAgICogVGhlIHJlbW92YWwgcG9saWN5IGNvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHJlc291cmNlIHdoZW4gaXQgc3RvcHMgYmVpbmcgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiwgZWl0aGVyXG4gICAqIGJlY2F1c2UgeW91J3ZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgQ0RLIGFwcGxpY2F0aW9uIG9yIGJlY2F1c2UgeW91J3ZlIG1hZGUgYSBjaGFuZ2UgdGhhdCByZXF1aXJlcyB0aGUgcmVzb3VyY2UgdG9cbiAgICogYmUgcmVwbGFjZWQuIFRoZSByZXNvdXJjZSBjYW4gYmUgZGVsZXRlZCAoYGBSZW1vdmFsUG9saWN5LkRFU1RST1lgYCksIG9yIGxlZnQgaW4geW91ciBBV1MgYWNjb3VudCBmb3IgZGF0YVxuICAgKiByZWNvdmVyeSBhbmQgY2xlYW51cCBsYXRlciAoYGBSZW1vdmFsUG9saWN5LlJFVEFJTmBgKS4gSWYgeW91IGNoYW5nZSB0aGlzIHByb3BlcnR5IGFmdGVyIGNyZWF0aW9uLCBhIG5ld1xuICAgKiBjZXJ0aWZpY2F0ZSB3aWxsIGJlIHJlcXVlc3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3lcbn1cblxuY29uc3QgRE5TX1ZBTElEQVRFRF9DRVJUSUZJQ0FURV9UWVBFID0gJ0N1c3RvbTo6RG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUnXG5jb25zdCBDRVJUVElGSUNBVEVfUkVTT1VSQ0VfVFlQRSA9ICdBV1M6OkNlcnRpZmljYXRlTWFuYWdlcjo6Q2VydGlmaWNhdGUnXG5cbi8qKlxuICogQSBjZXJ0aWZpY2F0ZSBtYW5hZ2VkIGJ5IEFXUyBDZXJ0aWZpY2F0ZSBNYW5hZ2VyLiBXaWxsIGJlIGF1dG9tYXRpY2FsbHkgdmFsaWRhdGVkIHVzaW5nIEROUyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlXG4gKiBzcGVjaWZpZWQgUm91dGUgNTMgaG9zdGVkIHpvbmUuIFRoaXMgY29uc3RydWN0IHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIGNyb3NzLXJlZ2lvbiBvciBjcm9zcy1hY2NvdW50IGNlcnRpZmljYXRlXG4gKiB2YWxpZGF0aW9ucy4gVGhlIGRlZmF1bHQgYGBDZXJ0aWZpY2F0ZWBgIGNvbnN0cnVjdCBpcyBiZXR0ZXIgaW4gY2FzZXMgd2hlcmUgZXZlcnl0aGluZyBpcyBtYW5hZ2VkIGJ5IHRoZSBDREtcbiAqIGFwcGxpY2F0aW9uLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgZG9lcyBub3Qgc3VwcG9ydCBhbHRlcm5hdGl2ZSBuYW1lcyB5ZXQgYXMgaXQgd291bGQgcmVxdWlyZSBkb21haW4gdG8gcm9sZSBtYXBwaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyAjIyMgQ3Jvc3MtcmVnaW9uIGNlcnRpZmljYXRlIHZhbGlkYXRpb25cbiAqIC8vIGhvc3RlZCB6b25lIG1hbmFnZWQgYnkgdGhlIENESyBhcHBsaWNhdGlvblxuICogY29uc3QgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZSA9IC4uLlxuICogLy8gbm8gc2VwYXJhdGUgdmFsaWRhdGlvbiByb2xlIGlzIG5lZWRlZFxuICogY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ0Nyb3NzUmVnaW9uQ2VydGlmaWNhdGUnLCB7XG4gKiAgIGRvbWFpbk5hbWU6ICdleGFtcGxlLmNvbScsICAgICAvLyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaG9zdGVkIHpvbmVcbiAqICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzOiBbeyAgICAgIC8vIGhvc3RlZCB6b25lIHVzZWQgd2l0aCB0aGUgZXhlY3V0aW9uIHJvbGUncyBwZXJtaXNzaW9uc1xuICogICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmVcbiAqICAgfV0sXG4gKiAgIGNlcnRpZmljYXRlUmVnaW9uOiAndXMtZWFzdC0xJyAvLyB1c2VkIGJ5IGZvciBleGFtcGxlIENsb3VkRnJvbnRcbiAqIH0pXG4gKiAvLyAjIyMgQ3Jvc3MtYWNjb3VudCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uXG4gKiAvLyBleHRlcm5hbCBob3N0ZWQgem9uZVxuICogY29uc3QgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZSA9XG4gKiAgIHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXModGhpcywgJ0hvc3RlZFpvbmUnLCB7XG4gKiAgICAgaG9zdGVkWm9uZUlkOiAnWjUzMkRHREVERlMxMjM0NTY3ODknLFxuICogICAgIHpvbmVOYW1lOiAnZXhhbXBsZS5jb20nXG4gKiAgIH0pXG4gKiAvLyB2YWxpZGF0aW9uIHJvbGUgaW4gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgaG9zdGVkIHpvbmVcbiAqIGNvbnN0IHJvbGVBcm4gPSAnYXJuOmF3czppYW06OjEyMzQ1Njc4OTpyb2xlL0NoYW5nZURuc1JlY29yZHNSb2xlJ1xuICogY29uc3QgZXh0ZXJuYWxJZCA9ICdkb21haW4tYXNzdW1lJ1xuICogY29uc3QgdmFsaWRhdGlvblJvbGU6IGlhbS5JUm9sZSA9XG4gKiAgIGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdWYWxpZGF0aW9uUm9sZScsIHJvbGVBcm4pXG4gKiBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ3Jvc3NBY2NvdW50Q2VydGlmaWNhdGUnLCB7XG4gKiAgIGRvbWFpbk5hbWU6ICdleGFtcGxlLmNvbScsXG4gKiAgIHZhbGlkYXRpb25Ib3N0ZWRab25lczogW3tcbiAqICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICogICAgIHZhbGlkYXRpb25Sb2xlOiB2YWxpZGF0aW9uUm9sZSxcbiAqICAgICB2YWxpZGF0aW9uRXh0ZXJuYWxJZDogZXh0ZXJuYWxJZFxuICogICB9XVxuICogfSlcbiAqIC8vICMjIyBDcm9zcy1hY2NvdW50IGFsdGVybmF0aXZlIG5hbWUgdmFsaWRhdGlvblxuICogLy8gZXhhbXBsZS5jb20gaXMgdmFsaWRhdGVkIG9uIHNhbWUgYWNjb3VudCBhZ2FpbnN0IG1hbmFnZWQgaG9zdGVkIHpvbmVcbiAqIC8vIGFuZCBzZWNvbmRhcnkuY29tIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IGV4dGVybmFsIGhvc3RlZCB6b25lIG9uIG90aGVyIGFjY291bnRcbiAqIGNvbnN0IGhvc3RlZFpvbmVGb3JNYWluOiByb3V0ZTUzLklIb3N0ZWRab25lID0gLi4uXG4gKiBjb25zdCBob3N0ZWRab25lRm9yQWx0ZXJuYXRpdmU6IHJvdXRlNTMuSUhvc3RlZFpvbmUgPVxuICogICByb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsICdTZWNvbmRhcnlIb3N0ZWRab25lJywge1xuICogICAgIGhvc3RlZFpvbmVJZDogJ1o1MzJER0RFREZTMTIzNDU2Nzg5JyxcbiAqICAgICB6b25lTmFtZTogJ3NlY29uZGFyeS5jb20nXG4gKiAgIH0pXG4gKiBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ3Jvc3NBY2NvdW50Q2VydGlmaWNhdGUnLCB7XG4gKiAgIGRvbWFpbk5hbWU6ICdleGFtcGxlLmNvbScsXG4gKiAgIGFsdGVybmF0aXZlRG9tYWluTmFtZXM6IFsnc2Vjb25kYXJ5LmNvbSddLFxuICogICB2YWxpZGF0aW9uSG9zdGVkWm9uZXM6IFt7XG4gKiAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZUZvck1haW5cbiAqICAgfSx7XG4gKiAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZUZvckFsdGVybmF0aXZlLFxuICogICAgIHZhbGlkYXRpb25Sb2xlOiBpYW0uUm9sZS5mcm9tUm9sZUFybihcbiAqICAgICAgIHRoaXMsICdTZWNvbmRhcnlWYWxpZGF0aW9uUm9sZScsICdhcm46YXdzOmlhbTo6MTIzNDU2Nzg5OnJvbGUvQ2hhbmdlRG5zUmVjb3Jkc1JvbGUnXG4gKiAgICAgKSxcbiAqICAgICB2YWxpZGF0aW9uRXh0ZXJuYWxJZDogJ2RvbWFpbi1hc3N1bWUnXG4gKiAgIH1dXG4gKiB9KVxuICpcbiAqIEByZXNvdXJjZSBDdXN0b206OkRuc1ZhbGlkYXRlZENlcnRpZmljYXRlXG4gKiBAcmVzb3VyY2UgQVdTOjpDZXJ0aWZpY2F0ZU1hbmFnZXI6OkNlcnRpZmljYXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGUsIGNkay5JVGFnZ2FibGUge1xuICAvKiogVGhlIGNlcnRpZmljYXRlJ3MgQVJOICovXG4gIHB1YmxpYyByZWFkb25seSBjZXJ0aWZpY2F0ZUFybjogc3RyaW5nXG5cbiAgLyoqIFRoZSByZWdpb24gd2hlcmUgdGhlIGNlcnRpZmljYXRlIGlzIGRlcGxveWVkIHRvICovXG4gIHB1YmxpYyByZWFkb25seSBjZXJ0aWZpY2F0ZVJlZ2lvbjogc3RyaW5nXG5cbiAgLyoqIFRoZSB0YWcgbWFuYWdlciB0byBzZXQsIHJlbW92ZSBhbmQgZm9ybWF0IHRhZ3MgZm9yIHRoZSBjZXJ0aWZpY2F0ZSAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhZ3M6IGNkay5UYWdNYW5hZ2VyXG5cbiAgLyoqIFRoZSByZW1vdmFsIHBvbGljeSBmb3IgdGhlIGNlcnRpZmljYXRlICovXG4gIHByaXZhdGUgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3lcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBjb25zdHJ1Y3QgaG9zdGluZyB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgY29uc3RydWN0J3MgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gcHJvcHMgcHJvcGVydGllcyBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERuc1ZhbGlkYXRlZENlcnRpZmljYXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gdGhpcy5ub3JtYWxpemVEb21haW5OYW1lKHByb3BzLmRvbWFpbk5hbWUpXG4gICAgY29uc3QgYWx0ZXJuYXRpdmVEb21haW5OYW1lcyA9IHByb3BzLmFsdGVybmF0aXZlRG9tYWluTmFtZXM/Lm1hcCgoYWx0ZXJuYXRpdmVEb21haW5OYW1lKSA9PlxuICAgICAgdGhpcy5ub3JtYWxpemVEb21haW5OYW1lKGFsdGVybmF0aXZlRG9tYWluTmFtZSlcbiAgICApXG4gICAgY29uc3QgYWxsRG9tYWlucyA9IFtkb21haW5OYW1lLCAuLi4oYWx0ZXJuYXRpdmVEb21haW5OYW1lcyA/PyBbXSldXG5cbiAgICB0aGlzLmNlcnRpZmljYXRlUmVnaW9uID0gcHJvcHMuY2VydGlmaWNhdGVSZWdpb24gPz8gdGhpcy5zdGFjay5yZWdpb25cbiAgICB0aGlzLnRhZ3MgPSBuZXcgY2RrLlRhZ01hbmFnZXIoY2RrLlRhZ1R5cGUuTUFQLCBDRVJUVElGSUNBVEVfUkVTT1VSQ0VfVFlQRSlcbiAgICB0aGlzLnJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1lcblxuICAgIGNvbnN0IHJlcXVlc3RvckZ1bmN0aW9uID0gbmV3IENlcnRpZmljYXRlUmVxdWVzdG9yRnVuY3Rpb24odGhpcywgJ1JlcXVlc3RvckZ1bmN0aW9uJywge1xuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDE0KSxcbiAgICAgIHJvbGU6IHByb3BzLmN1c3RvbVJlc291cmNlUm9sZSxcbiAgICB9KVxuXG4gICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnYWNtOlJlcXVlc3RDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgJ2FjbTpEZXNjcmliZUNlcnRpZmljYXRlJyxcbiAgICAgICAgICAnYWNtOkRlbGV0ZUNlcnRpZmljYXRlJyxcbiAgICAgICAgICAnYWNtOkFkZFRhZ3NUb0NlcnRpZmljYXRlJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgY29uc3QgZG9tYWluc1RvWm9uZXMgPSBtYXRjaE5hbWVzVG9ab25lcyhcbiAgICAgIHByb3BzLnZhbGlkYXRpb25Ib3N0ZWRab25lcy5tYXAoKHpvbmUpID0+IHpvbmUuaG9zdGVkWm9uZS56b25lTmFtZSksXG4gICAgICBhbGxEb21haW5zLFxuICAgICAgKGRvbWFpbikgPT4gZG9tYWluXG4gICAgKVxuICAgIGNvbnN0IGhvc3RlZFpvbmVzV2l0aFJvbGUgPSBwcm9wcy52YWxpZGF0aW9uSG9zdGVkWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLnZhbGlkYXRpb25Sb2xlICE9PSB1bmRlZmluZWQpXG4gICAgY29uc3QgaG9zdGVkWm9uZXNXaXRob3V0Um9sZSA9IHByb3BzLnZhbGlkYXRpb25Ib3N0ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUudmFsaWRhdGlvblJvbGUgPT09IHVuZGVmaW5lZClcblxuICAgIGhvc3RlZFpvbmVzV2l0aFJvbGUuZm9yRWFjaCgoem9uZSkgPT4ge1xuICAgICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnc3RzOkFzc3VtZVJvbGUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFt6b25lLnZhbGlkYXRpb25Sb2xlIS5yb2xlQXJuXSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9KVxuXG4gICAgaG9zdGVkWm9uZXNXaXRob3V0Um9sZS5mb3JFYWNoKCh6b25lKSA9PiB7XG4gICAgICByZXF1ZXN0b3JGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ3JvdXRlNTM6R2V0Q2hhbmdlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIGNvbnN0IGRvbWFpbk5hbWVzID0gZG9tYWluc1RvWm9uZXNbem9uZS5ob3N0ZWRab25lLnpvbmVOYW1lXVxuICAgICAgaWYgKGRvbWFpbk5hbWVzICYmIGRvbWFpbk5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVxdWVzdG9yRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsncm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHMnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ub3JtYWxpemVIb3N0ZWRab25lSWQoem9uZS5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCl9YF0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICdGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzJzoge1xuICAgICAgICAgICAgICAgICdyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1JlY29yZFR5cGVzJzogWydDTkFNRSddLFxuICAgICAgICAgICAgICAgICdyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c0FjdGlvbnMnOiBbJ1VQU0VSVCcsICdERUxFVEUnXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ0ZvckFsbFZhbHVlczpTdHJpbmdMaWtlJzoge1xuICAgICAgICAgICAgICAgICdyb3V0ZTUzOkNoYW5nZVJlc291cmNlUmVjb3JkU2V0c05vcm1hbGl6ZWRSZWNvcmROYW1lcyc6IGRvbWFpbk5hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndpbGRjYXJkRG9tYWluTmFtZShgRG9tYWluV2lsZGNhcmQke3pvbmUuaG9zdGVkWm9uZS5ub2RlLmlkfSR7aW5kZXh9YCwgbmFtZSlcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCByZXF1ZXN0b3JQcm92aWRlciA9IG5ldyBjdXN0b21fcmVzb3VyY2VzLlByb3ZpZGVyKHRoaXMsICdSZXF1ZXN0b3JQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiByZXF1ZXN0b3JGdW5jdGlvbixcbiAgICB9KVxuXG4gICAgY29uc3QgdmFsaWRhdGlvbkhvc3RlZFpvbmVzID0gcHJvcHMudmFsaWRhdGlvbkhvc3RlZFpvbmVzLm1hcDxbc3RyaW5nLCBWYWxpZGF0aW9uSG9zdGVkWm9uZVByb3BlcnRpZXNdPigoem9uZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllczogVmFsaWRhdGlvbkhvc3RlZFpvbmVQcm9wZXJ0aWVzID0ge1xuICAgICAgICBEb21haW5OYW1lOiB0aGlzLm5vcm1hbGl6ZURvbWFpbk5hbWUoem9uZS5ob3N0ZWRab25lLnpvbmVOYW1lKSxcbiAgICAgICAgSG9zdGVkWm9uZUlkOiB0aGlzLm5vcm1hbGl6ZUhvc3RlZFpvbmVJZCh6b25lLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkKSxcbiAgICAgICAgVmFsaWRhdGlvblJvbGVBcm46IHpvbmUudmFsaWRhdGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICAgIFZhbGlkYXRpb25FeHRlcm5hbElkOiB6b25lLnZhbGlkYXRpb25FeHRlcm5hbElkLFxuICAgICAgfVxuICAgICAgcmV0dXJuIFtwcm9wZXJ0aWVzLkRvbWFpbk5hbWUsIHByb3BlcnRpZXNdXG4gICAgfSlcblxuICAgIGNvbnN0IHByb3BlcnRpZXM6IFByb3BlcnRpZXMgPSB7XG4gICAgICBEb21haW5OYW1lOiBkb21haW5OYW1lLFxuICAgICAgQWx0ZXJuYXRpdmVEb21haW5OYW1lczogYWx0ZXJuYXRpdmVEb21haW5OYW1lcyxcbiAgICAgIFZhbGlkYXRpb25Ib3N0ZWRab25lczogT2JqZWN0LmZyb21FbnRyaWVzKHZhbGlkYXRpb25Ib3N0ZWRab25lcyksXG4gICAgICBDZXJ0aWZpY2F0ZVJlZ2lvbjogdGhpcy5jZXJ0aWZpY2F0ZVJlZ2lvbixcbiAgICAgIENsZWFudXBWYWxpZGF0aW9uUmVjb3JkczogYm9vbGVhblRvU3RyaW5nKHByb3BzLmNsZWFudXBWYWxpZGF0aW9uUmVjb3JkcyA/PyB0cnVlKSxcbiAgICAgIFRyYW5zcGFyZW5jeUxvZ2dpbmdFbmFibGVkOiBib29sZWFuVG9TdHJpbmcocHJvcHMudHJhbnNwYXJlbmN5TG9nZ2luZ0VuYWJsZWQgPz8gdHJ1ZSksXG4gICAgICBUYWdzOiBjZGsuTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnRhZ3MucmVuZGVyVGFncygpIH0pIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICAgIFJlbW92YWxQb2xpY3k6IGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHRoaXMucmVtb3ZhbFBvbGljeSB9KSxcbiAgICB9XG5cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1JlcXVlc3RvclJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiByZXF1ZXN0b3JQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IEROU19WQUxJREFURURfQ0VSVElGSUNBVEVfVFlQRSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgfSlcblxuICAgIHRoaXMuY2VydGlmaWNhdGVBcm4gPSBjZXJ0aWZpY2F0ZS5nZXRBdHRTdHJpbmcoJ0FybicpXG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT5cbiAgICAgICAgdGhpcy52YWxpZGF0ZURvbWFpbnNUb0hvc3RlZFpvbmVzKFxuICAgICAgICAgIGFsbERvbWFpbnMsXG4gICAgICAgICAgdmFsaWRhdGlvbkhvc3RlZFpvbmVzLm1hcCgoW3pvbmVOYW1lLCBfXSkgPT4gem9uZU5hbWUpXG4gICAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIG1ldHJpY0RheXNUb0V4cGlyeShwcm9wcz86IGNkay5hd3NfY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zIHwgdW5kZWZpbmVkKTogY2RrLmF3c19jbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IGNkay5EdXJhdGlvbi5kYXlzKDEpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IENlcnRpZmljYXRlQXJuOiB0aGlzLmNlcnRpZmljYXRlQXJuIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnRGF5c1RvRXhwaXJ5JyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9DZXJ0aWZpY2F0ZU1hbmFnZXInLFxuICAgICAgcmVnaW9uOiB0aGlzLmNlcnRpZmljYXRlUmVnaW9uLFxuICAgICAgc3RhdGlzdGljOiBjbG91ZHdhdGNoLlN0YXRzLk1JTklNVU0sXG4gICAgfSlcbiAgfVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5KTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmFsUG9saWN5ID0gcG9saWN5XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZURvbWFpbk5hbWUoZG9tYWluTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZChkb21haW5OYW1lKSkge1xuICAgICAgcmV0dXJuIGRvbWFpbk5hbWVcbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuRG9tYWluTmFtZShkb21haW5OYW1lKVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVIb3N0ZWRab25lSWQoaG9zdGVkWm9uZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGhvc3RlZFpvbmVJZCkpIHtcbiAgICAgIHJldHVybiBob3N0ZWRab25lSWRcbiAgICB9XG4gICAgcmV0dXJuIGNsZWFuSG9zdGVkWm9uZUlkKGhvc3RlZFpvbmVJZClcbiAgfVxuXG4gIHByaXZhdGUgd2lsZGNhcmREb21haW5OYW1lKGlkOiBzdHJpbmcsIGRvbWFpbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBjZGsuRm4uc3BsaXQoJy4nLCBkb21haW5OYW1lKVxuICAgIGNvbnN0IGZpcnN0ID0gY2RrLkZuLnNlbGVjdCgwLCBwYXJ0cylcbiAgICBjb25zdCBpc1dpbGRjYXJkID0gbmV3IGNkay5DZm5Db25kaXRpb24odGhpcywgYElzJHtpZH1gLCB7XG4gICAgICBleHByZXNzaW9uOiBjZGsuRm4uY29uZGl0aW9uRXF1YWxzKGZpcnN0LCAnKicpLFxuICAgIH0pXG4gICAgcmV0dXJuIGNkay5Gbi5jb25kaXRpb25JZihpc1dpbGRjYXJkLmxvZ2ljYWxJZCwgZG9tYWluTmFtZSwgYCouJHtkb21haW5OYW1lfWApLnRvU3RyaW5nKClcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEb21haW5zVG9Ib3N0ZWRab25lcyhkb21haW5OYW1lczogc3RyaW5nW10sIHpvbmVOYW1lczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBkb21haW5OYW1lIG9mIGRvbWFpbk5hbWVzKSB7XG4gICAgICBjb25zdCByZXNvbHZhYmxlRG9tYWluTmFtZSA9ICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGRvbWFpbk5hbWUpXG4gICAgICBjb25zdCByZXNvbHZhYmxlWm9uZU5hbWVzID0gIXpvbmVOYW1lcy5zb21lKCh6b25lTmFtZSkgPT4gY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh6b25lTmFtZSkpXG4gICAgICBpZiAocmVzb2x2YWJsZURvbWFpbk5hbWUgJiYgcmVzb2x2YWJsZVpvbmVOYW1lcyAmJiAhem9uZU5hbWVzLnNvbWUoKHpvbmVOYW1lKSA9PiBkb21haW5OYW1lLmVuZHNXaXRoKHpvbmVOYW1lKSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goYERvbWFpbiAke2RvbWFpbk5hbWV9IGlzIG5vdCBwcm92aWRlZCB3aXRoIGF1dGhvcml0YXRpdmUgaG9zdGVkIHpvbmVgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3JzXG4gIH1cbn1cbiJdfQ==
|
package/lib/utils.js
CHANGED
|
@@ -94,4 +94,4 @@ const tryFor = async (maxSeconds, timeoutError, fn) => {
|
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
96
|
exports.tryFor = tryFor;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQU8sTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFBekUsUUFBQSxLQUFLLFNBQW9FO0FBRS9FLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUU7SUFDeEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO0FBQ2pDLENBQUMsQ0FBQTtBQUZZLFFBQUEsZUFBZSxtQkFFM0I7QUFFTSxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFO0lBQ3hELE9BQU8sS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDeEMsQ0FBQyxDQUFBO0FBRlksUUFBQSxlQUFlLG1CQUUzQjtBQUVNLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUU7SUFDdEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRlksUUFBQSxjQUFjLGtCQUUxQjtBQUVNLE1BQU0sWUFBWSxHQUFHLENBQUksTUFBVyxFQUFFLE1BQVcsRUFBVyxFQUFFO0lBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ2pELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ2xE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ekMsR0FBRyxNQUFNO1lBQ1QsQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhO1NBQzNCLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQTtJQUNELE9BQU8sT0FBTyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMvQyxDQUFDLENBQUE7QUEzQlksUUFBQSxpQkFBaUIscUJBMkI3QjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBSyxVQUFrQixFQUFFLFlBQW9CLEVBQUUsRUFBMkIsRUFBYyxFQUFFO0lBQ25ILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUM1QixpREFBaUQ7SUFDakQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLFVBQVUsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFBO1FBQ3pCLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BCLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLE1BQU0sSUFBQSxhQUFLLEVBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO0lBQ3JELENBQUM7QUFDSCxDQUFDLENBQUE7QUFkWSxRQUFBLE1BQU0sVUFjbEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKVxuXG5leHBvcnQgY29uc3QgYm9vbGVhblRvU3RyaW5nID0gKHZhbHVlOiBib29sZWFuKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJ1xufVxuXG5leHBvcnQgY29uc3Qgc3RyaW5nVG9Cb29sZWFuID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHZhbHVlID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2Vcbn1cblxuZXhwb3J0IGNvbnN0IG9iamVjdFRvU3RyaW5nID0gKHZhbHVlOiBvYmplY3QpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHVuZGVmaW5lZCwgMilcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnRhaW5zU2FtZSA9IDxUPihhcnJheTE6IFRbXSwgYXJyYXkyOiBUW10pOiBib29sZWFuID0+IHtcbiAgaWYgKGFycmF5MS5sZW5ndGggIT09IGFycmF5Mi5sZW5ndGgpIHJldHVybiBmYWxzZVxuICByZXR1cm4gYXJyYXkxLmV2ZXJ5KCh2MSkgPT4gYXJyYXkyLmluY2x1ZGVzKHYxKSlcbn1cblxuZXhwb3J0IGNvbnN0IG9yZGVyQnlTaWduaWZpY2FuY2UgPSAoZG9tYWluczogc3RyaW5nW10pOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGNvcHkgPSBbLi4uZG9tYWluc11cbiAgY29weS5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgYWMgPSBjbGVhbkRvbWFpbk5hbWUoYSkuc3BsaXQoJy4nKS5sZW5ndGhcbiAgICBjb25zdCBiYyA9IGNsZWFuRG9tYWluTmFtZShiKS5zcGxpdCgnLicpLmxlbmd0aFxuICAgIGlmIChhYyA+IGJjKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgaWYgKGFjIDwgYmMpIHtcbiAgICAgIHJldHVybiAxXG4gICAgfVxuICAgIHJldHVybiAwXG4gIH0pXG4gIHJldHVybiBjb3B5XG59XG5cbmV4cG9ydCBjb25zdCBjbGVhbkRvbWFpbk5hbWUgPSAoZG9tYWluTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKGRvbWFpbk5hbWUuZW5kc1dpdGgoJy4nKSkge1xuICAgIHJldHVybiBkb21haW5OYW1lLnNsaWNlKDAsIC0xKVxuICB9XG4gIHJldHVybiBkb21haW5OYW1lXG59XG5cbmV4cG9ydCBjb25zdCBjbGVhbkhvc3RlZFpvbmVJZCA9IChob3N0ZWRab25lSWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBob3N0ZWRab25lSWQucmVwbGFjZSgvXlxcL2hvc3RlZHpvbmVcXC8vLCAnJylcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFuQ2hhbmdlSWQgPSAoY2hhbmdlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBjaGFuZ2VJZC5yZXBsYWNlKCcvY2hhbmdlLycsICcnKVxufVxuXG5leHBvcnQgY29uc3QgbWF0Y2hOYW1lc1RvWm9uZXMgPSA8VD4oXG4gIHpvbmVOYW1lczogc3RyaW5nW10sXG4gIHJlY29yZHM6IFRbXSxcbiAgbmFtZTogKHJlY29yZDogVCkgPT4gc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBUW10+ID0+IHtcbiAgY29uc3Qgb3JkZXJlZFpvbmVOYW1lcyA9IG9yZGVyQnlTaWduaWZpY2FuY2Uoem9uZU5hbWVzKVxuICBjb25zdCBtYXRjaGVyID0gKHpvbmVzOiBzdHJpbmdbXSwgaXRlbXM6IFRbXSwgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBUW10+KTogUmVjb3JkPHN0cmluZywgVFtdPiA9PiB7XG4gICAgY29uc3QgW2ZpcnN0Wm9uZSwgLi4ucmVzdFpvbmVzXSA9IHpvbmVzXG4gICAgaWYgKCFmaXJzdFpvbmUpIHtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hpbmdJdGVtczogVFtdID0gW11cbiAgICBjb25zdCB1bm1hdGNoaW5nSXRlbXM6IFRbXSA9IFtdXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkUmVjb3JkTmFtZSA9IGNsZWFuRG9tYWluTmFtZShuYW1lKGl0ZW0pKVxuICAgICAgaWYgKG5vcm1hbGl6ZWRSZWNvcmROYW1lLmVuZHNXaXRoKGNsZWFuRG9tYWluTmFtZShmaXJzdFpvbmUpKSkge1xuICAgICAgICBtYXRjaGluZ0l0ZW1zLnB1c2goaXRlbSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVubWF0Y2hpbmdJdGVtcy5wdXNoKGl0ZW0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRjaGVyKHJlc3Rab25lcywgdW5tYXRjaGluZ0l0ZW1zLCB7XG4gICAgICAuLi5yZXN1bHQsXG4gICAgICBbZmlyc3Rab25lXTogbWF0Y2hpbmdJdGVtcyxcbiAgICB9KVxuICB9XG4gIHJldHVybiBtYXRjaGVyKG9yZGVyZWRab25lTmFtZXMsIHJlY29yZHMsIHt9KVxufVxuXG5leHBvcnQgY29uc3QgdHJ5Rm9yID0gYXN5bmMgPFQ+KG1heFNlY29uZHM6IG51bWJlciwgdGltZW91dEVycm9yOiBzdHJpbmcsIGZuOiAoKSA9PiBQcm9taXNlPFQgfCBudWxsPik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgZm9yIChsZXQgaSA9IDA7IHRydWU7IGkrKykge1xuICAgIGlmIChEYXRlLm5vdygpID4gc3RhcnRUaW1lICsgbWF4U2Vjb25kcyAqIDEwMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aW1lb3V0RXJyb3IpXG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKClcbiAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIGNvbnN0IGJhc2UgPSBNYXRoLnBvdygyLCBpKVxuICAgIGF3YWl0IHNsZWVwKE1hdGgucmFuZG9tKCkgKiBiYXNlICogNTAgKyBiYXNlICogMTUwKVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -42,15 +42,15 @@
|
|
|
42
42
|
"@aws-sdk/client-route-53": "^3.0.0",
|
|
43
43
|
"@aws-sdk/client-sts": "^3.0.0",
|
|
44
44
|
"@aws-sdk/types": "^3.0.0",
|
|
45
|
-
"@types/aws-lambda": "^8.10.
|
|
45
|
+
"@types/aws-lambda": "^8.10.143",
|
|
46
46
|
"@types/jest": "^29.5.12",
|
|
47
47
|
"@types/node": "^18",
|
|
48
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
49
|
-
"@typescript-eslint/parser": "^
|
|
48
|
+
"@typescript-eslint/eslint-plugin": "^7",
|
|
49
|
+
"@typescript-eslint/parser": "^7",
|
|
50
50
|
"aws-cdk-lib": "2.83.1",
|
|
51
51
|
"aws-lambda": "^1.0.7",
|
|
52
52
|
"constructs": "10.0.5",
|
|
53
|
-
"esbuild": "^0.
|
|
53
|
+
"esbuild": "^0.23.0",
|
|
54
54
|
"eslint": "^8",
|
|
55
55
|
"eslint-config-prettier": "^8.10.0",
|
|
56
56
|
"eslint-import-resolver-typescript": "^3.6.1",
|
|
@@ -58,17 +58,17 @@
|
|
|
58
58
|
"eslint-plugin-prettier": "^4.2.1",
|
|
59
59
|
"jest": "^29.7.0",
|
|
60
60
|
"jest-junit": "^15",
|
|
61
|
-
"jsii": "~5.
|
|
62
|
-
"jsii-diff": "^1.
|
|
61
|
+
"jsii": "~5.4.0",
|
|
62
|
+
"jsii-diff": "^1.102.0",
|
|
63
63
|
"jsii-docgen": "^8.0.56",
|
|
64
|
-
"jsii-pacmak": "^1.
|
|
65
|
-
"jsii-rosetta": "~5.
|
|
64
|
+
"jsii-pacmak": "^1.102.0",
|
|
65
|
+
"jsii-rosetta": "~5.4.0",
|
|
66
66
|
"prettier": "^2.8.8",
|
|
67
|
-
"projen": "^0.
|
|
67
|
+
"projen": "^0.85.0",
|
|
68
68
|
"standard-version": "^9",
|
|
69
|
-
"ts-jest": "^29.
|
|
69
|
+
"ts-jest": "^29.2.4",
|
|
70
70
|
"ts-node": "^10.9.2",
|
|
71
|
-
"typescript": "^5.4
|
|
71
|
+
"typescript": "^5.5.4"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"aws-cdk-lib": "^2.83.1",
|
|
@@ -87,11 +87,14 @@
|
|
|
87
87
|
"publishConfig": {
|
|
88
88
|
"access": "public"
|
|
89
89
|
},
|
|
90
|
-
"version": "0.1.
|
|
90
|
+
"version": "0.1.5",
|
|
91
91
|
"jest": {
|
|
92
|
+
"coverageProvider": "v8",
|
|
92
93
|
"testMatch": [
|
|
93
|
-
"<rootDir
|
|
94
|
-
"<rootDir
|
|
94
|
+
"<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
|
|
95
|
+
"<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)",
|
|
96
|
+
"<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)",
|
|
97
|
+
"<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"
|
|
95
98
|
],
|
|
96
99
|
"clearMocks": true,
|
|
97
100
|
"collectCoverage": true,
|