alibabacloud-ice20201109 6.3.0__tar.gz → 6.3.1__tar.gz

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.
Files changed (17) hide show
  1. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/ChangeLog.md +12 -0
  2. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/PKG-INFO +1 -1
  3. alibabacloud_ice20201109-6.3.1/alibabacloud_ice20201109/__init__.py +1 -0
  4. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109/client.py +20 -0
  5. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109/models.py +48 -0
  6. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109.egg-info/PKG-INFO +1 -1
  7. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/setup.py +1 -1
  8. alibabacloud_ice20201109-6.3.0/alibabacloud_ice20201109/__init__.py +0 -1
  9. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/LICENSE +0 -0
  10. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/MANIFEST.in +0 -0
  11. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/README-CN.md +0 -0
  12. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/README.md +0 -0
  13. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109.egg-info/SOURCES.txt +0 -0
  14. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109.egg-info/dependency_links.txt +0 -0
  15. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109.egg-info/requires.txt +0 -0
  16. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/alibabacloud_ice20201109.egg-info/top_level.txt +0 -0
  17. {alibabacloud_ice20201109-6.3.0 → alibabacloud_ice20201109-6.3.1}/setup.cfg +0 -0
@@ -1,3 +1,15 @@
1
+ 2025-06-05 Version: 6.3.0
2
+ - Support API CreateRecognitionEntity.
3
+ - Support API CreateRecognitionLib.
4
+ - Support API CreateRecognitionSample.
5
+ - Support API DeleteRecognitionEntity.
6
+ - Support API DeleteRecognitionLib.
7
+ - Support API DeleteRecognitionSample.
8
+ - Support API ListRecognitionEntities.
9
+ - Support API ListRecognitionLibs.
10
+ - Support API ListRecognitionSamples.
11
+
12
+
1
13
  2025-05-30 Version: 6.2.0
2
14
  - Support API CreateHotwordLibrary.
3
15
  - Support API DeleteHotwordLibrary.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: alibabacloud_ice20201109
3
- Version: 6.3.0
3
+ Version: 6.3.1
4
4
  Summary: Alibaba Cloud ICE (20201109) SDK Library for Python
5
5
  Home-page: https://github.com/aliyun/alibabacloud-python-sdk
6
6
  Author: Alibaba Cloud SDK
@@ -0,0 +1 @@
1
+ __version__ = '6.3.1'
@@ -18038,6 +18038,8 @@ class Client(OpenApiClient):
18038
18038
  """
18039
18039
  UtilClient.validate_model(request)
18040
18040
  query = {}
18041
+ if not UtilClient.is_unset(request.images_input):
18042
+ query['ImagesInput'] = request.images_input
18041
18043
  if not UtilClient.is_unset(request.input):
18042
18044
  query['Input'] = request.input
18043
18045
  if not UtilClient.is_unset(request.media_id):
@@ -18081,6 +18083,8 @@ class Client(OpenApiClient):
18081
18083
  """
18082
18084
  UtilClient.validate_model(request)
18083
18085
  query = {}
18086
+ if not UtilClient.is_unset(request.images_input):
18087
+ query['ImagesInput'] = request.images_input
18084
18088
  if not UtilClient.is_unset(request.input):
18085
18089
  query['Input'] = request.input
18086
18090
  if not UtilClient.is_unset(request.media_id):
@@ -27080,6 +27084,8 @@ class Client(OpenApiClient):
27080
27084
  query['MediaType'] = request.media_type
27081
27085
  if not UtilClient.is_unset(request.multimodal_search_type):
27082
27086
  query['MultimodalSearchType'] = request.multimodal_search_type
27087
+ if not UtilClient.is_unset(request.namespace):
27088
+ query['Namespace'] = request.namespace
27083
27089
  if not UtilClient.is_unset(request.page_no):
27084
27090
  query['PageNo'] = request.page_no
27085
27091
  if not UtilClient.is_unset(request.page_size):
@@ -27135,6 +27141,8 @@ class Client(OpenApiClient):
27135
27141
  query['MediaType'] = request.media_type
27136
27142
  if not UtilClient.is_unset(request.multimodal_search_type):
27137
27143
  query['MultimodalSearchType'] = request.multimodal_search_type
27144
+ if not UtilClient.is_unset(request.namespace):
27145
+ query['Namespace'] = request.namespace
27138
27146
  if not UtilClient.is_unset(request.page_no):
27139
27147
  query['PageNo'] = request.page_no
27140
27148
  if not UtilClient.is_unset(request.page_size):
@@ -27218,6 +27226,8 @@ class Client(OpenApiClient):
27218
27226
  query['FaceSearchToken'] = request.face_search_token
