@cdk_utils/iam 1.29.0 → 1.30.0
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 +2 -2
- package/lib/generated/index.d.ts +1 -0
- package/lib/generated/index.js +7 -6
- package/lib/generated/services/a2c.js +1 -1
- package/lib/generated/services/a4b.js +3 -3
- package/lib/generated/services/access-analyzer.js +4 -4
- package/lib/generated/services/account-access.js +4 -4
- package/lib/generated/services/account.js +4 -4
- package/lib/generated/services/acm-pca.js +4 -4
- package/lib/generated/services/acm.js +4 -4
- package/lib/generated/services/aco-automation.js +4 -4
- package/lib/generated/services/action-recommendations.js +1 -1
- package/lib/generated/services/activate.js +1 -1
- package/lib/generated/services/agent-registry.js +4 -4
- package/lib/generated/services/agentaccess-mcp.js +2 -2
- package/lib/generated/services/aidevops.js +4 -4
- package/lib/generated/services/aiops.js +4 -4
- package/lib/generated/services/airflow-serverless.js +4 -4
- package/lib/generated/services/airflow.js +4 -4
- package/lib/generated/services/amplify.js +4 -4
- package/lib/generated/services/amplifybackend.js +3 -3
- package/lib/generated/services/amplifyuibuilder.js +4 -4
- package/lib/generated/services/aoss.js +4 -4
- package/lib/generated/services/apigateway.js +4 -4
- package/lib/generated/services/app-integrations.js +4 -4
- package/lib/generated/services/appconfig.js +4 -4
- package/lib/generated/services/appfabric.js +4 -4
- package/lib/generated/services/appflow.js +4 -4
- package/lib/generated/services/application-autoscaling.js +4 -4
- package/lib/generated/services/application-signals-mcp.js +3 -3
- package/lib/generated/services/application-signals.js +4 -4
- package/lib/generated/services/application-transformation.js +1 -1
- package/lib/generated/services/applicationinsights.js +3 -3
- package/lib/generated/services/appmesh-preview.js +2 -2
- package/lib/generated/services/appmesh.js +4 -4
- package/lib/generated/services/apprunner.js +4 -4
- package/lib/generated/services/appstream.js +4 -4
- package/lib/generated/services/appstudio.js +2 -2
- package/lib/generated/services/appsync.js +4 -4
- package/lib/generated/services/apptest.js +3 -3
- package/lib/generated/services/aps.js +4 -4
- package/lib/generated/services/arc-region-switch.js +4 -4
- package/lib/generated/services/arc-zonal-shift.js +4 -4
- package/lib/generated/services/arsenal.js +1 -1
- package/lib/generated/services/artifact.js +4 -4
- package/lib/generated/services/athena.js +4 -4
- package/lib/generated/services/auditmanager.js +4 -4
- package/lib/generated/services/autoscaling-plans.js +2 -2
- package/lib/generated/services/autoscaling.js +4 -4
- package/lib/generated/services/aws-external-anthropic.js +3 -3
- package/lib/generated/services/aws-marketplace-management.js +1 -1
- package/lib/generated/services/aws-marketplace.js +4 -4
- package/lib/generated/services/aws-portal.js +1 -1
- package/lib/generated/services/awsconnector.js +1 -1
- package/lib/generated/services/b2bi.js +4 -4
- package/lib/generated/services/backup-gateway.js +4 -4
- package/lib/generated/services/backup-search.js +4 -4
- package/lib/generated/services/backup-storage.js +1 -1
- package/lib/generated/services/backup.js +4 -4
- package/lib/generated/services/batch.js +4 -4
- package/lib/generated/services/bcm-dashboards.js +4 -4
- package/lib/generated/services/bcm-data-exports.js +4 -4
- package/lib/generated/services/bcm-pricing-calculator.js +4 -4
- package/lib/generated/services/bcm-recommended-actions.js +2 -2
- package/lib/generated/services/bedrock-agentcore.js +4 -4
- package/lib/generated/services/bedrock-mantle.js +3 -3
- package/lib/generated/services/bedrock-websearch.js +2 -2
- package/lib/generated/services/bedrock.js +4 -4
- package/lib/generated/services/billing.d.ts +4 -0
- package/lib/generated/services/billing.js +12 -5
- package/lib/generated/services/billingconductor.js +4 -4
- package/lib/generated/services/braket.js +4 -4
- package/lib/generated/services/budgets.js +4 -4
- package/lib/generated/services/bugbust.js +3 -3
- package/lib/generated/services/cases.js +4 -4
- package/lib/generated/services/cassandra.js +4 -4
- package/lib/generated/services/ce.js +4 -4
- package/lib/generated/services/chatbot.js +4 -4
- package/lib/generated/services/chime.js +4 -4
- package/lib/generated/services/cleanrooms-ml.js +4 -4
- package/lib/generated/services/cleanrooms.js +4 -4
- package/lib/generated/services/cloud9.js +4 -4
- package/lib/generated/services/clouddirectory.js +3 -3
- package/lib/generated/services/cloudformation.js +4 -4
- package/lib/generated/services/cloudfront-keyvaluestore.js +3 -3
- package/lib/generated/services/cloudfront.js +4 -4
- package/lib/generated/services/cloudhsm.js +4 -4
- package/lib/generated/services/cloudsearch.js +3 -3
- package/lib/generated/services/cloudshell.js +3 -3
- package/lib/generated/services/cloudtrail-data.js +4 -4
- package/lib/generated/services/cloudtrail.js +4 -4
- package/lib/generated/services/cloudwatch.js +8 -5
- package/lib/generated/services/codeartifact.js +4 -4
- package/lib/generated/services/codebuild.js +4 -4
- package/lib/generated/services/codecatalyst.js +4 -4
- package/lib/generated/services/codecommit.js +4 -4
- package/lib/generated/services/codeconnections.js +4 -4
- package/lib/generated/services/codedeploy-commands-secure.js +1 -1
- package/lib/generated/services/codedeploy.js +4 -4
- package/lib/generated/services/codeguru-profiler.js +4 -4
- package/lib/generated/services/codeguru-reviewer.js +4 -4
- package/lib/generated/services/codeguru-security.js +4 -4
- package/lib/generated/services/codeguru.js +1 -1
- package/lib/generated/services/codepipeline.js +4 -4
- package/lib/generated/services/codestar-connections.js +4 -4
- package/lib/generated/services/codestar-notifications.js +4 -4
- package/lib/generated/services/codestar.js +3 -3
- package/lib/generated/services/codewhisperer.js +3 -3
- package/lib/generated/services/cognito-identity.js +4 -4
- package/lib/generated/services/cognito-idp.js +4 -4
- package/lib/generated/services/cognito-sync.js +3 -3
- package/lib/generated/services/comprehend.js +4 -4
- package/lib/generated/services/comprehendmedical.js +3 -3
- package/lib/generated/services/compute-optimizer.js +3 -3
- package/lib/generated/services/config.js +4 -4
- package/lib/generated/services/connect-campaigns.js +4 -4
- package/lib/generated/services/connect.js +4 -4
- package/lib/generated/services/consoleapp.js +2 -2
- package/lib/generated/services/consolidatedbilling.js +1 -1
- package/lib/generated/services/controlcatalog.js +3 -3
- package/lib/generated/services/controltower.js +4 -4
- package/lib/generated/services/cost-optimization-hub.js +2 -2
- package/lib/generated/services/cur.js +4 -4
- package/lib/generated/services/customer-verification.js +1 -1
- package/lib/generated/services/databrew.js +4 -4
- package/lib/generated/services/dataexchange.js +4 -4
- package/lib/generated/services/datapipeline.js +4 -4
- package/lib/generated/services/datasync.js +4 -4
- package/lib/generated/services/datazone.js +4 -4
- package/lib/generated/services/dax.js +4 -4
- package/lib/generated/services/dbqms.js +1 -1
- package/lib/generated/services/deadline.js +4 -4
- package/lib/generated/services/detective.js +4 -4
- package/lib/generated/services/devicefarm.js +4 -4
- package/lib/generated/services/devops-guru.js +4 -4
- package/lib/generated/services/directconnect.js +4 -4
- package/lib/generated/services/discovery.js +3 -3
- package/lib/generated/services/dlm.js +4 -4
- package/lib/generated/services/dms.js +4 -4
- package/lib/generated/services/docdb-elastic.js +4 -4
- package/lib/generated/services/drs.js +4 -4
- package/lib/generated/services/ds-data.js +4 -4
- package/lib/generated/services/ds.js +4 -4
- package/lib/generated/services/dsql.js +4 -4
- package/lib/generated/services/dynamodb.js +4 -4
- package/lib/generated/services/ebs.js +4 -4
- package/lib/generated/services/ec2-instance-connect.js +4 -4
- package/lib/generated/services/ec2.js +4 -4
- package/lib/generated/services/ec2messages.js +2 -2
- package/lib/generated/services/ecr-public.js +4 -4
- package/lib/generated/services/ecr.js +4 -4
- package/lib/generated/services/ecs-mcp.js +1 -1
- package/lib/generated/services/ecs.js +4 -4
- package/lib/generated/services/eks-auth.js +4 -4
- package/lib/generated/services/eks-mcp.js +1 -1
- package/lib/generated/services/eks.js +4 -4
- package/lib/generated/services/elasticache.js +4 -4
- package/lib/generated/services/elasticbeanstalk.js +4 -4
- package/lib/generated/services/elasticfilesystem.js +4 -4
- package/lib/generated/services/elasticloadbalancing.js +4 -4
- package/lib/generated/services/elasticmapreduce.js +4 -4
- package/lib/generated/services/elastictranscoder.js +2 -2
- package/lib/generated/services/elemental-activations.js +1 -1
- package/lib/generated/services/elemental-appliances-software.js +2 -2
- package/lib/generated/services/elemental-inference.js +4 -4
- package/lib/generated/services/elemental-support-cases.js +3 -3
- package/lib/generated/services/elemental-support-content.js +1 -1
- package/lib/generated/services/emr-containers.js +4 -4
- package/lib/generated/services/emr-serverless.js +4 -4
- package/lib/generated/services/entityresolution.js +4 -4
- package/lib/generated/services/es.js +4 -4
- package/lib/generated/services/events.d.ts +219 -0
- package/lib/generated/services/events.js +243 -5
- package/lib/generated/services/eventsbilltoaws.js +3 -3
- package/lib/generated/services/evidently.js +3 -3
- package/lib/generated/services/evs.js +4 -4
- package/lib/generated/services/execute-api.js +4 -4
- package/lib/generated/services/finops-agent.js +1 -1
- package/lib/generated/services/finspace-api.js +3 -3
- package/lib/generated/services/finspace.js +4 -4
- package/lib/generated/services/firehose.js +4 -4
- package/lib/generated/services/fis.js +4 -4
- package/lib/generated/services/fms.js +4 -4
- package/lib/generated/services/forecast.js +4 -4
- package/lib/generated/services/frauddetector.js +4 -4
- package/lib/generated/services/freertos.js +3 -3
- package/lib/generated/services/freetier.js +2 -2
- package/lib/generated/services/fsx.js +4 -4
- package/lib/generated/services/gamelift.js +4 -4
- package/lib/generated/services/gameliftstreams.js +4 -4
- package/lib/generated/services/geo-maps.js +3 -3
- package/lib/generated/services/geo-places.js +3 -3
- package/lib/generated/services/geo-routes.js +3 -3
- package/lib/generated/services/geo.js +4 -4
- package/lib/generated/services/glacier.js +4 -4
- package/lib/generated/services/globalaccelerator.js +4 -4
- package/lib/generated/services/glue.js +4 -4
- package/lib/generated/services/grafana.js +4 -4
- package/lib/generated/services/greengrass.js +4 -4
- package/lib/generated/services/groundstation.js +4 -4
- package/lib/generated/services/groundtruthlabeling.js +1 -1
- package/lib/generated/services/guardduty.js +4 -4
- package/lib/generated/services/health-agent.js +4 -4
- package/lib/generated/services/health.js +4 -4
- package/lib/generated/services/healthlake.js +4 -4
- package/lib/generated/services/honeycode.js +2 -2
- package/lib/generated/services/iam.js +4 -4
- package/lib/generated/services/identity-sync.js +2 -2
- package/lib/generated/services/identitystore-auth.js +1 -1
- package/lib/generated/services/identitystore.js +4 -4
- package/lib/generated/services/imagebuilder.js +4 -4
- package/lib/generated/services/importexport.js +2 -2
- package/lib/generated/services/inspector-scan.js +2 -2
- package/lib/generated/services/inspector.js +2 -2
- package/lib/generated/services/inspector2-telemetry.js +1 -1
- package/lib/generated/services/inspector2.js +4 -4
- package/lib/generated/services/interconnect.js +4 -4
- package/lib/generated/services/internetmonitor.js +4 -4
- package/lib/generated/services/invoicing.js +4 -4
- package/lib/generated/services/iot-device-tester.js +1 -1
- package/lib/generated/services/iot.js +4 -4
- package/lib/generated/services/iotanalytics.js +3 -3
- package/lib/generated/services/iotdeviceadvisor.js +4 -4
- package/lib/generated/services/iotevents.js +3 -3
- package/lib/generated/services/iotfleethub.js +3 -3
- package/lib/generated/services/iotfleetwise.js +4 -4
- package/lib/generated/services/iotjobsdata.js +4 -4
- package/lib/generated/services/iotmanagedintegrations.js +4 -4
- package/lib/generated/services/iotsitewise.js +4 -4
- package/lib/generated/services/iottwinmaker.js +4 -4
- package/lib/generated/services/iotwireless.js +4 -4
- package/lib/generated/services/iq-permission.js +2 -2
- package/lib/generated/services/iq.js +2 -2
- package/lib/generated/services/ivs.js +4 -4
- package/lib/generated/services/ivschat.js +4 -4
- package/lib/generated/services/kafka-cluster.js +3 -3
- package/lib/generated/services/kafka.js +4 -4
- package/lib/generated/services/kafkaconnect.js +4 -4
- package/lib/generated/services/kendra-ranking.js +4 -4
- package/lib/generated/services/kendra.js +4 -4
- package/lib/generated/services/kinesis.d.ts +4 -0
- package/lib/generated/services/kinesis.js +12 -5
- package/lib/generated/services/kinesisanalytics.js +4 -4
- package/lib/generated/services/kinesisvideo.js +4 -4
- package/lib/generated/services/kms.js +4 -4
- package/lib/generated/services/lakeformation.js +3 -3
- package/lib/generated/services/lambda.js +4 -4
- package/lib/generated/services/launchwizard.js +4 -4
- package/lib/generated/services/lex.js +4 -4
- package/lib/generated/services/license-manager-linux-subscriptions.js +4 -4
- package/lib/generated/services/license-manager-user-subscriptions.js +4 -4
- package/lib/generated/services/license-manager.js +4 -4
- package/lib/generated/services/lightsail.js +4 -4
- package/lib/generated/services/logs.js +4 -4
- package/lib/generated/services/lookoutequipment.js +4 -4
- package/lib/generated/services/lookoutmetrics.js +3 -3
- package/lib/generated/services/lookoutvision.js +3 -3
- package/lib/generated/services/m2.js +4 -4
- package/lib/generated/services/machinelearning.js +3 -3
- package/lib/generated/services/macie2.js +4 -4
- package/lib/generated/services/managedblockchain-query.js +2 -2
- package/lib/generated/services/managedblockchain.js +4 -4
- package/lib/generated/services/mapcredits.js +2 -2
- package/lib/generated/services/marketplacecommerceanalytics.js +2 -2
- package/lib/generated/services/mechanicalturk.js +2 -2
- package/lib/generated/services/mediaconnect.js +4 -4
- package/lib/generated/services/mediaconvert.js +4 -4
- package/lib/generated/services/mediaimport.js +1 -1
- package/lib/generated/services/medialive.js +4 -4
- package/lib/generated/services/mediapackage-vod.js +4 -4
- package/lib/generated/services/mediapackage.js +4 -4
- package/lib/generated/services/mediapackagev2.js +4 -4
- package/lib/generated/services/mediastore.js +4 -4
- package/lib/generated/services/mediatailor.js +4 -4
- package/lib/generated/services/medical-imaging.js +4 -4
- package/lib/generated/services/memorydb.js +4 -4
- package/lib/generated/services/mgh.js +4 -4
- package/lib/generated/services/mgn.js +4 -4
- package/lib/generated/services/migrationhub-orchestrator.js +4 -4
- package/lib/generated/services/migrationhub-strategy.js +2 -2
- package/lib/generated/services/mobileanalytics.js +1 -1
- package/lib/generated/services/mobiletargeting.js +4 -4
- package/lib/generated/services/monitron.js +3 -3
- package/lib/generated/services/mpa.js +4 -4
- package/lib/generated/services/mq.js +4 -4
- package/lib/generated/services/neptune-db.js +4 -4
- package/lib/generated/services/neptune-graph.js +4 -4
- package/lib/generated/services/network-firewall.js +4 -4
- package/lib/generated/services/network-security-director.js +1 -1
- package/lib/generated/services/network-security-manager.d.ts +674 -0
- package/lib/generated/services/network-security-manager.js +778 -0
- package/lib/generated/services/networkflowmonitor.js +4 -4
- package/lib/generated/services/networkmanager-chat.js +1 -1
- package/lib/generated/services/networkmanager.js +4 -4
- package/lib/generated/services/networkmonitor.js +4 -4
- package/lib/generated/services/nimble.js +3 -3
- package/lib/generated/services/notifications-contacts.js +4 -4
- package/lib/generated/services/notifications.js +4 -4
- package/lib/generated/services/nova-act.js +3 -3
- package/lib/generated/services/oam.js +37 -20
- package/lib/generated/services/observabilityadmin.js +5 -8
- package/lib/generated/services/odb.js +4 -4
- package/lib/generated/services/omics.js +4 -4
- package/lib/generated/services/one.js +3 -3
- package/lib/generated/services/opensearch.js +3 -3
- package/lib/generated/services/opsworks-cm.js +2 -2
- package/lib/generated/services/opsworks.js +2 -2
- package/lib/generated/services/organizations.js +4 -4
- package/lib/generated/services/osis.js +4 -4
- package/lib/generated/services/outposts.js +4 -4
- package/lib/generated/services/panorama.js +3 -3
- package/lib/generated/services/partnercentral-account-management.js +2 -2
- package/lib/generated/services/partnercentral.js +4 -4
- package/lib/generated/services/payment-cryptography.js +4 -4
- package/lib/generated/services/payments.js +3 -3
- package/lib/generated/services/pca-connector-ad.js +4 -4
- package/lib/generated/services/pca-connector-scep.js +4 -4
- package/lib/generated/services/pcs.js +4 -4
- package/lib/generated/services/personalize.js +4 -4
- package/lib/generated/services/pi.js +4 -4
- package/lib/generated/services/pipes.js +4 -4
- package/lib/generated/services/polly.js +3 -3
- package/lib/generated/services/pricing.js +2 -2
- package/lib/generated/services/pricingplanmanager.js +3 -3
- package/lib/generated/services/private-networks.js +3 -3
- package/lib/generated/services/profile.js +4 -4
- package/lib/generated/services/proton.js +4 -4
- package/lib/generated/services/purchase-orders.js +3 -3
- package/lib/generated/services/q.js +3 -3
- package/lib/generated/services/qapps.js +4 -4
- package/lib/generated/services/qbusiness.js +4 -4
- package/lib/generated/services/qdeveloper.js +3 -3
- package/lib/generated/services/qldb.js +3 -3
- package/lib/generated/services/quicksight.js +4 -4
- package/lib/generated/services/ram.js +4 -4
- package/lib/generated/services/rbin.js +4 -4
- package/lib/generated/services/rds-data.js +4 -4
- package/lib/generated/services/rds-db.js +2 -2
- package/lib/generated/services/rds.js +4 -4
- package/lib/generated/services/redshift-data.js +4 -4
- package/lib/generated/services/redshift-serverless.js +4 -4
- package/lib/generated/services/redshift.js +4 -4
- package/lib/generated/services/refactor-spaces.js +4 -4
- package/lib/generated/services/rekognition.js +4 -4
- package/lib/generated/services/repostspace.js +4 -4
- package/lib/generated/services/researchstudio.js +1 -1
- package/lib/generated/services/resiliencehub.js +4 -4
- package/lib/generated/services/resource-explorer-2.js +4 -4
- package/lib/generated/services/resource-explorer.js +1 -1
- package/lib/generated/services/resource-groups.js +4 -4
- package/lib/generated/services/rhelkb.js +1 -1
- package/lib/generated/services/robomaker.js +3 -3
- package/lib/generated/services/rolesanywhere.js +4 -4
- package/lib/generated/services/route53-recovery-cluster.js +4 -4
- package/lib/generated/services/route53-recovery-control-config.js +4 -4
- package/lib/generated/services/route53-recovery-readiness.js +4 -4
- package/lib/generated/services/route53.js +4 -4
- package/lib/generated/services/route53domains.js +2 -2
- package/lib/generated/services/route53globalresolver.js +4 -4
- package/lib/generated/services/route53profiles.js +4 -4
- package/lib/generated/services/route53resolver.js +4 -4
- package/lib/generated/services/rtbfabric.js +4 -4
- package/lib/generated/services/rum.js +4 -4
- package/lib/generated/services/s3-object-lambda.js +3 -3
- package/lib/generated/services/s3-outposts.js +4 -4
- package/lib/generated/services/s3.js +4 -4
- package/lib/generated/services/s3express.js +3 -3
- package/lib/generated/services/s3files.js +4 -4
- package/lib/generated/services/s3tables.js +4 -4
- package/lib/generated/services/s3vectors.js +4 -4
- package/lib/generated/services/sagemaker-data-science-assistant.js +1 -1
- package/lib/generated/services/sagemaker-geospatial.js +4 -4
- package/lib/generated/services/sagemaker-mlflow.js +3 -3
- package/lib/generated/services/sagemaker-unified-studio-mcp.js +1 -1
- package/lib/generated/services/sagemaker.js +4 -4
- package/lib/generated/services/savingsplans.js +4 -4
- package/lib/generated/services/scheduler.js +4 -4
- package/lib/generated/services/schemas.js +4 -4
- package/lib/generated/services/scn.js +4 -4
- package/lib/generated/services/sdb.js +3 -3
- package/lib/generated/services/secretsmanager.js +4 -4
- package/lib/generated/services/security-ir.js +4 -4
- package/lib/generated/services/securityagent.js +4 -4
- package/lib/generated/services/securityhub.js +4 -4
- package/lib/generated/services/securitylake.js +4 -4
- package/lib/generated/services/serverlessrepo.js +4 -4
- package/lib/generated/services/servicecatalog.js +4 -4
- package/lib/generated/services/servicediscovery.js +4 -4
- package/lib/generated/services/serviceextract.js +1 -1
- package/lib/generated/services/servicequotas.js +4 -4
- package/lib/generated/services/ses.js +4 -4
- package/lib/generated/services/shield.js +4 -4
- package/lib/generated/services/signer.js +4 -4
- package/lib/generated/services/signin.js +4 -4
- package/lib/generated/services/simspaceweaver.js +3 -3
- package/lib/generated/services/sms-voice.js +4 -4
- package/lib/generated/services/sms.js +1 -1
- package/lib/generated/services/snow-device-management.js +4 -4
- package/lib/generated/services/snowball.js +2 -2
- package/lib/generated/services/sns.js +4 -4
- package/lib/generated/services/social-messaging.js +4 -4
- package/lib/generated/services/sqlworkbench.js +3 -3
- package/lib/generated/services/sqs.js +4 -4
- package/lib/generated/services/ssm-contacts.js +4 -4
- package/lib/generated/services/ssm-guiconnect.js +2 -2
- package/lib/generated/services/ssm-incidents.js +4 -4
- package/lib/generated/services/ssm-quicksetup.js +4 -4
- package/lib/generated/services/ssm-sap.js +4 -4
- package/lib/generated/services/ssm.js +4 -4
- package/lib/generated/services/ssmmessages.js +2 -2
- package/lib/generated/services/sso-directory.js +1 -1
- package/lib/generated/services/sso-oauth.js +3 -3
- package/lib/generated/services/sso.js +4 -4
- package/lib/generated/services/states.js +4 -4
- package/lib/generated/services/storagegateway.js +4 -4
- package/lib/generated/services/sts.js +4 -4
- package/lib/generated/services/support-console.js +1 -1
- package/lib/generated/services/support.js +2 -2
- package/lib/generated/services/supportapp.js +2 -2
- package/lib/generated/services/supportauthz.js +4 -4
- package/lib/generated/services/supportplans.js +1 -1
- package/lib/generated/services/sustainability.js +2 -2
- package/lib/generated/services/swf.js +4 -4
- package/lib/generated/services/synthetics.js +4 -4
- package/lib/generated/services/tag.js +2 -2
- package/lib/generated/services/tax.js +2 -2
- package/lib/generated/services/textract.js +4 -4
- package/lib/generated/services/thinclient.js +4 -4
- package/lib/generated/services/timestream-influxdb.js +4 -4
- package/lib/generated/services/timestream.js +4 -4
- package/lib/generated/services/tiros.js +1 -1
- package/lib/generated/services/tnb.js +4 -4
- package/lib/generated/services/transcribe.js +4 -4
- package/lib/generated/services/transfer.js +4 -4
- package/lib/generated/services/transform-custom.js +3 -3
- package/lib/generated/services/transform.js +3 -3
- package/lib/generated/services/translate.js +4 -4
- package/lib/generated/services/trustedadvisor.js +3 -3
- package/lib/generated/services/ts.js +3 -3
- package/lib/generated/services/user-subscriptions.js +2 -2
- package/lib/generated/services/uxc.js +2 -2
- package/lib/generated/services/vendor-insights.js +3 -3
- package/lib/generated/services/verified-access.js +1 -1
- package/lib/generated/services/verifiedpermissions.js +4 -4
- package/lib/generated/services/voiceid.js +4 -4
- package/lib/generated/services/vpc-lattice-svcs.js +3 -3
- package/lib/generated/services/vpc-lattice.js +4 -4
- package/lib/generated/services/vpce.js +2 -2
- package/lib/generated/services/waf-regional.js +4 -4
- package/lib/generated/services/waf.js +4 -4
- package/lib/generated/services/wafv2.js +4 -4
- package/lib/generated/services/wam.js +1 -1
- package/lib/generated/services/wellarchitected.js +4 -4
- package/lib/generated/services/wickr.js +4 -4
- package/lib/generated/services/wisdom.js +4 -4
- package/lib/generated/services/workdocs.js +3 -3
- package/lib/generated/services/worklink.js +3 -3
- package/lib/generated/services/workmail.js +4 -4
- package/lib/generated/services/workmailmessageflow.js +3 -3
- package/lib/generated/services/workspaces-instances.js +4 -4
- package/lib/generated/services/workspaces-web.js +4 -4
- package/lib/generated/services/workspaces.js +4 -4
- package/lib/generated/services/xray.js +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1,778 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b, _c, _d;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NetworkSecurityManagerConditions = exports.NetworkSecurityManagerOperations = exports.NetworkSecurityManagerResources = exports.NetworkSecurityManagerActions = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// AUTO-GENERATED FILE — DO NOT EDIT MANUALLY
|
|
8
|
+
// Generated from AWS Service Authorization Reference data
|
|
9
|
+
// Source: data/service-reference/network-security-manager.json
|
|
10
|
+
// Run `npx projen generate-constants` to regenerate
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* IAM action constants for the network-security-manager service.
|
|
14
|
+
*/
|
|
15
|
+
class NetworkSecurityManagerActions {
|
|
16
|
+
}
|
|
17
|
+
exports.NetworkSecurityManagerActions = NetworkSecurityManagerActions;
|
|
18
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
19
|
+
NetworkSecurityManagerActions[_a] = { fqn: "@cdk_utils/iam.network_security_manager.NetworkSecurityManagerActions", version: "1.30.0" };
|
|
20
|
+
/** The IAM service prefix. */
|
|
21
|
+
NetworkSecurityManagerActions.SERVICE_PREFIX = "network-security-manager";
|
|
22
|
+
/** [Write] network-security-manager:CreateDeployment */
|
|
23
|
+
NetworkSecurityManagerActions.CreateDeployment = "network-security-manager:CreateDeployment";
|
|
24
|
+
/** [Write] network-security-manager:CreateDeploymentSnapshot */
|
|
25
|
+
NetworkSecurityManagerActions.CreateDeploymentSnapshot = "network-security-manager:CreateDeploymentSnapshot";
|
|
26
|
+
/** [Write] network-security-manager:CreatePolicy */
|
|
27
|
+
NetworkSecurityManagerActions.CreatePolicy = "network-security-manager:CreatePolicy";
|
|
28
|
+
/** [Write] network-security-manager:CreatePolicySnapshot */
|
|
29
|
+
NetworkSecurityManagerActions.CreatePolicySnapshot = "network-security-manager:CreatePolicySnapshot";
|
|
30
|
+
/** [Write] network-security-manager:CreateRule */
|
|
31
|
+
NetworkSecurityManagerActions.CreateRule = "network-security-manager:CreateRule";
|
|
32
|
+
/** [Write] network-security-manager:CreateRuleSnapshot */
|
|
33
|
+
NetworkSecurityManagerActions.CreateRuleSnapshot = "network-security-manager:CreateRuleSnapshot";
|
|
34
|
+
/** [Write] network-security-manager:CreateScope */
|
|
35
|
+
NetworkSecurityManagerActions.CreateScope = "network-security-manager:CreateScope";
|
|
36
|
+
/** [Write] network-security-manager:CreateScopeSnapshot */
|
|
37
|
+
NetworkSecurityManagerActions.CreateScopeSnapshot = "network-security-manager:CreateScopeSnapshot";
|
|
38
|
+
/** [Write] network-security-manager:CreateTemplate */
|
|
39
|
+
NetworkSecurityManagerActions.CreateTemplate = "network-security-manager:CreateTemplate";
|
|
40
|
+
/** [Write] network-security-manager:CreateTemplateSnapshot */
|
|
41
|
+
NetworkSecurityManagerActions.CreateTemplateSnapshot = "network-security-manager:CreateTemplateSnapshot";
|
|
42
|
+
/** [Write] network-security-manager:DeleteAdminAccount */
|
|
43
|
+
NetworkSecurityManagerActions.DeleteAdminAccount = "network-security-manager:DeleteAdminAccount";
|
|
44
|
+
/** [Write] network-security-manager:DeleteDeployment */
|
|
45
|
+
NetworkSecurityManagerActions.DeleteDeployment = "network-security-manager:DeleteDeployment";
|
|
46
|
+
/** [Write] network-security-manager:DeletePolicy */
|
|
47
|
+
NetworkSecurityManagerActions.DeletePolicy = "network-security-manager:DeletePolicy";
|
|
48
|
+
/** [Write] network-security-manager:DeleteRule */
|
|
49
|
+
NetworkSecurityManagerActions.DeleteRule = "network-security-manager:DeleteRule";
|
|
50
|
+
/** [Write] network-security-manager:DeleteScope */
|
|
51
|
+
NetworkSecurityManagerActions.DeleteScope = "network-security-manager:DeleteScope";
|
|
52
|
+
/** [Write] network-security-manager:DeleteTemplate */
|
|
53
|
+
NetworkSecurityManagerActions.DeleteTemplate = "network-security-manager:DeleteTemplate";
|
|
54
|
+
/** [Write] network-security-manager:GenerateRuleConfiguration */
|
|
55
|
+
NetworkSecurityManagerActions.GenerateRuleConfiguration = "network-security-manager:GenerateRuleConfiguration";
|
|
56
|
+
/** [Read] network-security-manager:GetAdminAccount */
|
|
57
|
+
NetworkSecurityManagerActions.actionGetAdminAccount = "network-security-manager:GetAdminAccount";
|
|
58
|
+
/** [Read] network-security-manager:GetDeployment */
|
|
59
|
+
NetworkSecurityManagerActions.actionGetDeployment = "network-security-manager:GetDeployment";
|
|
60
|
+
/** [Read] network-security-manager:GetPolicy */
|
|
61
|
+
NetworkSecurityManagerActions.actionGetPolicy = "network-security-manager:GetPolicy";
|
|
62
|
+
/** [Read] network-security-manager:GetRule */
|
|
63
|
+
NetworkSecurityManagerActions.actionGetRule = "network-security-manager:GetRule";
|
|
64
|
+
/** [Read] network-security-manager:GetScope */
|
|
65
|
+
NetworkSecurityManagerActions.actionGetScope = "network-security-manager:GetScope";
|
|
66
|
+
/** [Read] network-security-manager:GetTemplate */
|
|
67
|
+
NetworkSecurityManagerActions.actionGetTemplate = "network-security-manager:GetTemplate";
|
|
68
|
+
/** [List] network-security-manager:ListAdminAccounts */
|
|
69
|
+
NetworkSecurityManagerActions.ListAdminAccounts = "network-security-manager:ListAdminAccounts";
|
|
70
|
+
/** [Read] network-security-manager:ListAggregateResourceSynchronizationStatuses */
|
|
71
|
+
NetworkSecurityManagerActions.ListAggregateResourceSynchronizationStatuses = "network-security-manager:ListAggregateResourceSynchronizationStatuses";
|
|
72
|
+
/** [Read] network-security-manager:ListDeploymentSnapshots */
|
|
73
|
+
NetworkSecurityManagerActions.ListDeploymentSnapshots = "network-security-manager:ListDeploymentSnapshots";
|
|
74
|
+
/** [List] network-security-manager:ListDeployments */
|
|
75
|
+
NetworkSecurityManagerActions.ListDeployments = "network-security-manager:ListDeployments";
|
|
76
|
+
/** [List] network-security-manager:ListPolicies */
|
|
77
|
+
NetworkSecurityManagerActions.ListPolicies = "network-security-manager:ListPolicies";
|
|
78
|
+
/** [Read] network-security-manager:ListPolicySnapshots */
|
|
79
|
+
NetworkSecurityManagerActions.ListPolicySnapshots = "network-security-manager:ListPolicySnapshots";
|
|
80
|
+
/** [Read] network-security-manager:ListResourceAssociations */
|
|
81
|
+
NetworkSecurityManagerActions.ListResourceAssociations = "network-security-manager:ListResourceAssociations";
|
|
82
|
+
/** [Read] network-security-manager:ListResourceSynchronizationStatuses */
|
|
83
|
+
NetworkSecurityManagerActions.ListResourceSynchronizationStatuses = "network-security-manager:ListResourceSynchronizationStatuses";
|
|
84
|
+
/** [Read] network-security-manager:ListRuleSnapshots */
|
|
85
|
+
NetworkSecurityManagerActions.ListRuleSnapshots = "network-security-manager:ListRuleSnapshots";
|
|
86
|
+
/** [List] network-security-manager:ListRules */
|
|
87
|
+
NetworkSecurityManagerActions.ListRules = "network-security-manager:ListRules";
|
|
88
|
+
/** [Read] network-security-manager:ListScopeSnapshots */
|
|
89
|
+
NetworkSecurityManagerActions.ListScopeSnapshots = "network-security-manager:ListScopeSnapshots";
|
|
90
|
+
/** [List] network-security-manager:ListScopes */
|
|
91
|
+
NetworkSecurityManagerActions.ListScopes = "network-security-manager:ListScopes";
|
|
92
|
+
/** [Read] network-security-manager:ListTagsForResource */
|
|
93
|
+
NetworkSecurityManagerActions.ListTagsForResource = "network-security-manager:ListTagsForResource";
|
|
94
|
+
/** [Read] network-security-manager:ListTemplateSnapshots */
|
|
95
|
+
NetworkSecurityManagerActions.ListTemplateSnapshots = "network-security-manager:ListTemplateSnapshots";
|
|
96
|
+
/** [List] network-security-manager:ListTemplates */
|
|
97
|
+
NetworkSecurityManagerActions.ListTemplates = "network-security-manager:ListTemplates";
|
|
98
|
+
/** [Write] network-security-manager:PutAdminAccount */
|
|
99
|
+
NetworkSecurityManagerActions.PutAdminAccount = "network-security-manager:PutAdminAccount";
|
|
100
|
+
/** [Tagging] network-security-manager:TagResource */
|
|
101
|
+
NetworkSecurityManagerActions.TagResource = "network-security-manager:TagResource";
|
|
102
|
+
/** [Tagging] network-security-manager:UntagResource */
|
|
103
|
+
NetworkSecurityManagerActions.UntagResource = "network-security-manager:UntagResource";
|
|
104
|
+
/** [Write] network-security-manager:UpdateDeployment */
|
|
105
|
+
NetworkSecurityManagerActions.UpdateDeployment = "network-security-manager:UpdateDeployment";
|
|
106
|
+
/** [Write] network-security-manager:UpdatePolicy */
|
|
107
|
+
NetworkSecurityManagerActions.UpdatePolicy = "network-security-manager:UpdatePolicy";
|
|
108
|
+
/** [Write] network-security-manager:UpdateRule */
|
|
109
|
+
NetworkSecurityManagerActions.UpdateRule = "network-security-manager:UpdateRule";
|
|
110
|
+
/** [Write] network-security-manager:UpdateScope */
|
|
111
|
+
NetworkSecurityManagerActions.UpdateScope = "network-security-manager:UpdateScope";
|
|
112
|
+
/** [Write] network-security-manager:UpdateTemplate */
|
|
113
|
+
NetworkSecurityManagerActions.UpdateTemplate = "network-security-manager:UpdateTemplate";
|
|
114
|
+
/** All read-level actions. */
|
|
115
|
+
NetworkSecurityManagerActions.AllReadActions = [
|
|
116
|
+
NetworkSecurityManagerActions.actionGetAdminAccount,
|
|
117
|
+
NetworkSecurityManagerActions.actionGetDeployment,
|
|
118
|
+
NetworkSecurityManagerActions.actionGetPolicy,
|
|
119
|
+
NetworkSecurityManagerActions.actionGetRule,
|
|
120
|
+
NetworkSecurityManagerActions.actionGetScope,
|
|
121
|
+
NetworkSecurityManagerActions.actionGetTemplate,
|
|
122
|
+
NetworkSecurityManagerActions.ListAggregateResourceSynchronizationStatuses,
|
|
123
|
+
NetworkSecurityManagerActions.ListDeploymentSnapshots,
|
|
124
|
+
NetworkSecurityManagerActions.ListPolicySnapshots,
|
|
125
|
+
NetworkSecurityManagerActions.ListResourceAssociations,
|
|
126
|
+
NetworkSecurityManagerActions.ListResourceSynchronizationStatuses,
|
|
127
|
+
NetworkSecurityManagerActions.ListRuleSnapshots,
|
|
128
|
+
NetworkSecurityManagerActions.ListScopeSnapshots,
|
|
129
|
+
NetworkSecurityManagerActions.ListTagsForResource,
|
|
130
|
+
NetworkSecurityManagerActions.ListTemplateSnapshots,
|
|
131
|
+
];
|
|
132
|
+
/** All write-level actions. */
|
|
133
|
+
NetworkSecurityManagerActions.AllWriteActions = [
|
|
134
|
+
NetworkSecurityManagerActions.CreateDeployment,
|
|
135
|
+
NetworkSecurityManagerActions.CreateDeploymentSnapshot,
|
|
136
|
+
NetworkSecurityManagerActions.CreatePolicy,
|
|
137
|
+
NetworkSecurityManagerActions.CreatePolicySnapshot,
|
|
138
|
+
NetworkSecurityManagerActions.CreateRule,
|
|
139
|
+
NetworkSecurityManagerActions.CreateRuleSnapshot,
|
|
140
|
+
NetworkSecurityManagerActions.CreateScope,
|
|
141
|
+
NetworkSecurityManagerActions.CreateScopeSnapshot,
|
|
142
|
+
NetworkSecurityManagerActions.CreateTemplate,
|
|
143
|
+
NetworkSecurityManagerActions.CreateTemplateSnapshot,
|
|
144
|
+
NetworkSecurityManagerActions.DeleteAdminAccount,
|
|
145
|
+
NetworkSecurityManagerActions.DeleteDeployment,
|
|
146
|
+
NetworkSecurityManagerActions.DeletePolicy,
|
|
147
|
+
NetworkSecurityManagerActions.DeleteRule,
|
|
148
|
+
NetworkSecurityManagerActions.DeleteScope,
|
|
149
|
+
NetworkSecurityManagerActions.DeleteTemplate,
|
|
150
|
+
NetworkSecurityManagerActions.GenerateRuleConfiguration,
|
|
151
|
+
NetworkSecurityManagerActions.PutAdminAccount,
|
|
152
|
+
NetworkSecurityManagerActions.UpdateDeployment,
|
|
153
|
+
NetworkSecurityManagerActions.UpdatePolicy,
|
|
154
|
+
NetworkSecurityManagerActions.UpdateRule,
|
|
155
|
+
NetworkSecurityManagerActions.UpdateScope,
|
|
156
|
+
NetworkSecurityManagerActions.UpdateTemplate,
|
|
157
|
+
];
|
|
158
|
+
/** All list-level actions. */
|
|
159
|
+
NetworkSecurityManagerActions.AllListActions = [
|
|
160
|
+
NetworkSecurityManagerActions.ListAdminAccounts,
|
|
161
|
+
NetworkSecurityManagerActions.ListDeployments,
|
|
162
|
+
NetworkSecurityManagerActions.ListPolicies,
|
|
163
|
+
NetworkSecurityManagerActions.ListRules,
|
|
164
|
+
NetworkSecurityManagerActions.ListScopes,
|
|
165
|
+
NetworkSecurityManagerActions.ListTemplates,
|
|
166
|
+
];
|
|
167
|
+
/** All permission-management-level actions. */
|
|
168
|
+
NetworkSecurityManagerActions.AllPermissionManagementActions = [];
|
|
169
|
+
/** All tagging-level actions. */
|
|
170
|
+
NetworkSecurityManagerActions.AllTaggingActions = [
|
|
171
|
+
NetworkSecurityManagerActions.TagResource,
|
|
172
|
+
NetworkSecurityManagerActions.UntagResource,
|
|
173
|
+
];
|
|
174
|
+
const DeploymentArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):deployment:(?<deploymentId>[^:/?]+)$/;
|
|
175
|
+
const DeploymentSnapshotArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):deployment:(?<deploymentId>[^:/?]+):(?<versionNumber>[^:/?]+)$/;
|
|
176
|
+
const PolicyArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):policy:(?<policyId>[^:/?]+)$/;
|
|
177
|
+
const PolicySnapshotArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):policy:(?<policyId>[^:/?]+):(?<versionNumber>[^:/?]+)$/;
|
|
178
|
+
const RuleArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):rule:(?<ruleId>[^:/?]+)$/;
|
|
179
|
+
const RuleSnapshotArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):rule:(?<ruleId>[^:/?]+):(?<versionNumber>[^:/?]+)$/;
|
|
180
|
+
const ScopeArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):scope:(?<scopeId>[^:/?]+)$/;
|
|
181
|
+
const ScopeSnapshotArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):scope:(?<scopeId>[^:/?]+):(?<versionNumber>[^:/?]+)$/;
|
|
182
|
+
const TemplateArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):template:(?<templateId>[^:/?]+)$/;
|
|
183
|
+
const TemplateSnapshotArnRegex = /^arn:(?<partition>[^:]+):network-security-manager:(?<region>[^:]*):(?<account>[^:]*):template:(?<templateId>[^:/?]+):(?<versionNumber>[^:/?]+)$/;
|
|
184
|
+
/**
|
|
185
|
+
* ARN builders, validators, and parsers for network-security-manager resources.
|
|
186
|
+
*/
|
|
187
|
+
class NetworkSecurityManagerResources {
|
|
188
|
+
/**
|
|
189
|
+
* Builds an ARN for the deployment resource.
|
|
190
|
+
*/
|
|
191
|
+
static deployment(props) {
|
|
192
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:deployment:${props.deploymentId}`;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Validates whether a string is a valid ARN for the deployment resource.
|
|
196
|
+
*/
|
|
197
|
+
static isValidDeploymentArn(arn) {
|
|
198
|
+
return DeploymentArnRegex.test(arn);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Parses a deployment ARN into its components.
|
|
202
|
+
* @throws Error if the ARN does not match the expected format.
|
|
203
|
+
*/
|
|
204
|
+
static parseDeploymentArn(arn) {
|
|
205
|
+
const match = DeploymentArnRegex.exec(arn);
|
|
206
|
+
if (!match?.groups) {
|
|
207
|
+
throw new Error(`Invalid deployment ARN: ${arn}`);
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
partition: match.groups.partition,
|
|
211
|
+
region: match.groups.region,
|
|
212
|
+
account: match.groups.account,
|
|
213
|
+
deploymentId: match.groups.deploymentId,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Builds an ARN for the deployment-snapshot resource.
|
|
218
|
+
*/
|
|
219
|
+
static deploymentSnapshot(props) {
|
|
220
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:deployment:${props.deploymentId}:${props.versionNumber}`;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Validates whether a string is a valid ARN for the deployment-snapshot resource.
|
|
224
|
+
*/
|
|
225
|
+
static isValidDeploymentSnapshotArn(arn) {
|
|
226
|
+
return DeploymentSnapshotArnRegex.test(arn);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Parses a deployment-snapshot ARN into its components.
|
|
230
|
+
* @throws Error if the ARN does not match the expected format.
|
|
231
|
+
*/
|
|
232
|
+
static parseDeploymentSnapshotArn(arn) {
|
|
233
|
+
const match = DeploymentSnapshotArnRegex.exec(arn);
|
|
234
|
+
if (!match?.groups) {
|
|
235
|
+
throw new Error(`Invalid deployment-snapshot ARN: ${arn}`);
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
partition: match.groups.partition,
|
|
239
|
+
region: match.groups.region,
|
|
240
|
+
account: match.groups.account,
|
|
241
|
+
deploymentId: match.groups.deploymentId,
|
|
242
|
+
versionNumber: match.groups.versionNumber,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Builds an ARN for the policy resource.
|
|
247
|
+
*/
|
|
248
|
+
static policy(props) {
|
|
249
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:policy:${props.policyId}`;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Validates whether a string is a valid ARN for the policy resource.
|
|
253
|
+
*/
|
|
254
|
+
static isValidPolicyArn(arn) {
|
|
255
|
+
return PolicyArnRegex.test(arn);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Parses a policy ARN into its components.
|
|
259
|
+
* @throws Error if the ARN does not match the expected format.
|
|
260
|
+
*/
|
|
261
|
+
static parsePolicyArn(arn) {
|
|
262
|
+
const match = PolicyArnRegex.exec(arn);
|
|
263
|
+
if (!match?.groups) {
|
|
264
|
+
throw new Error(`Invalid policy ARN: ${arn}`);
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
partition: match.groups.partition,
|
|
268
|
+
region: match.groups.region,
|
|
269
|
+
account: match.groups.account,
|
|
270
|
+
policyId: match.groups.policyId,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Builds an ARN for the policy-snapshot resource.
|
|
275
|
+
*/
|
|
276
|
+
static policySnapshot(props) {
|
|
277
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:policy:${props.policyId}:${props.versionNumber}`;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Validates whether a string is a valid ARN for the policy-snapshot resource.
|
|
281
|
+
*/
|
|
282
|
+
static isValidPolicySnapshotArn(arn) {
|
|
283
|
+
return PolicySnapshotArnRegex.test(arn);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Parses a policy-snapshot ARN into its components.
|
|
287
|
+
* @throws Error if the ARN does not match the expected format.
|
|
288
|
+
*/
|
|
289
|
+
static parsePolicySnapshotArn(arn) {
|
|
290
|
+
const match = PolicySnapshotArnRegex.exec(arn);
|
|
291
|
+
if (!match?.groups) {
|
|
292
|
+
throw new Error(`Invalid policy-snapshot ARN: ${arn}`);
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
partition: match.groups.partition,
|
|
296
|
+
region: match.groups.region,
|
|
297
|
+
account: match.groups.account,
|
|
298
|
+
policyId: match.groups.policyId,
|
|
299
|
+
versionNumber: match.groups.versionNumber,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Builds an ARN for the rule resource.
|
|
304
|
+
*/
|
|
305
|
+
static rule(props) {
|
|
306
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:rule:${props.ruleId}`;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Validates whether a string is a valid ARN for the rule resource.
|
|
310
|
+
*/
|
|
311
|
+
static isValidRuleArn(arn) {
|
|
312
|
+
return RuleArnRegex.test(arn);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Parses a rule ARN into its components.
|
|
316
|
+
* @throws Error if the ARN does not match the expected format.
|
|
317
|
+
*/
|
|
318
|
+
static parseRuleArn(arn) {
|
|
319
|
+
const match = RuleArnRegex.exec(arn);
|
|
320
|
+
if (!match?.groups) {
|
|
321
|
+
throw new Error(`Invalid rule ARN: ${arn}`);
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
partition: match.groups.partition,
|
|
325
|
+
region: match.groups.region,
|
|
326
|
+
account: match.groups.account,
|
|
327
|
+
ruleId: match.groups.ruleId,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Builds an ARN for the rule-snapshot resource.
|
|
332
|
+
*/
|
|
333
|
+
static ruleSnapshot(props) {
|
|
334
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:rule:${props.ruleId}:${props.versionNumber}`;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Validates whether a string is a valid ARN for the rule-snapshot resource.
|
|
338
|
+
*/
|
|
339
|
+
static isValidRuleSnapshotArn(arn) {
|
|
340
|
+
return RuleSnapshotArnRegex.test(arn);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Parses a rule-snapshot ARN into its components.
|
|
344
|
+
* @throws Error if the ARN does not match the expected format.
|
|
345
|
+
*/
|
|
346
|
+
static parseRuleSnapshotArn(arn) {
|
|
347
|
+
const match = RuleSnapshotArnRegex.exec(arn);
|
|
348
|
+
if (!match?.groups) {
|
|
349
|
+
throw new Error(`Invalid rule-snapshot ARN: ${arn}`);
|
|
350
|
+
}
|
|
351
|
+
return {
|
|
352
|
+
partition: match.groups.partition,
|
|
353
|
+
region: match.groups.region,
|
|
354
|
+
account: match.groups.account,
|
|
355
|
+
ruleId: match.groups.ruleId,
|
|
356
|
+
versionNumber: match.groups.versionNumber,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Builds an ARN for the scope resource.
|
|
361
|
+
*/
|
|
362
|
+
static scope(props) {
|
|
363
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:scope:${props.scopeId}`;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Validates whether a string is a valid ARN for the scope resource.
|
|
367
|
+
*/
|
|
368
|
+
static isValidScopeArn(arn) {
|
|
369
|
+
return ScopeArnRegex.test(arn);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Parses a scope ARN into its components.
|
|
373
|
+
* @throws Error if the ARN does not match the expected format.
|
|
374
|
+
*/
|
|
375
|
+
static parseScopeArn(arn) {
|
|
376
|
+
const match = ScopeArnRegex.exec(arn);
|
|
377
|
+
if (!match?.groups) {
|
|
378
|
+
throw new Error(`Invalid scope ARN: ${arn}`);
|
|
379
|
+
}
|
|
380
|
+
return {
|
|
381
|
+
partition: match.groups.partition,
|
|
382
|
+
region: match.groups.region,
|
|
383
|
+
account: match.groups.account,
|
|
384
|
+
scopeId: match.groups.scopeId,
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Builds an ARN for the scope-snapshot resource.
|
|
389
|
+
*/
|
|
390
|
+
static scopeSnapshot(props) {
|
|
391
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:scope:${props.scopeId}:${props.versionNumber}`;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Validates whether a string is a valid ARN for the scope-snapshot resource.
|
|
395
|
+
*/
|
|
396
|
+
static isValidScopeSnapshotArn(arn) {
|
|
397
|
+
return ScopeSnapshotArnRegex.test(arn);
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Parses a scope-snapshot ARN into its components.
|
|
401
|
+
* @throws Error if the ARN does not match the expected format.
|
|
402
|
+
*/
|
|
403
|
+
static parseScopeSnapshotArn(arn) {
|
|
404
|
+
const match = ScopeSnapshotArnRegex.exec(arn);
|
|
405
|
+
if (!match?.groups) {
|
|
406
|
+
throw new Error(`Invalid scope-snapshot ARN: ${arn}`);
|
|
407
|
+
}
|
|
408
|
+
return {
|
|
409
|
+
partition: match.groups.partition,
|
|
410
|
+
region: match.groups.region,
|
|
411
|
+
account: match.groups.account,
|
|
412
|
+
scopeId: match.groups.scopeId,
|
|
413
|
+
versionNumber: match.groups.versionNumber,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Builds an ARN for the template resource.
|
|
418
|
+
*/
|
|
419
|
+
static template(props) {
|
|
420
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:template:${props.templateId}`;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Validates whether a string is a valid ARN for the template resource.
|
|
424
|
+
*/
|
|
425
|
+
static isValidTemplateArn(arn) {
|
|
426
|
+
return TemplateArnRegex.test(arn);
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Parses a template ARN into its components.
|
|
430
|
+
* @throws Error if the ARN does not match the expected format.
|
|
431
|
+
*/
|
|
432
|
+
static parseTemplateArn(arn) {
|
|
433
|
+
const match = TemplateArnRegex.exec(arn);
|
|
434
|
+
if (!match?.groups) {
|
|
435
|
+
throw new Error(`Invalid template ARN: ${arn}`);
|
|
436
|
+
}
|
|
437
|
+
return {
|
|
438
|
+
partition: match.groups.partition,
|
|
439
|
+
region: match.groups.region,
|
|
440
|
+
account: match.groups.account,
|
|
441
|
+
templateId: match.groups.templateId,
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Builds an ARN for the template-snapshot resource.
|
|
446
|
+
*/
|
|
447
|
+
static templateSnapshot(props) {
|
|
448
|
+
return `arn:${props.partition ?? "aws"}:network-security-manager:${props.region ?? "*"}:${props.account ?? "*"}:template:${props.templateId}:${props.versionNumber}`;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Validates whether a string is a valid ARN for the template-snapshot resource.
|
|
452
|
+
*/
|
|
453
|
+
static isValidTemplateSnapshotArn(arn) {
|
|
454
|
+
return TemplateSnapshotArnRegex.test(arn);
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Parses a template-snapshot ARN into its components.
|
|
458
|
+
* @throws Error if the ARN does not match the expected format.
|
|
459
|
+
*/
|
|
460
|
+
static parseTemplateSnapshotArn(arn) {
|
|
461
|
+
const match = TemplateSnapshotArnRegex.exec(arn);
|
|
462
|
+
if (!match?.groups) {
|
|
463
|
+
throw new Error(`Invalid template-snapshot ARN: ${arn}`);
|
|
464
|
+
}
|
|
465
|
+
return {
|
|
466
|
+
partition: match.groups.partition,
|
|
467
|
+
region: match.groups.region,
|
|
468
|
+
account: match.groups.account,
|
|
469
|
+
templateId: match.groups.templateId,
|
|
470
|
+
versionNumber: match.groups.versionNumber,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
exports.NetworkSecurityManagerResources = NetworkSecurityManagerResources;
|
|
475
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
476
|
+
NetworkSecurityManagerResources[_b] = { fqn: "@cdk_utils/iam.network_security_manager.NetworkSecurityManagerResources", version: "1.30.0" };
|
|
477
|
+
/**
|
|
478
|
+
* API operation to required IAM actions mapping for network-security-manager.
|
|
479
|
+
*/
|
|
480
|
+
class NetworkSecurityManagerOperations {
|
|
481
|
+
}
|
|
482
|
+
exports.NetworkSecurityManagerOperations = NetworkSecurityManagerOperations;
|
|
483
|
+
_c = JSII_RTTI_SYMBOL_1;
|
|
484
|
+
NetworkSecurityManagerOperations[_c] = { fqn: "@cdk_utils/iam.network_security_manager.NetworkSecurityManagerOperations", version: "1.30.0" };
|
|
485
|
+
/** IAM actions required for the CreateDeployment API call. */
|
|
486
|
+
NetworkSecurityManagerOperations.CreateDeployment = [
|
|
487
|
+
"network-security-manager:CreateDeployment",
|
|
488
|
+
"network-security-manager:TagResource",
|
|
489
|
+
];
|
|
490
|
+
/** IAM actions required for the CreateDeploymentSnapshot API call. */
|
|
491
|
+
NetworkSecurityManagerOperations.CreateDeploymentSnapshot = [
|
|
492
|
+
"network-security-manager:CreateDeploymentSnapshot",
|
|
493
|
+
"network-security-manager:TagResource",
|
|
494
|
+
];
|
|
495
|
+
/** IAM actions required for the CreatePolicy API call. */
|
|
496
|
+
NetworkSecurityManagerOperations.CreatePolicy = [
|
|
497
|
+
"network-security-manager:CreatePolicy",
|
|
498
|
+
"network-security-manager:TagResource",
|
|
499
|
+
];
|
|
500
|
+
/** IAM actions required for the CreatePolicySnapshot API call. */
|
|
501
|
+
NetworkSecurityManagerOperations.CreatePolicySnapshot = [
|
|
502
|
+
"network-security-manager:CreatePolicySnapshot",
|
|
503
|
+
"network-security-manager:TagResource",
|
|
504
|
+
];
|
|
505
|
+
/** IAM actions required for the CreateRule API call. */
|
|
506
|
+
NetworkSecurityManagerOperations.CreateRule = [
|
|
507
|
+
"network-security-manager:CreateRule",
|
|
508
|
+
"network-security-manager:TagResource",
|
|
509
|
+
];
|
|
510
|
+
/** IAM actions required for the CreateRuleSnapshot API call. */
|
|
511
|
+
NetworkSecurityManagerOperations.CreateRuleSnapshot = [
|
|
512
|
+
"network-security-manager:CreateRuleSnapshot",
|
|
513
|
+
"network-security-manager:TagResource",
|
|
514
|
+
];
|
|
515
|
+
/** IAM actions required for the CreateScope API call. */
|
|
516
|
+
NetworkSecurityManagerOperations.CreateScope = [
|
|
517
|
+
"network-security-manager:CreateScope",
|
|
518
|
+
"network-security-manager:TagResource",
|
|
519
|
+
];
|
|
520
|
+
/** IAM actions required for the CreateScopeSnapshot API call. */
|
|
521
|
+
NetworkSecurityManagerOperations.CreateScopeSnapshot = [
|
|
522
|
+
"network-security-manager:CreateScopeSnapshot",
|
|
523
|
+
"network-security-manager:TagResource",
|
|
524
|
+
];
|
|
525
|
+
/** IAM actions required for the CreateTemplate API call. */
|
|
526
|
+
NetworkSecurityManagerOperations.CreateTemplate = [
|
|
527
|
+
"network-security-manager:CreateTemplate",
|
|
528
|
+
"network-security-manager:TagResource",
|
|
529
|
+
];
|
|
530
|
+
/** IAM actions required for the CreateTemplateSnapshot API call. */
|
|
531
|
+
NetworkSecurityManagerOperations.CreateTemplateSnapshot = [
|
|
532
|
+
"network-security-manager:CreateTemplateSnapshot",
|
|
533
|
+
"network-security-manager:TagResource",
|
|
534
|
+
];
|
|
535
|
+
/** IAM actions required for the DeleteAdminAccount API call. */
|
|
536
|
+
NetworkSecurityManagerOperations.DeleteAdminAccount = [
|
|
537
|
+
"network-security-manager:DeleteAdminAccount",
|
|
538
|
+
];
|
|
539
|
+
/** IAM actions required for the DeleteDeployment API call. */
|
|
540
|
+
NetworkSecurityManagerOperations.DeleteDeployment = [
|
|
541
|
+
"network-security-manager:DeleteDeployment",
|
|
542
|
+
];
|
|
543
|
+
/** IAM actions required for the DeletePolicy API call. */
|
|
544
|
+
NetworkSecurityManagerOperations.DeletePolicy = [
|
|
545
|
+
"network-security-manager:DeletePolicy",
|
|
546
|
+
];
|
|
547
|
+
/** IAM actions required for the DeleteRule API call. */
|
|
548
|
+
NetworkSecurityManagerOperations.DeleteRule = [
|
|
549
|
+
"network-security-manager:DeleteRule",
|
|
550
|
+
];
|
|
551
|
+
/** IAM actions required for the DeleteScope API call. */
|
|
552
|
+
NetworkSecurityManagerOperations.DeleteScope = [
|
|
553
|
+
"network-security-manager:DeleteScope",
|
|
554
|
+
];
|
|
555
|
+
/** IAM actions required for the DeleteTemplate API call. */
|
|
556
|
+
NetworkSecurityManagerOperations.DeleteTemplate = [
|
|
557
|
+
"network-security-manager:DeleteTemplate",
|
|
558
|
+
];
|
|
559
|
+
/** IAM actions required for the GenerateRuleConfiguration API call. */
|
|
560
|
+
NetworkSecurityManagerOperations.GenerateRuleConfiguration = [
|
|
561
|
+
"network-security-manager:GenerateRuleConfiguration",
|
|
562
|
+
];
|
|
563
|
+
/** IAM actions required for the GetAdminAccount API call. */
|
|
564
|
+
NetworkSecurityManagerOperations.opGetAdminAccount = [
|
|
565
|
+
"network-security-manager:GetAdminAccount",
|
|
566
|
+
];
|
|
567
|
+
/** IAM actions required for the GetDeployment API call. */
|
|
568
|
+
NetworkSecurityManagerOperations.opGetDeployment = [
|
|
569
|
+
"network-security-manager:GetDeployment",
|
|
570
|
+
];
|
|
571
|
+
/** IAM actions required for the GetPolicy API call. */
|
|
572
|
+
NetworkSecurityManagerOperations.opGetPolicy = [
|
|
573
|
+
"network-security-manager:GetPolicy",
|
|
574
|
+
];
|
|
575
|
+
/** IAM actions required for the GetRule API call. */
|
|
576
|
+
NetworkSecurityManagerOperations.opGetRule = ["network-security-manager:GetRule"];
|
|
577
|
+
/** IAM actions required for the GetScope API call. */
|
|
578
|
+
NetworkSecurityManagerOperations.opGetScope = ["network-security-manager:GetScope"];
|
|
579
|
+
/** IAM actions required for the GetTemplate API call. */
|
|
580
|
+
NetworkSecurityManagerOperations.opGetTemplate = [
|
|
581
|
+
"network-security-manager:GetTemplate",
|
|
582
|
+
];
|
|
583
|
+
/** IAM actions required for the ListAdminAccounts API call. */
|
|
584
|
+
NetworkSecurityManagerOperations.ListAdminAccounts = [
|
|
585
|
+
"network-security-manager:ListAdminAccounts",
|
|
586
|
+
];
|
|
587
|
+
/** IAM actions required for the ListAggregateResourceSynchronizationStatuses API call. */
|
|
588
|
+
NetworkSecurityManagerOperations.ListAggregateResourceSynchronizationStatuses = [
|
|
589
|
+
"network-security-manager:ListAggregateResourceSynchronizationStatuses",
|
|
590
|
+
];
|
|
591
|
+
/** IAM actions required for the ListDeploymentSnapshots API call. */
|
|
592
|
+
NetworkSecurityManagerOperations.ListDeploymentSnapshots = [
|
|
593
|
+
"network-security-manager:ListDeploymentSnapshots",
|
|
594
|
+
];
|
|
595
|
+
/** IAM actions required for the ListDeployments API call. */
|
|
596
|
+
NetworkSecurityManagerOperations.ListDeployments = [
|
|
597
|
+
"network-security-manager:ListDeployments",
|
|
598
|
+
];
|
|
599
|
+
/** IAM actions required for the ListPolicies API call. */
|
|
600
|
+
NetworkSecurityManagerOperations.ListPolicies = [
|
|
601
|
+
"network-security-manager:ListPolicies",
|
|
602
|
+
];
|
|
603
|
+
/** IAM actions required for the ListPolicySnapshots API call. */
|
|
604
|
+
NetworkSecurityManagerOperations.ListPolicySnapshots = [
|
|
605
|
+
"network-security-manager:ListPolicySnapshots",
|
|
606
|
+
];
|
|
607
|
+
/** IAM actions required for the ListResourceAssociations API call. */
|
|
608
|
+
NetworkSecurityManagerOperations.ListResourceAssociations = [
|
|
609
|
+
"network-security-manager:ListResourceAssociations",
|
|
610
|
+
];
|
|
611
|
+
/** IAM actions required for the ListResourceSynchronizationStatuses API call. */
|
|
612
|
+
NetworkSecurityManagerOperations.ListResourceSynchronizationStatuses = [
|
|
613
|
+
"network-security-manager:ListResourceSynchronizationStatuses",
|
|
614
|
+
];
|
|
615
|
+
/** IAM actions required for the ListRuleSnapshots API call. */
|
|
616
|
+
NetworkSecurityManagerOperations.ListRuleSnapshots = [
|
|
617
|
+
"network-security-manager:ListRuleSnapshots",
|
|
618
|
+
];
|
|
619
|
+
/** IAM actions required for the ListRules API call. */
|
|
620
|
+
NetworkSecurityManagerOperations.ListRules = ["network-security-manager:ListRules"];
|
|
621
|
+
/** IAM actions required for the ListScopeSnapshots API call. */
|
|
622
|
+
NetworkSecurityManagerOperations.ListScopeSnapshots = [
|
|
623
|
+
"network-security-manager:ListScopeSnapshots",
|
|
624
|
+
];
|
|
625
|
+
/** IAM actions required for the ListScopes API call. */
|
|
626
|
+
NetworkSecurityManagerOperations.ListScopes = [
|
|
627
|
+
"network-security-manager:ListScopes",
|
|
628
|
+
];
|
|
629
|
+
/** IAM actions required for the ListTagsForResource API call. */
|
|
630
|
+
NetworkSecurityManagerOperations.ListTagsForResource = [
|
|
631
|
+
"network-security-manager:ListTagsForResource",
|
|
632
|
+
];
|
|
633
|
+
/** IAM actions required for the ListTemplateSnapshots API call. */
|
|
634
|
+
NetworkSecurityManagerOperations.ListTemplateSnapshots = [
|
|
635
|
+
"network-security-manager:ListTemplateSnapshots",
|
|
636
|
+
];
|
|
637
|
+
/** IAM actions required for the ListTemplates API call. */
|
|
638
|
+
NetworkSecurityManagerOperations.ListTemplates = [
|
|
639
|
+
"network-security-manager:ListTemplates",
|
|
640
|
+
];
|
|
641
|
+
/** IAM actions required for the PutAdminAccount API call. */
|
|
642
|
+
NetworkSecurityManagerOperations.PutAdminAccount = [
|
|
643
|
+
"network-security-manager:PutAdminAccount",
|
|
644
|
+
];
|
|
645
|
+
/** IAM actions required for the TagResource API call. */
|
|
646
|
+
NetworkSecurityManagerOperations.TagResource = [
|
|
647
|
+
"network-security-manager:TagResource",
|
|
648
|
+
];
|
|
649
|
+
/** IAM actions required for the UntagResource API call. */
|
|
650
|
+
NetworkSecurityManagerOperations.UntagResource = [
|
|
651
|
+
"network-security-manager:UntagResource",
|
|
652
|
+
];
|
|
653
|
+
/** IAM actions required for the UpdateDeployment API call. */
|
|
654
|
+
NetworkSecurityManagerOperations.UpdateDeployment = [
|
|
655
|
+
"network-security-manager:UpdateDeployment",
|
|
656
|
+
];
|
|
657
|
+
/** IAM actions required for the UpdatePolicy API call. */
|
|
658
|
+
NetworkSecurityManagerOperations.UpdatePolicy = [
|
|
659
|
+
"network-security-manager:UpdatePolicy",
|
|
660
|
+
];
|
|
661
|
+
/** IAM actions required for the UpdateRule API call. */
|
|
662
|
+
NetworkSecurityManagerOperations.UpdateRule = [
|
|
663
|
+
"network-security-manager:UpdateRule",
|
|
664
|
+
];
|
|
665
|
+
/** IAM actions required for the UpdateScope API call. */
|
|
666
|
+
NetworkSecurityManagerOperations.UpdateScope = [
|
|
667
|
+
"network-security-manager:UpdateScope",
|
|
668
|
+
];
|
|
669
|
+
/** IAM actions required for the UpdateTemplate API call. */
|
|
670
|
+
NetworkSecurityManagerOperations.UpdateTemplate = [
|
|
671
|
+
"network-security-manager:UpdateTemplate",
|
|
672
|
+
];
|
|
673
|
+
/**
|
|
674
|
+
* Condition key constants and builders for network-security-manager.
|
|
675
|
+
*/
|
|
676
|
+
class NetworkSecurityManagerConditions {
|
|
677
|
+
/**
|
|
678
|
+
* Generates a condition block for `aws:RequestTag/${TagKey}`.
|
|
679
|
+
*/
|
|
680
|
+
static requestTag(value) {
|
|
681
|
+
return { StringEquals: { "aws:RequestTag/${TagKey}": value } };
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* Generates a condition block for `aws:ResourceTag/${TagKey}`.
|
|
685
|
+
*/
|
|
686
|
+
static resourceTag(value) {
|
|
687
|
+
return { StringEquals: { "aws:ResourceTag/${TagKey}": value } };
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Generates a condition block for `aws:TagKeys`.
|
|
691
|
+
*/
|
|
692
|
+
static tagKeys(values) {
|
|
693
|
+
return { "ForAllValues:StringEquals": { "aws:TagKeys": values } };
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
exports.NetworkSecurityManagerConditions = NetworkSecurityManagerConditions;
|
|
697
|
+
_d = JSII_RTTI_SYMBOL_1;
|
|
698
|
+
NetworkSecurityManagerConditions[_d] = { fqn: "@cdk_utils/iam.network_security_manager.NetworkSecurityManagerConditions", version: "1.30.0" };
|
|
699
|
+
/** Condition keys applicable to the CreateDeployment action. */
|
|
700
|
+
NetworkSecurityManagerConditions.CreateDeploymentConditionKeys = [
|
|
701
|
+
"aws:RequestTag/${TagKey}",
|
|
702
|
+
"aws:TagKeys",
|
|
703
|
+
];
|
|
704
|
+
/** Condition keys applicable to the CreateDeploymentSnapshot action. */
|
|
705
|
+
NetworkSecurityManagerConditions.CreateDeploymentSnapshotConditionKeys = [
|
|
706
|
+
"aws:RequestTag/${TagKey}",
|
|
707
|
+
"aws:TagKeys",
|
|
708
|
+
];
|
|
709
|
+
/** Condition keys applicable to the CreatePolicy action. */
|
|
710
|
+
NetworkSecurityManagerConditions.CreatePolicyConditionKeys = [
|
|
711
|
+
"aws:RequestTag/${TagKey}",
|
|
712
|
+
"aws:TagKeys",
|
|
713
|
+
];
|
|
714
|
+
/** Condition keys applicable to the CreatePolicySnapshot action. */
|
|
715
|
+
NetworkSecurityManagerConditions.CreatePolicySnapshotConditionKeys = [
|
|
716
|
+
"aws:RequestTag/${TagKey}",
|
|
717
|
+
"aws:TagKeys",
|
|
718
|
+
];
|
|
719
|
+
/** Condition keys applicable to the CreateRule action. */
|
|
720
|
+
NetworkSecurityManagerConditions.CreateRuleConditionKeys = [
|
|
721
|
+
"aws:RequestTag/${TagKey}",
|
|
722
|
+
"aws:TagKeys",
|
|
723
|
+
];
|
|
724
|
+
/** Condition keys applicable to the CreateRuleSnapshot action. */
|
|
725
|
+
NetworkSecurityManagerConditions.CreateRuleSnapshotConditionKeys = [
|
|
726
|
+
"aws:RequestTag/${TagKey}",
|
|
727
|
+
"aws:TagKeys",
|
|
728
|
+
];
|
|
729
|
+
/** Condition keys applicable to the CreateScope action. */
|
|
730
|
+
NetworkSecurityManagerConditions.CreateScopeConditionKeys = [
|
|
731
|
+
"aws:RequestTag/${TagKey}",
|
|
732
|
+
"aws:TagKeys",
|
|
733
|
+
];
|
|
734
|
+
/** Condition keys applicable to the CreateScopeSnapshot action. */
|
|
735
|
+
NetworkSecurityManagerConditions.CreateScopeSnapshotConditionKeys = [
|
|
736
|
+
"aws:RequestTag/${TagKey}",
|
|
737
|
+
"aws:TagKeys",
|
|
738
|
+
];
|
|
739
|
+
/** Condition keys applicable to the CreateTemplate action. */
|
|
740
|
+
NetworkSecurityManagerConditions.CreateTemplateConditionKeys = [
|
|
741
|
+
"aws:RequestTag/${TagKey}",
|
|
742
|
+
"aws:TagKeys",
|
|
743
|
+
];
|
|
744
|
+
/** Condition keys applicable to the CreateTemplateSnapshot action. */
|
|
745
|
+
NetworkSecurityManagerConditions.CreateTemplateSnapshotConditionKeys = [
|
|
746
|
+
"aws:RequestTag/${TagKey}",
|
|
747
|
+
"aws:TagKeys",
|
|
748
|
+
];
|
|
749
|
+
/** Condition keys applicable to the ListResourceAssociations action. */
|
|
750
|
+
NetworkSecurityManagerConditions.ListResourceAssociationsConditionKeys = [
|
|
751
|
+
"aws:ResourceTag/${TagKey}",
|
|
752
|
+
];
|
|
753
|
+
/** Condition keys applicable to the ListResourceSynchronizationStatuses action. */
|
|
754
|
+
NetworkSecurityManagerConditions.ListResourceSynchronizationStatusesConditionKeys = [
|
|
755
|
+
"aws:ResourceTag/${TagKey}",
|
|
756
|
+
];
|
|
757
|
+
/** Condition keys applicable to the ListTagsForResource action. */
|
|
758
|
+
NetworkSecurityManagerConditions.ListTagsForResourceConditionKeys = [
|
|
759
|
+
"aws:ResourceTag/${TagKey}",
|
|
760
|
+
];
|
|
761
|
+
/** Condition keys applicable to the TagResource action. */
|
|
762
|
+
NetworkSecurityManagerConditions.TagResourceConditionKeys = [
|
|
763
|
+
"aws:RequestTag/${TagKey}",
|
|
764
|
+
"aws:ResourceTag/${TagKey}",
|
|
765
|
+
"aws:TagKeys",
|
|
766
|
+
];
|
|
767
|
+
/** Condition keys applicable to the UntagResource action. */
|
|
768
|
+
NetworkSecurityManagerConditions.UntagResourceConditionKeys = [
|
|
769
|
+
"aws:ResourceTag/${TagKey}",
|
|
770
|
+
"aws:TagKeys",
|
|
771
|
+
];
|
|
772
|
+
/** Condition key: aws:RequestTag/${TagKey} (String) */
|
|
773
|
+
NetworkSecurityManagerConditions.AWS_REQUEST_TAG = "aws:RequestTag/${TagKey}";
|
|
774
|
+
/** Condition key: aws:ResourceTag/${TagKey} (String) */
|
|
775
|
+
NetworkSecurityManagerConditions.AWS_RESOURCE_TAG = "aws:ResourceTag/${TagKey}";
|
|
776
|
+
/** Condition key: aws:TagKeys (ArrayOfString) */
|
|
777
|
+
NetworkSecurityManagerConditions.AWS_TAG_KEYS = "aws:TagKeys";
|
|
778
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9uZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCwrREFBK0Q7QUFDL0Qsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsNkJBQTZCOztBQUExQyxzRUFtTEM7OztBQWxMQSw4QkFBOEI7QUFDZCw0Q0FBYyxHQUFHLDBCQUEwQixDQUFDO0FBRTVELHdEQUF3RDtBQUN4Qyw4Q0FBZ0IsR0FDL0IsMkNBQTJDLENBQUM7QUFDN0MsZ0VBQWdFO0FBQ2hELHNEQUF3QixHQUN2QyxtREFBbUQsQ0FBQztBQUNyRCxvREFBb0Q7QUFDcEMsMENBQVksR0FBRyx1Q0FBdUMsQ0FBQztBQUN2RSw0REFBNEQ7QUFDNUMsa0RBQW9CLEdBQ25DLCtDQUErQyxDQUFDO0FBQ2pELGtEQUFrRDtBQUNsQyx3Q0FBVSxHQUFHLHFDQUFxQyxDQUFDO0FBQ25FLDBEQUEwRDtBQUMxQyxnREFBa0IsR0FDakMsNkNBQTZDLENBQUM7QUFDL0MsbURBQW1EO0FBQ25DLHlDQUFXLEdBQUcsc0NBQXNDLENBQUM7QUFDckUsMkRBQTJEO0FBQzNDLGlEQUFtQixHQUNsQyw4Q0FBOEMsQ0FBQztBQUNoRCxzREFBc0Q7QUFDdEMsNENBQWMsR0FBRyx5Q0FBeUMsQ0FBQztBQUMzRSw4REFBOEQ7QUFDOUMsb0RBQXNCLEdBQ3JDLGlEQUFpRCxDQUFDO0FBQ25ELDBEQUEwRDtBQUMxQyxnREFBa0IsR0FDakMsNkNBQTZDLENBQUM7QUFDL0Msd0RBQXdEO0FBQ3hDLDhDQUFnQixHQUMvQiwyQ0FBMkMsQ0FBQztBQUM3QyxvREFBb0Q7QUFDcEMsMENBQVksR0FBRyx1Q0FBdUMsQ0FBQztBQUN2RSxr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dCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUTy1HRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQgTUFOVUFMTFlcbi8vIEdlbmVyYXRlZCBmcm9tIEFXUyBTZXJ2aWNlIEF1dGhvcml6YXRpb24gUmVmZXJlbmNlIGRhdGFcbi8vIFNvdXJjZTogZGF0YS9zZXJ2aWNlLXJlZmVyZW5jZS9uZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXIuanNvblxuLy8gUnVuIGBucHggcHJvamVuIGdlbmVyYXRlLWNvbnN0YW50c2AgdG8gcmVnZW5lcmF0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJQU0gYWN0aW9uIGNvbnN0YW50cyBmb3IgdGhlIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlciBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMge1xuXHQvKiogVGhlIElBTSBzZXJ2aWNlIHByZWZpeC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfUFJFRklYID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXJcIjtcblxuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlRGVwbG95bWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGVwbG95bWVudCA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlRGVwbG95bWVudFwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlRGVwbG95bWVudFNuYXBzaG90ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVEZXBsb3ltZW50U25hcHNob3QgPVxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZURlcGxveW1lbnRTbmFwc2hvdFwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUG9saWN5ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQb2xpY3kgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpDcmVhdGVQb2xpY3lcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZVBvbGljeVNuYXBzaG90ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQb2xpY3lTbmFwc2hvdCA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUG9saWN5U25hcHNob3RcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVJ1bGUgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpDcmVhdGVSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpDcmVhdGVSdWxlU25hcHNob3QgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVJ1bGVTbmFwc2hvdCA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUnVsZVNuYXBzaG90XCI7XG5cdC8qKiBbV3JpdGVdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpDcmVhdGVTY29wZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU2NvcGUgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpDcmVhdGVTY29wZVwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlU2NvcGVTbmFwc2hvdCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU2NvcGVTbmFwc2hvdCA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlU2NvcGVTbmFwc2hvdFwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlVGVtcGxhdGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbXBsYXRlID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlVGVtcGxhdGVcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZVRlbXBsYXRlU25hcHNob3QgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbXBsYXRlU25hcHNob3QgPVxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZVRlbXBsYXRlU25hcHNob3RcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZUFkbWluQWNjb3VudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQWRtaW5BY2NvdW50ID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpEZWxldGVBZG1pbkFjY291bnRcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZURlcGxveW1lbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZURlcGxveW1lbnQgPVxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZURlcGxveW1lbnRcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZVBvbGljeSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUG9saWN5ID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6RGVsZXRlUG9saWN5XCI7XG5cdC8qKiBbV3JpdGVdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpEZWxldGVSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSdWxlID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6RGVsZXRlUnVsZVwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6RGVsZXRlU2NvcGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVNjb3BlID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6RGVsZXRlU2NvcGVcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZVRlbXBsYXRlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUZW1wbGF0ZSA9IFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZVRlbXBsYXRlXCI7XG5cdC8qKiBbV3JpdGVdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZW5lcmF0ZVJ1bGVDb25maWd1cmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBHZW5lcmF0ZVJ1bGVDb25maWd1cmF0aW9uID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZW5lcmF0ZVJ1bGVDb25maWd1cmF0aW9uXCI7XG5cdC8qKiBbUmVhZF0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkdldEFkbWluQWNjb3VudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0QWRtaW5BY2NvdW50ID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRBZG1pbkFjY291bnRcIjtcblx0LyoqIFtSZWFkXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6R2V0RGVwbG95bWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RGVwbG95bWVudCA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6R2V0RGVwbG95bWVudFwiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRQb2xpY3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFBvbGljeSA9IFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkdldFBvbGljeVwiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRSdWxlID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6R2V0UnVsZVwiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRTY29wZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0U2NvcGUgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRTY29wZVwiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRUZW1wbGF0ZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VGVtcGxhdGUgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRUZW1wbGF0ZVwiO1xuXHQvKiogW0xpc3RdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0QWRtaW5BY2NvdW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFkbWluQWNjb3VudHMgPVxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RBZG1pbkFjY291bnRzXCI7XG5cdC8qKiBbUmVhZF0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RBZ2dyZWdhdGVSZXNvdXJjZVN5bmNocm9uaXphdGlvblN0YXR1c2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QWdncmVnYXRlUmVzb3VyY2VTeW5jaHJvbml6YXRpb25TdGF0dXNlcyA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdEFnZ3JlZ2F0ZVJlc291cmNlU3luY2hyb25pemF0aW9uU3RhdHVzZXNcIjtcblx0LyoqIFtSZWFkXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdERlcGxveW1lbnRTbmFwc2hvdHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXBsb3ltZW50U25hcHNob3RzID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0RGVwbG95bWVudFNuYXBzaG90c1wiO1xuXHQvKiogW0xpc3RdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0RGVwbG95bWVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXBsb3ltZW50cyA9IFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3REZXBsb3ltZW50c1wiO1xuXHQvKiogW0xpc3RdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UG9saWNpZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQb2xpY2llcyA9IFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RQb2xpY2llc1wiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UG9saWN5U25hcHNob3RzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UG9saWN5U25hcHNob3RzID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UG9saWN5U25hcHNob3RzXCI7XG5cdC8qKiBbUmVhZF0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RSZXNvdXJjZUFzc29jaWF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlQXNzb2NpYXRpb25zID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UmVzb3VyY2VBc3NvY2lhdGlvbnNcIjtcblx0LyoqIFtSZWFkXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFJlc291cmNlU3luY2hyb25pemF0aW9uU3RhdHVzZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXNvdXJjZVN5bmNocm9uaXphdGlvblN0YXR1c2VzID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UmVzb3VyY2VTeW5jaHJvbml6YXRpb25TdGF0dXNlc1wiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UnVsZVNuYXBzaG90cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVTbmFwc2hvdHMgPVxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RSdWxlU25hcHNob3RzXCI7XG5cdC8qKiBbTGlzdF0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RSdWxlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVzID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFJ1bGVzXCI7XG5cdC8qKiBbUmVhZF0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RTY29wZVNuYXBzaG90cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFNjb3BlU25hcHNob3RzID1cblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0U2NvcGVTbmFwc2hvdHNcIjtcblx0LyoqIFtMaXN0XSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFNjb3BlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFNjb3BlcyA9IFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RTY29wZXNcIjtcblx0LyoqIFtSZWFkXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFRhZ3NGb3JSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZSA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiO1xuXHQvKiogW1JlYWRdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0VGVtcGxhdGVTbmFwc2hvdHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZW1wbGF0ZVNuYXBzaG90cyA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFRlbXBsYXRlU25hcHNob3RzXCI7XG5cdC8qKiBbTGlzdF0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RUZW1wbGF0ZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUZW1wbGF0ZXMgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0VGVtcGxhdGVzXCI7XG5cdC8qKiBbV3JpdGVdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpQdXRBZG1pbkFjY291bnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEFkbWluQWNjb3VudCA9IFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlB1dEFkbWluQWNjb3VudFwiO1xuXHQvKiogW1RhZ2dpbmddIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2UgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZVwiO1xuXHQvKiogW1RhZ2dpbmddIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVbnRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VW50YWdSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlRGVwbG95bWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRGVwbG95bWVudCA9XG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlRGVwbG95bWVudFwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlUG9saWN5ICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVQb2xpY3kgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVcGRhdGVQb2xpY3lcIjtcblx0LyoqIFtXcml0ZV0gbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlVwZGF0ZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVJ1bGUgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVcGRhdGVSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVcGRhdGVTY29wZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlU2NvcGUgPSBcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVcGRhdGVTY29wZVwiO1xuXHQvKiogW1dyaXRlXSBuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlVGVtcGxhdGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbXBsYXRlID0gXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlVGVtcGxhdGVcIjtcblxuXHQvKiogQWxsIHJlYWQtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFJlYWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5hY3Rpb25HZXRBZG1pbkFjY291bnQsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuYWN0aW9uR2V0RGVwbG95bWVudCxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5hY3Rpb25HZXRQb2xpY3ksXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuYWN0aW9uR2V0UnVsZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5hY3Rpb25HZXRTY29wZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5hY3Rpb25HZXRUZW1wbGF0ZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0QWdncmVnYXRlUmVzb3VyY2VTeW5jaHJvbml6YXRpb25TdGF0dXNlcyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0RGVwbG95bWVudFNuYXBzaG90cyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0UG9saWN5U25hcHNob3RzLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkxpc3RSZXNvdXJjZUFzc29jaWF0aW9ucyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0UmVzb3VyY2VTeW5jaHJvbml6YXRpb25TdGF0dXNlcyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0UnVsZVNuYXBzaG90cyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0U2NvcGVTbmFwc2hvdHMsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuTGlzdFRhZ3NGb3JSZXNvdXJjZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0VGVtcGxhdGVTbmFwc2hvdHMsXG5cdF07XG5cdC8qKiBBbGwgd3JpdGUtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFdyaXRlQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuQ3JlYXRlRGVwbG95bWVudCxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5DcmVhdGVEZXBsb3ltZW50U25hcHNob3QsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuQ3JlYXRlUG9saWN5LFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkNyZWF0ZVBvbGljeVNuYXBzaG90LFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkNyZWF0ZVJ1bGUsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuQ3JlYXRlUnVsZVNuYXBzaG90LFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkNyZWF0ZVNjb3BlLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkNyZWF0ZVNjb3BlU25hcHNob3QsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuQ3JlYXRlVGVtcGxhdGUsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuQ3JlYXRlVGVtcGxhdGVTbmFwc2hvdCxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5EZWxldGVBZG1pbkFjY291bnQsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuRGVsZXRlRGVwbG95bWVudCxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5EZWxldGVQb2xpY3ksXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuRGVsZXRlUnVsZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5EZWxldGVTY29wZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5EZWxldGVUZW1wbGF0ZSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5HZW5lcmF0ZVJ1bGVDb25maWd1cmF0aW9uLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLlB1dEFkbWluQWNjb3VudCxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5VcGRhdGVEZXBsb3ltZW50LFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLlVwZGF0ZVBvbGljeSxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5VcGRhdGVSdWxlLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLlVwZGF0ZVNjb3BlLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLlVwZGF0ZVRlbXBsYXRlLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0QWRtaW5BY2NvdW50cyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0RGVwbG95bWVudHMsXG5cdFx0TmV0d29ya1NlY3VyaXR5TWFuYWdlckFjdGlvbnMuTGlzdFBvbGljaWVzLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkxpc3RSdWxlcyxcblx0XHROZXR3b3JrU2VjdXJpdHlNYW5hZ2VyQWN0aW9ucy5MaXN0U2NvcGVzLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLkxpc3RUZW1wbGF0ZXMsXG5cdF07XG5cdC8qKiBBbGwgcGVybWlzc2lvbi1tYW5hZ2VtZW50LWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxQZXJtaXNzaW9uTWFuYWdlbWVudEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdC8qKiBBbGwgdGFnZ2luZy1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsVGFnZ2luZ0FjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLlRhZ1Jlc291cmNlLFxuXHRcdE5ldHdvcmtTZWN1cml0eU1hbmFnZXJBY3Rpb25zLlVudGFnUmVzb3VyY2UsXG5cdF07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBkZXBsb3ltZW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyRGVwbG95bWVudEFyblByb3BzIHtcblx0LyoqIFRoZSBEZXBsb3ltZW50SWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRlcGxveW1lbnRJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGRlcGxveW1lbnQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJEZXBsb3ltZW50QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXBsb3ltZW50SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBkZXBsb3ltZW50SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGRlcGxveW1lbnQtc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJEZXBsb3ltZW50U25hcHNob3RBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGVwbG95bWVudElkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBkZXBsb3ltZW50SWQ6IHN0cmluZztcblx0LyoqIFRoZSBWZXJzaW9uTnVtYmVyIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSB2ZXJzaW9uTnVtYmVyOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZGVwbG95bWVudC1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlckRlcGxveW1lbnRTbmFwc2hvdEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGVwbG95bWVudElkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGVwbG95bWVudElkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVmVyc2lvbk51bWJlciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHBvbGljeSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclBvbGljeUFyblByb3BzIHtcblx0LyoqIFRoZSBQb2xpY3lJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcG9saWN5SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBwb2xpY3kgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJQb2xpY3lBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFBvbGljeUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgcG9saWN5SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHBvbGljeS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclBvbGljeVNuYXBzaG90QXJuUHJvcHMge1xuXHQvKiogVGhlIFBvbGljeUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBwb2xpY3lJZDogc3RyaW5nO1xuXHQvKiogVGhlIFZlcnNpb25OdW1iZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBwb2xpY3ktc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJQb2xpY3lTbmFwc2hvdEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgUG9saWN5SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBwb2xpY3lJZDogc3RyaW5nO1xuXHQvKiogVGhlIFZlcnNpb25OdW1iZXIgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB2ZXJzaW9uTnVtYmVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBydWxlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyUnVsZUFyblByb3BzIHtcblx0LyoqIFRoZSBSdWxlSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJ1bGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJSdWxlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBydWxlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJ1bGUtc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJSdWxlU25hcHNob3RBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUnVsZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBydWxlSWQ6IHN0cmluZztcblx0LyoqIFRoZSBWZXJzaW9uTnVtYmVyIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSB2ZXJzaW9uTnVtYmVyOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgcnVsZS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclJ1bGVTbmFwc2hvdEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgUnVsZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgcnVsZUlkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVmVyc2lvbk51bWJlciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHNjb3BlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyU2NvcGVBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgU2NvcGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgc2NvcGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHNjb3BlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyU2NvcGVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFNjb3BlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBzY29wZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBzY29wZS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclNjb3BlU25hcHNob3RBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgU2NvcGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgc2NvcGVJZDogc3RyaW5nO1xuXHQvKiogVGhlIFZlcnNpb25OdW1iZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBzY29wZS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclNjb3BlU25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFNjb3BlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVmVyc2lvbk51bWJlciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRlbXBsYXRlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyVGVtcGxhdGVBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgVGVtcGxhdGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgdGVtcGxhdGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHRlbXBsYXRlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyVGVtcGxhdGVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFRlbXBsYXRlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSB0ZW1wbGF0ZS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclRlbXBsYXRlU25hcHNob3RBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgVGVtcGxhdGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgdGVtcGxhdGVJZDogc3RyaW5nO1xuXHQvKiogVGhlIFZlcnNpb25OdW1iZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSB0ZW1wbGF0ZS1zbmFwc2hvdCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1NlY3VyaXR5TWFuYWdlclRlbXBsYXRlU25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFRlbXBsYXRlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVmVyc2lvbk51bWJlciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHZlcnNpb25OdW1iZXI6IHN0cmluZztcbn1cblxuY29uc3QgRGVwbG95bWVudEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpkZXBsb3ltZW50Oig/PGRlcGxveW1lbnRJZD5bXjovP10rKSQvO1xuY29uc3QgRGVwbG95bWVudFNuYXBzaG90QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmRlcGxveW1lbnQ6KD88ZGVwbG95bWVudElkPlteOi8/XSspOig/PHZlcnNpb25OdW1iZXI+W146Lz9dKykkLztcbmNvbnN0IFBvbGljeUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpwb2xpY3k6KD88cG9saWN5SWQ+W146Lz9dKykkLztcbmNvbnN0IFBvbGljeVNuYXBzaG90QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnBvbGljeTooPzxwb2xpY3lJZD5bXjovP10rKTooPzx2ZXJzaW9uTnVtYmVyPlteOi8/XSspJC87XG5jb25zdCBSdWxlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnJ1bGU6KD88cnVsZUlkPlteOi8/XSspJC87XG5jb25zdCBSdWxlU25hcHNob3RBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6cnVsZTooPzxydWxlSWQ+W146Lz9dKyk6KD88dmVyc2lvbk51bWJlcj5bXjovP10rKSQvO1xuY29uc3QgU2NvcGVBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6c2NvcGU6KD88c2NvcGVJZD5bXjovP10rKSQvO1xuY29uc3QgU2NvcGVTbmFwc2hvdEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpzY29wZTooPzxzY29wZUlkPlteOi8/XSspOig/PHZlcnNpb25OdW1iZXI+W146Lz9dKykkLztcbmNvbnN0IFRlbXBsYXRlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnRlbXBsYXRlOig/PHRlbXBsYXRlSWQ+W146Lz9dKykkLztcbmNvbnN0IFRlbXBsYXRlU25hcHNob3RBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6dGVtcGxhdGU6KD88dGVtcGxhdGVJZD5bXjovP10rKTooPzx2ZXJzaW9uTnVtYmVyPlteOi8/XSspJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3IgbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJSZXNvdXJjZXMge1xuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGRlcGxveW1lbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZGVwbG95bWVudChwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlckRlcGxveW1lbnRBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRlcGxveW1lbnQ6JHtwcm9wcy5kZXBsb3ltZW50SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGRlcGxveW1lbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZERlcGxveW1lbnRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRGVwbG95bWVudEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBkZXBsb3ltZW50IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZURlcGxveW1lbnRBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE5ldHdvcmtTZWN1cml0eU1hbmFnZXJEZXBsb3ltZW50QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBEZXBsb3ltZW50QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlcGxveW1lbnQgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZGVwbG95bWVudElkOiBtYXRjaC5ncm91cHMhLmRlcGxveW1lbnRJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBkZXBsb3ltZW50LXNuYXBzaG90IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGRlcGxveW1lbnRTbmFwc2hvdChcblx0XHRwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlckRlcGxveW1lbnRTbmFwc2hvdEFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXBsb3ltZW50OiR7cHJvcHMuZGVwbG95bWVudElkfToke3Byb3BzLnZlcnNpb25OdW1iZXJ9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGRlcGxveW1lbnQtc25hcHNob3QgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZERlcGxveW1lbnRTbmFwc2hvdEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBEZXBsb3ltZW50U25hcHNob3RBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZGVwbG95bWVudC1zbmFwc2hvdCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VEZXBsb3ltZW50U25hcHNob3RBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE5ldHdvcmtTZWN1cml0eU1hbmFnZXJEZXBsb3ltZW50U25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IERlcGxveW1lbnRTbmFwc2hvdEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXBsb3ltZW50LXNuYXBzaG90IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRlcGxveW1lbnRJZDogbWF0Y2guZ3JvdXBzIS5kZXBsb3ltZW50SWQsXG5cdFx0XHR2ZXJzaW9uTnVtYmVyOiBtYXRjaC5ncm91cHMhLnZlcnNpb25OdW1iZXIsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgcG9saWN5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHBvbGljeShwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlclBvbGljeUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cG9saWN5OiR7cHJvcHMucG9saWN5SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHBvbGljeSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkUG9saWN5QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFBvbGljeUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBwb2xpY3kgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUG9saWN5QXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyUG9saWN5QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBQb2xpY3lBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9saWN5IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHBvbGljeUlkOiBtYXRjaC5ncm91cHMhLnBvbGljeUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHBvbGljeS1zbmFwc2hvdCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBwb2xpY3lTbmFwc2hvdChcblx0XHRwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlclBvbGljeVNuYXBzaG90QXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnBvbGljeToke3Byb3BzLnBvbGljeUlkfToke3Byb3BzLnZlcnNpb25OdW1iZXJ9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHBvbGljeS1zbmFwc2hvdCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkUG9saWN5U25hcHNob3RBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUG9saWN5U25hcHNob3RBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgcG9saWN5LXNuYXBzaG90IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVBvbGljeVNuYXBzaG90QXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyUG9saWN5U25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFBvbGljeVNuYXBzaG90QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBvbGljeS1zbmFwc2hvdCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRwb2xpY3lJZDogbWF0Y2guZ3JvdXBzIS5wb2xpY3lJZCxcblx0XHRcdHZlcnNpb25OdW1iZXI6IG1hdGNoLmdyb3VwcyEudmVyc2lvbk51bWJlcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBydWxlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHJ1bGUocHJvcHM6IE5ldHdvcmtTZWN1cml0eU1hbmFnZXJSdWxlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpydWxlOiR7cHJvcHMucnVsZUlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBydWxlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFJ1bGVBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgcnVsZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSdWxlQXJuKGFybjogc3RyaW5nKTogTmV0d29ya1NlY3VyaXR5TWFuYWdlclJ1bGVBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJ1bGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcnVsZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRydWxlSWQ6IG1hdGNoLmdyb3VwcyEucnVsZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtc25hcHNob3QgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgcnVsZVNuYXBzaG90KFxuXHRcdHByb3BzOiBOZXR3b3JrU2VjdXJpdHlNYW5hZ2VyUnVsZVNuYXBzaG90QXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnJ1bGU6JHtwcm9wcy5ydWxlSWR9OiR7cHJvcHMudmVyc2lvbk51bWJlcn1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcnVsZS1zbmFwc2hvdCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkUnVsZVNuYXBzaG90QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFJ1bGVTbmFwc2hvdEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBydWxlLXNuYXBzaG90IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVJ1bGVTbmFwc2hvdEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogTmV0d29ya1NlY3VyaXR5TWFuYWdlclJ1bGVTbmFwc2hvdEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gUnVsZVNuYXBzaG90QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJ1bGUtc25hcHNob3QgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cnVsZUlkOiBtYXRjaC5ncm91cHMhLnJ1bGVJZCxcblx0XHRcdHZlcnNpb25OdW1iZXI6IG1hdGNoLmdyb3VwcyEudmVyc2lvbk51bWJlcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBzY29wZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBzY29wZShwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlclNjb3BlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpzY29wZToke3Byb3BzLnNjb3BlSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHNjb3BlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRTY29wZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTY29wZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBzY29wZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VTY29wZUFybihhcm46IHN0cmluZyk6IE5ldHdvcmtTZWN1cml0eU1hbmFnZXJTY29wZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gU2NvcGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2NvcGUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0c2NvcGVJZDogbWF0Y2guZ3JvdXBzIS5zY29wZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHNjb3BlLXNuYXBzaG90IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHNjb3BlU25hcHNob3QoXG5cdFx0cHJvcHM6IE5ldHdvcmtTZWN1cml0eU1hbmFnZXJTY29wZVNuYXBzaG90QXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06bmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnNjb3BlOiR7cHJvcHMuc2NvcGVJZH06JHtwcm9wcy52ZXJzaW9uTnVtYmVyfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBzY29wZS1zbmFwc2hvdCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkU2NvcGVTbmFwc2hvdEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTY29wZVNuYXBzaG90QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHNjb3BlLXNuYXBzaG90IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVNjb3BlU25hcHNob3RBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IE5ldHdvcmtTZWN1cml0eU1hbmFnZXJTY29wZVNuYXBzaG90QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBTY29wZVNuYXBzaG90QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNjb3BlLXNuYXBzaG90IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHNjb3BlSWQ6IG1hdGNoLmdyb3VwcyEuc2NvcGVJZCxcblx0XHRcdHZlcnNpb25OdW1iZXI6IG1hdGNoLmdyb3VwcyEudmVyc2lvbk51bWJlcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0ZW1wbGF0ZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0ZW1wbGF0ZShwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlclRlbXBsYXRlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Om5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTp0ZW1wbGF0ZToke3Byb3BzLnRlbXBsYXRlSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHRlbXBsYXRlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUZW1wbGF0ZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZW1wbGF0ZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0ZW1wbGF0ZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VUZW1wbGF0ZUFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogTmV0d29ya1NlY3VyaXR5TWFuYWdlclRlbXBsYXRlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUZW1wbGF0ZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHR0ZW1wbGF0ZUlkOiBtYXRjaC5ncm91cHMhLnRlbXBsYXRlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgdGVtcGxhdGUtc25hcHNob3QgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgdGVtcGxhdGVTbmFwc2hvdChcblx0XHRwcm9wczogTmV0d29ya1NlY3VyaXR5TWFuYWdlclRlbXBsYXRlU25hcHNob3RBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06dGVtcGxhdGU6JHtwcm9wcy50ZW1wbGF0ZUlkfToke3Byb3BzLnZlcnNpb25OdW1iZXJ9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHRlbXBsYXRlLXNuYXBzaG90IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUZW1wbGF0ZVNuYXBzaG90QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFRlbXBsYXRlU25hcHNob3RBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgdGVtcGxhdGUtc25hcHNob3QgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVGVtcGxhdGVTbmFwc2hvdEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogTmV0d29ya1NlY3VyaXR5TWFuYWdlclRlbXBsYXRlU25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFRlbXBsYXRlU25hcHNob3RBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUtc25hcHNob3QgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0dGVtcGxhdGVJZDogbWF0Y2guZ3JvdXBzIS50ZW1wbGF0ZUlkLFxuXHRcdFx0dmVyc2lvbk51bWJlcjogbWF0Y2guZ3JvdXBzIS52ZXJzaW9uTnVtYmVyLFxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBBUEkgb3BlcmF0aW9uIHRvIHJlcXVpcmVkIElBTSBhY3Rpb25zIG1hcHBpbmcgZm9yIG5ldHdvcmstc2VjdXJpdHktbWFuYWdlci5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtTZWN1cml0eU1hbmFnZXJPcGVyYXRpb25zIHtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRGVwbG95bWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZURlcGxveW1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZURlcGxveW1lbnRcIixcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVEZXBsb3ltZW50U25hcHNob3QgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVEZXBsb3ltZW50U25hcHNob3Q6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZURlcGxveW1lbnRTbmFwc2hvdFwiLFxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVBvbGljeSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVBvbGljeTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUG9saWN5XCIsXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlUG9saWN5U25hcHNob3QgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQb2xpY3lTbmFwc2hvdDogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUG9saWN5U25hcHNob3RcIixcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUnVsZVwiLFxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVJ1bGVTbmFwc2hvdCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVJ1bGVTbmFwc2hvdDogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlUnVsZVNuYXBzaG90XCIsXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlU2NvcGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVTY29wZTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlU2NvcGVcIixcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVTY29wZVNuYXBzaG90IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU2NvcGVTbmFwc2hvdDogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6Q3JlYXRlU2NvcGVTbmFwc2hvdFwiLFxuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVRlbXBsYXRlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGVtcGxhdGU6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZVRlbXBsYXRlXCIsXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlVGVtcGxhdGVTbmFwc2hvdCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRlbXBsYXRlU25hcHNob3Q6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkNyZWF0ZVRlbXBsYXRlU25hcHNob3RcIixcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVBZG1pbkFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVBZG1pbkFjY291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZUFkbWluQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVEZXBsb3ltZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRGVwbG95bWVudDogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6RGVsZXRlRGVwbG95bWVudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVQb2xpY3kgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQb2xpY3k6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkRlbGV0ZVBvbGljeVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6RGVsZXRlUnVsZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVTY29wZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVNjb3BlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpEZWxldGVTY29wZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVUZW1wbGF0ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVRlbXBsYXRlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpEZWxldGVUZW1wbGF0ZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZW5lcmF0ZVJ1bGVDb25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgR2VuZXJhdGVSdWxlQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6R2VuZXJhdGVSdWxlQ29uZmlndXJhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRBZG1pbkFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEFkbWluQWNjb3VudDogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6R2V0QWRtaW5BY2NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldERlcGxveW1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldERlcGxveW1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkdldERlcGxveW1lbnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0UG9saWN5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRQb2xpY3k6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkdldFBvbGljeVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRSdWxlOiBzdHJpbmdbXSA9IFtcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpHZXRSdWxlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRTY29wZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0U2NvcGU6IHN0cmluZ1tdID0gW1wibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkdldFNjb3BlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUZW1wbGF0ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VGVtcGxhdGU6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkdldFRlbXBsYXRlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBZG1pbkFjY291bnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFkbWluQWNjb3VudHM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RBZG1pbkFjY291bnRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBZ2dyZWdhdGVSZXNvdXJjZVN5bmNocm9uaXphdGlvblN0YXR1c2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFnZ3JlZ2F0ZVJlc291cmNlU3luY2hyb25pemF0aW9uU3RhdHVzZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RBZ2dyZWdhdGVSZXNvdXJjZVN5bmNocm9uaXphdGlvblN0YXR1c2VzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3REZXBsb3ltZW50U25hcHNob3RzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdERlcGxveW1lbnRTbmFwc2hvdHM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3REZXBsb3ltZW50U25hcHNob3RzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3REZXBsb3ltZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXBsb3ltZW50czogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdERlcGxveW1lbnRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RQb2xpY2llcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQb2xpY2llczogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFBvbGljaWVzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RQb2xpY3lTbmFwc2hvdHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UG9saWN5U25hcHNob3RzOiBzdHJpbmdbXSA9IFtcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpMaXN0UG9saWN5U25hcHNob3RzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXNvdXJjZUFzc29jaWF0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSZXNvdXJjZUFzc29jaWF0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFJlc291cmNlQXNzb2NpYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXNvdXJjZVN5bmNocm9uaXphdGlvblN0YXR1c2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlU3luY2hyb25pemF0aW9uU3RhdHVzZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RSZXNvdXJjZVN5bmNocm9uaXphdGlvblN0YXR1c2VzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSdWxlU25hcHNob3RzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVTbmFwc2hvdHM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RSdWxlU25hcHNob3RzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSdWxlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSdWxlczogc3RyaW5nW10gPSBbXCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFJ1bGVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0U2NvcGVTbmFwc2hvdHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0U2NvcGVTbmFwc2hvdHM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RTY29wZVNuYXBzaG90c1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0U2NvcGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFNjb3Blczogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFNjb3Blc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0VGFnc0ZvclJlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0VGVtcGxhdGVTbmFwc2hvdHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGVtcGxhdGVTbmFwc2hvdHM6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOkxpc3RUZW1wbGF0ZVNuYXBzaG90c1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0VGVtcGxhdGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRlbXBsYXRlczogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6TGlzdFRlbXBsYXRlc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRBZG1pbkFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRBZG1pbkFjY291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlB1dEFkbWluQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBUYWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVbnRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VW50YWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVEZXBsb3ltZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRGVwbG95bWVudDogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlRGVwbG95bWVudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVQb2xpY3kgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVQb2xpY3k6IHN0cmluZ1tdID0gW1xuXHRcdFwibmV0d29yay1zZWN1cml0eS1tYW5hZ2VyOlVwZGF0ZVBvbGljeVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlUnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJuZXR3b3JrLXNlY3VyaXR5LW1hbmFnZXI6VXBkYXRlUnVsZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVTY29wZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVNjb3BlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVcGRhdGVTY29wZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVUZW1wbGF0ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRlbXBsYXRlOiBzdHJpbmdbXSA9IFtcblx0XHRcIm5ldHdvcmstc2VjdXJpdHktbWFuYWdlcjpVcGRhdGVUZW1wbGF0ZVwiLFxuXHRdO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbiBrZXkgY29uc3RhbnRzIGFuZCBidWlsZGVycyBmb3IgbmV0d29yay1zZWN1cml0eS1tYW5hZ2VyLlxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya1NlY3VyaXR5TWFuYWdlckNvbmRpdGlvbnMge1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRGVwbG95bWVudCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVEZXBsb3ltZW50Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVEZXBsb3ltZW50U25hcHNob3QgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGVwbG95bWVudFNuYXBzaG90Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVQb2xpY3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUG9saWN5Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVQb2xpY3lTbmFwc2hvdCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQb2xpY3lTbmFwc2hvdENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlUnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVSdWxlU25hcHNob3QgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUnVsZVNuYXBzaG90Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVTY29wZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVTY29wZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlU2NvcGVTbmFwc2hvdCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVTY29wZVNuYXBzaG90Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVUZW1wbGF0ZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZW1wbGF0ZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVGVtcGxhdGVTbmFwc2hvdCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUZW1wbGF0ZVNuYXBzaG90Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0UmVzb3VyY2VBc3NvY2lhdGlvbnMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlQXNzb2NpYXRpb25zQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0UmVzb3VyY2VTeW5jaHJvbml6YXRpb25TdGF0dXNlcyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVzb3VyY2VTeW5jaHJvbml6YXRpb25TdGF0dXNlc0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgTGlzdFRhZ3NGb3JSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFnc0ZvclJlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBUYWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVW50YWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVFVRVNUX1RBRyA9IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVTT1VSQ0VfVEFHID0gXCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6VGFnS2V5cyAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19UQUdfS0VZUyA9IFwiYXdzOlRhZ0tleXNcIjtcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXF1ZXN0VGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXNvdXJjZVRhZyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpUYWdLZXlzYC5cblx0ICovXG5cdHN0YXRpYyB0YWdLZXlzKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImF3czpUYWdLZXlzXCI6IHZhbHVlcyB9IH07XG5cdH1cbn1cbiJdfQ==
|