Skip to content

Commit 5decb48

Browse files
authored
Added AllowAdditionalRestorations flag to reader params (#63)
Added DataMatrixVersion enum and DataMatrixVersion param into DataMatrixParams
1 parent 0244c5e commit 5decb48

13 files changed

Lines changed: 449 additions & 10 deletions

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![Maven metadata URL](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Freleases.aspose.cloud%2Fjava%2Frepo%2Fcom%2Faspose%2Faspose-barcode-cloud%2Fmaven-metadata.xml)](https://releases.aspose.cloud/java/repo/com/aspose/aspose-barcode-cloud/)
66

77
- API version: 3.0
8-
- SDK version: 23.7.0
8+
- SDK version: 23.8.0
99

1010
## Demo applications
1111

@@ -68,7 +68,7 @@ Add this dependency to your project's POM:
6868
<dependency>
6969
<groupId>com.aspose</groupId>
7070
<artifactId>aspose-barcode-cloud</artifactId>
71-
<version>23.7.0</version>
71+
<version>23.8.0</version>
7272
<scope>compile</scope>
7373
</dependency>
7474
```
@@ -83,7 +83,7 @@ mvn clean package
8383

8484
Then manually install the following JARs:
8585

86-
- `target/aspose-barcode-cloud-23.7.0.jar`
86+
- `target/aspose-barcode-cloud-23.8.0.jar`
8787
- `target/lib/*.jar`
8888

8989
## Getting Started
@@ -213,6 +213,7 @@ Class | Method | HTTP request | Description
213213
- [DataMatrixEccType](docs/DataMatrixEccType.md)
214214
- [DataMatrixEncodeMode](docs/DataMatrixEncodeMode.md)
215215
- [DataMatrixParams](docs/DataMatrixParams.md)
216+
- [DataMatrixVersion](docs/DataMatrixVersion.md)
216217
- [DecodeBarcodeType](docs/DecodeBarcodeType.md)
217218
- [DiscUsage](docs/DiscUsage.md)
218219
- [DotCodeEncodeMode](docs/DotCodeEncodeMode.md)

docs/BarcodeApi.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ Name | Type | Description | Notes
9898

9999
## getBarcodeRecognize
100100

101-
> BarcodeResponseList getBarcodeRecognize(name, type, checksumValidation, detectEncoding, preset, rectX, rectY, rectWidth, rectHeight, stripFNC, timeout, medianSmoothingWindowSize, allowMedianSmoothing, allowComplexBackground, allowDatamatrixIndustrialBarcodes, allowDecreasedImage, allowDetectScanGap, allowIncorrectBarcodes, allowInvertImage, allowMicroWhiteSpotsRemoving, allowOneDFastBarcodesDetector, allowOneDWipedBarsRestoration, allowQRMicroQrRestoration, allowRegularImage, allowSaltAndPepperFiltering, allowWhiteSpotsRemoving, checkMore1DVariants, fastScanOnly, regionLikelihoodThresholdPercent, scanWindowSizes, similarity, skipDiagonalSearch, readTinyBarcodes, australianPostEncodingTable, ignoreEndingFillingPatternsForCTable, storage, folder)
101+
> BarcodeResponseList getBarcodeRecognize(name, type, checksumValidation, detectEncoding, preset, rectX, rectY, rectWidth, rectHeight, stripFNC, timeout, medianSmoothingWindowSize, allowMedianSmoothing, allowComplexBackground, allowDatamatrixIndustrialBarcodes, allowDecreasedImage, allowDetectScanGap, allowIncorrectBarcodes, allowInvertImage, allowMicroWhiteSpotsRemoving, allowOneDFastBarcodesDetector, allowOneDWipedBarsRestoration, allowQRMicroQrRestoration, allowRegularImage, allowSaltAndPepperFiltering, allowWhiteSpotsRemoving, checkMore1DVariants, fastScanOnly, allowAdditionalRestorations, regionLikelihoodThresholdPercent, scanWindowSizes, similarity, skipDiagonalSearch, readTinyBarcodes, australianPostEncodingTable, ignoreEndingFillingPatternsForCTable, storage, folder)
102102
103103
Recognize barcode from a file on server.
104104

@@ -166,6 +166,7 @@ Name | Type | Description | Notes
166166
**allowWhiteSpotsRemoving** | **Boolean**| Allows engine to recognize image without small white spots as additional scan. Mode helps to recognize noised image as well as median smoothing filtering. | [optional]
167167
**checkMore1DVariants** | **Boolean**| Allows engine to recognize 1D barcodes with checksum by checking more recognition variants. Default value: False. | [optional]
168168
**fastScanOnly** | **Boolean**| Allows engine for 1D barcodes to quickly recognize middle slice of an image and return result without using any time-consuming algorithms. Default value: False. | [optional]
169+
**allowAdditionalRestorations** | **Boolean**| Allows engine using additional image restorations to recognize corrupted barcodes. At this time, it is used only in MicroPdf417 barcode type. Default value: False. | [optional]
169170
**regionLikelihoodThresholdPercent** | **Double**| Sets threshold for detected regions that may contain barcodes. Value 0.7 means that bottom 70% of possible regions are filtered out and not processed further. Region likelihood threshold must be between [0.05, 0.9] Use high values for clear images with few barcodes. Use low values for images with many barcodes or for noisy images. Low value may lead to a bigger recognition time. | [optional]
170171
**scanWindowSizes** | **List&lt;Integer&gt;**| Scan window sizes in pixels. Allowed sizes are 10, 15, 20, 25, 30. Scanning with small window size takes more time and provides more accuracy but may fail in detecting very big barcodes. Combining of several window sizes can improve detection quality. | [optional]
171172
**similarity** | **Double**| Similarity coefficient depends on how homogeneous barcodes are. Use high value for for clear barcodes. Use low values to detect barcodes that ara partly damaged or not lighten evenly. Similarity coefficient must be between [0.5, 0.9] | [optional]
@@ -182,7 +183,7 @@ Name | Type | Description | Notes
182183

183184
## postBarcodeRecognizeFromUrlOrContent
184185

185-
> BarcodeResponseList postBarcodeRecognizeFromUrlOrContent(type, checksumValidation, detectEncoding, preset, rectX, rectY, rectWidth, rectHeight, stripFNC, timeout, medianSmoothingWindowSize, allowMedianSmoothing, allowComplexBackground, allowDatamatrixIndustrialBarcodes, allowDecreasedImage, allowDetectScanGap, allowIncorrectBarcodes, allowInvertImage, allowMicroWhiteSpotsRemoving, allowOneDFastBarcodesDetector, allowOneDWipedBarsRestoration, allowQRMicroQrRestoration, allowRegularImage, allowSaltAndPepperFiltering, allowWhiteSpotsRemoving, checkMore1DVariants, fastScanOnly, regionLikelihoodThresholdPercent, scanWindowSizes, similarity, skipDiagonalSearch, readTinyBarcodes, australianPostEncodingTable, ignoreEndingFillingPatternsForCTable, url, image)
186+
> BarcodeResponseList postBarcodeRecognizeFromUrlOrContent(type, checksumValidation, detectEncoding, preset, rectX, rectY, rectWidth, rectHeight, stripFNC, timeout, medianSmoothingWindowSize, allowMedianSmoothing, allowComplexBackground, allowDatamatrixIndustrialBarcodes, allowDecreasedImage, allowDetectScanGap, allowIncorrectBarcodes, allowInvertImage, allowMicroWhiteSpotsRemoving, allowOneDFastBarcodesDetector, allowOneDWipedBarsRestoration, allowQRMicroQrRestoration, allowRegularImage, allowSaltAndPepperFiltering, allowWhiteSpotsRemoving, checkMore1DVariants, fastScanOnly, allowAdditionalRestorations, regionLikelihoodThresholdPercent, scanWindowSizes, similarity, skipDiagonalSearch, readTinyBarcodes, australianPostEncodingTable, ignoreEndingFillingPatternsForCTable, url, image)
186187
187188
Recognize barcode from an url or from request body. Request body can contain raw data bytes of the image with content-type \&quot;application/octet-stream\&quot;. An image can also be passed as a form field.
188189

@@ -248,6 +249,7 @@ Name | Type | Description | Notes
248249
**allowWhiteSpotsRemoving** | **Boolean**| Allows engine to recognize image without small white spots as additional scan. Mode helps to recognize noised image as well as median smoothing filtering. | [optional]
249250
**checkMore1DVariants** | **Boolean**| Allows engine to recognize 1D barcodes with checksum by checking more recognition variants. Default value: False. | [optional]
250251
**fastScanOnly** | **Boolean**| Allows engine for 1D barcodes to quickly recognize middle slice of an image and return result without using any time-consuming algorithms. Default value: False. | [optional]
252+
**allowAdditionalRestorations** | **Boolean**| Allows engine using additional image restorations to recognize corrupted barcodes. At this time, it is used only in MicroPdf417 barcode type. Default value: False. | [optional]
251253
**regionLikelihoodThresholdPercent** | **Double**| Sets threshold for detected regions that may contain barcodes. Value 0.7 means that bottom 70% of possible regions are filtered out and not processed further. Region likelihood threshold must be between [0.05, 0.9] Use high values for clear images with few barcodes. Use low values for images with many barcodes or for noisy images. Low value may lead to a bigger recognition time. | [optional]
252254
**scanWindowSizes** | **List&lt;Integer&gt;**| Scan window sizes in pixels. Allowed sizes are 10, 15, 20, 25, 30. Scanning with small window size takes more time and provides more accuracy but may fail in detecting very big barcodes. Combining of several window sizes can improve detection quality. | [optional]
253255
**similarity** | **Double**| Similarity coefficient depends on how homogeneous barcodes are. Use high value for for clear barcodes. Use low values to detect barcodes that ara partly damaged or not lighten evenly. Similarity coefficient must be between [0.5, 0.9] | [optional]

docs/DataMatrixParams.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Name | Type | Description | Notes
1111
**dataMatrixEncodeMode** | [**DataMatrixEncodeMode**](DataMatrixEncodeMode.md) | Encode mode of Datamatrix barcode. Default value: DataMatrixEncodeMode.Auto. | [optional]
1212
**rows** | **Integer** | DEPRECATED: Will be replaced with &#39;DataMatrix.Version&#39; in the next release Rows count. | [optional]
1313
**macroCharacters** | [**MacroCharacter**](MacroCharacter.md) | Macro Characters 05 and 06 values are used to obtain more compact encoding in special modes. Can be used only with DataMatrixEccType.Ecc200 or DataMatrixEccType.EccAuto. Cannot be used with EncodeTypes.GS1DataMatrix Default value: MacroCharacters.None. | [optional]
14+
**version** | [**DataMatrixVersion**](DataMatrixVersion.md) | Sets a Datamatrix symbol size. Default value: DataMatrixVersion.Auto. | [optional]
1415

1516

1617

docs/DataMatrixVersion.md

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
2+
# DataMatrixVersion
3+
4+
## Enum
5+
6+
7+
* `AUTO` (value: `"Auto"`)
8+
9+
* `ROWSCOLUMNS` (value: `"RowsColumns"`)
10+
11+
* `ECC000_9X9` (value: `"ECC000_9x9"`)
12+
13+
* `ECC000_050_11X11` (value: `"ECC000_050_11x11"`)
14+
15+
* `ECC000_100_13X13` (value: `"ECC000_100_13x13"`)
16+
17+
* `ECC000_100_15X15` (value: `"ECC000_100_15x15"`)
18+
19+
* `ECC000_140_17X17` (value: `"ECC000_140_17x17"`)
20+
21+
* `ECC000_140_19X19` (value: `"ECC000_140_19x19"`)
22+
23+
* `ECC000_140_21X21` (value: `"ECC000_140_21x21"`)
24+
25+
* `ECC000_140_23X23` (value: `"ECC000_140_23x23"`)
26+
27+
* `ECC000_140_25X25` (value: `"ECC000_140_25x25"`)
28+
29+
* `ECC000_140_27X27` (value: `"ECC000_140_27x27"`)
30+
31+
* `ECC000_140_29X29` (value: `"ECC000_140_29x29"`)
32+
33+
* `ECC000_140_31X31` (value: `"ECC000_140_31x31"`)
34+
35+
* `ECC000_140_33X33` (value: `"ECC000_140_33x33"`)
36+
37+
* `ECC000_140_35X35` (value: `"ECC000_140_35x35"`)
38+
39+
* `ECC000_140_37X37` (value: `"ECC000_140_37x37"`)
40+
41+
* `ECC000_140_39X39` (value: `"ECC000_140_39x39"`)
42+
43+
* `ECC000_140_41X41` (value: `"ECC000_140_41x41"`)
44+
45+
* `ECC000_140_43X43` (value: `"ECC000_140_43x43"`)
46+
47+
* `ECC000_140_45X45` (value: `"ECC000_140_45x45"`)
48+
49+
* `ECC000_140_47X47` (value: `"ECC000_140_47x47"`)
50+
51+
* `ECC000_140_49X49` (value: `"ECC000_140_49x49"`)
52+
53+
* `ECC200_10X10` (value: `"ECC200_10x10"`)
54+
55+
* `ECC200_12X12` (value: `"ECC200_12x12"`)
56+
57+
* `ECC200_14X14` (value: `"ECC200_14x14"`)
58+
59+
* `ECC200_16X16` (value: `"ECC200_16x16"`)
60+
61+
* `ECC200_18X18` (value: `"ECC200_18x18"`)
62+
63+
* `ECC200_20X20` (value: `"ECC200_20x20"`)
64+
65+
* `ECC200_22X22` (value: `"ECC200_22x22"`)
66+
67+
* `ECC200_24X24` (value: `"ECC200_24x24"`)
68+
69+
* `ECC200_26X26` (value: `"ECC200_26x26"`)
70+
71+
* `ECC200_32X32` (value: `"ECC200_32x32"`)
72+
73+
* `ECC200_36X36` (value: `"ECC200_36x36"`)
74+
75+
* `ECC200_40X40` (value: `"ECC200_40x40"`)
76+
77+
* `ECC200_44X44` (value: `"ECC200_44x44"`)
78+
79+
* `ECC200_48X48` (value: `"ECC200_48x48"`)
80+
81+
* `ECC200_52X52` (value: `"ECC200_52x52"`)
82+
83+
* `ECC200_64X64` (value: `"ECC200_64x64"`)
84+
85+
* `ECC200_72X72` (value: `"ECC200_72x72"`)
86+
87+
* `ECC200_80X80` (value: `"ECC200_80x80"`)
88+
89+
* `ECC200_88X88` (value: `"ECC200_88x88"`)
90+
91+
* `ECC200_96X96` (value: `"ECC200_96x96"`)
92+
93+
* `ECC200_104X104` (value: `"ECC200_104x104"`)
94+
95+
* `ECC200_120X120` (value: `"ECC200_120x120"`)
96+
97+
* `ECC200_132X132` (value: `"ECC200_132x132"`)
98+
99+
* `ECC200_144X144` (value: `"ECC200_144x144"`)
100+
101+
* `ECC200_8X18` (value: `"ECC200_8x18"`)
102+
103+
* `ECC200_8X32` (value: `"ECC200_8x32"`)
104+
105+
* `ECC200_12X26` (value: `"ECC200_12x26"`)
106+
107+
* `ECC200_12X36` (value: `"ECC200_12x36"`)
108+
109+
* `ECC200_16X36` (value: `"ECC200_16x36"`)
110+
111+
* `ECC200_16X48` (value: `"ECC200_16x48"`)
112+
113+
* `DMRE_8X48` (value: `"DMRE_8x48"`)
114+
115+
* `DMRE_8X64` (value: `"DMRE_8x64"`)
116+
117+
* `DMRE_8X80` (value: `"DMRE_8x80"`)
118+
119+
* `DMRE_8X96` (value: `"DMRE_8x96"`)
120+
121+
* `DMRE_8X120` (value: `"DMRE_8x120"`)
122+
123+
* `DMRE_8X144` (value: `"DMRE_8x144"`)
124+
125+
* `DMRE_12X64` (value: `"DMRE_12x64"`)
126+
127+
* `DMRE_12X88` (value: `"DMRE_12x88"`)
128+
129+
* `DMRE_16X64` (value: `"DMRE_16x64"`)
130+
131+
* `DMRE_20X36` (value: `"DMRE_20x36"`)
132+
133+
* `DMRE_20X44` (value: `"DMRE_20x44"`)
134+
135+
* `DMRE_20X64` (value: `"DMRE_20x64"`)
136+
137+
* `DMRE_22X48` (value: `"DMRE_22x48"`)
138+
139+
* `DMRE_24X48` (value: `"DMRE_24x48"`)
140+
141+
* `DMRE_24X64` (value: `"DMRE_24x64"`)
142+
143+
* `DMRE_26X40` (value: `"DMRE_26x40"`)
144+
145+
* `DMRE_26X48` (value: `"DMRE_26x48"`)
146+
147+
* `DMRE_26X64` (value: `"DMRE_26x64"`)
148+
149+
150+

docs/ReaderParams.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Name | Type | Description | Notes
3131
**allowWhiteSpotsRemoving** | **Boolean** | Allows engine to recognize image without small white spots as additional scan. Mode helps to recognize noised image as well as median smoothing filtering. | [optional]
3232
**checkMore1DVariants** | **Boolean** | Allows engine to recognize 1D barcodes with checksum by checking more recognition variants. Default value: False. | [optional]
3333
**fastScanOnly** | **Boolean** | Allows engine for 1D barcodes to quickly recognize middle slice of an image and return result without using any time-consuming algorithms. Default value: False. | [optional]
34+
**allowAdditionalRestorations** | **Boolean** | Allows engine using additional image restorations to recognize corrupted barcodes. At this time, it is used only in MicroPdf417 barcode type. Default value: False. | [optional]
3435
**regionLikelihoodThresholdPercent** | **Double** | Sets threshold for detected regions that may contain barcodes. Value 0.7 means that bottom 70% of possible regions are filtered out and not processed further. Region likelihood threshold must be between [0.05, 0.9] Use high values for clear images with few barcodes. Use low values for images with many barcodes or for noisy images. Low value may lead to a bigger recognition time. | [optional]
3536
**scanWindowSizes** | **List&lt;Integer&gt;** | Scan window sizes in pixels. Allowed sizes are 10, 15, 20, 25, 30. Scanning with small window size takes more time and provides more accuracy but may fail in detecting very big barcodes. Combining of several window sizes can improve detection quality. | [optional]
3637
**similarity** | **Double** | Similarity coefficient depends on how homogeneous barcodes are. Use high value for for clear barcodes. Use low values to detect barcodes that ara partly damaged or not lighten evenly. Similarity coefficient must be between [0.5, 0.9] | [optional]

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<artifactId>aspose-barcode-cloud</artifactId>
66
<packaging>jar</packaging>
77
<name>aspose-barcode-cloud</name>
8-
<version>23.7.0</version>
8+
<version>23.8.0</version>
99
<url>https://www.aspose.cloud</url>
1010
<description>Aspose.BarCode Cloud SDK for Java</description>
1111
<scm>

src/main/java/com/aspose/barcode/cloud/ApiClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
public class ApiClient {
5454

5555
public final String apiVersion = "v3.0";
56-
public final String clientVersion = "23.7.0";
56+
public final String clientVersion = "23.8.0";
5757
private String baseUrl = "https://api.aspose.cloud";
5858
private String clientId;
5959
private String clientSecret;
@@ -99,7 +99,7 @@ protected ApiClient() {
9999
json = new JSON();
100100

101101
// Set default User-Agent.
102-
setUserAgent("Swagger-Codegen/23.7.0/java");
102+
setUserAgent("Swagger-Codegen/23.8.0/java");
103103

104104
addDefaultHeader("x-aspose-client", "java sdk");
105105
addDefaultHeader("x-aspose-client-version", clientVersion);

src/main/java/com/aspose/barcode/cloud/api/BarcodeApi.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,10 @@ protected com.squareup.okhttp.Call getBarcodeRecognizeCall(
415415
apiClient.parameterToPair("CheckMore1DVariants", request.checkMore1DVariants));
416416
if (request.fastScanOnly != null)
417417
queryParams.addAll(apiClient.parameterToPair("FastScanOnly", request.fastScanOnly));
418+
if (request.allowAdditionalRestorations != null)
419+
queryParams.addAll(
420+
apiClient.parameterToPair(
421+
"AllowAdditionalRestorations", request.allowAdditionalRestorations));
418422
if (request.regionLikelihoodThresholdPercent != null)
419423
queryParams.addAll(
420424
apiClient.parameterToPair(
@@ -688,6 +692,10 @@ protected com.squareup.okhttp.Call postBarcodeRecognizeFromUrlOrContentCall(
688692
apiClient.parameterToPair("CheckMore1DVariants", request.checkMore1DVariants));
689693
if (request.fastScanOnly != null)
690694
queryParams.addAll(apiClient.parameterToPair("FastScanOnly", request.fastScanOnly));
695+
if (request.allowAdditionalRestorations != null)
696+
queryParams.addAll(
697+
apiClient.parameterToPair(
698+
"AllowAdditionalRestorations", request.allowAdditionalRestorations));
691699
if (request.regionLikelihoodThresholdPercent != null)
692700
queryParams.addAll(
693701
apiClient.parameterToPair(

src/main/java/com/aspose/barcode/cloud/model/DataMatrixParams.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public class DataMatrixParams {
5656
@SerializedName(value = "macroCharacters")
5757
private MacroCharacter macroCharacters = null;
5858

59+
@SerializedName(value = "version")
60+
private DataMatrixVersion version = null;
61+
5962
/**
6063
* Height/Width ratio of 2D BarCode module
6164
*
@@ -167,6 +170,21 @@ public void setMacroCharacters(MacroCharacter macroCharacters) {
167170
this.macroCharacters = macroCharacters;
168171
}
169172

173+
/**
174+
* Sets a Datamatrix symbol size. Default value: DataMatrixVersion.Auto.
175+
*
176+
* @return version
177+
*/
178+
@ApiModelProperty(
179+
value = "Sets a Datamatrix symbol size. Default value: DataMatrixVersion.Auto.")
180+
public DataMatrixVersion getVersion() {
181+
return version;
182+
}
183+
184+
public void setVersion(DataMatrixVersion version) {
185+
this.version = version;
186+
}
187+
170188
@Override
171189
public boolean equals(java.lang.Object o) {
172190
if (this == o) {
@@ -182,7 +200,8 @@ public boolean equals(java.lang.Object o) {
182200
&& Objects.equals(this.dataMatrixEcc, dataMatrixParams.dataMatrixEcc)
183201
&& Objects.equals(this.dataMatrixEncodeMode, dataMatrixParams.dataMatrixEncodeMode)
184202
&& Objects.equals(this.rows, dataMatrixParams.rows)
185-
&& Objects.equals(this.macroCharacters, dataMatrixParams.macroCharacters);
203+
&& Objects.equals(this.macroCharacters, dataMatrixParams.macroCharacters)
204+
&& Objects.equals(this.version, dataMatrixParams.version);
186205
}
187206

188207
@Override
@@ -194,7 +213,8 @@ public int hashCode() {
194213
dataMatrixEcc,
195214
dataMatrixEncodeMode,
196215
rows,
197-
macroCharacters);
216+
macroCharacters,
217+
version);
198218
}
199219

200220
@Override
@@ -211,6 +231,7 @@ public String toString() {
211231
.append("\n");
212232
sb.append(" rows: ").append(toIndentedString(rows)).append("\n");
213233
sb.append(" macroCharacters: ").append(toIndentedString(macroCharacters)).append("\n");
234+
sb.append(" version: ").append(toIndentedString(version)).append("\n");
214235
sb.append("}");
215236
return sb.toString();
216237
}

0 commit comments

Comments
 (0)