aws-cdk-lib 2.175.1__py3-none-any.whl → 2.177.0__py3-none-any.whl

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.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (64) hide show
  1. aws_cdk/__init__.py +26 -7
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.175.1.jsii.tgz → aws-cdk-lib@2.177.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_apigatewayv2_integrations/__init__.py +161 -9
  5. aws_cdk/aws_appconfig/__init__.py +106 -24
  6. aws_cdk/aws_appsync/__init__.py +4 -3
  7. aws_cdk/aws_backup/__init__.py +18 -84
  8. aws_cdk/aws_batch/__init__.py +4 -2
  9. aws_cdk/aws_bedrock/__init__.py +5395 -2508
  10. aws_cdk/aws_cleanrooms/__init__.py +77 -34
  11. aws_cdk/aws_cloudformation/__init__.py +4 -2
  12. aws_cdk/aws_cloudfront/__init__.py +12 -2
  13. aws_cdk/aws_cloudfront/experimental/__init__.py +1 -1
  14. aws_cdk/aws_cloudfront_origins/__init__.py +33 -2
  15. aws_cdk/aws_cloudwatch/__init__.py +53 -49
  16. aws_cdk/aws_codebuild/__init__.py +36 -0
  17. aws_cdk/aws_codepipeline/__init__.py +35 -0
  18. aws_cdk/aws_cognito/__init__.py +285 -253
  19. aws_cdk/aws_customerprofiles/__init__.py +1060 -0
  20. aws_cdk/aws_datazone/__init__.py +195 -125
  21. aws_cdk/aws_docdb/__init__.py +29 -9
  22. aws_cdk/aws_dynamodb/__init__.py +77 -58
  23. aws_cdk/aws_ec2/__init__.py +16 -11
  24. aws_cdk/aws_ecs/__init__.py +127 -43
  25. aws_cdk/aws_efs/__init__.py +5 -5
  26. aws_cdk/aws_eks/__init__.py +24 -3
  27. aws_cdk/aws_elasticloadbalancingv2/__init__.py +41 -5
  28. aws_cdk/aws_emrserverless/__init__.py +86 -0
  29. aws_cdk/aws_fms/__init__.py +42 -0
  30. aws_cdk/aws_gamelift/__init__.py +8 -10
  31. aws_cdk/aws_healthlake/__init__.py +36 -40
  32. aws_cdk/aws_iam/__init__.py +8 -0
  33. aws_cdk/aws_imagebuilder/__init__.py +62 -48
  34. aws_cdk/aws_lambda/__init__.py +21 -8
  35. aws_cdk/aws_lambda_event_sources/__init__.py +9 -9
  36. aws_cdk/aws_lex/__init__.py +105 -0
  37. aws_cdk/aws_logs/__init__.py +59 -59
  38. aws_cdk/aws_mediaconvert/__init__.py +7 -3
  39. aws_cdk/aws_notifications/__init__.py +1390 -0
  40. aws_cdk/aws_notificationscontacts/__init__.py +593 -0
  41. aws_cdk/aws_organizations/__init__.py +5 -9
  42. aws_cdk/aws_rds/__init__.py +99 -30
  43. aws_cdk/aws_redshift/__init__.py +9 -5
  44. aws_cdk/aws_resiliencehub/__init__.py +41 -0
  45. aws_cdk/aws_route53/__init__.py +4 -4
  46. aws_cdk/aws_route53_targets/__init__.py +15 -15
  47. aws_cdk/aws_s3/__init__.py +794 -5
  48. aws_cdk/aws_s3_notifications/__init__.py +5 -5
  49. aws_cdk/aws_s3tables/__init__.py +2 -2
  50. aws_cdk/aws_ses/__init__.py +25 -4
  51. aws_cdk/aws_sns/__init__.py +39 -0
  52. aws_cdk/aws_ssm/__init__.py +14 -7
  53. aws_cdk/aws_ssmquicksetup/__init__.py +84 -84
  54. aws_cdk/aws_sso/__init__.py +9 -5
  55. aws_cdk/aws_synthetics/__init__.py +105 -32
  56. aws_cdk/cloud_assembly_schema/__init__.py +63 -4
  57. aws_cdk/cx_api/__init__.py +69 -8
  58. {aws_cdk_lib-2.175.1.dist-info → aws_cdk_lib-2.177.0.dist-info}/METADATA +3 -3
  59. {aws_cdk_lib-2.175.1.dist-info → aws_cdk_lib-2.177.0.dist-info}/RECORD +63 -62
  60. aws_cdk/aws_iot1click/__init__.py +0 -1193
  61. {aws_cdk_lib-2.175.1.dist-info → aws_cdk_lib-2.177.0.dist-info}/LICENSE +0 -0
  62. {aws_cdk_lib-2.175.1.dist-info → aws_cdk_lib-2.177.0.dist-info}/NOTICE +0 -0
  63. {aws_cdk_lib-2.175.1.dist-info → aws_cdk_lib-2.177.0.dist-info}/WHEEL +0 -0
  64. {aws_cdk_lib-2.175.1.dist-info → aws_cdk_lib-2.177.0.dist-info}/top_level.txt +0 -0
@@ -98,6 +98,26 @@ user = iam.User(self, "MyUser")
98
98
  env.grant_read_config(user)
