Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
6dbb8d6
fix: Update code
larshelge Jan 19, 2026
5e78bcf
merge: Merge from master branch
larshelge Jan 19, 2026
eef36e9
fix: Update code
larshelge Jan 21, 2026
2aeb160
fix: Update code
larshelge Jan 21, 2026
09e16f5
fix: Update code
larshelge Jan 22, 2026
22baaf0
fix: Update code
larshelge Jan 22, 2026
65e4c6a
fix: Update code
larshelge Jan 22, 2026
6733363
fix: Update code
larshelge Jan 22, 2026
f0670b2
merge: Merge from master branch
larshelge Jan 22, 2026
bcb9517
merge: Merge from master branch
larshelge Jan 22, 2026
524576b
fix: Update code
larshelge Jan 26, 2026
76803c8
fix: Update code
larshelge Jan 27, 2026
6a2afb8
fix: Update code
larshelge Jan 27, 2026
996e4ac
fix: Update code
larshelge Jan 27, 2026
e73e9cc
merge: Merge from master branch
larshelge Jan 27, 2026
adcd707
fix: Update code
larshelge Jan 27, 2026
b895778
merge: Merge from master branch
larshelge Jan 27, 2026
baed0e5
fix: Update code
larshelge Jan 27, 2026
efe180f
fix: Update code
larshelge Jan 27, 2026
733abac
fix: Update code
larshelge Jan 27, 2026
dbbc958
merge: Merge from master branch
larshelge Jan 27, 2026
947da72
fix: Update code
larshelge Jan 27, 2026
13005f5
fix: Update code
larshelge Feb 2, 2026
6adf1d1
fix: Update code
larshelge Feb 18, 2026
a2124a4
fix: Update code
larshelge Feb 18, 2026
3860d11
merge: Merge from master branch
larshelge Feb 18, 2026
1b3b4ff
fix: Update code
larshelge Feb 23, 2026
7e988a8
merge: Merge from master branch
larshelge Feb 23, 2026
72e2b9c
fix: Update code
larshelge Feb 25, 2026
b296677
fix: Update code
larshelge Feb 25, 2026
151ed4f
chore: Bump version
larshelge Feb 25, 2026
6208073
merge: Merge from master branch
larshelge Feb 25, 2026
24a18c3
merge: Merge from master branch
larshelge Feb 25, 2026
cc0ac36
fix: Add test
larshelge Feb 26, 2026
7f2016f
fix: Update code
larshelge Feb 26, 2026
7c02d20
fix: Update code
larshelge Feb 26, 2026
d8a8d5f
merge: Merge from master branch
larshelge Feb 26, 2026
a7568f5
fix: Update code
larshelge Mar 4, 2026
8b4b947
merge: Merge from master branch
larshelge Mar 4, 2026
9fc6e7a
fix: Update code
larshelge Mar 6, 2026
a537088
fix: Update code
larshelge Mar 6, 2026
f18110f
merge: Merge from master branch
larshelge Mar 6, 2026
0249573
merge: Merge from master branch
larshelge Mar 6, 2026
c3b96d4
fix: Update code
larshelge Mar 6, 2026
136d976
merge: Merge from master branch
larshelge Mar 6, 2026
ab9a0ae
fix: Update code
larshelge Mar 7, 2026
247b74b
merge: Merge from master branch
larshelge Mar 7, 2026
6c1d0c8
merge: Merge from master branch
larshelge Mar 7, 2026
437749e
fix: Update code
larshelge Mar 8, 2026
9bd01ae
fix: Update code
larshelge Mar 8, 2026
6cb5cc4
merge: Merge from master branch
larshelge Mar 8, 2026
4cfcbcf
fix: Add util method
larshelge Mar 9, 2026
717f095
merge: Merge from master branch
larshelge Mar 9, 2026
bc14846
fix: Update code
larshelge Mar 9, 2026
cef6eb5
merge: Merge from master branch
larshelge Mar 9, 2026
1880d03
fix: Update code
larshelge Mar 10, 2026
880061e
merge: Merge from master branch
larshelge Mar 10, 2026
485c297
fix: Update code
larshelge Mar 12, 2026
7f4556d
merge: Merge from master branch
larshelge Mar 12, 2026
542a7ec
fix: Update code
larshelge Mar 13, 2026
7cc77e8
fix: Update code
larshelge Mar 13, 2026
2bea5cb
fix: Update code
larshelge Mar 13, 2026
92744b9
merge: Merge from master branch
larshelge Mar 13, 2026
5a3edef
fix: Update code
larshelge Mar 13, 2026
5712164
merge: Merge from master branch
larshelge Mar 13, 2026
b78faf2
fix: Update code
larshelge Apr 6, 2026
53b2015
fix: Update code
larshelge Apr 6, 2026
d9b2f5f
fix: Update code
larshelge Apr 6, 2026
93a4cb5
merge: Merge from master branch
larshelge Apr 6, 2026
e0bff48
merge: Merge from master branch
larshelge Apr 6, 2026
91c67dc
Merge branch 'master' into lars-dev
larshelge Apr 6, 2026
3c5c983
merge: Merge from master branch
larshelge Apr 6, 2026
0cd5cb7
fix: Update code
larshelge Apr 6, 2026
e9510fd
fix: Update code
larshelge Apr 15, 2026
8733638
fix: Update code
larshelge Apr 15, 2026
e2cd534
fix: Update code
larshelge Apr 15, 2026
0e99617
fix: Update code
larshelge Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/main/java/org/hisp/dhis/api/ApiFields.java
Original file line number Diff line number Diff line change
Expand Up @@ -292,12 +292,15 @@ public class ApiFields {

/** Tracked entity attribute fields. */
public static final String TRACKED_ENTITY_ATTRIBUTE_FIELDS =
String.format("%s,valueType,aggregationType,confidential,unique,orgunitScope", NAME_FIELDS);
String.format(
"%s,valueType,aggregationType,confidential,unique,orgunitScope,skipSynchronization",
NAME_FIELDS);

/** Tracked entity attribute extended fields. */
public static final String TRACKED_ENTITY_ATTRIBUTE_EXT_FIELDS =
String.format(
"%s,valueType,aggregationType,confidential,unique,orgunitScope", NAME_EXT_FIELDS);
"%s,valueType,aggregationType,confidential,unique,orgunitScope,skipSynchronization",
NAME_EXT_FIELDS);

