google-cloud-automl 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +11 -0
- data/AUTHENTICATION.md +199 -0
- data/LICENSE +201 -0
- data/README.md +69 -0
- data/lib/google/cloud/automl/v1beta1/annotation_payload_pb.rb +34 -0
- data/lib/google/cloud/automl/v1beta1/annotation_spec_pb.rb +18 -0
- data/lib/google/cloud/automl/v1beta1/automl_client.rb +1914 -0
- data/lib/google/cloud/automl/v1beta1/automl_client_config.json +146 -0
- data/lib/google/cloud/automl/v1beta1/classification_pb.rb +65 -0
- data/lib/google/cloud/automl/v1beta1/column_spec_pb.rb +28 -0
- data/lib/google/cloud/automl/v1beta1/credentials.rb +41 -0
- data/lib/google/cloud/automl/v1beta1/data_items_pb.rb +48 -0
- data/lib/google/cloud/automl/v1beta1/data_stats_pb.rb +77 -0
- data/lib/google/cloud/automl/v1beta1/data_types_pb.rb +36 -0
- data/lib/google/cloud/automl/v1beta1/dataset_pb.rb +38 -0
- data/lib/google/cloud/automl/v1beta1/detection_pb.rb +52 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/annotation_payload.rb +63 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/annotation_spec.rb +41 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/classification.rb +203 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/column_spec.rb +72 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/data_items.rb +94 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/data_stats.rb +160 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/data_types.rb +107 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/dataset.rb +77 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/detection.rb +134 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/geometry.rb +43 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/image.rb +141 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/io.rb +975 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/model.rb +92 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/model_evaluation.rb +100 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/prediction_service.rb +136 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/ranges.rb +31 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/regression.rb +41 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/service.rb +368 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/table_spec.rb +64 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/tables.rb +261 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/temporal.rb +33 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/text.rb +53 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/text_extraction.rb +60 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/text_segment.rb +37 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/text_sentiment.rb +76 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/translation.rb +63 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/cloud/automl/v1beta1/video.rb +35 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/longrunning/operations.rb +51 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/protobuf/any.rb +131 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/protobuf/duration.rb +91 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/protobuf/field_mask.rb +222 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/protobuf/struct.rb +74 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/protobuf/timestamp.rb +111 -0
- data/lib/google/cloud/automl/v1beta1/doc/google/rpc/status.rb +87 -0
- data/lib/google/cloud/automl/v1beta1/geometry_pb.rb +21 -0
- data/lib/google/cloud/automl/v1beta1/image_pb.rb +43 -0
- data/lib/google/cloud/automl/v1beta1/io_pb.rb +80 -0
- data/lib/google/cloud/automl/v1beta1/model_evaluation_pb.rb +37 -0
- data/lib/google/cloud/automl/v1beta1/model_pb.rb +44 -0
- data/lib/google/cloud/automl/v1beta1/operations_pb.rb +90 -0
- data/lib/google/cloud/automl/v1beta1/prediction_service_client.rb +442 -0
- data/lib/google/cloud/automl/v1beta1/prediction_service_client_config.json +36 -0
- data/lib/google/cloud/automl/v1beta1/prediction_service_pb.rb +39 -0
- data/lib/google/cloud/automl/v1beta1/prediction_service_services_pb.rb +72 -0
- data/lib/google/cloud/automl/v1beta1/ranges_pb.rb +17 -0
- data/lib/google/cloud/automl/v1beta1/regression_pb.rb +20 -0
- data/lib/google/cloud/automl/v1beta1/service_pb.rb +177 -0
- data/lib/google/cloud/automl/v1beta1/service_services_pb.rb +159 -0
- data/lib/google/cloud/automl/v1beta1/table_spec_pb.rb +22 -0
- data/lib/google/cloud/automl/v1beta1/tables_pb.rb +56 -0
- data/lib/google/cloud/automl/v1beta1/temporal_pb.rb +18 -0
- data/lib/google/cloud/automl/v1beta1/text_extraction_pb.rb +32 -0
- data/lib/google/cloud/automl/v1beta1/text_pb.rb +33 -0
- data/lib/google/cloud/automl/v1beta1/text_segment_pb.rb +18 -0
- data/lib/google/cloud/automl/v1beta1/text_sentiment_pb.rb +29 -0
- data/lib/google/cloud/automl/v1beta1/translation_pb.rb +33 -0
- data/lib/google/cloud/automl/v1beta1/video_pb.rb +25 -0
- data/lib/google/cloud/automl/v1beta1.rb +231 -0
- data/lib/google/cloud/automl/version.rb +22 -0
- data/lib/google/cloud/automl.rb +219 -0
- data/lib/google-cloud-automl.rb +15 -0
- metadata +203 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
{
|
2
|
+
"interfaces": {
|
3
|
+
"google.cloud.automl.v1beta1.AutoMl": {
|
4
|
+
"retry_codes": {
|
5
|
+
"idempotent": [
|
6
|
+
"DEADLINE_EXCEEDED",
|
7
|
+
"UNAVAILABLE"
|
8
|
+
],
|
9
|
+
"non_idempotent": []
|
10
|
+
},
|
11
|
+
"retry_params": {
|
12
|
+
"default": {
|
13
|
+
"initial_retry_delay_millis": 100,
|
14
|
+
"retry_delay_multiplier": 1.3,
|
15
|
+
"max_retry_delay_millis": 60000,
|
16
|
+
"initial_rpc_timeout_millis": 20000,
|
17
|
+
"rpc_timeout_multiplier": 1.0,
|
18
|
+
"max_rpc_timeout_millis": 20000,
|
19
|
+
"total_timeout_millis": 600000
|
20
|
+
}
|
21
|
+
},
|
22
|
+
"methods": {
|
23
|
+
"CreateDataset": {
|
24
|
+
"timeout_millis": 5000,
|
25
|
+
"retry_codes_name": "non_idempotent",
|
26
|
+
"retry_params_name": "default"
|
27
|
+
},
|
28
|
+
"UpdateDataset": {
|
29
|
+
"timeout_millis": 5000,
|
30
|
+
"retry_codes_name": "non_idempotent",
|
31
|
+
"retry_params_name": "default"
|
32
|
+
},
|
33
|
+
"GetDataset": {
|
34
|
+
"timeout_millis": 5000,
|
35
|
+
"retry_codes_name": "idempotent",
|
36
|
+
"retry_params_name": "default"
|
37
|
+
},
|
38
|
+
"ListDatasets": {
|
39
|
+
"timeout_millis": 50000,
|
40
|
+
"retry_codes_name": "idempotent",
|
41
|
+
"retry_params_name": "default"
|
42
|
+
},
|
43
|
+
"DeleteDataset": {
|
44
|
+
"timeout_millis": 5000,
|
45
|
+
"retry_codes_name": "idempotent",
|
46
|
+
"retry_params_name": "default"
|
47
|
+
},
|
48
|
+
"ImportData": {
|
49
|
+
"timeout_millis": 20000,
|
50
|
+
"retry_codes_name": "non_idempotent",
|
51
|
+
"retry_params_name": "default"
|
52
|
+
},
|
53
|
+
"ExportData": {
|
54
|
+
"timeout_millis": 5000,
|
55
|
+
"retry_codes_name": "non_idempotent",
|
56
|
+
"retry_params_name": "default"
|
57
|
+
},
|
58
|
+
"CreateModel": {
|
59
|
+
"timeout_millis": 20000,
|
60
|
+
"retry_codes_name": "non_idempotent",
|
61
|
+
"retry_params_name": "default"
|
62
|
+
},
|
63
|
+
"GetModel": {
|
64
|
+
"timeout_millis": 5000,
|
65
|
+
"retry_codes_name": "idempotent",
|
66
|
+
"retry_params_name": "default"
|
67
|
+
},
|
68
|
+
"ListModels": {
|
69
|
+
"timeout_millis": 50000,
|
70
|
+
"retry_codes_name": "idempotent",
|
71
|
+
"retry_params_name": "default"
|
72
|
+
},
|
73
|
+
"DeleteModel": {
|
74
|
+
"timeout_millis": 5000,
|
75
|
+
"retry_codes_name": "idempotent",
|
76
|
+
"retry_params_name": "default"
|
77
|
+
},
|
78
|
+
"DeployModel": {
|
79
|
+
"timeout_millis": 5000,
|
80
|
+
"retry_codes_name": "non_idempotent",
|
81
|
+
"retry_params_name": "default"
|
82
|
+
},
|
83
|
+
"UndeployModel": {
|
84
|
+
"timeout_millis": 5000,
|
85
|
+
"retry_codes_name": "non_idempotent",
|
86
|
+
"retry_params_name": "default"
|
87
|
+
},
|
88
|
+
"GetModelEvaluation": {
|
89
|
+
"timeout_millis": 5000,
|
90
|
+
"retry_codes_name": "idempotent",
|
91
|
+
"retry_params_name": "default"
|
92
|
+
},
|
93
|
+
"ExportModel": {
|
94
|
+
"timeout_millis": 5000,
|
95
|
+
"retry_codes_name": "non_idempotent",
|
96
|
+
"retry_params_name": "default"
|
97
|
+
},
|
98
|
+
"ExportEvaluatedExamples": {
|
99
|
+
"timeout_millis": 5000,
|
100
|
+
"retry_codes_name": "non_idempotent",
|
101
|
+
"retry_params_name": "default"
|
102
|
+
},
|
103
|
+
"ListModelEvaluations": {
|
104
|
+
"timeout_millis": 50000,
|
105
|
+
"retry_codes_name": "non_idempotent",
|
106
|
+
"retry_params_name": "default"
|
107
|
+
},
|
108
|
+
"GetAnnotationSpec": {
|
109
|
+
"timeout_millis": 5000,
|
110
|
+
"retry_codes_name": "idempotent",
|
111
|
+
"retry_params_name": "default"
|
112
|
+
},
|
113
|
+
"GetTableSpec": {
|
114
|
+
"timeout_millis": 5000,
|
115
|
+
"retry_codes_name": "idempotent",
|
116
|
+
"retry_params_name": "default"
|
117
|
+
},
|
118
|
+
"ListTableSpecs": {
|
119
|
+
"timeout_millis": 5000,
|
120
|
+
"retry_codes_name": "idempotent",
|
121
|
+
"retry_params_name": "default"
|
122
|
+
},
|
123
|
+
"UpdateTableSpec": {
|
124
|
+
"timeout_millis": 5000,
|
125
|
+
"retry_codes_name": "non_idempotent",
|
126
|
+
"retry_params_name": "default"
|
127
|
+
},
|
128
|
+
"GetColumnSpec": {
|
129
|
+
"timeout_millis": 5000,
|
130
|
+
"retry_codes_name": "idempotent",
|
131
|
+
"retry_params_name": "default"
|
132
|
+
},
|
133
|
+
"ListColumnSpecs": {
|
134
|
+
"timeout_millis": 5000,
|
135
|
+
"retry_codes_name": "idempotent",
|
136
|
+
"retry_params_name": "default"
|
137
|
+
},
|
138
|
+
"UpdateColumnSpec": {
|
139
|
+
"timeout_millis": 5000,
|
140
|
+
"retry_codes_name": "non_idempotent",
|
141
|
+
"retry_params_name": "default"
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/classification.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/cloud/automl/v1beta1/temporal_pb'
|
8
|
+
require 'google/api/annotations_pb'
|
9
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
10
|
+
add_message "google.cloud.automl.v1beta1.ClassificationAnnotation" do
|
11
|
+
optional :score, :float, 1
|
12
|
+
end
|
13
|
+
add_message "google.cloud.automl.v1beta1.VideoClassificationAnnotation" do
|
14
|
+
optional :type, :string, 1
|
15
|
+
optional :classification_annotation, :message, 2, "google.cloud.automl.v1beta1.ClassificationAnnotation"
|
16
|
+
optional :time_segment, :message, 3, "google.cloud.automl.v1beta1.TimeSegment"
|
17
|
+
end
|
18
|
+
add_message "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics" do
|
19
|
+
optional :au_prc, :float, 1
|
20
|
+
optional :base_au_prc, :float, 2
|
21
|
+
optional :au_roc, :float, 6
|
22
|
+
optional :log_loss, :float, 7
|
23
|
+
repeated :confidence_metrics_entry, :message, 3, "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry"
|
24
|
+
optional :confusion_matrix, :message, 4, "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix"
|
25
|
+
repeated :annotation_spec_id, :string, 5
|
26
|
+
end
|
27
|
+
add_message "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry" do
|
28
|
+
optional :confidence_threshold, :float, 1
|
29
|
+
optional :position_threshold, :int32, 14
|
30
|
+
optional :recall, :float, 2
|
31
|
+
optional :precision, :float, 3
|
32
|
+
optional :false_positive_rate, :float, 8
|
33
|
+
optional :f1_score, :float, 4
|
34
|
+
optional :recall_at1, :float, 5
|
35
|
+
optional :precision_at1, :float, 6
|
36
|
+
optional :false_positive_rate_at1, :float, 9
|
37
|
+
optional :f1_score_at1, :float, 7
|
38
|
+
optional :true_positive_count, :int64, 10
|
39
|
+
optional :false_positive_count, :int64, 11
|
40
|
+
optional :false_negative_count, :int64, 12
|
41
|
+
optional :true_negative_count, :int64, 13
|
42
|
+
end
|
43
|
+
add_message "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix" do
|
44
|
+
repeated :annotation_spec_id, :string, 1
|
45
|
+
repeated :row, :message, 2, "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix.Row"
|
46
|
+
end
|
47
|
+
add_message "google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix.Row" do
|
48
|
+
repeated :example_count, :int32, 1
|
49
|
+
end
|
50
|
+
add_enum "google.cloud.automl.v1beta1.ClassificationType" do
|
51
|
+
value :CLASSIFICATION_TYPE_UNSPECIFIED, 0
|
52
|
+
value :MULTICLASS, 1
|
53
|
+
value :MULTILABEL, 2
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
module Google::Cloud::AutoML::V1beta1
|
58
|
+
ClassificationAnnotation = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ClassificationAnnotation").msgclass
|
59
|
+
VideoClassificationAnnotation = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.VideoClassificationAnnotation").msgclass
|
60
|
+
ClassificationEvaluationMetrics = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ClassificationEvaluationMetrics").msgclass
|
61
|
+
ClassificationEvaluationMetrics::ConfidenceMetricsEntry = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfidenceMetricsEntry").msgclass
|
62
|
+
ClassificationEvaluationMetrics::ConfusionMatrix = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix").msgclass
|
63
|
+
ClassificationEvaluationMetrics::ConfusionMatrix::Row = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ClassificationEvaluationMetrics.ConfusionMatrix.Row").msgclass
|
64
|
+
ClassificationType = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ClassificationType").enummodule
|
65
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/column_spec.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/cloud/automl/v1beta1/data_stats_pb'
|
8
|
+
require 'google/cloud/automl/v1beta1/data_types_pb'
|
9
|
+
require 'google/api/annotations_pb'
|
10
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
11
|
+
add_message "google.cloud.automl.v1beta1.ColumnSpec" do
|
12
|
+
optional :name, :string, 1
|
13
|
+
optional :data_type, :message, 2, "google.cloud.automl.v1beta1.DataType"
|
14
|
+
optional :display_name, :string, 3
|
15
|
+
optional :data_stats, :message, 4, "google.cloud.automl.v1beta1.DataStats"
|
16
|
+
repeated :top_correlated_columns, :message, 5, "google.cloud.automl.v1beta1.ColumnSpec.CorrelatedColumn"
|
17
|
+
optional :etag, :string, 6
|
18
|
+
end
|
19
|
+
add_message "google.cloud.automl.v1beta1.ColumnSpec.CorrelatedColumn" do
|
20
|
+
optional :column_spec_id, :string, 1
|
21
|
+
optional :correlation_stats, :message, 2, "google.cloud.automl.v1beta1.CorrelationStats"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Google::Cloud::AutoML::V1beta1
|
26
|
+
ColumnSpec = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ColumnSpec").msgclass
|
27
|
+
ColumnSpec::CorrelatedColumn = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ColumnSpec.CorrelatedColumn").msgclass
|
28
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Copyright 2019 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "googleauth"
|
17
|
+
|
18
|
+
module Google
|
19
|
+
module Cloud
|
20
|
+
module AutoML
|
21
|
+
module V1beta1
|
22
|
+
class Credentials < Google::Auth::Credentials
|
23
|
+
SCOPE = [
|
24
|
+
"https://www.googleapis.com/auth/cloud-platform"
|
25
|
+
].freeze
|
26
|
+
PATH_ENV_VARS = %w(AUTOML_CREDENTIALS
|
27
|
+
AUTOML_KEYFILE
|
28
|
+
GOOGLE_CLOUD_CREDENTIALS
|
29
|
+
GOOGLE_CLOUD_KEYFILE
|
30
|
+
GCLOUD_KEYFILE)
|
31
|
+
JSON_ENV_VARS = %w(AUTOML_CREDENTIALS_JSON
|
32
|
+
AUTOML_KEYFILE_JSON
|
33
|
+
GOOGLE_CLOUD_CREDENTIALS_JSON
|
34
|
+
GOOGLE_CLOUD_KEYFILE_JSON
|
35
|
+
GCLOUD_KEYFILE_JSON)
|
36
|
+
DEFAULT_PATHS = ["~/.config/gcloud/application_default_credentials.json"]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/data_items.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/cloud/automl/v1beta1/io_pb'
|
8
|
+
require 'google/protobuf/any_pb'
|
9
|
+
require 'google/protobuf/duration_pb'
|
10
|
+
require 'google/protobuf/struct_pb'
|
11
|
+
require 'google/api/annotations_pb'
|
12
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
13
|
+
add_message "google.cloud.automl.v1beta1.Image" do
|
14
|
+
optional :thumbnail_uri, :string, 4
|
15
|
+
oneof :data do
|
16
|
+
optional :image_bytes, :bytes, 1
|
17
|
+
optional :input_config, :message, 6, "google.cloud.automl.v1beta1.InputConfig"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
add_message "google.cloud.automl.v1beta1.TextSnippet" do
|
21
|
+
optional :content, :string, 1
|
22
|
+
optional :mime_type, :string, 2
|
23
|
+
optional :content_uri, :string, 4
|
24
|
+
end
|
25
|
+
add_message "google.cloud.automl.v1beta1.Document" do
|
26
|
+
optional :input_config, :message, 1, "google.cloud.automl.v1beta1.DocumentInputConfig"
|
27
|
+
end
|
28
|
+
add_message "google.cloud.automl.v1beta1.Row" do
|
29
|
+
repeated :column_spec_ids, :string, 2
|
30
|
+
repeated :values, :message, 3, "google.protobuf.Value"
|
31
|
+
end
|
32
|
+
add_message "google.cloud.automl.v1beta1.ExamplePayload" do
|
33
|
+
oneof :payload do
|
34
|
+
optional :image, :message, 1, "google.cloud.automl.v1beta1.Image"
|
35
|
+
optional :text_snippet, :message, 2, "google.cloud.automl.v1beta1.TextSnippet"
|
36
|
+
optional :document, :message, 4, "google.cloud.automl.v1beta1.Document"
|
37
|
+
optional :row, :message, 3, "google.cloud.automl.v1beta1.Row"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module Google::Cloud::AutoML::V1beta1
|
43
|
+
Image = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.Image").msgclass
|
44
|
+
TextSnippet = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.TextSnippet").msgclass
|
45
|
+
Document = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.Document").msgclass
|
46
|
+
Row = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.Row").msgclass
|
47
|
+
ExamplePayload = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ExamplePayload").msgclass
|
48
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/data_stats.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/api/annotations_pb'
|
8
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
9
|
+
add_message "google.cloud.automl.v1beta1.DataStats" do
|
10
|
+
optional :distinct_value_count, :int64, 1
|
11
|
+
optional :null_value_count, :int64, 2
|
12
|
+
optional :valid_value_count, :int64, 9
|
13
|
+
oneof :stats do
|
14
|
+
optional :float64_stats, :message, 3, "google.cloud.automl.v1beta1.Float64Stats"
|
15
|
+
optional :string_stats, :message, 4, "google.cloud.automl.v1beta1.StringStats"
|
16
|
+
optional :timestamp_stats, :message, 5, "google.cloud.automl.v1beta1.TimestampStats"
|
17
|
+
optional :array_stats, :message, 6, "google.cloud.automl.v1beta1.ArrayStats"
|
18
|
+
optional :struct_stats, :message, 7, "google.cloud.automl.v1beta1.StructStats"
|
19
|
+
optional :category_stats, :message, 8, "google.cloud.automl.v1beta1.CategoryStats"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
add_message "google.cloud.automl.v1beta1.Float64Stats" do
|
23
|
+
optional :mean, :double, 1
|
24
|
+
optional :standard_deviation, :double, 2
|
25
|
+
repeated :quantiles, :double, 3
|
26
|
+
repeated :histogram_buckets, :message, 4, "google.cloud.automl.v1beta1.Float64Stats.HistogramBucket"
|
27
|
+
end
|
28
|
+
add_message "google.cloud.automl.v1beta1.Float64Stats.HistogramBucket" do
|
29
|
+
optional :min, :double, 1
|
30
|
+
optional :max, :double, 2
|
31
|
+
optional :count, :int64, 3
|
32
|
+
end
|
33
|
+
add_message "google.cloud.automl.v1beta1.StringStats" do
|
34
|
+
repeated :top_unigram_stats, :message, 1, "google.cloud.automl.v1beta1.StringStats.UnigramStats"
|
35
|
+
end
|
36
|
+
add_message "google.cloud.automl.v1beta1.StringStats.UnigramStats" do
|
37
|
+
optional :value, :string, 1
|
38
|
+
optional :count, :int64, 2
|
39
|
+
end
|
40
|
+
add_message "google.cloud.automl.v1beta1.TimestampStats" do
|
41
|
+
map :granular_stats, :string, :message, 1, "google.cloud.automl.v1beta1.TimestampStats.GranularStats"
|
42
|
+
end
|
43
|
+
add_message "google.cloud.automl.v1beta1.TimestampStats.GranularStats" do
|
44
|
+
map :buckets, :int32, :int64, 1
|
45
|
+
end
|
46
|
+
add_message "google.cloud.automl.v1beta1.ArrayStats" do
|
47
|
+
optional :member_stats, :message, 2, "google.cloud.automl.v1beta1.DataStats"
|
48
|
+
end
|
49
|
+
add_message "google.cloud.automl.v1beta1.StructStats" do
|
50
|
+
map :field_stats, :string, :message, 1, "google.cloud.automl.v1beta1.DataStats"
|
51
|
+
end
|
52
|
+
add_message "google.cloud.automl.v1beta1.CategoryStats" do
|
53
|
+
repeated :top_category_stats, :message, 1, "google.cloud.automl.v1beta1.CategoryStats.SingleCategoryStats"
|
54
|
+
end
|
55
|
+
add_message "google.cloud.automl.v1beta1.CategoryStats.SingleCategoryStats" do
|
56
|
+
optional :value, :string, 1
|
57
|
+
optional :count, :int64, 2
|
58
|
+
end
|
59
|
+
add_message "google.cloud.automl.v1beta1.CorrelationStats" do
|
60
|
+
optional :cramers_v, :double, 1
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
module Google::Cloud::AutoML::V1beta1
|
65
|
+
DataStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.DataStats").msgclass
|
66
|
+
Float64Stats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.Float64Stats").msgclass
|
67
|
+
Float64Stats::HistogramBucket = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.Float64Stats.HistogramBucket").msgclass
|
68
|
+
StringStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.StringStats").msgclass
|
69
|
+
StringStats::UnigramStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.StringStats.UnigramStats").msgclass
|
70
|
+
TimestampStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.TimestampStats").msgclass
|
71
|
+
TimestampStats::GranularStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.TimestampStats.GranularStats").msgclass
|
72
|
+
ArrayStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ArrayStats").msgclass
|
73
|
+
StructStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.StructStats").msgclass
|
74
|
+
CategoryStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.CategoryStats").msgclass
|
75
|
+
CategoryStats::SingleCategoryStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.CategoryStats.SingleCategoryStats").msgclass
|
76
|
+
CorrelationStats = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.CorrelationStats").msgclass
|
77
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/data_types.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/api/annotations_pb'
|
8
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
9
|
+
add_message "google.cloud.automl.v1beta1.DataType" do
|
10
|
+
optional :type_code, :enum, 1, "google.cloud.automl.v1beta1.TypeCode"
|
11
|
+
optional :nullable, :bool, 4
|
12
|
+
oneof :details do
|
13
|
+
optional :list_element_type, :message, 2, "google.cloud.automl.v1beta1.DataType"
|
14
|
+
optional :struct_type, :message, 3, "google.cloud.automl.v1beta1.StructType"
|
15
|
+
optional :time_format, :string, 5
|
16
|
+
end
|
17
|
+
end
|
18
|
+
add_message "google.cloud.automl.v1beta1.StructType" do
|
19
|
+
map :fields, :string, :message, 1, "google.cloud.automl.v1beta1.DataType"
|
20
|
+
end
|
21
|
+
add_enum "google.cloud.automl.v1beta1.TypeCode" do
|
22
|
+
value :TYPE_CODE_UNSPECIFIED, 0
|
23
|
+
value :FLOAT64, 3
|
24
|
+
value :TIMESTAMP, 4
|
25
|
+
value :STRING, 6
|
26
|
+
value :ARRAY, 8
|
27
|
+
value :STRUCT, 9
|
28
|
+
value :CATEGORY, 10
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module Google::Cloud::AutoML::V1beta1
|
33
|
+
DataType = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.DataType").msgclass
|
34
|
+
StructType = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.StructType").msgclass
|
35
|
+
TypeCode = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.TypeCode").enummodule
|
36
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/dataset.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/cloud/automl/v1beta1/image_pb'
|
8
|
+
require 'google/cloud/automl/v1beta1/tables_pb'
|
9
|
+
require 'google/cloud/automl/v1beta1/text_pb'
|
10
|
+
require 'google/cloud/automl/v1beta1/translation_pb'
|
11
|
+
require 'google/cloud/automl/v1beta1/video_pb'
|
12
|
+
require 'google/protobuf/timestamp_pb'
|
13
|
+
require 'google/api/annotations_pb'
|
14
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
15
|
+
add_message "google.cloud.automl.v1beta1.Dataset" do
|
16
|
+
optional :name, :string, 1
|
17
|
+
optional :display_name, :string, 2
|
18
|
+
optional :description, :string, 3
|
19
|
+
optional :example_count, :int32, 21
|
20
|
+
optional :create_time, :message, 14, "google.protobuf.Timestamp"
|
21
|
+
optional :etag, :string, 17
|
22
|
+
oneof :dataset_metadata do
|
23
|
+
optional :translation_dataset_metadata, :message, 23, "google.cloud.automl.v1beta1.TranslationDatasetMetadata"
|
24
|
+
optional :image_classification_dataset_metadata, :message, 24, "google.cloud.automl.v1beta1.ImageClassificationDatasetMetadata"
|
25
|
+
optional :text_classification_dataset_metadata, :message, 25, "google.cloud.automl.v1beta1.TextClassificationDatasetMetadata"
|
26
|
+
optional :image_object_detection_dataset_metadata, :message, 26, "google.cloud.automl.v1beta1.ImageObjectDetectionDatasetMetadata"
|
27
|
+
optional :video_classification_dataset_metadata, :message, 31, "google.cloud.automl.v1beta1.VideoClassificationDatasetMetadata"
|
28
|
+
optional :video_object_tracking_dataset_metadata, :message, 29, "google.cloud.automl.v1beta1.VideoObjectTrackingDatasetMetadata"
|
29
|
+
optional :text_extraction_dataset_metadata, :message, 28, "google.cloud.automl.v1beta1.TextExtractionDatasetMetadata"
|
30
|
+
optional :text_sentiment_dataset_metadata, :message, 30, "google.cloud.automl.v1beta1.TextSentimentDatasetMetadata"
|
31
|
+
optional :tables_dataset_metadata, :message, 33, "google.cloud.automl.v1beta1.TablesDatasetMetadata"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module Google::Cloud::AutoML::V1beta1
|
37
|
+
Dataset = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.Dataset").msgclass
|
38
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/cloud/automl/v1beta1/detection.proto
|
3
|
+
|
4
|
+
|
5
|
+
require 'google/protobuf'
|
6
|
+
|
7
|
+
require 'google/cloud/automl/v1beta1/geometry_pb'
|
8
|
+
require 'google/protobuf/duration_pb'
|
9
|
+
require 'google/api/annotations_pb'
|
10
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
11
|
+
add_message "google.cloud.automl.v1beta1.ImageObjectDetectionAnnotation" do
|
12
|
+
optional :bounding_box, :message, 1, "google.cloud.automl.v1beta1.BoundingPoly"
|
13
|
+
optional :score, :float, 2
|
14
|
+
end
|
15
|
+
add_message "google.cloud.automl.v1beta1.VideoObjectTrackingAnnotation" do
|
16
|
+
optional :instance_id, :string, 1
|
17
|
+
optional :time_offset, :message, 2, "google.protobuf.Duration"
|
18
|
+
optional :bounding_box, :message, 3, "google.cloud.automl.v1beta1.BoundingPoly"
|
19
|
+
optional :score, :float, 4
|
20
|
+
end
|
21
|
+
add_message "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry" do
|
22
|
+
optional :iou_threshold, :float, 1
|
23
|
+
optional :mean_average_precision, :float, 2
|
24
|
+
repeated :confidence_metrics_entries, :message, 3, "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry.ConfidenceMetricsEntry"
|
25
|
+
end
|
26
|
+
add_message "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry.ConfidenceMetricsEntry" do
|
27
|
+
optional :confidence_threshold, :float, 1
|
28
|
+
optional :recall, :float, 2
|
29
|
+
optional :precision, :float, 3
|
30
|
+
optional :f1_score, :float, 4
|
31
|
+
end
|
32
|
+
add_message "google.cloud.automl.v1beta1.ImageObjectDetectionEvaluationMetrics" do
|
33
|
+
optional :evaluated_bounding_box_count, :int32, 1
|
34
|
+
repeated :bounding_box_metrics_entries, :message, 2, "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry"
|
35
|
+
optional :bounding_box_mean_average_precision, :float, 3
|
36
|
+
end
|
37
|
+
add_message "google.cloud.automl.v1beta1.VideoObjectTrackingEvaluationMetrics" do
|
38
|
+
optional :evaluated_frame_count, :int32, 1
|
39
|
+
optional :evaluated_bounding_box_count, :int32, 2
|
40
|
+
repeated :bounding_box_metrics_entries, :message, 4, "google.cloud.automl.v1beta1.BoundingBoxMetricsEntry"
|
41
|
+
optional :bounding_box_mean_average_precision, :float, 6
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
module Google::Cloud::AutoML::V1beta1
|
46
|
+
ImageObjectDetectionAnnotation = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ImageObjectDetectionAnnotation").msgclass
|
47
|
+
VideoObjectTrackingAnnotation = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.VideoObjectTrackingAnnotation").msgclass
|
48
|
+
BoundingBoxMetricsEntry = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.BoundingBoxMetricsEntry").msgclass
|
49
|
+
BoundingBoxMetricsEntry::ConfidenceMetricsEntry = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.BoundingBoxMetricsEntry.ConfidenceMetricsEntry").msgclass
|
50
|
+
ImageObjectDetectionEvaluationMetrics = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.ImageObjectDetectionEvaluationMetrics").msgclass
|
51
|
+
VideoObjectTrackingEvaluationMetrics = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.automl.v1beta1.VideoObjectTrackingEvaluationMetrics").msgclass
|
52
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# Copyright 2019 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
module Google
|
17
|
+
module Cloud
|
18
|
+
module AutoML
|
19
|
+
module V1beta1
|
20
|
+
# Contains annotation information that is relevant to AutoML.
|
21
|
+
# @!attribute [rw] translation
|
22
|
+
# @return [Google::Cloud::AutoML::V1beta1::TranslationAnnotation]
|
23
|
+
# Annotation details for translation.
|
24
|
+
# @!attribute [rw] classification
|
25
|
+
# @return [Google::Cloud::AutoML::V1beta1::ClassificationAnnotation]
|
26
|
+
# Annotation details for content or image classification.
|
27
|
+
# @!attribute [rw] image_object_detection
|
28
|
+
# @return [Google::Cloud::AutoML::V1beta1::ImageObjectDetectionAnnotation]
|
29
|
+
# Annotation details for image object detection.
|
30
|
+
# @!attribute [rw] video_classification
|
31
|
+
# @return [Google::Cloud::AutoML::V1beta1::VideoClassificationAnnotation]
|
32
|
+
# Annotation details for video classification.
|
33
|
+
# Returned for Video Classification predictions.
|
34
|
+
# @!attribute [rw] video_object_tracking
|
35
|
+
# @return [Google::Cloud::AutoML::V1beta1::VideoObjectTrackingAnnotation]
|
36
|
+
# Annotation details for video object tracking.
|
37
|
+
# @!attribute [rw] text_extraction
|
38
|
+
# @return [Google::Cloud::AutoML::V1beta1::TextExtractionAnnotation]
|
39
|
+
# Annotation details for text extraction.
|
40
|
+
# @!attribute [rw] text_sentiment
|
41
|
+
# @return [Google::Cloud::AutoML::V1beta1::TextSentimentAnnotation]
|
42
|
+
# Annotation details for text sentiment.
|
43
|
+
# @!attribute [rw] tables
|
44
|
+
# @return [Google::Cloud::AutoML::V1beta1::TablesAnnotation]
|
45
|
+
# Annotation details for Tables.
|
46
|
+
# @!attribute [rw] annotation_spec_id
|
47
|
+
# @return [String]
|
48
|
+
# Output only . The resource ID of the annotation spec that
|
49
|
+
# this annotation pertains to. The annotation spec comes from either an
|
50
|
+
# ancestor dataset, or the dataset that was used to train the model in use.
|
51
|
+
# @!attribute [rw] display_name
|
52
|
+
# @return [String]
|
53
|
+
# Output only. The value of
|
54
|
+
# {Google::Cloud::AutoML::V1beta1::AnnotationSpec#display_name display_name}
|
55
|
+
# when the model was trained. Because this field returns a value at model
|
56
|
+
# training time, for different models trained using the same dataset, the
|
57
|
+
# returned value could be different as model owner could update the
|
58
|
+
# `display_name` between any two model training.
|
59
|
+
class AnnotationPayload; end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Copyright 2019 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
module Google
|
17
|
+
module Cloud
|
18
|
+
module AutoML
|
19
|
+
module V1beta1
|
20
|
+
# A definition of an annotation spec.
|
21
|
+
# @!attribute [rw] name
|
22
|
+
# @return [String]
|
23
|
+
# Output only. Resource name of the annotation spec.
|
24
|
+
# Form:
|
25
|
+
#
|
26
|
+
# 'projects/\\{project_id}/locations/\\{location_id}/datasets/\\{dataset_id}/annotationSpecs/\\{annotation_spec_id}'
|
27
|
+
# @!attribute [rw] display_name
|
28
|
+
# @return [String]
|
29
|
+
# Required.
|
30
|
+
# The name of the annotation spec to show in the interface. The name can be
|
31
|
+
# up to 32 characters long and must match the regexp `[a-zA-Z0-9_]+`.
|
32
|
+
# (_), and ASCII digits 0-9.
|
33
|
+
# @!attribute [rw] example_count
|
34
|
+
# @return [Integer]
|
35
|
+
# Output only. The number of examples in the parent dataset
|
36
|
+
# labeled by the annotation spec.
|
37
|
+
class AnnotationSpec; end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|