99
99
  ```
100
100
 
101
+ ### Deletion Protection Check
102
+
103
+ You can enable [deletion protection](https://docs.aws.amazon.com/appconfig/latest/userguide/deletion-protection.html) on the environment by setting the `deletionProtectionCheck` property.
104
+
105
+ * ACCOUNT_DEFAULT: The default setting, which uses account-level deletion protection. To configure account-level deletion protection, use the UpdateAccountSettings API.
106
+ * APPLY: Instructs the deletion protection check to run, even if deletion protection is disabled at the account level. APPLY also forces the deletion protection check to run against resources created in the past hour, which are normally excluded from deletion protection checks.
107
+ * BYPASS: Instructs AWS AppConfig to bypass the deletion protection check and delete an environment even if deletion protection would have otherwise prevented it.
108
+
109
+ ```python
110
+ # application: appconfig.Application
111
+ # alarm: cloudwatch.Alarm
112
+ # composite_alarm: cloudwatch.CompositeAlarm
113
+
114
+
115
+ appconfig.Environment(self, "MyEnvironment",
116
+ application=application,
117
+ deletion_protection_check=appconfig.DeletionProtectionCheck.APPLY
118
+ )
119
+ ```
120
+
101
121
  ## Deployment Strategy
102
122
 
103
123
  [AWS AppConfig Deployment Strategy Documentation](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-deployment-strategy.html)
@@ -2067,14 +2087,6 @@ class CfnDeployment(
2067
2087
  '''
2068
2088
  return typing.cast(builtins.str, jsii.get(self, "attrDeploymentNumber"))
2069
2089
 
2070
- @builtins.property
2071
- @jsii.member(jsii_name="attrId")
2072
- def attr_id(self) -> builtins.str:
2073
- '''
2074
- :cloudformationAttribute: Id
2075
- '''
2076
- return typing.cast(builtins.str, jsii.get(self, "attrId"))
2077
-
2078
2090
  @builtins.property
2079
2091
  @jsii.member(jsii_name="cdkTagManager")
2080
2092
  def cdk_tag_manager(self) -> _TagManager_0a598cb3:
@@ -5480,6 +5492,40 @@ class ConfigurationType(enum.Enum):
5480
5492
  '''
5481
5493
 
5482
5494
 
5495
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_appconfig.DeletionProtectionCheck")
5496
+ class DeletionProtectionCheck(enum.Enum):
5497
+ '''The deletion protection check options.
5498
+
5499
+ :exampleMetadata: infused
5500
+
5501
+ Example::
5502
+
5503
+ # application: appconfig.Application
5504
+ # alarm: cloudwatch.Alarm
5505
+ # composite_alarm: cloudwatch.CompositeAlarm
5506
+
5507
+
5508
+ appconfig.Environment(self, "MyEnvironment",
5509
+ application=application,
5510
+ deletion_protection_check=appconfig.DeletionProtectionCheck.APPLY
5511
+ )
5512
+ '''
5513
+
5514
+ ACCOUNT_DEFAULT = "ACCOUNT_DEFAULT"
5515
+ '''The default setting, which uses account-level deletion protection.
5516
+
5517
+ To configure account-level deletion protection, use the UpdateAccountSettings API.
5518
+ '''
5519
+ APPLY = "APPLY"
5520
+ '''Instructs the deletion protection check to run, even if deletion protection is disabled at the account level.
5521
+
5522
+ APPLY also forces the deletion protection check to run against resources created in the past hour,
5523
+ which are normally excluded from deletion protection checks.
5524
+ '''
5525
+ BYPASS = "BYPASS"
5526
+ '''Instructs AWS AppConfig to bypass the deletion protection check and delete an environment or a configuration profile even if deletion protection would have otherwise prevented it.'''
5527
+
5528
+
5483
5529
  class DeploymentStrategyId(
5484
5530
  metaclass=jsii.JSIIAbstractClass,
5485
5531
  jsii_type="aws-cdk-lib.aws_appconfig.DeploymentStrategyId",
@@ -5788,6 +5834,7 @@ class EnvironmentAttributes:
5788
5834
  jsii_type="aws-cdk-lib.aws_appconfig.EnvironmentOptions",
5789
5835
  jsii_struct_bases=[],
5790
5836
  name_mapping={
5837
+ "deletion_protection_check": "deletionProtectionCheck",
5791
5838
  "description": "description",
5792
5839
  "environment_name": "environmentName",
5793
5840
  "monitors": "monitors",
@@ -5797,12 +5844,14 @@ class EnvironmentOptions:
5797
5844
  def __init__(
5798
5845
  self,
5799
5846
  *,
5847
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
5800
5848
  description: typing.Optional[builtins.str] = None,
5801
5849
  environment_name: typing.Optional[builtins.str] = None,
5802
5850
  monitors: typing.Optional[typing.Sequence["Monitor"]] = None,
5803
5851
  ) -> None:
5804
5852
  '''Options for the Environment construct.
5805
5853
 
5854
+ :param deletion_protection_check: A property to prevent accidental deletion of active environments. Default: undefined - AppConfig default is ACCOUNT_DEFAULT
5806
5855
  :param description: The description of the environment. Default: - No description.
5807
5856
  :param environment_name: The name of the environment. Default: - A name is generated.
5808
5857
  :param monitors: The monitors for the environment. Default: - No monitors.
@@ -5818,6 +5867,7 @@ class EnvironmentOptions:
5818
5867
  # monitor: appconfig.Monitor
5819
5868
 
5820
5869
  environment_options = appconfig.EnvironmentOptions(
5870
+ deletion_protection_check=appconfig.DeletionProtectionCheck.ACCOUNT_DEFAULT,
5821
5871
  description="description",
5822
5872
  environment_name="environmentName",
5823
5873
  monitors=[monitor]
@@ -5825,10 +5875,13 @@ class EnvironmentOptions:
5825
5875
  '''
5826
5876
  if __debug__:
5827
5877
  type_hints = typing.get_type_hints(_typecheckingstub__fbb7b0217b9bc7608bc896aa9827a29bb06de82b32c07cf8d98954734cdae547)
5878
+ check_type(argname="argument deletion_protection_check", value=deletion_protection_check, expected_type=type_hints["deletion_protection_check"])
5828
5879
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
5829
5880
  check_type(argname="argument environment_name", value=environment_name, expected_type=type_hints["environment_name"])
5830
5881
  check_type(argname="argument monitors", value=monitors, expected_type=type_hints["monitors"])
5831
5882
  self._values: typing.Dict[builtins.str, typing.Any] = {}
5883
+ if deletion_protection_check is not None:
5884
+ self._values["deletion_protection_check"] = deletion_protection_check
5832
5885
  if description is not None:
5833
5886
  self._values["description"] = description
5834
5887
  if environment_name is not None:
@@ -5836,6 +5889,15 @@ class EnvironmentOptions:
5836
5889
  if monitors is not None:
5837
5890
  self._values["monitors"] = monitors
5838
5891
 
5892
+ @builtins.property
5893
+ def deletion_protection_check(self) -> typing.Optional[DeletionProtectionCheck]:
5894
+ '''A property to prevent accidental deletion of active environments.
5895
+
5896
+ :default: undefined - AppConfig default is ACCOUNT_DEFAULT
5897
+ '''
5898
+ result = self._values.get("deletion_protection_check")
5899
+ return typing.cast(typing.Optional[DeletionProtectionCheck], result)
5900
+
5839
5901
  @builtins.property
5840
5902
  def description(self) -> typing.Optional[builtins.str]:
5841
5903
  '''The description of the environment.
@@ -5879,6 +5941,7 @@ class EnvironmentOptions:
5879
5941
  jsii_type="aws-cdk-lib.aws_appconfig.EnvironmentProps",
5880
5942
  jsii_struct_bases=[EnvironmentOptions],
5881
5943
  name_mapping={
5944
+ "deletion_protection_check": "deletionProtectionCheck",
5882
5945
  "description": "description",
5883
5946
  "environment_name": "environmentName",
5884
5947
  "monitors": "monitors",
@@ -5889,6 +5952,7 @@ class EnvironmentProps(EnvironmentOptions):
5889
5952
  def __init__(
5890
5953
  self,
5891
5954
  *,
5955
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
5892
5956
  description: typing.Optional[builtins.str] = None,
5893
5957
  environment_name: typing.Optional[builtins.str] = None,
5894
5958
  monitors: typing.Optional[typing.Sequence["Monitor"]] = None,
@@ -5896,6 +5960,7 @@ class EnvironmentProps(EnvironmentOptions):
5896
5960
  ) -> None:
5897
5961
  '''Properties for the Environment construct.
5898
5962
 
5963
+ :param deletion_protection_check: A property to prevent accidental deletion of active environments. Default: undefined - AppConfig default is ACCOUNT_DEFAULT
5899
5964
  :param description: The description of the environment. Default: - No description.
5900
5965
  :param environment_name: The name of the environment. Default: - A name is generated.
5901
5966
  :param monitors: The monitors for the environment. Default: - No monitors.
@@ -5910,20 +5975,15 @@ class EnvironmentProps(EnvironmentOptions):
5910
5975
  application=app
5911
5976
  )
5912
5977
 
5913
- appconfig.HostedConfiguration(self, "MyFirstHostedConfig",
5914
- application=app,
5915
- deploy_to=[env],
5916
- content=appconfig.ConfigurationContent.from_inline_text("This is my first configuration content.")
5917
- )
5918
-
5919
- appconfig.HostedConfiguration(self, "MySecondHostedConfig",
5978
+ appconfig.HostedConfiguration(self, "MyHostedConfig",
5920
5979
  application=app,
5921
5980
  deploy_to=[env],
5922
- content=appconfig.ConfigurationContent.from_inline_text("This is my second configuration content.")
5981
+ content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content.")
5923
5982
  )
5924
5983
  '''
5925
5984
  if __debug__:
5926
5985
  type_hints = typing.get_type_hints(_typecheckingstub__70814b8db38d5e11a0b33e43663913fb290e190ace3191585fc4d0bd4c97bfff)
5986
+ check_type(argname="argument deletion_protection_check", value=deletion_protection_check, expected_type=type_hints["deletion_protection_check"])
5927
5987
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
5928
5988
  check_type(argname="argument environment_name", value=environment_name, expected_type=type_hints["environment_name"])
5929
5989
  check_type(argname="argument monitors", value=monitors, expected_type=type_hints["monitors"])
@@ -5931,6 +5991,8 @@ class EnvironmentProps(EnvironmentOptions):
5931
5991
  self._values: typing.Dict[builtins.str, typing.Any] = {
5932
5992
  "application": application,
5933
5993
  }
5994
+ if deletion_protection_check is not None:
5995
+ self._values["deletion_protection_check"] = deletion_protection_check
5934
5996
  if description is not None:
5935
5997
  self._values["description"] = description
5936
5998
  if environment_name is not None:
@@ -5938,6 +6000,15 @@ class EnvironmentProps(EnvironmentOptions):
5938
6000
  if monitors is not None:
5939
6001
  self._values["monitors"] = monitors
5940
6002
 
6003
+ @builtins.property
6004
+ def deletion_protection_check(self) -> typing.Optional[DeletionProtectionCheck]:
6005
+ '''A property to prevent accidental deletion of active environments.
6006
+
6007
+ :default: undefined - AppConfig default is ACCOUNT_DEFAULT
6008
+ '''
6009
+ result = self._values.get("deletion_protection_check")
6010
+ return typing.cast(typing.Optional[DeletionProtectionCheck], result)
6011
+
5941
6012
  @builtins.property
5942
6013
  def description(self) -> typing.Optional[builtins.str]:
5943
6014
  '''The description of the environment.
@@ -6836,6 +6907,7 @@ class IApplication(_IResource_c80c4260, typing_extensions.Protocol):
6836
6907
  self,
6837
6908
  id: builtins.str,
6838
6909
  *,
6910
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
6839
6911
  description: typing.Optional[builtins.str] = None,
6840
6912
  environment_name: typing.Optional[builtins.str] = None,
6841
6913
  monitors: typing.Optional[typing.Sequence["Monitor"]] = None,
@@ -6843,6 +6915,7 @@ class IApplication(_IResource_c80c4260, typing_extensions.Protocol):
6843
6915
  '''Adds an environment.
6844
6916
 
6845
6917
  :param id: The name of the environment construct.
6918
+ :param deletion_protection_check: A property to prevent accidental deletion of active environments. Default: undefined - AppConfig default is ACCOUNT_DEFAULT
6846
6919
  :param description: The description of the environment. Default: - No description.
6847
6920
  :param environment_name: The name of the environment. Default: - A name is generated.
6848
6921
  :param monitors: The monitors for the environment. Default: - No monitors.
@@ -7157,6 +7230,7 @@ class _IApplicationProxy(
7157
7230
  self,
7158
7231
  id: builtins.str,
7159
7232
  *,
7233
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
7160
7234
  description: typing.Optional[builtins.str] = None,
7161
7235
  environment_name: typing.Optional[builtins.str] = None,
7162
7236
  monitors: typing.Optional[typing.Sequence["Monitor"]] = None,
@@ -7164,6 +7238,7 @@ class _IApplicationProxy(
7164
7238
  '''Adds an environment.
7165
7239
 
7166
7240
  :param id: The name of the environment construct.
7241
+ :param deletion_protection_check: A property to prevent accidental deletion of active environments. Default: undefined - AppConfig default is ACCOUNT_DEFAULT
7167
7242
  :param description: The description of the environment. Default: - No description.
7168
7243
  :param environment_name: The name of the environment. Default: - A name is generated.
7169
7244
  :param monitors: The monitors for the environment. Default: - No monitors.
@@ -7172,6 +7247,7 @@ class _IApplicationProxy(
7172
7247
  type_hints = typing.get_type_hints(_typecheckingstub__eb165be70f31f79374053f908981a5e02c37cbdefd4d2123a7e32165fb887042)
7173
7248
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
7174
7249
  options = EnvironmentOptions(
7250
+ deletion_protection_check=deletion_protection_check,
7175
7251
  description=description,
7176
7252
  environment_name=environment_name,
7177
7253
  monitors=monitors,
@@ -11111,6 +11187,7 @@ class Application(
11111
11187
  self,
11112
11188
  id: builtins.str,
11113
11189
  *,
11190
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
11114
11191
  description: typing.Optional[builtins.str] = None,
11115
11192
  environment_name: typing.Optional[builtins.str] = None,
11116
11193
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -11118,6 +11195,7 @@ class Application(
11118
11195
  '''Adds an environment.
11119
11196
 
11120
11197
  :param id: -
11198
+ :param deletion_protection_check: A property to prevent accidental deletion of active environments. Default: undefined - AppConfig default is ACCOUNT_DEFAULT
11121
11199
  :param description: The description of the environment. Default: - No description.
11122
11200
  :param environment_name: The name of the environment. Default: - A name is generated.
11123
11201
  :param monitors: The monitors for the environment. Default: - No monitors.
@@ -11126,6 +11204,7 @@ class Application(
11126
11204
  type_hints = typing.get_type_hints(_typecheckingstub__fbd38f9aba7df4d45f96d0029239a2f96f2fcad218a295b86c260e75cde6f20a)
11127
11205
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
11128
11206
  options = EnvironmentOptions(
11207
+ deletion_protection_check=deletion_protection_check,
11129
11208
  description=description,
11130
11209
  environment_name=environment_name,
11131
11210
  monitors=monitors,
@@ -11736,16 +11815,10 @@ class Environment(
11736
11815
  application=app
11737
11816
  )
11738
11817
 
11739
- appconfig.HostedConfiguration(self, "MyFirstHostedConfig",
11740
- application=app,
11741
- deploy_to=[env],
11742
- content=appconfig.ConfigurationContent.from_inline_text("This is my first configuration content.")
11743
- )
11744
-
11745
- appconfig.HostedConfiguration(self, "MySecondHostedConfig",
11818
+ appconfig.HostedConfiguration(self, "MyHostedConfig",
11746
11819
  application=app,
11747
11820
  deploy_to=[env],
11748
- content=appconfig.ConfigurationContent.from_inline_text("This is my second configuration content.")
11821
+ content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content.")
11749
11822
  )
11750
11823
  '''
11751
11824
 
@@ -11755,6 +11828,7 @@ class Environment(
11755
11828
  id: builtins.str,
11756
11829
  *,
11757
11830
  application: IApplication,
11831
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
11758
11832
  description: typing.Optional[builtins.str] = None,
11759
11833
  environment_name: typing.Optional[builtins.str] = None,
11760
11834
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -11763,6 +11837,7 @@ class Environment(
11763
11837
  :param scope: -
11764
11838
  :param id: -
11765
11839
  :param application: The application to be associated with the environment.
11840
+ :param deletion_protection_check: A property to prevent accidental deletion of active environments. Default: undefined - AppConfig default is ACCOUNT_DEFAULT
11766
11841
  :param description: The description of the environment. Default: - No description.
11767
11842
  :param environment_name: The name of the environment. Default: - A name is generated.
11768
11843
  :param monitors: The monitors for the environment. Default: - No monitors.
@@ -11773,6 +11848,7 @@ class Environment(
11773
11848
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
11774
11849
  props = EnvironmentProps(
11775
11850
  application=application,
11851
+ deletion_protection_check=deletion_protection_check,
11776
11852
  description=description,
11777
11853
  environment_name=environment_name,
11778
11854
  monitors=monitors,
@@ -13321,6 +13397,7 @@ __all__ = [
13321
13397
  "ConfigurationSource",
13322
13398
  "ConfigurationSourceType",
13323
13399
  "ConfigurationType",
13400
+ "DeletionProtectionCheck",
13324
13401
  "DeploymentStrategy",
13325
13402
  "DeploymentStrategyId",
13326
13403
  "DeploymentStrategyProps",
@@ -14199,6 +14276,7 @@ def _typecheckingstub__37c9050d36cf121416083b853e136100e069c334aadd707074579edb0
14199
14276
 
14200
14277
  def _typecheckingstub__fbb7b0217b9bc7608bc896aa9827a29bb06de82b32c07cf8d98954734cdae547(
14201
14278
  *,
14279
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
14202
14280
  description: typing.Optional[builtins.str] = None,
14203
14281
  environment_name: typing.Optional[builtins.str] = None,
14204
14282
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -14208,6 +14286,7 @@ def _typecheckingstub__fbb7b0217b9bc7608bc896aa9827a29bb06de82b32c07cf8d98954734
14208
14286
 
14209
14287
  def _typecheckingstub__70814b8db38d5e11a0b33e43663913fb290e190ace3191585fc4d0bd4c97bfff(
14210
14288
  *,
14289
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
14211
14290
  description: typing.Optional[builtins.str] = None,
14212
14291
  environment_name: typing.Optional[builtins.str] = None,
14213
14292
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -14285,6 +14364,7 @@ def _typecheckingstub__7cba9d5464f3f4cbc208d892995245e5078fc2cc794651c71942035a9
14285
14364
  def _typecheckingstub__eb165be70f31f79374053f908981a5e02c37cbdefd4d2123a7e32165fb887042(
14286
14365
  id: builtins.str,
14287
14366
  *,
14367
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
14288
14368
  description: typing.Optional[builtins.str] = None,
14289
14369
  environment_name: typing.Optional[builtins.str] = None,
14290
14370
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -14955,6 +15035,7 @@ def _typecheckingstub__f23af9ea4630280fc41549b208a41050e1d321a3300899bad1754e76f
14955
15035
  def _typecheckingstub__fbd38f9aba7df4d45f96d0029239a2f96f2fcad218a295b86c260e75cde6f20a(
14956
15036
  id: builtins.str,
14957
15037
  *,
15038
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
14958
15039
  description: typing.Optional[builtins.str] = None,
14959
15040
  environment_name: typing.Optional[builtins.str] = None,
14960
15041
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -15146,6 +15227,7 @@ def _typecheckingstub__09c6baa2088c107dc1834ea8f2a8c0f35612bf3782c77c3ef6879f993
15146
15227
  id: builtins.str,
15147
15228
  *,
15148
15229
  application: IApplication,
15230
+ deletion_protection_check: typing.Optional[DeletionProtectionCheck] = None,
15149
15231
  description: typing.Optional[builtins.str] = None,
15150
15232
  environment_name: typing.Optional[builtins.str] = None,
15151
15233
  monitors: typing.Optional[typing.Sequence[Monitor]] = None,
@@ -24,6 +24,7 @@ type demo {
24
24
  }
25
25
  type Query {
26
26
  getDemos: [ demo! ]
27
+ getDemosConsistent: [demo!]
27
28
  }
28
29
  input DemoInput {
29
30
  version: String!
@@ -4914,7 +4915,7 @@ class CfnDataSource(
4914
4915
  :param metrics_config: Enables or disables enhanced data source metrics for specified data sources. Note that ``MetricsConfig`` won't be used unless the ``dataSourceLevelMetricsBehavior`` value is set to ``PER_DATA_SOURCE_METRICS`` . If the ``dataSourceLevelMetricsBehavior`` is set to ``FULL_REQUEST_DATA_SOURCE_METRICS`` instead, ``MetricsConfig`` will be ignored. However, you can still set its value. ``MetricsConfig`` can be ``ENABLED`` or ``DISABLED`` .
4915
4916
  :param open_search_service_config: AWS Region and Endpoints for an Amazon OpenSearch Service domain in your account.
4916
4917
  :param relational_database_config: Relational Database configuration of the relational database data source.
4917
- :param service_role_arn: The AWS Identity and Access Management service role ARN for the data source. The system assumes this role when accessing the data source. Required if ``Type`` is specified as ``AWS_LAMBDA`` , ``AMAZON_DYNAMODB`` , ``AMAZON_ELASTICSEARCH`` , ``AMAZON_EVENTBRIDGE`` , or ``AMAZON_OPENSEARCH_SERVICE`` .
4918
+ :param service_role_arn: The AWS Identity and Access Management service role ARN for the data source. The system assumes this role when accessing the data source. Required if ``Type`` is specified as ``AWS_LAMBDA`` , ``AMAZON_DYNAMODB`` , ``AMAZON_ELASTICSEARCH`` , ``AMAZON_EVENTBRIDGE`` , ``AMAZON_OPENSEARCH_SERVICE`` , ``RELATIONAL_DATABASE`` , or ``AMAZON_BEDROCK_RUNTIME`` .
4918
4919
  '''
4919
4920
  if __debug__:
4920
4921
  type_hints = typing.get_type_hints(_typecheckingstub__f2dc8968068d09d9cb599cea5efad1a18016c4eca4fcc6c15e6169a0891e2678)
@@ -6182,7 +6183,7 @@ class CfnDataSourceProps:
6182
6183
  :param metrics_config: Enables or disables enhanced data source metrics for specified data sources. Note that ``MetricsConfig`` won't be used unless the ``dataSourceLevelMetricsBehavior`` value is set to ``PER_DATA_SOURCE_METRICS`` . If the ``dataSourceLevelMetricsBehavior`` is set to ``FULL_REQUEST_DATA_SOURCE_METRICS`` instead, ``MetricsConfig`` will be ignored. However, you can still set its value. ``MetricsConfig`` can be ``ENABLED`` or ``DISABLED`` .
6183
6184
  :param open_search_service_config: AWS Region and Endpoints for an Amazon OpenSearch Service domain in your account.
6184
6185
  :param relational_database_config: Relational Database configuration of the relational database data source.
6185
- :param service_role_arn: The AWS Identity and Access Management service role ARN for the data source. The system assumes this role when accessing the data source. Required if ``Type`` is specified as ``AWS_LAMBDA`` , ``AMAZON_DYNAMODB`` , ``AMAZON_ELASTICSEARCH`` , ``AMAZON_EVENTBRIDGE`` , or ``AMAZON_OPENSEARCH_SERVICE`` .
6186
+ :param service_role_arn: The AWS Identity and Access Management service role ARN for the data source. The system assumes this role when accessing the data source. Required if ``Type`` is specified as ``AWS_LAMBDA`` , ``AMAZON_DYNAMODB`` , ``AMAZON_ELASTICSEARCH`` , ``AMAZON_EVENTBRIDGE`` , ``AMAZON_OPENSEARCH_SERVICE`` , ``RELATIONAL_DATABASE`` , or ``AMAZON_BEDROCK_RUNTIME`` .
6186
6187
 
6187
6188
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html
6188
6189
  :exampleMetadata: fixture=_generated
@@ -6449,7 +6450,7 @@ class CfnDataSourceProps:
6449
6450
 
6450
6451
  The system assumes this role when accessing the data source.
6451
6452
 
6452
- Required if ``Type`` is specified as ``AWS_LAMBDA`` , ``AMAZON_DYNAMODB`` , ``AMAZON_ELASTICSEARCH`` , ``AMAZON_EVENTBRIDGE`` , or ``AMAZON_OPENSEARCH_SERVICE`` .
6453
+ Required if ``Type`` is specified as ``AWS_LAMBDA`` , ``AMAZON_DYNAMODB`` , ``AMAZON_ELASTICSEARCH`` , ``AMAZON_EVENTBRIDGE`` , ``AMAZON_OPENSEARCH_SERVICE`` , ``RELATIONAL_DATABASE`` , or ``AMAZON_BEDROCK_RUNTIME`` .
6453
6454
 
6454
6455
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn
6455
6456
  '''
@@ -4673,9 +4673,7 @@ class CfnLogicallyAirGappedBackupVault(
4673
4673
  notifications=backup.CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty(
4674
4674
  backup_vault_events=["backupVaultEvents"],
4675
4675
  sns_topic_arn="snsTopicArn"
4676
- ),
4677
- vault_state="vaultState",
4678
- vault_type="vaultType"
4676
+ )
4679
4677
  )
4680
4678
  '''
4681
4679
 
@@ -4690,8 +4688,6 @@ class CfnLogicallyAirGappedBackupVault(
4690
4688
  access_policy: typing.Any = None,
4691
4689
  backup_vault_tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4692
4690
  notifications: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
4693
- vault_state: typing.Optional[builtins.str] = None,
4694
- vault_type: typing.Optional[builtins.str] = None,
4695
4691
  ) -> None:
4696
4692
  '''
4697
4693
  :param scope: Scope in which this resource is defined.
@@ -4702,8 +4698,6 @@ class CfnLogicallyAirGappedBackupVault(
4702
4698
  :param access_policy: The backup vault access policy document in JSON format.
4703
4699
  :param backup_vault_tags: The tags to assign to the vault.
4704
4700
  :param notifications: Returns event notifications for the specified backup vault.
4705
- :param vault_state: The current state of the vault.
4706
- :param vault_type: The type of vault described.
4707
4701
  '''
4708
4702
  if __debug__:
4709
4703
  type_hints = typing.get_type_hints(_typecheckingstub__f46c2d817c43abec9e204fc8a7211b43dd15b93e11a637e67a9711664c3afd52)
@@ -4716,8 +4710,6 @@ class CfnLogicallyAirGappedBackupVault(
4716
4710
  access_policy=access_policy,
4717
4711
  backup_vault_tags=backup_vault_tags,
4718
4712
  notifications=notifications,
4719
- vault_state=vault_state,
4720
- vault_type=vault_type,
4721
4713
  )
4722
4714
 
4723
4715
  jsii.create(self.__class__, self, [scope, id, props])
@@ -4768,6 +4760,22 @@ class CfnLogicallyAirGappedBackupVault(
4768
4760
  '''
4769
4761
  return typing.cast(builtins.str, jsii.get(self, "attrEncryptionKeyArn"))
4770
4762
 
4763
+ @builtins.property
4764
+ @jsii.member(jsii_name="attrVaultState")
4765
+ def attr_vault_state(self) -> builtins.str:
4766
+ '''
4767
+ :cloudformationAttribute: VaultState
4768
+ '''
4769
+ return typing.cast(builtins.str, jsii.get(self, "attrVaultState"))
4770
+
4771
+ @builtins.property
4772
+ @jsii.member(jsii_name="attrVaultType")
4773
+ def attr_vault_type(self) -> builtins.str:
4774
+ '''
4775
+ :cloudformationAttribute: VaultType
4776
+ '''
4777
+ return typing.cast(builtins.str, jsii.get(self, "attrVaultType"))
4778
+
4771
4779
  @builtins.property
4772
4780
  @jsii.member(jsii_name="cdkTagManager")
4773
4781
  def cdk_tag_manager(self) -> _TagManager_0a598cb3:
@@ -4867,32 +4875,6 @@ class CfnLogicallyAirGappedBackupVault(
4867
4875
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4868
4876
  jsii.set(self, "notifications", value) # pyright: ignore[reportArgumentType]
4869
4877
 
4870
- @builtins.property
4871
- @jsii.member(jsii_name="vaultState")
4872
- def vault_state(self) -> typing.Optional[builtins.str]:
4873
- '''The current state of the vault.'''
4874
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "vaultState"))
4875
-
4876
- @vault_state.setter
4877
- def vault_state(self, value: typing.Optional[builtins.str]) -> None:
4878
- if __debug__:
4879
- type_hints = typing.get_type_hints(_typecheckingstub__b9497357ce276e248b82d9f2cf472851d2da1fd0eb5463b2a5d4077f02f8dbcd)
4880
- check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4881
- jsii.set(self, "vaultState", value) # pyright: ignore[reportArgumentType]
4882
-
4883
- @builtins.property
4884
- @jsii.member(jsii_name="vaultType")
4885
- def vault_type(self) -> typing.Optional[builtins.str]:
4886
- '''The type of vault described.'''
4887
- return typing.cast(typing.Optional[builtins.str], jsii.get(self, "vaultType"))
4888
-
4889
- @vault_type.setter
4890
- def vault_type(self, value: typing.Optional[builtins.str]) -> None:
4891
- if __debug__:
4892
- type_hints = typing.get_type_hints(_typecheckingstub__8e682fdcee746b5e96b0b5dbd6b5ee449285d647373dce115026158d8424881d)
4893
- check_type(argname="argument value", value=value, expected_type=type_hints["value"])
4894
- jsii.set(self, "vaultType", value) # pyright: ignore[reportArgumentType]
4895
-
4896
4878
  @jsii.data_type(
4897
4879
  jsii_type="aws-cdk-lib.aws_backup.CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty",
4898
4880
  jsii_struct_bases=[],
@@ -4979,8 +4961,6 @@ class CfnLogicallyAirGappedBackupVault(
4979
4961
  "access_policy": "accessPolicy",
4980
4962
  "backup_vault_tags": "backupVaultTags",
4981
4963
  "notifications": "notifications",
4982
- "vault_state": "vaultState",
4983
- "vault_type": "vaultType",
4984
4964
  },
4985
4965
  )
4986
4966
  class CfnLogicallyAirGappedBackupVaultProps:
@@ -4993,8 +4973,6 @@ class CfnLogicallyAirGappedBackupVaultProps:
4993
4973
  access_policy: typing.Any = None,
4994
4974
  backup_vault_tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4995
4975
  notifications: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4996
- vault_state: typing.Optional[builtins.str] = None,
4997
- vault_type: typing.Optional[builtins.str] = None,
4998
4976
  ) -> None:
4999
4977
  '''Properties for defining a ``CfnLogicallyAirGappedBackupVault``.
5000
4978
 
@@ -5004,8 +4982,6 @@ class CfnLogicallyAirGappedBackupVaultProps:
5004
4982
  :param access_policy: The backup vault access policy document in JSON format.
5005
4983
  :param backup_vault_tags: The tags to assign to the vault.
5006
4984
  :param notifications: Returns event notifications for the specified backup vault.
5007
- :param vault_state: The current state of the vault.
5008
- :param vault_type: The type of vault described.
5009
4985
 
5010
4986
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-logicallyairgappedbackupvault.html
5011
4987
  :exampleMetadata: fixture=_generated
@@ -5031,9 +5007,7 @@ class CfnLogicallyAirGappedBackupVaultProps:
5031
5007
  notifications=backup.CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty(
5032
5008
  backup_vault_events=["backupVaultEvents"],
5033
5009
  sns_topic_arn="snsTopicArn"
5034
- ),
5035
- vault_state="vaultState",
5036
- vault_type="vaultType"
5010
+ )
5037
5011
  )
5038
5012
  '''
5039
5013
  if __debug__:
@@ -5044,8 +5018,6 @@ class CfnLogicallyAirGappedBackupVaultProps:
5044
5018
  check_type(argname="argument access_policy", value=access_policy, expected_type=type_hints["access_policy"])
5045
5019
  check_type(argname="argument backup_vault_tags", value=backup_vault_tags, expected_type=type_hints["backup_vault_tags"])
5046
5020
  check_type(argname="argument notifications", value=notifications, expected_type=type_hints["notifications"])
5047
- check_type(argname="argument vault_state", value=vault_state, expected_type=type_hints["vault_state"])
5048
- check_type(argname="argument vault_type", value=vault_type, expected_type=type_hints["vault_type"])
5049
5021
  self._values: typing.Dict[builtins.str, typing.Any] = {
5050
5022
  "backup_vault_name": backup_vault_name,
5051
5023
  "max_retention_days": max_retention_days,
@@ -5057,10 +5029,6 @@ class CfnLogicallyAirGappedBackupVaultProps:
5057
5029
  self._values["backup_vault_tags"] = backup_vault_tags
5058
5030
  if notifications is not None:
5059
5031
  self._values["notifications"] = notifications
5060
- if vault_state is not None:
5061
- self._values["vault_state"] = vault_state
5062
- if vault_type is not None:
5063
- self._values["vault_type"] = vault_type
5064
5032
 
5065
5033
  @builtins.property
5066
5034
  def backup_vault_name(self) -> builtins.str:
@@ -5127,24 +5095,6 @@ class CfnLogicallyAirGappedBackupVaultProps:
5127
5095
  result = self._values.get("notifications")
5128
5096
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty]], result)
5129
5097
 
5130
- @builtins.property
5131
- def vault_state(self) -> typing.Optional[builtins.str]:
5132
- '''The current state of the vault.
5133
-
5134
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-logicallyairgappedbackupvault.html#cfn-backup-logicallyairgappedbackupvault-vaultstate
5135
- '''
5136
- result = self._values.get("vault_state")
5137
- return typing.cast(typing.Optional[builtins.str], result)
5138
-
5139
- @builtins.property
5140
- def vault_type(self) -> typing.Optional[builtins.str]:
5141
- '''The type of vault described.
5142
-
5143
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-logicallyairgappedbackupvault.html#cfn-backup-logicallyairgappedbackupvault-vaulttype
5144
- '''
5145
- result = self._values.get("vault_type")
5146
- return typing.cast(typing.Optional[builtins.str], result)
5147
-
5148
5098
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
5149
5099
  return isinstance(rhs, self.__class__) and rhs._values == self._values
5150
5100
 
@@ -8153,8 +8103,6 @@ def _typecheckingstub__f46c2d817c43abec9e204fc8a7211b43dd15b93e11a637e67a9711664
8153
8103
  access_policy: typing.Any = None,
8154
8104
  backup_vault_tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
8155
8105
  notifications: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
8156
- vault_state: typing.Optional[builtins.str] = None,
8157
- vault_type: typing.Optional[builtins.str] = None,
8158
8106
  ) -> None:
8159
8107
  """Type checking stubs"""
8160
8108
  pass
@@ -8207,18 +8155,6 @@ def _typecheckingstub__f1dc991e6a5cd9bb0776543a7419ba117220c8fec8f29ec2587f9a674
8207
8155
  """Type checking stubs"""
8208
8156
  pass
8209
8157
 
8210
- def _typecheckingstub__b9497357ce276e248b82d9f2cf472851d2da1fd0eb5463b2a5d4077f02f8dbcd(
8211
- value: typing.Optional[builtins.str],
8212
- ) -> None:
8213
- """Type checking stubs"""
8214
- pass
8215
-
8216
- def _typecheckingstub__8e682fdcee746b5e96b0b5dbd6b5ee449285d647373dce115026158d8424881d(
8217
- value: typing.Optional[builtins.str],
8218
- ) -> None:
8219
- """Type checking stubs"""
8220
- pass
8221
-
8222
8158
  def _typecheckingstub__44eaedb9d731db6382000976b38651ee3871dd8abe22e4171998d7581dc60d48(
8223
8159
  *,
8224
8160
  backup_vault_events: typing.Sequence[builtins.str],
@@ -8235,8 +8171,6 @@ def _typecheckingstub__5a3b99abcf3e8ad32b3307410738488461421bb759c6f2f630a99abc5
8235
8171
  access_policy: typing.Any = None,
8236
8172
  backup_vault_tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
8237
8173
  notifications: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnLogicallyAirGappedBackupVault.NotificationObjectTypeProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
8238
- vault_state: typing.Optional[builtins.str] = None,
8239
- vault_type: typing.Optional[builtins.str] = None,
8240
8174
  ) -> None:
8241
8175
  """Type checking stubs"""
8242
8176
  pass
@@ -10337,7 +10337,7 @@ class CfnSchedulingPolicy(
10337
10337
  '''The fair share policy for a scheduling policy.
10338
10338
 
10339
10339
  :param compute_reservation: A value used to reserve some of the available maximum vCPU for fair share identifiers that aren't already used. The reserved ratio is ``( *computeReservation* /100)^ *ActiveFairShares*`` where ``*ActiveFairShares*`` is the number of active fair share identifiers. For example, a ``computeReservation`` value of 50 indicates that AWS Batch reserves 50% of the maximum available vCPU if there's only one fair share identifier. It reserves 25% if there are two fair share identifiers. It reserves 12.5% if there are three fair share identifiers. A ``computeReservation`` value of 25 indicates that AWS Batch should reserve 25% of the maximum available vCPU if there's only one fair share identifier, 6.25% if there are two fair share identifiers, and 1.56% if there are three fair share identifiers. The minimum value is 0 and the maximum value is 99.
10340
- :param share_decay_seconds: The amount of time (in seconds) to use to calculate a fair share percentage for each fair share identifier in use. A value of zero (0) indicates that only current usage is measured. The decay allows for more recently run jobs to have more weight than jobs that ran earlier. The maximum supported value is 604800 (1 week).
10340
+ :param share_decay_seconds: The amount of time (in seconds) to use to calculate a fair share percentage for each fair share identifier in use. A value of zero (0) indicates the default minimum time window (600 seconds). The maximum supported value is 604800 (1 week). The decay allows for more recently run jobs to have more weight than jobs that ran earlier. Consider adjusting this number if you have jobs that (on average) run longer than ten minutes, or a large difference in job count or job run times between share identifiers, and the allocation of resources doesn’t meet your needs.
10341
10341
  :param share_distribution: An array of ``SharedIdentifier`` objects that contain the weights for the fair share identifiers for the fair share policy. Fair share identifiers that aren't included have a default weight of ``1.0`` .
10342
10342
 
10343
10343
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-schedulingpolicy-fairsharepolicy.html
@@ -10390,7 +10390,9 @@ class CfnSchedulingPolicy(
10390
10390
  def share_decay_seconds(self) -> typing.Optional[jsii.Number]:
10391
10391
  '''The amount of time (in seconds) to use to calculate a fair share percentage for each fair share identifier in use.
10392
10392
 
10393
- A value of zero (0) indicates that only current usage is measured. The decay allows for more recently run jobs to have more weight than jobs that ran earlier. The maximum supported value is 604800 (1 week).
10393
+ A value of zero (0) indicates the default minimum time window (600 seconds). The maximum supported value is 604800 (1 week).
10394
+
10395
+ The decay allows for more recently run jobs to have more weight than jobs that ran earlier. Consider adjusting this number if you have jobs that (on average) run longer than ten minutes, or a large difference in job count or job run times between share identifiers, and the allocation of resources doesn’t meet your needs.
10394
10396
 
10395
10397
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-schedulingpolicy-fairsharepolicy.html#cfn-batch-schedulingpolicy-fairsharepolicy-sharedecayseconds
10396
10398
  '''