27219
27227
  if not UtilClient.is_unset(request.media_type):
27220
27228
  query['MediaType'] = request.media_type
27229
+ if not UtilClient.is_unset(request.namespace):
27230
+ query['Namespace'] = request.namespace
27221
27231
  if not UtilClient.is_unset(request.page_no):
27222
27232
  query['PageNo'] = request.page_no
27223
27233
  if not UtilClient.is_unset(request.page_size):
@@ -27267,6 +27277,8 @@ class Client(OpenApiClient):
27267
27277
  query['FaceSearchToken'] = request.face_search_token
27268
27278
  if not UtilClient.is_unset(request.media_type):
27269
27279
  query['MediaType'] = request.media_type
27280
+ if not UtilClient.is_unset(request.namespace):
27281
+ query['Namespace'] = request.namespace
27270
27282
  if not UtilClient.is_unset(request.page_no):
27271
27283
  query['PageNo'] = request.page_no
27272
27284
  if not UtilClient.is_unset(request.page_size):
@@ -27342,6 +27354,8 @@ class Client(OpenApiClient):
27342
27354
  query['MediaId'] = request.media_id
27343
27355
  if not UtilClient.is_unset(request.media_type):
27344
27356
  query['MediaType'] = request.media_type
27357
+ if not UtilClient.is_unset(request.namespace):
27358
+ query['Namespace'] = request.namespace
27345
27359
  if not UtilClient.is_unset(request.page_no):
27346
27360
  query['PageNo'] = request.page_no
27347
27361
  if not UtilClient.is_unset(request.page_size):
@@ -27387,6 +27401,8 @@ class Client(OpenApiClient):
27387
27401
  query['MediaId'] = request.media_id
27388
27402
  if not UtilClient.is_unset(request.media_type):
27389
27403
  query['MediaType'] = request.media_type
27404
+ if not UtilClient.is_unset(request.namespace):
27405
+ query['Namespace'] = request.namespace
27390
27406
  if not UtilClient.is_unset(request.page_no):
27391
27407
  query['PageNo'] = request.page_no
27392
27408
  if not UtilClient.is_unset(request.page_size):
@@ -27458,6 +27474,8 @@ class Client(OpenApiClient):
27458
27474
  query = {}
27459
27475
  if not UtilClient.is_unset(request.media_type):
27460
27476
  query['MediaType'] = request.media_type
27477
+ if not UtilClient.is_unset(request.namespace):
27478
+ query['Namespace'] = request.namespace
27461
27479
  if not UtilClient.is_unset(request.page_no):
27462
27480
  query['PageNo'] = request.page_no
27463
27481
  if not UtilClient.is_unset(request.page_size):
@@ -27503,6 +27521,8 @@ class Client(OpenApiClient):
27503
27521
  query = {}
27504
27522
  if not UtilClient.is_unset(request.media_type):
27505
27523
  query['MediaType'] = request.media_type
27524
+ if not UtilClient.is_unset(request.namespace):
27525
+ query['Namespace'] = request.namespace
27506
27526
  if not UtilClient.is_unset(request.page_no):
27507
27527
  query['PageNo'] = request.page_no
27508
27528
  if not UtilClient.is_unset(request.page_size):
@@ -44200,12 +44200,14 @@ class GetWorkflowTaskResponse(TeaModel):
44200
44200
  class InsertMediaToSearchLibRequest(TeaModel):
44201
44201
  def __init__(
44202
44202
  self,
44203
+ images_input: str = None,
44203
44204
  input: str = None,
44204
44205
  media_id: str = None,
44205
44206
  media_type: str = None,
44206
44207
  msg_body: str = None,
44207
44208
  search_lib_name: str = None,
44208
44209
  ):
44210
+ self.images_input = images_input
44209
44211
  # The URL of the video, audio, or image file that you want to import to the search library.
44210
44212
  #
44211
44213
  # Note: Make sure that you specify a correct file name and the bucket in which the file resides is in the same region where this operation is called. Otherwise, the file cannot be found or the operation may fail.
@@ -44238,6 +44240,8 @@ class InsertMediaToSearchLibRequest(TeaModel):
44238
44240
  return _map
44239
44241
 
44240
44242
  result = dict()
44243
+ if self.images_input is not None:
44244
+ result['ImagesInput'] = self.images_input
44241
44245
  if self.input is not None:
44242
44246
  result['Input'] = self.input
44243
44247
  if self.media_id is not None:
@@ -44252,6 +44256,8 @@ class InsertMediaToSearchLibRequest(TeaModel):
44252
44256
 
44253
44257
  def from_map(self, m: dict = None):
