<?xml version="1.0" encoding="utf-8"?><!--
  Copyright (c) 2022, The Android Open Source Project

  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.
-->

<resources>
    <overlayable name="DeviceLockResources">
        <policy type="system|vendor|product">
            <item name="lock_task_allowlist" type="array" />
            <item name="device_id_type_bitmap" type="integer" />
            <item name="check_in_server_host_name" type="string" />
            <item name="check_in_server_port_number" type="integer" />
            <item name="check_in_service_api_key_name" type="string" />
            <item name="check_in_service_api_key_value" type="string" />
            <item name="device_check_in_client_class_name" type="string" />
            <item name="finalize_server_port_number" type="integer" />
            <item name="finalize_server_host_name" type="string" />
            <item name="finalize_service_api_key_name" type="string" />
            <item name="finalize_service_api_key_value" type="string" />
            <item name="device_finalize_client_class_name" type="string" />
        </policy>
    </overlayable>
</resources>