/** Tracked entity type fields. */
public static final String TRACKED_ENTITY_TYPE_FIELDS =
Expand Down
19 changes: 17 additions & 2 deletions src/main/java/org/hisp/dhis/model/Program.java
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ public List<TrackedEntityAttribute> getNonConfidentialTrackedEntityTypeAttribute

return trackedEntityType.getTrackedEntityTypeAttributes().stream()
.map(TrackedEntityTypeAttribute::getTrackedEntityAttribute)
.filter(tea -> !tea.isConfidentialNullSafe())
.filter(tea -> !tea.isConfidential())
.collect(Collectors.toUnmodifiableList());
}

Expand All @@ -179,7 +179,22 @@ public List<TrackedEntityAttribute> getTrackedEntityAttributes() {
public List<TrackedEntityAttribute> getNonConfidentialTrackedEntityAttributes() {
return programTrackedEntityAttributes.stream()
.map(ProgramTrackedEntityAttribute::getTrackedEntityAttribute)
.filter(tea -> !tea.isConfidentialNullSafe())
.filter(tea -> !tea.isConfidential())
.toList();
}

/**
* Returns tracked entity attributes which are not confidential and synchronizable and part of the
* program.
*
* @return an immutable list of {@link TrackedEntityAttribute}.
*/
@JsonIgnore
public List<TrackedEntityAttribute> getSynchronizableTrackedEntityAttributes() {
return programTrackedEntityAttributes.stream()
.map(ProgramTrackedEntityAttribute::getTrackedEntityAttribute)
.filter(tea -> !tea.isConfidential())
.filter(tea -> !tea.isSkipSynchronization())
.toList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
*/
package org.hisp.dhis.model.trackedentity;

import static org.apache.commons.lang3.BooleanUtils.isTrue;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
Expand All @@ -53,13 +55,25 @@ public class TrackedEntityAttribute extends NameableObject {

@JsonProperty private Boolean orgunitScope = false;

@JsonProperty private Boolean skipSynchronization = false;

@JsonIgnore
public boolean isConfidential() {
return isTrue(confidential);
}

@JsonIgnore
public boolean isUnique() {
return isTrue(unique);
}

@JsonIgnore
public boolean isConfidentialNullSafe() {
return confidential != null && confidential;
public boolean isOrgUnitScope() {
return isTrue(orgunitScope);
}

@JsonIgnore
public boolean isUniqueNullSafe() {
return unique != null && unique;
public boolean isSkipSynchronization() {
return isTrue(skipSynchronization);
}
}
6 changes: 6 additions & 0 deletions src/main/java/org/hisp/dhis/response/data/ImportCount.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis.response.data;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -45,4 +46,9 @@ public class ImportCount {
@JsonProperty private int ignored;

@JsonProperty private int deleted;

@JsonIgnore
public long getTotal() {
return (long) imported + updated + ignored + deleted;
}
}
6 changes: 3 additions & 3 deletions src/test/java/org/hisp/dhis/ApiFieldsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ void testProgramExtFields() {
createdBy,lastUpdatedBy,translations,sharing,access,shortName,description,formName,\
trackedEntityTypeAttributes[id,\
trackedEntityAttribute[id,code,name,created,lastUpdated,attributeValues,shortName,description,valueType,\
aggregationType,confidential,unique,orgunitScope],displayInList,mandatory,searchable]],\
aggregationType,confidential,unique,orgunitScope,skipSynchronization],displayInList,mandatory,searchable]],\
categoryCombo[id,code,name,created,lastUpdated,attributeValues,shortName,description,\
categories[id,code,name,created,lastUpdated,attributeValues,createdBy,lastUpdatedBy,translations,\
sharing,access,shortName,description,formName,dataDimensionType,dataDimension,\
Expand Down Expand Up @@ -115,7 +115,7 @@ void testProgramExtFields() {
programTrackedEntityAttributes[id,code,name,program[id,code,name,created,lastUpdated,\
attributeValues,shortName,description],\
trackedEntityAttribute[id,code,name,created,lastUpdated,attributeValues,\
shortName,description,valueType,aggregationType,confidential,unique,orgunitScope],\
shortName,description,valueType,aggregationType,confidential,unique,orgunitScope,skipSynchronization],\
sortOrder,displayInList,mandatory,allowFutureDate,searchable],\
programRuleVariables[id,code,name,created,lastUpdated,attributeValues,createdBy,\
lastUpdatedBy,translations,sharing,access,program[id,code,name,created,lastUpdated,attributeValues],\
Expand Down Expand Up @@ -147,7 +147,7 @@ void testProgramMinFields() {
programTrackedEntityAttributes[id,code,name,\
program[id,code,name,created,lastUpdated,attributeValues,shortName,description],\
trackedEntityAttribute[id,code,name,created,lastUpdated,attributeValues,shortName,\
description,valueType,aggregationType,confidential,unique,orgunitScope],\
description,valueType,aggregationType,confidential,unique,orgunitScope,skipSynchronization],\
sortOrder,displayInList,mandatory,allowFutureDate,searchable],\
programType,\
enrollmentDateLabel,incidentDateLabel,enrollmentLabel,followUpLabel,\
Expand Down
6 changes: 3 additions & 3 deletions src/test/java/org/hisp/dhis/CategoryOptionApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ void testGetCategoryOptionsWithPaging() {
assertFalse(categoryOptions.isEmpty());
assertNotNull(categoryOptions.get(0).getId());
assertNotNull(categoryOptions.get(0).getName());
assertFalse(categoryOptions.get(0).getCategories().isEmpty());
assertNotEmpty(categoryOptions.get(0).getCategories());
}

@Test
Expand All @@ -104,7 +104,7 @@ void testGetCategoryOption() {

CategoryOption categoryOption = dhis2.getCategoryOption("jRbMi0aBjYn");

assertEquals("Male", categoryOption.getName());
assertNotBlank(categoryOption.getName());
}

@Test
Expand All @@ -119,7 +119,7 @@ void testUpdateCategoryOption() {

assertEquals(Status.OK, response.getStatus());
categoryOption = dhis2.getCategoryOption("jRbMi0aBjYn");
assertEquals("Male gender", categoryOption.getDescription());
assertNotBlank(categoryOption.getDescription());
assertNotNull(categoryOption.getLastUpdatedBy());
}
}
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/CategoryOptionComboApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertNotBlank;
import static org.hisp.dhis.support.Assertions.assertNotEmpty;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
Expand All @@ -45,7 +46,7 @@ void testGetCategoryOptionCombo() {
CategoryOptionCombo coc = dhis2.getCategoryOptionCombo("KQ50BVoUrd6");

assertEquals("KQ50BVoUrd6", coc.getId());
assertEquals("Male", coc.getName());
assertNotBlank(coc.getName());
assertFalse(coc.getIgnoreApproval());
assertNotEmpty(coc.getCategoryOptions());
}
Expand Down
5 changes: 3 additions & 2 deletions src/test/java/org/hisp/dhis/DataElementApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import static org.hisp.dhis.support.Assertions.assertNotBlank;
import static org.hisp.dhis.support.Assertions.assertNotEmpty;
import static org.hisp.dhis.support.Assertions.assertSize;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
Expand Down Expand Up @@ -185,8 +186,8 @@ void testSaveGetDataElementWithSharing() {
assertNotNull(sharing);
assertNotBlank(sharing.getOwner());
assertNotBlank(sharing.getPublicAccess());
assertEquals(2, sharing.getUsers().size());
assertEquals(2, sharing.getUserGroups().size());
assertSize(2, sharing.getUsers().values());
assertSize(2, sharing.getUserGroups().values());

UserAccess userAccess = sharing.getUsers().get("awtnYWiVEd5");

Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/DataElementGroupApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertSize;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
Expand Down Expand Up @@ -67,7 +68,7 @@ void testGetDataElementGroup() {
List<DataElement> dataElements = deg.getDataElements();

assertNotNull(dataElements);
assertEquals(3, dataElements.size());
assertSize(3, dataElements);

List<String> deIds =
dataElements.stream().map(IdentifiableObject::getId).collect(Collectors.toList());
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/org/hisp/dhis/DataSetApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ void testGetDataSetsWithExpandAssociations() {
.withExpandAssociations()
.addFilter(Filter.in("id", list("BfMAe6Itzgt"))));

assertEquals(1, dataSets.size());
assertSize(1, dataSets);

DataSet dataSet = dataSets.get(0);

Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/DataStoreApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertSize;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
Expand Down Expand Up @@ -86,7 +87,7 @@ void testCrud() {
dhis2.getDatastoreEntries("fruits", List.of("name", "color"));

assertNotNull(fruits);
assertEquals(2, fruits.size());
assertSize(2, fruits);
assertNotNull(fruits.get(0));
assertNotNull(fruits.get(0).get("name"));
assertNotNull(fruits.get(0).get("color"));
Expand Down
5 changes: 3 additions & 2 deletions src/test/java/org/hisp/dhis/Dhis2CrudApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertSize;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
Expand Down Expand Up @@ -87,7 +88,7 @@ void testCrudCategoryOption() {
assertEquals(codeA, coA.getCode());
assertEquals(nameA, coA.getName());
assertEquals(shortNameA, coA.getShortName());
assertEquals(2, coA.getOrganisationUnits().size());
assertSize(2, coA.getOrganisationUnits());
assertTrue(coA.getOrganisationUnits().contains(ouA));
assertTrue(coA.getOrganisationUnits().contains(ouB));

Expand All @@ -112,7 +113,7 @@ void testCrudCategoryOption() {
assertNotNull(coA.getAttributeValues());
assertEquals(uidA, coA.getId());
assertEquals(codeA, coA.getCode());
assertEquals(2, coA.getOrganisationUnits().size());
assertSize(2, coA.getOrganisationUnits());
assertTrue(coA.getOrganisationUnits().contains(ouA));
assertTrue(coA.getOrganisationUnits().contains(ouB));

Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/EnrollmentsApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertSize;
import static org.hisp.dhis.util.DateTimeUtils.toDate;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
Expand Down Expand Up @@ -126,7 +127,7 @@ void testSaveGetRemoveEnrollments() {
assertEquals(trackedEntity, enrollment.getTrackedEntity());

assertNotNull(enrollment.getNotes());
assertEquals(1, enrollment.getNotes().size());
assertSize(1, enrollment.getNotes());
note = enrollment.getNotes().get(0);
assertEquals(noteId, note.getNote());
assertEquals(5000, note.getValue().length());
Expand Down
9 changes: 5 additions & 4 deletions src/test/java/org/hisp/dhis/EventsApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
*/
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertSize;
import static org.hisp.dhis.util.CollectionUtils.list;
import static org.hisp.dhis.util.DateTimeUtils.toDate;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand Down Expand Up @@ -252,7 +253,7 @@ void testSaveEventsMissingOccurredAt() {
assertTrue(response.hasErrorReports());
assertEquals(Status.ERROR, response.getStatus(), response.toString());
assertEquals(1, response.getStats().getIgnored());
assertEquals(1, response.getValidationReport().getErrorReports().size());
assertSize(1, response.getValidationReport().getErrorReports());

ErrorReport errorReport = response.getValidationReport().getErrorReports().get(0);
assertEquals("E1031", errorReport.getErrorCode());
Expand All @@ -269,7 +270,7 @@ void testGetEvents() {

assertNotNull(events);
assertNotNull(events.getEvents());
assertEquals(50, events.getEvents().size());
assertSize(50, events.getEvents());

Event event = events.getEvents().get(0);

Expand All @@ -294,7 +295,7 @@ void testGetEventsWithFilter() {

assertNotNull(events);
assertNotNull(events.getEvents());
assertEquals(50, events.getEvents().size());
assertSize(50, events.getEvents());

Event event = events.getEvents().get(0);

Expand Down Expand Up @@ -323,7 +324,7 @@ void testGetEventsWithOrder() {

assertNotNull(events);
assertNotNull(events.getEvents());
assertEquals(10, events.getEvents().size());
assertSize(10, events.getEvents());

Event firstEvent = events.getEvents().get(0);
int firstValue = Integer.parseInt(firstEvent.getDataValue("qrur9Dvnyt5"));
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/IndicatorApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertNotEmpty;
import static org.hisp.dhis.support.Assertions.assertSize;
import static org.hisp.dhis.support.Assertions.assertSuccessResponse;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
Expand Down Expand Up @@ -107,7 +108,7 @@ void testGetIndicatorsWithInFilter() {
List<Indicator> indicators = dhis2.getIndicators(query);

assertNotEmpty(indicators);
assertEquals(3, indicators.size());
assertSize(3, indicators);
}

@Test
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/IndicatorTypeApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertNotEmpty;
import static org.hisp.dhis.support.Assertions.assertSize;
import static org.hisp.dhis.support.Assertions.assertSuccessResponse;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
Expand Down Expand Up @@ -70,7 +71,7 @@ void testGetIndicatorTypesWithInFilter() {
List<IndicatorType> indicatorTypes = dhis2.getIndicatorTypes(query);

assertNotEmpty(indicatorTypes);
assertEquals(2, indicatorTypes.size());
assertSize(2, indicatorTypes);
}

@Test
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/hisp/dhis/MetadataApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package org.hisp.dhis;

import static org.hisp.dhis.support.Assertions.assertNotEmpty;
import static org.hisp.dhis.support.Assertions.assertSize;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
Expand Down Expand Up @@ -78,7 +79,7 @@ void testImportMetadata() {
assertEquals(4, stats.getTotal());

assertNotEmpty(response.getTypeReports());
assertEquals(2, response.getTypeReports().size());
assertSize(2, response.getTypeReports());

ObjectResponse removeResponse =
dhis2.removeMetadataObject(MetadataEntity.OPTION_SET, "gKdxTM8BcI7");
Expand Down
Loading
Loading