44254
44258
  m = m or dict()
44259
+ if m.get('ImagesInput') is not None:
44260
+ self.images_input = m.get('ImagesInput')
44255
44261
  if m.get('Input') is not None:
44256
44262
  self.input = m.get('Input')
44257
44263
  if m.get('MediaId') is not None:
@@ -70139,6 +70145,7 @@ class SearchMediaResponseBodyMediaInfoListFileInfoListFileBasicInfo(TeaModel):
70139
70145
  file_url: str = None,
70140
70146
  format_name: str = None,
70141
70147
  height: str = None,
70148
+ images_input: str = None,
70142
70149
  modified_time: str = None,
70143
70150
  region: str = None,
70144
70151
  width: str = None,
@@ -70163,6 +70170,7 @@ class SearchMediaResponseBodyMediaInfoListFileInfoListFileBasicInfo(TeaModel):
70163
70170
  self.format_name = format_name
70164
70171
  # The height of the file.
70165
70172
  self.height = height
70173
+ self.images_input = images_input
70166
70174
  # The time when the file was last modified.
70167
70175
  self.modified_time = modified_time
70168
70176
  # The region in which the file is stored.
@@ -70199,6 +70207,8 @@ class SearchMediaResponseBodyMediaInfoListFileInfoListFileBasicInfo(TeaModel):
70199
70207
  result['FormatName'] = self.format_name
70200
70208
  if self.height is not None:
70201
70209
  result['Height'] = self.height
70210
+ if self.images_input is not None:
70211
+ result['ImagesInput'] = self.images_input
70202
70212
  if self.modified_time is not None:
70203
70213
  result['ModifiedTime'] = self.modified_time
70204
70214
  if self.region is not None:
@@ -70229,6 +70239,8 @@ class SearchMediaResponseBodyMediaInfoListFileInfoListFileBasicInfo(TeaModel):
70229
70239
  self.format_name = m.get('FormatName')
70230
70240
  if m.get('Height') is not None:
70231
70241
  self.height = m.get('Height')
70242
+ if m.get('ImagesInput') is not None:
70243
+ self.images_input = m.get('ImagesInput')
70232
70244
  if m.get('ModifiedTime') is not None:
70233
70245
  self.modified_time = m.get('ModifiedTime')
70234
70246
  if m.get('Region') is not None:
@@ -70318,6 +70330,7 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70318
70330
  media_tags: str = None,
70319
70331
  media_type: str = None,
70320
70332
  modified_time: str = None,
70333
+ namespace: str = None,
70321
70334
  reference_id: str = None,
70322
70335
  snapshots: str = None,
70323
70336
  source: str = None,
@@ -70327,6 +70340,7 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70327
70340
  transcode_status: str = None,
70328
70341
  upload_source: str = None,
70329
70342
  user_data: str = None,
70343
+ vision_description: str = None,
70330
70344
  ):
70331
70345
  # The business to which the media asset belongs.
70332
70346
  self.biz = biz
@@ -70356,6 +70370,7 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70356
70370
  self.media_type = media_type
70357
70371
  # The time when the media asset was modified.
70358
70372
  self.modified_time = modified_time
70373
+ self.namespace = namespace
70359
70374
  # The custom ID of the media asset. The ID is a string that contains 6 to 64 characters. Only letters, digits, hyphens (-), and underscores (_) are supported. Each custom ID is unique.
70360
70375
  self.reference_id = reference_id
70361
70376
  # The snapshots of the media asset.
@@ -70374,6 +70389,7 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70374
70389
  self.upload_source = upload_source
70375
70390
  # The user data.
70376
70391
  self.user_data = user_data
70392
+ self.vision_description = vision_description
70377
70393
 
70378
70394
  def validate(self):
70379
70395
  pass
@@ -70412,6 +70428,8 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70412
70428
  result['MediaType'] = self.media_type
70413
70429
  if self.modified_time is not None:
70414
70430
  result['ModifiedTime'] = self.modified_time
70431
+ if self.namespace is not None:
70432
+ result['Namespace'] = self.namespace
70415
70433
  if self.reference_id is not None:
70416
70434
  result['ReferenceId'] = self.reference_id
70417
70435
  if self.snapshots is not None:
@@ -70430,6 +70448,8 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70430
70448
  result['UploadSource'] = self.upload_source
70431
70449
  if self.user_data is not None:
70432
70450
  result['UserData'] = self.user_data
70451
+ if self.vision_description is not None:
70452
+ result['VisionDescription'] = self.vision_description
70433
70453
  return result
70434
70454
 
70435
70455
  def from_map(self, m: dict = None):
