pulumi-gcp 8.42.0a1756925793__py3-none-any.whl → 9.0.0a1__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.
- pulumi_gcp/__init__.py +35 -48
- pulumi_gcp/alloydb/backup.py +8 -4
- pulumi_gcp/alloydb/cluster.py +56 -10
- pulumi_gcp/alloydb/get_cluster.py +12 -1
- pulumi_gcp/alloydb/instance.py +10 -4
- pulumi_gcp/alloydb/user.py +8 -4
- pulumi_gcp/apigee/_inputs.py +151 -108
- pulumi_gcp/apigee/keystores_aliases_key_cert_file.py +52 -40
- pulumi_gcp/apigee/outputs.py +92 -88
- pulumi_gcp/artifactregistry/__init__.py +1 -0
- pulumi_gcp/artifactregistry/_inputs.py +0 -12
- pulumi_gcp/artifactregistry/get_npm_package.py +251 -0
- pulumi_gcp/artifactregistry/outputs.py +8 -16
- pulumi_gcp/beyondcorp/__init__.py +0 -5
- pulumi_gcp/beyondcorp/_inputs.py +0 -312
- pulumi_gcp/beyondcorp/outputs.py +0 -200
- pulumi_gcp/bigquery/_inputs.py +114 -4
- pulumi_gcp/bigquery/app_profile.py +52 -19
- pulumi_gcp/bigquery/dataset_access.py +8 -4
- pulumi_gcp/bigquery/outputs.py +75 -5
- pulumi_gcp/bigquery/table.py +21 -7
- pulumi_gcp/bigtable/app_profile.py +50 -15
- pulumi_gcp/bigtable/get_table_iam_policy.py +16 -18
- pulumi_gcp/bigtable/table.py +42 -42
- pulumi_gcp/bigtable/table_iam_binding.py +43 -43
- pulumi_gcp/bigtable/table_iam_member.py +43 -43
- pulumi_gcp/bigtable/table_iam_policy.py +43 -43
- pulumi_gcp/billing/_inputs.py +0 -6
- pulumi_gcp/billing/outputs.py +0 -4
- pulumi_gcp/certificatemanager/__init__.py +1 -0
- pulumi_gcp/certificatemanager/get_dns_authorization.py +229 -0
- pulumi_gcp/certificatemanager/outputs.py +41 -0
- pulumi_gcp/cloudbuild/_inputs.py +289 -45
- pulumi_gcp/cloudbuild/bitbucket_server_config.py +2 -6
- pulumi_gcp/cloudbuild/get_trigger.py +12 -1
- pulumi_gcp/cloudbuild/outputs.py +366 -30
- pulumi_gcp/cloudbuild/trigger.py +156 -0
- pulumi_gcp/cloudbuild/worker_pool.py +23 -34
- pulumi_gcp/cloudfunctions/function.py +8 -4
- pulumi_gcp/cloudfunctionsv2/_inputs.py +23 -21
- pulumi_gcp/cloudfunctionsv2/outputs.py +17 -16
- pulumi_gcp/cloudrunv2/_inputs.py +23 -26
- pulumi_gcp/cloudrunv2/outputs.py +28 -30
- pulumi_gcp/cloudrunv2/service.py +18 -12
- pulumi_gcp/cloudtasks/queue.py +98 -2
- pulumi_gcp/colab/_inputs.py +1 -114
- pulumi_gcp/colab/outputs.py +1 -106
- pulumi_gcp/composer/environment.py +49 -28
- pulumi_gcp/compute/_inputs.py +80 -0
- pulumi_gcp/compute/backend_bucket.py +54 -0
- pulumi_gcp/compute/backend_service.py +54 -0
- pulumi_gcp/compute/get_backend_bucket.py +12 -1
- pulumi_gcp/compute/get_backend_service.py +12 -1
- pulumi_gcp/compute/instance_from_machine_image.py +110 -75
- pulumi_gcp/compute/instance_from_template.py +110 -75
- pulumi_gcp/compute/instance_group_manager.py +14 -7
- pulumi_gcp/compute/instance_template.py +14 -7
- pulumi_gcp/compute/interconnect.py +8 -4
- pulumi_gcp/compute/network_peering_routes_config.py +0 -100
- pulumi_gcp/compute/organization_security_policy.py +83 -51
- pulumi_gcp/compute/outputs.py +128 -0
- pulumi_gcp/compute/packet_mirroring.py +6 -0
- pulumi_gcp/compute/region_instance_group_manager.py +14 -7
- pulumi_gcp/compute/subnetwork.py +0 -98
- pulumi_gcp/config/__init__.pyi +2 -2
- pulumi_gcp/config/vars.py +4 -4
- pulumi_gcp/container/_inputs.py +20 -0
- pulumi_gcp/container/aws_cluster.py +42 -28
- pulumi_gcp/container/aws_node_pool.py +42 -28
- pulumi_gcp/container/azure_cluster.py +70 -35
- pulumi_gcp/container/azure_node_pool.py +42 -28
- pulumi_gcp/container/outputs.py +25 -0
- pulumi_gcp/databasemigrationservice/connection_profile.py +4 -2
- pulumi_gcp/databasemigrationservice/migration_job.py +4 -2
- pulumi_gcp/dataplex/asset.py +21 -28
- pulumi_gcp/dataplex/zone.py +21 -28
- pulumi_gcp/dataproc/cluster.py +14 -21
- pulumi_gcp/dataproc/workflow_template.py +105 -42
- pulumi_gcp/diagflow/_inputs.py +152 -0
- pulumi_gcp/diagflow/cx_agent.py +425 -0
- pulumi_gcp/diagflow/outputs.py +143 -0
- pulumi_gcp/firebase/app_check_play_integrity_config.py +4 -8
- pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +2 -4
- pulumi_gcp/firebase/app_check_service_config.py +6 -12
- pulumi_gcp/firebase/app_hosting_backend.py +4 -8
- pulumi_gcp/firebase/app_hosting_build.py +4 -8
- pulumi_gcp/firebase/app_hosting_traffic.py +6 -12
- pulumi_gcp/firebase/data_connect_service.py +4 -8
- pulumi_gcp/firebase/database_instance.py +4 -8
- pulumi_gcp/gkehub/_inputs.py +0 -60
- pulumi_gcp/gkehub/get_membership.py +1 -12
- pulumi_gcp/gkehub/membership.py +0 -70
- pulumi_gcp/gkehub/outputs.py +0 -36
- pulumi_gcp/iap/__init__.py +4 -0
- pulumi_gcp/iap/_inputs.py +130 -0
- pulumi_gcp/iap/get_web_region_forwarding_rule_service_iam_policy.py +182 -0
- pulumi_gcp/iap/outputs.py +76 -0
- pulumi_gcp/{beyondcorp/application_iam_binding.py → iap/web_region_forwarding_rule_service_iam_binding.py} +321 -314
- pulumi_gcp/{beyondcorp/application_iam_member.py → iap/web_region_forwarding_rule_service_iam_member.py} +321 -314
- pulumi_gcp/iap/web_region_forwarding_rule_service_iam_policy.py +910 -0
- pulumi_gcp/kms/autokey_config.py +0 -2
- pulumi_gcp/kms/key_handle.py +0 -2
- pulumi_gcp/logging/billing_account_bucket_config.py +21 -7
- pulumi_gcp/logging/folder_bucket_config.py +21 -7
- pulumi_gcp/logging/organization_bucket_config.py +21 -7
- pulumi_gcp/memorystore/get_instance.py +1 -12
- pulumi_gcp/memorystore/instance.py +0 -70
- pulumi_gcp/monitoring/dashboard.py +14 -7
- pulumi_gcp/networkservices/lb_traffic_extension.py +24 -23
- pulumi_gcp/notebooks/__init__.py +0 -1
- pulumi_gcp/oracledatabase/cloud_vm_cluster.py +3 -3
- pulumi_gcp/organizations/project.py +21 -7
- pulumi_gcp/projects/service.py +2 -4
- pulumi_gcp/provider.py +20 -20
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/redis/cluster.py +0 -70
- pulumi_gcp/redis/get_cluster.py +1 -12
- pulumi_gcp/saasruntime/__init__.py +11 -0
- pulumi_gcp/saasruntime/_inputs.py +55 -0
- pulumi_gcp/saasruntime/outputs.py +39 -0
- pulumi_gcp/saasruntime/saa_s.py +815 -0
- pulumi_gcp/securesourcemanager/_inputs.py +20 -19
- pulumi_gcp/securesourcemanager/outputs.py +15 -14
- pulumi_gcp/serviceaccount/get_account_key.py +1 -21
- pulumi_gcp/sql/database_instance.py +61 -7
- pulumi_gcp/sql/get_database_instance.py +12 -1
- pulumi_gcp/sql/outputs.py +11 -0
- pulumi_gcp/sql/user.py +61 -0
- pulumi_gcp/storage/_inputs.py +7 -7
- pulumi_gcp/storage/bucket.py +14 -7
- pulumi_gcp/storage/outputs.py +7 -7
- pulumi_gcp/tpu/__init__.py +0 -2
- pulumi_gcp/tpu/_inputs.py +0 -93
- pulumi_gcp/tpu/outputs.py +0 -72
- pulumi_gcp/vertex/_inputs.py +8 -9
- pulumi_gcp/vertex/ai_endpoint.py +2 -4
- pulumi_gcp/vertex/ai_feature_online_store_featureview.py +0 -2
- pulumi_gcp/vertex/ai_index.py +24 -23
- pulumi_gcp/vertex/outputs.py +7 -8
- {pulumi_gcp-8.42.0a1756925793.dist-info → pulumi_gcp-9.0.0a1.dist-info}/METADATA +1 -1
- {pulumi_gcp-8.42.0a1756925793.dist-info → pulumi_gcp-9.0.0a1.dist-info}/RECORD +143 -141
- pulumi_gcp/beyondcorp/application.py +0 -746
- pulumi_gcp/beyondcorp/application_iam_policy.py +0 -903
- pulumi_gcp/beyondcorp/get_application_iam_policy.py +0 -182
- pulumi_gcp/notebooks/location.py +0 -285
- pulumi_gcp/tpu/get_tensorflow_versions.py +0 -184
- pulumi_gcp/tpu/node.py +0 -1062
- {pulumi_gcp-8.42.0a1756925793.dist-info → pulumi_gcp-9.0.0a1.dist-info}/WHEEL +0 -0
- {pulumi_gcp-8.42.0a1756925793.dist-info → pulumi_gcp-9.0.0a1.dist-info}/top_level.txt +0 -0
pulumi_gcp/diagflow/_inputs.py
CHANGED
@@ -97,12 +97,18 @@ __all__ = [
|
|
97
97
|
'CxAgentAdvancedSettingsLoggingSettingsArgsDict',
|
98
98
|
'CxAgentAdvancedSettingsSpeechSettingsArgs',
|
99
99
|
'CxAgentAdvancedSettingsSpeechSettingsArgsDict',
|
100
|
+
'CxAgentAnswerFeedbackSettingsArgs',
|
101
|
+
'CxAgentAnswerFeedbackSettingsArgsDict',
|
102
|
+
'CxAgentClientCertificateSettingsArgs',
|
103
|
+
'CxAgentClientCertificateSettingsArgsDict',
|
100
104
|
'CxAgentGenAppBuilderSettingsArgs',
|
101
105
|
'CxAgentGenAppBuilderSettingsArgsDict',
|
102
106
|
'CxAgentGitIntegrationSettingsArgs',
|
103
107
|
'CxAgentGitIntegrationSettingsArgsDict',
|
104
108
|
'CxAgentGitIntegrationSettingsGithubSettingsArgs',
|
105
109
|
'CxAgentGitIntegrationSettingsGithubSettingsArgsDict',
|
110
|
+
'CxAgentPersonalizationSettingsArgs',
|
111
|
+
'CxAgentPersonalizationSettingsArgsDict',
|
106
112
|
'CxAgentSpeechToTextSettingsArgs',
|
107
113
|
'CxAgentSpeechToTextSettingsArgsDict',
|
108
114
|
'CxAgentTextToSpeechSettingsArgs',
|
@@ -3512,6 +3518,111 @@ class CxAgentAdvancedSettingsSpeechSettingsArgs:
|
|
3512
3518
|
pulumi.set(self, "use_timeout_based_endpointing", value)
|
3513
3519
|
|
3514
3520
|
|
3521
|
+
if not MYPY:
|
3522
|
+
class CxAgentAnswerFeedbackSettingsArgsDict(TypedDict):
|
3523
|
+
enable_answer_feedback: NotRequired[pulumi.Input[_builtins.bool]]
|
3524
|
+
"""
|
3525
|
+
If enabled, end users will be able to provide [answer feedback](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.sessions/submitAnswerFeedback#body.AnswerFeedback)
|
3526
|
+
to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent.
|
3527
|
+
"""
|
3528
|
+
elif False:
|
3529
|
+
CxAgentAnswerFeedbackSettingsArgsDict: TypeAlias = Mapping[str, Any]
|
3530
|
+
|
3531
|
+
@pulumi.input_type
|
3532
|
+
class CxAgentAnswerFeedbackSettingsArgs:
|
3533
|
+
def __init__(__self__, *,
|
3534
|
+
enable_answer_feedback: Optional[pulumi.Input[_builtins.bool]] = None):
|
3535
|
+
"""
|
3536
|
+
:param pulumi.Input[_builtins.bool] enable_answer_feedback: If enabled, end users will be able to provide [answer feedback](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.sessions/submitAnswerFeedback#body.AnswerFeedback)
|
3537
|
+
to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent.
|
3538
|
+
"""
|
3539
|
+
if enable_answer_feedback is not None:
|
3540
|
+
pulumi.set(__self__, "enable_answer_feedback", enable_answer_feedback)
|
3541
|
+
|
3542
|
+
@_builtins.property
|
3543
|
+
@pulumi.getter(name="enableAnswerFeedback")
|
3544
|
+
def enable_answer_feedback(self) -> Optional[pulumi.Input[_builtins.bool]]:
|
3545
|
+
"""
|
3546
|
+
If enabled, end users will be able to provide [answer feedback](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.sessions/submitAnswerFeedback#body.AnswerFeedback)
|
3547
|
+
to Dialogflow responses. Feature works only if interaction logging is enabled in the Dialogflow agent.
|
3548
|
+
"""
|
3549
|
+
return pulumi.get(self, "enable_answer_feedback")
|
3550
|
+
|
3551
|
+
@enable_answer_feedback.setter
|
3552
|
+
def enable_answer_feedback(self, value: Optional[pulumi.Input[_builtins.bool]]):
|
3553
|
+
pulumi.set(self, "enable_answer_feedback", value)
|
3554
|
+
|
3555
|
+
|
3556
|
+
if not MYPY:
|
3557
|
+
class CxAgentClientCertificateSettingsArgsDict(TypedDict):
|
3558
|
+
private_key: pulumi.Input[_builtins.str]
|
3559
|
+
"""
|
3560
|
+
The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: **projects/{project}/secrets/{secret}/versions/{version}**
|
3561
|
+
"""
|
3562
|
+
ssl_certificate: pulumi.Input[_builtins.str]
|
3563
|
+
"""
|
3564
|
+
The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines.
|
3565
|
+
"""
|
3566
|
+
passphrase: NotRequired[pulumi.Input[_builtins.str]]
|
3567
|
+
"""
|
3568
|
+
The name of the SecretManager secret version resource storing the passphrase. 'passphrase' should be left unset if the private key is not encrypted. Format: **projects/{project}/secrets/{secret}/versions/{version}**
|
3569
|
+
"""
|
3570
|
+
elif False:
|
3571
|
+
CxAgentClientCertificateSettingsArgsDict: TypeAlias = Mapping[str, Any]
|
3572
|
+
|
3573
|
+
@pulumi.input_type
|
3574
|
+
class CxAgentClientCertificateSettingsArgs:
|
3575
|
+
def __init__(__self__, *,
|
3576
|
+
private_key: pulumi.Input[_builtins.str],
|
3577
|
+
ssl_certificate: pulumi.Input[_builtins.str],
|
3578
|
+
passphrase: Optional[pulumi.Input[_builtins.str]] = None):
|
3579
|
+
"""
|
3580
|
+
:param pulumi.Input[_builtins.str] private_key: The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: **projects/{project}/secrets/{secret}/versions/{version}**
|
3581
|
+
:param pulumi.Input[_builtins.str] ssl_certificate: The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines.
|
3582
|
+
:param pulumi.Input[_builtins.str] passphrase: The name of the SecretManager secret version resource storing the passphrase. 'passphrase' should be left unset if the private key is not encrypted. Format: **projects/{project}/secrets/{secret}/versions/{version}**
|
3583
|
+
"""
|
3584
|
+
pulumi.set(__self__, "private_key", private_key)
|
3585
|
+
pulumi.set(__self__, "ssl_certificate", ssl_certificate)
|
3586
|
+
if passphrase is not None:
|
3587
|
+
pulumi.set(__self__, "passphrase", passphrase)
|
3588
|
+
|
3589
|
+
@_builtins.property
|
3590
|
+
@pulumi.getter(name="privateKey")
|
3591
|
+
def private_key(self) -> pulumi.Input[_builtins.str]:
|
3592
|
+
"""
|
3593
|
+
The name of the SecretManager secret version resource storing the private key encoded in PEM format. Format: **projects/{project}/secrets/{secret}/versions/{version}**
|
3594
|
+
"""
|
3595
|
+
return pulumi.get(self, "private_key")
|
3596
|
+
|
3597
|
+
@private_key.setter
|
3598
|
+
def private_key(self, value: pulumi.Input[_builtins.str]):
|
3599
|
+
pulumi.set(self, "private_key", value)
|
3600
|
+
|
3601
|
+
@_builtins.property
|
3602
|
+
@pulumi.getter(name="sslCertificate")
|
3603
|
+
def ssl_certificate(self) -> pulumi.Input[_builtins.str]:
|
3604
|
+
"""
|
3605
|
+
The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines.
|
3606
|
+
"""
|
3607
|
+
return pulumi.get(self, "ssl_certificate")
|
3608
|
+
|
3609
|
+
@ssl_certificate.setter
|
3610
|
+
def ssl_certificate(self, value: pulumi.Input[_builtins.str]):
|
3611
|
+
pulumi.set(self, "ssl_certificate", value)
|
3612
|
+
|
3613
|
+
@_builtins.property
|
3614
|
+
@pulumi.getter
|
3615
|
+
def passphrase(self) -> Optional[pulumi.Input[_builtins.str]]:
|
3616
|
+
"""
|
3617
|
+
The name of the SecretManager secret version resource storing the passphrase. 'passphrase' should be left unset if the private key is not encrypted. Format: **projects/{project}/secrets/{secret}/versions/{version}**
|
3618
|
+
"""
|
3619
|
+
return pulumi.get(self, "passphrase")
|
3620
|
+
|
3621
|
+
@passphrase.setter
|
3622
|
+
def passphrase(self, value: Optional[pulumi.Input[_builtins.str]]):
|
3623
|
+
pulumi.set(self, "passphrase", value)
|
3624
|
+
|
3625
|
+
|
3515
3626
|
if not MYPY:
|
3516
3627
|
class CxAgentGenAppBuilderSettingsArgsDict(TypedDict):
|
3517
3628
|
engine: pulumi.Input[_builtins.str]
|
@@ -3696,6 +3807,47 @@ class CxAgentGitIntegrationSettingsGithubSettingsArgs:
|
|
3696
3807
|
pulumi.set(self, "tracking_branch", value)
|
3697
3808
|
|
3698
3809
|
|
3810
|
+
if not MYPY:
|
3811
|
+
class CxAgentPersonalizationSettingsArgsDict(TypedDict):
|
3812
|
+
default_end_user_metadata: NotRequired[pulumi.Input[_builtins.str]]
|
3813
|
+
"""
|
3814
|
+
Default end user metadata, used when processing DetectIntent requests. Recommended to be filled as a template instead of hard-coded value, for example { "age": "$session.params.age" }.
|
3815
|
+
The data will be merged with the [QueryParameters.end_user_metadata](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/QueryParameters#FIELDS.end_user_metadata)
|
3816
|
+
in [DetectIntentRequest.query_params](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.sessions/detectIntent#body.request_body.FIELDS.query_params) during query processing.
|
3817
|
+
This field uses JSON data as a string. The value provided must be a valid JSON representation documented in [Struct](https://protobuf.dev/reference/protobuf/google.protobuf/#struct).
|
3818
|
+
"""
|
3819
|
+
elif False:
|
3820
|
+
CxAgentPersonalizationSettingsArgsDict: TypeAlias = Mapping[str, Any]
|
3821
|
+
|
3822
|
+
@pulumi.input_type
|
3823
|
+
class CxAgentPersonalizationSettingsArgs:
|
3824
|
+
def __init__(__self__, *,
|
3825
|
+
default_end_user_metadata: Optional[pulumi.Input[_builtins.str]] = None):
|
3826
|
+
"""
|
3827
|
+
:param pulumi.Input[_builtins.str] default_end_user_metadata: Default end user metadata, used when processing DetectIntent requests. Recommended to be filled as a template instead of hard-coded value, for example { "age": "$session.params.age" }.
|
3828
|
+
The data will be merged with the [QueryParameters.end_user_metadata](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/QueryParameters#FIELDS.end_user_metadata)
|
3829
|
+
in [DetectIntentRequest.query_params](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.sessions/detectIntent#body.request_body.FIELDS.query_params) during query processing.
|
3830
|
+
This field uses JSON data as a string. The value provided must be a valid JSON representation documented in [Struct](https://protobuf.dev/reference/protobuf/google.protobuf/#struct).
|
3831
|
+
"""
|
3832
|
+
if default_end_user_metadata is not None:
|
3833
|
+
pulumi.set(__self__, "default_end_user_metadata", default_end_user_metadata)
|
3834
|
+
|
3835
|
+
@_builtins.property
|
3836
|
+
@pulumi.getter(name="defaultEndUserMetadata")
|
3837
|
+
def default_end_user_metadata(self) -> Optional[pulumi.Input[_builtins.str]]:
|
3838
|
+
"""
|
3839
|
+
Default end user metadata, used when processing DetectIntent requests. Recommended to be filled as a template instead of hard-coded value, for example { "age": "$session.params.age" }.
|
3840
|
+
The data will be merged with the [QueryParameters.end_user_metadata](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/QueryParameters#FIELDS.end_user_metadata)
|
3841
|
+
in [DetectIntentRequest.query_params](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.sessions/detectIntent#body.request_body.FIELDS.query_params) during query processing.
|
3842
|
+
This field uses JSON data as a string. The value provided must be a valid JSON representation documented in [Struct](https://protobuf.dev/reference/protobuf/google.protobuf/#struct).
|
3843
|
+
"""
|
3844
|
+
return pulumi.get(self, "default_end_user_metadata")
|
3845
|
+
|
3846
|
+
@default_end_user_metadata.setter
|
3847
|
+
def default_end_user_metadata(self, value: Optional[pulumi.Input[_builtins.str]]):
|
3848
|
+
pulumi.set(self, "default_end_user_metadata", value)
|
3849
|
+
|
3850
|
+
|
3699
3851
|
if not MYPY:
|
3700
3852
|
class CxAgentSpeechToTextSettingsArgsDict(TypedDict):
|
3701
3853
|
enable_speech_adaptation: NotRequired[pulumi.Input[_builtins.bool]]
|