From a3f44b43b4cdf54750bb82350d1ea4c92fbab28e Mon Sep 17 00:00:00 2001 From: Pahansith Date: Wed, 7 Aug 2019 10:26:02 +0530 Subject: [PATCH 01/19] Add configuration retrieve endpoint --- .../pom.xml | 277 ++++++++++++++++++ .../mgt/config/jaxrs/ApiOriginFilter.java | 50 ++++ .../mgt/config/jaxrs/beans/ErrorListItem.java | 77 +++++ .../mgt/config/jaxrs/beans/ErrorResponse.java | 150 ++++++++++ .../jaxrs/common/GsonMessageBodyHandler.java | 97 ++++++ .../DeviceManagementConfigService.java | 134 +++++++++ .../DeviceManagementConfigServiceImpl.java | 151 ++++++++++ .../config/jaxrs/util/DeviceMgtAPIUtils.java | 43 +++ .../src/main/webapp/META-INF/permissions.xml | 39 +++ .../webapp/META-INF/webapp-classloading.xml | 35 +++ .../src/main/webapp/WEB-INF/cxf-servlet.xml | 38 +++ .../src/main/webapp/WEB-INF/web.xml | 126 ++++++++ .../src/test/resources/testng.xml | 23 ++ .../common/AppRegistrationCredentials.java | 43 +++ .../mgt/common/ApplicationRegistration.java | 65 ++++ .../ApplicationRegistrationException.java | 46 +++ .../mgt/common/InvalidArgumentException.java | 46 +++ .../mgt/AmbiguousConfigurationException.java | 25 ++ .../mgt/DeviceConfiguration.java | 111 +++++++ .../configuration/mgt/DevicePropertyInfo.java | 63 ++++ .../mgt/core/DeviceManagementConstants.java | 15 + .../carbon/device/mgt/core/dao/DeviceDAO.java | 10 + .../core/dao/DeviceNotFoundDAOException.java | 28 ++ .../core/dao/impl/AbstractDeviceDAOImpl.java | 63 +++- .../DeviceManagementProviderService.java | 20 ++ .../DeviceManagementProviderServiceImpl.java | 88 ++++++ .../mgt/core/util/DeviceManagerUtil.java | 118 ++++++++ components/device-mgt/pom.xml | 1 + .../org.wso2.carbon.policy.mgt.core/pom.xml | 6 +- .../pom.xml | 23 ++ .../src/main/resources/p2.inf | 3 +- 31 files changed, 2011 insertions(+), 3 deletions(-) create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/pom.xml create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/ApiOriginFilter.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorListItem.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorResponse.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/common/GsonMessageBodyHandler.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/util/DeviceMgtAPIUtils.java create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/permissions.xml create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/webapp-classloading.xml create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/cxf-servlet.xml create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/web.xml create mode 100644 components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/test/resources/testng.xml create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/AppRegistrationCredentials.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistration.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistrationException.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/InvalidArgumentException.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/AmbiguousConfigurationException.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DeviceConfiguration.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DevicePropertyInfo.java create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceNotFoundDAOException.java diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/pom.xml b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/pom.xml new file mode 100644 index 00000000000..2cbb2505e5c --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/pom.xml @@ -0,0 +1,277 @@ + + + + + + + device-mgt + org.wso2.carbon.devicemgt + 3.2.9-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.carbon.device.mgt.config.api + war + Entgra Carbon - Mobile Device Management Configuration API + Entgra Carbon - Mobile Device Management Configuration API + https://entgra.io + + + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + maven-war-plugin + + WEB-INF/lib/*cxf*.jar + api#device-mgt-config#v1.0 + + + + org.jacoco + jacoco-maven-plugin + + ${basedir}/target/coverage-reports/jacoco-unit.exec + + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + test + + report + + + ${basedir}/target/coverage-reports/jacoco-unit.exec + ${basedir}/target/coverage-reports/site + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + file:src/test/resources/log4j.properties + + + src/test/resources/testng.xml + + + + + + + + + deploy + + compile + + + org.apache.maven.plugins + maven-antrun-plugin + 1.7 + + + compile + + run + + + + + + + + + + + + + + + + + + client + + test + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + test + + java + + + + + + + + + + + + org.apache.cxf + cxf-rt-frontend-jaxrs + provided + + + org.apache.cxf + cxf-rt-transports-http + provided + + + javax.ws.rs + jsr311-api + provided + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.core + provided + + + org.apache.axis2.wso2 + axis2-client + + + org.mockito + mockito-core + + + javassist + javassist + + + + + org.wso2.carbon.devicemgt + org.wso2.carbon.certificate.mgt.core + provided + + + org.wso2.carbon.devicemgt + org.wso2.carbon.device.mgt.core + + + org.wso2.carbon.identity.framework + org.wso2.carbon.user.mgt + + + + + io.swagger + swagger-annotations + + + io.swagger + swagger-core + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + + + org.slf4j + slf4j-api + + + org.wso2.orbit.com.fasterxml.jackson.core + jackson-core + + + + + io.swagger + swagger-jaxrs + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + + + org.slf4j + slf4j-api + + + org.wso2.orbit.com.fasterxml.jackson.core + jackson-core + + + + + javax.servlet + servlet-api + provided + + + org.wso2.carbon.devicemgt + org.wso2.carbon.apimgt.annotations + provided + + + javax.ws.rs + javax.ws.rs-api + + + org.powermock + powermock-module-testng + test + + + org.powermock + powermock-api-mockito + test + + + org.wso2.carbon.devicemgt + org.wso2.carbon.identity.jwt.client.extension + provided + + + org.wso2.tomcat + tomcat + + + org.wso2.tomcat + tomcat-servlet-api + + + + + diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/ApiOriginFilter.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/ApiOriginFilter.java new file mode 100644 index 00000000000..ae3103866fa --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/ApiOriginFilter.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package io.entgra.carbon.device.mgt.config.jaxrs; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class ApiOriginFilter implements Filter { + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + HttpServletResponse res = (HttpServletResponse) response; + res.addHeader("Access-Control-Allow-Origin", "*"); + res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); + res.addHeader("Access-Control-Allow-Headers", "Content-Type"); + chain.doFilter(request, response); + } + + public void destroy() { + //do nothing + } + + public void init(FilterConfig filterConfig) throws ServletException { + //do nothing + } + +} diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorListItem.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorListItem.java new file mode 100644 index 00000000000..34939b3859b --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorListItem.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package io.entgra.carbon.device.mgt.config.jaxrs.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import javax.validation.constraints.NotNull; + +@ApiModel(description = "") +public class ErrorListItem { + + @NotNull + private String code = null; + + @NotNull + private String message = null; + + @ApiModelProperty(required = true, value = "") + @JsonProperty("code") + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public ErrorListItem() {} + + public ErrorListItem(String code, String msg) { + this.code = code; + this.message = msg; + } + + /** + * Description about individual errors occurred + **/ + @ApiModelProperty(required = true, value = "Description about individual errors occurred") + @JsonProperty("message") + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("errorItem {\n"); + + sb.append(" code: ").append(code).append("\n"); + sb.append(" message: ").append(message).append("\n"); + sb.append("}\n"); + return sb.toString(); + } + +} diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorResponse.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorResponse.java new file mode 100644 index 00000000000..8a6cf834ccc --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/beans/ErrorResponse.java @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package io.entgra.carbon.device.mgt.config.jaxrs.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; + +@ApiModel(description = "") +public class ErrorResponse { + + private Long code = null; + private String message = null; + private String description = null; + private String moreInfo = null; + private List errorItems = new ArrayList<>(); + + public ErrorResponse() {} + + @JsonProperty(value = "code") + @ApiModelProperty(required = true, value = "") + public Long getCode() { + return code; + } + + public void setCode(Long code) { + this.code = code; + } + + @JsonProperty(value = "message") + @ApiModelProperty(required = true, value = "ErrorResponse message.") + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @JsonProperty(value = "description") + @ApiModelProperty(value = "A detail description about the error message.") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @JsonProperty(value = "moreInfo") + @ApiModelProperty(value = "Preferably an url with more details about the error.") + public String getMoreInfo() { + return moreInfo; + } + + public void setMoreInfo(String moreInfo) { + this.moreInfo = moreInfo; + } + + public void addErrorListItem(ErrorListItem item) { + this.errorItems.add(item); + } + + /** + * If there are more than one error list them out. For example, list out validation errors by each field. + */ + @JsonProperty(value = "errorItems") + @ApiModelProperty(value = "If there are more than one error list them out. \n" + + "For example, list out validation errors by each field.") + public List getErrorItems() { + return errorItems; + } + + public void setErrorItems(List error) { + this.errorItems = error; + } + + public static class ErrorResponseBuilder { + + private Long code = null; + private String message = null; + private String description = null; + private String moreInfo = null; + private List error; + + + public ErrorResponseBuilder() { + this.error = new ArrayList<>(); + } + + public ErrorResponseBuilder setCode(long code) { + this.code = code; + return this; + } + + public ErrorResponseBuilder setMessage(String message) { + this.message = message; + return this; + } + + public ErrorResponseBuilder setDescription(String description) { + this.description = description; + return this; + } + + public ErrorResponseBuilder setMoreInfo(String moreInfo) { + this.moreInfo = moreInfo; + return this; + } + + public ErrorResponseBuilder addErrorItem(String code, String msg) { + ErrorListItem item = new ErrorListItem(); + item.setCode(code); + item.setMessage(msg); + this.error.add(item); + return this; + } + + public ErrorResponse build() { + ErrorResponse errorResponse = new ErrorResponse(); + errorResponse.setCode(code); + errorResponse.setMessage(message); + errorResponse.setErrorItems(error); + errorResponse.setDescription(description); + errorResponse.setMoreInfo(moreInfo); + return errorResponse; + } + } +} + + diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/common/GsonMessageBodyHandler.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/common/GsonMessageBodyHandler.java new file mode 100644 index 00000000000..484c8df866c --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/common/GsonMessageBodyHandler.java @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package io.entgra.carbon.device.mgt.config.jaxrs.common; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import javax.ws.rs.Consumes; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.ext.MessageBodyReader; +import javax.ws.rs.ext.MessageBodyWriter; +import javax.ws.rs.ext.Provider; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import static javax.ws.rs.core.MediaType.APPLICATION_JSON; + +@Provider +@Produces(APPLICATION_JSON) +@Consumes(APPLICATION_JSON) +public class GsonMessageBodyHandler implements MessageBodyWriter, MessageBodyReader { + + public static final String DATE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z"; + private Gson gson; + private static final String UTF_8 = "UTF-8"; + + public boolean isReadable(Class aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return true; + } + + private Gson getGson() { + if (gson == null) { + final GsonBuilder gsonBuilder = new GsonBuilder(); + gson = gsonBuilder.setDateFormat(DATE_FORMAT).create(); + } + return gson; + } + + public Object readFrom(Class objectClass, Type type, Annotation[] annotations, + MediaType mediaType, MultivaluedMap stringStringMultivaluedMap, + InputStream entityStream) + throws IOException, WebApplicationException { + + InputStreamReader reader = new InputStreamReader(entityStream, "UTF-8"); + + try { + return getGson().fromJson(reader, type); + } finally { + reader.close(); + } + } + + public boolean isWriteable(Class aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return true; + } + + public long getSize(Object o, Class aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return -1; + } + + public void writeTo(Object object, Class aClass, Type type, Annotation[] annotations, + MediaType mediaType, MultivaluedMap stringObjectMultivaluedMap, + OutputStream entityStream) + throws IOException, WebApplicationException { + + OutputStreamWriter writer = new OutputStreamWriter(entityStream, UTF_8); + try { + getGson().toJson(object, type, writer); + } finally { + writer.close(); + } + } +} diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java new file mode 100644 index 00000000000..5c53d8129ab --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package io.entgra.carbon.device.mgt.config.jaxrs.service; + +import io.entgra.carbon.device.mgt.config.jaxrs.beans.ErrorResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Extension; +import io.swagger.annotations.ExtensionProperty; +import io.swagger.annotations.Info; +import io.swagger.annotations.ResponseHeader; +import io.swagger.annotations.SwaggerDefinition; +import io.swagger.annotations.Tag; +import org.wso2.carbon.apimgt.annotations.api.Scope; +import org.wso2.carbon.apimgt.annotations.api.Scopes; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration; +import org.wso2.carbon.device.mgt.common.search.PropertyMap; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@SwaggerDefinition( + info = @Info( + version = "1.0.0", + title = "", + extensions = { + @Extension(properties = { + @ExtensionProperty(name = "name", value = "DeviceManagementConfiguration"), + @ExtensionProperty(name = "context", + value = "/api/device-mgt-config/v1.0/configurations"), + }) + } + ), + tags = { + @Tag(name = "device_management", description = "") + } +) +@Path("/configurations") +@Api(value = "Device Management Configuration") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +@Scopes(scopes = { + @Scope( + name = "View configurations", + description = "", + key = "perm:view-configuration", + permissions = {"/device-mgt/platform-configurations/view"} + ) +} +) +public interface DeviceManagementConfigService { + + @GET + @ApiOperation( + produces = MediaType.APPLICATION_JSON, + httpMethod = "POST", + value = "Getting General device Configurations", + notes = "This API is responsible for send device configuration data to an IOT device when the " + + "device starts provisioning", + tags = "Device Management Configuration" + ) + @ApiResponses( + value = { + @ApiResponse( + code = 200, + message = "OK. \n Successfully fetched the device configurations.", + response = DeviceConfiguration.class, + responseContainer = "List", + responseHeaders = { + @ResponseHeader( + name = "Content-Type", + description = "The content type of the body"), + @ResponseHeader( + name = "ETag", + description = "Entity Tag of the response resource.\n" + + "Used by caches, or in conditional requests."), + @ResponseHeader( + name = "Last-Modified", + description = "Date and time the resource has been modified " + + "the last time.Used by caches, or in " + + "conditional requests."), + } + ), + @ApiResponse( + code = 400, + message = "Bad request.\n The request contains invalid parameters"), + @ApiResponse( + code = 401, + message = "Unauthorized.\n The requested is not authorized"), + @ApiResponse( + code = 500, + message = "Internal Server Error. \n Server error occurred while " + + "fetching device configurations.", + response = ErrorResponse.class) + }) + Response getConfiguration(@ApiParam( + name = "token", + value = "value for identify an already enrolled and authorized device", + required = true) + @HeaderParam("token") + String token, + @ApiParam( + name = "properties", + value = "The properties list using for query a device", + required = true) + @QueryParam("properties") + String properties); +} diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java new file mode 100644 index 00000000000..ab00cfcfff1 --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/impl/DeviceManagementConfigServiceImpl.java @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package io.entgra.carbon.device.mgt.config.jaxrs.service.impl; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.entgra.carbon.device.mgt.config.jaxrs.beans.ErrorResponse; +import io.entgra.carbon.device.mgt.config.jaxrs.service.DeviceManagementConfigService; +import io.entgra.carbon.device.mgt.config.jaxrs.util.DeviceMgtAPIUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.AppRegistrationCredentials; +import org.wso2.carbon.device.mgt.common.ApplicationRegistrationException; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.DeviceNotFoundException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.AmbiguousConfigurationException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration; +import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; +import org.wso2.carbon.identity.jwt.client.extension.dto.AccessTokenInfo; +import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.io.IOException; +import java.util.Map; + +@Path("/configurations") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class DeviceManagementConfigServiceImpl implements DeviceManagementConfigService { + + private static final Log log = LogFactory.getLog(DeviceManagementConfigServiceImpl.class); + + @Override + @GET + public Response getConfiguration(@HeaderParam("token") String token, + @QueryParam("properties") String properties) { + DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); + try { + if (token == null || token.isEmpty()) { + String msg = "No valid token property found"; + log.error(msg); + return Response.status(Response.Status.UNAUTHORIZED).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build() + ).build(); + } + + if (properties == null || properties.isEmpty()) { + String msg = "Devices configuration retrieval criteria cannot be null or empty."; + log.error(msg); + return Response.status(Response.Status.BAD_REQUEST).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build() + ).build(); + } + + ObjectMapper mapper = new ObjectMapper(); + properties = parseUriParamsToJSON(properties); + Map deviceProps = mapper.readValue(properties, + new TypeReference>() { + }); + deviceProps.put("token", token); + DeviceConfiguration devicesConfiguration = + dms.getDeviceConfiguration(deviceProps); + setAccessTokenToDeviceConfigurations(devicesConfiguration); + return Response.status(Response.Status.OK).entity(devicesConfiguration).build(); + } catch (DeviceManagementException e) { + String msg = "Error occurred while retrieving configurations"; + log.error(msg, e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); + } catch (DeviceNotFoundException e) { + log.error(e.getMessage(), e); + return Response.status(Response.Status.BAD_REQUEST).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(e.getMessage()).build()).build(); + } catch (AmbiguousConfigurationException e) { + String msg = "Configurations are ambiguous"; + log.error(msg, e); + return Response.status(Response.Status.BAD_REQUEST).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); + } catch (JsonParseException | JsonMappingException e) { + String msg = "Malformed device property structure"; + log.error(msg.concat(" ").concat(properties), e); + return Response.status(Response.Status.BAD_REQUEST).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); + } catch (IOException e) { + String msg = "Error occurred while parsing query param JSON data"; + log.error(msg.concat(" ").concat(properties), e); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity( + new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); + } + } + + private String parseUriParamsToJSON(String uriParams) { + uriParams = uriParams.replaceAll("=", "\":\""); + uriParams = uriParams.replaceAll("&", "\",\""); + return "{\"" + uriParams + "\"}"; + } + + private void setAccessTokenToDeviceConfigurations(DeviceConfiguration devicesConfiguration) + throws DeviceManagementException { + try { + AppRegistrationCredentials credentials = + DeviceManagerUtil.getApplicationRegistrationCredentials( + System.getProperty(DeviceManagementConstants + .ConfigurationManagement.IOT_GATEWAY_HOST), + System.getProperty(DeviceManagementConstants + .ConfigurationManagement.IOT_GATEWAY_HTTPS_PORT), + DeviceManagementConstants.ConfigurationManagement.ADMIN_CREDENTIALS); + AccessTokenInfo accessTokenForAdmin = DeviceManagerUtil.getAccessTokenForDeviceOwner( + DeviceManagementConstants.ConfigurationManagement.SCOPES_FOR_TOKEN, + credentials.getClient_id(), credentials.getClient_secret(), + devicesConfiguration.getDeviceOwner()); + devicesConfiguration.setAccessToken(accessTokenForAdmin.getAccessToken()); + devicesConfiguration.setRefreshToken(accessTokenForAdmin.getRefreshToken()); + } catch (ApplicationRegistrationException e) { + String msg = "Failure on retrieving application registration"; + log.error(msg, e); + throw new DeviceManagementException(msg, e); + } catch (JWTClientException e) { + String msg = "Error occurred while creating JWT client : " + e.getMessage(); + log.error(msg, e); + throw new DeviceManagementException(msg, e); + } + } + +} diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/util/DeviceMgtAPIUtils.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/util/DeviceMgtAPIUtils.java new file mode 100644 index 00000000000..874a644bba0 --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/util/DeviceMgtAPIUtils.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package io.entgra.carbon.device.mgt.config.jaxrs.util; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; + +/** + * MDMAPIUtils class provides utility function used by CDM REST-API classes. + */ +public class DeviceMgtAPIUtils { + private static Log log = LogFactory.getLog(DeviceMgtAPIUtils.class); + + public static DeviceManagementProviderService getDeviceManagementService() { + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + DeviceManagementProviderService deviceManagementProviderService = + (DeviceManagementProviderService) ctx.getOSGiService(DeviceManagementProviderService.class, null); + if (deviceManagementProviderService == null) { + String msg = "DeviceImpl Management provider service has not initialized."; + log.error(msg); + throw new IllegalStateException(msg); + } + return deviceManagementProviderService; + } +} diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/permissions.xml b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/permissions.xml new file mode 100644 index 00000000000..8b5c48b01ca --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/permissions.xml @@ -0,0 +1,39 @@ + + + + + + + + + Device Management Configuration + /device-mgt-config + / + GET + + diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/webapp-classloading.xml b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/webapp-classloading.xml new file mode 100644 index 00000000000..01aceabde5b --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/META-INF/webapp-classloading.xml @@ -0,0 +1,35 @@ + + + + + + + + + false + + + CXF,Carbon + diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/cxf-servlet.xml new file mode 100644 index 00000000000..e7426237cb2 --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/cxf-servlet.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/web.xml b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000000..0c2afe4a6f5 --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,126 @@ + + + + Device-Config-Webapp + + JAX-WS/JAX-RS Device Configuration Endpoint + JAX-WS/JAX-RS Servlet + CXFServlet + + org.apache.cxf.transport.servlet.CXFServlet + + + + swagger.security.filter + ApiAuthorizationFilterImpl + + 1 + + + CXFServlet + /* + + + 60 + + + + doAuthentication + true + + + + nonSecuredEndPoints + + /api/device-mgt-config/v1.0/configurations + + + + + + managed-api-enabled + true + + + managed-api-owner + admin + + + isSharedWithAllTenants + true + + + + + + DeviceMgt-Admin + /* + + + CONFIDENTIAL + + + + + ApiOriginFilter + io.entgra.carbon.device.mgt.config.jaxrs.ApiOriginFilter + + + + HttpHeaderSecurityFilter + org.apache.catalina.filters.HttpHeaderSecurityFilter + + hstsEnabled + false + + + + + ContentTypeBasedCachePreventionFilter + org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter + + patterns + text/html" ,application/json" ,text/plain + + + filterAction + enforce + + + httpHeaders + Cache-Control: no-store, no-cache, must-revalidate, private + + + + + HttpHeaderSecurityFilter + /* + + + + ContentTypeBasedCachePreventionFilter + /* + + + + ApiOriginFilter + /* + + + \ No newline at end of file diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/test/resources/testng.xml b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/test/resources/testng.xml new file mode 100644 index 00000000000..5fe82227d37 --- /dev/null +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/test/resources/testng.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/AppRegistrationCredentials.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/AppRegistrationCredentials.java new file mode 100644 index 00000000000..191ee0d3d48 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/AppRegistrationCredentials.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.common; + +/** + * Wrap application registration response payload + */ +public class AppRegistrationCredentials { + private String client_id; + private String client_secret; + + public String getClient_id() { + return client_id; + } + + public void setClient_id(String client_id) { + this.client_id = client_id; + } + + public String getClient_secret() { + return client_secret; + } + + public void setClient_secret(String client_secret) { + this.client_secret = client_secret; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistration.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistration.java new file mode 100644 index 00000000000..13d6c9d53c8 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistration.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.common; + +import java.util.List; + +/** + * This class is use to wrap and send + * Application registration data to the API publisher + * Use only for application registration doing inside the IoTs + */ +public class ApplicationRegistration { + private String applicationName; + private List tags; + private boolean isAllowedToAllDomains; + private long validityPeriod; + + public String getApplicationName() { + return applicationName; + } + + public void setApplicationName(String applicationName) { + this.applicationName = applicationName; + } + + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public boolean isAllowedToAllDomains() { + return isAllowedToAllDomains; + } + + public void setAllowedToAllDomains(boolean allowedToAllDomains) { + isAllowedToAllDomains = allowedToAllDomains; + } + + public long getValidityPeriod() { + return validityPeriod; + } + + public void setValidityPeriod(long validityPeriod) { + this.validityPeriod = validityPeriod; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistrationException.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistrationException.java new file mode 100644 index 00000000000..6ccfe677ef7 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/ApplicationRegistrationException.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.common; + +/** + * Throw this if any errors throw when the application registration API calling + */ +public class ApplicationRegistrationException extends Exception { + private static final long serialVersionUID = 4718132518977041928L; + + public ApplicationRegistrationException(String msg, Exception nestedEx) { + super(msg, nestedEx); + } + + public ApplicationRegistrationException(String message, Throwable cause) { + super(message, cause); + } + + public ApplicationRegistrationException(String msg) { + super(msg); + } + + public ApplicationRegistrationException() { + super(); + } + + public ApplicationRegistrationException(Throwable cause) { + super(cause); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/InvalidArgumentException.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/InvalidArgumentException.java new file mode 100644 index 00000000000..194f9713188 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/InvalidArgumentException.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.common; + +/** + * Throws if any arguments send to an API is wrong or invalid + */ +public class InvalidArgumentException extends Exception { + private static final long serialVersionUID = -2365244687985953509L; + + public InvalidArgumentException(String msg, Exception nestedEx) { + super(msg, nestedEx); + } + + public InvalidArgumentException(String message, Throwable cause) { + super(message, cause); + } + + public InvalidArgumentException(String msg) { + super(msg); + } + + public InvalidArgumentException() { + super(); + } + + public InvalidArgumentException(Throwable cause) { + super(cause); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/AmbiguousConfigurationException.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/AmbiguousConfigurationException.java new file mode 100644 index 00000000000..a18f437528a --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/AmbiguousConfigurationException.java @@ -0,0 +1,25 @@ +package org.wso2.carbon.device.mgt.common.configuration.mgt; + +public class AmbiguousConfigurationException extends Exception{ + private static final long serialVersionUID = 7039039961721642766L; + + public AmbiguousConfigurationException(String msg, Exception nestedEx) { + super(msg, nestedEx); + } + + public AmbiguousConfigurationException(String message, Throwable cause) { + super(message, cause); + } + + public AmbiguousConfigurationException(String msg) { + super(msg); + } + + public AmbiguousConfigurationException() { + super(); + } + + public AmbiguousConfigurationException(Throwable cause) { + super(cause); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DeviceConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DeviceConfiguration.java new file mode 100644 index 00000000000..da39516f414 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DeviceConfiguration.java @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.common.configuration.mgt; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.List; + +/** + * This class is use to wrap and send device configuration data + * to the device + */ +@ApiModel(value = "DeviceConfiguration", description = "This class carries all information related to " + + "Device configurations required to communicate with " + + "the server") +public class DeviceConfiguration { + @ApiModelProperty(name = "deviceId", value = "ID of the device", required = true) + private int deviceId; + + @ApiModelProperty(name = "deviceType", value = "Type of the device", required = true) + private String deviceType; + + @ApiModelProperty(name = "tenantDomain", value = "Tenant which the device owned") + private String tenantDomain; + + @ApiModelProperty(name = "configurationEntries", value = "Platform Configurations", required = true) + private List configurationEntries; + + @ApiModelProperty(name = "accessToken", value = "Token that can be use to communicate with the server") + private String accessToken; + + @ApiModelProperty(name = "refreshToken", value = "Token that can be use to communicate with the server") + private String refreshToken; + + @ApiModelProperty(name = "deviceOwner", value = "Owner of the selected device", required = true) + private String deviceOwner; + + public int getDeviceId() { + return deviceId; + } + + public void setDeviceId(int deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getTenantDomain() { + return tenantDomain; + } + + public void setTenantDomain(String tenantDomain) { + this.tenantDomain = tenantDomain; + } + + public List getConfigurationEntries() { + return configurationEntries; + } + + public void setConfigurationEntries( + List configurationEntries) { + this.configurationEntries = configurationEntries; + } + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + public String getDeviceOwner() { + return deviceOwner; + } + + public void setDeviceOwner(String deviceOwner) { + this.deviceOwner = deviceOwner; + } + + public String getRefreshToken() { + return refreshToken; + } + + public void setRefreshToken(String refreshToken) { + this.refreshToken = refreshToken; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DevicePropertyInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DevicePropertyInfo.java new file mode 100644 index 00000000000..1af7982252e --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/configuration/mgt/DevicePropertyInfo.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.common.configuration.mgt; + +/** + * This bean is use for retrieve and wrap device property info get from DB + */ +public class DevicePropertyInfo { + private String deviceIdentifier = "default"; + private String deviceTypeName = "default"; + private String tenantId = "default"; + + public String getDeviceIdentifier() { + return deviceIdentifier; + } + + public void setDeviceIdentifier(String deviceIdentifier) { + this.deviceIdentifier = deviceIdentifier; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String getDeviceTypeName() { + return deviceTypeName; + } + + public void setDeviceTypeName(String deviceTypeName) { + this.deviceTypeName = deviceTypeName; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof DevicePropertyInfo) { + DevicePropertyInfo devicePropertyInfo = (DevicePropertyInfo)obj; + return devicePropertyInfo.getDeviceIdentifier().equals(this.deviceIdentifier) + && devicePropertyInfo.getDeviceTypeName().equals(this.deviceTypeName) + && devicePropertyInfo.getTenantId().equals(this.tenantId); + } + return false; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementConstants.java index 57b00cb5a8c..7c7f265353a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/DeviceManagementConstants.java @@ -27,6 +27,21 @@ public final class DeviceManagementConstants { public static final String DEVICE_CACHE = "DEVICE_CACHE"; public static final String ENROLLMENT_NOTIFICATION_API_ENDPOINT = "/api/device-mgt/enrollment-notification"; + public static final class ConfigurationManagement { + private ConfigurationManagement(){ + throw new AssertionError(); + } + public static final String ADMIN_CREDENTIALS = "admin:admin"; + public static final String SCOPES_FOR_TOKEN = "perm:device:operations perm:device:publish-event"; + public static final String IOT_GATEWAY_HOST = "iot.gateway.host"; + public static final String IOT_GATEWAY_HTTPS_PORT = "iot.gateway.https.port"; + public static final String MQTT_ENDPOINTS = "mqttEndpoints"; + public static final String APPLICATION_REGISTRATION_API_ENDPOINT = + "/api-application-registration/register"; + public static final String AUTHORIZATION_HEADER = "authorization"; + public static final String BASIC_AUTH = "Basic"; + + } public static final class Common { private Common() { throw new AssertionError(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java index f62d915d1ba..f824a2255b9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java @@ -40,6 +40,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.EnrolmentInfo.Status; import org.wso2.carbon.device.mgt.common.PaginationRequest; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DevicePropertyInfo; import org.wso2.carbon.device.mgt.core.dto.DeviceType; import org.wso2.carbon.device.mgt.core.geo.GeoCluster; import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate; @@ -190,6 +191,15 @@ public interface DeviceDAO { */ List getDeviceBasedOnDeviceProperties(Map deviceProps, int tenantId) throws DeviceManagementDAOException; + /** + * Retrieves a list of devices based on a given criteria of properties + * This will ignores the tenant and it will return devices registered under every tenants + * @param deviceProps properties by which devices need to be filtered + * @return list of devices with properties + * @throws DeviceManagementDAOException if the SQL query has failed to be executed + */ + List getDeviceBasedOnDeviceProperties(Map deviceProps) + throws DeviceManagementDAOException; /** * Retrieves properties of given device identifier diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceNotFoundDAOException.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceNotFoundDAOException.java new file mode 100644 index 00000000000..b4479ed20ae --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceNotFoundDAOException.java @@ -0,0 +1,28 @@ +package org.wso2.carbon.device.mgt.core.dao; + +/** + * Throws if the querying device is not found in the DB + */ +public class DeviceNotFoundDAOException extends Exception { + private static final long serialVersionUID = 2126172787830234694L; + + public DeviceNotFoundDAOException(String msg, Exception nestedEx) { + super(msg, nestedEx); + } + + public DeviceNotFoundDAOException(String message, Throwable cause) { + super(message, cause); + } + + public DeviceNotFoundDAOException(String msg) { + super(msg); + } + + public DeviceNotFoundDAOException() { + super(); + } + + public DeviceNotFoundDAOException(Throwable cause) { + super(cause); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java index 413e9bc56c3..588f2ebd4a1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java @@ -42,6 +42,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.EnrolmentInfo.Status; import org.wso2.carbon.device.mgt.common.PaginationRequest; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DevicePropertyInfo; import org.wso2.carbon.device.mgt.core.dao.DeviceDAO; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; @@ -62,6 +63,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringJoiner; +import java.util.concurrent.atomic.AtomicInteger; public abstract class AbstractDeviceDAOImpl implements DeviceDAO { @@ -71,6 +73,7 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { private static final String PROPERTY_VALUE_COLUMN_NAME = "PROPERTY_VALUE"; private static final String PROPERTY_DEVICE_TYPE_NAME = "DEVICE_TYPE_NAME"; private static final String PROPERTY_DEVICE_IDENTIFICATION = "DEVICE_IDENTIFICATION"; + private static final String PROPERTY_TENANT_ID = "TENANT_ID"; @Override public int addDevice(int typeId, Device device, int tenantId) throws DeviceManagementDAOException { @@ -330,6 +333,65 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { return devices; } + @Override + public List getDeviceBasedOnDeviceProperties(Map deviceProps) + throws DeviceManagementDAOException { + Connection conn; + PreparedStatement stmt = null; + ResultSet resultSet = null; + List deviceProperties = new ArrayList<>(); + try { + conn = this.getConnection(); + List> outputLists = new ArrayList<>(); + String sql = "SELECT " + + "p.DEVICE_IDENTIFICATION, " + + "p.DEVICE_TYPE_NAME, " + + "p.TENANT_ID FROM " + + "DM_DEVICE_PROPERTIES p "; + + String groupByClause = "GROUP BY " + + "p.DEVICE_IDENTIFICATION, " + + "p.DEVICE_TYPE_NAME, " + + "p.TENANT_ID"; + + AtomicInteger iterationCount = new AtomicInteger(0); + StringBuilder propertyQuery = new StringBuilder(" "); + for (Map.Entry stringStringEntry : deviceProps.entrySet()) { + String tempTableId = "t".concat(Integer.toString(iterationCount.getAndIncrement())); + propertyQuery.append("JOIN DM_DEVICE_PROPERTIES ") + .append(tempTableId).append(" ").append("ON p.DEVICE_IDENTIFICATION = ") + .append(tempTableId).append(".DEVICE_IDENTIFICATION ") + .append("AND ") + .append(tempTableId).append(".PROPERTY_NAME = ? ") + .append("AND ") + .append(tempTableId).append(".PROPERTY_VALUE = ? "); + } + sql = sql.concat(propertyQuery.toString()).concat(groupByClause); + stmt = conn.prepareStatement(sql); + int index = 1; + for (Map.Entry entry : deviceProps.entrySet()) { + stmt.setString(index++, entry.getKey()); + stmt.setString(index++, entry.getValue()); + } + resultSet = stmt.executeQuery(); + while (resultSet.next()) { + DevicePropertyInfo devicePropertyInfo = new DevicePropertyInfo(); + devicePropertyInfo + .setDeviceIdentifier(resultSet.getString(PROPERTY_DEVICE_IDENTIFICATION)); + devicePropertyInfo.setTenantId(resultSet.getString(PROPERTY_TENANT_ID)); + devicePropertyInfo.setDeviceTypeName(resultSet.getString(PROPERTY_DEVICE_TYPE_NAME)); + deviceProperties.add(devicePropertyInfo); + } + return deviceProperties; + } catch (SQLException e) { + String msg = "Error occurred while fetching devices against criteria : '" + deviceProps; + log.error(msg, e); + throw new DeviceManagementDAOException(msg, e); + } finally { + DeviceManagementDAOUtil.cleanupResources(stmt, resultSet); + } + } + @Override public Device getDeviceProps(String deviceId, int tenantId) throws DeviceManagementDAOException { Connection conn = null; @@ -385,7 +447,6 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { return intersectedResult; } - @Override public Device getDevice(String deviceIdentifier, Date since, int tenantId) throws DeviceManagementDAOException { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java index b32ed7ed124..8aa8f71626c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java @@ -38,17 +38,22 @@ package org.wso2.carbon.device.mgt.core.service; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.DeviceNotFoundException; import org.wso2.carbon.device.mgt.common.DeviceTypeNotFoundException; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.FeatureManager; +import org.wso2.carbon.device.mgt.common.InvalidArgumentException; import org.wso2.carbon.device.mgt.common.InvalidDeviceException; import org.wso2.carbon.device.mgt.common.MonitoringOperation; import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.StartupOperationConfig; +import org.wso2.carbon.device.mgt.common.UnauthorizedDeviceAccessException; import org.wso2.carbon.device.mgt.common.UserNotFoundException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.AmbiguousConfigurationException; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; @@ -729,4 +734,19 @@ public interface DeviceManagementProviderService { boolean updateEnrollment(String owner, List deviceIdentifiers) throws DeviceManagementException, UserNotFoundException, InvalidDeviceException; + + /** + * Retrieves a list of configurations of a specific device + * using the device's properties + * @param propertyMap properties by which devices need to be drawn + * @return list of device configuration + * @throws DeviceManagementException if any service level or DAO level error occurs + * @throws DeviceNotFoundException if there is no any device can found for specified properties + * @throws UnauthorizedDeviceAccessException if the required token property is not found on + * @throws AmbiguousConfigurationException if configuration is ambiguous + * the property payload + */ + DeviceConfiguration getDeviceConfiguration(Map propertyMap) + throws DeviceManagementException, DeviceNotFoundException, UnauthorizedDeviceAccessException, + AmbiguousConfigurationException; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java index dcf34c0e273..8aa8d5e2d89 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java @@ -60,6 +60,7 @@ import org.wso2.carbon.device.mgt.common.DeviceTypeNotFoundException; import org.wso2.carbon.device.mgt.common.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.FeatureManager; import org.wso2.carbon.device.mgt.common.InitialOperationConfig; +import org.wso2.carbon.device.mgt.common.InvalidArgumentException; import org.wso2.carbon.device.mgt.common.InvalidDeviceException; import org.wso2.carbon.device.mgt.common.MonitoringOperation; import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; @@ -67,9 +68,14 @@ import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; import org.wso2.carbon.device.mgt.common.StartupOperationConfig; import org.wso2.carbon.device.mgt.common.TransactionManagementException; +import org.wso2.carbon.device.mgt.common.UnauthorizedDeviceAccessException; import org.wso2.carbon.device.mgt.common.UserNotFoundException; import org.wso2.carbon.device.mgt.common.app.mgt.Application; +import org.wso2.carbon.device.mgt.common.configuration.mgt.AmbiguousConfigurationException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration; +import org.wso2.carbon.device.mgt.common.configuration.mgt.DevicePropertyInfo; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; @@ -3273,4 +3279,86 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv + "constructing is failed", e); } } + + @Override + public DeviceConfiguration getDeviceConfiguration(Map deviceProps) + throws DeviceManagementException, DeviceNotFoundException, UnauthorizedDeviceAccessException, + AmbiguousConfigurationException { + + if (log.isDebugEnabled()) { + log.debug("Attempting to get device configurations based on properties."); + } + + DevicePropertyInfo deviceProperties; + List devicePropertyList; + try { + DeviceManagementDAOFactory.openConnection(); + devicePropertyList = deviceDAO.getDeviceBasedOnDeviceProperties(deviceProps); + if (devicePropertyList == null || devicePropertyList.isEmpty()) { + String msg = "Cannot find device for specified properties"; + log.info(msg); + throw new DeviceNotFoundException(msg); + } + //In this service, there should be only one device for the specified property values + //If multiple values retrieved, It'll be marked as ambiguous. + if (devicePropertyList.size() > 1) { + String msg = "Device property list contains more than one element"; + log.error(msg); + throw new AmbiguousConfigurationException(msg); + } + //Get the only existing value of the list + deviceProperties = devicePropertyList.get(0); + + } catch (SQLException e) { + String msg = "Error occurred while opening a connection to the data source"; + log.error(msg, e); + throw new DeviceManagementException(msg, e); + } catch (DeviceManagementDAOException e) { + String msg = "Devices configuration retrieval criteria cannot be null or empty."; + log.error(msg); + throw new DeviceManagementException(msg, e); + } finally { + DeviceManagementDAOFactory.closeConnection(); + } + + try { + Device device = this.getDevice(new DeviceIdentifier(deviceProperties.getDeviceIdentifier(), + deviceProperties.getDeviceTypeName()), false); + String owner = device.getEnrolmentInfo().getOwner(); + PrivilegedCarbonContext.startTenantFlow(); + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + ctx.setTenantId(Integer.parseInt(deviceProperties.getTenantId()), true); + PlatformConfiguration configuration = this.getConfiguration(device.getType()); + List configurationEntries = new ArrayList<>(); + if (configuration != null) { + configurationEntries = configuration.getConfiguration(); + } + return wrapConfigurations(device, ctx.getTenantDomain(), configurationEntries, owner); + } finally { + PrivilegedCarbonContext.endTenantFlow(); + } + } + + /** + * Wrap the device configuration data into DeviceConfiguration bean + * @param device Device queried using the properties + * @param tenantDomain tenant domain + * @param configurationEntries platformConfiguration list + * @param deviceOwner name of the device owner + * @return Wrapped {@link DeviceConfiguration} object with data + */ + private DeviceConfiguration wrapConfigurations(Device device, + String tenantDomain, + List configurationEntries, + String deviceOwner) { + DeviceConfiguration deviceConfiguration = new DeviceConfiguration(); + deviceConfiguration.setDeviceId(device.getId()); + deviceConfiguration.setDeviceType(device.getType()); + deviceConfiguration.setTenantDomain(tenantDomain); + deviceConfiguration.setConfigurationEntries(configurationEntries); + deviceConfiguration.setDeviceOwner(deviceOwner); + return deviceConfiguration; + } + + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java index 44d8814fcd0..ccf6091d8c2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java @@ -17,13 +17,25 @@ */ package org.wso2.carbon.device.mgt.core.util; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.protocol.HTTP; import org.w3c.dom.Document; import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.caching.impl.CacheImpl; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherService; +import org.wso2.carbon.device.mgt.common.AppRegistrationCredentials; +import org.wso2.carbon.device.mgt.common.ApplicationRegistration; +import org.wso2.carbon.device.mgt.common.ApplicationRegistrationException; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; @@ -49,6 +61,10 @@ import org.wso2.carbon.device.mgt.core.dto.DeviceType; import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMgtConstants; import org.wso2.carbon.device.mgt.core.operation.mgt.util.DeviceIDHolder; +import org.wso2.carbon.identity.jwt.client.extension.JWTClient; +import org.wso2.carbon.identity.jwt.client.extension.dto.AccessTokenInfo; +import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException; +import org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService; import org.wso2.carbon.user.api.TenantManager; import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.utils.CarbonUtils; @@ -63,9 +79,13 @@ import javax.sql.DataSource; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import java.io.BufferedReader; import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Base64; import java.util.HashMap; import java.util.Hashtable; import java.util.List; @@ -588,4 +608,102 @@ public final class DeviceManagerUtil { } return deviceCache; } + + /** + * Create an app and get app registration token from the application registration endpoint + * + * @return AppRegistrationToken object which contains access and refresh tokens + * @throws ApplicationRegistrationException when application fails to connect with the app registration + * endpoint + */ + @SuppressWarnings("PackageAccessibility") + public static AppRegistrationCredentials getApplicationRegistrationCredentials(String host, String port, + String credentials) + throws ApplicationRegistrationException { + if (host == null || port == null) { + String msg = "Required gatewayHost or gatewayPort system property is null"; + log.error(msg); + throw new ApplicationRegistrationException(msg); + } + String internalServerAddr = "https://".concat(host).concat(":").concat(port); + try (CloseableHttpClient client = HttpClients.createDefault()) { + HttpPost apiEndpoint = new HttpPost( + internalServerAddr + DeviceManagementConstants.ConfigurationManagement + .APPLICATION_REGISTRATION_API_ENDPOINT); + + apiEndpoint.setHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()); + apiEndpoint.setHeader(DeviceManagementConstants.ConfigurationManagement.AUTHORIZATION_HEADER, + DeviceManagementConstants.ConfigurationManagement.BASIC_AUTH.concat(" ") + .concat(getBase64EncodedCredentials(credentials))); + apiEndpoint.setEntity(constructApplicationRegistrationPayload()); + HttpResponse response = client.execute(apiEndpoint); + if (response != null) { + log.info("Obtained client credentials: " + response.getStatusLine().getStatusCode()); + BufferedReader rd = new BufferedReader( + new InputStreamReader(response.getEntity().getContent())); + StringBuilder result = new StringBuilder(); + String line; + while ((line = rd.readLine()) != null) { + result.append(line); + } + return new ObjectMapper().readValue(result.toString(), AppRegistrationCredentials.class); + } else { + String msg = "Response is 'NUll' for the Application Registration API call."; + log.error(msg); + throw new ApplicationRegistrationException(msg); + } + } catch (IOException e) { + throw new ApplicationRegistrationException( + "Error occurred when invoking API. API endpoint: " + + internalServerAddr + DeviceManagementConstants.ConfigurationManagement + .APPLICATION_REGISTRATION_API_ENDPOINT, e); + } + } + + /** + * Use default admin credentials and encode them in Base64 + * + * @return Base64 encoded client credentials + */ + private static String getBase64EncodedCredentials(String credentials) { + return Base64.getEncoder().encodeToString(credentials.getBytes()); + } + + /** + * Create a JSON payload for application registration + * + * @return Generated JSON payload + */ + @SuppressWarnings("PackageAccessibility") + private static StringEntity constructApplicationRegistrationPayload() { + ApplicationRegistration applicationRegistration = new ApplicationRegistration(); + applicationRegistration.setApplicationName("MyApp"); + applicationRegistration.setAllowedToAllDomains(false); + List tags = new ArrayList<>(); + tags.add("device_management"); + applicationRegistration.setTags(tags); + applicationRegistration.setValidityPeriod(3600); + Gson gson = new Gson(); + String payload = gson.toJson(applicationRegistration); + return new StringEntity(payload, ContentType.APPLICATION_JSON); + } + + /** + * Retrieves access token for a given device + * @param scopes scopes for token + * @param clientId clientId + * @param clientSecret clientSecret + * @param deviceOwner owner of the device that is going to generate token + * @return @{@link AccessTokenInfo} wrapped object of retrieved access token and refresh token + * @throws JWTClientException if an error occurs when the jwt client creation or token retrieval + */ + public static AccessTokenInfo getAccessTokenForDeviceOwner(String scopes, String clientId, + String clientSecret, String deviceOwner) + throws JWTClientException { + PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + JWTClientManagerService jwtClientManagerService = (JWTClientManagerService) ctx + .getOSGiService(JWTClientManagerService.class, null); + JWTClient jwtClient = jwtClientManagerService.getJWTClient(); + return jwtClient.getAccessToken(clientId, clientSecret, deviceOwner, scopes); + } } diff --git a/components/device-mgt/pom.xml b/components/device-mgt/pom.xml index 1b6c6930581..c0647a04f4d 100644 --- a/components/device-mgt/pom.xml +++ b/components/device-mgt/pom.xml @@ -42,6 +42,7 @@ org.wso2.carbon.device.mgt.analytics.data.publisher org.wso2.carbon.device.mgt.url.printer org.wso2.carbon.device.mgt.analytics.wsproxy + io.entgra.carbon.device.mgt.config.api diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml index 8bf4cde0e60..d38319a04ce 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml @@ -232,7 +232,11 @@ powermock-module-testng test - + + org.wso2.carbon.devicemgt + org.wso2.carbon.identity.jwt.client.extension + test + diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml index e1fc7e9d8ac..5b602cf81e9 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml @@ -85,6 +85,29 @@ + + copy config api + package + + copy + + + + + org.wso2.carbon.devicemgt + io.entgra.carbon.device.mgt.config.api + + ${project.version} + war + true + + ${project.build.directory}/maven-shared-archive-resources/webapps + + api#device-mgt-config#v1.0.war + + + + diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/src/main/resources/p2.inf b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/src/main/resources/p2.inf index fea8965f736..66e6d1f6de3 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/src/main/resources/p2.inf +++ b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/src/main/resources/p2.inf @@ -1,4 +1,5 @@ instructions.configure = \ org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../deployment/server/webapps/);\ org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.api_${feature.version}/webapps/api#device-mgt#v1.0.war,target:${installFolder}/../../deployment/server/webapps/api#device-mgt#v1.0.war,overwrite:true);\ -org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.api_${feature.version}/webapps/api#device-mgt#v0.9.war,target:${installFolder}/../../deployment/server/webapps/api#device-mgt#v0.9.war,overwrite:true);\ \ No newline at end of file +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.api_${feature.version}/webapps/api#device-mgt#v0.9.war,target:${installFolder}/../../deployment/server/webapps/api#device-mgt#v0.9.war,overwrite:true);\ +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.api_${feature.version}/webapps/api#device-mgt-config#v1.0.war,target:${installFolder}/../../deployment/server/webapps/api#device-mgt-config#v1.0.war,overwrite:true);\ \ No newline at end of file From f01448d39635208aaacf749316b3db2875e2f2cd Mon Sep 17 00:00:00 2001 From: Pahansith Date: Tue, 27 Aug 2019 23:16:43 +0530 Subject: [PATCH 02/19] Change http method to get --- .../config/jaxrs/service/DeviceManagementConfigService.java | 2 +- .../device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java index 5c53d8129ab..4742548f66d 100644 --- a/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java +++ b/components/device-mgt/io.entgra.carbon.device.mgt.config.api/src/main/java/io/entgra/carbon/device/mgt/config/jaxrs/service/DeviceManagementConfigService.java @@ -79,7 +79,7 @@ public interface DeviceManagementConfigService { @GET @ApiOperation( produces = MediaType.APPLICATION_JSON, - httpMethod = "POST", + httpMethod = "GET", value = "Getting General device Configurations", notes = "This API is responsible for send device configuration data to an IOT device when the " + "device starts provisioning", diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java index 588f2ebd4a1..6e5ef3a5861 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/AbstractDeviceDAOImpl.java @@ -354,10 +354,10 @@ public abstract class AbstractDeviceDAOImpl implements DeviceDAO { "p.DEVICE_TYPE_NAME, " + "p.TENANT_ID"; - AtomicInteger iterationCount = new AtomicInteger(0); + int iterationCount = 0; StringBuilder propertyQuery = new StringBuilder(" "); for (Map.Entry stringStringEntry : deviceProps.entrySet()) { - String tempTableId = "t".concat(Integer.toString(iterationCount.getAndIncrement())); + String tempTableId = "t".concat(Integer.toString(iterationCount++)); propertyQuery.append("JOIN DM_DEVICE_PROPERTIES ") .append(tempTableId).append(" ").append("ON p.DEVICE_IDENTIFICATION = ") .append(tempTableId).append(".DEVICE_IDENTIFICATION ") From 5421c1c38b84fef8e399b6953ee5876fd8763696 Mon Sep 17 00:00:00 2001 From: lasanthaDLPDS Date: Wed, 28 Aug 2019 13:16:54 +0530 Subject: [PATCH 03/19] Fix operation DTO initializing issue --- .../mgt/core/operation/mgt/dao/util/OperationDAOUtil.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java index ff402f7e977..efabf9bee60 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/util/OperationDAOUtil.java @@ -79,6 +79,10 @@ public class OperationDAOUtil { dtoOperation.setControl(Operation.Control.valueOf(operation.getControl().toString())); } + if (operation.getInitiatedBy() != null) { + dtoOperation.setInitiatedBy(operation.getInitiatedBy()); + } + return dtoOperation; } From 4040d95eaa2aca474a005fb5b6251a5e637b0c3e Mon Sep 17 00:00:00 2001 From: Ace Date: Wed, 28 Aug 2019 13:45:15 +0530 Subject: [PATCH 04/19] removing font-wso2-1.3.0 and adding font-entgra-1.4.0 with fresh icons --- .../css/font-wso2.css | 96 +- .../font-entgra-1.4.0/css/font-wso2.min.css | 15 + .../lib/font-entgra-1.4.0/fonts/font-wso2.eot | Bin 0 -> 120372 bytes .../lib/font-entgra-1.4.0/fonts/font-wso2.svg | 1158 ++++++++ .../lib/font-entgra-1.4.0/fonts/font-wso2.ttf | Bin 0 -> 120196 bytes .../font-entgra-1.4.0/fonts/font-wso2.woff | Bin 0 -> 76972 bytes .../font-entgra-1.4.0/fonts/font-wso2.woff2 | Bin 0 -> 64752 bytes .../icons.json | 34 +- .../scss/_mixin.scss | 2582 +++++++++-------- .../lib/font-wso2-1.3.0/css/font-wso2.min.css | 15 - .../lib/font-wso2-1.3.0/fonts/font-wso2.svg | 2326 --------------- .../lib/font-wso2-1.3.0/fonts/font-wso2.ttf | Bin 71828 -> 0 bytes .../lib/font-wso2-1.3.0/fonts/font-wso2.woff | Bin 142064 -> 0 bytes .../lib/font-wso2-1.3.0/fonts/font-wso2.woff2 | Bin 38672 -> 0 bytes .../app/units/uuf.unit.theme/theme.hbs | 2 +- 15 files changed, 2620 insertions(+), 3608 deletions(-) rename components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/{font-wso2-1.3.0 => font-entgra-1.4.0}/css/font-wso2.css (93%) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.min.css create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.eot create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.svg create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.ttf create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.woff create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.woff2 rename components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/{font-wso2-1.3.0 => font-entgra-1.4.0}/icons.json (92%) rename components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/{font-wso2-1.3.0 => font-entgra-1.4.0}/scss/_mixin.scss (93%) delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/css/font-wso2.min.css delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/fonts/font-wso2.svg delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/fonts/font-wso2.ttf delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/fonts/font-wso2.woff delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/fonts/font-wso2.woff2 diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/css/font-wso2.css b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.css similarity index 93% rename from components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/css/font-wso2.css rename to components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.css index c6544d6f2eb..430d7e4e64d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-wso2-1.3.0/css/font-wso2.css +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.css @@ -17,13 +17,13 @@ @font-face { font-family:"font-wso2"; - src:local("font-wso2"), url("../fonts/font-wso2.eot?6563fa91278f239ef8c827d90a165223"); + src:local("font-wso2"), url("../fonts/font-wso2.eot?cad2cbc31721ac5b0af964f18b9762cf"); src:local("font-wso2"), - url("../fonts/font-wso2.eot?#iefix") format("embedded-opentype"), - url("../fonts/font-wso2.woff2?6563fa91278f239ef8c827d90a165223") format("woff2"), - url("../fonts/font-wso2.woff?6563fa91278f239ef8c827d90a165223") format("woff"), - url("../fonts/font-wso2.ttf?6563fa91278f239ef8c827d90a165223") format("truetype"), - url("../fonts/font-wso2.svg?6563fa91278f239ef8c827d90a165223#font-wso2") format("svg"); + url("../fonts/font-wso2.eot?cad2cbc31721ac5b0af964f18b9762cf#iefix") format("embedded-opentype"), + url("../fonts/font-wso2.woff2?cad2cbc31721ac5b0af964f18b9762cf") format("woff2"), + url("../fonts/font-wso2.woff?cad2cbc31721ac5b0af964f18b9762cf") format("woff"), + url("../fonts/font-wso2.ttf?cad2cbc31721ac5b0af964f18b9762cf") format("truetype"), + url("../fonts/font-wso2.svg?cad2cbc31721ac5b0af964f18b9762cf#font-wso2") format("svg"); font-weight:normal; font-style:normal; } @@ -304,10 +304,18 @@ content:"\e6cf"; } +.fw-activesync:before { + content:"\e745"; +} + .fw-add:before { content:"\e615"; } +.fw-aggregate:before { + content:"\e742"; +} + .fw-airplay:before { content:"\e600"; } @@ -348,7 +356,7 @@ content:"\e602"; } -.fw-ios:before { +.fw-apple:before { content:"\e604"; } @@ -380,6 +388,10 @@ content:"\e60a"; } +.fw-bean:before { + content:"\e743"; +} + .fw-blank-document:before { content:"\e60c"; } @@ -416,6 +428,10 @@ content:"\e612"; } +.fw-call-mediator:before { + content:"\e736"; +} + .fw-camera:before { content:"\e613"; } @@ -480,7 +496,7 @@ content:"\e653"; } -.fw-configarations:before { +.fw-configurations:before { content:"\e609"; } @@ -500,6 +516,10 @@ content:"\e620"; } +.fw-continue:before { + content:"\e73e"; +} + .fw-contract:before { content:"\e614"; } @@ -516,6 +536,10 @@ content:"\e622"; } +.fw-data-mapper:before { + content:"\e735"; +} + .fw-database:before { content:"\e623"; } @@ -628,6 +652,10 @@ content:"\e628"; } +.fw-dollar:before { + content:"\e741"; +} + .fw-down-arrow:before { content:"\e689"; } @@ -672,6 +700,10 @@ content:"\e6e3"; } +.fw-event-simulator:before { + content:"\e744"; +} + .fw-expand:before { content:"\e61c"; } @@ -716,6 +748,10 @@ content:"\e62e"; } +.fw-foreach:before { + content:"\e73ab"; +} + .fw-fork-join:before { content:"\e720"; } @@ -764,6 +800,10 @@ content:"\e6da"; } +.fw-google-glass:before { + content:"\e732"; +} + .fw-google-plus:before { content:"\e6d9"; } @@ -800,6 +840,10 @@ content:"\e639"; } +.fw-header:before { + content:"\e734"; +} + .fw-heart:before { content:"\e6c3"; } @@ -832,6 +876,10 @@ content:"\e63c"; } +.fw-in-sequence:before { + content:"\e739"; +} + .fw-incoming-call:before { content:"\e63d"; } @@ -844,6 +892,10 @@ content:"\e6db"; } +.fw-integration:before { + content:"\e73f"; +} + .fw-invitation:before { content:"\e63f"; } @@ -960,6 +1012,10 @@ content:"\e64e"; } +.fw-log:before { + content:"\e738"; +} + .fw-logical:before { content:"\e702"; } @@ -976,6 +1032,10 @@ content:"\e650"; } +.fw-mapping:before { + content:"\e73c"; +} + .fw-menu:before { content:"\e651"; } @@ -1004,6 +1064,10 @@ content:"\e655"; } +.fw-namespace:before { + content:"\e740"; +} + .fw-nodejs:before { content:"\e656"; } @@ -1016,6 +1080,10 @@ content:"\e6ac"; } +.fw-out-sequence:before { + content:"\e73a"; +} + .fw-own:before { content:"\e6c8"; } @@ -1032,6 +1100,10 @@ content:"\e658"; } +.fw-payload-factory:before { + content:"\e733"; +} + .fw-pdf:before { content:"\e659"; } @@ -1060,6 +1132,10 @@ content:"\e70d"; } +.fw-property:before { + content:"\e737"; +} + .fw-prototype:before { content:"\e6cc"; } @@ -1088,6 +1164,10 @@ content:"\e65d"; } +.fw-reduce:before { + content:"\e73d"; +} + .fw-refresh:before { content:"\e692"; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.min.css b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.min.css new file mode 100644 index 00000000000..1ebcfdafe42 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/css/font-wso2.min.css @@ -0,0 +1,15 @@ +/*! +~ Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved. +~ +~ Licensed under the Apache License, Version 2.0 (the "License"); +~ you may not use this file except in compliance with the License. +~ You may obtain a copy of the License at +~ +~ http://www.apache.org/licenses/LICENSE-2.0 +~ +~ Unless required by applicable law or agreed to in writing, software +~ distributed under the License is distributed on an "AS IS" BASIS, +~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +~ See the License for the specific language governing permissions and +~ limitations under the License. +*/@font-face{font-family:font-wso2;src:local("font-wso2"),url(../fonts/font-wso2.eot?cad2cbc31721ac5b0af964f18b9762cf);src:local("font-wso2"),url(../fonts/font-wso2.eot?cad2cbc31721ac5b0af964f18b9762cf#iefix) format("embedded-opentype"),url(../fonts/font-wso2.woff2?cad2cbc31721ac5b0af964f18b9762cf) format("woff2"),url(../fonts/font-wso2.woff?cad2cbc31721ac5b0af964f18b9762cf) format("woff"),url(../fonts/font-wso2.ttf?cad2cbc31721ac5b0af964f18b9762cf) format("truetype"),url(../fonts/font-wso2.svg?cad2cbc31721ac5b0af964f18b9762cf#font-wso2) format("svg");font-weight:400;font-style:normal}.fw,[class*=" fw-"],[class^=fw-]{font:normal normal normal 14px/1 font-wso2;display:inline-block;font-weight:400;font-style:normal;font-size:inherit;font-variant:normal;speak:none;text-decoration:inherit;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fw-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fw-2x{font-size:2em}.fw-3x{font-size:3em}.fw-4x{font-size:4em}.fw-5x{font-size:5em}.fw-fw{width:1.28571429em;text-align:center}.fw-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fw-ul>li{position:relative}.fw-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fw-li.fw-lg{left:-1.85714286em}.fw-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fw-background{background:#888;border-radius:.3em;padding:.4em .5em .45em}.fw-pull-left{float:left}.fw-pull-right{float:right}.fw.fw-pull-left{margin-right:.3em}.fw.fw-pull-right{margin-left:.3em}.fw-spin{-webkit-animation:fw-spin 2s infinite linear;animation:fw-spin 2s infinite linear}@-webkit-keyframes fw-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fw-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fw-pulse{-webkit-animation:fw-pulse 2s ease-out infinite;animation:fw-pulse 2s ease-out infinite}@-webkit-keyframes fw-pulse{0%,30%{opacity:.3}40%{opacity:1}100%{opacity:.3}}@keyframes fw-pulse{0%,30%{opacity:.3}40%{opacity:1}100%{opacity:.3}}.fw-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fw-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fw-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fw-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fw-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fw-flip-horizontal,:root .fw-flip-vertical,:root .fw-rotate-180,:root .fw-rotate-270,:root .fw-rotate-90{filter:none}.fw-helper,.fw-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:1.85em;vertical-align:middle}.fw-helper:after,.fw-helper:before,.fw-stack-1x,.fw-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fw-helper:before,.fw-stack-1x{line-height:inherit}.fw-helper:after,.fw-stack-2x{font-size:1.9em}.fw-helper-slash:before{font-size:1.4em}.fw-helper-circle:before,.fw-helper-square:before{z-index:1}.fw-helper-circle-outline:after{content:"\e61f"}.fw-helper-circle:after{content:"\e61a"}.fw-helper-square-outline:after{content:"\e6b2"}.fw-helper-square:after{content:"\e6b1"}.fw-helper-slash:after{content:"\e6e1"}.fw-stack>.fw-stack{position:absolute;font-size:.5em}.fw-stack>.fw-stack.fw-move-top{top:-.2em}.fw-stack>.fw-stack.fw-move-bottom{bottom:-.2em}.fw-stack>.fw.stack.fw-move-left{left:-.5em}.fw-stack>.fw-stack.fw-move-right{right:-.5em}.fw-helper-inverse:after,.fw-inverse:before,.fw-number{color:#fff}.fw-helper-shadow:after,.fw-shadow:before{text-shadow:#fff 1px 1px 0}.fw-helper-stroke:after,.fw-stroke:before{text-shadow:-2px -2px 0 #fff,2px -2px 0 #fff,-2px 2px 0 #fff,2px 2px 0 #fff}.fw-number{line-height:2em;font-family:Arial,Helvetica,sans-serif}.fw-abort:before{content:"\e72a"}.fw-action-invoke:before{content:"\e6fe"}.fw-action:before{content:"\e709"}.fw-activate:before{content:"\e6cf"}.fw-activesync:before{content:"\e745"}.fw-add:before{content:"\e615"}.fw-aggregate:before{content:"\e742"}.fw-airplay:before{content:"\e600"}.fw-alarm:before{content:"\e6c2"}.fw-alert:before{content:"\e6be"}.fw-analytics-extensions:before{content:"\e6e2"}.fw-android-logcat:before{content:"\e72c"}.fw-android-sense:before{content:"\e72d"}.fw-android:before{content:"\e606"}.fw-annotation:before{content:"\e6e6"}.fw-api:before{content:"\e601"}.fw-apn:before{content:"\e602"}.fw-apple:before{content:"\e604"}.fw-application:before{content:"\e608"}.fw-arduino:before{content:"\e6ab"}.fw-assign:before{content:"\e6ff"}.fw-ballerina-service:before{content:"\e729"}.fw-ballerina:before{content:"\e728"}.fw-bar-chart:before{content:"\e690"}.fw-battery:before{content:"\e60a"}.fw-bean:before{content:"\e743"}.fw-blank-document:before{content:"\e60c"}.fw-block:before{content:"\e695"}.fw-bookmark:before{content:"\e60d"}.fw-bpel:before{content:"\e60e"}.fw-bpmn:before{content:"\e60f"}.fw-break:before{content:"\e721"}.fw-bug:before{content:"\e611"}.fw-build:before{content:"\e6c1"}.fw-calendar:before{content:"\e612"}.fw-call-mediator:before{content:"\e736"}.fw-camera:before{content:"\e613"}.fw-cancel:before{content:"\e618"}.fw-carbon:before{content:"\e6c5"}.fw-chat:before{content:"\e65b"}.fw-check:before{content:"\e617"}.fw-checklist:before{content:"\e619"}.fw-circle-outline:before{content:"\e61f"}.fw-circle:before{content:"\e61a"}.fw-clear:before{content:"\e61b"}.fw-clock:before{content:"\e61d"}.fw-cloud:before{content:"\e61e"}.fw-code-view:before{content:"\e70e"}.fw-code:before{content:"\e6f1"}.fw-comment:before{content:"\e710"}.fw-compare:before{content:"\e610"}.fw-computer:before{content:"\e653"}.fw-configurations:before{content:"\e609"}.fw-connector:before{content:"\e700"}.fw-console:before{content:"\e71d"}.fw-constant:before{content:"\e701"}.fw-contact:before{content:"\e620"}.fw-continue:before{content:"\e73e"}.fw-contract:before{content:"\e614"}.fw-copy:before{content:"\e621"}.fw-cut:before{content:"\e6f2"}.fw-dashboard:before{content:"\e622"}.fw-data-mapper:before{content:"\e735"}.fw-database:before{content:"\e623"}.fw-delete:before{content:"\e624"}.fw-depend:before{content:"\e6c6"}.fw-deploy:before{content:"\e625"}.fw-deprecate:before{content:"\e6cb"}.fw-design-view:before{content:"\e70f"}.fw-devices:before{content:"\e704"}.fw-dgm-action-invoke:before{content:"\e712"}.fw-dgm-action:before{content:"\e711"}.fw-dgm-connector:before{content:"\e6f4"}.fw-dgm-constant-definition:before{content:"\e6f5"}.fw-dgm-fork:before{content:"\e6e7"}.fw-dgm-header:before{content:"\e6e8"}.fw-dgm-if-else:before{content:"\e6e9"}.fw-dgm-import:before{content:"\e717"}.fw-dgm-lifeline:before{content:"\e6ea"}.fw-dgm-logger:before{content:"\e6eb"}.fw-dgm-resource:before{content:"\e6f6"}.fw-dgm-service:before{content:"\e6f7"}.fw-dgm-try-catch:before{content:"\e6ec"}.fw-dgm-type-convertor:before{content:"\e6f8"}.fw-dgm-type:before{content:"\e6f9"}.fw-dgm-while:before{content:"\e707"}.fw-dial-up:before{content:"\e627"}.fw-disabled:before{content:"\e6d1"}.fw-display:before{content:"\e626"}.fw-docker:before{content:"\e70c"}.fw-document:before{content:"\e628"}.fw-dollar:before{content:"\e741"}.fw-down-arrow:before{content:"\e689"}.fw-down:before{content:"\e685"}.fw-download:before{content:"\e65f"}.fw-dss:before{content:"\e62a"}.fw-ebook:before{content:"\e62b"}.fw-edit:before{content:"\e62c"}.fw-ellipsis:before{content:"\e629"}.fw-endpoint:before{content:"\e62d"}.fw-enterprise:before{content:"\e6b6"}.fw-error:before{content:"\e630"}.fw-esb-connector:before{content:"\e6e3"}.fw-event-simulator:before{content:"\e744"}.fw-expand:before{content:"\e61c"}.fw-export:before{content:"\e631"}.fw-extensions:before{content:"\e6e4"}.fw-facebook:before{content:"\e6d3"}.fw-factory-reset:before{content:"\e632"}.fw-fan:before{content:"\e678"}.fw-faq:before{content:"\e62f"}.fw-file-browse:before{content:"\e633"}.fw-filter:before{content:"\e634"}.fw-folder-open:before{content:"\e70b"}.fw-folder:before{content:"\e62e"}.fw-foreach:before{content:"\e73ab"}.fw-fork-join:before{content:"\e720"}.fw-format:before{content:"\e6fa"}.fw-forum:before{content:"\e636"}.fw-function-invoke:before{content:"\e713"}.fw-function:before{content:"\e6fb"}.fw-gadget:before{content:"\e637"}.fw-geo-fence-inbound:before{content:"\e72e"}.fw-geo-fence-outbound:before{content:"\e72f"}.fw-github:before{content:"\e6d4"}.fw-globe:before{content:"\e697"}.fw-google-docs:before{content:"\e6d6"}.fw-google-drive:before{content:"\e6da"}.fw-google-glass:before{content:"\e732"}.fw-google-plus:before{content:"\e6d9"}.fw-google-sheets:before{content:"\e6d7"}.fw-google-slides:before{content:"\e6d8"}.fw-google:before{content:"\e6d5"}.fw-grid:before{content:"\e638"}.fw-grip:before{content:"\e6b7"}.fw-group:before{content:"\e6af"}.fw-hardware:before{content:"\e6a9"}.fw-hdd:before{content:"\e639"}.fw-header:before{content:"\e734"}.fw-heart:before{content:"\e6c3"}.fw-hide:before{content:"\e6d2"}.fw-home:before{content:"\e63a"}.fw-hour-glass:before{content:"\e63b"}.fw-html:before{content:"\e69d"}.fw-http:before{content:"\e705"}.fw-image:before{content:"\e70a"}.fw-import:before{content:"\e63c"}.fw-in-sequence:before{content:"\e739"}.fw-incoming-call:before{content:"\e63d"}.fw-info:before{content:"\e63e"}.fw-instagram:before{content:"\e6db"}.fw-integration:before{content:"\e73f"}.fw-invitation:before{content:"\e63f"}.fw-invoke:before{content:"\e6ed"}.fw-is-connector:before{content:"\e6e5"}.fw-iterate:before{content:"\e71f"}.fw-jaggery:before{content:"\e640"}.fw-java-spring:before{content:"\e644"}.fw-java:before{content:"\e641"}.fw-javaee:before{content:"\e642"}.fw-javascript:before{content:"\e643"}.fw-jaxrs:before{content:"\e645"}.fw-jaxws:before{content:"\e6c7"}.fw-jquery:before{content:"\e646"}.fw-key:before{content:"\e647"}.fw-laptop:before{content:"\e648"}.fw-layout:before{content:"\e6bf"}.fw-ldap:before{content:"\e649"}.fw-left-arrow:before{content:"\e68a"}.fw-left:before{content:"\e686"}.fw-lifecycle:before{content:"\e64a"}.fw-light:before{content:"\e680"}.fw-linkedin:before{content:"\e6dc"}.fw-list-sort:before{content:"\e64d"}.fw-list:before{content:"\e64c"}.fw-loader:before{content:"\e6b4"}.fw-loader2:before{content:"\e6ba"}.fw-loader3:before{content:"\e6bb"}.fw-loader4:before{content:"\e6bc"}.fw-loader5:before{content:"\e6bd"}.fw-lock:before{content:"\e64e"}.fw-log:before{content:"\e738"}.fw-logical:before{content:"\e702"}.fw-mail:before{content:"\e64f"}.fw-main-function:before{content:"\e706"}.fw-map-location:before{content:"\e650"}.fw-mapping:before{content:"\e73c"}.fw-menu:before{content:"\e651"}.fw-message:before{content:"\e635"}.fw-micro-services:before{content:"\e6ce"}.fw-dash:before,.fw-hyphen:before,.fw-minus:before{content:"\e616"}.fw-mobile:before{content:"\e652"}.fw-ms-document:before{content:"\e654"}.fw-mute:before{content:"\e655"}.fw-namespace:before{content:"\e740"}.fw-nodejs:before{content:"\e656"}.fw-notification:before{content:"\e60b"}.fw-organization:before{content:"\e6ac"}.fw-out-sequence:before{content:"\e73a"}.fw-own:before{content:"\e6c8"}.fw-package:before{content:"\e6fd"}.fw-pages:before{content:"\e6c0"}.fw-paste:before{content:"\e658"}.fw-payload-factory:before{content:"\e733"}.fw-pdf:before{content:"\e659"}.fw-pending:before{content:"\e727"}.fw-php:before{content:"\e6c9"}.fw-pie-chart:before{content:"\e65a"}.fw-pinterest:before{content:"\e6dd"}.fw-policy:before{content:"\e67d"}.fw-polygon:before{content:"\e70d"}.fw-property:before{content:"\e737"}.fw-prototype:before{content:"\e6cc"}.fw-proxy:before{content:"\e699"}.fw-public:before{content:"\e6ad"}.fw-publish:before{content:"\e65c"}.fw-question:before{content:"\e6b0"}.fw-raspberry:before{content:"\e6aa"}.fw-redo:before{content:"\e65d"}.fw-reduce:before{content:"\e73d"}.fw-refresh:before{content:"\e692"}.fw-register:before{content:"\e65e"}.fw-rename:before{content:"\e6fc"}.fw-reply:before{content:"\e714"}.fw-resource:before{content:"\e660"}.fw-rest-api:before{content:"\e661"}.fw-rest-service:before{content:"\e662"}.fw-resume:before{content:"\e71e"}.fw-retire:before{content:"\e6cd"}.fw-return:before{content:"\e715"}.fw-retweet:before{content:"\e6b9"}.fw-right-arrow:before{content:"\e68b"}.fw-right:before{content:"\e687"}.fw-ringing:before{content:"\e694"}.fw-rules:before{content:"\e664"}.fw-run:before{content:"\e708"}.fw-save:before{content:"\e665"}.fw-scep:before{content:"\e666"}.fw-schema:before{content:"\e667"}.fw-search:before{content:"\e668"}.fw-security-policy:before{content:"\e67e"}.fw-security:before{content:"\e669"}.fw-paper-rocket:before,.fw-send:before{content:"\e66a"}.fw-sequence:before{content:"\e66b"}.fw-server:before{content:"\e66c"}.fw-service-provider:before{content:"\e66e"}.fw-cogwheels:before,.fw-gears:before,.fw-service:before,.fw-sprockets:before{content:"\e66d"}.fw-cogwheel:before,.fw-gear:before,.fw-settings:before,.fw-sprocket:before{content:"\e66f"}.fw-share:before{content:"\e670"}.fw-shell:before{content:"\e730"}.fw-shortcut:before{content:"\e725"}.fw-sign-in:before{content:"\e671"}.fw-sign-out:before{content:"\e6b8"}.fw-skype:before{content:"\e6de"}.fw-slash:before{content:"\e6e1"}.fw-soap:before{content:"\e672"}.fw-sort-down:before{content:"\e663"}.fw-sort-up:before{content:"\e64b"}.fw-sort:before{content:"\e673"}.fw-speed-alert:before{content:"\e731"}.fw-square-outline:before{content:"\e6b2"}.fw-square:before{content:"\e6b1"}.fw-star:before{content:"\e674"}.fw-start:before{content:"\e718"}.fw-statistics:before{content:"\e675"}.fw-stepin:before{content:"\e719"}.fw-stepout:before{content:"\e71a"}.fw-stepover:before{content:"\e71b"}.fw-stop:before{content:"\e71c"}.fw-cart:before,.fw-store:before{content:"\e676"}.fw-struct:before{content:"\e716"}.fw-subscribe:before{content:"\e677"}.fw-success:before{content:"\e657"}.fw-swagger:before{content:"\e679"}.fw-sync:before{content:"\e6b3"}.fw-table:before{content:"\e6c4"}.fw-tag:before{content:"\e67a"}.fw-task:before{content:"\e67b"}.fw-text:before{content:"\e67c"}.fw-theme:before{content:"\e726"}.fw-throttling-policy:before{content:"\e67f"}.fw-throw:before{content:"\e722"}.fw-tiles:before{content:"\e681"}.fw-transaction:before{content:"\e72b"}.fw-try-catch:before{content:"\e703"}.fw-twitter:before{content:"\e6df"}.fw-type-converter:before{content:"\e6f3"}.fw-uncheck:before{content:"\e682"}.fw-undo:before{content:"\e683"}.fw-ungroup:before{content:"\e6b5"}.fw-unmute:before{content:"\e6ae"}.fw-up-arrow:before{content:"\e688"}.fw-up:before{content:"\e684"}.fw-upload:before{content:"\e68c"}.fw-uri:before{content:"\e68d"}.fw-usb-drive:before{content:"\e68e"}.fw-use:before{content:"\e6ca"}.fw-user:before{content:"\e68f"}.fw-variable:before{content:"\e6ee"}.fw-view:before{content:"\e691"}.fw-vpn:before{content:"\e603"}.fw-wadl:before{content:"\e6a1"}.fw-war:before{content:"\e69e"}.fw-warning:before{content:"\e693"}.fw-web-app:before{content:"\e696"}.fw-web-clip:before{content:"\e698"}.fw-web-service:before{content:"\e69a"}.fw-website:before{content:"\e69b"}.fw-wifi:before{content:"\e607"}.fw-windows:before{content:"\e605"}.fw-worker-invoke:before{content:"\e723"}.fw-worker-reply:before{content:"\e724"}.fw-worker:before{content:"\e6ef"}.fw-wsdl:before{content:"\e6a0"}.fw-wso2-logo:before{content:"\e6a7"}.fw-wso2:before{content:"\e6a8"}.fw-xacml:before{content:"\e69f"}.fw-xml:before{content:"\e69c"}.fw-xq:before{content:"\e6a2"}.fw-xsd:before{content:"\e6a3"}.fw-xslt:before{content:"\e6a4"}.fw-youtube:before{content:"\e6e0"}.fw-zoom-in:before{content:"\e6a5"}.fw-zoom-out:before{content:"\e6a6"} \ No newline at end of file diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.eot b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.eot new file mode 100644 index 0000000000000000000000000000000000000000..cc8f8c3e1e0b595c935f088b718b081503657190 GIT binary patch literal 120372 zcmdqKd4OD1nKyjS-S=C!mV0ZjuCA`C-nZ(iN_QunO48lgI_ZQ2lFmZXWa)Gu5CSBC z5L!vt5fA|x6b*=ipyGxKIz+~eQAcM4-*HrQMn%VQ^wV+X)%TsLyuWj+I|P^c#`kmn z`8w&Ys=MEF&v~BT^Lu{Jsex}$a^hu5DB%eE;fTolZ?NQU%HBGofHNfWmJ z{YSwHc5<7{5uO|#AK$$0jyHY%1uXe@{3a(i_4Jp2eyNI$qWHXf&!OqVU%UH%?!f1( z@%zl4qgOUzIo^K$%lK>UKRk2jqVC^Zi_hQ2M`LFCio;kQz~|56RhhZun*E;k@4E@% zdkKB&?FaTv?+uUttW4+!+5VLSSRhEeLg>>1KDQh=bmi64H=lVNpIZqLlb2k!XZmZu zs!b63u~D?_-G`>HJ}jIU_z!$GZ}LCk*l2Y^I`PZy zcklc*Ph%QAUd(gP_1gQohOJy zq?=?a;;14w!&5Xa-GUcNaCCGJ9Njdqi|()=MM`u~Cs!<$vyqaVb7;28k-eRp>sN2? z+Cx8FKlK56NB!?co_Jz}7U~E5PA=oTr*YoXqz$HGkSs<&*-CbhQ?-ZlEy;wy(_$eW z6J*{coGA}e!;DZ)5Q7fxi4y|0smQoE8H17VGUaE3)HGysiWo!_4Q)0+6(S0Xc)(IQ zIb=IJ+f5eGO1R}Iv=Z6H?tOA|V(seM$k5`U z#e<8gmGVHTzo)ySJ=>HBqapJV*`l&17bTnKiiM(FtQLA`xmu|ftKJA*N=u&WRXy4D zg#OAvp;-!7bH$vTtCqZ??3GLXUYbV2IE2(eBjre`e}t9?3dKSW>mnQ}36_u@?`+lO zT|zL`Ii8mS)v9P_mv^dJRo)}C*sbGP*{=WWwhJ%3?ZW$FT8|d%j`4xO)M(ET$2*mxyjyl-o#R=YsZ_G%?09Q1^$HGl;ca?6 ze&u*aNB5PK4_cb7aI|x}8O!Oz4!X zK{r{=2J1;e>Csq(lcF6}w35e{LQ5%LdbPwv;MBp zmon^a{ZYCbeH{IS{u<{CkT5J)kyObFvW`4Zduuwv$5jv4g7L%#YY*TOc``62w zqbcs^m$i0x6_;-wZq@=3Bcz$JXxOzCLzTi;=GHdnSJTnXP%;_n?9BG`HVvOTH74td zrYXAIS^xKEZoc`MXLupuI-bdKV-J)>Q_&2LKJd&n*F1CV7{ZVtGaAap;E1!h>QfR;rLK%CM_15?4af5gMmIT*6*}+ci2g@ zrR_^fT8(Ec-m>C!rR$cQ#Y?J2OFWW@x$fAC2in6)>zYEh9@HaUR^In!uq|=i1GAAj z@I^LIK#<}c)odhREJcbTJh*&BEdMLb z*T4IlZ{de?>)-v*FIvCyVv64W;?rZl5WYgtCgjYY(~sg@8PY*YWRzS&ZXoMwYnpJ} zL*)Tp5of5(^AkZGHf;@zw0}AgO(`nkNuuz|NlD;%8J8o=N3Xo%;@N!{?cA|t^Qx6S z-Gvrcg~g$+EWw;)3$QWWu#4qFwdD4>o?ET3->N*&jmDM2?g(x64USup%ay(gGc>Lo zmSm~e>kX81;Yb*!3(a31C^zG2ln0j3tlNjhxn``iD3*orDH4|0%IW|f4$eYLqQHk% z2=#xWkzf;N@w_PUq9yWTr6Tft#NdFMBt6yc2h*g*R|1r(xt%xmr^qX7gcDprR;6WRVMos34}d@@O2@P$~L1dwJzn z(GzGuuPxI9RPf#*jV{s@K{qIM3~5;~;5{ozcP-1UkoAB~d-T$vUty&XMD^KD&}Bw_ESY8SwD@f_d}Mj_!830{yB zW>lFIiKdI%3}JUqbUK5ZAHR!v{YhDF%A`}tL_8Mt+(Ry-ajP+*g-=*KK2RTwF^rm8Q0RLNC>v{UEzu)W* zyGz~A)qg_Wo89^j`fgfeKhYSjfsKpP^xJ30V3g$H=igepCzv!6f@H#qXo{+6Mhg z)7{nC(cactEVSgBvyB^%<>UGJI}hO2qh?gm6V8CaosovIB{6D-LKZlkt|9<_2 zneAH-(vh#ty!hhG*Vw1+Gk*We;yJTNB*QYTs*SM_jTgxrY%3l!HwOnrc|3DGP=zySJ4nr*CS+a}H&fYQmug!E*eLsDrxw+o_ zud}zmpT2+9w%gG`80LGP*69nR8R!ePao$<;=WP4Rr&17`-?;AJZ%Sc&<6z5RW?A()PmMPHGUrbB~MuB7PQ)U9(o1=_$+|g6?dIkECfN@c)Ede~` z*+AeiD1}A{jfnNFSvvl`HbLmuj`_xkNLv?cLrPvKuIFEUI$uLmNdh)KC z)!D@HQo=UaQ|BhuKCN%qS}Oyq@VsJUR5%U zQK6EJiCUHI2M;$lzoR<$U)yu4=8lc7T{F6VZ2gMmp*)^))%7B#l6%$2)2z#O0)IGM;WR|vcPfI8i9BwWK0^=BLKmU$=oM4_*?ZK>ND{a^XMrQ2#= zF{Wo{qOD$STdhAo)1v&OP$>jc!NekXxI&p4!L-BPJ)jI1yK1$rSa(_shtK&?3ySIP z7+X~wR)PeZixp{0sk$%FjrPuJGX6X z6%%b<>(EduK5xcHrJTd3`rAz}ptY1*0x3EX$6qIgKaD<2KZ~)Uz?hFXIb_UhpI$YR2lvZ zOLcPw%nb!Sxk7vPzt85#8$w7B7~tSZ}DR9f|Z*#T|mz-?dxtY zuX|_iuKIUByEiv+|34(J?Fe@FhkI$eHD2rJpeJ_KKi5L#iNfl7GAhtN+nu&1>hF&t z=J++nr$9dk%J3z!x;CCqngD|2@(VXF6L^uE2qLH?Fn(0T7-Qz1I}Y!}oq*q>WC|l3 z?i9Fs^8Jq=*uQ?aYVze{lZZA-)9r**FNoqKd}?Bb>*-%p{Ew1S7!(T2&ojMv+3j^ur-pUy|1;)$>bqIV4E%-%2S*`AkLADjA;U zO29juRDVv!fY)W&L zf~fEY=Ignvm2)U z7^1Je1DA$D1i#opn+r=QxD+31yl#mI=t{$R9PmFozf6T~U8aiW)IUPcP+(@d_dNU@V}HKL{+xH-QUBwM z{(E}o&f(^qtg3RZ@pmFfyb$l8B_Ls#aK1rOqCKl&X3ZFDm8SIK`|9MrZ(Lkmx9-w)>+UJ%^W}0r))u9Q z>Q~cSy6d;D$Kq;r{Y_ZDW+2+uh$(QL4PJ0rZ6v^A7+4@~!lB|CN#wu@f-(T#!cj)c zftiL&XG|;$S-D*}0ypV6!LSpMq+|zJ!dw-kVbP~rtEEVF^aHeuKGyW!z4X)1?4=)| zoge)e|M-sgW}e_^^b@p`e|+c1m?t+)GD<{NIp6#xhFTi7d4cCkieEcRIr zTSo88N9IGnGGk(YSoz@(E8k*&e)vOnT=H%N2H(bRhzQtcx`nwP1RJ2kod9Dw^Vu?D zyE<;=F&0O#YxyPpcX}-ljPwzK(EbiY3m)~}{`TTkbg*DPRJ@W77X9r``)#LVJC(=;zxmDL!hibU!aFR&Ib@vUtJwGbxGu(ZIbbys;5DwVU7Lu(>_;7&2P158 zl5E1_2@`RTQ`cAkTZ*hIGbROKg<+b}V0!Vy5J?#TT@Ad2+x5fFd9FN}3OWq3*-$#WfnHw! z@l>3>rJt$)`23S6n`?-< z#S|zR@yh)#-GBc}7qCC~W1j~8chNU(un?SfCAF9&*CnxhX&@m<9d^OcAIx5`MHFdrGOMzh?Jiub~0iB+3c9_a+TEyeF@yE~&|kUwr}GwTeSqwAxC0q4n7F{hiHnr)L$ zzA+JwhGkLHr49kqI%vCQEnk95q)n_pvv~CR`F-FePn59u>~m%|NW&<|lk;kmEm;l@d4kBG3uFP7QshKXEDCO) zmkB?MHh}5GodEjyc_BK@4Ae$Sa?MGfI14%8%)rS}O$Dn>VH^G6Y@iZc2z8O*LC1#e zWKmibro*LV{Hih52fg!j$o1xGO${3cjtDe0hu+>`t?5y~@lrr!W{dUtT()7my%Da| zTf!fNi;otn)k6K@M4^xXN1JSQMKL#!?qBu&>bh#NQlOEhP_id6iqql13pj_dQq8pt zTY{)^mVn}?Qy60WG!iNN#t;%6j3y^6q=)Zl@dsRCfbM+u`0;0t*Ps2yefNFiKKc;e zAAj~yyuI%m?DzmZ1RNs0)VEUwV5x4z;%}&3opw1@q7xYq9cy7HW%w|#7CHr-n=`<7 zFm|kArc{_I-*AD_nIW2uO*Gc`kn&`fn7I(jP4@J3bQFt%(9_=oHmak$1H@ply$EVB z5jV7X!Yly743SJW1Rn^7u!ABFX#873!F>0FD37=$7lYP?DXX#^P6Q8@eyhHQK9jGL ze-|#gNC4&CB1uAMJy>i>OgQRSAEA#t`Y2sp{~4{+-$S?kt6^DsKom_*g#bOgNMwQ~O(f0JM=(i0U9wS+DW$kjJYl@~H2~gxTbpu4NLQFwHV2nNs z5}4&OfiC$O8(s(zH-M;0BukYLAj`5JATz$ulKpWAN;GN2jI&fQ2vL(Uh-Y)ejvxCK zmr!=I7=w8SBqD5*9n-sZ?Af_zYRl&B=Wp*Ucb5Bl+gkH2*``!7 z7L9~)hfXTO8W4#s#BYcl`xtBHX8`BNN#(c3i-@34&J7?HBUh@PBo|#zE)>}tBy{{G zyuXC&M}*T{EC>6&2#Z)7OL?}1ji^>e?)i7$vm{QArEsWxn2LsgROm*UZcn8mNTHi% z&>VgGy6c|4uKt4WB9ZQ+MO)(Y0^F0(B8s}ACRJsbq1n178>(ffr2x+_{4e`UWL*mw zTDzhobO~e{woiy+9vrD4=8+C6Qu>Q+2*@PG&@L7uX`DQX^P0gg#tAoem;Le@rz3rt*TSBo(z&5L+ak?h%B%$k$)N;fizv@(cCnMO>#q&y)BTLHvO# zCl%#4{vP+3NsEp-xVCm|bf^beg%wobFTlt> zANWU@m_Y7$ZEpck0A>W^3e2AX&u|1dNmee$@M6}G&T248XeMD+r;;p7Q+SbBpONH^ zt5;Pkxn@K=ldGmyPt}$p#93Kg*#+9AxtuE-EGG&h!)%J*MF1nf2>AcX&7cdAu*2H^ z%2GewCxI_0rvr;p8W@~{&TDu+f}iyPjqhiD#9gqHB61(FC%_TsWTPc&!*p0?Facv0U7|0CzmX(m zL!Hq%!1duVp9Z#Zcrn{)-PlcPs^t=kcoAv8o-p2z!PL`i|73d44nIX-)56*);?{4 zOl=3K5k=t$5}M3D(;2oYLc$qnjwDIkf)`QR4Y($4NYpym#^`}_|AnoQ%7CD7K0S8U zxv?yI2z?=sZsE;$i#&a%o@de8qt6xU|0_=q|N7T0_2-S=e4bsm0lV=dT=&z!ktO)5 zF`x6f9A4^S@(6i9d76H*)?VrFZnD66&+gr`eqya8t54r{D<80LpibakWSSm^eU>Jk zq#h%{ZQS)mK7fm3m1}uNV$=I=Od@y_4Yrz|E+Ic~}BUUB*1nf=qd&fmOY(*}@F?yVq@Aj*aI>kkyp-POh+o!2q0qF%lRzud_G2!VW?SJ z42Q!;prf#bKeCzBi!oURmb6*eO3KM#U9dSLV33E##$aa3AlVsjm8&X2PTaWThD!ng zk&CFMPBkXbD5BjqCxn5=FI_BO3cn2(4yTyOW`tiZ8>4(Iol(^YKX+`c&Ksg8fAZMo z1Vwg`69m|6lbYapMV?c2h4$_^)PH<5~k?)5eP>?Axc2Vg;G4hD2CuR_e$eC*hSs+$`0XOarGOYr3n0;pm5 zU4S)7T!SN7Mpu_%MCWnzLax|?EY>A^Ytsk~8X03qeX zh$?6*_z$=kVGCZ)%_QUDoOL^|%PKP|#W`8!ybqokfQI8an_-Up%>Q|Prun-q*XFNf z#s)T$+yGmHfYj%33bh>Wl@~xxoJ7JL`DRADyhgOZ{V6QtpF?&K=gH#t=9_Q+)XjAC z<{NHdKRBKO`}Jx14E-$ha%1E$xslvUK0v-qULilJ{pdR{bGr7@3!mU^=i|`neECbC zhsLq9qfIsF%@vL}a!B9tZ$3DCU}ooz?ak;r>fLu8+R`L)@>}k?>FA{wWK!rX5_j); zz&tCH2^%O}(k5Cd-$K=GSx(*rqG>IGNYf4+Ar`utMd#4Gy2FsRLu?qaSz;npXc~ww zK{G(WNmOM2fWVPn73Ep*4A5x?aUAGABo^AJ$~4lf%Elv?|J~pI_1C`oS6}?Xr=R=S zM;?FAgZJHW+sP9*TzC16M{b4Q~vc*HaJzhA3fu8qLyqv=r%uu<9lWeYo>p}KL zE-s~IaBE;3D%E1S>H%{th&E-GRh=K8*pUVHzencj@6gY55D5Lj07bBAe-%rC=V2ir zu3`i=tVKD^dHp3E23NoX-9Zo6i!3$+16bQlN4OBPGd|b@xZ@jOkAVbS+&L>43Z##O zBx>Nvs8LBl5DCUVj7)|q>nZ{rC5C(}Cm7Lys`Aaes@hRQyx6q@k&vQc3}$3Y1-%qT z@&f~lr#k39*~B6)1m6wWyVY3O3S|*^CgewW#V`_YUMhLh%Va*FSkzSBwr;baY#s&P zfKfmeX!-OtD-mou%0B??$wRd@QMPsa>h=uFuV^yg54RoMTRMDp-HN?1AiYS=gk=~D zRn(*4X9V7q9iA5yD4C$;j43*&$u^DZxVR99ZEQ7VMIx4~i9uzRYAHOY8yu$~*cE69 zu2RLtbD9P!K(-YBE^&!0i^Sm*hYXjI<_8!Ah5C%kL82hyb$OU@a#rl$1oy{Ze)ly*4D#z z(8WW8)ry~T)j*j+rz`@dQDKJVe_)6BS=>L|=M-KR#K_IfZlt-p8H7bkE*Xtv-Bb+v zKhVku=j2{Fi-0b`GM3dWtP$T|9)N7GIb1@gsyexF3N)o$E#@3V8R&x$r$}-Ytm6h< zsedCxp}cDky-iVU2iZEyenW&VhL+|{U$Zz*rJ8H=G!hV>`A~-i3?AA-mkr>dNOH8L zzDZF6P4r#o@fShwCw!v5o9?tZK1?HgFevB>j2FXrr(wTNV@!uhoM<19xj_rJ3BDVw zC>$e3fyGh0N7PConX9^|B9l({Gu?sC_CVW?%cu}uA0E1Tas9%dbcRL;J zcE|Qh{gsQaTvC5An%HM_`&`oe`6U004Nl=eZJ#fSVq!T}T;t2$e3PvS(Cmm{wPA!< z&QC(71lb;*(STqFIb=@Gii3H&1{KLRgbYpv=rIU6Ojm2c=13$ zb&B2#?clr?`kD;ZC0k3M^~xGj&S3NBTLc*aKP3~Krzi7xI_z2D(G`8};ePto;-O25 zmmKo{($oGz9v=#a*rLKAhHV@C_-DY4w~)29Rlr&tlYt>naexw-0vB)sbJ!dL z6@CWe9EANAyey>OVzF3DtR)BC1yf@ppz2@)!8h_FGsEeF7bmNs>#cM=7Per=A|rz0_U*ZF$JQ<9ZCG3K|0+3RL;Cm5O zSC)VoLqN?n-b2y0u-HWm2x6cD0Qou(U+H6|97sU>$>manZ?OH0*)I;1OJT_0&PuMB zM~5`4@*yBQoQAV&i!K?&t!rX`dG%ZTM=aFdzyv)$SA?;JZi zcK^W@SBwiq;rN!}y+b!_n_8;0-52YmYw7Yq3FOjhnVW_12|nx~Cn3C)rNzb3RBG9q zc*~3yLb8x)5~NT;4d|v|8(veBXV4f9d+`3+;T6Ef(w1XGdxy8(Fd}D%-r0h54*K&M z*p4?MKez~}@U1ng8V(^OC=c|&@GjEVuW>2*1+IM1@SP@s^sF@mOdlZ-vp8}Wzi=Q z=>({Fb^Xh9T`U$KELJGDxszl1@4gs0G@P;4c5yR9D$kV zqu9W=yuxdi7pC?5<);=*C{9Msd>haE-H0lp>7qC1%19arh=o*{!K)Aq6x{-|y@Kp8=QghxeJPAz`dUm1q!&eJA7u13J@` z`d&he$gp`O6uKbJ^-?UKN^kt~^>mn?_#|z)ZguC#u1A#tLyx<&PfTTPq^jqAqsf?3LjX0ObH4oTzPD8ANm` zI(Rf^%g9vZ4v>CY`?P_UsS*{EAoU2q8j^*es1Tqax}Ak-V{zg^SWZ#UM1&{|zA*tq zqm(RB8)SPTy)ZYwE2P~2#eJu0(d*uD#pMTQckjGl^SX&@Wxn1__bE+AA;4YyzCh&n z)|)X{!m2Jc=(`?V}aK#)>vtQycPD)=cAv;4yR!q znSR11{k0yrD!?iTSp|BMJxk#vf>W5hqXy~?4BG&|$f9xdYA2u}0n2Iz^7wTS_rtG5 zUVfQ&zWnmb|8eGJdK#~F{J#A10{4B~j}?+Y6s=@KZ5>n@47JSH03b09e@l;JOhLgX zuuj&1U{sd8H=+n6i~tP4qRO&Nr6F3X_Ah0zZV!zV8j=Vk zqvkVEj0D}~rqhUMm_}#IMHg*hiJ#ToO-)2AiEfquDGH;kd|36i1VU*UPFr-Pq8_@gS#8lk?ZcCyTSMP&@(MCH7zZ@hSIX|L zKS*cl5B@x$qnryAfA?bDJwfsFV<(ZMGOpu5m3 zDSc}uQ_p1P`xw)xe8#W-M6L*gCnzPq`bCCB(=PzVn3;nkgE`@#fdue{OGA1bp+75# zW|<>Sob+p<{QP$)7+|#^PJdctrV?13wSEr`WkXDl;$+Jn${CgnuBvoOi&L|gB&)&e zGh-oWS>H*&`h2YpfK5*~F!{;_s2=txSKme-?yZyG&`)BlBd7Ff->x+B2W!|^U%d+b zb|t#-_!!1DKT)wbZcRI+9;?x71>YU>T3-OlFdL(y}?Zfa5!#b6c7CP zbypufeCh0g{d;!-tgKlzvbe9Otu>p8CZgb61W)iPc?Y$SsH8=EBLHJ{rRafGbVwFG zE#XTM52O%-87Ufey&QUR*)KjV5BT;GITD8OeS?aajRBKtrJO-FZT>yTk27qRsyk)z$wzlp9@C0?iG~GN02i`f^DzhM57o<*D86#%LQ)bl57)H=At7;G% zn>wB-$8G9I7Qzg|CUW6)Hf*=1GvPMPNxSVWtAC4tQyeCk&r?wizte4N zTP;UDE0Thq-w+X1=z0>IrGYex0Idx|EKn?(iqaQVvd=@P4X>++b~KT4v+bRU=>4gb zqo!PLUm}X=1kxbJ;XhBW!x)H>3g$=H1JHjvd6GO&UasXfuO2HRaJdY;);>U#W1z}! znY#gI{KHgLq=`7?*ECe<%NiZi4?mDVQBioKp!8imPB;VA@=W3d!6&ZqARa!rWFTB! z)AT8#>)JGwM;fBL<*z>mR2_4F>_Mh#nMKv-|NK+WoqFekZ@cHN+i$z-%7X{CO|2SV zR;x}dnlPCQMn~{d;c&NU9=s8x^B(eUvIPFnwKyAeISe&6Vs5#=0^S^z=#B#2(1Fv9J-x#miFE?c!)$89fp2Sd3pC5!jKi3Cqh5 z^w2aXGfKV}ER6&x<$kz15MRzWhec3htYjM~Gn!RgL3mTYF7qnr6j9Sa`!F{a;WgVx z>lSs6bS{pAruIBV$(i)L0|~*dZI_VNg`OWIyQ=GGbdIy4F|`~~(&N!#i4RCD-sbpa z*^Nv?O-DiobGij97X@Yos^=g^)6A%)BgWv6p%X9<2*-iiMrxpiZGch_86+Iw zi=u;QUnE(kiis&$yp6nrVj}sdfiuCuc(ogG6B>aB$%x826y-@W(ZH?$BW&LNq#4SL z3&LQGk?AM3pim zMc}u9G&LF1NMJS`V4zuI=(=wq8P8=fo@+llPmlqU|JD;t)s}qvQ%e@V^!2}C$*`|{ z`AdKK;uk*uxzGN^3!gcSLH5N@fAP6zKk@NLPd)T!_aZfZ>&+~>oZht&<(-Q!SaLyv z4YqCuVL8UiHU=ADD)dGRqYc3(8*C`=#5RqAhM=O^64P8imiQwLWm6s4id8dVsGc2Y z{_uiMd0~vPN~k|D#Bgd1F^okv)Y%AQ^%@8g@Qc^dIUjC9whGmOOoOCkn~)$zR|i%R z)nOo5rUxr1AbeE#D+EexAV9nZoW3F36@oOzMuDUvGgoc8kgg|G-so8&+8#1Ing-_} zIi`t}7>b^dM0d-?_?}`{3}bxw{KZKa&%;D8(yBqB_N|_TLC$giD`Na{TvKLL<^Kn zIbhqU<-N7ZVI>-h9)+MsK~Yn{3#gHR$v?x%s6d8P1|tO7Z;VL9JxJLV1tW#zI5J&` z5+ODX8!8tBk}ASL+>ib6Qag4d@4%CCAbKMszD1T*fQ)oNjQ!sS73f(tB) zCd`f+6p*JErH>5;PX$Yk|93uCK2874$7FGmCOes4dUEj?B`$4gb^fZHO*p|^Hvw(CQKjjylgI?q|Hf7eVs*QAYWOg>~1b}mq z(+Zfta12j?-t*B!xx~0w7KANf&<-3@Da24l*;nl@tYc~m_Rp`MWq26kR(u9L0Iq0+ zZES)7A8FKTwa2TyP~57R+(Hh6rxz**1_vKZ$KwcKRn;=nj*&poL@1_0e%72>Qi?^f zD(rdDSaaAlOxwybVH#$G>66 z@c}%>HWY*wD^I|k4z9QrD`e7Brokn6rDub?c}EMXDq`-^;Jr0_WavUv zGe`Q``yw-R?e2}U*V)GGxZoyNy83$u@Te;n%o!a-hxiq~c+4aOhyS|Pxh zg+LCLVG1uCKaD}n@f)wX<|t^_YffBq;!RK?U-yQiS0B9^dZQzkAHM9;ix2L_ye-?e zows3f{gTDQgSf`7Josv-GX{co3G5^=tdDO&Y6FRcWu^jPAjQ}GMF2oxZ1K?Y%oZ+8 z5LE_X9$;p=(T`baJthuf1>%fQ0O!Png$(;v!7)I$fH@$}PBm3+%rt~WGI%RYEn!<) zL=9?)=+G$*W*)Sl>UuWps6~G= z3jyijxZb11dt!nUSl^aUM!jUdEtQBr(TyThL-q2hpvZTLS~MGq+KLp6g_~4E6T6jA zGM&?HporHt>lW2$Q#k5ipqU}F8!(~k>}D-%ZACXiVGi=_v>6o!_x zwPAdm<%9EN8QDz2HD_%;0C^9zydaC|Am?e~0`0*ck6BCCM-I?Ui!{W)%E? ztpBsIg7s*0e}l%FYK4tlY{bUM!Z8E|bKd2W#VhyB^krc_%a?H-NQu*4epPjaP5Boz zswM_5SyP1?0@)$1WfMd;g<;DqP`boxuWnV9s3?k>*F1)S|BrFno#k@ehOO5O_U4^- zDqeza%L;PCi$=H8`2Q$!gOz;&qZj5KSs`gdP*v5Y{*~huZmLr=miKnHAe?A#TY^ei zgsVP3N7i7xEJ3{3N#|%HI zg%Ukrgq$B&!m{^aaKRV2UXcx}G{8UVa3JJPbp|_cSC@69-KIQ0*4MF2y(X9r2AhhR zKIoacp}<>mI)P*Y1&DAW{8qDT3C>TJD=1|`{GtukLN0oYF`U=N@z z=Lx6?yl||N5xf+uWSlQW$K^&Fm5k75A<$<8z6@2eFV|wK(+64%%yM8HqEEHgA8%jL z`-=z?T@mHp`j3D1GaLry?#yTL?4E+-+76B{p;>JaV2EzDQLcz7s zRdNVSMBRxd5*}o95cFV8Bo%b%-Pl8OqR9k192_1F9!gTa{xufh=y1zyNdW5?_LH=5 z5>Eb!=jgTc;rAMtE<@t$e{+@pL!107&?5fjHO>R=jhjxo*20=#FuHJUfq;iKDz5Ff zu0gRPX(y?X8~495>$x50DV<;wPLW<5;XJBKS33#v9%0cNEQ z3fieaDiTIU00m-x-Ym!Dx&^2OLzw3aX){c{#&D;{d+@w)!#SH(i~%d@`|pacZqdgE zvhvl#`NKCI&gWNmEy*r&@~5)-o~8PjoQ;o-)6>$uGm8dC+*Emj9}3o=5GqTTR)z=C zu_1c%@G^BxUm~gZ3@+L`!BQxMyiAt^Z*wG4L&U+RR%~Q`kp)J2y93(AQ>VW1lb^b_?<3#(w~=Knr~ zWgo!rs`|TE;)gVHxbzh6O-HR}5(yiWUK$)Wo7^kpk# zskUO}f4Vx`)017jdT8T@>I_N}gI8O&6@sM5w$?SUK>+>bFj`Y3iCPp|1+am*)^ik8 zAy!jO#e6v{vT5Qtat8m{Utd|ab8as5>Fev?qdD|b9scU`INq~(vWy=OSXM#>Hfr^Gj?A&^ z@zbG{o@k^+fX5O4PP4Sg#=Uze*>hy?kqgcT@O5$Vpy@zt^uyIw^GI_S%SB9MgUM{< zY97gw5h;(4-P{NTRYB7jz}?UUQ>hZKsTW_T+=wkhes^lini$_`%Y6hbrP01~4 zih!ob%S}`h#UY7ap9m!jzJ2AlCOn|2FcA!r*B6Jl5l4tgdIZu&QoX)wh1#aG-H$r-8E7dVvp{^f`>4kX2u9h3E_Q`}}w`kM?0X8P-0m-XKo4)HcJsX_%dnfkPfn zkX7#LBCC@Z{K*wibAVa{qylD;wx+(alI}t{CecYnS(vSn&8vG>WMDE=0279iwj3)& z7E2xs0Fw@7tC(|w-gWuq^zh-s_1TAmL*)(JR(iO8cPEY3fBeg@&`K-jYy5N)hF|?b z=N)Kv|GA#Vb+f!e3S;!9+KpwfLmfE)BW@xQM-5~u$yDCaSkM*{|a^<6S)95hBK7@KN89jK6ab`bNlV} z&(UK2n}6HZ0s%Lru|g8KC{k!`O~CoZ=}AqlzfIPLi>>%qY#rtX>tt}x7fSO9uzKQ*Ojm(H$qodJ+L!q-z%Cn$xl* zF{u}{4`}D3>{&85okv#$uL4|-e`R0@Uk*@&BBE5~S^W^?ImlzMl>=<08_9tc@VECD zh(+pg#I{?qf}R0!?WG)KV!7`>e$|Nwue$2tUTADEHXKo~(@3PR5#mkAsq-nhekw?R z7W}NPr#ni$n9!-e-7PI^i^m3(jGDjeBXjkq_I&PJ@~V|CkeT>7|QyUFw(r|B2y7od1LMb_8W-i$2S{`J8rpnX3sQ^vukwuP?^ma>~-@nvzRHPZ-k|1{16sERu|{o*D6iFD*o( zym54Y2cISLGfG&@Cct1;KJ=85MtUnyQ9c#iQgxDTOvY> z4;;Z}$z*uvTpZ#0I6{U1yLxuIh-=<8(Rt*{_5azZK+oT?HGlFWpZ7)B4f{l)V+4*! zlLEQ-qYl!wkmrR#LkuAF2C)nR1CwGR12+rgz_2U6-vM1u)g|?SfvIe$jtVa1*DwK+ zPBBeZ+22iO5&IvpAF4?+nM@&5V1oA$Ol}TwJpd)9Yn-1x3GRed?hVr%VXC(-J>JzaP_L%C zHQsCf3#2Mcs;(HG5XC|~fWnmuoDHB-FlGl!u6dIzMg8KSkZGkm7bQ_j94NF?TW;G~&JTM(Lh+S{El6UHJO zVFu90_-1xTrH06hweu5Z*lMIdF0|moTd52^2D{28u_$3xC4*%S^6H zr zS8ZB*SdTcjefIWdHig~;dI0(4WQP|^B!TrM3$x;}C>A^_l^jn>@?s$5r2~O#S6j#8 ztP?^eg^G3AZFF!*RXDjAnJD}%1LBf!%UTgNsJ*#DzL}NN+nn#f(N02na-=( zBE9L_H#Cjbf6$SP34vUC-@d{?%;Z{w<)lE9z-Wn)JQ=Gk4_iE9yO;-25=2}GHu1oS;6r5=P(XT)M{#cTOgtXPJl-uV zut)ifUp<4tgCq$&H{?Q|gfOlMcG303BD9mNh(}`6JGXH<5m_U*zH@eVfZ8p2 zyZ#+Zs`O$a`m>cZ*JHE%hTYgqDW1A`f0^3(yj8#I{6eKS_j&poj$pO~R!!5uKEH%d zV)L`J?_FVd28)@VzcD+6;8#SjSe|FGJbwJineeSBNM&Pg!Yn!S^IM+3t)8L3s0Sk7 z`_hZQ9GgF`Z&Qk-hped8fQw-|QH?<&VGLoOW3Go4v!SQ*m`jfX+0`&DJWky}R`h6B zXB)mgAueDfFJZD&i25*U7m8XlAR>NCL0()?1D9nhH`?VTq-iRhTl9b$Gpz5oGC9Fl+Bj0u1Hj#mf~Lfc(W~+air{6yBB-M z@aExR#6aK`7V>qk|Bjd2$S26pYX5|1noNki^IKo^5_{w-PBCt$VUc~~OZau)_!8vQ zi3<@it|gfI-HaJ?X>2Ay`Z^c&bsT)aVd6Fa8)1^vjLGH}j9dR3VKCz}q;K=z2$Qlg zYYiNwEX=qxhzUht7%{I1N7%<;XgWee!O+H?I~Tql<`W?+<=gNVET?G5InxxPR*8B7HE!sa&`{ z9+kvFPIuz%uApYKkO&nMVptT1Iai6chehSl^A;^SZ_$)3B_%syBV-)#Oen-qG$bN+ zgoX}^0;SWcfA~+9h5YWYD1?Pno2$`mj#J(Cxaf(CMAMG9hjGo&l8WK>sP3G=buBs% zQ=yEv$KxVWj~vhQ`N@KXI~>_4%{?p5>`;gl6v}&@6qQ{1a7cXKpwO zIn^8Ijvu?~O39>`AKtkGQ^4+~s&UD|J=0@R$yP7EsGAq;r=aTm?koS}8y|Z51MhuI zbwYpty_flj^VeVd%IQyk>eRdLyaQkU^5wt$i_g3r0-w88F7VJ>xFBat9D+igsvmq0 zC%l_FFVV<5Xy8jPAS-}GI7nR8W{GfHv!MrVB*IN3!ogfX$7({$M6?i_XUrxJ$}(r6 zaRvVyVTte{65%9h1%g|`G(apqV8OK^8!?|3C*&W0{KFr7>+ins`A>f0V;_C;eGlA! z>n)hP>)M(9zmpID7!u;%e_KMl$O`e{&p_+_&Q~*?V-LNBK?XkXkJ|o^J^r7p$A1YO z)`$f#wN49Y`#>DC&P1@tL}3dSp%Z38Ywg~9o89;H zKC{)eH7ZtbmMzJ)nq_MwS(0tpazmB}uxw+44Q^lq0S8DRI5a~DB_NVOLLiqEl8}&g zl6%PwX(Z?29P-?A#`pKFy+6vMZf=`nQ>!X1L=cZ@=@&xn3FY*9jOq>+U?BoUGwk#s86lcH9O{Dc@`O&g*&qFWf(;(twI zcEcyilW@uKiudEVU~xXL+C`xqO^I2d{@?Vs&66KhS4cV?cFm zqtEAGSn9HefO#6`m*>k0WtRaq^?aH1-w<4*F4wiLFdO>%K;De;ZHzu*ke1~vbqyH= z=glvL*Ew;qOBk4!sQT%|Jd0#JX4^NAc7tpalh?*H!b#@_5f9W%012Q9G`CNv_k5Zc zoDCJin%@=h&jxW49ntruVv%xXRDe8M6u8isU(8ceyP5?j23w$`zsC0qwfBF+#c z21IJb1%}55-%fqbmHo`q*^QIG;F*8w!~0hFdw=tVth!5CoA>?m{O6Wj-}4W-+&@fS zO#jWsf8MtlNQToM#m?;4?rWblsjZ>txIt>V>uje-Z@0>LN++RIqn1D zOXAC1QxDe^3pM2ShGrwg%?V8#v!XEN02G`TU=)}HNtj9W9Eg&0u_abXs;~PKj!L1X zB+VRc9Ov1I#wLI=@B$qGt~H<2ZUw8U-n-|k`{w_Fho`Um+Okmn=&JdTt6e+K)kDkn zJTrCfT)lqo+^Xz@GpmBVA5V^)uYY?mI5Q&-miV(B4%)odr@_oikk*Ny5=Aml-M}o< z_Y2v-1Tb`MSFup97W#^P4H!mX#z@&xK{bZ=VvmMY5LPw(&Q9SAxKiXv@K1^1sYlN) z-Jd0(Ws_s+y=u$KhHhNA_Dw67Ei*s8{)j%jZD`|RLqB@v?22nxizGYj9!7C$+u*?m z&fIvrJ*r>7erRjIGOl00o;KQPA7ADkN$c-pMELM$C&xz^n1%UW1YDMOCDJT{p9~4s zEzkyf$YzRTuHEk=Sxq+6r4y-=3bp+_EtII`+Dl%xt#$ErZ@Rx-8t6}@VzIH&{uTt< zeW|`i4T{QKEE!8i)6Ib7w56faN~P{o3MeKJcmSc%>V~a4jOzrnAQKTjD#!_@Sc?$T z7l>2uU1FNkd$KL_kK9{+=7C@~lq#hdMB`ZSjBy}rIaTR&MlRy!$=^&V9Y zp}bWN%0o;Zvhv`Q2j>IlRc9=wFJEHh^w9r>|2reNT%2jCQ-?#B+$pUNJiX-7Akc;Q zo9qqrxo841RKNp9IWzeiDLSKgs#|lGOh%(nIcv#Gl98dq^)2XD_$9Fxg*cWYy2irH zlZnW3Jz~i4kN^h6XyCBz1N|xdYWc6fw(!%I450F52NH?7L^7EiOiD~max9nB?{WU( z|L!GM{IK?vcB%axadk+@L)BpF8m zlgx5@44XRmWP&(?PwvKW-ulS?eQ$s4k*D7J)SKRT<}_*t*YCf6$M)sRx=whIOVaA< zfi5ySJ1kKzH%>2m;q_NppV{*jwrtZW@9pqTr(R_XhllDFM_9DU6D8A~=*xvd=5jL> z$n_;`vr?8t*-+SAW`={=K0^ObjMr-8)%ka33@hA|@cE5F*mV;EpNIIAm_I>M&3ZhmOh%rqMA_kzWiYlSS~QD>#8*wx7b~ zO4W2H`+ynC2?X%pJZ7n6dg6WAVCZ0VqFSB!@{r;4#YzgntRgcdSZ1kuXfGO2A)Lv6(TDjTmQ1*_Ye1G*L_@L*9slD8yf* z&gwbZpoiJMKua8h$LR^}-P)Vl_uYBNxwE(2c>SRR6~kwn_uX^NUZ|xWdFa6%+qYs_ zS!2x@^(@Ak)^sM#pzhjwaTl4BEh~lws|BG^H#alRchL;Yx!{#aKZuqWDGb8_B1wO< zj2$aiKJ%`po?Q9F$|r6<)zQdUy-F&&W0Qoq$b8uin~}Kly4hJEZ|NIk3>m3kdgZ+B zpqA_y$X3fHZ#)I(jF3V>eMSnEjQC1I1}K+75C9N{W;#06S`HXF#R6e8E134^7!44X zljhWj*qRh?CmLPw_|9@Dn+z6>dT*#!%8d4f1}FX{nGKZ+(Q+-=SIW=tU0@v867L#CI49VJ1aa%wy;wmzUxOI|j-Xl!7u+ zX`qy0wREB!D%G30P<2J$y7q8rbbPA$?Wrr)4u@Ksb}#*Ut~tm&GcjBZHl~&g1cz6z z9{J~0+cvdAlPk+>Gk-JxuiuErzoF~~-UF1~7|HCK!{Sw-eWSymgS}4f3r_;@Y#d(# z7+DCTopUhVag>KJ^}SYOH>l2tsFBOu)v;T;al6Z5I*7C+a7U$VHhrB_7D@pLGjw17OXy8 zpP1M*p}v@{$&2h4Va1wA^`&dPV&Toao2VO}1KG)qli5RVla=b2IoU%vChmhyyk720 zM|aXq%=s&AifAaF=NzSh31w3U1wBkB#95IfBDF-&&~~vV^iUEfNRAQV7f;PN4F7^5 ztg2E&HqzNj&Ar~upjmN_)7gUj&)om&NPwR^n%YSrdF<4@5X>cG1d@h8vfyc|Km6gp zZYZC-yRb){pTB<)ecJC1{=(q;;=Sj}YTvwe>w5KJC;lFAu7zm%2Duh!wIMomig?t+ z+B2xnzhC=#?FFOOu3-+k-@Q(cgx>}Z+X;@T%h#m7tDtFHZ>_a{q+BgZm&9 zEpL3a^9V;WbN`tqBFX4C{hKF}$))H1GcHMmGkNptIg?DWQdej}QpU{XFmXijP2r!zC$o`#V*&&n zhJ+e4j`P1x5kGUcZH9Be9kIDhJ<+PyTP}Qd^wYeADP1Q}eNKi3TP(jiAt_d-H>JP# zLmztYmrn2g!1{ypf3;^%ESBu`b3icb?m!$8C>${)tjNgXUI@E9b^-??|8Ai$3EBfj zGB03X>~T(#^Mxh&>kmKt#}=iXaDS*hCF}*md>@GUNHFseV*DgR6=l-Zo}SO_yQ=8R z1S8SkutD$GwkHr0+pjZUbTHN~jmkQVw9QQWn}`HDaXSTGi3}w%C8?|faP2DF&pkK) zB_e|WuLmVK$fWV&Z{f%O682+P=LsCCooYhI*;3lhPs|nG``*IbC)8)2%iR0Io;@$z zo9P^vZ7$)l4r;&IPJq4(_y%hPLd$rs#?}f~9LS4ElCA?^fZ@Q5>IAjh4)&^5$@#}+0e{J)JayZbbD!lr zEA1W-BLD(zg>@LNLhMbl2GaHc{Q7)vJ@q`R}aF#bUYG z4}NFNYc$3zlba8`l(Ng>d<&0@vgPT7ld{5YK zQrm$kLYP)iUbrIII~JfJVls}OE3r01+ZFI1z5d{Jn>NOx{!{>LoLeGpj=|P3-s%nn zJ?WHN;hqe;n+|4(@eCTIQM?v`2H6%PnF9nN4hJkGIljv5)T1(rG0Jr~&&3whwe@#w zIQi5&zx~vU+R78F9{Az|53U)4l!o{jtJ+4M7OVRr;X*ve*GR7K zjkrWF$Mzbf3<1AtdU!+!x)w}O4RGm-JJvpZ@}{SrzK8uDd;lTRLl>WqSJ8YSI7f}N zo-Eh>?pPWw^S4m=4P$ zlIH4R=n{aWxCdaL^*h$AS#xU5sUwH??Y(Nxy0s!FBE7EEQ^J3bnZpelB9?TlC zsKxBz_m$$f!Zbn4=XK#q@S&L~{ah62D%lekV!@2-wA643)(lpQhfOXRuL7Q*XS%Xr zc7~I92}v9S5(yxFk!ivCQOrv1yZW+cys>im%=Xo5GwC?wO`8wz8d)*t$@`)yw?~CS zKC&9fduDAr8uBD*D7NiQTA&ClE2m&6hd?( zz!y^L$P1tS>|D*XeW7x+Zus)4xDm@_J)W$cOb+yV?aaf`mX#iD_82~Qh&c_8z(g=a zbsJJeKsm()2P38+^`=t^390NfsNuzkZzufz9&*%D-z4$gD)E|*qSR_ez0KN>+CN;Q zvN=$BSz@1PfpD`-7j#Hw3ucZbAUl>Xn;18fsilw)dA4d<3QV)wT#w4|oXO3~giam? z9}p*A=n4S#MFqqUP9znL&2m`jTC;TagcVN+>J)mDPGZYLVymE_(eaCrwO3n*}`t|L0t(H!&-@JY^l=>Um>)Pwq&d}vo zOihBDhY@^$&R=WRn02e&gpGurC0~&eN%+IJT{zvA=0Tjn2Cdk_A(D!3a_ zPc2upYC$U$eQV28uX|!EJ5L|yGk3M~SvaPQ)AOeZ3Fp+QgY(l|?1g*ViRXvOtQ>4# zE5uYFiFqKof_8%qkDr9EF}axNh3F3>Pj~K>R|?#S5nEo6ztjVeWA&0_jrjeMWCRPF zSuE@iJB(o6nlNhlR<$$rGj;XOmz}YLZ|b&3qZ@ZG z&>Dx(wOgWnwEf{>_^YY*G0H^R2M4N^9(0nJeZz2kgyByDWkItb5|1+twaILPFXynY zN(01Vm^EQ8VZ;2AC>}1$?w&o(cmF17!B^I)v{R$*}Kdo5-*>S za*NtfZKz|ZWeZubbBjay9ysk?G@LYZIxMu+l!RzH90bfGTolrJEA@#4bY-+97IfQ| zDCUV?V>MD<^~4hoGKB&QXGC`0e`9L<6OF)#cWE-ZF)+M5u!bg~Uqzc(@q996BNrj& zJgCf6>Mi`IQhyK}^Daw`><_Li1edD)(irZRme8psyQChbpD*NgGEP4q(N@6+c~*LO zTg4Nbv1szjoi3=X`xvAyY33u(%4GyHEJ_j5PD?pS}3MGebbGwrR_d@<=NG{R*PuHhV^S_)~r}Q zJvrD{8)*!cswKL0I1`42)>U_>*i zb^?j-iombuk?J5Hbp^io@_776Jl>4QAKL1l%=pJfeSPln_|ka%;AWM*u}N70t;urb z!Iu6yT`j9*X!sslkc!OxnJjwcArJKp%FIXdS!@K*;L07yGBC^7@$0mgxK<)>zEoRJ zJGqW%*KIIHy;Xa=_N4YMB3>Uv0p-)`?soN!%=eF6(39y;sEqYVmCbzm`J1LqJ^R8( znR`B^a)wR7tAOWqUJFn(83@hwxQjRsIomi(Poy}AQN5$ZB%^y2X5(4rqj(|~pVboS zWMZ$DPL=eemQJ3)P0*~2Mw%(3W%W!Jge!q&!IT5e&nv+BIW6zc<>}gx76DiEt0R14 zzk*BZ-d7ynG;*S&@}G2kbeEoa=G^U-veG{Giwl}d?|@Xf#?@455#d(WM}_L{5qY~R|fmHR7w1w=QsIMkXr&n=1fic_Eq(pikm);NBH zg}j+WIhv`&^#Bv`qPk7AdO{R7o|kWF)#m?Uy|@St%It@hQk|6-JHoiG0R8 z=gsB)H5s!a<>^+Z^*3a|lbJCg10Q{6x~tldTIf#Q8T4rXGC~jeMzU{Nz3BHDlXy$6 zuuz}jKe-^XX<%7km6|5%7D^9VaKhnFh}p86l!=5)=n$?|aD(HQJcBOfSD7K zU!pZMxgdG(pxH0mpI1$~oi8li?uW*Ev!U!jwl|wa3mpo{9Zr|6OOF+Nqxs^$(C7Nl z7s_JeZo$f3)^0^`ZJ4c@lxg3y;@r?#$)nN*7K>$X+j`Zmtp~R4U(-&XoVFR)aAYJP zCQK~ib&NGyq8%Z>Nik{hCaaUfHrA{7E>auT6o&*G82)`3yIPaOdQ2J@Ggzl-$+q7G z!=d{ND(nMn9@cRbX7czA%k^Ty)E_6b#GNwSDr+S+&Gc>@wXAOxdk~AUG7;BqD^`FV zu`sf18}xjhmBVhI&+Qr;^}v0a2k6DDqs*}F@&3SEHIP#=%g>PD4p|X>I@Z3;<0`Cb z_MQu`EJt&}vHp0WvC7OQdM5I&`JW|Cjgjr9T)JyNII)3+dF~~fc60j*iZ1<#phiME z>U$TVFyK;L^x=?d_C?`p!D)01?mHGNLPzqXGl9Gk#sk%QRsJQC`Kqty=H@Orf9h3U zwOKYdr(X8N`Ey&l{0y(5TmGHz^e+6VcP+ePQDo>cddZ>46TK!rj+M=Vm`DgiiF zprC0w<0wQv6NlL!zFtJ108|TRYINAsFpER?k;aog$?CiJ&>8GA3Ij8 zgw0HHa{jM36wj**_kMZdc@>=bPxWYJU z&Xu|Yyd#JM&cbfSY@=TP+%GrocC}pp*!$5>HP6i-g;}<9K41Fr?H#bAvwepN*qDf^ zt@U62oU?<+dq4Wg-gD@*-{@=)$A+%%=J?Hajr&4{ALk&H6jJTM`^D@xKu57F#R;+N z3D@sm-qBFwbDwM6!^tgN%a`p_Mh|wkS@tVcv@aVqBF;V?bF}4Z*41#|FK~AAH}Lh; zm6vzhiRUiVX-u}q7_vL+Z_=XX*yRGBz$*bS#Ec^yIc=dSX9l3OTK$)Yzx>cY{mVQy z%@5x4^>6%Tc)grAVKOK8`xU0{5pKcy_RP9gD9Bk)%f!BwR!iW~n4`1>PyYg2h&@kD z9;rs5Cl+2M)3s~mit(|L;d+gBY{?BoV;+DfaT@`$k<{lMjk?0D7NQt$yfw;{C#X+@ zNIErj&Yagu@}Z;-9I&VZ9gY93<%^uoUIBybnb=f1pN*alg+c?N(|&zu{3nHJWISsIY5FdBYR1wn;uV zf}wS@7LS>+I0;2F8jT>0>5jT$?z5Dd>weOV@FD2Ivl>E%e&1QVq*&aFonY@~L^Eeo z0w^F`8%?ONHyS>UDh=L#(2HA0eWZUcJokh;4Lo|k-#(mXku3?`D2Kh}wGWHz1-Qze z!f{2O^VU~6Zq)6XlkfXeJMb_EKKr^3Ow;{|Ug|N9d|T(p=G@|2{NvyGCwu7j?Te3U zMxrR8(z1Tahm{26{`QJUmr3WUJzKYI-Y5>=QdkfqkkiCB%x9q)+8f#XDz07@lSn3N zCvXEg)5!`t!VW^cDrrBA+~hQcZeZ>lLQ71eiNtCgw?wsL5Mk-_Kg!eNLxiOo*Ad^YT%WaU-8p7pt44>s?K^7BCypox&{de#iu zUN7aHdD{!0kPkjl%7FDp2*PiOM(_UG*X|7`3D=_F$weldS_hUKA}ruT|HVzEEd*GE zasy~{13(Osal{Go(}5iu;`bOMK1Q8)ww=o7q5@QQ%9$_n@g1pTMQ3oVClh@TA;QY% z&?KyMWJ{?1x9kK(s$35$On>MTdKzCaI=Ft z)WE8_B6faX-|TGjssc<%*vDQokqgO~)wO9lBbHcXH@2?_*{&`!YI?1U3@>i)MTF!{ z_eFvQ@EcG$PoB}Z2<@pP-gsI_x-Gy(HSM(^q7007v>ax(bS27FNu3eDn-Y{LiCyQJ z7+I^;I(NnAH-CQ9=Qnv;E%o*J)}<$&`0V^Ism)J(_OqK_l#6J*IIpFdpO1q9&A<{W zZ21eS$ztu3B4i~1FjCHgQRVPjsw0w#qM)@>%4K8GU?!AF65CD>kO9LcclfSI>7+V| zD5(!^EI@V|lfU?L4_9=(@^I(r&qmj-J-jyBGvHn|5U<23ke}VZ$>rL#-+BBBpRFBD z4fI5RWuS+T2UacI`%Bz=$$^6W7W+>XvS}$^l?K4PE!ay=Tf*VpoK#|Lvcsh>E}Qs} z^nwa4Tr%$x>;~bMvJ>Qzpb~i7G4eas(nHhteR@Fy>(a@mpFVl)DOb~2e*MyG?pvg} z#R-{|90Kgk;NHWXVv-;}(Npk(`+gfC%4)Z1jGbtZ_t&F?V5jBRddtusd2; zaAkq>V8QKFS3iH(UC-Y&|CMM7UU3vd~)!M58`6x?`EX`l!bwVNx$ANa+M)sZ1$d za6P{C^!7oxlicsRO}7ucg_=;8aR;(J>6k)GBxSqfF%?<l!ZfQ@ zJyEga$_(~qYmoIr&-CmTzbj$}uARZone^rTpp*)suvNwnKWPkZzh$M;Z+oxditO~f z`G9ftt#(-2q1bbsc4!mTNr?hbGJ*C57B=NP?wyAH!UAfTH)mU|F~)6>VX&W zf*2#n8+Fb@^urdg+-2_k6{tPzCZl_Zh~)|GjCMP5tp|u~{dM~$*Zs2zS$iO zoj-bTEd{ewOBglsQge*AkGy4|uTx9o^#-71rjq7ji3%E6m9eT+@PU+yCVKREG8#XT zj_HvM<$aOxaZStHIdL)Y!AS1t!rhXw^eus9$cgr7GY z>Y&R(f4~BT$YPnH-$j6?$xJt(JJa37)B?I(z|l6ny$%zF@JA+73DT7-6pa4Nezag= zhAGGE^2vm>WLY*%=A%HhIPckyfMba`&@~b*&?l_OYgV!?dqQR#8o8`Fg~pGpg(dkv z3$(>dY$*QAfA@EPwcGgdP~$FgWBh)bXiYqrbLkJfBM+YMT3%;V+hoB|k%o`KiHlAv@Ok z?stDH7?+>Irr1Z8%OFj_Qj3@N_)TKeBeq z60&xUA>Scop4a{TmFUGaeZ9f8YxH2H>NdZt%wg)?&WD#oeM?8D*SS2+n*YDY1GT2d zweIo3rM~DA=^Kg5ePe(zXqh&nZGeg7O8C33(GJrV&%(ick9ME-AXTo96J-@t;XB(; z9y+k^>djZISxLZ@ut_JI}$4MYANA$ZYS^ z9)P|Czd}MYC(!mah~@hYZ$S6XB4px7O3E{$l0gx>-!(V4eftML@UC}CAad@(xd-3$ z#(U4-ddm$*ui3x-%I#O~+#&i-l02*QERWNYYNIp=z39Z$8aeHXETC?lhaprXvl-Zc;0W-6S#Rk_j4DYAOZIk+d%1Wu0zS z`FGkNi^%RWceyrfKB*sja#2${J~T*c87-EAo%ZChOL1vW{mn?xX-|V!Oy!z=^^N1% zLZ>B}K9o+%041dTZ5&7!E=v16P94nP2CADv#YnS%crc)!sBdDMc*%Yf?N1MuE|Gc1 zD7bzDj{Vzi$kq`~0-)V6*QJq-72@JXf}6h6aGLN-@sD zI6cmIcr^+07sv*`K|QG6u6|B^46a3n?n4Axo5?;t|hoydP@CG|5l($?OT@QZ^SFw!2Ehk7sGVFU65BnNa7O^rWYZA)YZv*j#Q zkw}h!ep5m88VVVoE4;D)F?M8oQaJbo+igf+Ece2W2$1PX0W`=ib%i#Fvnn*AFhA&N zsM1iQc8)1)AdQBR-(C4d!f9D!`Xq8%sZ<|=iaJy^#80>kzS|aUfJ4{W z;+tR&YI-vqOnA}}Ue-W8q0533$JyjOKsW-Bu2L-FHPy}BfWb@xC(sj#8rdWm9uWRv z_Xc-wY)LZp8!zpu$NSQ*WJ@FKt(jy1aSsiGWU^wP9I|S?V!cp8udpIC#jN;Os6$BT zuJfaNS1;Rb7!WCO{izY5fxxyVc$A^)AmZk)ww|@H8os8j3hDIPRy+`nMxY~?4NO1+ z#P}853ZXzek=1SGXQg1+r4Kh*ku?3niexWg6yi*b^RYxIfYPzLBvY$Dvg8yujE2x( zi3iUhJa3#I&gy#Dvy{w^A{hhbow?07e}2*G?8aGNi#qn6!v7I&oGI;%+Wn{!Ulg{Qbggt3B3-=(k6H-Pe)YHOd z>q2kOb_rHLN8IPsj~z1YRRp?zI>&6EzI?ctKQiZh#h>Ew2=lCa<{98a+8_O)2=Ivb z&KExa=@&lufoI{CxZ_`uw~r*ArR@W8d#?BBg>=eCv0rY465%01b7uEK54 zG-8b&{09nf86?GXAO+7%BqKg!YJm(_K~fx)W=-MVN;pUI`PAuZ;-5oo%ILgOQLx3| zlqAs*nG~S9%oS4z8xa0+NDN1zmuKGtN{%zxfTfPPhF=L3rJAWJhHhv4meE^AYcYRQ z3#PGSKU>X(Ndl3c&cNR>pv9(P!m6ekO=mf?gfkz;Wme*|M-3}tx`K&R2C|q~Fl#3I z?lbcv0jh>6owLH~t@@VQfk_H-O)nIqz`YphggGlkfH@r8k*-wIV7R6G30W5n#~FX0 zKB=GB@~diBV_^CuM$h0TqtqiNw0ZB4Sl0g{mUpvwdSTpKYBPGkzH z{`QEnR$CbJb%X>JBBT-1O{mvUgG_DiH~VdgMN6Q!$NaO`~B^AS-Sp?y$O zAgzcexxcHS&1H6P0c;mQA^BAaw+tJ!Fd?F*P>`AgF=G%?qv%k6U)jtsy=)BMYJn`N zw2aqw%9@ELymM34cq)$=dy1APXM*q6X_2(i*YMPuwCPTRm&Ph5VZoF^bc1g?noNwQ z#uG)1K&Pj4QLnOMQhiV9sg!Aj3USIy2WV&%MFBwdQmTmX4Usin4;5onL%57EDq&v8 z+d}3AJL@u|Fb24NLATougs*VtN&T-j82j^2qM@^Upl?GXk8fCkq+On4#^+ zyvU@;=hB;eF?f+YbVAhWcVch#>wa&n2)}41LuYb@`KEDj3-r1HB0Z)ns)`{D9K|(p z1>vc)Co)zR7%#v^h?7!5d$kR}wU|NSsi9Rr*1|WRtP~-*Ta&rZRyW`y3@(R1^^|X46BRp747==AVlDkk0`IL`X||*uHEbCZMVeiA&TPwO4(H{_yW`9;PU}dA+Vd$BU50 z*l{9W!!u~PUS`Z=p*xm4F}k0OuRu4FjwIgcf5diYbm)2no&F_G$(YkWab4)9KQZ4! zPIjW>F9;{4i~ue5p?`rJOg|{$zOMU0563Tuk8c8 z9$(@27TMSr~a2F^(_sCeLI(5BK z7?KCzD`1;PR(h!&nfE5Tzu$C%;u9+zeR%q(t_TI=ADf}cJ9Z?7WqIpDQ7c?vFP?* zo@|{WU7I4^_Wqae8nE+EYTx_YtH#HBdO+HSX5a=HCm14V=MF}`XP{@mNv>8a^q|Bm+yUCD{FnA?<6X_32SeU z`m=ULs<}%^JsuqF&l#Eco-6S>c5Lsq0&2OP#?b4xi#B~$=OwngRKX{r}!9mP&Lw`OG%c#|$~(DKfr!C-jMuTTY#I$ly(O=+qe z(rIZJX{UNyil%RW)gya@@wr8Z4qW&NAG>|--#%>Sg7cMs(#OR^ykhzCR!d5ew}As# zKC@gJ?n-JN>5kHN1*tzgV#Jv3PwX&>V87eGs#$HW>q;F`pC$!B(bXv3lT@2#4-YWec3W>(E?*bo{t>sOV_yPkjOq33-Y zcAYE0s~XIV?%PxFvFn($W#L`91Y^V{GOwG+C>(&_{DSbVsQv91WtthT=sl4)snPP2 zH(hUxj6SUDBX77}C+-Zy3bi8LGdH1nBBe-AX>LpbUKhNT2vN9DVV#BWAZO*N=OI&@ zl}v3`%b>175=-->1h*$kKdCDXpM1z@MZvfZSGGDlFn!EEuQWCrH*T7?S#* zNKcf4jgl5Fmw^6{j+96DYa>%?xH>X?f(TBvQm-B#oCM(EDh~|+@^Dp(<;v{1f>f@! zm#3mI+!eJQ_uY5w*p|&Mum+bD>SDmMD9C{&dw8M$f{b1)_s=&=qDim6s zD#biKo>(y}a@neqi&2MWn7%lYJ52qSSC}q!m-m6FKa}*Kt&1delxpCh#}|*=>e89{ zGr%jd>hyIkK>SkkALGAfX2LPpg#1Y9IvP^l&raG;cQmxEhZuE?43vJe-*Mnvm?eE4LrrzAtU&|zF2+4`Uh zi-*b#;Smo*cnMFp)HA2`~m)qvmc$ugRk7|ojsbVhD3PdORQbIxck#1nTc46Dw;gJl`T|1*x>zVp=%9E?XU z{FJ{pBl@B9=MNvg?z+vJXJ#rD8QITYIDbKOU=N=-JbUbhqeregbRE5S^R=6=-FwyU zT|2hVY?|qI-O8FudueNIq_6o}BYppCjr6g_BR%mMB6I-cVbYPfp%WHNI%E-qJm3eV zKMFeqS*ae_SdOV!yQqIgtH+`n#i>%xsz{E z5#9CxvEnB}&8!Ik(`5~nqooMxtT!k$cjNhN-1df5jG#$UorW{wR6J?hyb*dX92n^Hg>yx(ul)SO4?mB|blWS; zrRREj7HY}FR_^fk4`@fVTTu=^kKOx(_N>~_u23!LyIDoTCyuqIO)CP+x74Av6&m&Ij6EJmz~qH8LElsYCQzjUA|eUr8F&S zYf;L8!ug~h#khf@%bliY<=kQ?As(K=PReAYXJy2I23YZ`heCF5?k9V!{q419 z&x$C)V{d!wBk-Evd-mMfbGP4i>n&$a-*oc$?2R|5n$AvTZCZ8*BH1NH=`?1sRBjFTN9O-4Oej4R zA|i6>?I}@+E<)(XnGhi_9cpw>wOgCJvYjE|d|blX%!4 z4Y;G>Nc5j*+n3FI2^2B|8D!{atA^1l1SktF{F}5=RfPQHhXEK%fK~2ca&mb%nsAw* zxgH?8Y*@5I_ipTK6{AwQwC)geEbShj5G(y5-+t7-U47aILJw0kTn85Q9yvX;No zAv;+#-w2a!17?U7THC>J?9y(~Zqm-EUu%~G%r~be^+JBdQaw<(3EsuoV>gPm%Agg@ zWTgX$0x&6_4*gRFVyA$oa8?T>y|@NhC9Qr=%Oq4rn4Y?>fy^*a%7%O{PhJGW@;R0C z=99B!gmHUhL`Aw20?P=9ZH$J7B&LnEUA+v3=949V{P6Uic||Kjx4v zr%tU|vvOs#84R8}bLz}tj6HGG)@)d_Vg0(bGb`IGvGJBKlWN|H@zIgyaI;$l4y+@G z#v_JG#33lEzSRAs>0jn2dX=8HFex;vojxQEZ`JNh2;$=|@(y0RKP{Rcq)$21!;f{S z9hFEKt|9lkx_u)ZlvdF35(lOSrX|KPjG%n6u-GfiyzJgDCZ}@P zJ{VLT!$8JZ5aZiwDF4ioJ}XmUvuu9?AvAKE41?;rg^PCG3G zDa8q@^OH>d0pAG+xh70@8AdoDWx`~~)8!GaedDViCJ^*7lK#Ywv%kIk^ywoI(b5D)jhj+Y~Qk}H8ng$+#$cXaTQ*xalP8e;xr#g|1F-< zWj>eR*Phdpi<>0eY70~Ps|`P|5qWb4pmF#b1*cN%K~apRX3XLbQjmb1>PAvbCUn@t zfEa@22GK?HU)3R~g&h6F}8=N8&8qblmQ-5I@)Ct0yzpoge zgn^8M86F+`^>uNXO})%G@{dp5U? zv1sX%;elRP5F3pmb_{5zXpne@T4?G7MRKlO)-{)o1q?qHtzRtKAkkoW(1b=`D&{=8 z=D9!=C6~2wv-u)*%v#j%ik>KCQU-LqguF>uQnf}c3Hf|odG+H^og1FL8f?Ij+jk`ZDx)Jq zgZ+I(YKRy^jwe%VHY4_JjEZM(THwcB8I5xe?J<7$D*7td7Z4xhxq<78o}F@+C$;;>~Ks{6D@FagMzia%3#n2w!Xq7$w+4HZlcpG;tOWvzI732Nd4Q+1ib6L4}Yf{onG