@@ -70462,6 +70482,8 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70462
70482
  self.media_type = m.get('MediaType')
70463
70483
  if m.get('ModifiedTime') is not None:
70464
70484
  self.modified_time = m.get('ModifiedTime')
70485
+ if m.get('Namespace') is not None:
70486
+ self.namespace = m.get('Namespace')
70465
70487
  if m.get('ReferenceId') is not None:
70466
70488
  self.reference_id = m.get('ReferenceId')
70467
70489
  if m.get('Snapshots') is not None:
@@ -70480,6 +70502,8 @@ class SearchMediaResponseBodyMediaInfoListMediaBasicInfo(TeaModel):
70480
70502
  self.upload_source = m.get('UploadSource')
70481
70503
  if m.get('UserData') is not None:
70482
70504
  self.user_data = m.get('UserData')
70505
+ if m.get('VisionDescription') is not None:
70506
+ self.vision_description = m.get('VisionDescription')
70483
70507
  return self
70484
70508
 
70485
70509
 
@@ -70690,6 +70714,7 @@ class SearchMediaByAILabelRequest(TeaModel):
70690
70714
  media_id: str = None,
70691
70715
  media_type: str = None,
70692
70716
  multimodal_search_type: str = None,
70717
+ namespace: str = None,
70693
70718
  page_no: int = None,
70694
70719
  page_size: int = None,
70695
70720
  search_lib_name: str = None,
@@ -70713,6 +70738,7 @@ class SearchMediaByAILabelRequest(TeaModel):
70713
70738
  # * AiCategory: queries media assets based on AI categories.
70714
70739
  # * FullSearch (default): queries all media assets.
70715
70740
  self.multimodal_search_type = multimodal_search_type
70741
+ self.namespace = namespace
70716
70742
  # The page number. Default value: 1.
70717
70743
  self.page_no = page_no
70718
70744
  # The number of entries per page. Default value: 10. Maximum value: 50.
@@ -70749,6 +70775,8 @@ class SearchMediaByAILabelRequest(TeaModel):
70749
70775
  result['MediaType'] = self.media_type
70750
70776
  if self.multimodal_search_type is not None:
70751
70777
  result['MultimodalSearchType'] = self.multimodal_search_type
70778
+ if self.namespace is not None:
70779
+ result['Namespace'] = self.namespace
70752
70780
  if self.page_no is not None:
70753
70781
  result['PageNo'] = self.page_no
70754
70782
  if self.page_size is not None:
@@ -70773,6 +70801,8 @@ class SearchMediaByAILabelRequest(TeaModel):
70773
70801
  self.media_type = m.get('MediaType')
70774
70802
  if m.get('MultimodalSearchType') is not None:
70775
70803
  self.multimodal_search_type = m.get('MultimodalSearchType')
70804
+ if m.get('Namespace') is not None:
70805
+ self.namespace = m.get('Namespace')
70776
70806
  if m.get('PageNo') is not None:
70777
70807
  self.page_no = m.get('PageNo')
70778
70808
  if m.get('PageSize') is not None:
@@ -71434,6 +71464,7 @@ class SearchMediaByFaceRequest(TeaModel):
71434
71464
  entity_id: str = None,
71435
71465
  face_search_token: str = None,
71436
71466
  media_type: str = None,
71467
+ namespace: str = None,
71437
71468
  page_no: int = None,
71438
71469
  page_size: int = None,
71439
71470
  person_image_url: str = None,
@@ -71450,6 +71481,7 @@ class SearchMediaByFaceRequest(TeaModel):
71450
71481
  # * image
71451
71482
  # * video
71452
71483
  self.media_type = media_type
71484
+ self.namespace = namespace
71453
71485
  # The page number. Default value: 1.
71454
71486
  self.page_no = page_no
71455
71487
  # The number of entries per page. Default value: 10. Maximum value: 50.
@@ -71476,6 +71508,8 @@ class SearchMediaByFaceRequest(TeaModel):
71476
71508
  result['FaceSearchToken'] = self.face_search_token
71477
71509
  if self.media_type is not None:
71478
71510
  result['MediaType'] = self.media_type
71511
+ if self.namespace is not None:
71512
+ result['Namespace'] = self.namespace
71479
71513
  if self.page_no is not None:
71480
71514
  result['PageNo'] = self.page_no
71481
71515
  if self.page_size is not None:
@@ -71494,6 +71528,8 @@ class SearchMediaByFaceRequest(TeaModel):
71494
71528
  self.face_search_token = m.get('FaceSearchToken')
71495
71529
  if m.get('MediaType') is not None:
71496
71530
  self.media_type = m.get('MediaType')
