Application

Chose application
.NET Native Web Flutter
Chose version
ver. 14.0 ver. 13.0 ver. 12.0 ver. 11.0 ver. 10.0 ver. 9.0 ver. 8.0 ver. 7.0 ver. 6.0 ver. 5.0 ver. 4.0
Choose device
Tizen.Sensor namespace, you can <a href=https://samsungtizenos.com/"#sensor\">create sensor instances<\/a>, which correspond to physical or software-defined sensor devices. The sensor instance is used to check the availability of and control the corresponding sensor.<\/p>\n<p>After you have created a sensor instance for a specific sensor and <a href=https://samsungtizenos.com/"#subscribe\">subscribed to sensor events<\/a>, you can monitor the device's internal sensors for sensor value changes. The application can receive the sensor data only when the data is modified.<\/p>\n<p>When running an application on the emulator, you can use Emulator Control Panel to simulate sensor data for the application.<\/p>\n<p>A device can have various physical and virtual sensors. The following table lists the sensors supported by Tizen.<\/p>\n<div class=\"md-alert md-alert-note\">\n<span><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"\/><\/svg>Note<\/span>\n<p>Not all devices support all sensors, so each sensor is not necessarily available on all devices. You can <a href=https://samsungtizenos.com/"#sensor\">check whether a sensor is supported<\/a>.<\/p>\n<\/div>\n<p><strong>Table: Supported sensor types<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Supported sensor types<\/th>\n<th><\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"#accelerometer\">Accelerometer<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#hrm_batch\">Heart rate monitor batch sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#proximity\">Proximity sensor<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#auto_rotation\">AutoRotation sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#hrm_green_batch\">Heart rate monitor LED green batch sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#rotation\">Rotation vector sensor<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#mag_orientation\">Geomagnetic orientation sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#humidity\">Humidity sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#sleep_monitor\">Sleep monitor<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#mag_rotation\">Geomagnetic rotation vector sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#light\">Light sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#temperature\">Temperature sensor<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#gravity\">Gravity sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#lin_accelerometer\">Linear acceleration sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#ultraviolet\">Ultraviolet sensor<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#gyro\">Gyroscope<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#magnetic\">Magnetic sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#uncal_gyro\">Uncalibrated gyroscope<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#gyro_orientation\">Gyroscope orientation sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#orientation\">Orientation sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#uncal_magnetic\">Uncalibrated magnetic sensor<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#gyro_rotation\">Gyroscope rotation vector sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#pedometer\">Pedometer<\/a><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"#hrm\">Heart rate monitor sensor<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"#pressure\">Pressure sensor<\/a><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2 id=\"content-prerequisites\"><a href=https://samsungtizenos.com/"#content-prerequisites\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Prerequisites<\/h2>\n<p>To enable your application to use the device sensor functionalities, follow the steps below:<\/p>\n<ol>\n<li>\n<p>To use any health-related sensors, the application has to request permission by adding the following privilege to the <code>tizen-manifest.xml<\/code> file:<\/p>\n<code class=\"language-XML\">&lt;privileges&gt;\n &lt;privilege&gt;http:\/\/tizen.org\/privilege\/healthinfo&lt;\/privilege&gt;\n&lt;\/privileges&gt;\n<\/code>\n<\/li>\n<li>\n<p>Include the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.md/">Tizen.Sensor namespace in your application:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">using<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Tizen<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Sensor<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<\/ol>\n<p><a name=\"sensor\"><\/a><\/p>\n<h2 id=\"content-create-a-sensor-instance\"><a href=https://samsungtizenos.com/"#content-create-a-sensor-instance\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Create a sensor instance<\/h2>\n<p>If an application wants to observe data from a specific sensor, you must create a sensor instance by following these steps:<\/p>\n<ul>\n<li>\n<p>For a specific supported sensor type, a device can have multiple sensors.<\/p>\n<p>You can acquire the default sensor (designated by the device vendor) of a given type. The following example shows how to get the default accelerometer of the device by creating a new instance of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.Accelerometer.md/">Tizen.Sensor.Accelerometer class:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">var<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">sensor<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">new<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Accelerometer<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">catch<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> (<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">NotSupportedException<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ Accelerometer is not supported in the current device.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ You can also check whether the accelerometer is supported with the following property:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ var supported = Accelerometer.IsSupported;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>If you want to acquire a specific sensor from multiple ones of the same type, set the <code>index<\/code> parameter of the class constructor accordingly:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ You can retrieve the total count of accelerometers by using the following property:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ var count = Accelerometer.Count;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">var<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">sensor<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">new<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Accelerometer<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">0<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">); <\/span><span style=\"color:#6A737D;--shiki-dark:#6A737D\">\/\/\/ Index starts at 0<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">catch<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> (<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">NotSupportedException<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ Accelerometer is not supported in the current device.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<\/ul>\n<p><a name=\"subscribe\"><\/a><\/p>\n<h2 id=\"content-subscribe-to-sensor-events\"><a href=https://samsungtizenos.com/"#content-subscribe-to-sensor-events\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Subscribe to sensor events<\/h2>\n<p>If a sensor instance is created successfully, it is able to observe sensor data changes through an event handler. In addition, you can set several parameters, including the update interval of the sensor data and the power-save behavior of the sensor. The following example shows how to set the parameters and listen for changes in sensor data:<\/p>\n<ol>\n<li>\n<p>To listen for sensor events, define a handler and register for the <code>DataUpdated<\/code> event from the sensor:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">EventHandler<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">&lt;<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">AccelerometerDataUpdatedEventArgs<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">&gt; <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">handler<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">null<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">handler <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> (<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">sender<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">e<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> Log.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Info<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(LOGTAG, <\/span><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">&quot;X: &quot;<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">+<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> e.X);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> Log.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Info<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(LOGTAG, <\/span><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">&quot;Y: &quot;<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">+<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> e.Y);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> Log.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Info<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(LOGTAG, <\/span><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">&quot;Z: &quot;<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">+<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> e.Z);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">sensor.DataUpdated <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">+=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> handler;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>Start the sensor with the <code>Start()<\/code> method of the appropriate <code>Tizen.Sensor.XXX<\/code> class (inherited from <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.Sensor.md/">Tizen.Sensor.Sensor):/n
Tizen.Sensor.SensorPausePolicy enumeration:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">sensor.PausePolicy <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> SensorPausePolicy.DisplayOff;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>The above example makes the sensor listen for the sensor data regardless of the display state and the power-save mode. However, it does not prevent the device from going to sleep mode. To listen for the sensor data, the device must be awake.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>When the sensor data is no longer needed, stop the sensor and deregister the event handler:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">sensor.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Stop<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">sensor.DataUpdated <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">-=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> handler;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>When a sensor instance is no longer needed, dispose of its resources explicitly:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">sensor.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Dispose<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<\/ol>\n<h2 id=\"content-accelerometer\"><a href=https://samsungtizenos.com/"#content-accelerometer\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Accelerometer<\/h2>\n<p>The accelerometer measures changes in the velocity of a device. It is a combination of gravity and linear acceleration components. The accelerometer measures the device's accelerometer vector in 3 axes relative to its body frame.<\/p>\n<p>An acceleration of 1g always exists on the axis aligned to Earth's gravity. If the device is at rest, the sensor data reads 1g (the gravity offset) on one of the device axes and tells you which device axis is aligned to the direction of gravity. A falling device that has reached terminal velocity ideally shows the accelerometer value of 0 on all axes. The change in the effect of Earth's gravity is observed on the 3 device axes by rotating the device along any of the 3 axes.<\/p>\n<p>The linear acceleration components which correspond to the measure of the linear motion subjected on the device can be obtained by removing the gravity components from the accelerometer data.<\/p>\n<p>The accelerometer provides 3 components of acceleration (X, Y, and Z), as the following figure illustrates.<\/p>\n<p><strong>Figure: Accelerometer vector and axes<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//sensor_types_accelerometer_vector.png/" alt=\"Accelerometer vector and axes\" \/><\/p>\n<p>The accelerometer outputs 5 values: 3 Cartesian axis values, a timestamp, and a timespan. The accelerometer sensor measures and returns the axes' values in &quot;m\/s<sup>2<\/sup>&quot; (meters per second squared). When a device is moved in the \u00b1X, \u00b1Y, or \u00b1Z direction, the corresponding output increases (+) or decreases (-).<\/p>\n<p>The following table lists the measurement data that the accelerometer provides.<\/p>\n<p><strong>Table: Measurement data detected by the accelerometer<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -19.6<br>Max. value = 19.6<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -19.6<br>Max. value = 19.6<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -19.6<br>Max. value = 19.6<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The following table provides information about the accelerometer output for a device at rest.<\/p>\n<p><strong>Table: Accelerometer output for a device at rest<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Position<\/th>\n<th>1<\/th>\n<th>2<\/th>\n<th>3<\/th>\n<th>4<\/th>\n<th>5<\/th>\n<th>6<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Diagram<\/td>\n<td><img src=https://samsungtizenos.com/"media//uix_acceleration_sensor_output_up_top.png/" alt=\"Accelerometer output\" \/><\/td>\n<td><img src=https://samsungtizenos.com/"media//uix_acceleration_sensor_output_up_left.png/" alt=\"Accelerometer output\" \/><\/td>\n<td><img src=https://samsungtizenos.com/"media//uix_acceleration_sensor_output_up_down.png/" alt=\"Accelerometer output\" \/><\/td>\n<td><img src=https://samsungtizenos.com/"media//uix_acceleration_sensor_output_up_right.png/" alt=\"Accelerometer output\" \/><\/td>\n<td><img src=https://samsungtizenos.com/"media//uix_acceleration_sensor_output_top_bottom.png/" alt=\"Accelerometer output\" \/><\/td>\n<td><img src=https://samsungtizenos.com/"media//uix_acceleration_sensor_output_bottom_top.png/" alt=\"Accelerometer output\" \/><\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td>0g<\/td>\n<td>1g<\/td>\n<td>0g<\/td>\n<td>-1g<\/td>\n<td>0g<\/td>\n<td>0g<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td>1g<\/td>\n<td>0g<\/td>\n<td>-1g<\/td>\n<td>0g<\/td>\n<td>0g<\/td>\n<td>0g<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td>0g<\/td>\n<td>0g<\/td>\n<td>0g<\/td>\n<td>0g<\/td>\n<td>1g<\/td>\n<td>-1g<\/td>\n<\/tr>\n<tr>\n<td>Axis up (down)<\/td>\n<td>Y<\/td>\n<td>X<\/td>\n<td>-Y<\/td>\n<td>-X<\/td>\n<td>Z<\/td>\n<td>-Z<\/td>\n<\/tr>\n<tr>\n<td>X-polarity<\/td>\n<td>0<\/td>\n<td>+<\/td>\n<td>0<\/td>\n<td>-<\/td>\n<td>0<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Y-polarity<\/td>\n<td>+<\/td>\n<td>0<\/td>\n<td>-<\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Z-polarity<\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>0<\/td>\n<td>+<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"auto_rotation\"><\/a><\/p>\n<h2 id=\"content-autorotation-sensor\"><a href=https://samsungtizenos.com/"#content-autorotation-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>AutoRotation sensor<\/h2>\n<p>The AutoRotation sensor is a software sensor that uses an accelerometer to compute the orientation of a device. This sensor helps to determine whether a device is placed in a landscape or portrait orientation.<\/p>\n<p><strong>Table: Measurement data detected by the AutoRotation sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Accuracy<\/td>\n<td><code>SensorDataAccuracy<\/code><\/td>\n<td>-<\/td>\n<td>int<\/td>\n<\/tr>\n<tr>\n<td>Rotation<\/td>\n<td><code>AutoRotationState<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The <code>AutoRotationState<\/code> property is one of the values of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.AutoRotationState.md/">Tizen.Sensor.AutoRotationState enumeration: <code>Degree_0<\/code>, <code>Degree_90<\/code>, <code>Degree_180<\/code>, or <code>Degree_270<\/code>.<\/p>\n<p><a name=\"mag_orientation\"><\/a><\/p>\n<h2 id=\"content-geomagnetic-orientation-sensor\"><a href=https://samsungtizenos.com/"#content-geomagnetic-orientation-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Geomagnetic orientation sensor<\/h2>\n<p>The geomagnetic orientation sensor combines the 3-axis accelerometer and 3-axis magnetic sensor to determine the orientation (rotation angles) of the device. The geomagnetic orientation sensor is similar to the orientation sensor but does not use a gyroscope. The geomagnetic orientation is the output of a software\/hardware-based sensor fusion solution that uses the accelerometer and magnetic sensor. The geomagnetic orientation sensor output is an alternative representation to the geomagnetic rotation vector sensor output used to determine the rotation of the device, and it is calculated in terms of Euler angles:<\/p>\n<ul>\n<li>Azimuth<\/li>\n<li>Pitch<\/li>\n<li>Roll<\/li>\n<\/ul>\n<p>The following table lists the measurement data that the geomagnetic orientation sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the geomagnetic orientation sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Azimuth<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = 0<br>Max. value = 360<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<tr>\n<td>Pitch<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -180<br>Max. value = 180<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<tr>\n<td>Roll<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -90<br>Max. value = 90<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The angular positions are measured using a fixed frame reference (X<del>E<\/del>, Y<del>E<\/del>, Z<del>E<\/del>).<\/p>\n<p><a name=\"mag_rotation\"><\/a><\/p>\n<h2 id=\"content-geomagnetic-rotation-vector-sensor\"><a href=https://samsungtizenos.com/"#content-geomagnetic-rotation-vector-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Geomagnetic rotation vector sensor<\/h2>\n<p>The geomagnetic rotation vector sensor is the output of a software\/hardware-based sensor fusion solution that uses the accelerometer and magnetic sensors to compute the orientation of the device. In this sensor, the computed orientation is free of any drift, but it is inaccurate compared to a sensor fusion solution using the gyroscope sensor. The geomagnetic rotation vector sensor represents the orientation of the device as a combination of an angle and an axis on which the device has rotated through a specific angle around an axis (X, Y, or Z).<\/p>\n<p>The following table lists the measurement data that the geomagnetic rotation vector sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the geomagnetic rotation vector sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Accuracy<\/td>\n<td><code>SensorDataAccuracy<\/code><\/td>\n<td>-<\/td>\n<td>int<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>W<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"gravity\"><\/a><\/p>\n<h2 id=\"content-gravity-sensor\"><a href=https://samsungtizenos.com/"#content-gravity-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Gravity sensor<\/h2>\n<p>The gravity sensor is a virtual sensor derived from the 3-axis acceleration sensor. The 3-axis gravity components provide a measure of the effect of Earth's gravity observed on the device reference axes. The gravity components measured on a device vary based on changes in the device orientation, and hence they provide a measure of the rotation to which the device is subjected.<\/p>\n<p><strong>Figure: Gravity sensor vector and axes<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//sensor_types_gravity_frame.png/" alt=\"Gravity sensor vector and axes\" \/><\/p>\n<p>The gravity sensor outputs 5 values: 3 Cartesian axis values, a timestamp, and a timespan. The gravity sensor measures and returns axes values in &quot;m\/s<sup>2<\/sup>&quot; (meters per second squared). When a device is rotated in the \u00b1X, \u00b1Y, or \u00b1Z direction, the corresponding output increases (+) or decreases (-).<\/p>\n<p>The following table lists the measurement data that the gravity sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the gravity sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -9.8<br>Max. value = 9.8<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -9.8<br>Max. value = 9.8<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -9.8<br>Max. value = 9.8<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"gyro\"><\/a><\/p>\n<h2 id=\"content-gyroscope\"><a href=https://samsungtizenos.com/"#content-gyroscope\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Gyroscope<\/h2>\n<p>The gyroscope detects angular velocity or angular rates of a device. The 3D gyroscope data is considered to be very sensitive in detecting incremental rotation angles. The rotation angles obtained by integrating the angular rates over a longer duration are inaccurate due to the build-up of drift.<\/p>\n<p><strong>Figure: Gyroscope vector and axes<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//sensor_types_gyro_vector.png/" alt=\"Gyroscope vector and axes\" \/><\/p>\n<p>The following table lists the measurement data that the gyroscope provides.<\/p>\n<p><strong>Table: Measurement data detected by the gyroscope<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"gyro_orientation\"><\/a><\/p>\n<h2 id=\"content-gyroscope-orientation-sensor\"><a href=https://samsungtizenos.com/"#content-gyroscope-orientation-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Gyroscope orientation sensor<\/h2>\n<p>The gyroscope orientation sensor combines the 3-axis accelerometer and 3-axis gyroscope to determine the orientation (rotation angles) of the device. The gyroscope orientation sensor is similar to the orientation sensor, but it does not use a geomagnetic field. Thus, yaw represents a relative rotation angle, not an absolute reference. The gyroscope orientation is the output of a software\/hardware-based sensor fusion solution that uses the accelerometer and gyroscope. The gyroscope orientation sensor output is an alternative representation to the gyroscope rotation vector sensor output used to determine the rotation of the device, and it is calculated in terms of Euler angles:<\/p>\n<ul>\n<li>Yaw<\/li>\n<li>Pitch<\/li>\n<li>Roll<\/li>\n<\/ul>\n<p>The following table lists the measurement data that the gyroscope orientation sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the gyroscope orientation sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Yaw<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = 0<br>Max. value = 360<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<tr>\n<td>Pitch<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -180<br>Max. value = 180<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<tr>\n<td>Roll<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -90<br>Max. value = 90<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The angular positions are measured using a fixed frame reference (X<del>E<\/del>, Y<del>E<\/del>, Z<del>E<\/del>).<\/p>\n<p><a name=\"gyro_rotation\"><\/a><\/p>\n<h2 id=\"content-gyroscope-rotation-vector-sensor\"><a href=https://samsungtizenos.com/"#content-gyroscope-rotation-vector-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Gyroscope rotation vector sensor<\/h2>\n<p>The gyroscope rotation vector sensor is the output of a software\/hardware-based sensor fusion solution that uses the accelerometer and gyroscope to compute the orientation of the device. In this sensor, the pitch and roll equivalent representations are free of drift while the yaw equivalent component is allowed to drift due to the absence of the magnetic sensor. The gyroscope rotation vector sensor represents the orientation of the device as a combination of an angle and an axis on which the device has rotated through a specific angle around an axis (X, Y, or Z).<\/p>\n<p>The following table lists the measurement data that the gyroscope rotation vector sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the gyroscope rotation vector sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Accuracy<\/td>\n<td><code>SensorDataAccuracy<\/code><\/td>\n<td>-<\/td>\n<td>int<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>W<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"hrm\"><\/a><\/p>\n<h2 id=\"content-heart-rate-monitor-sensor\"><a href=https://samsungtizenos.com/"#content-heart-rate-monitor-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Heart rate monitor sensor<\/h2>\n<p>The heart rate monitor (HRM) sensor measures a person's heart rate in real time.<\/p>\n<p>The following table lists the measurement data that the HRM sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the HRM sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Heartrate<\/td>\n<td><code>int<\/code><\/td>\n<td>Min. value = 0<br>Max. value = 240<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"hrm_batch\"><\/a><\/p>\n<h2 id=\"content-heart-rate-monitor-batch-sensor\"><a href=https://samsungtizenos.com/"#content-heart-rate-monitor-batch-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Heart rate monitor batch sensor<\/h2>\n<p>The heart rate monitor (HRM) batch sensor measures a person's heart rate. The sensor must be power-efficient and support batch processing.<\/p>\n<p>The following table lists the measurement data that the HRM batch sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the HRM batch sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Data<\/td>\n<td><code>IReadOnlyList&lt;HeartRateMonitorBatchData&gt;<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><strong>Table: Measurements contained in HeartRateMonitorBatchData<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Accuracy<\/td>\n<td><code>SensorDataAccuracy<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>State<\/td>\n<td><code>HeartRateMonitorBatchState<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Heartrate: Beats per minute<\/td>\n<td><code>int<\/code><\/td>\n<td>Min. value = 0<br> Max. value = 240<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>RRInterval: R wave-to-R wave interval<\/td>\n<td><code>int<\/code><\/td>\n<td>-<\/td>\n<td>Millisecond<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"hrm_green_batch\"><\/a><\/p>\n<h2 id=\"content-heart-rate-monitor-led-green-batch-sensor\"><a href=https://samsungtizenos.com/"#content-heart-rate-monitor-led-green-batch-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Heart rate monitor LED green batch sensor<\/h2>\n<p>The heart rate monitor (HRM) LED green batch sensor measures the amount of green light that is reflected back from a person's blood vessel. The sensor must be power-efficient and support batch processing.<\/p>\n<p>The following table lists the measurement data that the HRM LED green batch sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the HRM LED green batch sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Data<\/td>\n<td><code>IReadOnlyList&lt;HeartRateMonitorLEDGreenBatchData&gt;<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><strong>Table: Measurements contained in HeartRateMonitorLEDGreenBatchData<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Accuracy<\/td>\n<td><code>SensorDataAccuracy<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Green: HRM green light value<\/td>\n<td><code>uint<\/code><\/td>\n<td>Min. value = 0<br> Max. value = 4194304<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>AccelerationX: X<\/td>\n<td><code>int<\/code><\/td>\n<td>Min. value = -4096<br> Max. value = 4096<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>AccelerationY: Y<\/td>\n<td><code>int<\/code><\/td>\n<td>Min. value = -4096<br> Max. value = 4096<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>AccelerationZ: Z<\/td>\n<td><code>int<\/code><\/td>\n<td>Min. value = -4096<br> Max. value = 4096<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Index<\/td>\n<td><code>int<\/code><\/td>\n<td>Sequential index of sensor event<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"humidity\"><\/a><\/p>\n<h2 id=\"content-humidity-sensor\"><a href=https://samsungtizenos.com/"#content-humidity-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Humidity sensor<\/h2>\n<p>The humidity sensor measures the relative ambient air humidity in percentage.<\/p>\n<p>The following table lists the measurement data that the humidity sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the humidity sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Humidity<\/td>\n<td><code>float<\/code><\/td>\n<td>100<\/td>\n<td>%<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"light\"><\/a><\/p>\n<h2 id=\"content-light-sensor\"><a href=https://samsungtizenos.com/"#content-light-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Light sensor<\/h2>\n<p>The light sensor detects the brightness of ambient light. It can be used to measure the brightness level.<\/p>\n<p>As an example use case, the light sensor can be used to control the brightness of the screen. In a dark environment, the light sensor detects the brightness of the environment and can be used to increase the device screen backlight brightness level. In a brighter environment, the backlight brightness level is lowered to save battery power.<\/p>\n<p>The following table lists the measurement data that the light sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the light sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Level<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = 0<br>Max. value = 45875<\/td>\n<td>Lux<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"lin_accelerometer\"><\/a><\/p>\n<h2 id=\"content-linear-acceleration-sensor\"><a href=https://samsungtizenos.com/"#content-linear-acceleration-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Linear acceleration sensor<\/h2>\n<p>The linear acceleration sensor is derived from the accelerometer by excluding the gravity value, and it measures the user-driven changes in the velocity. The linear acceleration sensor is used to detect the dynamic movement of the device and analyze the user's motion profile. The 3-axis linear acceleration components provide a measure of the combined linear motion subjected to the device in Euclidean space.<\/p>\n<p>The linear acceleration sensor provides 3 components of acceleration (X, Y, and Z), as the following figure illustrates.<\/p>\n<p><strong>Figure: User-acceleration sensor vector and axes<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//sensor_types_useracceleration_vector.png/" alt=\"User-acceleration sensor vector and axes\" \/><\/p>\n<p>The linear acceleration sensor outputs 5 values: 3 Cartesian axis values, a timestamp, and a timespan. The linear acceleration sensor measures and returns axes values in &quot;m\/s<sup>2<\/sup>&quot; (meters per second squared). When a device is accelerated in the \u00b1X, \u00b1Y, or \u00b1Z direction, the corresponding output increases (+) or decreases (-). The acceleration output is shown in the same direction as the user-driven force.<\/p>\n<p>The following table lists the measurement data that the linear acceleration sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the linear acceleration sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -19.6<br>Max. value = 19.6<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -19.6<br>Max. value = 19.6<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -19.6<br>Max. value = 19.6<\/td>\n<td>m\/s<sup>2<\/sup><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"magnetic\"><\/a><\/p>\n<h2 id=\"content-magnetic-sensor\"><a href=https://samsungtizenos.com/"#content-magnetic-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Magnetic sensor<\/h2>\n<p>The magnetic sensor is a 3-axis electronic compass (sometimes referred to as a &quot;magnetometer&quot; or &quot;geomagnetic sensor&quot;). It can also be used in determining the azimuth component of the device orientation provided that the tilt of the device is already computed. The magnetic sensor measures the Earth's magnetic field strength and fluctuations, and splits the measurement into X, Y, and Z components.<\/p>\n<p>The following factors can have an impact on the sensor readings:<\/p>\n<ul>\n<li>The weather or the season of the year<\/li>\n<li>Your location on the planet<\/li>\n<li>Nearby, strong magnetic fields, such as magnets, electric coils, or objects which contain a ferrite element<\/li>\n<\/ul>\n<p>The following table lists the measurement data that the magnetic sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the magnetic sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The magnetic sensor uses the 3-axis Cartesian space coordinate system, as the following figure illustrates.<\/p>\n<p><strong>Figure: Magnetic field vector and axes<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//sensor_types_magnetic_vector.png/" alt=\"Magnetic field vector and axes\" \/><\/p>\n<p><a name=\"orientation\"><\/a><\/p>\n<h2 id=\"content-orientation-sensor\"><a href=https://samsungtizenos.com/"#content-orientation-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Orientation sensor<\/h2>\n<p>The orientation sensor combines the 3-axis accelerometer, 3-axis magnetic sensor, and 3-axis gyroscope to determine the orientation (rotation angles) of the device. The orientation is the output of a software\/hardware-based sensor fusion solution that uses the accelerometer, magnetic sensor, and gyroscope. The orientation sensor output is an alternative representation to the rotation vector sensor output used to determine the rotation of the device, and it is calculated in terms of Euler angles:<\/p>\n<ul>\n<li>Azimuth<\/li>\n<li>Pitch<\/li>\n<li>Roll<\/li>\n<\/ul>\n<p>The following table lists the measurement data that the orientation sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the orientation sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Azimuth<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = 0<br>Max. value = 360<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<tr>\n<td>Pitch<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -180<br>Max. value = 180<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<tr>\n<td>Roll<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -90<br>Max. value = 90<\/td>\n<td>Degrees (\u00b0)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The angular positions are measured using a fixed frame reference (X<del>E<\/del>, Y<del>E<\/del>, Z<del>E<\/del>).<\/p>\n<p><strong>Figure: Angular positions and the fixed frame reference<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//sensor_types_deviceorientation_frame.png/" alt=\"Angular positions and the fixed frame reference\" \/><\/p>\n<h2 id=\"content-pedometer\"><a href=https://samsungtizenos.com/"#content-pedometer\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Pedometer<\/h2>\n<p>The pedometer detects the user's steps, and returns the number of steps taken by the user since the last reboot, while at least 1 application is using the pedometer. The timestamp of the event denotes the time when the last step was taken. In addition to the number of steps, it also returns other tracking data to further describe the user's activity status. For example, it provides the user's moving distance and burned calories. All the values are reset to zero when the system reboots.<\/p>\n<p>Normally, an event handler is invoked whenever a new step is detected. However, to be power-efficient, the sensor can internally accumulate its detected events while the system sleeps. In this case, the accumulated data is reported when the system wakes up, that is, the display is switched on. In addition, even though the display is not switched on explicitly, the sensor can wake up the device to deliver its accumulated data occasionally.<\/p>\n<p>If you want to track the user's steps continuously, do not stop the sensor, to ensure it keeps running. If there is no application listening to the sensor, it stops counting the steps.<\/p>\n<p>The following table lists the measurement data that the pedometer provides.<\/p>\n<p><strong>Table: Measurement data detected by the pedometer<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>StepCount<\/td>\n<td>Min. value = 0<br>Max. value = 2<sup>24<\/sup><\/td>\n<td>Steps<\/td>\n<\/tr>\n<tr>\n<td>WalkStepCount<\/td>\n<td>Min. value = 0<br>Max. value = 2<sup>24<\/sup><\/td>\n<td>Steps<\/td>\n<\/tr>\n<tr>\n<td>RunningStepCount<\/td>\n<td>Min. value = 0<br>Max. value = 2<sup>24<\/sup><\/td>\n<td>Steps<\/td>\n<\/tr>\n<tr>\n<td>MovingDistance<\/td>\n<td>Min. value = 0<\/td>\n<td>Meters<\/td>\n<\/tr>\n<tr>\n<td>CalorieBurned<\/td>\n<td>Min. value = 0<\/td>\n<td>kcal<\/td>\n<\/tr>\n<tr>\n<td>LastSpeed<\/td>\n<td>Min. value = 0<\/td>\n<td>km\/h<\/td>\n<\/tr>\n<tr>\n<td>LastSteppingFrequency<\/td>\n<td>Min. value = 0<\/td>\n<td>Steps\/second<\/td>\n<\/tr>\n<tr>\n<td>LastStepStatus<\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The <code>LastStepStatus<\/code> property is one of the values of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.PedometerState.md/">Tizen.Sensor.PedometerState enumeration: <code>Unknown<\/code>, <code>Stop<\/code>, <code>Walk<\/code>, or <code>Run<\/code>.<\/p>\n<p><a name=\"pressure\"><\/a><\/p>\n<h2 id=\"content-pressure-sensor\"><a href=https://samsungtizenos.com/"#content-pressure-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Pressure sensor<\/h2>\n<p>The pressure sensor measures the atmospheric pressure in the device's surrounding environment.<\/p>\n<p>The following table lists the measurement data that the pressure sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the pressure sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Pressure<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = 260<br>Max. value = 1260<\/td>\n<td>hPa<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"proximity\"><\/a><\/p>\n<h2 id=\"content-proximity-sensor\"><a href=https://samsungtizenos.com/"#content-proximity-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Proximity sensor<\/h2>\n<p>The proximity sensor detects the presence of nearby objects in close proximity to the sensor. It can be used to measure the distance between nearby objects and the device.<\/p>\n<p>As an example use case, the proximity sensor can be used to lock or unlock the device screen. When the device user holds the device to their ear, the proximity sensor detects the user as an object and automatically locks the device screen. When the user moves the device away from their ear to input data, the proximity sensor determines that there are no nearby objects, and unlocks the screen.<\/p>\n<p>The following table lists the measurement data that the proximity sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the proximity sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Proximity<\/td>\n<td><code>ProxmitySensorState<\/code><\/td>\n<td>-<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The <code>ProximitySensorState<\/code> property is one of the values of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.ProximitySensorState.md/">Tizen.Sensor.ProximitySensorState enumeration: <code>Unknown<\/code>, <code>Far<\/code>, or <code>Near<\/code>.<\/p>\n<p><a name=\"rotation\"><\/a><\/p>\n<h2 id=\"content-rotation-vector-sensor\"><a href=https://samsungtizenos.com/"#content-rotation-vector-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Rotation vector sensor<\/h2>\n<p>The rotation vector sensor represents the orientation of the device as a combination of an angle and an axis, in which the device has rotated through a specific angle around an axis (X, Y, or Z). The rotation vector is the output of a software\/hardware-based sensor fusion solution, which uses the accelerometer, gyroscope, and magnetic sensor as inputs to compute the orientation of the device.<\/p>\n<p>The following table lists the measurement data that the rotation vector sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the rotation vector<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Accuracy<\/td>\n<td><code>SensorDataAccuracy<\/code><\/td>\n<td>-<\/td>\n<td>int<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<tr>\n<td>W<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -1<br>Max. value = 1<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"sleep_monitor\"><\/a><\/p>\n<h2 id=\"content-sleep-monitor\"><a href=https://samsungtizenos.com/"#content-sleep-monitor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Sleep monitor<\/h2>\n<p>The sleep monitor tracks the user's sleep quality. Once per minute, it reports whether the user sleeps. As this sensor usually needs to track the sleep quality over several hours, it must be power-efficient and work in a batch manner. While the system sleeps, or the display is off, the sensor keeps its detected data internally. When the sensor is unable to keep more data (its internal buffer is full), it wakes up the system and flushes all collected data. When flushing, the event handler is invoked repeatedly. The timestamp of each event can be used to figure out when the user was sleeping.<\/p>\n<p>The following table lists the measurement data that the sleep monitor provides.<\/p>\n<p><strong>Table: Measurement data detected by the sleep monitor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>SleepState<\/td>\n<td>-<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The <code>SleepState<\/code> property is one of the values of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Sensor.SleepMonitorState.md/">Tizen.Sensor.SleepMonitorState enumeration: <code>Unknown<\/code>, <code>Wake<\/code>, or <code>Sleep<\/code>.<\/p>\n<p>Depending on the device you are using, the available raw sensors are different and the sleep detection algorithm can also vary. In addition to the sleep state field, some specific device models can provide further data, as defined by the model manufacturer.<\/p>\n<p><a name=\"temperature\"><\/a><\/p>\n<h2 id=\"content-temperature-sensor\"><a href=https://samsungtizenos.com/"#content-temperature-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Temperature sensor<\/h2>\n<p>The temperature sensor measures the ambient room temperature in the device's surrounding environment.<\/p>\n<p>The following table lists the measurement data that the temperature sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the temperature sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>Temperature<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -30<br>Max. value = 100<\/td>\n<td>\u00b0C<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"ultraviolet\"><\/a><\/p>\n<h2 id=\"content-ultraviolet-sensor\"><a href=https://samsungtizenos.com/"#content-ultraviolet-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Ultraviolet sensor<\/h2>\n<p>The ultraviolet (UV) sensor measures the ultraviolet index. The sensor detects and provides a measure of the UV rays the device is exposed to.<\/p>\n<p>The following table lists the measurement data that the ultraviolet sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the ultraviolet sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>UltravioletIndex<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = 0<br>Max. value = 15<\/td>\n<td>UV index<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"uncal_gyro\"><\/a><\/p>\n<h2 id=\"content-uncalibrated-gyroscope\"><a href=https://samsungtizenos.com/"#content-uncalibrated-gyroscope\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Uncalibrated gyroscope<\/h2>\n<p>The uncalibrated gyroscope detects angular velocity or angular rates of a device. The 3D uncalibrated gyroscope sensor is considered to be very sensitive in detecting incremental rotation angles. The rotation angles obtained by integrating the angular rates over a longer duration are inaccurate due to the build-up of drift. The uncalibrated gyroscope data also consists of drift compensation values for each axis, which can be used to subtract the drift from the detected angular rates. The values of drift for the 3 axes are obtained from the output of a software\/hardware-based sensor fusion solution.<\/p>\n<p>The following table lists the measurement data that the uncalibrated gyroscope provides.<\/p>\n<p><strong>Table: Measurement data detected by the uncalibrated gyroscope<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Range<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>-<\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>BiasX<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>BiasY<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<tr>\n<td>BiasZ<\/td>\n<td><code>float<\/code><\/td>\n<td>Min. value = -573.0<br>Max. value = 573.0<\/td>\n<td>Degrees\/s (\u00b0\/s)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p><a name=\"uncal_magnetic\"><\/a><\/p>\n<h2 id=\"content-uncalibrated-magnetic-sensor\"><a href=https://samsungtizenos.com/"#content-uncalibrated-magnetic-sensor\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Uncalibrated magnetic sensor<\/h2>\n<p>The uncalibrated magnetic sensor is a 3-axis electronic compass (sometimes referred to as a &quot;magnetometer&quot; or &quot;geomagnetic sensor&quot;). It can also be used in determining the azimuth component of the device orientation provided that the tilt of the device is already computed. It measures the Earth's magnetic field strength and fluctuations, and splits the measurement into X, Y, and Z components. The uncalibrated magnetic sensor is similar in functionality to a magnetic sensor, but does not perform hard iron calibration. Factory calibration and temperature compensation are applied.<\/p>\n<p>The following factors can have an impact on the sensor readings:<\/p>\n<ul>\n<li>The weather or the season of the year<\/li>\n<li>Your location on the planet<\/li>\n<li>Nearby, strong magnetic fields, such as magnets, electric coils, or objects which contain a ferrite element<\/li>\n<\/ul>\n<p>The following table lists the measurement data that the uncalibrated magnetic sensor provides.<\/p>\n<p><strong>Table: Measurement data detected by the uncalibrated magnetic sensor<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Measurement<\/th>\n<th>Type<\/th>\n<th>Unit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Timestamp<\/td>\n<td><code>ulong<\/code><\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>TimeSpan<\/td>\n<td><code>TimeSpan<\/code><\/td>\n<td>Microseconds<\/td>\n<\/tr>\n<tr>\n<td>X<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>Y<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>Z<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>BiasX<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>BiasY<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<tr>\n<td>BiasZ<\/td>\n<td><code>float<\/code><\/td>\n<td>\u00b5T (microteslas)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2 id=\"content-related-information\"><a href=https://samsungtizenos.com/"#content-related-information\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Related information<\/h2>\n<ul>\n<li>Dependencies\n<ul>\n<li>Tizen 4.0 and Higher<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","table_of_content":"<ul class=\"table-of-contents\">\n<li><a href=https://samsungtizenos.com/"#content-device-sensors\">Device Sensors<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-prerequisites\">Prerequisites<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-create-a-sensor-instance\">Create a sensor instance<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-subscribe-to-sensor-events\">Subscribe to sensor events<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-accelerometer\">Accelerometer<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-autorotation-sensor\">AutoRotation sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-geomagnetic-orientation-sensor\">Geomagnetic orientation sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-geomagnetic-rotation-vector-sensor\">Geomagnetic rotation vector sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-gravity-sensor\">Gravity sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-gyroscope\">Gyroscope<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-gyroscope-orientation-sensor\">Gyroscope orientation sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-gyroscope-rotation-vector-sensor\">Gyroscope rotation vector sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-heart-rate-monitor-sensor\">Heart rate monitor sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-heart-rate-monitor-batch-sensor\">Heart rate monitor batch sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-heart-rate-monitor-led-green-batch-sensor\">Heart rate monitor LED green batch sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-humidity-sensor\">Humidity sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-light-sensor\">Light sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-linear-acceleration-sensor\">Linear acceleration sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-magnetic-sensor\">Magnetic sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-orientation-sensor\">Orientation sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-pedometer\">Pedometer<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-pressure-sensor\">Pressure sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-proximity-sensor\">Proximity sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-rotation-vector-sensor\">Rotation vector sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-sleep-monitor\">Sleep monitor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-temperature-sensor\">Temperature sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-ultraviolet-sensor\">Ultraviolet sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-uncalibrated-gyroscope\">Uncalibrated gyroscope<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-uncalibrated-magnetic-sensor\">Uncalibrated magnetic sensor<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-related-information\">Related information<\/a><\/li>\n<\/ul>\n","title":"Device Sensors","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"Dk3cu4p3MTK3mmmeSHrq","name":"documentation::article","path":"docs\/application\/dotnet\/guides\/sensors\/device-sensors","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"099869027b864e6efeec8e873dbc907f4981ddf311c483c33201d34446d14d31"}" wire:effects="[]" wire:id="Dk3cu4p3MTK3mmmeSHrq" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtZGV2aWNlLXNlbnNvcnNcIj48YSBocmVmPVwiI2NvbnRlbnQtZGV2aWNlLXNlbnNvcnNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRldmljZSBTZW5zb3JzPFwvaDE+PGRpdiBkYXRhLWtub3dsZWRnZS1iYXNlLW1ldGFkYXRhPjxcL2Rpdj5cbjxwPllvdSBjYW4gbWFuYWdlIHRoZSBzZW5zb3JzIGluIHRoZSBkZXZpY2UgYW5kIHJlY2VpdmUgZGF0YSBmcm9tIHRoZW0uPFwvcD5cbjxwPlVzaW5nIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5TZW5zb3IubWRcIj5UaXplbi5TZW5zb3I8XC9hPiBuYW1lc3BhY2UsIHlvdSBjYW4gPGEgaHJlZj1cIiNzZW5zb3JcIj5jcmVhdGUgc2Vuc29yIGluc3RhbmNlczxcL2E+LCB3aGljaCBjb3JyZXNwb25kIHRvIHBoeXNpY2FsIG9yIHNvZnR3YXJlLWRlZmluZWQgc2Vuc29yIGRldmljZXMuIFRoZSBzZW5zb3IgaW5zdGFuY2UgaXMgdXNlZCB0byBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGFuZCBjb250cm9sIHRoZSBjb3JyZXNwb25kaW5nIHNlbnNvci48XC9wPlxuPHA+QWZ0ZXIgeW91IGhhdmUgY3JlYXRlZCBhIHNlbnNvciBpbnN0YW5jZSBmb3IgYSBzcGVjaWZpYyBzZW5zb3IgYW5kIDxhIGhyZWY9XCIjc3Vic2NyaWJlXCI+c3Vic2NyaWJlZCB0byBzZW5zb3IgZXZlbnRzPFwvYT4sIHlvdSBjYW4gbW9uaXRvciB0aGUgZGV2aWNlJ3MgaW50ZXJuYWwgc2Vuc29ycyBmb3Igc2Vuc29yIHZhbHVlIGNoYW5nZXMuIFRoZSBhcHBsaWNhdGlvbiBjYW4gcmVjZWl2ZSB0aGUgc2Vuc29yIGRhdGEgb25seSB3aGVuIHRoZSBkYXRhIGlzIG1vZGlmaWVkLjxcL3A+XG48cD5XaGVuIHJ1bm5pbmcgYW4gYXBwbGljYXRpb24gb24gdGhlIGVtdWxhdG9yLCB5b3UgY2FuIHVzZSBFbXVsYXRvciBDb250cm9sIFBhbmVsIHRvIHNpbXVsYXRlIHNlbnNvciBkYXRhIGZvciB0aGUgYXBwbGljYXRpb24uPFwvcD5cbjxwPkEgZGV2aWNlIGNhbiBoYXZlIHZhcmlvdXMgcGh5c2ljYWwgYW5kIHZpcnR1YWwgc2Vuc29ycy4gVGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgc2Vuc29ycyBzdXBwb3J0ZWQgYnkgVGl6ZW4uPFwvcD5cbjxkaXYgY2xhc3M9XCJtZC1hbGVydCBtZC1hbGVydC1ub3RlXCI+XG48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPjxwYXRoIGQ9XCJNMCA4YTggOCAwIDEgMSAxNiAwQTggOCAwIDAgMSAwIDhabTgtNi41YTYuNSA2LjUgMCAxIDAgMCAxMyA2LjUgNi41IDAgMCAwIDAtMTNaTTYuNSA3Ljc1QS43NS43NSAwIDAgMSA3LjI1IDdoMWEuNzUuNzUgMCAwIDEgLjc1Ljc1djIuNzVoLjI1YS43NS43NSAwIDAgMSAwIDEuNWgtMmEuNzUuNzUgMCAwIDEgMC0xLjVoLjI1di0yaC0uMjVhLjc1Ljc1IDAgMCAxLS43NS0uNzVaTTggNmExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJaXCJcLz48XC9zdmc+Tm90ZTxcL3NwYW4+XG48cD5Ob3QgYWxsIGRldmljZXMgc3VwcG9ydCBhbGwgc2Vuc29ycywgc28gZWFjaCBzZW5zb3IgaXMgbm90IG5lY2Vzc2FyaWx5IGF2YWlsYWJsZSBvbiBhbGwgZGV2aWNlcy4gWW91IGNhbiA8YSBocmVmPVwiI3NlbnNvclwiPmNoZWNrIHdoZXRoZXIgYSBzZW5zb3IgaXMgc3VwcG9ydGVkPFwvYT4uPFwvcD5cbjxcL2Rpdj5cbjxwPjxzdHJvbmc+VGFibGU6IFN1cHBvcnRlZCBzZW5zb3IgdHlwZXM8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPlN1cHBvcnRlZCBzZW5zb3IgdHlwZXM8XC90aD5cbjx0aD48XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cIiNhY2NlbGVyb21ldGVyXCI+QWNjZWxlcm9tZXRlcjxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cIiNocm1fYmF0Y2hcIj5IZWFydCByYXRlIG1vbml0b3IgYmF0Y2ggc2Vuc29yPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI3Byb3hpbWl0eVwiPlByb3hpbWl0eSBzZW5zb3I8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cIiNhdXRvX3JvdGF0aW9uXCI+QXV0b1JvdGF0aW9uIHNlbnNvcjxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cIiNocm1fZ3JlZW5fYmF0Y2hcIj5IZWFydCByYXRlIG1vbml0b3IgTEVEIGdyZWVuIGJhdGNoIHNlbnNvcjxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cIiNyb3RhdGlvblwiPlJvdGF0aW9uIHZlY3RvciBzZW5zb3I8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cIiNtYWdfb3JpZW50YXRpb25cIj5HZW9tYWduZXRpYyBvcmllbnRhdGlvbiBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCIjaHVtaWRpdHlcIj5IdW1pZGl0eSBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCIjc2xlZXBfbW9uaXRvclwiPlNsZWVwIG1vbml0b3I8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cIiNtYWdfcm90YXRpb25cIj5HZW9tYWduZXRpYyByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI2xpZ2h0XCI+TGlnaHQgc2Vuc29yPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI3RlbXBlcmF0dXJlXCI+VGVtcGVyYXR1cmUgc2Vuc29yPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCIjZ3Jhdml0eVwiPkdyYXZpdHkgc2Vuc29yPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI2xpbl9hY2NlbGVyb21ldGVyXCI+TGluZWFyIGFjY2VsZXJhdGlvbiBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCIjdWx0cmF2aW9sZXRcIj5VbHRyYXZpb2xldCBzZW5zb3I8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cIiNneXJvXCI+R3lyb3Njb3BlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI21hZ25ldGljXCI+TWFnbmV0aWMgc2Vuc29yPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI3VuY2FsX2d5cm9cIj5VbmNhbGlicmF0ZWQgZ3lyb3Njb3BlPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCIjZ3lyb19vcmllbnRhdGlvblwiPkd5cm9zY29wZSBvcmllbnRhdGlvbiBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCIjb3JpZW50YXRpb25cIj5PcmllbnRhdGlvbiBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCIjdW5jYWxfbWFnbmV0aWNcIj5VbmNhbGlicmF0ZWQgbWFnbmV0aWMgc2Vuc29yPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxhIGhyZWY9XCIjZ3lyb19yb3RhdGlvblwiPkd5cm9zY29wZSByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiI3BlZG9tZXRlclwiPlBlZG9tZXRlcjxcL2E+PFwvdGQ+XG48dGQ+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48YSBocmVmPVwiI2hybVwiPkhlYXJ0IHJhdGUgbW9uaXRvciBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxhIGhyZWY9XCIjcHJlc3N1cmVcIj5QcmVzc3VyZSBzZW5zb3I8XC9hPjxcL3RkPlxuPHRkPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxoMiBpZD1cImNvbnRlbnQtcHJlcmVxdWlzaXRlc1wiPjxhIGhyZWY9XCIjY29udGVudC1wcmVyZXF1aXNpdGVzXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5QcmVyZXF1aXNpdGVzPFwvaDI+XG48cD5UbyBlbmFibGUgeW91ciBhcHBsaWNhdGlvbiB0byB1c2UgdGhlIGRldmljZSBzZW5zb3IgZnVuY3Rpb25hbGl0aWVzLCBmb2xsb3cgdGhlIHN0ZXBzIGJlbG93OjxcL3A+XG48b2w+XG48bGk+XG48cD5UbyB1c2UgYW55IGhlYWx0aC1yZWxhdGVkIHNlbnNvcnMsIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gcmVxdWVzdCBwZXJtaXNzaW9uIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHByaXZpbGVnZSB0byB0aGUgPGNvZGU+dGl6ZW4tbWFuaWZlc3QueG1sPFwvY29kZT4gZmlsZTo8XC9wPlxuPGNvZGUgY2xhc3M9XCJsYW5ndWFnZS1YTUxcIj4mbHQ7cHJpdmlsZWdlcyZndDtcbiAgICAmbHQ7cHJpdmlsZWdlJmd0O2h0dHA6XC9cL3RpemVuLm9yZ1wvcHJpdmlsZWdlXC9oZWFsdGhpbmZvJmx0O1wvcHJpdmlsZWdlJmd0O1xuJmx0O1wvcHJpdmlsZWdlcyZndDtcbjxcL2NvZGU+XG48XC9saT5cbjxsaT5cbjxwPkluY2x1ZGUgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLlNlbnNvci5tZFwiPlRpemVuLlNlbnNvcjxcL2E+IG5hbWVzcGFjZSBpbiB5b3VyIGFwcGxpY2F0aW9uOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dXNpbmc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlRpemVuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5TZW5zb3I8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48XC9vbD5cbjxwPjxhIG5hbWU9XCJzZW5zb3JcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LWNyZWF0ZS1hLXNlbnNvci1pbnN0YW5jZVwiPjxhIGhyZWY9XCIjY29udGVudC1jcmVhdGUtYS1zZW5zb3ItaW5zdGFuY2VcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkNyZWF0ZSBhIHNlbnNvciBpbnN0YW5jZTxcL2gyPlxuPHA+SWYgYW4gYXBwbGljYXRpb24gd2FudHMgdG8gb2JzZXJ2ZSBkYXRhIGZyb20gYSBzcGVjaWZpYyBzZW5zb3IsIHlvdSBtdXN0IGNyZWF0ZSBhIHNlbnNvciBpbnN0YW5jZSBieSBmb2xsb3dpbmcgdGhlc2Ugc3RlcHM6PFwvcD5cbjx1bD5cbjxsaT5cbjxwPkZvciBhIHNwZWNpZmljIHN1cHBvcnRlZCBzZW5zb3IgdHlwZSwgYSBkZXZpY2UgY2FuIGhhdmUgbXVsdGlwbGUgc2Vuc29ycy48XC9wPlxuPHA+WW91IGNhbiBhY3F1aXJlIHRoZSBkZWZhdWx0IHNlbnNvciAoZGVzaWduYXRlZCBieSB0aGUgZGV2aWNlIHZlbmRvcikgb2YgYSBnaXZlbiB0eXBlLiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRvIGdldCB0aGUgZGVmYXVsdCBhY2NlbGVyb21ldGVyIG9mIHRoZSBkZXZpY2UgYnkgY3JlYXRpbmcgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLlNlbnNvci5BY2NlbGVyb21ldGVyLm1kXCI+VGl6ZW4uU2Vuc29yLkFjY2VsZXJvbWV0ZXI8XC9hPiBjbGFzczo8XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnRyeTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPns8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52YXI8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPnNlbnNvcjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+bmV3PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5BY2NlbGVyb21ldGVyPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oKTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Y2F0Y2g8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAoPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5Ob3RTdXBwb3J0ZWRFeGNlcHRpb248XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPik8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj57PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkE3MzdEOy0tc2hpa2ktZGFyazojNkE3MzdEXCI+ICAgIFwvXC9cLyBBY2NlbGVyb21ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGN1cnJlbnQgZGV2aWNlLjxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZBNzM3RDstLXNoaWtpLWRhcms6IzZBNzM3RFwiPiAgICBcL1wvXC8gWW91IGNhbiBhbHNvIGNoZWNrIHdoZXRoZXIgdGhlIGFjY2VsZXJvbWV0ZXIgaXMgc3VwcG9ydGVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0eTo8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiM2QTczN0Q7LS1zaGlraS1kYXJrOiM2QTczN0RcIj4gICAgXC9cL1wvIHZhciBzdXBwb3J0ZWQgPSBBY2NlbGVyb21ldGVyLklzU3VwcG9ydGVkOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPn08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5JZiB5b3Ugd2FudCB0byBhY3F1aXJlIGEgc3BlY2lmaWMgc2Vuc29yIGZyb20gbXVsdGlwbGUgb25lcyBvZiB0aGUgc2FtZSB0eXBlLCBzZXQgdGhlIDxjb2RlPmluZGV4PFwvY29kZT4gcGFyYW1ldGVyIG9mIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBhY2NvcmRpbmdseTo8XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnRyeTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPns8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiM2QTczN0Q7LS1zaGlraS1kYXJrOiM2QTczN0RcIj4gICAgXC9cL1wvIFlvdSBjYW4gcmV0cmlldmUgdGhlIHRvdGFsIGNvdW50IG9mIGFjY2VsZXJvbWV0ZXJzIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkE3MzdEOy0tc2hpa2ktZGFyazojNkE3MzdEXCI+ICAgIFwvXC9cLyB2YXIgY291bnQgPSBBY2NlbGVyb21ldGVyLkNvdW50OzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52YXI8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPnNlbnNvcjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+bmV3PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5BY2NlbGVyb21ldGVyPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMDVDQzU7LS1zaGlraS1kYXJrOiM3OUI4RkZcIj4wPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pOyA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZBNzM3RDstLXNoaWtpLWRhcms6IzZBNzM3RFwiPlwvXC9cLyBJbmRleCBzdGFydHMgYXQgMDxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPn08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5jYXRjaDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICg8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk5vdFN1cHBvcnRlZEV4Y2VwdGlvbjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPns8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiM2QTczN0Q7LS1zaGlraS1kYXJrOiM2QTczN0RcIj4gICAgXC9cL1wvIEFjY2VsZXJvbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgY3VycmVudCBkZXZpY2UuPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+fTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+PFwvY29kZT48XC9wcmU+XG48XC9saT5cbjxcL3VsPlxuPHA+PGEgbmFtZT1cInN1YnNjcmliZVwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtc3Vic2NyaWJlLXRvLXNlbnNvci1ldmVudHNcIj48YSBocmVmPVwiI2NvbnRlbnQtc3Vic2NyaWJlLXRvLXNlbnNvci1ldmVudHNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlN1YnNjcmliZSB0byBzZW5zb3IgZXZlbnRzPFwvaDI+XG48cD5JZiBhIHNlbnNvciBpbnN0YW5jZSBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSwgaXQgaXMgYWJsZSB0byBvYnNlcnZlIHNlbnNvciBkYXRhIGNoYW5nZXMgdGhyb3VnaCBhbiBldmVudCBoYW5kbGVyLiBJbiBhZGRpdGlvbiwgeW91IGNhbiBzZXQgc2V2ZXJhbCBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgdGhlIHVwZGF0ZSBpbnRlcnZhbCBvZiB0aGUgc2Vuc29yIGRhdGEgYW5kIHRoZSBwb3dlci1zYXZlIGJlaGF2aW9yIG9mIHRoZSBzZW5zb3IuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gc2V0IHRoZSBwYXJhbWV0ZXJzIGFuZCBsaXN0ZW4gZm9yIGNoYW5nZXMgaW4gc2Vuc29yIGRhdGE6PFwvcD5cbjxvbD5cbjxsaT5cbjxwPlRvIGxpc3RlbiBmb3Igc2Vuc29yIGV2ZW50cywgZGVmaW5lIGEgaGFuZGxlciBhbmQgcmVnaXN0ZXIgZm9yIHRoZSA8Y29kZT5EYXRhVXBkYXRlZDxcL2NvZGU+IGV2ZW50IGZyb20gdGhlIHNlbnNvcjo8XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkV2ZW50SGFuZGxlcjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+Jmx0OzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+QWNjZWxlcm9tZXRlckRhdGFVcGRhdGVkRXZlbnRBcmdzPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4mZ3Q7IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+aGFuZGxlcjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+bnVsbDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+OzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPmhhbmRsZXIgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj49PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gKDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+c2VuZGVyPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KSA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPj0mZ3Q7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICBMb2cuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5JbmZvPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oTE9HVEFHLCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiZxdW90O1g6ICZxdW90OzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+KzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IGUuWCk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIExvZy48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkluZm88XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPihMT0dUQUcsIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+JnF1b3Q7WTogJnF1b3Q7PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj4rPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gZS5ZKTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgTG9nLjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+SW5mbzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KExPR1RBRywgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4mcXVvdDtaOiAmcXVvdDs8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPis8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiBlLlopOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPn07PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPnNlbnNvci5EYXRhVXBkYXRlZCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPis9PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gaGFuZGxlcjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5TdGFydCB0aGUgc2Vuc29yIHdpdGggdGhlIDxjb2RlPlN0YXJ0KCk8XC9jb2RlPiBtZXRob2Qgb2YgdGhlIGFwcHJvcHJpYXRlIDxjb2RlPlRpemVuLlNlbnNvci5YWFg8XC9jb2RlPiBjbGFzcyAoaW5oZXJpdGVkIGZyb20gPGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uU2Vuc29yLlNlbnNvci5tZFwiPlRpemVuLlNlbnNvci5TZW5zb3I8XC9hPik6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj5zZW5zb3IuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5TdGFydDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KCk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxwPlRoZSBldmVudCBoYW5kbGVyIHN0YXJ0cyB0byBiZSBjYWxsZWQgYXQgbGVhc3Qgb25jZSBwZXIgdGhlIGdpdmVuIGludGVydmFsLiBZb3UgY2FuIHN0YXJ0IG11bHRpcGxlIHNlbnNvcnMgb2YgdGhlIHNhbWUgdHlwZSB3aXRoIGRpZmZlcmVudCBpbnRlcnZhbHMuIEluIHRoaXMgY2FzZSwgdGhlIHNob3J0ZXN0IGludGVydmFsIGlzIGNob3Nlbi48XC9wPlxuPHA+U29tZSBzZW5zb3JzIGFyZSBldmVudC1kcml2ZW4sIG1lYW5pbmcgdGhhdCB0aGV5IGVtaXQgc2Vuc29yIGV2ZW50cyBvbmx5IGlmIHRoZWlyIGRhdGEgY2hhbmdlcy4gRm9yIGV4YW1wbGUsIHRoZSBwcm94aW1pdHkgc2Vuc29yIGVtaXRzIGl0cyBkYXRhIG9ubHkgaWYgdGhlIHByb3hpbWl0eSB2YWx1ZSBjaGFuZ2VzLiBGb3IgZXZlbnQtZHJpdmVuIHNlbnNvcnMsIHRoZSB1cGRhdGUgaW50ZXJ2YWwgaXMgaWdub3JlZC48XC9wPlxuPFwvbGk+XG48bGk+XG48cD5XaGlsZSB0aGUgc2Vuc29yIGlzIHJ1bm5pbmcsIHlvdSBjYW4gY2hhbmdlIHRoZSBzZW5zb3Igc2V0dGluZ3M6PFwvcD5cbjx1bD5cbjxsaT5cbjxwPllvdSBjYW4gY2hhbmdlIHRoZSBzZW5zb3IgdXBkYXRlIGludGVydmFsIGJ5IGFkanVzdGluZyB0aGUgPGNvZGU+SW50ZXJ2YWw8XC9jb2RlPiBwcm9wZXJ0eSBvZiB0aGUgc2Vuc29yIGluc3RhbmNlOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+c2Vuc29yLkludGVydmFsIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+MjAwPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj47PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxwPlRoZSBhYm92ZSBleGFtcGxlIGNoYW5nZXMgdGhlIHVwZGF0ZSBpbnRlcnZhbCBvZiB0aGUgc2Vuc29yIHRvIDIwMCBtcy48XC9wPlxuPFwvbGk+XG48bGk+XG48cD5Zb3UgY2FuIGNoYW5nZSB0aGUgcG93ZXItc2F2ZSBiZWhhdmlvciBvZiB0aGUgc2Vuc29yLjxcL3A+XG48cD5CeSBkZWZhdWx0LCB0aGUgc2Vuc29yIGF1dG9tYXRpY2FsbHkgc3RvcHMgbGlzdGVuaW5nIGZvciB0aGUgc2Vuc29yIGRhdGEsIGlmIHRoZSBkaXNwbGF5IGlzIHN3aXRjaGVkIG9mZiwgb3IgaWYgdGhlIGRldmljZSBnb2VzIHRvIHRoZSBwb3dlci1zYXZlIG1vZGUuIFlvdSBjYW4gb3ZlcnJpZGUgc3VjaCBiZWhhdmlvciBieSBzZXR0aW5nIHRoZSA8Y29kZT5QYXVzZVBvbGljeTxcL2NvZGU+IHByb3BlcnR5IG9mIHRoZSBzZW5zb3IgaW5zdGFuY2UsIHVzaW5nIHZhbHVlcyBvZiB0aGUgPGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uU2Vuc29yLlNlbnNvclBhdXNlUG9saWN5Lm1kXCI+VGl6ZW4uU2Vuc29yLlNlbnNvclBhdXNlUG9saWN5PFwvYT4gZW51bWVyYXRpb246PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj5zZW5zb3IuUGF1c2VQb2xpY3kgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj49PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gU2Vuc29yUGF1c2VQb2xpY3kuRGlzcGxheU9mZjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPHA+VGhlIGFib3ZlIGV4YW1wbGUgbWFrZXMgdGhlIHNlbnNvciBsaXN0ZW4gZm9yIHRoZSBzZW5zb3IgZGF0YSByZWdhcmRsZXNzIG9mIHRoZSBkaXNwbGF5IHN0YXRlIGFuZCB0aGUgcG93ZXItc2F2ZSBtb2RlLiBIb3dldmVyLCBpdCBkb2VzIG5vdCBwcmV2ZW50IHRoZSBkZXZpY2UgZnJvbSBnb2luZyB0byBzbGVlcCBtb2RlLiBUbyBsaXN0ZW4gZm9yIHRoZSBzZW5zb3IgZGF0YSwgdGhlIGRldmljZSBtdXN0IGJlIGF3YWtlLjxcL3A+XG48XC9saT5cbjxcL3VsPlxuPFwvbGk+XG48bGk+XG48cD5XaGVuIHRoZSBzZW5zb3IgZGF0YSBpcyBubyBsb25nZXIgbmVlZGVkLCBzdG9wIHRoZSBzZW5zb3IgYW5kIGRlcmVnaXN0ZXIgdGhlIGV2ZW50IGhhbmRsZXI6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj5zZW5zb3IuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5TdG9wPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oKTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj5zZW5zb3IuRGF0YVVwZGF0ZWQgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj4tPTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IGhhbmRsZXI7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxcL2xpPlxuPGxpPlxuPHA+V2hlbiBhIHNlbnNvciBpbnN0YW5jZSBpcyBubyBsb25nZXIgbmVlZGVkLCBkaXNwb3NlIG9mIGl0cyByZXNvdXJjZXMgZXhwbGljaXRseTo8XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPnNlbnNvci48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkRpc3Bvc2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPigpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+PFwvY29kZT48XC9wcmU+XG48XC9saT5cbjxcL29sPlxuPGgyIGlkPVwiY29udGVudC1hY2NlbGVyb21ldGVyXCI+PGEgaHJlZj1cIiNjb250ZW50LWFjY2VsZXJvbWV0ZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkFjY2VsZXJvbWV0ZXI8XC9oMj5cbjxwPlRoZSBhY2NlbGVyb21ldGVyIG1lYXN1cmVzIGNoYW5nZXMgaW4gdGhlIHZlbG9jaXR5IG9mIGEgZGV2aWNlLiBJdCBpcyBhIGNvbWJpbmF0aW9uIG9mIGdyYXZpdHkgYW5kIGxpbmVhciBhY2NlbGVyYXRpb24gY29tcG9uZW50cy4gVGhlIGFjY2VsZXJvbWV0ZXIgbWVhc3VyZXMgdGhlIGRldmljZSdzIGFjY2VsZXJvbWV0ZXIgdmVjdG9yIGluIDMgYXhlcyByZWxhdGl2ZSB0byBpdHMgYm9keSBmcmFtZS48XC9wPlxuPHA+QW4gYWNjZWxlcmF0aW9uIG9mIDFnIGFsd2F5cyBleGlzdHMgb24gdGhlIGF4aXMgYWxpZ25lZCB0byBFYXJ0aCdzIGdyYXZpdHkuIElmIHRoZSBkZXZpY2UgaXMgYXQgcmVzdCwgdGhlIHNlbnNvciBkYXRhIHJlYWRzIDFnICh0aGUgZ3Jhdml0eSBvZmZzZXQpIG9uIG9uZSBvZiB0aGUgZGV2aWNlIGF4ZXMgYW5kIHRlbGxzIHlvdSB3aGljaCBkZXZpY2UgYXhpcyBpcyBhbGlnbmVkIHRvIHRoZSBkaXJlY3Rpb24gb2YgZ3Jhdml0eS4gQSBmYWxsaW5nIGRldmljZSB0aGF0IGhhcyByZWFjaGVkIHRlcm1pbmFsIHZlbG9jaXR5IGlkZWFsbHkgc2hvd3MgdGhlIGFjY2VsZXJvbWV0ZXIgdmFsdWUgb2YgMCBvbiBhbGwgYXhlcy4gVGhlIGNoYW5nZSBpbiB0aGUgZWZmZWN0IG9mIEVhcnRoJ3MgZ3Jhdml0eSBpcyBvYnNlcnZlZCBvbiB0aGUgMyBkZXZpY2UgYXhlcyBieSByb3RhdGluZyB0aGUgZGV2aWNlIGFsb25nIGFueSBvZiB0aGUgMyBheGVzLjxcL3A+XG48cD5UaGUgbGluZWFyIGFjY2VsZXJhdGlvbiBjb21wb25lbnRzIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIG1lYXN1cmUgb2YgdGhlIGxpbmVhciBtb3Rpb24gc3ViamVjdGVkIG9uIHRoZSBkZXZpY2UgY2FuIGJlIG9idGFpbmVkIGJ5IHJlbW92aW5nIHRoZSBncmF2aXR5IGNvbXBvbmVudHMgZnJvbSB0aGUgYWNjZWxlcm9tZXRlciBkYXRhLjxcL3A+XG48cD5UaGUgYWNjZWxlcm9tZXRlciBwcm92aWRlcyAzIGNvbXBvbmVudHMgb2YgYWNjZWxlcmF0aW9uIChYLCBZLCBhbmQgWiksIGFzIHRoZSBmb2xsb3dpbmcgZmlndXJlIGlsbHVzdHJhdGVzLjxcL3A+XG48cD48c3Ryb25nPkZpZ3VyZTogQWNjZWxlcm9tZXRlciB2ZWN0b3IgYW5kIGF4ZXM8XC9zdHJvbmc+PFwvcD5cbjxwPjxpbWcgc3JjPVwibWVkaWFcL3NlbnNvcl90eXBlc19hY2NlbGVyb21ldGVyX3ZlY3Rvci5wbmdcIiBhbHQ9XCJBY2NlbGVyb21ldGVyIHZlY3RvciBhbmQgYXhlc1wiIFwvPjxcL3A+XG48cD5UaGUgYWNjZWxlcm9tZXRlciBvdXRwdXRzIDUgdmFsdWVzOiAzIENhcnRlc2lhbiBheGlzIHZhbHVlcywgYSB0aW1lc3RhbXAsIGFuZCBhIHRpbWVzcGFuLiBUaGUgYWNjZWxlcm9tZXRlciBzZW5zb3IgbWVhc3VyZXMgYW5kIHJldHVybnMgdGhlIGF4ZXMnIHZhbHVlcyBpbiAmcXVvdDttXC9zPHN1cD4yPFwvc3VwPiZxdW90OyAobWV0ZXJzIHBlciBzZWNvbmQgc3F1YXJlZCkuIFdoZW4gYSBkZXZpY2UgaXMgbW92ZWQgaW4gdGhlIFx1MDBiMVgsIFx1MDBiMVksIG9yIFx1MDBiMVogZGlyZWN0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgaW5jcmVhc2VzICgrKSBvciBkZWNyZWFzZXMgKC0pLjxcL3A+XG48cD5UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIHRoZSBtZWFzdXJlbWVudCBkYXRhIHRoYXQgdGhlIGFjY2VsZXJvbWV0ZXIgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIGFjY2VsZXJvbWV0ZXI8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE5LjY8YnI+TWF4LiB2YWx1ZSA9IDE5LjY8XC90ZD5cbjx0ZD5tXC9zPHN1cD4yPFwvc3VwPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WTxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE5LjY8YnI+TWF4LiB2YWx1ZSA9IDE5LjY8XC90ZD5cbjx0ZD5tXC9zPHN1cD4yPFwvc3VwPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WjxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE5LjY8YnI+TWF4LiB2YWx1ZSA9IDE5LjY8XC90ZD5cbjx0ZD5tXC9zPHN1cD4yPFwvc3VwPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFjY2VsZXJvbWV0ZXIgb3V0cHV0IGZvciBhIGRldmljZSBhdCByZXN0LjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBBY2NlbGVyb21ldGVyIG91dHB1dCBmb3IgYSBkZXZpY2UgYXQgcmVzdDxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+UG9zaXRpb248XC90aD5cbjx0aD4xPFwvdGg+XG48dGg+MjxcL3RoPlxuPHRoPjM8XC90aD5cbjx0aD40PFwvdGg+XG48dGg+NTxcL3RoPlxuPHRoPjY8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+RGlhZ3JhbTxcL3RkPlxuPHRkPjxpbWcgc3JjPVwibWVkaWFcL3VpeF9hY2NlbGVyYXRpb25fc2Vuc29yX291dHB1dF91cF90b3AucG5nXCIgYWx0PVwiQWNjZWxlcm9tZXRlciBvdXRwdXRcIiBcLz48XC90ZD5cbjx0ZD48aW1nIHNyYz1cIm1lZGlhXC91aXhfYWNjZWxlcmF0aW9uX3NlbnNvcl9vdXRwdXRfdXBfbGVmdC5wbmdcIiBhbHQ9XCJBY2NlbGVyb21ldGVyIG91dHB1dFwiIFwvPjxcL3RkPlxuPHRkPjxpbWcgc3JjPVwibWVkaWFcL3VpeF9hY2NlbGVyYXRpb25fc2Vuc29yX291dHB1dF91cF9kb3duLnBuZ1wiIGFsdD1cIkFjY2VsZXJvbWV0ZXIgb3V0cHV0XCIgXC8+PFwvdGQ+XG48dGQ+PGltZyBzcmM9XCJtZWRpYVwvdWl4X2FjY2VsZXJhdGlvbl9zZW5zb3Jfb3V0cHV0X3VwX3JpZ2h0LnBuZ1wiIGFsdD1cIkFjY2VsZXJvbWV0ZXIgb3V0cHV0XCIgXC8+PFwvdGQ+XG48dGQ+PGltZyBzcmM9XCJtZWRpYVwvdWl4X2FjY2VsZXJhdGlvbl9zZW5zb3Jfb3V0cHV0X3RvcF9ib3R0b20ucG5nXCIgYWx0PVwiQWNjZWxlcm9tZXRlciBvdXRwdXRcIiBcLz48XC90ZD5cbjx0ZD48aW1nIHNyYz1cIm1lZGlhXC91aXhfYWNjZWxlcmF0aW9uX3NlbnNvcl9vdXRwdXRfYm90dG9tX3RvcC5wbmdcIiBhbHQ9XCJBY2NlbGVyb21ldGVyIG91dHB1dFwiIFwvPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WDxcL3RkPlxuPHRkPjBnPFwvdGQ+XG48dGQ+MWc8XC90ZD5cbjx0ZD4wZzxcL3RkPlxuPHRkPi0xZzxcL3RkPlxuPHRkPjBnPFwvdGQ+XG48dGQ+MGc8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlk8XC90ZD5cbjx0ZD4xZzxcL3RkPlxuPHRkPjBnPFwvdGQ+XG48dGQ+LTFnPFwvdGQ+XG48dGQ+MGc8XC90ZD5cbjx0ZD4wZzxcL3RkPlxuPHRkPjBnPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5aPFwvdGQ+XG48dGQ+MGc8XC90ZD5cbjx0ZD4wZzxcL3RkPlxuPHRkPjBnPFwvdGQ+XG48dGQ+MGc8XC90ZD5cbjx0ZD4xZzxcL3RkPlxuPHRkPi0xZzxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+QXhpcyB1cCAoZG93bik8XC90ZD5cbjx0ZD5ZPFwvdGQ+XG48dGQ+WDxcL3RkPlxuPHRkPi1ZPFwvdGQ+XG48dGQ+LVg8XC90ZD5cbjx0ZD5aPFwvdGQ+XG48dGQ+LVo8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlgtcG9sYXJpdHk8XC90ZD5cbjx0ZD4wPFwvdGQ+XG48dGQ+KzxcL3RkPlxuPHRkPjA8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+MDxcL3RkPlxuPHRkPjA8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlktcG9sYXJpdHk8XC90ZD5cbjx0ZD4rPFwvdGQ+XG48dGQ+MDxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD4wPFwvdGQ+XG48dGQ+MDxcL3RkPlxuPHRkPjA8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlotcG9sYXJpdHk8XC90ZD5cbjx0ZD4wPFwvdGQ+XG48dGQ+MDxcL3RkPlxuPHRkPjA8XC90ZD5cbjx0ZD4wPFwvdGQ+XG48dGQ+KzxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwiYXV0b19yb3RhdGlvblwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtYXV0b3JvdGF0aW9uLXNlbnNvclwiPjxhIGhyZWY9XCIjY29udGVudC1hdXRvcm90YXRpb24tc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5BdXRvUm90YXRpb24gc2Vuc29yPFwvaDI+XG48cD5UaGUgQXV0b1JvdGF0aW9uIHNlbnNvciBpcyBhIHNvZnR3YXJlIHNlbnNvciB0aGF0IHVzZXMgYW4gYWNjZWxlcm9tZXRlciB0byBjb21wdXRlIHRoZSBvcmllbnRhdGlvbiBvZiBhIGRldmljZS4gVGhpcyBzZW5zb3IgaGVscHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZXZpY2UgaXMgcGxhY2VkIGluIGEgbGFuZHNjYXBlIG9yIHBvcnRyYWl0IG9yaWVudGF0aW9uLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBBdXRvUm90YXRpb24gc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkFjY3VyYWN5PFwvdGQ+XG48dGQ+PGNvZGU+U2Vuc29yRGF0YUFjY3VyYWN5PFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+aW50PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5Sb3RhdGlvbjxcL3RkPlxuPHRkPjxjb2RlPkF1dG9Sb3RhdGlvblN0YXRlPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8Y29kZT5BdXRvUm90YXRpb25TdGF0ZTxcL2NvZGU+IHByb3BlcnR5IGlzIG9uZSBvZiB0aGUgdmFsdWVzIG9mIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5TZW5zb3IuQXV0b1JvdGF0aW9uU3RhdGUubWRcIj5UaXplbi5TZW5zb3IuQXV0b1JvdGF0aW9uU3RhdGU8XC9hPiBlbnVtZXJhdGlvbjogPGNvZGU+RGVncmVlXzA8XC9jb2RlPiwgPGNvZGU+RGVncmVlXzkwPFwvY29kZT4sIDxjb2RlPkRlZ3JlZV8xODA8XC9jb2RlPiwgb3IgPGNvZGU+RGVncmVlXzI3MDxcL2NvZGU+LjxcL3A+XG48cD48YSBuYW1lPVwibWFnX29yaWVudGF0aW9uXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC1nZW9tYWduZXRpYy1vcmllbnRhdGlvbi1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtZ2VvbWFnbmV0aWMtb3JpZW50YXRpb24tc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5HZW9tYWduZXRpYyBvcmllbnRhdGlvbiBzZW5zb3I8XC9oMj5cbjxwPlRoZSBnZW9tYWduZXRpYyBvcmllbnRhdGlvbiBzZW5zb3IgY29tYmluZXMgdGhlIDMtYXhpcyBhY2NlbGVyb21ldGVyIGFuZCAzLWF4aXMgbWFnbmV0aWMgc2Vuc29yIHRvIGRldGVybWluZSB0aGUgb3JpZW50YXRpb24gKHJvdGF0aW9uIGFuZ2xlcykgb2YgdGhlIGRldmljZS4gVGhlIGdlb21hZ25ldGljIG9yaWVudGF0aW9uIHNlbnNvciBpcyBzaW1pbGFyIHRvIHRoZSBvcmllbnRhdGlvbiBzZW5zb3IgYnV0IGRvZXMgbm90IHVzZSBhIGd5cm9zY29wZS4gVGhlIGdlb21hZ25ldGljIG9yaWVudGF0aW9uIGlzIHRoZSBvdXRwdXQgb2YgYSBzb2Z0d2FyZVwvaGFyZHdhcmUtYmFzZWQgc2Vuc29yIGZ1c2lvbiBzb2x1dGlvbiB0aGF0IHVzZXMgdGhlIGFjY2VsZXJvbWV0ZXIgYW5kIG1hZ25ldGljIHNlbnNvci4gVGhlIGdlb21hZ25ldGljIG9yaWVudGF0aW9uIHNlbnNvciBvdXRwdXQgaXMgYW4gYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb24gdG8gdGhlIGdlb21hZ25ldGljIHJvdGF0aW9uIHZlY3RvciBzZW5zb3Igb3V0cHV0IHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByb3RhdGlvbiBvZiB0aGUgZGV2aWNlLCBhbmQgaXQgaXMgY2FsY3VsYXRlZCBpbiB0ZXJtcyBvZiBFdWxlciBhbmdsZXM6PFwvcD5cbjx1bD5cbjxsaT5BemltdXRoPFwvbGk+XG48bGk+UGl0Y2g8XC9saT5cbjxsaT5Sb2xsPFwvbGk+XG48XC91bD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgZ2VvbWFnbmV0aWMgb3JpZW50YXRpb24gc2Vuc29yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBnZW9tYWduZXRpYyBvcmllbnRhdGlvbiBzZW5zb3I8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+QXppbXV0aDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxicj5NYXguIHZhbHVlID0gMzYwPFwvdGQ+XG48dGQ+RGVncmVlcyAoXHUwMGIwKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+UGl0Y2g8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xODA8YnI+TWF4LiB2YWx1ZSA9IDE4MDxcL3RkPlxuPHRkPkRlZ3JlZXMgKFx1MDBiMCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlJvbGw8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC05MDxicj5NYXguIHZhbHVlID0gOTA8XC90ZD5cbjx0ZD5EZWdyZWVzIChcdTAwYjApPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGFuZ3VsYXIgcG9zaXRpb25zIGFyZSBtZWFzdXJlZCB1c2luZyBhIGZpeGVkIGZyYW1lIHJlZmVyZW5jZSAoWDxkZWw+RTxcL2RlbD4sIFk8ZGVsPkU8XC9kZWw+LCBaPGRlbD5FPFwvZGVsPikuPFwvcD5cbjxwPjxhIG5hbWU9XCJtYWdfcm90YXRpb25cIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LWdlb21hZ25ldGljLXJvdGF0aW9uLXZlY3Rvci1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtZ2VvbWFnbmV0aWMtcm90YXRpb24tdmVjdG9yLXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+R2VvbWFnbmV0aWMgcm90YXRpb24gdmVjdG9yIHNlbnNvcjxcL2gyPlxuPHA+VGhlIGdlb21hZ25ldGljIHJvdGF0aW9uIHZlY3RvciBzZW5zb3IgaXMgdGhlIG91dHB1dCBvZiBhIHNvZnR3YXJlXC9oYXJkd2FyZS1iYXNlZCBzZW5zb3IgZnVzaW9uIHNvbHV0aW9uIHRoYXQgdXNlcyB0aGUgYWNjZWxlcm9tZXRlciBhbmQgbWFnbmV0aWMgc2Vuc29ycyB0byBjb21wdXRlIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgZGV2aWNlLiBJbiB0aGlzIHNlbnNvciwgdGhlIGNvbXB1dGVkIG9yaWVudGF0aW9uIGlzIGZyZWUgb2YgYW55IGRyaWZ0LCBidXQgaXQgaXMgaW5hY2N1cmF0ZSBjb21wYXJlZCB0byBhIHNlbnNvciBmdXNpb24gc29sdXRpb24gdXNpbmcgdGhlIGd5cm9zY29wZSBzZW5zb3IuIFRoZSBnZW9tYWduZXRpYyByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yIHJlcHJlc2VudHMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBkZXZpY2UgYXMgYSBjb21iaW5hdGlvbiBvZiBhbiBhbmdsZSBhbmQgYW4gYXhpcyBvbiB3aGljaCB0aGUgZGV2aWNlIGhhcyByb3RhdGVkIHRocm91Z2ggYSBzcGVjaWZpYyBhbmdsZSBhcm91bmQgYW4gYXhpcyAoWCwgWSwgb3IgWikuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgZ2VvbWFnbmV0aWMgcm90YXRpb24gdmVjdG9yIHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgZ2VvbWFnbmV0aWMgcm90YXRpb24gdmVjdG9yIHNlbnNvcjxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5UeXBlPFwvdGg+XG48dGg+UmFuZ2U8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5UaW1lU3BhbjxcL3RkPlxuPHRkPjxjb2RlPlRpbWVTcGFuPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5BY2N1cmFjeTxcL3RkPlxuPHRkPjxjb2RlPlNlbnNvckRhdGFBY2N1cmFjeTxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPmludDxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE8YnI+TWF4LiB2YWx1ZSA9IDE8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5ZPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMTxicj5NYXguIHZhbHVlID0gMTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlo8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xPGJyPk1heC4gdmFsdWUgPSAxPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VzxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE8YnI+TWF4LiB2YWx1ZSA9IDE8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+PGEgbmFtZT1cImdyYXZpdHlcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LWdyYXZpdHktc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LWdyYXZpdHktc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5HcmF2aXR5IHNlbnNvcjxcL2gyPlxuPHA+VGhlIGdyYXZpdHkgc2Vuc29yIGlzIGEgdmlydHVhbCBzZW5zb3IgZGVyaXZlZCBmcm9tIHRoZSAzLWF4aXMgYWNjZWxlcmF0aW9uIHNlbnNvci4gVGhlIDMtYXhpcyBncmF2aXR5IGNvbXBvbmVudHMgcHJvdmlkZSBhIG1lYXN1cmUgb2YgdGhlIGVmZmVjdCBvZiBFYXJ0aCdzIGdyYXZpdHkgb2JzZXJ2ZWQgb24gdGhlIGRldmljZSByZWZlcmVuY2UgYXhlcy4gVGhlIGdyYXZpdHkgY29tcG9uZW50cyBtZWFzdXJlZCBvbiBhIGRldmljZSB2YXJ5IGJhc2VkIG9uIGNoYW5nZXMgaW4gdGhlIGRldmljZSBvcmllbnRhdGlvbiwgYW5kIGhlbmNlIHRoZXkgcHJvdmlkZSBhIG1lYXN1cmUgb2YgdGhlIHJvdGF0aW9uIHRvIHdoaWNoIHRoZSBkZXZpY2UgaXMgc3ViamVjdGVkLjxcL3A+XG48cD48c3Ryb25nPkZpZ3VyZTogR3Jhdml0eSBzZW5zb3IgdmVjdG9yIGFuZCBheGVzPFwvc3Ryb25nPjxcL3A+XG48cD48aW1nIHNyYz1cIm1lZGlhXC9zZW5zb3JfdHlwZXNfZ3Jhdml0eV9mcmFtZS5wbmdcIiBhbHQ9XCJHcmF2aXR5IHNlbnNvciB2ZWN0b3IgYW5kIGF4ZXNcIiBcLz48XC9wPlxuPHA+VGhlIGdyYXZpdHkgc2Vuc29yIG91dHB1dHMgNSB2YWx1ZXM6IDMgQ2FydGVzaWFuIGF4aXMgdmFsdWVzLCBhIHRpbWVzdGFtcCwgYW5kIGEgdGltZXNwYW4uIFRoZSBncmF2aXR5IHNlbnNvciBtZWFzdXJlcyBhbmQgcmV0dXJucyBheGVzIHZhbHVlcyBpbiAmcXVvdDttXC9zPHN1cD4yPFwvc3VwPiZxdW90OyAobWV0ZXJzIHBlciBzZWNvbmQgc3F1YXJlZCkuIFdoZW4gYSBkZXZpY2UgaXMgcm90YXRlZCBpbiB0aGUgXHUwMGIxWCwgXHUwMGIxWSwgb3IgXHUwMGIxWiBkaXJlY3Rpb24sIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpbmNyZWFzZXMgKCspIG9yIGRlY3JlYXNlcyAoLSkuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgZ3Jhdml0eSBzZW5zb3IgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIGdyYXZpdHkgc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlg8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC05Ljg8YnI+TWF4LiB2YWx1ZSA9IDkuODxcL3RkPlxuPHRkPm1cL3M8c3VwPjI8XC9zdXA+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5ZPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtOS44PGJyPk1heC4gdmFsdWUgPSA5Ljg8XC90ZD5cbjx0ZD5tXC9zPHN1cD4yPFwvc3VwPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WjxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTkuODxicj5NYXguIHZhbHVlID0gOS44PFwvdGQ+XG48dGQ+bVwvczxzdXA+MjxcL3N1cD48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwiZ3lyb1wiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtZ3lyb3Njb3BlXCI+PGEgaHJlZj1cIiNjb250ZW50LWd5cm9zY29wZVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+R3lyb3Njb3BlPFwvaDI+XG48cD5UaGUgZ3lyb3Njb3BlIGRldGVjdHMgYW5ndWxhciB2ZWxvY2l0eSBvciBhbmd1bGFyIHJhdGVzIG9mIGEgZGV2aWNlLiBUaGUgM0QgZ3lyb3Njb3BlIGRhdGEgaXMgY29uc2lkZXJlZCB0byBiZSB2ZXJ5IHNlbnNpdGl2ZSBpbiBkZXRlY3RpbmcgaW5jcmVtZW50YWwgcm90YXRpb24gYW5nbGVzLiBUaGUgcm90YXRpb24gYW5nbGVzIG9idGFpbmVkIGJ5IGludGVncmF0aW5nIHRoZSBhbmd1bGFyIHJhdGVzIG92ZXIgYSBsb25nZXIgZHVyYXRpb24gYXJlIGluYWNjdXJhdGUgZHVlIHRvIHRoZSBidWlsZC11cCBvZiBkcmlmdC48XC9wPlxuPHA+PHN0cm9uZz5GaWd1cmU6IEd5cm9zY29wZSB2ZWN0b3IgYW5kIGF4ZXM8XC9zdHJvbmc+PFwvcD5cbjxwPjxpbWcgc3JjPVwibWVkaWFcL3NlbnNvcl90eXBlc19neXJvX3ZlY3Rvci5wbmdcIiBhbHQ9XCJHeXJvc2NvcGUgdmVjdG9yIGFuZCBheGVzXCIgXC8+PFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgZ3lyb3Njb3BlIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBneXJvc2NvcGU8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTU3My4wPGJyPk1heC4gdmFsdWUgPSA1NzMuMDxcL3RkPlxuPHRkPkRlZ3JlZXNcL3MgKFx1MDBiMFwvcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlk8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC01NzMuMDxicj5NYXguIHZhbHVlID0gNTczLjA8XC90ZD5cbjx0ZD5EZWdyZWVzXC9zIChcdTAwYjBcL3MpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5aPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtNTczLjA8YnI+TWF4LiB2YWx1ZSA9IDU3My4wPFwvdGQ+XG48dGQ+RGVncmVlc1wvcyAoXHUwMGIwXC9zKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPjxhIG5hbWU9XCJneXJvX29yaWVudGF0aW9uXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC1neXJvc2NvcGUtb3JpZW50YXRpb24tc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LWd5cm9zY29wZS1vcmllbnRhdGlvbi1zZW5zb3JcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkd5cm9zY29wZSBvcmllbnRhdGlvbiBzZW5zb3I8XC9oMj5cbjxwPlRoZSBneXJvc2NvcGUgb3JpZW50YXRpb24gc2Vuc29yIGNvbWJpbmVzIHRoZSAzLWF4aXMgYWNjZWxlcm9tZXRlciBhbmQgMy1heGlzIGd5cm9zY29wZSB0byBkZXRlcm1pbmUgdGhlIG9yaWVudGF0aW9uIChyb3RhdGlvbiBhbmdsZXMpIG9mIHRoZSBkZXZpY2UuIFRoZSBneXJvc2NvcGUgb3JpZW50YXRpb24gc2Vuc29yIGlzIHNpbWlsYXIgdG8gdGhlIG9yaWVudGF0aW9uIHNlbnNvciwgYnV0IGl0IGRvZXMgbm90IHVzZSBhIGdlb21hZ25ldGljIGZpZWxkLiBUaHVzLCB5YXcgcmVwcmVzZW50cyBhIHJlbGF0aXZlIHJvdGF0aW9uIGFuZ2xlLCBub3QgYW4gYWJzb2x1dGUgcmVmZXJlbmNlLiBUaGUgZ3lyb3Njb3BlIG9yaWVudGF0aW9uIGlzIHRoZSBvdXRwdXQgb2YgYSBzb2Z0d2FyZVwvaGFyZHdhcmUtYmFzZWQgc2Vuc29yIGZ1c2lvbiBzb2x1dGlvbiB0aGF0IHVzZXMgdGhlIGFjY2VsZXJvbWV0ZXIgYW5kIGd5cm9zY29wZS4gVGhlIGd5cm9zY29wZSBvcmllbnRhdGlvbiBzZW5zb3Igb3V0cHV0IGlzIGFuIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBneXJvc2NvcGUgcm90YXRpb24gdmVjdG9yIHNlbnNvciBvdXRwdXQgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJvdGF0aW9uIG9mIHRoZSBkZXZpY2UsIGFuZCBpdCBpcyBjYWxjdWxhdGVkIGluIHRlcm1zIG9mIEV1bGVyIGFuZ2xlczo8XC9wPlxuPHVsPlxuPGxpPllhdzxcL2xpPlxuPGxpPlBpdGNoPFwvbGk+XG48bGk+Um9sbDxcL2xpPlxuPFwvdWw+XG48cD5UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIHRoZSBtZWFzdXJlbWVudCBkYXRhIHRoYXQgdGhlIGd5cm9zY29wZSBvcmllbnRhdGlvbiBzZW5zb3IgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIGd5cm9zY29wZSBvcmllbnRhdGlvbiBzZW5zb3I8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WWF3PFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAwPGJyPk1heC4gdmFsdWUgPSAzNjA8XC90ZD5cbjx0ZD5EZWdyZWVzIChcdTAwYjApPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5QaXRjaDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE4MDxicj5NYXguIHZhbHVlID0gMTgwPFwvdGQ+XG48dGQ+RGVncmVlcyAoXHUwMGIwKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+Um9sbDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTkwPGJyPk1heC4gdmFsdWUgPSA5MDxcL3RkPlxuPHRkPkRlZ3JlZXMgKFx1MDBiMCk8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgYW5ndWxhciBwb3NpdGlvbnMgYXJlIG1lYXN1cmVkIHVzaW5nIGEgZml4ZWQgZnJhbWUgcmVmZXJlbmNlIChYPGRlbD5FPFwvZGVsPiwgWTxkZWw+RTxcL2RlbD4sIFo8ZGVsPkU8XC9kZWw+KS48XC9wPlxuPHA+PGEgbmFtZT1cImd5cm9fcm90YXRpb25cIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LWd5cm9zY29wZS1yb3RhdGlvbi12ZWN0b3Itc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LWd5cm9zY29wZS1yb3RhdGlvbi12ZWN0b3Itc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5HeXJvc2NvcGUgcm90YXRpb24gdmVjdG9yIHNlbnNvcjxcL2gyPlxuPHA+VGhlIGd5cm9zY29wZSByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yIGlzIHRoZSBvdXRwdXQgb2YgYSBzb2Z0d2FyZVwvaGFyZHdhcmUtYmFzZWQgc2Vuc29yIGZ1c2lvbiBzb2x1dGlvbiB0aGF0IHVzZXMgdGhlIGFjY2VsZXJvbWV0ZXIgYW5kIGd5cm9zY29wZSB0byBjb21wdXRlIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgZGV2aWNlLiBJbiB0aGlzIHNlbnNvciwgdGhlIHBpdGNoIGFuZCByb2xsIGVxdWl2YWxlbnQgcmVwcmVzZW50YXRpb25zIGFyZSBmcmVlIG9mIGRyaWZ0IHdoaWxlIHRoZSB5YXcgZXF1aXZhbGVudCBjb21wb25lbnQgaXMgYWxsb3dlZCB0byBkcmlmdCBkdWUgdG8gdGhlIGFic2VuY2Ugb2YgdGhlIG1hZ25ldGljIHNlbnNvci4gVGhlIGd5cm9zY29wZSByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yIHJlcHJlc2VudHMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBkZXZpY2UgYXMgYSBjb21iaW5hdGlvbiBvZiBhbiBhbmdsZSBhbmQgYW4gYXhpcyBvbiB3aGljaCB0aGUgZGV2aWNlIGhhcyByb3RhdGVkIHRocm91Z2ggYSBzcGVjaWZpYyBhbmdsZSBhcm91bmQgYW4gYXhpcyAoWCwgWSwgb3IgWikuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgZ3lyb3Njb3BlIHJvdGF0aW9uIHZlY3RvciBzZW5zb3IgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIGd5cm9zY29wZSByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkFjY3VyYWN5PFwvdGQ+XG48dGQ+PGNvZGU+U2Vuc29yRGF0YUFjY3VyYWN5PFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+aW50PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5YPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMTxicj5NYXguIHZhbHVlID0gMTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlk8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xPGJyPk1heC4gdmFsdWUgPSAxPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WjxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE8YnI+TWF4LiB2YWx1ZSA9IDE8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5XPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMTxicj5NYXguIHZhbHVlID0gMTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwiaHJtXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC1oZWFydC1yYXRlLW1vbml0b3Itc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LWhlYXJ0LXJhdGUtbW9uaXRvci1zZW5zb3JcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkhlYXJ0IHJhdGUgbW9uaXRvciBzZW5zb3I8XC9oMj5cbjxwPlRoZSBoZWFydCByYXRlIG1vbml0b3IgKEhSTSkgc2Vuc29yIG1lYXN1cmVzIGEgcGVyc29uJ3MgaGVhcnQgcmF0ZSBpbiByZWFsIHRpbWUuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgSFJNIHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgSFJNIHNlbnNvcjxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5UeXBlPFwvdGg+XG48dGg+UmFuZ2U8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5UaW1lU3BhbjxcL3RkPlxuPHRkPjxjb2RlPlRpbWVTcGFuPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5IZWFydHJhdGU8XC90ZD5cbjx0ZD48Y29kZT5pbnQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAwPGJyPk1heC4gdmFsdWUgPSAyNDA8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+PGEgbmFtZT1cImhybV9iYXRjaFwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtaGVhcnQtcmF0ZS1tb25pdG9yLWJhdGNoLXNlbnNvclwiPjxhIGhyZWY9XCIjY29udGVudC1oZWFydC1yYXRlLW1vbml0b3ItYmF0Y2gtc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5IZWFydCByYXRlIG1vbml0b3IgYmF0Y2ggc2Vuc29yPFwvaDI+XG48cD5UaGUgaGVhcnQgcmF0ZSBtb25pdG9yIChIUk0pIGJhdGNoIHNlbnNvciBtZWFzdXJlcyBhIHBlcnNvbidzIGhlYXJ0IHJhdGUuIFRoZSBzZW5zb3IgbXVzdCBiZSBwb3dlci1lZmZpY2llbnQgYW5kIHN1cHBvcnQgYmF0Y2ggcHJvY2Vzc2luZy48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSBIUk0gYmF0Y2ggc2Vuc29yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBIUk0gYmF0Y2ggc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkRhdGE8XC90ZD5cbjx0ZD48Y29kZT5JUmVhZE9ubHlMaXN0Jmx0O0hlYXJ0UmF0ZU1vbml0b3JCYXRjaERhdGEmZ3Q7PFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50cyBjb250YWluZWQgaW4gSGVhcnRSYXRlTW9uaXRvckJhdGNoRGF0YTxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5UeXBlPFwvdGg+XG48dGg+UmFuZ2U8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5BY2N1cmFjeTxcL3RkPlxuPHRkPjxjb2RlPlNlbnNvckRhdGFBY2N1cmFjeTxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlN0YXRlPFwvdGQ+XG48dGQ+PGNvZGU+SGVhcnRSYXRlTW9uaXRvckJhdGNoU3RhdGU8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5IZWFydHJhdGU6IEJlYXRzIHBlciBtaW51dGU8XC90ZD5cbjx0ZD48Y29kZT5pbnQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAwPGJyPiBNYXguIHZhbHVlID0gMjQwPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+UlJJbnRlcnZhbDogUiB3YXZlLXRvLVIgd2F2ZSBpbnRlcnZhbDxcL3RkPlxuPHRkPjxjb2RlPmludDxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pbGxpc2Vjb25kPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+PGEgbmFtZT1cImhybV9ncmVlbl9iYXRjaFwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtaGVhcnQtcmF0ZS1tb25pdG9yLWxlZC1ncmVlbi1iYXRjaC1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtaGVhcnQtcmF0ZS1tb25pdG9yLWxlZC1ncmVlbi1iYXRjaC1zZW5zb3JcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkhlYXJ0IHJhdGUgbW9uaXRvciBMRUQgZ3JlZW4gYmF0Y2ggc2Vuc29yPFwvaDI+XG48cD5UaGUgaGVhcnQgcmF0ZSBtb25pdG9yIChIUk0pIExFRCBncmVlbiBiYXRjaCBzZW5zb3IgbWVhc3VyZXMgdGhlIGFtb3VudCBvZiBncmVlbiBsaWdodCB0aGF0IGlzIHJlZmxlY3RlZCBiYWNrIGZyb20gYSBwZXJzb24ncyBibG9vZCB2ZXNzZWwuIFRoZSBzZW5zb3IgbXVzdCBiZSBwb3dlci1lZmZpY2llbnQgYW5kIHN1cHBvcnQgYmF0Y2ggcHJvY2Vzc2luZy48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSBIUk0gTEVEIGdyZWVuIGJhdGNoIHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgSFJNIExFRCBncmVlbiBiYXRjaCBzZW5zb3I8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+RGF0YTxcL3RkPlxuPHRkPjxjb2RlPklSZWFkT25seUxpc3QmbHQ7SGVhcnRSYXRlTW9uaXRvckxFREdyZWVuQmF0Y2hEYXRhJmd0OzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudHMgY29udGFpbmVkIGluIEhlYXJ0UmF0ZU1vbml0b3JMRURHcmVlbkJhdGNoRGF0YTxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5UeXBlPFwvdGg+XG48dGg+UmFuZ2U8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5BY2N1cmFjeTxcL3RkPlxuPHRkPjxjb2RlPlNlbnNvckRhdGFBY2N1cmFjeTxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkdyZWVuOiBIUk0gZ3JlZW4gbGlnaHQgdmFsdWU8XC90ZD5cbjx0ZD48Y29kZT51aW50PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxicj4gTWF4LiB2YWx1ZSA9IDQxOTQzMDQ8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5BY2NlbGVyYXRpb25YOiBYPFwvdGQ+XG48dGQ+PGNvZGU+aW50PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTQwOTY8YnI+IE1heC4gdmFsdWUgPSA0MDk2PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+QWNjZWxlcmF0aW9uWTogWTxcL3RkPlxuPHRkPjxjb2RlPmludDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC00MDk2PGJyPiBNYXguIHZhbHVlID0gNDA5NjxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkFjY2VsZXJhdGlvblo6IFo8XC90ZD5cbjx0ZD48Y29kZT5pbnQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtNDA5Njxicj4gTWF4LiB2YWx1ZSA9IDQwOTY8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5JbmRleDxcL3RkPlxuPHRkPjxjb2RlPmludDxcL2NvZGU+PFwvdGQ+XG48dGQ+U2VxdWVudGlhbCBpbmRleCBvZiBzZW5zb3IgZXZlbnQ8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+PGEgbmFtZT1cImh1bWlkaXR5XCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC1odW1pZGl0eS1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtaHVtaWRpdHktc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5IdW1pZGl0eSBzZW5zb3I8XC9oMj5cbjxwPlRoZSBodW1pZGl0eSBzZW5zb3IgbWVhc3VyZXMgdGhlIHJlbGF0aXZlIGFtYmllbnQgYWlyIGh1bWlkaXR5IGluIHBlcmNlbnRhZ2UuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgaHVtaWRpdHkgc2Vuc29yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBodW1pZGl0eSBzZW5zb3I8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+SHVtaWRpdHk8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+MTAwPFwvdGQ+XG48dGQ+JTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPjxhIG5hbWU9XCJsaWdodFwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtbGlnaHQtc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LWxpZ2h0LXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+TGlnaHQgc2Vuc29yPFwvaDI+XG48cD5UaGUgbGlnaHQgc2Vuc29yIGRldGVjdHMgdGhlIGJyaWdodG5lc3Mgb2YgYW1iaWVudCBsaWdodC4gSXQgY2FuIGJlIHVzZWQgdG8gbWVhc3VyZSB0aGUgYnJpZ2h0bmVzcyBsZXZlbC48XC9wPlxuPHA+QXMgYW4gZXhhbXBsZSB1c2UgY2FzZSwgdGhlIGxpZ2h0IHNlbnNvciBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBicmlnaHRuZXNzIG9mIHRoZSBzY3JlZW4uIEluIGEgZGFyayBlbnZpcm9ubWVudCwgdGhlIGxpZ2h0IHNlbnNvciBkZXRlY3RzIHRoZSBicmlnaHRuZXNzIG9mIHRoZSBlbnZpcm9ubWVudCBhbmQgY2FuIGJlIHVzZWQgdG8gaW5jcmVhc2UgdGhlIGRldmljZSBzY3JlZW4gYmFja2xpZ2h0IGJyaWdodG5lc3MgbGV2ZWwuIEluIGEgYnJpZ2h0ZXIgZW52aXJvbm1lbnQsIHRoZSBiYWNrbGlnaHQgYnJpZ2h0bmVzcyBsZXZlbCBpcyBsb3dlcmVkIHRvIHNhdmUgYmF0dGVyeSBwb3dlci48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSBsaWdodCBzZW5zb3IgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIGxpZ2h0IHNlbnNvcjxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5UeXBlPFwvdGg+XG48dGg+UmFuZ2U8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5UaW1lU3BhbjxcL3RkPlxuPHRkPjxjb2RlPlRpbWVTcGFuPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5MZXZlbDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxicj5NYXguIHZhbHVlID0gNDU4NzU8XC90ZD5cbjx0ZD5MdXg8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwibGluX2FjY2VsZXJvbWV0ZXJcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LWxpbmVhci1hY2NlbGVyYXRpb24tc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LWxpbmVhci1hY2NlbGVyYXRpb24tc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5MaW5lYXIgYWNjZWxlcmF0aW9uIHNlbnNvcjxcL2gyPlxuPHA+VGhlIGxpbmVhciBhY2NlbGVyYXRpb24gc2Vuc29yIGlzIGRlcml2ZWQgZnJvbSB0aGUgYWNjZWxlcm9tZXRlciBieSBleGNsdWRpbmcgdGhlIGdyYXZpdHkgdmFsdWUsIGFuZCBpdCBtZWFzdXJlcyB0aGUgdXNlci1kcml2ZW4gY2hhbmdlcyBpbiB0aGUgdmVsb2NpdHkuIFRoZSBsaW5lYXIgYWNjZWxlcmF0aW9uIHNlbnNvciBpcyB1c2VkIHRvIGRldGVjdCB0aGUgZHluYW1pYyBtb3ZlbWVudCBvZiB0aGUgZGV2aWNlIGFuZCBhbmFseXplIHRoZSB1c2VyJ3MgbW90aW9uIHByb2ZpbGUuIFRoZSAzLWF4aXMgbGluZWFyIGFjY2VsZXJhdGlvbiBjb21wb25lbnRzIHByb3ZpZGUgYSBtZWFzdXJlIG9mIHRoZSBjb21iaW5lZCBsaW5lYXIgbW90aW9uIHN1YmplY3RlZCB0byB0aGUgZGV2aWNlIGluIEV1Y2xpZGVhbiBzcGFjZS48XC9wPlxuPHA+VGhlIGxpbmVhciBhY2NlbGVyYXRpb24gc2Vuc29yIHByb3ZpZGVzIDMgY29tcG9uZW50cyBvZiBhY2NlbGVyYXRpb24gKFgsIFksIGFuZCBaKSwgYXMgdGhlIGZvbGxvd2luZyBmaWd1cmUgaWxsdXN0cmF0ZXMuPFwvcD5cbjxwPjxzdHJvbmc+RmlndXJlOiBVc2VyLWFjY2VsZXJhdGlvbiBzZW5zb3IgdmVjdG9yIGFuZCBheGVzPFwvc3Ryb25nPjxcL3A+XG48cD48aW1nIHNyYz1cIm1lZGlhXC9zZW5zb3JfdHlwZXNfdXNlcmFjY2VsZXJhdGlvbl92ZWN0b3IucG5nXCIgYWx0PVwiVXNlci1hY2NlbGVyYXRpb24gc2Vuc29yIHZlY3RvciBhbmQgYXhlc1wiIFwvPjxcL3A+XG48cD5UaGUgbGluZWFyIGFjY2VsZXJhdGlvbiBzZW5zb3Igb3V0cHV0cyA1IHZhbHVlczogMyBDYXJ0ZXNpYW4gYXhpcyB2YWx1ZXMsIGEgdGltZXN0YW1wLCBhbmQgYSB0aW1lc3Bhbi4gVGhlIGxpbmVhciBhY2NlbGVyYXRpb24gc2Vuc29yIG1lYXN1cmVzIGFuZCByZXR1cm5zIGF4ZXMgdmFsdWVzIGluICZxdW90O21cL3M8c3VwPjI8XC9zdXA+JnF1b3Q7IChtZXRlcnMgcGVyIHNlY29uZCBzcXVhcmVkKS4gV2hlbiBhIGRldmljZSBpcyBhY2NlbGVyYXRlZCBpbiB0aGUgXHUwMGIxWCwgXHUwMGIxWSwgb3IgXHUwMGIxWiBkaXJlY3Rpb24sIHRoZSBjb3JyZXNwb25kaW5nIG91dHB1dCBpbmNyZWFzZXMgKCspIG9yIGRlY3JlYXNlcyAoLSkuIFRoZSBhY2NlbGVyYXRpb24gb3V0cHV0IGlzIHNob3duIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhcyB0aGUgdXNlci1kcml2ZW4gZm9yY2UuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgbGluZWFyIGFjY2VsZXJhdGlvbiBzZW5zb3IgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIGxpbmVhciBhY2NlbGVyYXRpb24gc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlg8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xOS42PGJyPk1heC4gdmFsdWUgPSAxOS42PFwvdGQ+XG48dGQ+bVwvczxzdXA+MjxcL3N1cD48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlk8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xOS42PGJyPk1heC4gdmFsdWUgPSAxOS42PFwvdGQ+XG48dGQ+bVwvczxzdXA+MjxcL3N1cD48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlo8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xOS42PGJyPk1heC4gdmFsdWUgPSAxOS42PFwvdGQ+XG48dGQ+bVwvczxzdXA+MjxcL3N1cD48XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwibWFnbmV0aWNcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LW1hZ25ldGljLXNlbnNvclwiPjxhIGhyZWY9XCIjY29udGVudC1tYWduZXRpYy1zZW5zb3JcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPk1hZ25ldGljIHNlbnNvcjxcL2gyPlxuPHA+VGhlIG1hZ25ldGljIHNlbnNvciBpcyBhIDMtYXhpcyBlbGVjdHJvbmljIGNvbXBhc3MgKHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhICZxdW90O21hZ25ldG9tZXRlciZxdW90OyBvciAmcXVvdDtnZW9tYWduZXRpYyBzZW5zb3ImcXVvdDspLiBJdCBjYW4gYWxzbyBiZSB1c2VkIGluIGRldGVybWluaW5nIHRoZSBhemltdXRoIGNvbXBvbmVudCBvZiB0aGUgZGV2aWNlIG9yaWVudGF0aW9uIHByb3ZpZGVkIHRoYXQgdGhlIHRpbHQgb2YgdGhlIGRldmljZSBpcyBhbHJlYWR5IGNvbXB1dGVkLiBUaGUgbWFnbmV0aWMgc2Vuc29yIG1lYXN1cmVzIHRoZSBFYXJ0aCdzIG1hZ25ldGljIGZpZWxkIHN0cmVuZ3RoIGFuZCBmbHVjdHVhdGlvbnMsIGFuZCBzcGxpdHMgdGhlIG1lYXN1cmVtZW50IGludG8gWCwgWSwgYW5kIFogY29tcG9uZW50cy48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyBmYWN0b3JzIGNhbiBoYXZlIGFuIGltcGFjdCBvbiB0aGUgc2Vuc29yIHJlYWRpbmdzOjxcL3A+XG48dWw+XG48bGk+VGhlIHdlYXRoZXIgb3IgdGhlIHNlYXNvbiBvZiB0aGUgeWVhcjxcL2xpPlxuPGxpPllvdXIgbG9jYXRpb24gb24gdGhlIHBsYW5ldDxcL2xpPlxuPGxpPk5lYXJieSwgc3Ryb25nIG1hZ25ldGljIGZpZWxkcywgc3VjaCBhcyBtYWduZXRzLCBlbGVjdHJpYyBjb2lscywgb3Igb2JqZWN0cyB3aGljaCBjb250YWluIGEgZmVycml0ZSBlbGVtZW50PFwvbGk+XG48XC91bD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgbWFnbmV0aWMgc2Vuc29yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBtYWduZXRpYyBzZW5zb3I8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5YPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPlx1MDBiNVQgKG1pY3JvdGVzbGFzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WTxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5cdTAwYjVUIChtaWNyb3Rlc2xhcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlo8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+XHUwMGI1VCAobWljcm90ZXNsYXMpPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG1hZ25ldGljIHNlbnNvciB1c2VzIHRoZSAzLWF4aXMgQ2FydGVzaWFuIHNwYWNlIGNvb3JkaW5hdGUgc3lzdGVtLCBhcyB0aGUgZm9sbG93aW5nIGZpZ3VyZSBpbGx1c3RyYXRlcy48XC9wPlxuPHA+PHN0cm9uZz5GaWd1cmU6IE1hZ25ldGljIGZpZWxkIHZlY3RvciBhbmQgYXhlczxcL3N0cm9uZz48XC9wPlxuPHA+PGltZyBzcmM9XCJtZWRpYVwvc2Vuc29yX3R5cGVzX21hZ25ldGljX3ZlY3Rvci5wbmdcIiBhbHQ9XCJNYWduZXRpYyBmaWVsZCB2ZWN0b3IgYW5kIGF4ZXNcIiBcLz48XC9wPlxuPHA+PGEgbmFtZT1cIm9yaWVudGF0aW9uXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC1vcmllbnRhdGlvbi1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtb3JpZW50YXRpb24tc2Vuc29yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5PcmllbnRhdGlvbiBzZW5zb3I8XC9oMj5cbjxwPlRoZSBvcmllbnRhdGlvbiBzZW5zb3IgY29tYmluZXMgdGhlIDMtYXhpcyBhY2NlbGVyb21ldGVyLCAzLWF4aXMgbWFnbmV0aWMgc2Vuc29yLCBhbmQgMy1heGlzIGd5cm9zY29wZSB0byBkZXRlcm1pbmUgdGhlIG9yaWVudGF0aW9uIChyb3RhdGlvbiBhbmdsZXMpIG9mIHRoZSBkZXZpY2UuIFRoZSBvcmllbnRhdGlvbiBpcyB0aGUgb3V0cHV0IG9mIGEgc29mdHdhcmVcL2hhcmR3YXJlLWJhc2VkIHNlbnNvciBmdXNpb24gc29sdXRpb24gdGhhdCB1c2VzIHRoZSBhY2NlbGVyb21ldGVyLCBtYWduZXRpYyBzZW5zb3IsIGFuZCBneXJvc2NvcGUuIFRoZSBvcmllbnRhdGlvbiBzZW5zb3Igb3V0cHV0IGlzIGFuIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0aW9uIHRvIHRoZSByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yIG91dHB1dCB1c2VkIHRvIGRldGVybWluZSB0aGUgcm90YXRpb24gb2YgdGhlIGRldmljZSwgYW5kIGl0IGlzIGNhbGN1bGF0ZWQgaW4gdGVybXMgb2YgRXVsZXIgYW5nbGVzOjxcL3A+XG48dWw+XG48bGk+QXppbXV0aDxcL2xpPlxuPGxpPlBpdGNoPFwvbGk+XG48bGk+Um9sbDxcL2xpPlxuPFwvdWw+XG48cD5UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIHRoZSBtZWFzdXJlbWVudCBkYXRhIHRoYXQgdGhlIG9yaWVudGF0aW9uIHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgb3JpZW50YXRpb24gc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkF6aW11dGg8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IDA8YnI+TWF4LiB2YWx1ZSA9IDM2MDxcL3RkPlxuPHRkPkRlZ3JlZXMgKFx1MDBiMCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlBpdGNoPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMTgwPGJyPk1heC4gdmFsdWUgPSAxODA8XC90ZD5cbjx0ZD5EZWdyZWVzIChcdTAwYjApPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5Sb2xsPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtOTA8YnI+TWF4LiB2YWx1ZSA9IDkwPFwvdGQ+XG48dGQ+RGVncmVlcyAoXHUwMGIwKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBhbmd1bGFyIHBvc2l0aW9ucyBhcmUgbWVhc3VyZWQgdXNpbmcgYSBmaXhlZCBmcmFtZSByZWZlcmVuY2UgKFg8ZGVsPkU8XC9kZWw+LCBZPGRlbD5FPFwvZGVsPiwgWjxkZWw+RTxcL2RlbD4pLjxcL3A+XG48cD48c3Ryb25nPkZpZ3VyZTogQW5ndWxhciBwb3NpdGlvbnMgYW5kIHRoZSBmaXhlZCBmcmFtZSByZWZlcmVuY2U8XC9zdHJvbmc+PFwvcD5cbjxwPjxpbWcgc3JjPVwibWVkaWFcL3NlbnNvcl90eXBlc19kZXZpY2VvcmllbnRhdGlvbl9mcmFtZS5wbmdcIiBhbHQ9XCJBbmd1bGFyIHBvc2l0aW9ucyBhbmQgdGhlIGZpeGVkIGZyYW1lIHJlZmVyZW5jZVwiIFwvPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXBlZG9tZXRlclwiPjxhIGhyZWY9XCIjY29udGVudC1wZWRvbWV0ZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlBlZG9tZXRlcjxcL2gyPlxuPHA+VGhlIHBlZG9tZXRlciBkZXRlY3RzIHRoZSB1c2VyJ3Mgc3RlcHMsIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RlcHMgdGFrZW4gYnkgdGhlIHVzZXIgc2luY2UgdGhlIGxhc3QgcmVib290LCB3aGlsZSBhdCBsZWFzdCAxIGFwcGxpY2F0aW9uIGlzIHVzaW5nIHRoZSBwZWRvbWV0ZXIuIFRoZSB0aW1lc3RhbXAgb2YgdGhlIGV2ZW50IGRlbm90ZXMgdGhlIHRpbWUgd2hlbiB0aGUgbGFzdCBzdGVwIHdhcyB0YWtlbi4gSW4gYWRkaXRpb24gdG8gdGhlIG51bWJlciBvZiBzdGVwcywgaXQgYWxzbyByZXR1cm5zIG90aGVyIHRyYWNraW5nIGRhdGEgdG8gZnVydGhlciBkZXNjcmliZSB0aGUgdXNlcidzIGFjdGl2aXR5IHN0YXR1cy4gRm9yIGV4YW1wbGUsIGl0IHByb3ZpZGVzIHRoZSB1c2VyJ3MgbW92aW5nIGRpc3RhbmNlIGFuZCBidXJuZWQgY2Fsb3JpZXMuIEFsbCB0aGUgdmFsdWVzIGFyZSByZXNldCB0byB6ZXJvIHdoZW4gdGhlIHN5c3RlbSByZWJvb3RzLjxcL3A+XG48cD5Ob3JtYWxseSwgYW4gZXZlbnQgaGFuZGxlciBpcyBpbnZva2VkIHdoZW5ldmVyIGEgbmV3IHN0ZXAgaXMgZGV0ZWN0ZWQuIEhvd2V2ZXIsIHRvIGJlIHBvd2VyLWVmZmljaWVudCwgdGhlIHNlbnNvciBjYW4gaW50ZXJuYWxseSBhY2N1bXVsYXRlIGl0cyBkZXRlY3RlZCBldmVudHMgd2hpbGUgdGhlIHN5c3RlbSBzbGVlcHMuIEluIHRoaXMgY2FzZSwgdGhlIGFjY3VtdWxhdGVkIGRhdGEgaXMgcmVwb3J0ZWQgd2hlbiB0aGUgc3lzdGVtIHdha2VzIHVwLCB0aGF0IGlzLCB0aGUgZGlzcGxheSBpcyBzd2l0Y2hlZCBvbi4gSW4gYWRkaXRpb24sIGV2ZW4gdGhvdWdoIHRoZSBkaXNwbGF5IGlzIG5vdCBzd2l0Y2hlZCBvbiBleHBsaWNpdGx5LCB0aGUgc2Vuc29yIGNhbiB3YWtlIHVwIHRoZSBkZXZpY2UgdG8gZGVsaXZlciBpdHMgYWNjdW11bGF0ZWQgZGF0YSBvY2Nhc2lvbmFsbHkuPFwvcD5cbjxwPklmIHlvdSB3YW50IHRvIHRyYWNrIHRoZSB1c2VyJ3Mgc3RlcHMgY29udGludW91c2x5LCBkbyBub3Qgc3RvcCB0aGUgc2Vuc29yLCB0byBlbnN1cmUgaXQga2VlcHMgcnVubmluZy4gSWYgdGhlcmUgaXMgbm8gYXBwbGljYXRpb24gbGlzdGVuaW5nIHRvIHRoZSBzZW5zb3IsIGl0IHN0b3BzIGNvdW50aW5nIHRoZSBzdGVwcy48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSBwZWRvbWV0ZXIgcHJvdmlkZXMuPFwvcD5cbjxwPjxzdHJvbmc+VGFibGU6IE1lYXN1cmVtZW50IGRhdGEgZGV0ZWN0ZWQgYnkgdGhlIHBlZG9tZXRlcjxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5TdGVwQ291bnQ8XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxicj5NYXguIHZhbHVlID0gMjxzdXA+MjQ8XC9zdXA+PFwvdGQ+XG48dGQ+U3RlcHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPldhbGtTdGVwQ291bnQ8XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxicj5NYXguIHZhbHVlID0gMjxzdXA+MjQ8XC9zdXA+PFwvdGQ+XG48dGQ+U3RlcHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlJ1bm5pbmdTdGVwQ291bnQ8XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxicj5NYXguIHZhbHVlID0gMjxzdXA+MjQ8XC9zdXA+PFwvdGQ+XG48dGQ+U3RlcHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPk1vdmluZ0Rpc3RhbmNlPFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IDA8XC90ZD5cbjx0ZD5NZXRlcnM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkNhbG9yaWVCdXJuZWQ8XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gMDxcL3RkPlxuPHRkPmtjYWw8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkxhc3RTcGVlZDxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAwPFwvdGQ+XG48dGQ+a21cL2g8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkxhc3RTdGVwcGluZ0ZyZXF1ZW5jeTxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAwPFwvdGQ+XG48dGQ+U3RlcHNcL3NlY29uZDxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+TGFzdFN0ZXBTdGF0dXM8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8Y29kZT5MYXN0U3RlcFN0YXR1czxcL2NvZGU+IHByb3BlcnR5IGlzIG9uZSBvZiB0aGUgdmFsdWVzIG9mIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5TZW5zb3IuUGVkb21ldGVyU3RhdGUubWRcIj5UaXplbi5TZW5zb3IuUGVkb21ldGVyU3RhdGU8XC9hPiBlbnVtZXJhdGlvbjogPGNvZGU+VW5rbm93bjxcL2NvZGU+LCA8Y29kZT5TdG9wPFwvY29kZT4sIDxjb2RlPldhbGs8XC9jb2RlPiwgb3IgPGNvZGU+UnVuPFwvY29kZT4uPFwvcD5cbjxwPjxhIG5hbWU9XCJwcmVzc3VyZVwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtcHJlc3N1cmUtc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LXByZXNzdXJlLXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+UHJlc3N1cmUgc2Vuc29yPFwvaDI+XG48cD5UaGUgcHJlc3N1cmUgc2Vuc29yIG1lYXN1cmVzIHRoZSBhdG1vc3BoZXJpYyBwcmVzc3VyZSBpbiB0aGUgZGV2aWNlJ3Mgc3Vycm91bmRpbmcgZW52aXJvbm1lbnQuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgcHJlc3N1cmUgc2Vuc29yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBwcmVzc3VyZSBzZW5zb3I8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPk1lYXN1cmVtZW50PFwvdGg+XG48dGg+VHlwZTxcL3RoPlxuPHRoPlJhbmdlPFwvdGg+XG48dGg+VW5pdDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5UaW1lc3RhbXA8XC90ZD5cbjx0ZD48Y29kZT51bG9uZzxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+VGltZVNwYW48XC90ZD5cbjx0ZD48Y29kZT5UaW1lU3BhbjxcL2NvZGU+PFwvdGQ+XG48dGQ+LTxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+UHJlc3N1cmU8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IDI2MDxicj5NYXguIHZhbHVlID0gMTI2MDxcL3RkPlxuPHRkPmhQYTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPjxhIG5hbWU9XCJwcm94aW1pdHlcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXByb3hpbWl0eS1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtcHJveGltaXR5LXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+UHJveGltaXR5IHNlbnNvcjxcL2gyPlxuPHA+VGhlIHByb3hpbWl0eSBzZW5zb3IgZGV0ZWN0cyB0aGUgcHJlc2VuY2Ugb2YgbmVhcmJ5IG9iamVjdHMgaW4gY2xvc2UgcHJveGltaXR5IHRvIHRoZSBzZW5zb3IuIEl0IGNhbiBiZSB1c2VkIHRvIG1lYXN1cmUgdGhlIGRpc3RhbmNlIGJldHdlZW4gbmVhcmJ5IG9iamVjdHMgYW5kIHRoZSBkZXZpY2UuPFwvcD5cbjxwPkFzIGFuIGV4YW1wbGUgdXNlIGNhc2UsIHRoZSBwcm94aW1pdHkgc2Vuc29yIGNhbiBiZSB1c2VkIHRvIGxvY2sgb3IgdW5sb2NrIHRoZSBkZXZpY2Ugc2NyZWVuLiBXaGVuIHRoZSBkZXZpY2UgdXNlciBob2xkcyB0aGUgZGV2aWNlIHRvIHRoZWlyIGVhciwgdGhlIHByb3hpbWl0eSBzZW5zb3IgZGV0ZWN0cyB0aGUgdXNlciBhcyBhbiBvYmplY3QgYW5kIGF1dG9tYXRpY2FsbHkgbG9ja3MgdGhlIGRldmljZSBzY3JlZW4uIFdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIGRldmljZSBhd2F5IGZyb20gdGhlaXIgZWFyIHRvIGlucHV0IGRhdGEsIHRoZSBwcm94aW1pdHkgc2Vuc29yIGRldGVybWluZXMgdGhhdCB0aGVyZSBhcmUgbm8gbmVhcmJ5IG9iamVjdHMsIGFuZCB1bmxvY2tzIHRoZSBzY3JlZW4uPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgcHJveGltaXR5IHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgcHJveGltaXR5IHNlbnNvcjxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+TWVhc3VyZW1lbnQ8XC90aD5cbjx0aD5UeXBlPFwvdGg+XG48dGg+UmFuZ2U8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5UaW1lU3BhbjxcL3RkPlxuPHRkPjxjb2RlPlRpbWVTcGFuPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5Qcm94aW1pdHk8XC90ZD5cbjx0ZD48Y29kZT5Qcm94bWl0eVNlbnNvclN0YXRlPFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSA8Y29kZT5Qcm94aW1pdHlTZW5zb3JTdGF0ZTxcL2NvZGU+IHByb3BlcnR5IGlzIG9uZSBvZiB0aGUgdmFsdWVzIG9mIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5TZW5zb3IuUHJveGltaXR5U2Vuc29yU3RhdGUubWRcIj5UaXplbi5TZW5zb3IuUHJveGltaXR5U2Vuc29yU3RhdGU8XC9hPiBlbnVtZXJhdGlvbjogPGNvZGU+VW5rbm93bjxcL2NvZGU+LCA8Y29kZT5GYXI8XC9jb2RlPiwgb3IgPGNvZGU+TmVhcjxcL2NvZGU+LjxcL3A+XG48cD48YSBuYW1lPVwicm90YXRpb25cIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJvdGF0aW9uLXZlY3Rvci1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtcm90YXRpb24tdmVjdG9yLXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+Um90YXRpb24gdmVjdG9yIHNlbnNvcjxcL2gyPlxuPHA+VGhlIHJvdGF0aW9uIHZlY3RvciBzZW5zb3IgcmVwcmVzZW50cyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGRldmljZSBhcyBhIGNvbWJpbmF0aW9uIG9mIGFuIGFuZ2xlIGFuZCBhbiBheGlzLCBpbiB3aGljaCB0aGUgZGV2aWNlIGhhcyByb3RhdGVkIHRocm91Z2ggYSBzcGVjaWZpYyBhbmdsZSBhcm91bmQgYW4gYXhpcyAoWCwgWSwgb3IgWikuIFRoZSByb3RhdGlvbiB2ZWN0b3IgaXMgdGhlIG91dHB1dCBvZiBhIHNvZnR3YXJlXC9oYXJkd2FyZS1iYXNlZCBzZW5zb3IgZnVzaW9uIHNvbHV0aW9uLCB3aGljaCB1c2VzIHRoZSBhY2NlbGVyb21ldGVyLCBneXJvc2NvcGUsIGFuZCBtYWduZXRpYyBzZW5zb3IgYXMgaW5wdXRzIHRvIGNvbXB1dGUgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBkZXZpY2UuPFwvcD5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIG1lYXN1cmVtZW50IGRhdGEgdGhhdCB0aGUgcm90YXRpb24gdmVjdG9yIHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgcm90YXRpb24gdmVjdG9yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkFjY3VyYWN5PFwvdGQ+XG48dGQ+PGNvZGU+U2Vuc29yRGF0YUFjY3VyYWN5PFwvY29kZT48XC90ZD5cbjx0ZD4tPFwvdGQ+XG48dGQ+aW50PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5YPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMTxicj5NYXguIHZhbHVlID0gMTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlk8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC0xPGJyPk1heC4gdmFsdWUgPSAxPFwvdGQ+XG48dGQ+LTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WjxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTE8YnI+TWF4LiB2YWx1ZSA9IDE8XC90ZD5cbjx0ZD4tPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5XPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMTxicj5NYXguIHZhbHVlID0gMTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwic2xlZXBfbW9uaXRvclwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtc2xlZXAtbW9uaXRvclwiPjxhIGhyZWY9XCIjY29udGVudC1zbGVlcC1tb25pdG9yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5TbGVlcCBtb25pdG9yPFwvaDI+XG48cD5UaGUgc2xlZXAgbW9uaXRvciB0cmFja3MgdGhlIHVzZXIncyBzbGVlcCBxdWFsaXR5LiBPbmNlIHBlciBtaW51dGUsIGl0IHJlcG9ydHMgd2hldGhlciB0aGUgdXNlciBzbGVlcHMuIEFzIHRoaXMgc2Vuc29yIHVzdWFsbHkgbmVlZHMgdG8gdHJhY2sgdGhlIHNsZWVwIHF1YWxpdHkgb3ZlciBzZXZlcmFsIGhvdXJzLCBpdCBtdXN0IGJlIHBvd2VyLWVmZmljaWVudCBhbmQgd29yayBpbiBhIGJhdGNoIG1hbm5lci4gV2hpbGUgdGhlIHN5c3RlbSBzbGVlcHMsIG9yIHRoZSBkaXNwbGF5IGlzIG9mZiwgdGhlIHNlbnNvciBrZWVwcyBpdHMgZGV0ZWN0ZWQgZGF0YSBpbnRlcm5hbGx5LiBXaGVuIHRoZSBzZW5zb3IgaXMgdW5hYmxlIHRvIGtlZXAgbW9yZSBkYXRhIChpdHMgaW50ZXJuYWwgYnVmZmVyIGlzIGZ1bGwpLCBpdCB3YWtlcyB1cCB0aGUgc3lzdGVtIGFuZCBmbHVzaGVzIGFsbCBjb2xsZWN0ZWQgZGF0YS4gV2hlbiBmbHVzaGluZywgdGhlIGV2ZW50IGhhbmRsZXIgaXMgaW52b2tlZCByZXBlYXRlZGx5LiBUaGUgdGltZXN0YW1wIG9mIGVhY2ggZXZlbnQgY2FuIGJlIHVzZWQgdG8gZmlndXJlIG91dCB3aGVuIHRoZSB1c2VyIHdhcyBzbGVlcGluZy48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSBzbGVlcCBtb25pdG9yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSBzbGVlcCBtb25pdG9yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+TWljcm9zZWNvbmRzPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5UaW1lU3BhbjxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+U2xlZXBTdGF0ZTxcL3RkPlxuPHRkPi08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgPGNvZGU+U2xlZXBTdGF0ZTxcL2NvZGU+IHByb3BlcnR5IGlzIG9uZSBvZiB0aGUgdmFsdWVzIG9mIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5TZW5zb3IuU2xlZXBNb25pdG9yU3RhdGUubWRcIj5UaXplbi5TZW5zb3IuU2xlZXBNb25pdG9yU3RhdGU8XC9hPiBlbnVtZXJhdGlvbjogPGNvZGU+VW5rbm93bjxcL2NvZGU+LCA8Y29kZT5XYWtlPFwvY29kZT4sIG9yIDxjb2RlPlNsZWVwPFwvY29kZT4uPFwvcD5cbjxwPkRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIHlvdSBhcmUgdXNpbmcsIHRoZSBhdmFpbGFibGUgcmF3IHNlbnNvcnMgYXJlIGRpZmZlcmVudCBhbmQgdGhlIHNsZWVwIGRldGVjdGlvbiBhbGdvcml0aG0gY2FuIGFsc28gdmFyeS4gSW4gYWRkaXRpb24gdG8gdGhlIHNsZWVwIHN0YXRlIGZpZWxkLCBzb21lIHNwZWNpZmljIGRldmljZSBtb2RlbHMgY2FuIHByb3ZpZGUgZnVydGhlciBkYXRhLCBhcyBkZWZpbmVkIGJ5IHRoZSBtb2RlbCBtYW51ZmFjdHVyZXIuPFwvcD5cbjxwPjxhIG5hbWU9XCJ0ZW1wZXJhdHVyZVwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtdGVtcGVyYXR1cmUtc2Vuc29yXCI+PGEgaHJlZj1cIiNjb250ZW50LXRlbXBlcmF0dXJlLXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+VGVtcGVyYXR1cmUgc2Vuc29yPFwvaDI+XG48cD5UaGUgdGVtcGVyYXR1cmUgc2Vuc29yIG1lYXN1cmVzIHRoZSBhbWJpZW50IHJvb20gdGVtcGVyYXR1cmUgaW4gdGhlIGRldmljZSdzIHN1cnJvdW5kaW5nIGVudmlyb25tZW50LjxcL3A+XG48cD5UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIHRoZSBtZWFzdXJlbWVudCBkYXRhIHRoYXQgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRlbXBlcmF0dXJlPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtMzA8YnI+TWF4LiB2YWx1ZSA9IDEwMDxcL3RkPlxuPHRkPlx1MDBiMEM8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwidWx0cmF2aW9sZXRcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXVsdHJhdmlvbGV0LXNlbnNvclwiPjxhIGhyZWY9XCIjY29udGVudC11bHRyYXZpb2xldC1zZW5zb3JcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlVsdHJhdmlvbGV0IHNlbnNvcjxcL2gyPlxuPHA+VGhlIHVsdHJhdmlvbGV0IChVVikgc2Vuc29yIG1lYXN1cmVzIHRoZSB1bHRyYXZpb2xldCBpbmRleC4gVGhlIHNlbnNvciBkZXRlY3RzIGFuZCBwcm92aWRlcyBhIG1lYXN1cmUgb2YgdGhlIFVWIHJheXMgdGhlIGRldmljZSBpcyBleHBvc2VkIHRvLjxcL3A+XG48cD5UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIHRoZSBtZWFzdXJlbWVudCBkYXRhIHRoYXQgdGhlIHVsdHJhdmlvbGV0IHNlbnNvciBwcm92aWRlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogTWVhc3VyZW1lbnQgZGF0YSBkZXRlY3RlZCBieSB0aGUgdWx0cmF2aW9sZXQgc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlVsdHJhdmlvbGV0SW5kZXg8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IDA8YnI+TWF4LiB2YWx1ZSA9IDE1PFwvdGQ+XG48dGQ+VVYgaW5kZXg8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwidW5jYWxfZ3lyb1wiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtdW5jYWxpYnJhdGVkLWd5cm9zY29wZVwiPjxhIGhyZWY9XCIjY29udGVudC11bmNhbGlicmF0ZWQtZ3lyb3Njb3BlXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5VbmNhbGlicmF0ZWQgZ3lyb3Njb3BlPFwvaDI+XG48cD5UaGUgdW5jYWxpYnJhdGVkIGd5cm9zY29wZSBkZXRlY3RzIGFuZ3VsYXIgdmVsb2NpdHkgb3IgYW5ndWxhciByYXRlcyBvZiBhIGRldmljZS4gVGhlIDNEIHVuY2FsaWJyYXRlZCBneXJvc2NvcGUgc2Vuc29yIGlzIGNvbnNpZGVyZWQgdG8gYmUgdmVyeSBzZW5zaXRpdmUgaW4gZGV0ZWN0aW5nIGluY3JlbWVudGFsIHJvdGF0aW9uIGFuZ2xlcy4gVGhlIHJvdGF0aW9uIGFuZ2xlcyBvYnRhaW5lZCBieSBpbnRlZ3JhdGluZyB0aGUgYW5ndWxhciByYXRlcyBvdmVyIGEgbG9uZ2VyIGR1cmF0aW9uIGFyZSBpbmFjY3VyYXRlIGR1ZSB0byB0aGUgYnVpbGQtdXAgb2YgZHJpZnQuIFRoZSB1bmNhbGlicmF0ZWQgZ3lyb3Njb3BlIGRhdGEgYWxzbyBjb25zaXN0cyBvZiBkcmlmdCBjb21wZW5zYXRpb24gdmFsdWVzIGZvciBlYWNoIGF4aXMsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHN1YnRyYWN0IHRoZSBkcmlmdCBmcm9tIHRoZSBkZXRlY3RlZCBhbmd1bGFyIHJhdGVzLiBUaGUgdmFsdWVzIG9mIGRyaWZ0IGZvciB0aGUgMyBheGVzIGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBvdXRwdXQgb2YgYSBzb2Z0d2FyZVwvaGFyZHdhcmUtYmFzZWQgc2Vuc29yIGZ1c2lvbiBzb2x1dGlvbi48XC9wPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSB1bmNhbGlicmF0ZWQgZ3lyb3Njb3BlIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSB1bmNhbGlicmF0ZWQgZ3lyb3Njb3BlPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5SYW5nZTxcL3RoPlxuPHRoPlVuaXQ8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+VGltZXN0YW1wPFwvdGQ+XG48dGQ+PGNvZGU+dWxvbmc8XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPi08XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlg8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC01NzMuMDxicj5NYXguIHZhbHVlID0gNTczLjA8XC90ZD5cbjx0ZD5EZWdyZWVzXC9zIChcdTAwYjBcL3MpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5ZPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtNTczLjA8YnI+TWF4LiB2YWx1ZSA9IDU3My4wPFwvdGQ+XG48dGQ+RGVncmVlc1wvcyAoXHUwMGIwXC9zKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WjxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTU3My4wPGJyPk1heC4gdmFsdWUgPSA1NzMuMDxcL3RkPlxuPHRkPkRlZ3JlZXNcL3MgKFx1MDBiMFwvcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkJpYXNYPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPk1pbi4gdmFsdWUgPSAtNTczLjA8YnI+TWF4LiB2YWx1ZSA9IDU3My4wPFwvdGQ+XG48dGQ+RGVncmVlc1wvcyAoXHUwMGIwXC9zKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+Qmlhc1k8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+TWluLiB2YWx1ZSA9IC01NzMuMDxicj5NYXguIHZhbHVlID0gNTczLjA8XC90ZD5cbjx0ZD5EZWdyZWVzXC9zIChcdTAwYjBcL3MpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5CaWFzWjxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5NaW4uIHZhbHVlID0gLTU3My4wPGJyPk1heC4gdmFsdWUgPSA1NzMuMDxcL3RkPlxuPHRkPkRlZ3JlZXNcL3MgKFx1MDBiMFwvcyk8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD48YSBuYW1lPVwidW5jYWxfbWFnbmV0aWNcIj48XC9hPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXVuY2FsaWJyYXRlZC1tYWduZXRpYy1zZW5zb3JcIj48YSBocmVmPVwiI2NvbnRlbnQtdW5jYWxpYnJhdGVkLW1hZ25ldGljLXNlbnNvclwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+VW5jYWxpYnJhdGVkIG1hZ25ldGljIHNlbnNvcjxcL2gyPlxuPHA+VGhlIHVuY2FsaWJyYXRlZCBtYWduZXRpYyBzZW5zb3IgaXMgYSAzLWF4aXMgZWxlY3Ryb25pYyBjb21wYXNzIChzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgYSAmcXVvdDttYWduZXRvbWV0ZXImcXVvdDsgb3IgJnF1b3Q7Z2VvbWFnbmV0aWMgc2Vuc29yJnF1b3Q7KS4gSXQgY2FuIGFsc28gYmUgdXNlZCBpbiBkZXRlcm1pbmluZyB0aGUgYXppbXV0aCBjb21wb25lbnQgb2YgdGhlIGRldmljZSBvcmllbnRhdGlvbiBwcm92aWRlZCB0aGF0IHRoZSB0aWx0IG9mIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBjb21wdXRlZC4gSXQgbWVhc3VyZXMgdGhlIEVhcnRoJ3MgbWFnbmV0aWMgZmllbGQgc3RyZW5ndGggYW5kIGZsdWN0dWF0aW9ucywgYW5kIHNwbGl0cyB0aGUgbWVhc3VyZW1lbnQgaW50byBYLCBZLCBhbmQgWiBjb21wb25lbnRzLiBUaGUgdW5jYWxpYnJhdGVkIG1hZ25ldGljIHNlbnNvciBpcyBzaW1pbGFyIGluIGZ1bmN0aW9uYWxpdHkgdG8gYSBtYWduZXRpYyBzZW5zb3IsIGJ1dCBkb2VzIG5vdCBwZXJmb3JtIGhhcmQgaXJvbiBjYWxpYnJhdGlvbi4gRmFjdG9yeSBjYWxpYnJhdGlvbiBhbmQgdGVtcGVyYXR1cmUgY29tcGVuc2F0aW9uIGFyZSBhcHBsaWVkLjxcL3A+XG48cD5UaGUgZm9sbG93aW5nIGZhY3RvcnMgY2FuIGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBzZW5zb3IgcmVhZGluZ3M6PFwvcD5cbjx1bD5cbjxsaT5UaGUgd2VhdGhlciBvciB0aGUgc2Vhc29uIG9mIHRoZSB5ZWFyPFwvbGk+XG48bGk+WW91ciBsb2NhdGlvbiBvbiB0aGUgcGxhbmV0PFwvbGk+XG48bGk+TmVhcmJ5LCBzdHJvbmcgbWFnbmV0aWMgZmllbGRzLCBzdWNoIGFzIG1hZ25ldHMsIGVsZWN0cmljIGNvaWxzLCBvciBvYmplY3RzIHdoaWNoIGNvbnRhaW4gYSBmZXJyaXRlIGVsZW1lbnQ8XC9saT5cbjxcL3VsPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgbWVhc3VyZW1lbnQgZGF0YSB0aGF0IHRoZSB1bmNhbGlicmF0ZWQgbWFnbmV0aWMgc2Vuc29yIHByb3ZpZGVzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBNZWFzdXJlbWVudCBkYXRhIGRldGVjdGVkIGJ5IHRoZSB1bmNhbGlicmF0ZWQgbWFnbmV0aWMgc2Vuc29yPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5NZWFzdXJlbWVudDxcL3RoPlxuPHRoPlR5cGU8XC90aD5cbjx0aD5Vbml0PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPlRpbWVzdGFtcDxcL3RkPlxuPHRkPjxjb2RlPnVsb25nPFwvY29kZT48XC90ZD5cbjx0ZD5NaWNyb3NlY29uZHM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlRpbWVTcGFuPFwvdGQ+XG48dGQ+PGNvZGU+VGltZVNwYW48XC9jb2RlPjxcL3RkPlxuPHRkPk1pY3Jvc2Vjb25kczxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+WDxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5cdTAwYjVUIChtaWNyb3Rlc2xhcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPlk8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+XHUwMGI1VCAobWljcm90ZXNsYXMpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5aPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPlx1MDBiNVQgKG1pY3JvdGVzbGFzKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+Qmlhc1g8XC90ZD5cbjx0ZD48Y29kZT5mbG9hdDxcL2NvZGU+PFwvdGQ+XG48dGQ+XHUwMGI1VCAobWljcm90ZXNsYXMpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5CaWFzWTxcL3RkPlxuPHRkPjxjb2RlPmZsb2F0PFwvY29kZT48XC90ZD5cbjx0ZD5cdTAwYjVUIChtaWNyb3Rlc2xhcyk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPkJpYXNaPFwvdGQ+XG48dGQ+PGNvZGU+ZmxvYXQ8XC9jb2RlPjxcL3RkPlxuPHRkPlx1MDBiNVQgKG1pY3JvdGVzbGFzKTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxoMiBpZD1cImNvbnRlbnQtcmVsYXRlZC1pbmZvcm1hdGlvblwiPjxhIGhyZWY9XCIjY29udGVudC1yZWxhdGVkLWluZm9ybWF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5SZWxhdGVkIGluZm9ybWF0aW9uPFwvaDI+XG48dWw+XG48bGk+RGVwZW5kZW5jaWVzXG48dWw+XG48bGk+VGl6ZW4gNC4wIGFuZCBIaWdoZXI8XC9saT5cbjxcL3VsPlxuPFwvbGk+XG48XC91bD5cbiIsInRhYmxlX29mX2NvbnRlbnQiOiI8dWwgY2xhc3M9XCJ0YWJsZS1vZi1jb250ZW50c1wiPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1kZXZpY2Utc2Vuc29yc1wiPkRldmljZSBTZW5zb3JzPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcHJlcmVxdWlzaXRlc1wiPlByZXJlcXVpc2l0ZXM8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1jcmVhdGUtYS1zZW5zb3ItaW5zdGFuY2VcIj5DcmVhdGUgYSBzZW5zb3IgaW5zdGFuY2U8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1zdWJzY3JpYmUtdG8tc2Vuc29yLWV2ZW50c1wiPlN1YnNjcmliZSB0byBzZW5zb3IgZXZlbnRzPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtYWNjZWxlcm9tZXRlclwiPkFjY2VsZXJvbWV0ZXI8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1hdXRvcm90YXRpb24tc2Vuc29yXCI+QXV0b1JvdGF0aW9uIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWdlb21hZ25ldGljLW9yaWVudGF0aW9uLXNlbnNvclwiPkdlb21hZ25ldGljIG9yaWVudGF0aW9uIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWdlb21hZ25ldGljLXJvdGF0aW9uLXZlY3Rvci1zZW5zb3JcIj5HZW9tYWduZXRpYyByb3RhdGlvbiB2ZWN0b3Igc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZ3Jhdml0eS1zZW5zb3JcIj5HcmF2aXR5IHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWd5cm9zY29wZVwiPkd5cm9zY29wZTxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWd5cm9zY29wZS1vcmllbnRhdGlvbi1zZW5zb3JcIj5HeXJvc2NvcGUgb3JpZW50YXRpb24gc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZ3lyb3Njb3BlLXJvdGF0aW9uLXZlY3Rvci1zZW5zb3JcIj5HeXJvc2NvcGUgcm90YXRpb24gdmVjdG9yIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWhlYXJ0LXJhdGUtbW9uaXRvci1zZW5zb3JcIj5IZWFydCByYXRlIG1vbml0b3Igc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtaGVhcnQtcmF0ZS1tb25pdG9yLWJhdGNoLXNlbnNvclwiPkhlYXJ0IHJhdGUgbW9uaXRvciBiYXRjaCBzZW5zb3I8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1oZWFydC1yYXRlLW1vbml0b3ItbGVkLWdyZWVuLWJhdGNoLXNlbnNvclwiPkhlYXJ0IHJhdGUgbW9uaXRvciBMRUQgZ3JlZW4gYmF0Y2ggc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtaHVtaWRpdHktc2Vuc29yXCI+SHVtaWRpdHkgc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtbGlnaHQtc2Vuc29yXCI+TGlnaHQgc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtbGluZWFyLWFjY2VsZXJhdGlvbi1zZW5zb3JcIj5MaW5lYXIgYWNjZWxlcmF0aW9uIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LW1hZ25ldGljLXNlbnNvclwiPk1hZ25ldGljIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LW9yaWVudGF0aW9uLXNlbnNvclwiPk9yaWVudGF0aW9uIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXBlZG9tZXRlclwiPlBlZG9tZXRlcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXByZXNzdXJlLXNlbnNvclwiPlByZXNzdXJlIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXByb3hpbWl0eS1zZW5zb3JcIj5Qcm94aW1pdHkgc2Vuc29yPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcm90YXRpb24tdmVjdG9yLXNlbnNvclwiPlJvdGF0aW9uIHZlY3RvciBzZW5zb3I8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1zbGVlcC1tb25pdG9yXCI+U2xlZXAgbW9uaXRvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXRlbXBlcmF0dXJlLXNlbnNvclwiPlRlbXBlcmF0dXJlIHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXVsdHJhdmlvbGV0LXNlbnNvclwiPlVsdHJhdmlvbGV0IHNlbnNvcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXVuY2FsaWJyYXRlZC1neXJvc2NvcGVcIj5VbmNhbGlicmF0ZWQgZ3lyb3Njb3BlPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtdW5jYWxpYnJhdGVkLW1hZ25ldGljLXNlbnNvclwiPlVuY2FsaWJyYXRlZCBtYWduZXRpYyBzZW5zb3I8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1yZWxhdGVkLWluZm9ybWF0aW9uXCI+UmVsYXRlZCBpbmZvcm1hdGlvbjxcL2E+PFwvbGk+XG48XC91bD5cbiIsInRpdGxlIjoiRGV2aWNlIFNlbnNvcnMiLCJyYXciOm51bGx9LHsiY2xhc3MiOiJBcHBcXFNlcnZpY2VzXFxEb2N1bWVudGF0aW9uXFxEYXRhXFxSZW5kZXJlZE1hcmtkb3duIiwicyI6IndyYmwifV19LHsicyI6ImFyciJ9XX0sIm1lbW8iOnsiaWQiOiJRWVUzU0RvNzFNZTBSWjVGNEt4ZCIsIm5hbWUiOiJfX21vdW50UGFyYW1zQ29udGFpbmVyIiwicGF0aCI6ImRvY3NcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2d1aWRlc1wvc2Vuc29yc1wvZGV2aWNlLXNlbnNvcnMiLCJtZXRob2QiOiJHRVQiLCJyZWxlYXNlIjoiYS1hLWEifSwiY2hlY2tzdW0iOiJhNjcxMWU1MDc2Y2ExMTJlMGNlNTRiNzFiMzY3OGZhMzU3ZWRhN2IzMWU0MWNhYWNhOTg3ZjY0Yzc2YmFkMGE3In0=')" >
    

For the best experience,
Please visit us from a computer

Copyright © 2026 SAMSUNG. All rights reserved.

Customize your cookie preferences

You can enable or disable non-essential cookies. Essential cookies are always on to ensure the site works properly and to keep you signed in.

Necessary

These cookies are necessary for the website to function properly and cannot be switched off. They help with things like logging in and setting your privacy preferences.

Always on

Analytics

These cookies help us improve the site by tracking which pages are most popular and how visitors move around the site.

Enable analytics cookies
Public Forum Public Forum
Employees only. Please sign in with your company account.