$4WW$DF@ScMoAoM|v$^zHFPitzEny8ZpbPMe?DB4Y9j+zfQJgu;dY97<} zNbLszbbS`aUTQ$;%Y%)c2(>xcfjY_y zuk-sHn*WhUGz1^$;0;%+U zqI_4p@s8>m%jemWEIrnUPfWyv)-McBnP$e{99v%8yKQ`fKa|TYFK((;^=s!q-DZsOdJYrm+WnDWTI>u1md*RF;4>^TT%9-8a# zO#_b6ZJ3W>6X$f;6iEUb`eJ$p#pH-cN{kyeWBWM7NFMiI?Xr3Vfr}>|d-MTf$@koG z_+Y(OD2W_)jLXWE6T~}DfP9^6%>zoiIN;(m%Pb8vhj-$kJMUzP!{^63vYCLO8;H}& zCaHx@IxENx08}7gWoIkdV`_|}F5K6Nc%pk#IStu|Hv=Rox5@djaq*L91kU^haNhT#Xu=|%8? zhGnq$YUnB}c z1IW?{{NGIf2)9tj06`iMNnaQ%LO0^%uE|s|xBHOlby@EI652cNNGz34p}K9mi?Qsm z6$wW9s-XyTww(^eyfq7vVAL&*w97l-a~EAb0bifrP9_Ly2RuQ74cIr4XxI~UrDUx2 zb#Y){VY)9c-mKKN!iaMd7}Iyr^1i6nwqM+I#j+)4GWw}cFl_^zi$On`J94P6X%+&v zA~fOJI-*Loc&$W4x9qF?%Jn(et!kxe4UU_^l%9+vk|zdG&l9FxCtDJhYzeeDeWCE| zsA_0Uz0nk138nX%RPyy{y{fNwmXkw@Pt8I=O7f7#Jfw13*3M-mGh=5&Qar6?deWKM zVU^bk{(ND!A6HBB7e(2oM=SbzicZp|EJ>SsrBdIk)$5f*TBTmu@$rwHK6UWGwr#6c z4Gk5Gpa0x1fA*JN_}CXe{)LZx=>5;W^NB|uyzBN;Z#;dk6W?gBzW%^X2TyLhZre3` zoE+(@t*Z!mNS$tb_0Y^R{2dw{li@b=JZwW236Iu(lL6%HBFVgU+P0nnA5= zxKpiAtxQdZC2z>DEW=xKI8WHF!H7T7*HeCPQ|(*W zhGrLhaUKqh$JMXW56)_z*S-eNLV}n$m;ex9Th$(QSe*m~2FZdm7RfNy!8FQ*!>mIF z3xrc=U~IIU-{}J1sGozs*nA@e{{ zHQ4>-&>s?mynU}V-q(R%O7wHYIygfkR!J(nJ5s~CDuUYx=Z`%pf^iwS_b zFiO>i%{*cG5s9H>)es81psL5p#Uz|_wTDf=hw!a0nKv?PSN4WmQhpbH{e7;$}~I-=Cbz|C%VkZB?w^v-(S{!qp5_Js$k zwc)(Q|M_^m90h3H+t^VZt*FXqWg$5gjb;HsWDCk6 zx8j<5;k9&oJ$^P1R70VKYrb3FmTy6bh+RD&_S>VQ2~@2@^@&TIu0Xz7j9n#f+DW#ad9^xMXq{##p!p z6?HJ+RE2ug;`#&2)fqSdy29B?(Tvro1$!HxHRJUXHG+M$Q||t7BxJjqu~guZ6iC!` zVBq^%xLsAywg@b z&i2Ez97z@{Q8ifD1MN#X{mt|#-xg|ONNlZ32R07%uCRQoRk9K5>6u)4?2eq>)a{XM zbHEo|W{xHNzUa8=D#p^v@a&1p_8BL)2m`4|YkS*!42R+g)sUb& zVEIk-&=3!CQX3xXKs^x1OYFdVNP|fp2G0NpB$rF_PNe9GGE&q{K*QrlsgR+;<&Kv^ zTtZbX*KyHh?tSTB;hYo4nAf!z)x{+rXg$~Z;F9^bt3RCYR|9ve4}PcnGe2LGdn|Yq z&i4`y=*P4#YQLlXmFRt+x#`;dVBr4CAOFTzH_{fr@hhKMn~Bk!4emSQAi4{)oB~%- zTNeb%1;_yI$Kf-m*X9XY0L|F-=YRHVzk2xK_H8lv*Bp8Ur&>G)l`^9%cW<&O#S#_D z#~pLL^C&l%mLOKRJWYzsUDas`P782`_6GBc49%1ovXDU@JKOn{tz-!!`PisHI&5&n z(p<#YXHQIh-8DPy$Z2fSn&gxwx@W-}h`iJEWN*VpGhUaZ9KTH_iLqo$%KkVwMTZUc z0z1h#TaP*%22a0(all-=>B?Cz4lTl(x=kh*-_Q!cPbA#);^0V)FS1H@OwkLd+Th1; zMob_4%fTRJRyIPM^dn!XOovTIgSh|Lll&NV3L+)iCx)-mA;f3Q;>XIuug2&NX|zFH z&l_h%q6o{N(8=TsFuXnfRqVi>l`#u{RGr0xAmPUlk6M*VTDr9qy(w;MfN_e61XAit z&KH{h0W_9+B^Y|k9tAIu#9B~Gu){(Smqw8kmOZ~KZ3Tibs+4gmIGXOszz*#VK{jIA zb|3|3h=J6RjCAgh32I$IT1#yRrm*rs(ubE!-cOP67FI#ZAzc(fa-9-kp)fW>G0x8C z2^x&s4A4F+z@!w!zp$AzQX~)ay@Y(QinhO(*^SZ1gW8oKm6H@@QLg2X6w)qD+WG%Y zJAXedzJX`3O&e(UZd|{5X*IxrrMC8>`JgsmF+o*2q!*hAP0%ahVu^$uRxf&2D-vr- zTS?-vP*qV-#JuwQpT*#V(g2~!nwKopLuh^WA%XN=l1y` z#4bHX-p9>om@A7pI4*{Jyih3$>!-4&OKt{zrP5{QI^8_}!u|6b)LhE%8JbR~m}E#w zc)Y4nn;wqiM-GfN8XK0oONrV*HVcS($Ld7Dm+Q%7rv`Os3L9sT{0=v9S9b)ta2Ti1GE946W=Qv`YA#)! zEjRRBkIEMy^{h1YLQ!Q(h0JWPDv?PnWoNePFP{D%<@D_v5>$DhjGq0`A;RC}ABnRo8Nbd|zxO263W30G@85$w#c> zh^@v*FI5vlKPx_o1S|RHF~-a@F{Nwe^1=Bp9^_H2J2;=S%FSlkQoqIXcx3*I1l8B& z%U1IT-@55rpB^6GwBzKa9qRha>zB(jWov%Av(Z|$F4EcLaMSwe?6+pWwRLp#_|~oO zQW_83CmlQfk{V~6&Jsjg-bOK#K~@=aQaOfRlS9%%;N%43vI#L5v}=c;a4`uxiK;AH zWvkI%TLMp*^NxH0g?A7migYN!Ux`B`;5eQ*mTcrowMwCPmr_@)-Lz|>5%;RAuih~> zP|A%KD)my2zH0sEnZYeU5Q~rP;?y{kg*n8~Qf({;h*_j%-@#|XXkidiPLQ|NwYKOX z65xDkeYe)vZpil|?m62r!S?dBAUg<10M4P9kkn-cgoe33;p_-i#qSvN+tj6b9PCfb z?{xP0=d|PJm~pGxj`r3xQhZRSKwm+HeTdyF<}TVG`H?wJkhtRoE*+Q1fRt8bDP-o7 z@S~>hLItN(%txxxY9(58u2~Al1)s7-ObN%cX*=S?cC#h5V3u87rLu2srS?or?Tb$& z&uv3y+@bG(qsL3Qdr3>lvRju-nBapJn+DQt3K+`xNxc+jD<69^e~0lbKF;qJ z?GEj{`u%pXrh=ntYeS8e)X1nB99F)QD%R>{x=~RZp%(#IydUk#kzjaaP8+EOM`{<4 zBQ>M2;Ee_Yqk9SD)U;r2HUzs?)o&o&sm(T(R~v*~e72!{MV0pW(!xXR$;3RzwSnG( zo>2n;Ui(T$-`?^5o|LJERM}8vFsuoJn?&fJ1ar_6iRK71 z5}$HN#$AV*hoY{Xxi)R;$4(J%X72x-bKKv)VgLSR%ieI0fF*CcRWd&NPwaO>J~te_ zzMIhBdvzBW&xpEg^D>8YUlQ(}M89O)B{5X3yiA7rr4e+(89^ENWB}|uGF&hmIz=oEEdhI8sJUMJT#L$=JS2u=R4{0Wnj0IN z|NBw-P_7Xd>cvaizi^EfI58JEfA4PJAtRidxr{te+!sbki|R)5Ux`3O3^^$~o=t|L zRQ6l;Ugw2v9STaYYR7*_n^SFmtSObt>q;z_b{Gv0cL)3}2>df25;aAEpvXwUX zdN*r}{Nm*;nC|8{KawkqY_D-7fLRMr^MoV6$h-zO>V_0G7Us#G!ttcv&1>%emNvFz0!9Dfpi8k!Au2r0}Eq{&~#BJ z{K%Xc6Tc3xk5HaHy)E5S*tug%cFVy7kNy4XQ&;#l6$^v++*02D_WqtiU)1ogx4=G&=@y4 zZy|6FF)hT1G|U}J%Rm?c=cB0=p}&P}PdQhIvUiNgI9RLc7WuO3QU-fLX-|_FJ+;9% z5xIHO-n;MGv+=gx;2qbR8TY|^pHi2&OdAf~bM;kk*t7Mzb4KJH*WdJ1XN>rwWBYiq zRh!roD`9}!#btS<{m>Y3pIU-*Bml~Vlj;;-FmxjB*I~Uy#oBiQwO!5jSV#<0=|Y{% ziKrPNN`ZmL^$kl$)b{hFb+7QIjeWiOoFBcMy+D1pZQZzQ)2?-E!5%K1nj9JGo#>l@ z9kQ8kQstHPXKfdpZ{7so+SMgo7dFAmtdLWy%<|>st8|24yGGY4g{{?j-O+uu#1gwK z3_A_6q!SW>OovwJi&~%YMeU&5A0;trx#vFtI3?(d>TbV!yz|ls&#x~~-4{yktY{A`L%}3wYklr)a?VBY4)qRHF2;TqKss z#3H$L(|Ov)9`a2Zq=t@@rk--fYOioqatZZ|aw%n$W)v|^hxS^UhGyfh0EzblcL$FM91$nBj2e-tmqjM>cKx$frN@ z>5qTx=RWlQ_r2pi?|9EUpMLah4?Tz&#NAS?B1p5@V+RlH+q-Gcrae2hukB(fox-nHxD!9%ft3a5`>rDU(jRs=w8$AU21$d>7@bR54!j{3T0Wj)Ld6@ropLteZoHcz( z6N;o8tw6w1>zt2$`Z>cp|F@?}9~(EohJCNwJR)fH!z}%w4cv+?{Z`p+o<`o>WHpsC zJhpj{gtAmN@4DTUcirle^AqMg_Uo~H*6nu6I&LRpo+IuU<2`9=@B}7b!%yb;=J{Xq z7`Mv#+-ySg>vi6c4w&+o*P9-nc@SY2`Sgs5lF^6U#yQ=Jna2oY7^uA*w|suH9x!gy zy>4UH^v(ZQVln2;vVP8O+zwWQ@8j5sjt!)qrQN%j5f&?Xy}ONn9}0%F;GAZ_2x)+- zWejF^AdehXQvNX;lMuVlW6j2u4<`u4tpr>q{t(&WBnn$dCkDaRqPbXDu0 z^5$}RYq`9wTxKeA=AujJ*?bAUC-_Hy<yK%9h;dF_y}5zdHP5W^AEfGXa$MkEC%Av!98L^M!B zxJ;^};LKU*@DRza;FWJmlvr{MvQOT!a#A9B$j~|bbi5|Hyj)T8(>W{>Exclf5*nm~ zl7eJ)XzK|~6F_!Y;$-rck0}Op_RE<-cn=jF0sD1)b$9h% zy>Bz!J>5M^&)PH7zzmkg0E2a~5+DEqBmsiJ5L`eK;w~-_MUbL4T9id?wsu)^v|E;C zC6Y~9vSTTx9oezs*s>)(#fdFPie+1l9XZYSKh*;gmi>E)^OBbbU@*N@SJ!gyx#xW6 zJKv#wkl$!RQxR_76l{-H3!Q8=oi_luZ6I5Vu#$UZHf55?rWvlt{`L1 z2bb$N$rAk>E@+%6ZJz#lL?JT(&>L|Qz%mWKbOrx{hKoU*MlyUFh!M3bew#+Lmi0uK zmVLa4T<6R46fj-79QaRbz*Ps=bw)?rM8MzKwr< z$}gRLq+L)qMg z+0q-wy)=6vmmQM(A~-Y|EA>VCC^X!x50z`>T4gXrpJ2-I)06|dEDUHT z$H5irHcD9vfzScHZez@-eMSQdwTK#TxSdH-1)YriO6l6(*Dk+(&+@i?Z`=C1-iJF| zh70bVsb93_AKJ7sR7juMxZ#x>H~iK^8#g?(>6e~R_v=sG_rMeS{p!XW)t1ABBe$TE zdVc=UQ14T>+@{XodavTLod>gp-}QO*u=*nPD~GfslIaSEyrD{ zs^_LXNsmNqg0AR5f~AwWX`BY{HI0MMym80&pM3Kh-}cPg_N{C`wBt}AZ?l+mh_0js zIRqkHs))3G#qZjnlN?ADsrj~KnP8z1qc87zJU)#4yx4Uwe`tvcnCGO?3fOWn^z3l9 z$==`~^*=2;WA|6>OWu*ayu2s9DM13X8n*ib$Qv;Xn1R-8NX1g&7`ZWc1`#qshCYCP zR4y_#YDw$X4BAk4hEk4DfmGoy=%OU_29p{N2zV?cJ_A}bqLJk8$^{e>QQow7hGOw- zEdG=p23Z=K9UqCP7zaCx~}wi`OFIuwmR--4zkD-qld zpOd_`2iR<-2=-5{3lLTB@su$M{m64q>BdlynXgr;%+;9~?`^t*qGm$VvDr zhfS3jnfYflrpBCezaOa z-zB5}!pFE^fBVDFefIdqh1q&M7&UkA>KLKuk5~mh|1TOuNwBgFA3mKCGiY6=#lkD6 zAQtS=;@S9RI!fDgt-lJDXHrpa7)D6U2+ChESMD5uo+L^25r5j)7#pWHv|& zp@V}(n7^iakZDFiM@WT0g4(Fh&TnJ|SQKU83~)e6PeO*Wuod%jkbRMRwLM>|Y0KvkSOhA)O1QBtDWG%36AI83 zh{_eU)2J5*93x`{N5|%HPsD>u1OnNcNY{^!vUMhyiKR#E{eF8OQOr)9S8BK(D}~+c z=qTd5H?0f}&z#K{G9$~Yhm{c;DArGrF+FV73%879%9*KDzL^ZD@}TZdHnSksb7m-# zZ2%FVqU$#kjdU<(c1$x7l{1=qxL8gm%SAU)ucP5-p&CW5*w=yy zdDA!B^sAro`-jGy*j(~K6{^=_u{S6hZD6y0^Y)OscPt-s=0_s`f~#7shuro@hib5h zy6wdI(fLqpPUgKK^PV+OZ2YUxalE#B&1<=|58rkB>FXEhgYC<3`GJ7Q?UA{=L=Yi> z)g=;mPk?e_<}B(8BpJ$Wx;OBj$Z;JX{D+ zRUPSlI|9jCtouNLTa9028j%p}J8uc_D6J$ujdm!O$kOll;{`PrTR*5=P*R~)@c+O@ z?qSOb_)_pD%($|n7-qWm1=zriOIg;06M!Yoc-g2&ZluD=Gu^ZV4=uZ5^Jnx+Eg}XC zzOUu4$c}wSg9O56C~>rv_PN;nXF;QAP8`OCWRTfXDo1D|#p zS6`!@=!Pqw4qW=DfBbm2{_Su4{=a?x^Pl|KNB-G|KKN7bc;#jX~ zVDEYgmD7p1grY(RnZ6Gm6rJ=-GWKLkQMVj3S59ANRFc*;@9;oibo8CJVzeL6?36X^J&N;dmmS z5j-*?)rWx~eYvxxWD*ILus>2R(|9^nDdgfruDzct(Oobc2>Ip-6@588b{0s$mhjV< zSVkD(YcQl2VNId1h7H1~V5*qBx-@-HL1chc3H&?oxD0zc91PRR+&_Tfst5gvA2Eat zD`W=@5*;#_*;v7FwfuihFJ78pnlyS!!~69AI*5@SivqU*gi88>%_U+EMxfUrY`{Ad zqlN%Zy|;wni5nDR`{;afC*-T8gKjY59yZBPBo1*SsAfkTu|jI)f5;)ABljudb^F$V&WqnU^!}F>~P1Mt@ItY%|xtkklgy(%|tHS_A==$)8ba*IHRpvE{Dr>{t2g_US2eEz$le z4XYBCVn;w_nErM>>!0{7B04B zNGu`At@8!Y^c?b1=Yi`pZa#x3wyT+0mryJ#)VnOIQUq&Bbn%j6hm$n--Sf#j8UM$x zI*>@5%HRJZM&W2)*BrpV+`ebKr;CC9)`F~n?U{+`30PP4+TegtREZF!+7@kmZCs5Hh(YY9 zHay-5)gNT`Ehx(MYrwcRirbLfRoip-8HeKJc#Ei!9&k;S@AUFv2}Vjyn4 z1t~5HwSDG!LiTA<%wd^}F&0nZ$|$Ha(x^ck8$mT-bxDunyI_kWeG$7TcoQb+7Um*& zl$64y6>YbuK#HeSG#HQ4$z3vH5vdX)jEg{^i3Dz>A$cSq+Vs+fQN9N_^&fl<2*acQ zYrdz;+WX)8iay5uKYcC?)`{J_w{I_(cOTp>5+YDqw(r^wNpN|M&{E!5-jGbp!(K}? zr!!DjXag@R895(N+C`PBG448*{t{TN2_4`cdD~lAWuTIZ_I?OHnkitOIr`LjZX$Rw z>EXV+D1dRtZf1<-B;^EQ;Fspz#-GLY1c@o1Dg~9X>zBV^7~9dqHYu7ghF@X)z*t52sUl;qG@6jL7GV*7vjRP@b zwPN(X_m`0DETeGN+Dw#V8|SOWi47YzY(IE#EEakL6gQ^k2+MY}H+CA$XQlTwxRB%|0| zA=ROFPbp^?l$es1xj3fMgOBZLr&1&F;b_Bhg3f_+=We>`h8wQC z?(pG#`(!*UEp6JgurNPAGt+2PtLM(2g93Ha*_+PZeCCGJH$a2B?)vM{7d(9YuxH(* zVUkqA?cTflrSY@0yu=XNv}F@1yM>JlD9FyQpU2UgnM1Fy-56;gT3M}kooamum~5at zjj@2;Z+sIuFq>f|v?uu?Xl3v*R^%~pwfr>KezRH1kk?bfd5|so z??d)^iJ_uvI0~cXp@|);zPpid8uX1qFe$jMGl4IjD$SPCrG}C5m+d2wNO87QDjq16 zN-H^)s|3+y&G93DRJvlSu~L0NKSiI z(ZFzC{3YIPe=^GC<}WE2&xy@|Y>cU96~{Nq1DUV0cDpghF8C+eA^8^WQqmx(Bd;nV zkYF0WT{9A4aQo^*yoH9d6QCJZ_9cr?{h&^DNdWg^_ITncr;{q2LaeqSk3bdls zxn@b$1$Ez(Y-Io?6RG=Nuk-{;1%%CX1*D2f#RkKfXgC`Nc`bb_36sGZDFy=3d8)F8 z_v3Lo`-^rcW*XU{_*NV3EGKy&9*UmG4-KxbIrNYq89L<#OcIcolZsuazI$v-HJsR( zd2>PkxTWHEl|yl=gKdk_q?mQ9p|(Y`;YcQuLXuMyIkgx6m^uGW=6nJdt_spTv%HgWEH+ z_EH~Bnx9So*mFn_-bb#yf8{y5pxdUfZ0FdE_iF!^G+!3ooR^?kZk2o^ae**eXB$8M z4QwU3a=D#XeKynoUdgo2t~IH&U)tT(uQq<{0KMnz4itFpOZ&~&8<{@fE3S@rGQ4cy z+g$x|ULyWiOT)$DaB(W0%~rFHyRXD8Pi8X2OR=K_Or=ydBaIa&u6q1O-ZnKSPV=Ww z%ntt)??nT#V9la(nQi0cQYsh=M3XgiTG&tQtbCxqqu4U}AS632nmf>fBODB#4Mvd9 zvK)~$4qnIjrK8c6rypTsm*!G5OANl2$5en=W)|XIkP2>!EtbNWaEaqL=tvT`!X)7C zm$NAi%JWddd6+XR4sYblvT?_CIJ0DFRE{w72F@&18k3{Te1U^Y$?H5e*R~1Cp*x)5 z?YzLbMMh0Ohb@=o-=|Pm3Gx9p@m_fMRr?zA&c#NjlLNHmxc>vML7=}o>kV}9Q}HWQYtQwseg3uAZkt$t+sdBXH_xon9rX?ASMEFY+Si`ibAN6jb9`>k z?YFJ0Kj|*E|KQ582u>z-TOqC19hAc(OU`lNcX$V)?xPQJ$d8WX-)q-N)~b?v+rNGr z|I|m#-Urn4-jmA<3$kAy=lCu5`yTci#!84Ea6|V*6OVORX};-dr5uk1g|V68Yv55E zzLhy;?&g!!wktS(Qo&;g$4^?w!XzV57ABc~S`O}Dz&|$97|Lf;E}W!roxC_%C5Z^y zGeFK>Myg2mqHS4E4 z?%?z`yZ6JbgFIc_)hSJ7TLX#oGYR$m#E(wJljX5z57_0gj}CX7UB}X`==RBI`W@rj zcv6`xxr1n8481q4KAe_Y2nK0#ZR^@~U3#+mv^da{zM@e#WmtkX5~(8>PZq^ij{S`z`Zo^C_p7f*};X=>O!*M3#i&cY` zDsBK{CC+70-ziv$(5si6y^-{Y8i|+2b4yD<498+&^?a$f5RQFi@1&d9Ze%707x(@u zLXBS$c+ES9FL56~hr;e%-8-flRn}rgDw%827?MEu>L761=h8^KXCBkU90DALM)D@d*9CGE!}!8mzK&-(0nP5 zs!D%BuRh9STgc4>ibBF9syI=5c0wmD!3eeuqrbe!D?1Ya@kAqIJ;m}bNaogH&imC?Bk+i2ga)_3+E-Mk4W ze0wQ@(}EORI#N!za@8RpHiS}aS|4BvXfM-B=UeF#CKdcj3WWXsoMA_44UX8R;Q*_~ zeU4d5*#6Xx%|~~2mP(a+eQnIie9ma|-8O)cM!BV8%yBPGP4bu$vl+A_qk{W5c(+u2 z=u~~g6E#SfWM?-hxgIi0NaF}2Q|g$oId8e`+8vu3>z7WPSeiW?c}{6>`TCKszooOc za^i^-nf^2?O;vZ?kL3Ym=bFQ`@u6sN29tnF^(F#Pz+#N z_4^Quusvt$%BiA}#}cYV^hgpL;9EOWJQ+E0a_Muzyp}aVY=D$V%Wrw!nUj-OXL=vz z%-zVP-V1+o_l-ARJjI`jLQ?0EcOANN1s?RSg{pt`tIrId8%__ucO)@$|vF}2%R;vv~;K0?Vkpkk% z&kC38rP)R4u~#NYfJU%JxTc;mBX{jQ^oolI_HAs{*3a+VJD(mN%-R>#RDG~sAN=~J z#_@xz| z0e2sajF>nU^_tN(Dt5)q7)|xV_kQ3#PpQs<-d8Gz-*w=!D)+wfjC$`Id*6FTuAO(^ z`JU(DA7+U0=OnvE9lsbbgi0V`2Q>dGa4&&nKyuOuFB#T(()===`E_MF=d(%^#n5J> zT7f?^k{?MWE1Q(9TTJ8r8kS!3w|$ivQen&l&k>@fUJ~aRV~S_)!r!P8XdrN@4G@8dhgyuJ#QFk*UhO@MmRH=94+kK8_f;>{(tCc z$G-C&Wn^)Tp=I+uedUttGI(BY;qFUQZI6Oh=8#hG1rA!ivK$%MYhLwpJl8i4~UIE}+ zRJz@9%zR@am!BBatr?4m&@4}`Pe$x;mF}4d6)hnBjrOTBs$qg-TNsAVdmsLiesX=f zo`%C!oGx|o^5F_h=Zs`ze!5~BL&HtWS;~bPx#2=4e}Iy5!f;OT<#Q}(uMm$Wg}tKH zC8b<`1}y34H76X>7UbSbS`a2-Fu-j^6$Lkjd+2xYW)$8Gv&?5uDu7*}7X7>?WT@jB zE5~VxZ1HMtId}Hv8%~a9hbODU)u9mOD0LaMIHmlE>(O^u5up&8j=h$)6C8p~)|?Y@ zO*|w*(sy23Pu|5Vy5jA45QX?j{m<~O_kQ0OV)<6zO<%L2HR$Beyv|G?S?E7{ByJ%v zpN_-_(s13Olti6U9&bgG@kZ24Q}iBBM@#A9G_4n$Sgueg#*&tkNav&S0Z5{Lwzi{j zcVJ?)^UlH6;^DOUx-)rau(fc+dvrKc6!$5@4MR8)1+Ng`o0&#i4B1dS9f>+PGEOiV zDW}qeY^LR7*dwBe0)c!C>amlKWCL!x?}Pql#^oDO;NH^RG(I*`9n9!Z5t4KmG#Q!P zs>@Pe^7n=(pOXTewfJeA%t56o?hPm#Q984y$rXiof{P>M$aH&xpqr@S%020T$0EXA z9NvA;_QQMgE1l|`V?^!r&{QcAOoZ&{-Zz??$7TxYR%|e@t}kYybLWrFPqsz|5jtON zL@YOx4-aH-jyuuTriz)Wr?4Y3{-|v-scjl0CTetRV+gVIOJ}gmGC;*A6ZVd-?Vp}p z++>I!T(+UZaLciA6Hv*7Iv_NenY1mT4eD~xWboCne(L+AuZfk2B_gr%{_l^iD>;z; zBJ*?KpP73r((D)PD1+8f*D|Ujfn+di9UE^)aJ6uI?>qX`-!9%>GaoxU-oQ=rQJf0fS*uWw{Xwxy6wAz9Q(bu z-D*U&BP8Hs&N?!+lB|$ETGwg;D{z@e6G6+=mD z$^eN_8ANjyp&iT~&_5KM;uNg1wa@vp^T|i9Ju_vTF>1zr?!dxabAD!MXlA}Sw=hSs zLF1rJzWcf_N%K}{g~Y3_#jR&y5CRC_)F_lZZns5)ZyH_r&>8_?WY4BqHU{`Y0)18) zKl(rDS)fruhRTW{_5li@^#AL|^zB>s^3~_2PJM1j&Gr7(b=SS~op+o{^y81;^~UNF z+)n8ZBONP#y8Di~QD_Sr7WI&|Q3V5cpWL^1^Cl#K536|Op1V%h%&^KJBcj_Yhg1;v z4+G0|1a{UhN*U#o_<{KE0V{+X6OddsELbf<-4`LfFMeE$z(_|Y@fIq~fu+NEiSf8Z zR&n3KS6saF!mYQEI=KGCamg!f=`O6VXGUu2#!Ninl2WQexJcFLNUW!>K*z-KtodT4 z#2k6+1abX@&J%B`NUzB`^P)>uomT8tvjGEn^1Er_WFlNnrAHNgY zU1lD*W@*V+P8t{E*>XBnPR3UaHy6#--H2Juy)G1YO0ClH1EgB((M?N{p_aLKDiVw4 z%uSBju6GFMsig6jDwY4R+4)+&^h4euNcuq~Z+|{wrfZ`SBk!h51Ibw4N<`A3p+ckz^7H_UwDz#fV$7#3H zwr7K$=idJ+8KkN1_`xhTR7yhou84{4l-f)wJcPr$XV->Kv5<&q*Qi5MWSBuVP$cD8 zDzTePBo1UvvMW-W{ZPisQJB zP7eLcnDNsDKE(dw4aU>Sp&`c(p=Bk;*fgtSqY(->BSy?utwfzr*$riUF_A5Ks;f>` z0wywBPCo0@5^m1XL%JVq;2q2Wl({V(F>chAEem<%a1e_sUZhfQ0JbG}kj{o`Lny1j zBJoF%`QT3!d;NLlz?bn%0-$ekEd|mz01LcHzr#stBBhS}X1&-QoM&xV2PW5H>fNmB zgL`-D1ND_XD0f-FaoX-ZpG;wKN5U{(wUaP}H(kF?)WLIb%^*xjLe#*!9^aiY`8IJfFT=P=KH+S6XeU zke1Gb(yP-dqb19kBssj4mVo=}bpgxMsEYKStHsD*uTH4A7OBJ|t2I>_QiJu%;4NBx zV4!|ntJeokQz$q9XX`Wn=wZ9n*roqJANTR@tCuN%Z?%SphlZ%R$^%X&z~O_~V6ER$ z!E0=GAgRD-}{a&%*3;5iMf;=7|2elLFSIc2VZ2xd!B0R zSBTykN+58!=v-m3eh6eskSE|KdVKYS`rDcuv+H@B?=rzhE1H$fOhcW zowu%Ddw4iEvVdr1ka|tRfVCF%V$wmSu}$~_GhPTlbg-tKi3=J*7zQuGlPJS{;RWLD zVa>5$5D>&cfNH8sFRQ-7b0*Cz;x0h_1LLOpk_h0>QmQ@r+-80Lnu+v@w;nt`Rf}2+ z>sW?WG&8YIRj^csiY14tv2e-nI>GHbGohJi6a_*%lUpk1T5#8+#bH9Ed?9GqX(R?H zjxmG5;dr~y*r{)OZ13T{s{O9YkFyNdes8CICM`y$@i5`r16;O)y{tZxTI0pS54E z)AyFkkMCYo%R}h&BVfEiC`{keZul-sZH|WuGb@^NR{?PYJS79Pov?=y>cXKQP zx7ga{Aa;*hHOo`(6~Vhz$b0xQNBMO{*gF)W`pXPO$=Q;u66MIXdT56TTcKPYXI9nM zek9bt`bVvQs+Y-RUNt-W?h_}tPWbKMl;2_;`z6Puo#-AbA~0y_L!}Hp*=RBn07XV| zT=}j-h4AexLVFI7($-5{EXdGoeN-cABMo60`!!k_xC#98AUpQQ6Mn)IS9BHH($)-e4+wr zytQk0i<;SmO;0WD`flCc9WAw|O7Uxhj~q!?+SX)VUqsClj!UammO66n#lK{oyO}FI z&@Hm^YQ|-qYYtA)SBjwZTH&oZSUFzm%|LBjNmAS6n!RK9xT3h z@4jcT!8*UJtZ-Lpk%tnxPrGK45NJw8{Wst&TrVOMD_WGMoYBA~>MB!IGJ-tP=_%yE zwg)b@02{*q>fs1YQfQgu11a|u3Jeqq5Vqz{9v6LU^E7C)VIDki;0>>T>hcqhODnST zw;WhKuzKt$eQdXHUD~{f&Z(XDbTytxRVFL-SdMW&2PFk3QOr6-U?xV|<{yYcihz>W za60KR*%1KQW3cy|+GFhqA=At^wg;?vggbEcibbYK+49d@1J4W%xqeIeBk@2ml{!kk&?#`% zW|+~Cy{(MipI*q~z*mdTXmBP~aiZ~1l{ltK^2@2D zW`m=_;`xTVE3XnpFqqrz4(`dv3vfW<5!<)(H3woLDoGBUUP^?GB;Ze+<-qsI)*>I9 zO{qa&I^lSG3%V&EZMbHFV?lsmSx5eYvG7KwNnAs>10+Jx6ph6MoQU9Rg>>KUHB44S z21v+Y362u{%S_Xa{c*B-UdC6}Pv2abWx`nO@EN14q&0Oc127C#q zNdO4Ji#Uhu1V&3c4{3$a?6}7+JB@UPt`6RM%XP<&9$DGFbH^5354pWFUXQy<6FpI; z$l5^arzPe7GQcDb;b*hNyWagS8?1RL?m0ONo7@D$Mn(-Qo_Onm=rSl|WBDj~&6kJg zOQVzS2?Hi-Tw!Mb*gluTrk0_Nrx1pPRpXj}K74Sb8H2boI{IRG$zWrX{)0wsARMBq zSmpD~nsVspilKBNP#!F^6e6EbBv=cDYE~Y8ctw?I^65HONza7B(bxaihuVdK$%lHs zyUD1e(O0K*KBJc`>fozk3QOg4iCEfS<(erf_7vP$&} z7k>>*)v&l?vj}KJ>aH_C+~fm8MIRUf!ZH0NUcwWUMKP~Q4C&Q>DG^B-6%Sm%;LgxT zKw?AzV0l`$GBc^PtTevlXm>D}ZWw>0MoBR$%OBm`pfi93`D%0Ti%HuIFZ+k0}=R&PiedqQ`fIo_~flI05wveHQpvKTuYX3mcNNvu!^J<&T z>J=KPP3ChOKy9TsjUCH15j=^iPIVgtPWtbRcAG!eVTXAF*39)_kLo^L0qG_q(tjJ3 zG}KCE+_vFnpuKgPAA917)Y;nE3m^N~<;!m!xM%$6wc}xRxc5<&yoYDk9_72R$@mN6 z&sDS*I$B+rw3oY&V~!ox8*3@Sm5D3F769pEJ^&`>sco-l4wMkb0{$hM^Wb09F?DcX z?1rX*rkEI}b)LbZQFdpXXYxps3A+4g%0A8>1Ov9!!CH0O)`j)+b2HNu<77EnwHE2T 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

{cZ zyR-fF$4J{usC zluIj_=Y#NW1Otm$ge0@E!}bE}4fqU-U=ZsRafcd88=wVEQX$$$*yljZ0<&J^_Ze}< z6`*kA`{2hFrGeahoynrF%XfF;V9W!FHNPOgt-HZxIliqdBrM%nGgBsb<;ptDnsqbX*ir2x3uZMh}6xv(A5-KG}YIKT>Tkf#)2%K$OmWOiDM zsXMjS0u{6cphNha$?=;|S0b0A+ybSMl;l}RZ? zIbiQ|OI-#qtdubhycmw1hV*v~KEVI9-QEQG{l|~-I^$I-SUQMtT3;Yi(U7JVoDP5v zFrrTh%VQc8I1{HK+J|zq9@HLy=OM!5#=t7VcmP7%IA?&l$^d6Ds3M%opn?RY>*73! zV?qjkQ1|-J=YkXJwbz`ydTeyhWg9mT9~ehQVC|MdNGPW(6oq#8zU6aht zu+zzSpU2~Rj5f&jk?~3htLsLI+j&c!S0Nl z9<7f>H=>t=<`trcLsxn1seYD>S|ceVfm}7f;D7=P~Jq`_^)!00sJaS?Dz<^+yFrtl@4gk}C zFpPRH%85pi5&s|kBl5yvy7G#|f$_1ud$w#QsJ2p@ZT)|FFkwAkI+);bB0HK$9ps|n ze%`fmr&ZhmdGC!rjJ2qo|F>kenlD$B;1qZ6a}0r4_;; zAONE*6<&-RUUN556r(CtC4GY^Hup9fFlyzT$$$@3!F4^#oqz_)Y3}Cs zn|1+#yi9<_d{F_c1Jzd5x(;%ECIO8JvRnabJc0(;Vhb*KbC}T#)evZn;grlfK*az* zZl4Vnlgz3ni!UfMDDJd~kE4cKKerT}UNIv)d`M9kn~qQHM}YuFJ~X&~9rXDc!a=*$ zNt=&UQ$!>!2v|ubR%!`t=G40gi{z5hY6ug^k320PSuty)v(^CF2BC*@Sx5&5dZl3S*RJbo%y-Bd zJszkx5cjA4UDjzx+Xn&ZSz_No` z(a*>V1ccC{r*kn|39o#r~19uB|5BDYRruI+WYJxcb3y(a|P@4xSITQf%t&k^N zJ`gPS!(pHro9DV~K7Qqa_*7LX>;ZtB3X4>1R2nrHfXExduHztcLA&Fy03N<@lCbN6 zEF(jI4G*~i1XKiK;&*k{RNr&gXK%mdGdG>t7mE(>*uH7wnx4+_uJL8f)g3h*Mp6dD ziKi6mf$}9`z$w9-UP*mJCTLQ8ZsR~C;yeUT1;j!vC5VH@CO6s)PY#82ZEbRIFDryB6H;?trj^VIm{-)r5>F4YScd7 z*b6`#kSSZJkC)26w4jEk+V}fF2M3B_uYvQH0PO-CD(gX7>qYp#f+~`p16Kr#Bph5S z0DWrMV2^1DiHe+~lWrl?@8tA);(+Mc#>NJ?ajygq8iFwLRR%|eF7y*b?FJe*va^aW zs;`4=5`75lEzfC;n>ayH#HT64kb4OMb zY?%=Q0dZ!FyJI}pZQb2iuzFPT`J~a+Zl>wooolKR%5=YxR@R%EdwC^c_Kmg6b#+~; z;$l^FHN6tR!3O68G$F}{8@c`Mj)by0SR#jJ3Os==+0CoOlrEJsOwZK!pk^62t)EiWM3s8(pyajMt z636njaow68vk7og@ZU6vxd7`6Gf1*_9Lm5EAs{1oBp}KR051BYoF4QzVB4V@&Z}fT z20{=ugX9RP;aaT*&SNxWe4!!Zi;hedm<@ky9s}+9H=g;_4dgWDsw>7Ks{q=4)|c$eQr)`1XcLO3Zx5h~y7bDkQp1O?L0c0%jLm#wWT@&v4ERX#21tt$s$2P*KpJAl6jR0@=sSF2V>NS#Df z4X(n;lJ5X9)&VHe?#sb0gLz|RA;3)4P(HyD4{dyBuG=*Kg@Ql11=}Am+2D`&ZdgW4 zv;$&W;rPIH9hOoof;e~xM|E(>Xk>Z=r;kCE69ySFRzoOU1A!YSLPftC!J>LKLWGbJI+^G>5`1T%Ng-KtfX>FL z9)>sQx@CM#E$|k6;GE#CAP=VQf>M7z;NcbReU>b1X(fM>$1bd3;6b`JnUraa7cq>k5q-mh=U1|WG97;gQXWbXJd6W$5k({hUpT{ z7Iny6XSSM2t&PFZ-f1WMd%3|`1q0sFm3$T7RLHO7F%h5=T?&1-QarSiwFzwVOB?*q zSb4#G&poi-Z)-FAJ^1;}ZFxl(UDcVdH=AETGM1RXGo{cs#dcfC| zS{(W^#4M$mtBo#Qr60eq@6@H($hdCp{5iA*jjMC)Dy*wI(whS*hU%Q6H3x32E>W06 z@&$7NnIQZi3qZY~2;w()zTegLekVKk=9}}}uYQG%ON+$$SQB?+<(9$S+5{=q1pM<7 z-pMJFl3aCV;=t6}H9cJ&ZLK*5o&Aak1XiL0njA+C?~9E_L&5SgpSK_nDvvlIt()v^ zSJ~Gyot3Evn79qYe=V7*aAc+e%0UC&Iv0b!xP2#(eK{TY$T1i+0q#ffhN*_Z8qAJR zDhV(>V>Sn`a#}&3sGt>S0G7*6Fi7;5b9#e*8pE8+JcK!$9)|}Hgaq(xN9fXg zo7Dtw8u)|wTK!S|=qUYJQC#fOAn!-<4Q9SmfAZv5S()0y^iTzcw2R=fz_7+~KnGuv zM)2ui2@muoxKst)D6nMkQJ{AKJsF;31udT8q^PRWamA()lYFa+-mg#jK~GD`aX(tEU6nO)Ub8301-#4 z7qw$Vy%LLr8?!RA$z}QPB{LLpAo%wAZNy+hp94P;Drrq7UJ1wy5@UmOv6`TjRf;iE=fr@-cvLi$;q}7l zF9pF0RjxWfpw;NSZMWXqR-pU+foOEPKvz|xU2Qw!)z#H%ed{m)57_qjvNc&!zwQ#RA2A)4~>M%=y0h6OMLRSG&7FodQkMxpYy#zrD=yw&{XtR<1 zlA=Eh4uHeH)Q;&QZDKQKBWcW%)u%FJ&_ng;4P%XJBYEIY43o%go(G(S1|L2v6V_G)mzQ$*FU^|eKTzI zp1p=`T-lTR$RoKuE6eBa`@|>ER9HhZH0IO5H17v))G1JzcX5x6vP z-)}ZSjbE$bb-?U|%Wv3X8dL_@kQ!AGHX8-wDMtm@)}kQ_LhgL)+V za=1u`7*z`bR15Ge({YS)t;u{8KIF7!FbQc=Svgdn)9Pg{JbPdVfllcd2md>YXHh;v z4zxGlbN8pAa>sF>yZ`P-?s@q3TW-4R(|2Bf8ftfEPJZm@6^CZWMz(KR*V_f=@v^3x z%CbOV0cvJD;8K+9aT*H(ghei02}gS-tdh&2SM1EX(j_k-pe|^6yd(l*L%HK{{y`*z zPzTxt|ACI7MS1Z*&@i=)0UY@={+nyF6inS`S58S_+j>e!B$A5@WXl9WT3J{=Wx6kS7*t6#kXIf+OchmsMGId zYTfKmq>GzOL^UAxb!_cA;OvuN4f>?V zy*6HBFMvve1{QKSYv~O7F&`8mtod+ms8h#sJUrG)n82uFg}|A>jtMSB%$dgvem4|3 z;7cMGXG~EVKmhH?A{PiGar5Usci(+?-F5rzH{aaS90G(c<39KB=N|t2L-##+--8d_ zf7iWt-Fwg7x8HgDou9qq=G$(*?bci9v_3W2*SorBWm|J+OJ`k8uqo6;8s7OHN0GD0 z3N9Qls13|eETzHS$|yQ!Jh_3iBp^N;SmO}uD;lD0Y~iMLLFP}-N->a>)v>;WwD@qa zhmtASt2qCIn#E#Pg=JWFO7?6>*D%JT>*}WJ`i43@TS$`$?M{hUXh0jQCC}j2?6#~T zf|dx_=iPyT+u$;5&G{_gf%LwTZg`*yl)a>=MM-2c;IU`R8eL0{zCjPyk^o;aN;XL& z0Ha@Ph29$$Fs&N!AYdQ@$6W*HnLG)aCA?nrs({+afc(u2x?{(3igr&Po7`=|k2@cz z4}dFgfWqa3yTt7-nF_#dQ^0M>H&4>{0&H8rgNIb8NxfZfr9w8Z)h*YEjk@(v7lDU) zQgl(n8dO~Z=pZb&wyi24aI10zC@(=2D6sVq-w~#GE>Mxwcn8kZ0d{+|N9EtOi-nJ& z9J}Wym4Nns&`?<$VWOcLU<0~>>)@Vk|EdP79{8Q$aH{N3T*NU6Cn7jLvyjQY!J11nr6@qUAzr0L>-RCb|T{F$M!t% zz;&rZwsn2BiY||}`Pi{$wYKlru|D{vrwgm6>ubB|AG18@N~LCPo7dZdpSHSdkJakr zPuCo+xdRDXj#YT9cbwY2``oTw&nrIZaCF6a_<42?RGwmg0s01HAAWr}0+3xx)+)zJ z1}!k@@!`y#G3z;bGGp31n4gyca{=;_H7j_7dK7AZy@1<_fs4Bz z#~=8_<~N};Asf(Lwi#~2BsY3fyAJAoYLI6JVAROi?(_y3j6n(BIV1t@OgTNIi!mZc z!Q&*;GES%B06GuEHO23O2)_%EsE85pheYV*4({DOumgah`F&MZbCJzbM5xcj$_fBH z9+GL0u8*9t!Uby%^BhWR3YkR0ky6M-mE$V0>WJF|Hl2doqbws}0fMfAb}qp-C^n5q zRZ6Q%#tfWR0`^v}#pD$7@>DL9Wi#~mbIo$4T2sZ_pnIo*;<;NE0r)26hQabw=ama= zz?NH7T~q)7N}N@X6Ok6Pi20(>PnOyH73q^(JRgQB{%Y3B4UI1b_rl zuhwMFnw!zORTv5R3Ucd#_NjWN7P{J3Hk5dv@~4sb0Qj=1b*tKN%;fqyJ4mgq7pGJ; zC#a8OvO`OZiJ+`;Mi>CR8fGD!n8BM6sI38x)_+2m-mI3J8|!MyON#+ei-V03CbjwM zd;ki=I1%cyz<{d7_=k!msas~0E$MvMNPU1N22>Ov8W+8UK+J`7r1K6~92v&evm+z3 zuUZP-UOmhAm4{Zv zIQA6y&BT;)LM%+J(FXq@q;3iJBMEOXEYT*)W`?1QMw9KAFAJE;YIE|ex}xIxy1HOV zl|Ls?;V3ltgEdw4mF+8;yTYT*aTr~GldT5AV|isOZ!5Q(L1`6OZ18}#T-^cvY+5f~ zMxC|5Lh(W;ZyDDO@%DD`Y4JsVt4ctwTpWdNh{yxM#3M;3xK>mG(dyad7 zdx?96dlmYnZ*o84e#-p~_jB$Y?w`1K*^}+(zkU}`*`B@o&N~E``x`gI*YT@=_R6wf8+Jb)LJt1X z3&yHgK9}do&l{^`9?tFZxM_*v;dLj*xx#?+bmb~Y0w8r_oFfDbUuZ33x#w&^Sq897 z1+(Um;y_M0Gs{4qX`d_627vFN_?iSpO&OpF6p$M1;c7yuAz9}DOlUO`U=C?EA3Ju% z6|=L+WIVoq|LEw@(B8efcJ0`)Wy|WG%COCP?8LDXA3J`<(JP>OFneV7$l*iDgGu1k z#1rwvf$9BI`vI;nx^Hw}Y-}hx6a~U@WG~dFckS5)#pxXbI|ll9ZrQ$N`?jqc*7a;& z4Xu^dvOessQVfdDUv93s`v5pe|rgX`#!44K8Eb{0c;>19{=tneLDL6v--+5^$;wHgo zfn5o(go{Gu1sMk)9yiLaB`E-X%KdL3oes(Fl8vxJm67rVUG|>x8!u4#yMX}lz4>t(1R zmLa5~3d}%UXjJ3I~?t83}j`&8|F)0UlGJQ`}5q1x4Qa5SVe#f%FkUT`lJt+G`8)p|1yC zD~x3oygQNWYin*-Km0s`8H5hYQuFE zA@Fx%1H_*IpO6xy$`YVnAUDi`+z?c&PM@RTGXW?9G8QQJsf@sAQ<$=l3uSq-S6{t* zprVxL-v0Za{ncOo^{-fTH0UHpJU=m z_!2uB-nyK0h@oHuO$z+)r$I-8Mc{U2tYv8cGAAU-G$=EPusbLcMnWc5MyDbiQFKD- z-AZ1DwHTR2K+I3CDDNQ$Mg0#6C^=d3IZN~TI^;wk4BR{^I{Z9dhYiz3G>y$|%lYl2%s@kRor4nRo_`a0CY!uwLRUzjZPoOr819=!+ zW3T~=9eQJKfxWd_W7aqw;gXy(oymbN$m#Z#SB4;RblR%nSrIy7YJ<~QV>c9+RARq$ z)rU*r(HBRAJd56F>+--=yg677iIq7Y5|xRrTs?0I8?mqoVSf?x7D57JR^^&3D{|nL zK;;NS@5g9|dMsd&;WiAEo@}px?8V|#Rf-PWnJHRnfz(XjS0-tpNSCKoWAi;HL90q< z*VZ4%Gvz{S&64NtFV?_CSdQAe$z{|#j9PFmWnHem!tCt!l!wcF-6mktVUX!7%i3H9 zBf#>|Guk&l?S0W3YhsK;_k{ z7tLlXw0{}>wi8noSYc}AP{GndmRA<7 zgsON!en~4vYr9}mYjX>sewaB&v+pXj8d(D80|g*N=jZ^-F_bWqv6Sh}4yKizOrv(; zC`POsocb`@VYN!|NPun2!CY`KlNqFklbK?tTK$ey0v`ECfd zOu439MNbLx5gmk%AT_mSv(1Hbbf5vUKj5{203db>5db9O!Ae)p@txZKqG z8|cx{YRvucx;Nii2+zNJ{vqDYUct2*be`~17uirh+0*@qOc)!f%0 zXQ6+O;yD8Pv1jr7SNy(q{&#qXV^1u3_Ty}tdEAE$GD|Ia_9Cu-fBv@%`790D?=PfN z?n5bH>GOp+`%E_fYtNr&&nx-OXP)62-=jEt5^(^mEWGod4yiqkX7djDh|Lpz4 z$Qw8g>^BR~KRjfe+4T1z?a7PNKtJxHvay%4X}?I}`FSP(^Ot=0*O$DL&7Vi*u-|e_ zd5(7xU#Kst!?D-#Lm3wDp?_cx&MlO0;r@m2{CgBv`i}aKey8!HzAHZeFBj4+$+Hm8 z=yxFV!^{NV1My4BoOzd!S2ORjcP`|yaBpd-l#|LjgCB(-@}u_3{ytcEm)%I;IR9@8 z*9#%5x$tee$9|hF$Gx~fS=o=X*SOEF!|#J7X{gWd$d;F#|A3u8|C_~pA^&E-Sg6Y- z-#Bpo_sX~4Sa^<5xDZ#`Yzpt=w~*h5hD+Z0(C1X2zxwbz*f*BmKmS|yLgt#aUbxSI zB}@6T=?nLie#E^?zsG)X;U4=lyhC&S=S%L*Uub*wFBk4F=0oFyzO@G-jT4jur)!S; z{)eQ^exKb+&z9tizFEkR>cjr_!u7&^CB*W+aLuxP0N=ff_ZFUA8e%Wv*jt%&9QroX zhS~2^nO{S}IP6pO-w11Ghxls#CjMpBy{cad+k~HqMdBgxtoT#u4!K>uPxG|)ecd|U z8QrtGH+Apm)%xT5I}9a;8w~FnL&nRD@0fPw+-4p$KWgc>JYl=R_6}J4FFX63CtRE> z&vo4ORIbBa;C|Kpp2y)ik@s-kPxE{769tC~-Y85JK3n*K_r0Qn#cjpE3mh#uUFs-( zqV)fiA1r^bLSHdb@tt6Ca9yY|G#Yv-Toit)vaM=ORif&>>gQ^>nx|{EwL5B`t$n+0 zNB!%K4>vyB)Y){l=~vC;%`dc!wwzq1UN*k`(bgAN)UG(w=4gMo{gw8&I!<={pi|%Z zO4sYFj&@IUztodheY$s5@6Y>s`bPR5?K{`^M&H|gAFRz=+q!mi?U}VNtlP0+d_#Jp ze&guI$2PvV>CsL9w556L(d|F)&l$M$GJX%Ycl7d~MQ$5*jocmm3-&rh{+H=FIMzeQ5UGLr)$0`H`U` zzr3>K%9pQv_o~!U;pp#V$H&v3c>S73Pp>+C`t(!RHD7nfCljAMdwtRM z58oi&Fnz;=pUV5xnKS&EpWN7a04@xmRy`|SO9K6aOI*V}iu-qU%{>-R3Z_w;=g_q}@GyZ7I4|1%F1Jn+j0-+pMz z=Z`#c^wDR(u&QFB`wy|K<1Rq_cgGZ+QI9$A9)j#S?Em@!peV zPi}kimM0&3ihHW~siR+c^yyt+t$v1o=8dm?=j-~ffBft3J@@{(g6A7w==sy5FG??d z^2Hy$q<<;>&E{{8ynNrL`qrPn^xEFne(=4}_ilQ_`2EM; zROkS<8oM)iU--wvUgYng^@_FIh#g1yrw4xvqZj{xbfWyFI60fvWbdoE0O+Yq8oFDX zjf*&WEYHSqCIOZ#gc5K{i!%#ke3>|SsqmhaiK~D&GL?-BNb__yE^=PX^-LNG_umQzA!e#i4W}jbpGjqQdr}MD#t3_JE z`~1U{JCIuf--{`Ec#)1$Qr`66hvl7JV8E;V5$N6z`3DM&`ihkH$rMB6UWc|Z^!wrD zSqlNEo*Ceg7mo3m8Kx~(W@C2d;Qkq$WEU8DZs?BX!8=a@?EJmV$BLMr6|(>QgSQzIk2nJaVt7Ubp9)5fpf#%l?l>cSGm1@Nij3DINSqJN6U2GNWW<3~Z zYgjMqV{6$uww`TZ8`&m!|JlN}vTbZT+rf6Sem1~%vEA%4pziHum$N|@VMA<~jj$*i zWn*ld#n?W!pG~kyHpSv>8lGemEXh)Ah8<+H><~N5j=-PLmC%Ab%8s$)>|^W%yPBP3 zr`X5YC)hRYT6UUU$3DrfXE(4;d*5`y6|SeV#qc9$}BNFR(ANFR{nCBKBpLW^?Q;dz?MNo@7t4udt`tSJ^Y{ zYwTI}b@m+l6Grl<7ucV&7uh%1OYEEAE`N)?!oJPE1OF7SvOj09;SBRS`yP7(`oM3p zzhFOLKV&~*KW0B+e~FX*PuX9wpRvDYe*??nx7gpYpR>PbZ?j*pci2C$U$TE>|HS^8 z{fhmXz03XuSkk{?@3DVn@3Y^s-?87b4}fR^x)3_nbmYRp1%NKVUx3auZ1|zoqvs90 zkv9R76b|HgD{tfNyn}c0E^wpWya(V>`FsJCTD`oFFXH`tF(2Sd_)@-%FXt=xARpqx zd?nOhtN9wfmapUM`3Am`Z{nNz7JeD@t(Nnx{0hE}UnxgoiRp>RVO3;0hToLx;PjL{ z8=D%5&nD%_)JP&88xdw>qcL4%dU_%@97$n<8i(Ukqp`7>gmRUXha#y|G;vrz6;B~$ zHqFpPWNLqSBtASd8J$Y0hrk}5j3o98L(|a-{F$7RhvSpekwjEAG&80ij!Z-XL){I1w<3sUCVnjU>NkxVt$*43EortC=n4X9q zmPcYqY8Ql&iSW#{dZ8k!kz`VgQf-9jNGzpBsi)(ysgyJtpBRZIRHKmtVib57N{Ql$ zlwlO#j3*9<6VYTer5lY+M8iV~v~E;F9L*+AMw7|NSX3O1CuSz4vB=0+G$o8BVk4^Y zkr81$J{i@H$7d4Zv581BDa9tIDc9H(S}!&=7DmHO2(hWrxHdL*FqTq!MBWz}8$*W( z`yvM;68(urwG1>tKo^*w1^fw zbXZ51**2ww$ry&fp~(qhJT*C?LVn_*$S^KvlOy;O8JXY@9Z(%gjtGa66Dj#fJU)rW zRx2T2Q?Vn;aFvt+HZ09d z(XbT967d-fjsr7z)0hbs)(|0icxqUpR>6>%nNm_}vARVQm`uqi&Dv?TG6YZ>G)oFH z-jtk4Uz-iZB~qAohw&0-!B{jY4$Z_SM(`k#m=wn`KGD08p@}Hgz{F5| ziq=j4f0Kr6JUNcKUAUUS+sTD=(-SjE z{lYsmY&5YcOo6dPWKxZRyB{m(6lOU!9OkT;+>dg~so5B9BQiC^%uv)8nTkvtrYRG~ zWQa}?WtcQXF%YqkPeo}_)n0g@k0qDfk4#}JQuxRuFwFWj7OrQv8fpCqROXHe`WDf%9Nc57UkPZa*SiOqvB9+qArt> zlzJ5NoH9Z0PGQHCrz6ArF>(ylt#Mj`sJs$346H|*#iG!*suTlbZwwptgl4gd@<^1H z%OqxAYTAG$eJZ^04Gn#Kb{xx#Dls!9Wj-OsChgWYGE?>!mD{xN~T!Q&KXOm>JGwkl75e zq+*8PeiTDWrT`;It%T?gEWq(;+WeDoOdzy3=n)yq42YMghDJtsANFr?C=re97in#s zHDr1>`*D5tN-2XnIgT|QJ&u&Xb(3itVx_}^IDttVn~InhV+&JFj11uw9jKY9WTuwJ zEL}w_6^55#;Sw89GHM=+#>1nu_2BzMaV+DO3wKa2s|XaXWYCtEp6S^pRV_$%LWEV zy{EVLr};qSt56%|hKKz_9-lAG4Wzj)|Ejadvum(3oMxf4cW^YE=0h;;@P*SbTN`;? zWwUdgU1@8VcW|(Cj<ftqP{?UH$aEw4;1_uTPJZP=7zH2zmZRt;Qik~bWuHo9ZfKnB# zjXa&h4O5DzMQ&(dU?eh-X2F4hYz+pyBdCwRb0C}+L*8z0S_ni?C%J1=e_Hl;rq%vV z^Z;HN45uZfxzQ5dkvVy&(@PJjx}Hq&>2I1F>>f^w6+S%d@}Bmd#<%9G#Q<7pbN}Eb zPh`tLzkk3t;7zx0?Z-0@wM(`r;j|n|Yr2AG!SYaAU5!hBrys+`-x*2sL!)UnjDn=) zif~#J@=|GysFuJDAqmRcJ~%*023IMi)rQV$j9gcDXN7NZ;OIgZ4?fkA8v&GCG9dL*(coX!cM3SMv8)YV5dLj*mP&Y`O| z{yB@KE6pOEX>*XK9EMisoQeMA;7^)4&=;z}rhd3s?;1pNb)H5KI zXF$&lc6tZD;&L$v!>n9qXD79Q4bNC)&ZZ8guM2vLFuWb8qdgc-J417fLKoVb!raiD zib8j2PN2{eniDC^3(ZLs=7;8F3JXGWY6=TOa~cYRA+$!O{nOGQTH5ceOtU>STf*tk zl827PhX*nb!%H5PEIv$R9(qGu+7$fAdZJQKW~xf{Tv|UL>gPqdicmia{iq*>#i$>J z0o0Ge64Z~vQq+&aGSrX4a@3E)3e=Cn%8<8JnMhS3?_k%vOie zRl#%>=3@<}!fK4z51o+yNVA_7_J218hGRHgyU@jRMyZ=dT)L)WPGt7(ek_XAi*-wy z=cCfphrA6+$s3ScCZFy|#Fxdu9#UYnAw$tuE7z1TEwP`#ZKsocn}{P z!1{3MI}sEO>%YGz((Li$3q7bO0_7{n??XOj5kJ4H!CSGrke>HuSda-TcnNpcdOQ*SQ{gvKU zZ0J;aK64Y9E_Ov)3gD_2j}~c{Oeg-~$Q$%$dkZUnIK6V=Yf9^9yK9gLoJ*^`(8cXo zKPssed(zIX{!Je2sovIs%DHM_2ZYld7d_qL*>us<&WoNdyt_2NOW)`UrI!VlCRliB z;e)F}>E*%G7=ARyPGhEjRN2s>mFa2}v0JG!4daqb%SS+TmY=mW&tQK(?H#u>da%F0{%TTrCg!sL!Zf zvb9-kf?hO%Ju~e=onVGrE7Ogb<$WJGY1W0(EeO_AD|Vx~y*=237g}pW zhz4|eJ(_uA=q$(eAhHP&Mv={-vrM_O1rg=WR!XxPkG4@7ifpGe6xl&(D6%v3I99_h z#QG7#-j3Kn=y8_0w+pe%z1@_K(bLN)of6wa>6F-BN~gpwr*C#6*&uzBA`$u~MTY2` z6d9&8YY-WsG!%(a8j6fk8j6f59!PiBj@UWTKS(8oaqOli#(OC?z}3O;!L&M>RuykLw6LLvIUE3A-U4!x-GIF=bL5+zls*U!?N+3 h;cZGvJfMGboU!6*cK%daxE|Z_s>j6 + + + +Created by FontForge 20190801 at Wed Aug 28 12:29:48 2019 + By Ruwan Yatawara + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.ttf b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/font-entgra-1.4.0/fonts/font-wso2.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d5501065df7693f95fd6f67b0ee57091a19ebc5 GIT binary patch literal 120196 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