71531
+ if m.get('Namespace') is not None:
71532
+ self.namespace = m.get('Namespace')
71497
71533
  if m.get('PageNo') is not None:
71498
71534
  self.page_no = m.get('PageNo')
71499
71535
  if m.get('PageSize') is not None:
@@ -71643,6 +71679,7 @@ class SearchMediaByHybridRequest(TeaModel):
71643
71679
  self,
71644
71680
  media_id: str = None,
71645
71681
  media_type: str = None,
71682
+ namespace: str = None,
71646
71683
  page_no: int = None,
71647
71684
  page_size: int = None,
71648
71685
  search_lib_name: str = None,
@@ -71651,6 +71688,7 @@ class SearchMediaByHybridRequest(TeaModel):
71651
71688
  # The ID of the media asset. The details of the media asset are returned.
71652
71689
  self.media_id = media_id
71653
71690
  self.media_type = media_type
71691
+ self.namespace = namespace
71654
71692
  self.page_no = page_no
71655
71693
  self.page_size = page_size
71656
71694
  self.search_lib_name = search_lib_name
@@ -71669,6 +71707,8 @@ class SearchMediaByHybridRequest(TeaModel):
71669
71707
  result['MediaId'] = self.media_id
71670
71708
  if self.media_type is not None:
71671
71709
  result['MediaType'] = self.media_type
71710
+ if self.namespace is not None:
71711
+ result['Namespace'] = self.namespace
71672
71712
  if self.page_no is not None:
71673
71713
  result['PageNo'] = self.page_no
71674
71714
  if self.page_size is not None:
@@ -71685,6 +71725,8 @@ class SearchMediaByHybridRequest(TeaModel):
71685
71725
  self.media_id = m.get('MediaId')
71686
71726
  if m.get('MediaType') is not None:
71687
71727
  self.media_type = m.get('MediaType')
71728
+ if m.get('Namespace') is not None:
71729
+ self.namespace = m.get('Namespace')
71688
71730
  if m.get('PageNo') is not None:
71689
71731
  self.page_no = m.get('PageNo')
71690
71732
  if m.get('PageSize') is not None:
@@ -71880,6 +71922,7 @@ class SearchMediaByMultimodalRequest(TeaModel):
71880
71922
  def __init__(
71881
71923
  self,
71882
71924
  media_type: str = None,
71925
+ namespace: str = None,
71883
71926
  page_no: int = None,
71884
71927
  page_size: int = None,
71885
71928
  search_lib_name: str = None,
@@ -71892,6 +71935,7 @@ class SearchMediaByMultimodalRequest(TeaModel):
71892
71935
  # * image
71893
71936
  # * video (default)
71894
71937
  self.media_type = media_type
71938
+ self.namespace = namespace
71895
71939
  # The page number. Default value: 1.
71896
71940
  self.page_no = page_no
71897
71941
  # The number of entries per page. Default value: 10. Maximum value: 50.
@@ -71912,6 +71956,8 @@ class SearchMediaByMultimodalRequest(TeaModel):
71912
71956
  result = dict()
71913
71957
  if self.media_type is not None:
71914
71958
  result['MediaType'] = self.media_type
71959
+ if self.namespace is not None:
71960
+ result['Namespace'] = self.namespace
71915
71961
  if self.page_no is not None:
71916
71962
  result['PageNo'] = self.page_no
71917
71963
  if self.page_size is not None:
@@ -71926,6 +71972,8 @@ class SearchMediaByMultimodalRequest(TeaModel):
71926
71972
  m = m or dict()
71927
71973
  if m.get('MediaType') is not None:
71928
71974
  self.media_type = m.get('MediaType')
71975
+ if m.get('Namespace') is not None:
71976
+ self.namespace = m.get('Namespace')
71929
71977
  if m.get('PageNo') is not None:
71930
71978
  self.page_no = m.get('PageNo')
71931
71979
  if m.get('PageSize') is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: alibabacloud-ice20201109
3
- Version: 6.3.0
3
+ Version: 6.3.1
4
4
  Summary: Alibaba Cloud ICE (20201109) SDK Library for Python
5
5
  Home-page: https://github.com/aliyun/alibabacloud-python-sdk
6
6
  Author: Alibaba Cloud SDK
@@ -24,7 +24,7 @@ from setuptools import setup, find_packages
24
24
  """
25
25
  setup module for alibabacloud_ice20201109.
26
26
 
27
- Created on 05/06/2025
27
+ Created on 11/06/2025
28
28
 
29
29
  @author: Alibaba Cloud SDK
30
30
  """
@@ -1 +0,0 @@
1
- __version__ = '6.3.0'